ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2ODEyNDdiLi43YmJkOTE3IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTczIEBACisyMDA0LTA0LTA5ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KKworCVBSIGJvb3RzdHJhcC8xNDg3MQorCSogTWFrZWZpbGUudHBsOiBJZiB3ZSBkb24ndCBoYXZlIGJ1aWx0LWluLXRyZWUgdGFyZ2V0IHRvb2xzLAorCXVzZSB0aGUgb25lcyBmb3VuZCBieSBjb25maWd1cmUgcmF0aGVyIHRoYW4gaGFja2luZyBhcm91bmQgd2l0aAorCXByb2dyYW1fdHJhbnNmb3JtX25hbWUuCisJKiBjb25maWd1cmUuaW46IEdpdmUgTWFrZWZpbGUudHBsIHRoZSBpbmZvcm1hdGlvbiBuZWNlc3NhcnkKKwl0byBkbyB0aGF0LgorCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMDQtMDQtMDYgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgorCisJUFIgYm9vdHN0cmFwLzE0NzYwCisJKiBjb25maWd1cmUuaW46IFdoZW4gY29tcHV0aW5nIGJhc2VhcmdzLCBzdHJpcCAqYWxsKiBjb3BpZXMgb2YKKwlvZmZlbmRpbmcgb3B0aW9ucy4gIEFsc28sIGRvbid0IG1hdGNoL3N1YnN0aXR1dGUgdGhlIHRyYWlsaW5nIHNwYWNlLAorCXNvIHRoYXQgdGhpcyBhY3R1YWxseSB3b3JrcyB3aGVuIHR3byBzaW1pbGFyIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieQorCW9ubHkgb25lIHNwYWNlLgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCisyMDA0LTA0LTA2ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CisKKyAgICAgICAgKiBjb25maWd1cmUuaW4gKHBvd2VycGMtKi1haXgqKTogUmVtb3ZlIHRhcmdldC1saWJhZGEgZnJvbSBub2NvbmZpZ2RpcnMuCisgICAgICAgIChyczYwMDAtKi1haXgqKTogU2FtZS4KKyAgICAgICAgKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMDQtMDMtMjUgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CisKKwlSZW1vdmUgTVBXIHN1cHBvcnQsIG5vIGxvbmdlciB1c2VkLgorCSogbXB3LVJFQURNRSwgbXB3LWJ1aWxkLmluLCBtcHctY29uZmlnLmluLCBtcHctY29uZmlndXJlLAorCW1wdy1pbnN0YWxsOiBSZW1vdmUgZmlsZXMuCisJKiBzcmMtcmVsZWFzZSAoREVWT19TVVBQT1JUKTogUmVtb3ZlIG5hbWVzIG9mIHJlbW92ZWQgZmlsZXMuCisJKiBNQUlOVEFJTkVSUzogTGlrZXdpc2UuCisKKzIwMDQtMDMtMjQgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgorCisJKiBNYWtlZmlsZS50cGwgKHRvcCBsZXZlbCBib290c3RyYXAgc3VwcG9ydCk6IFJlbW92ZSBub3ctdW5uZWVkZWQKKwlTVFJJQ1RfV0FSTiwgV0FSTl9DRkxBR1MgZmxhZ3MgcGFzc2VkIGRvd24gdG8gbWFrZS4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCisJKiBjb25maWd1cmUuaW4gKHRvcCBsZXZlbCBib290c3RyYXAgc3VwcG9ydCk6IFJld29yayAtLWVuYWJsZS13ZXJyb3IKKwl0byBzZXQgQHN0YWdlMl93ZXJyb3JfZmxhZ0AuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiBNYWtlZmlsZS50cGwgKHRvcCBsZXZlbCBib290c3RyYXAgc3VwcG9ydCk6IFBhc3MKKwlAc3RhZ2UyX3dlcnJvcl9mbGFnQCBkb3duIHRvIGNvbmZpZ3VyZSBpbiBzdGFnZXMgMiBhbmQgMy4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCisyMDA0LTAzLTIzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KKworCSogTWFrZWZpbGUudHBsIChuZXctYm9vdHN0cmFwKTogU2V0IENDIGFuZCBDQ19GT1JfQlVJTEQgaW4gY29uZmlndXJlCisJZm9yIHN0YWdlcyAyIGFuZCAzIGFzIHdlbGwgYXMgaW4gbWFrZS4gIEFzIGEgY29uc2VxdWVuY2UsIHJlbW92ZQorCU9VVFBVVF9PUFRJT04gKG5vdyBkZXRlY3RlZCBieSBjb25maWd1cmUpIGZyb20gdGhlIGZsYWdzIHBhc3NlZCBkb3duCisJdG8gbWFrZS4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCisJKiBNYWtlZmlsZS50cGwgKG5ldy1ib290c3RyYXApOiBGaXggdHlwby4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCisyMDA0LTAzLTIyICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KKworCSogTWFrZWZpbGUudHBsOiBSZWFycmFuZ2UgYnkgbW92aW5nIHJlY3Vyc2l2ZV90YXJnZXRzIHJ1bGVzCisJaW50byB0aGVpciBwcm9wZXIgc2VjdGlvbnMuCisJKiBNYWtlZmlsZS50cGwgKHRvcCBsZXZlbCBib290c3RyYXAgc3VwcG9ydCk6IE1vdmUgZGlzYWJsaW5nCisJb2YgY292ZXJhZ2UgZmxhZ3MgZnJvbSAnbWFrZScgdG8gJ2NvbmZpZ3VyZSc7IGltcHJvdmUgY29tbWVudHMuCisJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKworCSogTWFrZWZpbGUudHBsIChleHBlcmltZW50YWwgdG9wIGxldmVsIGJvb3RzdHJhcCkgTW92ZSBzdGFnZTEKKwlsYW5ndWFnZSBzZXR0aW5nIGZyb20gYWxsLSB0YXJnZXQgdG8gY29uZmlndXJlLSB0YXJnZXQ7IGRpc2FibGUKKwlpbnRlcm1vZHVsZSBvcHRpbWl6YXRpb24gaW4gc3RhZ2UgMTsgcHJldmVudCBncmF0dWl0b3VzIHJlYnVpbGRzCisJb2Ygc3RhZ2UgMS4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCSogY29uZmlndXJlLmluOiBDb21tYS1zZXBhcmF0ZSBzdGFnZSAxIGxhbmd1YWdlIGxpc3QgZm9yIHRvcAorCWxldmVsIGJvb3RzdHJhcC4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKworCSogTWFrZWZpbGUudHBsOiBDbGVhbiB1cCBleHBlcmltZW50YWwgdG9wIGxldmVsIGJvb3RzdHJhcCBzdXBwb3J0OgorCW5vdGUga25vd24gcHJvYmxlbXM7IHNldCBDT05GSUdfU0hFTEw7IGRvbid0IHNldCBCVUlMRF9DQzsgcmVsb2NhdGUKKwlwcmV2LWdjYyBpbiBjb25maWd1cmUtIHRhcmdldHMgYXMgd2VsbCBhcyBhbGwtIHRhcmdldHMuCisJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKworMjAwNC0wMy0xNyAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KKworCSogY29uZmlndXJlLmluOiBSZW1vdmUgc3ltYm9saWMgbGluayBzZWN0aW9uLgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCSogTWFrZWZpbGUudHBsIChsaW5rcyk6IFJlbW92ZS4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCisyMDA0LTAzLTE1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgorICAgICAgICAgICAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CisKKwkqIGNvbmZpZ3VyZS5pbiAoREVGQVVMVF9ZQUNDLCBERUZBVUxUX000LCBERUZBVUxUX0xFWCk6CisgICAgICAgIFNldCB3aXRoIEFDX0NIRUNLX1BST0dTLgorCSogY29uZmlndXJlLmluOiBGaXggY29tbWVudCB0eXBvIGZyb20gbGFzdCBwYXRjaC4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKworMjAwNC0wMy0xNSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CisKKwkqIE1ha2VmaWxlLnRwbDogSW50cm9kdWNlIGV4cGVyaW1lbnRhbCB0b3AgbGV2ZWwgYm9vdHN0cmFwIHN1cHBvcnQuCisJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKwkqIGNvbmZpZ3VyZS5pbjogSW50cm9kdWNlIHN1cHBvcnQgZm9yIHRvcCBsZXZlbCBib290c3RyYXAuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMDQtMDMtMTIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAZ2NjLmdudS5vcmc+CisgICAgICAgICAgICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgorCisJUFIgYm9vdHN0cmFwLzE0NTIyCisJKiBjb25maWd1cmUuaW46IENvcGUgd2l0aCBzaGVsbHMgdGhhdCBkbyBub3Qgc3VwcG9ydCB1bnF1b3RlZCBeCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMDQtMDMtMTEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAZ2NjLmdudS5vcmc+CisgICAgICAgICAgICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgorCisJUFIgYm9vdHN0cmFwLzE0NTIyCisJKiBjb25maWd1cmUuaW46IENvcGUgd2l0aCBzaGVsbCB0aGF0IGRvIG5vdCBzdXBwb3J0IG5lc3RpbmcKKwlxdW90ZXMgaW5zaWRlIHF1b3RlZCBiYWNrcXVvdGUgc3Vic3RpdHV0aW9ucy4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKworMjAwNC0wMy0xMCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CisKKwlQUiBib290c3RyYXAvMTQ1MjIKKwkqIGNvbmZpZ3VyZS5pbjogRml4IGVzY2FwaW5nIG9mICQuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMDQtMDMtMTEgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgorCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMDQtMDMtMDggIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CisKKwlQUiBhZGEvMTQxMzEKKwlNb3ZlIGxhbmd1YWdlIGRldGVjdGlvbiB0byB0aGUgdG9wIGxldmVsLgorCSogY29uZmlndXJlLmluOiBGaW5kIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgdG9vbHMgYXMKKwlzb29uIGFzIHBvc3NpYmxlLiAgRGlzYWJsZSBhZGEgaWYgR05BVCBpcyBub3QgZm91bmQuCisJRW1pdCBlcnJvciBtZXNzYWdlIGFib3V0IG1pc3NpbmcgbGFuZ3VhZ2VzLiAgRXhwYW5kCisJLS1lbmFibGUtbGFuZ3VhZ2VzPWFsbCBmb3IgdGhlIGdjYyBzdWJkaXJlY3RvcnkuCisKKzIwMDQtMDMtMDEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KKworCSogY29uZmlndXJlLmluIChtaXBzNjQqLSotbGludXgqKTogT3ZlcnJpZGUgbWlwcyotKi1saW51eCogY2FzZQorCWFuZCBkaXNhYmxlIGxpYmdjai4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCisKKzIwMDQtMDItMjggIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgorCisJUFIgYm9vdHN0cmFwLzcwODcKKwkqIE1ha2VmaWxlLnRwbDogR3VhcmQgWEZPTyBzZWQgc3RhdGVtZW50cyBiZXR0ZXIuCisJKiBNYWtlZmlsZS50cGw6IEFkZCBkZXBlbmRlbmN5IGZvciBjb25maWd1cmUtdGFyZ2V0LWxpYmFkYS4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlIChpbmNpZGVudGFsbHkgZml4ZXMgYnJva2VuCisJY29tbWl0IHdoZW4gbGliYWRhLWJyYW5jaCB3YXMgbWVyZ2VkKS4KKworMjAwNC0wMi0yOCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUByZWRoYXQuY29tPgorCisJKiBzcmMtcmVsZWFzZSAoQ1ZTX05BTUVTKTogRGVmaW5lLgorCShkby10YXIsIGRvLXRhcik6IFBydW5lICQoQ1ZTX05BTUVTKS4KKworMjAwNC0wMi0yMyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUByZWRoYXQuY29tPgorCisJKiB0ZXhpbmZvL3RleGluZm8udGV4OiBVcGRhdGUgZnJvbSB2ZXJzaW9uIDIwMDMtMDItMDMuMTYgdG8KKwkyMDA0LTAyLTE5LjA5LgorCisyMDA0LTAyLTE5ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KKworCVBSIGJvb3RzdHJhcC8xMTkzMgorCSogbWtpbnN0YWxsZGlycywgaW5zdGFsbC1zaDogSW1wb3J0IGZyb20gYXV0b21ha2UgQ1ZTIEhFQUQuCisKKzIwMDQtMDItMTkgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAcmVkaGF0LmNvbT4KKworCSogY29uZmlnLmd1ZXNzOiBVcGRhdGUgZnJvbSB2ZXJzaW9uIDIwMDMtMDYtMTIgdG8gMjAwNC0wMi0xNi4KKwkqIGNvbmZpZy5zdWI6IFVwZGF0ZSBmcm9tIHZlcnNpb24gMjAwMy0wNi0xMyB0byAyMDA0LTAyLTE2LgorCiAyMDA0LTAyLTExICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CiAKIAkqIGNvbmZpZ3VyZS5pbiAocG93ZXJwYy0qLWFpeCopOiBBZGQgdGFyZ2V0LWxpYmFkYSB0byBub2NvbmZpZ2RpcnMuCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGM5YWQ2YjMuLjcxOTQyNjggMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC0xMDAsOCArMTAwLDcgQEAKIAlHZW5lcmFsIGRpc2N1c3Npb24gY3lnd2luQHNvdXJjZXMucmVkaGF0LmNvbS4KIAlTZWUgYWxzbyB3aW5zdXAvTUFJTlRBSU5FUlMuCiAKLWV4cGVjdC87IGNvbmZpZy1tbC5pbjsgbXB3LVJFQURNRTsgbXB3LWJ1aWxkLmluOyBtcHctY29uZmlnLmluOwotbXB3LWNvbmZpZ3VyZTsgbXB3LWluc3RhbGw7IHNldHVwLmNvbTsgbWlzc2luZzsgbWFrZWZpbGUudm1zOyB1dGlscy87CitleHBlY3QvOyBjb25maWctbWwuaW47IHNldHVwLmNvbTsgbWlzc2luZzsgbWFrZWZpbGUudm1zOyB1dGlscy87CiBjb25maWcvOyBjb25maWcuaWY7IG1ha2VmaWxlLnZtczsgbWlzc2luZzsgeWx3cmFwOyBta2RlcDsgZXRjLzsKIGluc3RhbGwtc2g7IGludGwvCiAJQXNrIERKIERlbG9yaWUgPGRqQHJlZGhhdC5jb20+IGFmdGVyIHJlYWRpbmcgdGhlIGxpYmliZXJ0eSBlbnRyeS4KZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KaW5kZXggMDYxYTc2Zi4uYmY3YmMzZSAxMDA2NDQKLS0tIGEvTWFrZWZpbGUuaW4KKysrIGIvTWFrZWZpbGUuaW4KQEAgLTcwLDcgKzcwLDYgQEAKICMgTWlzY2VsbGFuZW91cyBub24tc3RhbmRhcmQgYXV0b2NvbmYtc2V0IHZhcmlhYmxlcwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWxpbmtzPUBjb25maWdsaW5rc0AKICMgVGhlIGZpbGUgY29udGFpbmluZyBHQ0MncyB2ZXJzaW9uIG51bWJlci4KIGdjY192ZXJzaW9uX3RyaWdnZXIgPSBAZ2NjX3ZlcnNpb25fdHJpZ2dlckAKIGdjY192ZXJzaW9uID0gQGdjY192ZXJzaW9uQApAQCAtMjQ3LDYgKzI0Niw3IEBACiBGTEFHU19GT1JfVEFSR0VUID0gQEZMQUdTX0ZPUl9UQVJHRVRACiAKIEFSX0ZPUl9UQVJHRVQ9QEFSX0ZPUl9UQVJHRVRACitDT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQ9QENPTkZJR1VSRURfQVJfRk9SX1RBUkdFVEAKIFVTVUFMX0FSX0ZPUl9UQVJHRVQgPSBgIFwKICAgaWYgWyAtZiAkJHIvYmludXRpbHMvYXIgXSA7IHRoZW4gXAogICAgIGVjaG8gJCRyL2JpbnV0aWxzL2FyIDsgXApAQCAtMjU0LDExICsyNTQsMTIgQEAKICAgICBpZiBbICckKGhvc3QpJyA9ICckKHRhcmdldCknIF0gOyB0aGVuIFwKICAgICAgIGVjaG8gJChBUik7IFwKICAgICBlbHNlIFwKLSAgICAgICBlY2hvIGFyIHwgc2VkICckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJyA7IFwKKyAgICAgIGVjaG8gJChDT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQpIDsgXAogICAgIGZpOyBcCiAgIGZpYAogCiBBU19GT1JfVEFSR0VUPUBBU19GT1JfVEFSR0VUQAorQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUPUBDT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVRACiBVU1VBTF9BU19GT1JfVEFSR0VUID0gYCBcCiAgIGlmIFsgLWYgJCRyL2dhcy9hcy1uZXcgXSA7IHRoZW4gXAogICAgIGVjaG8gJCRyL2dhcy9hcy1uZXcgOyBcCkBAIC0yNjgsNyArMjY5LDcgQEAKICAgICBpZiBbICckKGhvc3QpJyA9ICckKHRhcmdldCknIF0gOyB0aGVuIFwKICAgICAgIGVjaG8gJChBUyk7IFwKICAgICBlbHNlIFwKLSAgICAgICBlY2hvIGFzIHwgc2VkICckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJyA7IFwKKyAgICAgIGVjaG8gJChDT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVQpIDsgXAogICAgIGZpOyBcCiAgIGZpYAogCkBAIC0yOTQsNiArMjk1LDcgQEAKIExJQkNYWEZMQUdTX0ZPUl9UQVJHRVQgPSAkKENYWEZMQUdTX0ZPUl9UQVJHRVQpIC1mbm8taW1wbGljaXQtdGVtcGxhdGVzCiAKIERMTFRPT0xfRk9SX1RBUkdFVD1ARExMVE9PTF9GT1JfVEFSR0VUQAorQ09ORklHVVJFRF9ETExUT09MX0ZPUl9UQVJHRVQ9QENPTkZJR1VSRURfRExMVE9PTF9GT1JfVEFSR0VUQAogVVNVQUxfRExMVE9PTF9GT1JfVEFSR0VUID0gYCBcCiAgIGlmIFsgLWYgJCRyL2JpbnV0aWxzL2RsbHRvb2wgXSA7IHRoZW4gXAogICAgIGVjaG8gJCRyL2JpbnV0aWxzL2RsbHRvb2wgOyBcCkBAIC0zMDEsMTMgKzMwMywxNCBAQAogICAgIGlmIFsgJyQoaG9zdCknID0gJyQodGFyZ2V0KScgXSA7IHRoZW4gXAogICAgICAgZWNobyAkKERMTFRPT0wpOyBcCiAgICAgZWxzZSBcCi0gICAgICAgZWNobyBkbGx0b29sIHwgc2VkICckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJyA7IFwKKyAgICAgIGVjaG8gJChDT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVCkgOyBcCiAgICAgZmk7IFwKICAgZmlgCiAKIEdDSl9GT1JfVEFSR0VUID0gQEdDSl9GT1JfVEFSR0VUQAogCiBMRF9GT1JfVEFSR0VUPUBMRF9GT1JfVEFSR0VUQAorQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VUPUBDT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVRACiBVU1VBTF9MRF9GT1JfVEFSR0VUID0gYCBcCiAgIGlmIFsgLWYgJCRyL2xkL2xkLW5ldyBdIDsgdGhlbiBcCiAgICAgZWNobyAkJHIvbGQvbGQtbmV3IDsgXApAQCAtMzE3LDEzICszMjAsMTQgQEAKICAgICBpZiBbICckKGhvc3QpJyA9ICckKHRhcmdldCknIF0gOyB0aGVuIFwKICAgICAgIGVjaG8gJChMRCk7IFwKICAgICBlbHNlIFwKLSAgICAgICBlY2hvIGxkIHwgc2VkICckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJyA7IFwKKyAgICAgIGVjaG8gJChDT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQpIDsgXAogICAgIGZpOyBcCiAgIGZpYAogCiBMREZMQUdTX0ZPUl9UQVJHRVQgPSAKIAogTk1fRk9SX1RBUkdFVD1ATk1fRk9SX1RBUkdFVEAKK0NPTkZJR1VSRURfTk1fRk9SX1RBUkdFVD1AQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUQAogVVNVQUxfTk1fRk9SX1RBUkdFVCA9IGAgXAogICBpZiBbIC1mICQkci9iaW51dGlscy9ubS1uZXcgXSA7IHRoZW4gXAogICAgIGVjaG8gJCRyL2JpbnV0aWxzL25tLW5ldyA7IFwKQEAgLTMzMywxMSArMzM3LDEyIEBACiAgICAgaWYgWyAnJChob3N0KScgPSAnJCh0YXJnZXQpJyBdIDsgdGhlbiBcCiAgICAgICBlY2hvICQoTk0pOyBcCiAgICAgZWxzZSBcCi0gICAgICAgZWNobyBubSB8IHNlZCAnJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKScgOyBcCisgICAgICBlY2hvICQoQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUKSA7IFwKICAgICBmaTsgXAogICBmaWAKIAogUkFOTElCX0ZPUl9UQVJHRVQ9QFJBTkxJQl9GT1JfVEFSR0VUQAorQ09ORklHVVJFRF9SQU5MSUJfRk9SX1RBUkdFVD1AQ09ORklHVVJFRF9SQU5MSUJfRk9SX1RBUkdFVEAKIFVTVUFMX1JBTkxJQl9GT1JfVEFSR0VUID0gYCBcCiAgIGlmIFsgLWYgJCRyL2JpbnV0aWxzL3JhbmxpYiBdIDsgdGhlbiBcCiAgICAgZWNobyAkJHIvYmludXRpbHMvcmFubGliIDsgXApAQCAtMzQ5LDExICszNTQsMTIgQEAKICAgICAgICAgIGVjaG8gcmFubGliOyBcCiAgICAgICBmaTsgXAogICAgIGVsc2UgXAotICAgICAgIGVjaG8gcmFubGliIHwgc2VkICckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJyA7IFwKKyAgICAgIGVjaG8gJChDT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUKSA7IFwKICAgICBmaTsgXAogICBmaWAKIAogV0lORFJFU19GT1JfVEFSR0VUPUBXSU5EUkVTX0ZPUl9UQVJHRVRACitDT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVD1AQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVRACiBVU1VBTF9XSU5EUkVTX0ZPUl9UQVJHRVQgPSBgIFwKICAgaWYgWyAtZiAkJHIvYmludXRpbHMvd2luZHJlcyBdIDsgdGhlbiBcCiAgICAgZWNobyAkJHIvYmludXRpbHMvd2luZHJlcyA7IFwKQEAgLTM2MSw3ICszNjcsNyBAQAogICAgIGlmIFsgJyQoaG9zdCknID0gJyQodGFyZ2V0KScgXSA7IHRoZW4gXAogICAgICAgZWNobyAkKFdJTkRSRVMpOyBcCiAgICAgZWxzZSBcCi0gICAgICAgZWNobyB3aW5kcmVzIHwgc2VkICckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJyA7IFwKKyAgICAgIGVjaG8gJChDT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVCkgOyBcCiAgICAgZmk7IFwKICAgZmlgCiAKQEAgLTUxNiwxNSArNTIyLDE1IEBACiAJJ0JVSUxEX1BSRUZJWF8xPSQoQlVJTERfUFJFRklYXzEpJyBcCiAJIkdDQ19GT1JfVEFSR0VUPSQoR0NDX0ZPUl9UQVJHRVQpIiBcCiAJIkNGTEFHU19GT1JfQlVJTEQ9JChDRkxBR1NfRk9SX0JVSUxEKSIgXAotCSJgZWNobyAnTEFOR1VBR0VTPSQoTEFOR1VBR0VTKScgfCBzZWQgLWUgcy8uKj0kJC9YRk9PPS9gIiBcCi0JImBlY2hvICdTVE1QX0ZJWFBST1RPPSQoU1RNUF9GSVhQUk9UTyknIHwgc2VkIC1lIHMvLio9JCQvWEZPTz0vYCIgXAotCSJgZWNobyAnTElNSVRTX0hfVEVTVD0kKExJTUlUU19IX1RFU1QpJyB8IHNlZCAtZSBzLy4qPSQkL1hGT089L2AiIFwKLQkiYGVjaG8gJ0xJQkdDQzJfQ0ZMQUdTPSQoTElCR0NDMl9DRkxBR1MpJyB8IHNlZCAtZSBzLy4qPSQkL1hGT089L2AiIFwKLQkiYGVjaG8gJ0xJQkdDQzJfREVCVUdfQ0ZMQUdTPSQoTElCR0NDMl9ERUJVR19DRkxBR1MpJyB8IHNlZCAtZSBzLy4qPSQkL1hGT089L2AiIFwKLQkiYGVjaG8gJ0xJQkdDQzJfSU5DTFVERVM9JChMSUJHQ0MyX0lOQ0xVREVTKScgfCBzZWQgLWUgcy8uKj0kJC9YRk9PPS9gIiBcCi0JImBlY2hvICdTVEFHRTFfQ0ZMQUdTPSQoU1RBR0UxX0NGTEFHUyknIHwgc2VkIC1lIHMvLio9JCQvWEZPTz0vYCIgXAotCSJgZWNobyAnQk9PVF9DRkxBR1M9JChCT09UX0NGTEFHUyknIHwgc2VkIC1lIHMvLio9JCQvWEZPTz0vYCIgXAotCSJgZWNobyAnQk9PVF9BREFGTEFHUz0kKEJPT1RfQURBRkxBR1MpJyB8IHNlZCAtZSBzLy4qPSQkL1hGT089L2AiCisJImBlY2hvICdMQU5HVUFHRVM9JChMQU5HVUFHRVMpJyB8IHNlZCAtZSBzJy9bXj1dW149XSo9JCQvWEZPTz0vJ2AiIFwKKwkiYGVjaG8gJ1NUTVBfRklYUFJPVE89JChTVE1QX0ZJWFBST1RPKScgfCBzZWQgLWUgcycvW149XVtePV0qPSQkL1hGT089LydgIiBcCisJImBlY2hvICdMSU1JVFNfSF9URVNUPSQoTElNSVRTX0hfVEVTVCknIHwgc2VkIC1lIHMnL1tePV1bXj1dKj0kJC9YRk9PPS8nYCIgXAorCSJgZWNobyAnTElCR0NDMl9DRkxBR1M9JChMSUJHQ0MyX0NGTEFHUyknIHwgc2VkIC1lIHMnL1tePV1bXj1dKj0kJC9YRk9PPS8nYCIgXAorCSJgZWNobyAnTElCR0NDMl9ERUJVR19DRkxBR1M9JChMSUJHQ0MyX0RFQlVHX0NGTEFHUyknIHwgc2VkIC1lIHMnL1tePV1bXj1dKj0kJC9YRk9PPS8nYCIgXAorCSJgZWNobyAnTElCR0NDMl9JTkNMVURFUz0kKExJQkdDQzJfSU5DTFVERVMpJyB8IHNlZCAtZSBzJy9bXj1dW149XSo9JCQvWEZPTz0vJ2AiIFwKKwkiYGVjaG8gJ1NUQUdFMV9DRkxBR1M9JChTVEFHRTFfQ0ZMQUdTKScgfCBzZWQgLWUgcycvW149XVtePV0qPSQkL1hGT089LydgIiBcCisJImBlY2hvICdCT09UX0NGTEFHUz0kKEJPT1RfQ0ZMQUdTKScgfCBzZWQgLWUgcycvW149XVtePV0qPSQkL1hGT089LydgIiBcCisJImBlY2hvICdCT09UX0FEQUZMQUdTPSQoQk9PVF9BREFGTEFHUyknIHwgc2VkIC1lIHMnL1tePV1bXj1dKj0kJC9YRk9PPS8nYCIKIAogR0NDX0ZMQUdTX1RPX1BBU1MgPSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgJChFWFRSQV9IT1NUX0ZMQUdTKSAkKEVYVFJBX0dDQ19GTEFHUykKIApAQCAtNzk5LDE4MTUgKzgwNSw2IEBACiAgICAgbWF5YmUtaW5mby10YXJnZXQtcmRhIFwKICAgICBtYXliZS1pbmZvLXRhcmdldC1saWJhZGEKIAotIyBHQ0MsIHRoZSBldGVybmFsIHNwZWNpYWwgY2FzZQotLlBIT05ZOiBtYXliZS1pbmZvLWdjYyBpbmZvLWdjYwotbWF5YmUtaW5mby1nY2M6Ci1pbmZvLWdjYzogXAotICAgIGNvbmZpZ3VyZS1nY2MgCi0JQFsgLWYgLi9nY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0dDQ19GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gZ2NjIiA7IFwKLQkoY2QgZ2NjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLSMgSG9zdCBtb2R1bGVzLgotCi0uUEhPTlk6IG1heWJlLWluZm8tYXNoIGluZm8tYXNoCi1tYXliZS1pbmZvLWFzaDoKLQotaW5mby1hc2g6IFwKLSAgICBjb25maWd1cmUtYXNoIAotCUBbIC1mIC4vYXNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBhc2giIDsgXAotCShjZCBhc2ggJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tYXV0b2NvbmYgaW5mby1hdXRvY29uZgotbWF5YmUtaW5mby1hdXRvY29uZjoKLQotaW5mby1hdXRvY29uZjogXAotICAgIGNvbmZpZ3VyZS1hdXRvY29uZiAKLQlAWyAtZiAuL2F1dG9jb25mL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBhdXRvY29uZiIgOyBcCi0JKGNkIGF1dG9jb25mICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLWF1dG9tYWtlIGluZm8tYXV0b21ha2UKLW1heWJlLWluZm8tYXV0b21ha2U6Ci0KLWluZm8tYXV0b21ha2U6IFwKLSAgICBjb25maWd1cmUtYXV0b21ha2UgCi0JQFsgLWYgLi9hdXRvbWFrZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gYXV0b21ha2UiIDsgXAotCShjZCBhdXRvbWFrZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1iYXNoIGluZm8tYmFzaAotbWF5YmUtaW5mby1iYXNoOgotCi1pbmZvLWJhc2g6IFwKLSAgICBjb25maWd1cmUtYmFzaCAKLQlAWyAtZiAuL2Jhc2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIGJhc2giIDsgXAotCShjZCBiYXNoICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLWJmZCBpbmZvLWJmZAotbWF5YmUtaW5mby1iZmQ6Ci0KLWluZm8tYmZkOiBcCi0gICAgY29uZmlndXJlLWJmZCAKLQlAWyAtZiAuL2JmZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gYmZkIiA7IFwKLQkoY2QgYmZkICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLW9wY29kZXMgaW5mby1vcGNvZGVzCi1tYXliZS1pbmZvLW9wY29kZXM6Ci0KLWluZm8tb3Bjb2RlczogXAotICAgIGNvbmZpZ3VyZS1vcGNvZGVzIAotCUBbIC1mIC4vb3Bjb2Rlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gb3Bjb2RlcyIgOyBcCi0JKGNkIG9wY29kZXMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tYmludXRpbHMgaW5mby1iaW51dGlscwotbWF5YmUtaW5mby1iaW51dGlsczoKLQotaW5mby1iaW51dGlsczogXAotICAgIGNvbmZpZ3VyZS1iaW51dGlscyAKLQlAWyAtZiAuL2JpbnV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBiaW51dGlscyIgOyBcCi0JKGNkIGJpbnV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLWJpc29uIGluZm8tYmlzb24KLW1heWJlLWluZm8tYmlzb246Ci0KLWluZm8tYmlzb246IFwKLSAgICBjb25maWd1cmUtYmlzb24gCi0JQFsgLWYgLi9iaXNvbi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gYmlzb24iIDsgXAotCShjZCBiaXNvbiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1ieWFjYyBpbmZvLWJ5YWNjCi1tYXliZS1pbmZvLWJ5YWNjOgotCi1pbmZvLWJ5YWNjOiBcCi0gICAgY29uZmlndXJlLWJ5YWNjIAotCUBbIC1mIC4vYnlhY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIGJ5YWNjIiA7IFwKLQkoY2QgYnlhY2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tYnppcDIgaW5mby1iemlwMgotbWF5YmUtaW5mby1iemlwMjoKLQotaW5mby1iemlwMjogXAotICAgIGNvbmZpZ3VyZS1iemlwMiAKLQlAWyAtZiAuL2J6aXAyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBiemlwMiIgOyBcCi0JKGNkIGJ6aXAyICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLWRlamFnbnUgaW5mby1kZWphZ251Ci1tYXliZS1pbmZvLWRlamFnbnU6Ci0KLWluZm8tZGVqYWdudTogXAotICAgIGNvbmZpZ3VyZS1kZWphZ251IAotCUBbIC1mIC4vZGVqYWdudS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gZGVqYWdudSIgOyBcCi0JKGNkIGRlamFnbnUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tZGlmZiBpbmZvLWRpZmYKLW1heWJlLWluZm8tZGlmZjoKLQotaW5mby1kaWZmOiBcCi0gICAgY29uZmlndXJlLWRpZmYgCi0JQFsgLWYgLi9kaWZmL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBkaWZmIiA7IFwKLQkoY2QgZGlmZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1kb3N1dGlscyBpbmZvLWRvc3V0aWxzCi1tYXliZS1pbmZvLWRvc3V0aWxzOgotCi1pbmZvLWRvc3V0aWxzOiBcCi0gICAgY29uZmlndXJlLWRvc3V0aWxzIAotCUBbIC1mIC4vZG9zdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIGRvc3V0aWxzIiA7IFwKLQkoY2QgZG9zdXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tZXRjIGluZm8tZXRjCi1tYXliZS1pbmZvLWV0YzoKLQotaW5mby1ldGM6IFwKLSAgICBjb25maWd1cmUtZXRjIAotCUBbIC1mIC4vZXRjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBldGMiIDsgXAotCShjZCBldGMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tZmFzdGphciBpbmZvLWZhc3RqYXIKLW1heWJlLWluZm8tZmFzdGphcjoKLQotaW5mby1mYXN0amFyOiBcCi0gICAgY29uZmlndXJlLWZhc3RqYXIgCi0JQFsgLWYgLi9mYXN0amFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBmYXN0amFyIiA7IFwKLQkoY2QgZmFzdGphciAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1maWxldXRpbHMgaW5mby1maWxldXRpbHMKLW1heWJlLWluZm8tZmlsZXV0aWxzOgotCi1pbmZvLWZpbGV1dGlsczogXAotICAgIGNvbmZpZ3VyZS1maWxldXRpbHMgCi0JQFsgLWYgLi9maWxldXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIGZpbGV1dGlscyIgOyBcCi0JKGNkIGZpbGV1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1maW5kdXRpbHMgaW5mby1maW5kdXRpbHMKLW1heWJlLWluZm8tZmluZHV0aWxzOgotCi1pbmZvLWZpbmR1dGlsczogXAotICAgIGNvbmZpZ3VyZS1maW5kdXRpbHMgCi0JQFsgLWYgLi9maW5kdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIGZpbmR1dGlscyIgOyBcCi0JKGNkIGZpbmR1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1maW5kIGluZm8tZmluZAotbWF5YmUtaW5mby1maW5kOgotCi1pbmZvLWZpbmQ6IFwKLSAgICBjb25maWd1cmUtZmluZCAKLQlAWyAtZiAuL2ZpbmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIGZpbmQiIDsgXAotCShjZCBmaW5kICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLWZsZXggaW5mby1mbGV4Ci1tYXliZS1pbmZvLWZsZXg6Ci0KLWluZm8tZmxleDogXAotICAgIGNvbmZpZ3VyZS1mbGV4IAotCUBbIC1mIC4vZmxleC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gZmxleCIgOyBcCi0JKGNkIGZsZXggJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tZ2FzIGluZm8tZ2FzCi1tYXliZS1pbmZvLWdhczoKLQotaW5mby1nYXM6IFwKLSAgICBjb25maWd1cmUtZ2FzIAotCUBbIC1mIC4vZ2FzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBnYXMiIDsgXAotCShjZCBnYXMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tZ2F3ayBpbmZvLWdhd2sKLW1heWJlLWluZm8tZ2F3azoKLQotaW5mby1nYXdrOiBcCi0gICAgY29uZmlndXJlLWdhd2sgCi0JQFsgLWYgLi9nYXdrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBnYXdrIiA7IFwKLQkoY2QgZ2F3ayAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1nZXR0ZXh0IGluZm8tZ2V0dGV4dAotbWF5YmUtaW5mby1nZXR0ZXh0OgotCi1pbmZvLWdldHRleHQ6IFwKLSAgICBjb25maWd1cmUtZ2V0dGV4dCAKLQlAWyAtZiAuL2dldHRleHQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIGdldHRleHQiIDsgXAotCShjZCBnZXR0ZXh0ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLWdudXNlcnYgaW5mby1nbnVzZXJ2Ci1tYXliZS1pbmZvLWdudXNlcnY6Ci0KLWluZm8tZ251c2VydjogXAotICAgIGNvbmZpZ3VyZS1nbnVzZXJ2IAotCUBbIC1mIC4vZ251c2Vydi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gZ251c2VydiIgOyBcCi0JKGNkIGdudXNlcnYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tZ3Byb2YgaW5mby1ncHJvZgotbWF5YmUtaW5mby1ncHJvZjoKLQotaW5mby1ncHJvZjogXAotICAgIGNvbmZpZ3VyZS1ncHJvZiAKLQlAWyAtZiAuL2dwcm9mL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBncHJvZiIgOyBcCi0JKGNkIGdwcm9mICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLWd6aXAgaW5mby1nemlwCi1tYXliZS1pbmZvLWd6aXA6Ci0KLWluZm8tZ3ppcDogXAotICAgIGNvbmZpZ3VyZS1nemlwIAotCUBbIC1mIC4vZ3ppcC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gZ3ppcCIgOyBcCi0JKGNkIGd6aXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8taGVsbG8gaW5mby1oZWxsbwotbWF5YmUtaW5mby1oZWxsbzoKLQotaW5mby1oZWxsbzogXAotICAgIGNvbmZpZ3VyZS1oZWxsbyAKLQlAWyAtZiAuL2hlbGxvL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBoZWxsbyIgOyBcCi0JKGNkIGhlbGxvICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLWluZGVudCBpbmZvLWluZGVudAotbWF5YmUtaW5mby1pbmRlbnQ6Ci0KLWluZm8taW5kZW50OiBcCi0gICAgY29uZmlndXJlLWluZGVudCAKLQlAWyAtZiAuL2luZGVudC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gaW5kZW50IiA7IFwKLQkoY2QgaW5kZW50ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLWludGwgaW5mby1pbnRsCi1tYXliZS1pbmZvLWludGw6Ci0KLWluZm8taW50bDogXAotICAgIGNvbmZpZ3VyZS1pbnRsIAotCUBbIC1mIC4vaW50bC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gaW50bCIgOyBcCi0JKGNkIGludGwgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tdGNsIGluZm8tdGNsCi1tYXliZS1pbmZvLXRjbDoKLQotaW5mby10Y2w6IFwKLSAgICBjb25maWd1cmUtdGNsIAotCUBbIC1mIC4vdGNsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiB0Y2wiIDsgXAotCShjZCB0Y2wgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8taXRjbCBpbmZvLWl0Y2wKLW1heWJlLWluZm8taXRjbDoKLQotaW5mby1pdGNsOiBcCi0gICAgY29uZmlndXJlLWl0Y2wgCi0JQFsgLWYgLi9pdGNsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBpdGNsIiA7IFwKLQkoY2QgaXRjbCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1sZCBpbmZvLWxkCi1tYXliZS1pbmZvLWxkOgotCi1pbmZvLWxkOiBcCi0gICAgY29uZmlndXJlLWxkIAotCUBbIC1mIC4vbGQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIGxkIiA7IFwKLQkoY2QgbGQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tbGliZ3VpIGluZm8tbGliZ3VpCi1tYXliZS1pbmZvLWxpYmd1aToKLQotaW5mby1saWJndWk6IFwKLSAgICBjb25maWd1cmUtbGliZ3VpIAotCUBbIC1mIC4vbGliZ3VpL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBsaWJndWkiIDsgXAotCShjZCBsaWJndWkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tbGliaWJlcnR5IGluZm8tbGliaWJlcnR5Ci1tYXliZS1pbmZvLWxpYmliZXJ0eToKLQotaW5mby1saWJpYmVydHk6IFwKLSAgICBjb25maWd1cmUtbGliaWJlcnR5IAotCUBbIC1mIC4vbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBsaWJpYmVydHkiIDsgXAotCShjZCBsaWJpYmVydHkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tbGlidG9vbCBpbmZvLWxpYnRvb2wKLW1heWJlLWluZm8tbGlidG9vbDoKLQotaW5mby1saWJ0b29sOiBcCi0gICAgY29uZmlndXJlLWxpYnRvb2wgCi0JQFsgLWYgLi9saWJ0b29sL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBsaWJ0b29sIiA7IFwKLQkoY2QgbGlidG9vbCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1tNCBpbmZvLW00Ci1tYXliZS1pbmZvLW00OgotCi1pbmZvLW00OiBcCi0gICAgY29uZmlndXJlLW00IAotCUBbIC1mIC4vbTQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIG00IiA7IFwKLQkoY2QgbTQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tbWFrZSBpbmZvLW1ha2UKLW1heWJlLWluZm8tbWFrZToKLQotaW5mby1tYWtlOiBcCi0gICAgY29uZmlndXJlLW1ha2UgCi0JQFsgLWYgLi9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBtYWtlIiA7IFwKLQkoY2QgbWFrZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1tbWFsbG9jIGluZm8tbW1hbGxvYwotbWF5YmUtaW5mby1tbWFsbG9jOgotCi1pbmZvLW1tYWxsb2M6IFwKLSAgICBjb25maWd1cmUtbW1hbGxvYyAKLQlAWyAtZiAuL21tYWxsb2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIG1tYWxsb2MiIDsgXAotCShjZCBtbWFsbG9jICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXBhdGNoIGluZm8tcGF0Y2gKLW1heWJlLWluZm8tcGF0Y2g6Ci0KLWluZm8tcGF0Y2g6IFwKLSAgICBjb25maWd1cmUtcGF0Y2ggCi0JQFsgLWYgLi9wYXRjaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gcGF0Y2giIDsgXAotCShjZCBwYXRjaCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1wZXJsIGluZm8tcGVybAotbWF5YmUtaW5mby1wZXJsOgotCi1pbmZvLXBlcmw6IFwKLSAgICBjb25maWd1cmUtcGVybCAKLQlAWyAtZiAuL3BlcmwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIHBlcmwiIDsgXAotCShjZCBwZXJsICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXBybXMgaW5mby1wcm1zCi1tYXliZS1pbmZvLXBybXM6Ci0KLWluZm8tcHJtczogXAotICAgIGNvbmZpZ3VyZS1wcm1zIAotCUBbIC1mIC4vcHJtcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gcHJtcyIgOyBcCi0JKGNkIHBybXMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tcmNzIGluZm8tcmNzCi1tYXliZS1pbmZvLXJjczoKLQotaW5mby1yY3M6IFwKLSAgICBjb25maWd1cmUtcmNzIAotCUBbIC1mIC4vcmNzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiByY3MiIDsgXAotCShjZCByY3MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tcmVhZGxpbmUgaW5mby1yZWFkbGluZQotbWF5YmUtaW5mby1yZWFkbGluZToKLQotaW5mby1yZWFkbGluZTogXAotICAgIGNvbmZpZ3VyZS1yZWFkbGluZSAKLQlAWyAtZiAuL3JlYWRsaW5lL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiByZWFkbGluZSIgOyBcCi0JKGNkIHJlYWRsaW5lICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXJlbGVhc2UgaW5mby1yZWxlYXNlCi1tYXliZS1pbmZvLXJlbGVhc2U6Ci0KLWluZm8tcmVsZWFzZTogXAotICAgIGNvbmZpZ3VyZS1yZWxlYXNlIAotCUBbIC1mIC4vcmVsZWFzZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gcmVsZWFzZSIgOyBcCi0JKGNkIHJlbGVhc2UgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tcmVjb2RlIGluZm8tcmVjb2RlCi1tYXliZS1pbmZvLXJlY29kZToKLQotaW5mby1yZWNvZGU6IFwKLSAgICBjb25maWd1cmUtcmVjb2RlIAotCUBbIC1mIC4vcmVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiByZWNvZGUiIDsgXAotCShjZCByZWNvZGUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tc2VkIGluZm8tc2VkCi1tYXliZS1pbmZvLXNlZDoKLQotaW5mby1zZWQ6IFwKLSAgICBjb25maWd1cmUtc2VkIAotCUBbIC1mIC4vc2VkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBzZWQiIDsgXAotCShjZCBzZWQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tc2VuZC1wciBpbmZvLXNlbmQtcHIKLW1heWJlLWluZm8tc2VuZC1wcjoKLQotaW5mby1zZW5kLXByOiBcCi0gICAgY29uZmlndXJlLXNlbmQtcHIgCi0JQFsgLWYgLi9zZW5kLXByL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBzZW5kLXByIiA7IFwKLQkoY2Qgc2VuZC1wciAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1zaGVsbHV0aWxzIGluZm8tc2hlbGx1dGlscwotbWF5YmUtaW5mby1zaGVsbHV0aWxzOgotCi1pbmZvLXNoZWxsdXRpbHM6IFwKLSAgICBjb25maWd1cmUtc2hlbGx1dGlscyAKLQlAWyAtZiAuL3NoZWxsdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIHNoZWxsdXRpbHMiIDsgXAotCShjZCBzaGVsbHV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXNpZCBpbmZvLXNpZAotbWF5YmUtaW5mby1zaWQ6Ci0KLWluZm8tc2lkOiBcCi0gICAgY29uZmlndXJlLXNpZCAKLQlAWyAtZiAuL3NpZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gc2lkIiA7IFwKLQkoY2Qgc2lkICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXNpbSBpbmZvLXNpbQotbWF5YmUtaW5mby1zaW06Ci0KLWluZm8tc2ltOiBcCi0gICAgY29uZmlndXJlLXNpbSAKLQlAWyAtZiAuL3NpbS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gc2ltIiA7IFwKLQkoY2Qgc2ltICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXRhciBpbmZvLXRhcgotbWF5YmUtaW5mby10YXI6Ci0KLWluZm8tdGFyOiBcCi0gICAgY29uZmlndXJlLXRhciAKLQlAWyAtZiAuL3Rhci9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gdGFyIiA7IFwKLQkoY2QgdGFyICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXRleGluZm8gaW5mby10ZXhpbmZvCi1tYXliZS1pbmZvLXRleGluZm86Ci0KLWluZm8tdGV4aW5mbzogXAotICAgIGNvbmZpZ3VyZS10ZXhpbmZvIAotCUBbIC1mIC4vdGV4aW5mby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gdGV4aW5mbyIgOyBcCi0JKGNkIHRleGluZm8gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tdGV4dHV0aWxzIGluZm8tdGV4dHV0aWxzCi1tYXliZS1pbmZvLXRleHR1dGlsczoKLQotaW5mby10ZXh0dXRpbHM6IFwKLSAgICBjb25maWd1cmUtdGV4dHV0aWxzIAotCUBbIC1mIC4vdGV4dHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiB0ZXh0dXRpbHMiIDsgXAotCShjZCB0ZXh0dXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tdGltZSBpbmZvLXRpbWUKLW1heWJlLWluZm8tdGltZToKLQotaW5mby10aW1lOiBcCi0gICAgY29uZmlndXJlLXRpbWUgCi0JQFsgLWYgLi90aW1lL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiB0aW1lIiA7IFwKLQkoY2QgdGltZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby11dWRlY29kZSBpbmZvLXV1ZGVjb2RlCi1tYXliZS1pbmZvLXV1ZGVjb2RlOgotCi1pbmZvLXV1ZGVjb2RlOiBcCi0gICAgY29uZmlndXJlLXV1ZGVjb2RlIAotCUBbIC1mIC4vdXVkZWNvZGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIHV1ZGVjb2RlIiA7IFwKLQkoY2QgdXVkZWNvZGUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8td2RpZmYgaW5mby13ZGlmZgotbWF5YmUtaW5mby13ZGlmZjoKLQotaW5mby13ZGlmZjogXAotICAgIGNvbmZpZ3VyZS13ZGlmZiAKLQlAWyAtZiAuL3dkaWZmL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiB3ZGlmZiIgOyBcCi0JKGNkIHdkaWZmICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXppcCBpbmZvLXppcAotbWF5YmUtaW5mby16aXA6Ci0KLWluZm8temlwOiBcCi0gICAgY29uZmlndXJlLXppcCAKLQlAWyAtZiAuL3ppcC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gemlwIiA7IFwKLQkoY2QgemlwICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXpsaWIgaW5mby16bGliCi1tYXliZS1pbmZvLXpsaWI6Ci0KLWluZm8temxpYjogXAotICAgIGNvbmZpZ3VyZS16bGliIAotCUBbIC1mIC4vemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gemxpYiIgOyBcCi0JKGNkIHpsaWIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tZ2RiIGluZm8tZ2RiCi1tYXliZS1pbmZvLWdkYjoKLQotaW5mby1nZGI6IFwKLSAgICBjb25maWd1cmUtZ2RiIAotCUBbIC1mIC4vZ2RiL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBnZGIiIDsgXAotCShjZCBnZGIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tZXhwZWN0IGluZm8tZXhwZWN0Ci1tYXliZS1pbmZvLWV4cGVjdDoKLQotaW5mby1leHBlY3Q6IFwKLSAgICBjb25maWd1cmUtZXhwZWN0IAotCUBbIC1mIC4vZXhwZWN0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBleHBlY3QiIDsgXAotCShjZCBleHBlY3QgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tZ3VpbGUgaW5mby1ndWlsZQotbWF5YmUtaW5mby1ndWlsZToKLQotaW5mby1ndWlsZTogXAotICAgIGNvbmZpZ3VyZS1ndWlsZSAKLQlAWyAtZiAuL2d1aWxlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiBndWlsZSIgOyBcCi0JKGNkIGd1aWxlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXRrIGluZm8tdGsKLW1heWJlLWluZm8tdGs6Ci0KLWluZm8tdGs6IFwKLSAgICBjb25maWd1cmUtdGsgCi0JQFsgLWYgLi90ay9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gdGsiIDsgXAotCShjZCB0ayAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby10aXggaW5mby10aXgKLW1heWJlLWluZm8tdGl4OgotCi1pbmZvLXRpeDogXAotICAgIGNvbmZpZ3VyZS10aXggCi0JQFsgLWYgLi90aXgvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIHRpeCIgOyBcCi0JKGNkIHRpeCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby1saWJ0ZXJtY2FwIGluZm8tbGlidGVybWNhcAotbWF5YmUtaW5mby1saWJ0ZXJtY2FwOgotCi1pbmZvLWxpYnRlcm1jYXA6IFwKLSAgICBjb25maWd1cmUtbGlidGVybWNhcCAKLQlAWyAtZiAuL2xpYnRlcm1jYXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbmZvIGluIGxpYnRlcm1jYXAiIDsgXAotCShjZCBsaWJ0ZXJtY2FwICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXV0aWxzIGluZm8tdXRpbHMKLW1heWJlLWluZm8tdXRpbHM6Ci0KLWluZm8tdXRpbHM6IFwKLSAgICBjb25maWd1cmUtdXRpbHMgCi0JQFsgLWYgLi91dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gdXRpbHMiIDsgXAotCShjZCB1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLQotIyBUYXJnZXQgbW9kdWxlcy4KLQotLlBIT05ZOiBtYXliZS1pbmZvLXRhcmdldC1saWJzdGRjKystdjMgaW5mby10YXJnZXQtbGlic3RkYysrLXYzCi1tYXliZS1pbmZvLXRhcmdldC1saWJzdGRjKystdjM6Ci0KLWluZm8tdGFyZ2V0LWxpYnN0ZGMrKy12MzogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlic3RkYysrLXYzIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXRhcmdldC1uZXdsaWIgaW5mby10YXJnZXQtbmV3bGliCi1tYXliZS1pbmZvLXRhcmdldC1uZXdsaWI6Ci0KLWluZm8tdGFyZ2V0LW5ld2xpYjogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbmV3bGliIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbmV3bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9uZXdsaWIiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbmV3bGliICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXRhcmdldC1saWJmMmMgaW5mby10YXJnZXQtbGliZjJjCi1tYXliZS1pbmZvLXRhcmdldC1saWJmMmM6Ci0KLWluZm8tdGFyZ2V0LWxpYmYyYzogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliZjJjIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZjJjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9saWJmMmMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZjJjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXRhcmdldC1saWJvYmpjIGluZm8tdGFyZ2V0LWxpYm9iamMKLW1heWJlLWluZm8tdGFyZ2V0LWxpYm9iamM6Ci0KLWluZm8tdGFyZ2V0LWxpYm9iamM6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWxpYm9iamMgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9saWJvYmpjIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tdGFyZ2V0LWxpYnRlcm1jYXAgaW5mby10YXJnZXQtbGlidGVybWNhcAotbWF5YmUtaW5mby10YXJnZXQtbGlidGVybWNhcDoKLQotaW5mby10YXJnZXQtbGlidGVybWNhcDogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlidGVybWNhcCAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYnRlcm1jYXAvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYnRlcm1jYXAiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGlidGVybWNhcCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby10YXJnZXQtd2luc3VwIGluZm8tdGFyZ2V0LXdpbnN1cAotbWF5YmUtaW5mby10YXJnZXQtd2luc3VwOgotCi1pbmZvLXRhcmdldC13aW5zdXA6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LXdpbnN1cCAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cC9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbmZvIGluICQoVEFSR0VUX1NVQkRJUikvd2luc3VwIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby10YXJnZXQtbGliZ2xvc3MgaW5mby10YXJnZXQtbGliZ2xvc3MKLW1heWJlLWluZm8tdGFyZ2V0LWxpYmdsb3NzOgotCi1pbmZvLXRhcmdldC1saWJnbG9zczogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliZ2xvc3MgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGliZ2xvc3MiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZ2xvc3MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tdGFyZ2V0LWxpYmliZXJ0eSBpbmZvLXRhcmdldC1saWJpYmVydHkKLW1heWJlLWluZm8tdGFyZ2V0LWxpYmliZXJ0eToKLQotaW5mby10YXJnZXQtbGliaWJlcnR5OiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJpYmVydHkgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tdGFyZ2V0LWdwZXJmIGluZm8tdGFyZ2V0LWdwZXJmCi1tYXliZS1pbmZvLXRhcmdldC1ncGVyZjoKLQotaW5mby10YXJnZXQtZ3BlcmY6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWdwZXJmIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2dwZXJmIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2dwZXJmICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXRhcmdldC1leGFtcGxlcyBpbmZvLXRhcmdldC1leGFtcGxlcwotbWF5YmUtaW5mby10YXJnZXQtZXhhbXBsZXM6Ci0KLWluZm8tdGFyZ2V0LWV4YW1wbGVzOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1leGFtcGxlcyAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9leGFtcGxlcyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9leGFtcGxlcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby10YXJnZXQtbGliZmZpIGluZm8tdGFyZ2V0LWxpYmZmaQotbWF5YmUtaW5mby10YXJnZXQtbGliZmZpOgotCi1pbmZvLXRhcmdldC1saWJmZmk6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmZmaSAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGliZmZpIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby10YXJnZXQtbGliamF2YSBpbmZvLXRhcmdldC1saWJqYXZhCi1tYXliZS1pbmZvLXRhcmdldC1saWJqYXZhOgotCi1pbmZvLXRhcmdldC1saWJqYXZhOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJqYXZhIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliamF2YS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGliamF2YSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJqYXZhICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXRhcmdldC16bGliIGluZm8tdGFyZ2V0LXpsaWIKLW1heWJlLWluZm8tdGFyZ2V0LXpsaWI6Ci0KLWluZm8tdGFyZ2V0LXpsaWI6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LXpsaWIgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS96bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gJChUQVJHRVRfU1VCRElSKS96bGliIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3psaWIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluZm8tdGFyZ2V0LWJvZWhtLWdjIGluZm8tdGFyZ2V0LWJvZWhtLWdjCi1tYXliZS1pbmZvLXRhcmdldC1ib2VobS1nYzoKLQotaW5mby10YXJnZXQtYm9laG0tZ2M6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWJvZWhtLWdjIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbmZvLXRhcmdldC1xdGhyZWFkcyBpbmZvLXRhcmdldC1xdGhyZWFkcwotbWF5YmUtaW5mby10YXJnZXQtcXRocmVhZHM6Ci0KLWluZm8tdGFyZ2V0LXF0aHJlYWRzOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1xdGhyZWFkcyAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby10YXJnZXQtcmRhIGluZm8tdGFyZ2V0LXJkYQotbWF5YmUtaW5mby10YXJnZXQtcmRhOgotCi1pbmZvLXRhcmdldC1yZGE6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LXJkYSAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3JkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbmZvIGluICQoVEFSR0VUX1NVQkRJUikvcmRhIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3JkYSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5mby10YXJnZXQtbGliYWRhIGluZm8tdGFyZ2V0LWxpYmFkYQotbWF5YmUtaW5mby10YXJnZXQtbGliYWRhOgotCi1pbmZvLXRhcmdldC1saWJhZGE6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmFkYSAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGliYWRhIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLQogLlBIT05ZOiBkby1kdmkKIGRvLWR2aTogZHZpLWhvc3QgZHZpLXRhcmdldAogCkBAIC0yNjk4LDE4MTUgKzg5NSw2IEBACiAgICAgbWF5YmUtZHZpLXRhcmdldC1yZGEgXAogICAgIG1heWJlLWR2aS10YXJnZXQtbGliYWRhCiAKLSMgR0NDLCB0aGUgZXRlcm5hbCBzcGVjaWFsIGNhc2UKLS5QSE9OWTogbWF5YmUtZHZpLWdjYyBkdmktZ2NjCi1tYXliZS1kdmktZ2NjOgotZHZpLWdjYzogXAotICAgIGNvbmZpZ3VyZS1nY2MgCi0JQFsgLWYgLi9nY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0dDQ19GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBnY2MiIDsgXAotCShjZCBnY2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0jIEhvc3QgbW9kdWxlcy4KLQotLlBIT05ZOiBtYXliZS1kdmktYXNoIGR2aS1hc2gKLW1heWJlLWR2aS1hc2g6Ci0KLWR2aS1hc2g6IFwKLSAgICBjb25maWd1cmUtYXNoIAotCUBbIC1mIC4vYXNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGFzaCIgOyBcCi0JKGNkIGFzaCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktYXV0b2NvbmYgZHZpLWF1dG9jb25mCi1tYXliZS1kdmktYXV0b2NvbmY6Ci0KLWR2aS1hdXRvY29uZjogXAotICAgIGNvbmZpZ3VyZS1hdXRvY29uZiAKLQlAWyAtZiAuL2F1dG9jb25mL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGF1dG9jb25mIiA7IFwKLQkoY2QgYXV0b2NvbmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLWF1dG9tYWtlIGR2aS1hdXRvbWFrZQotbWF5YmUtZHZpLWF1dG9tYWtlOgotCi1kdmktYXV0b21ha2U6IFwKLSAgICBjb25maWd1cmUtYXV0b21ha2UgCi0JQFsgLWYgLi9hdXRvbWFrZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBhdXRvbWFrZSIgOyBcCi0JKGNkIGF1dG9tYWtlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1iYXNoIGR2aS1iYXNoCi1tYXliZS1kdmktYmFzaDoKLQotZHZpLWJhc2g6IFwKLSAgICBjb25maWd1cmUtYmFzaCAKLQlAWyAtZiAuL2Jhc2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gYmFzaCIgOyBcCi0JKGNkIGJhc2ggJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLWJmZCBkdmktYmZkCi1tYXliZS1kdmktYmZkOgotCi1kdmktYmZkOiBcCi0gICAgY29uZmlndXJlLWJmZCAKLQlAWyAtZiAuL2JmZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBiZmQiIDsgXAotCShjZCBiZmQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLW9wY29kZXMgZHZpLW9wY29kZXMKLW1heWJlLWR2aS1vcGNvZGVzOgotCi1kdmktb3Bjb2RlczogXAotICAgIGNvbmZpZ3VyZS1vcGNvZGVzIAotCUBbIC1mIC4vb3Bjb2Rlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBvcGNvZGVzIiA7IFwKLQkoY2Qgb3Bjb2RlcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktYmludXRpbHMgZHZpLWJpbnV0aWxzCi1tYXliZS1kdmktYmludXRpbHM6Ci0KLWR2aS1iaW51dGlsczogXAotICAgIGNvbmZpZ3VyZS1iaW51dGlscyAKLQlAWyAtZiAuL2JpbnV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGJpbnV0aWxzIiA7IFwKLQkoY2QgYmludXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLWJpc29uIGR2aS1iaXNvbgotbWF5YmUtZHZpLWJpc29uOgotCi1kdmktYmlzb246IFwKLSAgICBjb25maWd1cmUtYmlzb24gCi0JQFsgLWYgLi9iaXNvbi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBiaXNvbiIgOyBcCi0JKGNkIGJpc29uICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1ieWFjYyBkdmktYnlhY2MKLW1heWJlLWR2aS1ieWFjYzoKLQotZHZpLWJ5YWNjOiBcCi0gICAgY29uZmlndXJlLWJ5YWNjIAotCUBbIC1mIC4vYnlhY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gYnlhY2MiIDsgXAotCShjZCBieWFjYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktYnppcDIgZHZpLWJ6aXAyCi1tYXliZS1kdmktYnppcDI6Ci0KLWR2aS1iemlwMjogXAotICAgIGNvbmZpZ3VyZS1iemlwMiAKLQlAWyAtZiAuL2J6aXAyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGJ6aXAyIiA7IFwKLQkoY2QgYnppcDIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLWRlamFnbnUgZHZpLWRlamFnbnUKLW1heWJlLWR2aS1kZWphZ251OgotCi1kdmktZGVqYWdudTogXAotICAgIGNvbmZpZ3VyZS1kZWphZ251IAotCUBbIC1mIC4vZGVqYWdudS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBkZWphZ251IiA7IFwKLQkoY2QgZGVqYWdudSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktZGlmZiBkdmktZGlmZgotbWF5YmUtZHZpLWRpZmY6Ci0KLWR2aS1kaWZmOiBcCi0gICAgY29uZmlndXJlLWRpZmYgCi0JQFsgLWYgLi9kaWZmL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGRpZmYiIDsgXAotCShjZCBkaWZmICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1kb3N1dGlscyBkdmktZG9zdXRpbHMKLW1heWJlLWR2aS1kb3N1dGlsczoKLQotZHZpLWRvc3V0aWxzOiBcCi0gICAgY29uZmlndXJlLWRvc3V0aWxzIAotCUBbIC1mIC4vZG9zdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gZG9zdXRpbHMiIDsgXAotCShjZCBkb3N1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktZXRjIGR2aS1ldGMKLW1heWJlLWR2aS1ldGM6Ci0KLWR2aS1ldGM6IFwKLSAgICBjb25maWd1cmUtZXRjIAotCUBbIC1mIC4vZXRjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGV0YyIgOyBcCi0JKGNkIGV0YyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktZmFzdGphciBkdmktZmFzdGphcgotbWF5YmUtZHZpLWZhc3RqYXI6Ci0KLWR2aS1mYXN0amFyOiBcCi0gICAgY29uZmlndXJlLWZhc3RqYXIgCi0JQFsgLWYgLi9mYXN0amFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGZhc3RqYXIiIDsgXAotCShjZCBmYXN0amFyICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1maWxldXRpbHMgZHZpLWZpbGV1dGlscwotbWF5YmUtZHZpLWZpbGV1dGlsczoKLQotZHZpLWZpbGV1dGlsczogXAotICAgIGNvbmZpZ3VyZS1maWxldXRpbHMgCi0JQFsgLWYgLi9maWxldXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gZmlsZXV0aWxzIiA7IFwKLQkoY2QgZmlsZXV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1maW5kdXRpbHMgZHZpLWZpbmR1dGlscwotbWF5YmUtZHZpLWZpbmR1dGlsczoKLQotZHZpLWZpbmR1dGlsczogXAotICAgIGNvbmZpZ3VyZS1maW5kdXRpbHMgCi0JQFsgLWYgLi9maW5kdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gZmluZHV0aWxzIiA7IFwKLQkoY2QgZmluZHV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1maW5kIGR2aS1maW5kCi1tYXliZS1kdmktZmluZDoKLQotZHZpLWZpbmQ6IFwKLSAgICBjb25maWd1cmUtZmluZCAKLQlAWyAtZiAuL2ZpbmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gZmluZCIgOyBcCi0JKGNkIGZpbmQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLWZsZXggZHZpLWZsZXgKLW1heWJlLWR2aS1mbGV4OgotCi1kdmktZmxleDogXAotICAgIGNvbmZpZ3VyZS1mbGV4IAotCUBbIC1mIC4vZmxleC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBmbGV4IiA7IFwKLQkoY2QgZmxleCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktZ2FzIGR2aS1nYXMKLW1heWJlLWR2aS1nYXM6Ci0KLWR2aS1nYXM6IFwKLSAgICBjb25maWd1cmUtZ2FzIAotCUBbIC1mIC4vZ2FzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGdhcyIgOyBcCi0JKGNkIGdhcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktZ2F3ayBkdmktZ2F3awotbWF5YmUtZHZpLWdhd2s6Ci0KLWR2aS1nYXdrOiBcCi0gICAgY29uZmlndXJlLWdhd2sgCi0JQFsgLWYgLi9nYXdrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGdhd2siIDsgXAotCShjZCBnYXdrICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1nZXR0ZXh0IGR2aS1nZXR0ZXh0Ci1tYXliZS1kdmktZ2V0dGV4dDoKLQotZHZpLWdldHRleHQ6IFwKLSAgICBjb25maWd1cmUtZ2V0dGV4dCAKLQlAWyAtZiAuL2dldHRleHQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gZ2V0dGV4dCIgOyBcCi0JKGNkIGdldHRleHQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLWdudXNlcnYgZHZpLWdudXNlcnYKLW1heWJlLWR2aS1nbnVzZXJ2OgotCi1kdmktZ251c2VydjogXAotICAgIGNvbmZpZ3VyZS1nbnVzZXJ2IAotCUBbIC1mIC4vZ251c2Vydi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBnbnVzZXJ2IiA7IFwKLQkoY2QgZ251c2VydiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktZ3Byb2YgZHZpLWdwcm9mCi1tYXliZS1kdmktZ3Byb2Y6Ci0KLWR2aS1ncHJvZjogXAotICAgIGNvbmZpZ3VyZS1ncHJvZiAKLQlAWyAtZiAuL2dwcm9mL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGdwcm9mIiA7IFwKLQkoY2QgZ3Byb2YgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLWd6aXAgZHZpLWd6aXAKLW1heWJlLWR2aS1nemlwOgotCi1kdmktZ3ppcDogXAotICAgIGNvbmZpZ3VyZS1nemlwIAotCUBbIC1mIC4vZ3ppcC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBnemlwIiA7IFwKLQkoY2QgZ3ppcCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktaGVsbG8gZHZpLWhlbGxvCi1tYXliZS1kdmktaGVsbG86Ci0KLWR2aS1oZWxsbzogXAotICAgIGNvbmZpZ3VyZS1oZWxsbyAKLQlAWyAtZiAuL2hlbGxvL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGhlbGxvIiA7IFwKLQkoY2QgaGVsbG8gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLWluZGVudCBkdmktaW5kZW50Ci1tYXliZS1kdmktaW5kZW50OgotCi1kdmktaW5kZW50OiBcCi0gICAgY29uZmlndXJlLWluZGVudCAKLQlAWyAtZiAuL2luZGVudC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBpbmRlbnQiIDsgXAotCShjZCBpbmRlbnQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLWludGwgZHZpLWludGwKLW1heWJlLWR2aS1pbnRsOgotCi1kdmktaW50bDogXAotICAgIGNvbmZpZ3VyZS1pbnRsIAotCUBbIC1mIC4vaW50bC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBpbnRsIiA7IFwKLQkoY2QgaW50bCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktdGNsIGR2aS10Y2wKLW1heWJlLWR2aS10Y2w6Ci0KLWR2aS10Y2w6IFwKLSAgICBjb25maWd1cmUtdGNsIAotCUBbIC1mIC4vdGNsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIHRjbCIgOyBcCi0JKGNkIHRjbCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktaXRjbCBkdmktaXRjbAotbWF5YmUtZHZpLWl0Y2w6Ci0KLWR2aS1pdGNsOiBcCi0gICAgY29uZmlndXJlLWl0Y2wgCi0JQFsgLWYgLi9pdGNsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGl0Y2wiIDsgXAotCShjZCBpdGNsICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1sZCBkdmktbGQKLW1heWJlLWR2aS1sZDoKLQotZHZpLWxkOiBcCi0gICAgY29uZmlndXJlLWxkIAotCUBbIC1mIC4vbGQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gbGQiIDsgXAotCShjZCBsZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktbGliZ3VpIGR2aS1saWJndWkKLW1heWJlLWR2aS1saWJndWk6Ci0KLWR2aS1saWJndWk6IFwKLSAgICBjb25maWd1cmUtbGliZ3VpIAotCUBbIC1mIC4vbGliZ3VpL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGxpYmd1aSIgOyBcCi0JKGNkIGxpYmd1aSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktbGliaWJlcnR5IGR2aS1saWJpYmVydHkKLW1heWJlLWR2aS1saWJpYmVydHk6Ci0KLWR2aS1saWJpYmVydHk6IFwKLSAgICBjb25maWd1cmUtbGliaWJlcnR5IAotCUBbIC1mIC4vbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGxpYmliZXJ0eSIgOyBcCi0JKGNkIGxpYmliZXJ0eSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktbGlidG9vbCBkdmktbGlidG9vbAotbWF5YmUtZHZpLWxpYnRvb2w6Ci0KLWR2aS1saWJ0b29sOiBcCi0gICAgY29uZmlndXJlLWxpYnRvb2wgCi0JQFsgLWYgLi9saWJ0b29sL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGxpYnRvb2wiIDsgXAotCShjZCBsaWJ0b29sICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1tNCBkdmktbTQKLW1heWJlLWR2aS1tNDoKLQotZHZpLW00OiBcCi0gICAgY29uZmlndXJlLW00IAotCUBbIC1mIC4vbTQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gbTQiIDsgXAotCShjZCBtNCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktbWFrZSBkdmktbWFrZQotbWF5YmUtZHZpLW1ha2U6Ci0KLWR2aS1tYWtlOiBcCi0gICAgY29uZmlndXJlLW1ha2UgCi0JQFsgLWYgLi9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIG1ha2UiIDsgXAotCShjZCBtYWtlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1tbWFsbG9jIGR2aS1tbWFsbG9jCi1tYXliZS1kdmktbW1hbGxvYzoKLQotZHZpLW1tYWxsb2M6IFwKLSAgICBjb25maWd1cmUtbW1hbGxvYyAKLQlAWyAtZiAuL21tYWxsb2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gbW1hbGxvYyIgOyBcCi0JKGNkIG1tYWxsb2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXBhdGNoIGR2aS1wYXRjaAotbWF5YmUtZHZpLXBhdGNoOgotCi1kdmktcGF0Y2g6IFwKLSAgICBjb25maWd1cmUtcGF0Y2ggCi0JQFsgLWYgLi9wYXRjaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBwYXRjaCIgOyBcCi0JKGNkIHBhdGNoICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1wZXJsIGR2aS1wZXJsCi1tYXliZS1kdmktcGVybDoKLQotZHZpLXBlcmw6IFwKLSAgICBjb25maWd1cmUtcGVybCAKLQlAWyAtZiAuL3BlcmwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gcGVybCIgOyBcCi0JKGNkIHBlcmwgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXBybXMgZHZpLXBybXMKLW1heWJlLWR2aS1wcm1zOgotCi1kdmktcHJtczogXAotICAgIGNvbmZpZ3VyZS1wcm1zIAotCUBbIC1mIC4vcHJtcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBwcm1zIiA7IFwKLQkoY2QgcHJtcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktcmNzIGR2aS1yY3MKLW1heWJlLWR2aS1yY3M6Ci0KLWR2aS1yY3M6IFwKLSAgICBjb25maWd1cmUtcmNzIAotCUBbIC1mIC4vcmNzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIHJjcyIgOyBcCi0JKGNkIHJjcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktcmVhZGxpbmUgZHZpLXJlYWRsaW5lCi1tYXliZS1kdmktcmVhZGxpbmU6Ci0KLWR2aS1yZWFkbGluZTogXAotICAgIGNvbmZpZ3VyZS1yZWFkbGluZSAKLQlAWyAtZiAuL3JlYWRsaW5lL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIHJlYWRsaW5lIiA7IFwKLQkoY2QgcmVhZGxpbmUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXJlbGVhc2UgZHZpLXJlbGVhc2UKLW1heWJlLWR2aS1yZWxlYXNlOgotCi1kdmktcmVsZWFzZTogXAotICAgIGNvbmZpZ3VyZS1yZWxlYXNlIAotCUBbIC1mIC4vcmVsZWFzZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiByZWxlYXNlIiA7IFwKLQkoY2QgcmVsZWFzZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktcmVjb2RlIGR2aS1yZWNvZGUKLW1heWJlLWR2aS1yZWNvZGU6Ci0KLWR2aS1yZWNvZGU6IFwKLSAgICBjb25maWd1cmUtcmVjb2RlIAotCUBbIC1mIC4vcmVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIHJlY29kZSIgOyBcCi0JKGNkIHJlY29kZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktc2VkIGR2aS1zZWQKLW1heWJlLWR2aS1zZWQ6Ci0KLWR2aS1zZWQ6IFwKLSAgICBjb25maWd1cmUtc2VkIAotCUBbIC1mIC4vc2VkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIHNlZCIgOyBcCi0JKGNkIHNlZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktc2VuZC1wciBkdmktc2VuZC1wcgotbWF5YmUtZHZpLXNlbmQtcHI6Ci0KLWR2aS1zZW5kLXByOiBcCi0gICAgY29uZmlndXJlLXNlbmQtcHIgCi0JQFsgLWYgLi9zZW5kLXByL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIHNlbmQtcHIiIDsgXAotCShjZCBzZW5kLXByICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1zaGVsbHV0aWxzIGR2aS1zaGVsbHV0aWxzCi1tYXliZS1kdmktc2hlbGx1dGlsczoKLQotZHZpLXNoZWxsdXRpbHM6IFwKLSAgICBjb25maWd1cmUtc2hlbGx1dGlscyAKLQlAWyAtZiAuL3NoZWxsdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gc2hlbGx1dGlscyIgOyBcCi0JKGNkIHNoZWxsdXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXNpZCBkdmktc2lkCi1tYXliZS1kdmktc2lkOgotCi1kdmktc2lkOiBcCi0gICAgY29uZmlndXJlLXNpZCAKLQlAWyAtZiAuL3NpZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBzaWQiIDsgXAotCShjZCBzaWQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXNpbSBkdmktc2ltCi1tYXliZS1kdmktc2ltOgotCi1kdmktc2ltOiBcCi0gICAgY29uZmlndXJlLXNpbSAKLQlAWyAtZiAuL3NpbS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiBzaW0iIDsgXAotCShjZCBzaW0gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXRhciBkdmktdGFyCi1tYXliZS1kdmktdGFyOgotCi1kdmktdGFyOiBcCi0gICAgY29uZmlndXJlLXRhciAKLQlAWyAtZiAuL3Rhci9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiB0YXIiIDsgXAotCShjZCB0YXIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXRleGluZm8gZHZpLXRleGluZm8KLW1heWJlLWR2aS10ZXhpbmZvOgotCi1kdmktdGV4aW5mbzogXAotICAgIGNvbmZpZ3VyZS10ZXhpbmZvIAotCUBbIC1mIC4vdGV4aW5mby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiB0ZXhpbmZvIiA7IFwKLQkoY2QgdGV4aW5mbyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktdGV4dHV0aWxzIGR2aS10ZXh0dXRpbHMKLW1heWJlLWR2aS10ZXh0dXRpbHM6Ci0KLWR2aS10ZXh0dXRpbHM6IFwKLSAgICBjb25maWd1cmUtdGV4dHV0aWxzIAotCUBbIC1mIC4vdGV4dHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIHRleHR1dGlscyIgOyBcCi0JKGNkIHRleHR1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktdGltZSBkdmktdGltZQotbWF5YmUtZHZpLXRpbWU6Ci0KLWR2aS10aW1lOiBcCi0gICAgY29uZmlndXJlLXRpbWUgCi0JQFsgLWYgLi90aW1lL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIHRpbWUiIDsgXAotCShjZCB0aW1lICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS11dWRlY29kZSBkdmktdXVkZWNvZGUKLW1heWJlLWR2aS11dWRlY29kZToKLQotZHZpLXV1ZGVjb2RlOiBcCi0gICAgY29uZmlndXJlLXV1ZGVjb2RlIAotCUBbIC1mIC4vdXVkZWNvZGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gdXVkZWNvZGUiIDsgXAotCShjZCB1dWRlY29kZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktd2RpZmYgZHZpLXdkaWZmCi1tYXliZS1kdmktd2RpZmY6Ci0KLWR2aS13ZGlmZjogXAotICAgIGNvbmZpZ3VyZS13ZGlmZiAKLQlAWyAtZiAuL3dkaWZmL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIHdkaWZmIiA7IFwKLQkoY2Qgd2RpZmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXppcCBkdmktemlwCi1tYXliZS1kdmktemlwOgotCi1kdmktemlwOiBcCi0gICAgY29uZmlndXJlLXppcCAKLQlAWyAtZiAuL3ppcC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiB6aXAiIDsgXAotCShjZCB6aXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXpsaWIgZHZpLXpsaWIKLW1heWJlLWR2aS16bGliOgotCi1kdmktemxpYjogXAotICAgIGNvbmZpZ3VyZS16bGliIAotCUBbIC1mIC4vemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiB6bGliIiA7IFwKLQkoY2QgemxpYiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktZ2RiIGR2aS1nZGIKLW1heWJlLWR2aS1nZGI6Ci0KLWR2aS1nZGI6IFwKLSAgICBjb25maWd1cmUtZ2RiIAotCUBbIC1mIC4vZ2RiL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGdkYiIgOyBcCi0JKGNkIGdkYiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktZXhwZWN0IGR2aS1leHBlY3QKLW1heWJlLWR2aS1leHBlY3Q6Ci0KLWR2aS1leHBlY3Q6IFwKLSAgICBjb25maWd1cmUtZXhwZWN0IAotCUBbIC1mIC4vZXhwZWN0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGV4cGVjdCIgOyBcCi0JKGNkIGV4cGVjdCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktZ3VpbGUgZHZpLWd1aWxlCi1tYXliZS1kdmktZ3VpbGU6Ci0KLWR2aS1ndWlsZTogXAotICAgIGNvbmZpZ3VyZS1ndWlsZSAKLQlAWyAtZiAuL2d1aWxlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZHZpIGluIGd1aWxlIiA7IFwKLQkoY2QgZ3VpbGUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXRrIGR2aS10awotbWF5YmUtZHZpLXRrOgotCi1kdmktdGs6IFwKLSAgICBjb25maWd1cmUtdGsgCi0JQFsgLWYgLi90ay9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiB0ayIgOyBcCi0JKGNkIHRrICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS10aXggZHZpLXRpeAotbWF5YmUtZHZpLXRpeDoKLQotZHZpLXRpeDogXAotICAgIGNvbmZpZ3VyZS10aXggCi0JQFsgLWYgLi90aXgvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gdGl4IiA7IFwKLQkoY2QgdGl4ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS1saWJ0ZXJtY2FwIGR2aS1saWJ0ZXJtY2FwCi1tYXliZS1kdmktbGlidGVybWNhcDoKLQotZHZpLWxpYnRlcm1jYXA6IFwKLSAgICBjb25maWd1cmUtbGlidGVybWNhcCAKLQlAWyAtZiAuL2xpYnRlcm1jYXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkdmkgaW4gbGlidGVybWNhcCIgOyBcCi0JKGNkIGxpYnRlcm1jYXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXV0aWxzIGR2aS11dGlscwotbWF5YmUtZHZpLXV0aWxzOgotCi1kdmktdXRpbHM6IFwKLSAgICBjb25maWd1cmUtdXRpbHMgCi0JQFsgLWYgLi91dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiB1dGlscyIgOyBcCi0JKGNkIHV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0KLSMgVGFyZ2V0IG1vZHVsZXMuCi0KLS5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC1saWJzdGRjKystdjMgZHZpLXRhcmdldC1saWJzdGRjKystdjMKLW1heWJlLWR2aS10YXJnZXQtbGlic3RkYysrLXYzOgotCi1kdmktdGFyZ2V0LWxpYnN0ZGMrKy12MzogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlic3RkYysrLXYzIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC1uZXdsaWIgZHZpLXRhcmdldC1uZXdsaWIKLW1heWJlLWR2aS10YXJnZXQtbmV3bGliOgotCi1kdmktdGFyZ2V0LW5ld2xpYjogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbmV3bGliIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbmV3bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL25ld2xpYiIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9uZXdsaWIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC1saWJmMmMgZHZpLXRhcmdldC1saWJmMmMKLW1heWJlLWR2aS10YXJnZXQtbGliZjJjOgotCi1kdmktdGFyZ2V0LWxpYmYyYzogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliZjJjIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZjJjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmMmMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC1saWJvYmpjIGR2aS10YXJnZXQtbGlib2JqYwotbWF5YmUtZHZpLXRhcmdldC1saWJvYmpjOgotCi1kdmktdGFyZ2V0LWxpYm9iamM6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWxpYm9iamMgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktdGFyZ2V0LWxpYnRlcm1jYXAgZHZpLXRhcmdldC1saWJ0ZXJtY2FwCi1tYXliZS1kdmktdGFyZ2V0LWxpYnRlcm1jYXA6Ci0KLWR2aS10YXJnZXQtbGlidGVybWNhcDogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlidGVybWNhcCAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYnRlcm1jYXAvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgZHZpIGluICQoVEFSR0VUX1NVQkRJUikvbGlidGVybWNhcCIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJ0ZXJtY2FwICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtd2luc3VwIGR2aS10YXJnZXQtd2luc3VwCi1tYXliZS1kdmktdGFyZ2V0LXdpbnN1cDoKLQotZHZpLXRhcmdldC13aW5zdXA6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LXdpbnN1cCAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cC9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS93aW5zdXAiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvd2luc3VwICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtbGliZ2xvc3MgZHZpLXRhcmdldC1saWJnbG9zcwotbWF5YmUtZHZpLXRhcmdldC1saWJnbG9zczoKLQotZHZpLXRhcmdldC1saWJnbG9zczogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliZ2xvc3MgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktdGFyZ2V0LWxpYmliZXJ0eSBkdmktdGFyZ2V0LWxpYmliZXJ0eQotbWF5YmUtZHZpLXRhcmdldC1saWJpYmVydHk6Ci0KLWR2aS10YXJnZXQtbGliaWJlcnR5OiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJpYmVydHkgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgZHZpIGluICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5IiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktdGFyZ2V0LWdwZXJmIGR2aS10YXJnZXQtZ3BlcmYKLW1heWJlLWR2aS10YXJnZXQtZ3BlcmY6Ci0KLWR2aS10YXJnZXQtZ3BlcmY6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWdwZXJmIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgZHZpIGluICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC1leGFtcGxlcyBkdmktdGFyZ2V0LWV4YW1wbGVzCi1tYXliZS1kdmktdGFyZ2V0LWV4YW1wbGVzOgotCi1kdmktdGFyZ2V0LWV4YW1wbGVzOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1leGFtcGxlcyAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtbGliZmZpIGR2aS10YXJnZXQtbGliZmZpCi1tYXliZS1kdmktdGFyZ2V0LWxpYmZmaToKLQotZHZpLXRhcmdldC1saWJmZmk6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmZmaSAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9saWJmZmkiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZmZpICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtbGliamF2YSBkdmktdGFyZ2V0LWxpYmphdmEKLW1heWJlLWR2aS10YXJnZXQtbGliamF2YToKLQotZHZpLXRhcmdldC1saWJqYXZhOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJqYXZhIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliamF2YS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9saWJqYXZhIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC16bGliIGR2aS10YXJnZXQtemxpYgotbWF5YmUtZHZpLXRhcmdldC16bGliOgotCi1kdmktdGFyZ2V0LXpsaWI6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LXpsaWIgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS96bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL3psaWIiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvemxpYiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGR2aSkgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kdmktdGFyZ2V0LWJvZWhtLWdjIGR2aS10YXJnZXQtYm9laG0tZ2MKLW1heWJlLWR2aS10YXJnZXQtYm9laG0tZ2M6Ci0KLWR2aS10YXJnZXQtYm9laG0tZ2M6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWJvZWhtLWdjIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgZHZpIGluICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkdmkpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC1xdGhyZWFkcyBkdmktdGFyZ2V0LXF0aHJlYWRzCi1tYXliZS1kdmktdGFyZ2V0LXF0aHJlYWRzOgotCi1kdmktdGFyZ2V0LXF0aHJlYWRzOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1xdGhyZWFkcyAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtcmRhIGR2aS10YXJnZXQtcmRhCi1tYXliZS1kdmktdGFyZ2V0LXJkYToKLQotZHZpLXRhcmdldC1yZGE6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LXJkYSAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3JkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9yZGEiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvcmRhICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtbGliYWRhIGR2aS10YXJnZXQtbGliYWRhCi1tYXliZS1kdmktdGFyZ2V0LWxpYmFkYToKLQotZHZpLXRhcmdldC1saWJhZGE6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmFkYSAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9saWJhZGEiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliYWRhICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZHZpKSBcCi0JICB8fCBleGl0IDEKLQotCi0KIC5QSE9OWTogZG8tVEFHUwogZG8tVEFHUzogVEFHUy1ob3N0IFRBR1MtdGFyZ2V0CiAKQEAgLTQ1OTcsMTgxNSArOTg1LDYgQEAKICAgICBtYXliZS1UQUdTLXRhcmdldC1yZGEgXAogICAgIG1heWJlLVRBR1MtdGFyZ2V0LWxpYmFkYQogCi0jIEdDQywgdGhlIGV0ZXJuYWwgc3BlY2lhbCBjYXNlCi0uUEhPTlk6IG1heWJlLVRBR1MtZ2NjIFRBR1MtZ2NjCi1tYXliZS1UQUdTLWdjYzoKLVRBR1MtZ2NjOiBcCi0gICAgY29uZmlndXJlLWdjYyAKLQlAWyAtZiAuL2djYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfR0NDX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBnY2MiIDsgXAotCShjZCBnY2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotIyBIb3N0IG1vZHVsZXMuCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1hc2ggVEFHUy1hc2gKLW1heWJlLVRBR1MtYXNoOgotCi1UQUdTLWFzaDogXAotICAgIGNvbmZpZ3VyZS1hc2ggCi0JQFsgLWYgLi9hc2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGFzaCIgOyBcCi0JKGNkIGFzaCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1hdXRvY29uZiBUQUdTLWF1dG9jb25mCi1tYXliZS1UQUdTLWF1dG9jb25mOgotCi1UQUdTLWF1dG9jb25mOiBcCi0gICAgY29uZmlndXJlLWF1dG9jb25mIAotCUBbIC1mIC4vYXV0b2NvbmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGF1dG9jb25mIiA7IFwKLQkoY2QgYXV0b2NvbmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtYXV0b21ha2UgVEFHUy1hdXRvbWFrZQotbWF5YmUtVEFHUy1hdXRvbWFrZToKLQotVEFHUy1hdXRvbWFrZTogXAotICAgIGNvbmZpZ3VyZS1hdXRvbWFrZSAKLQlAWyAtZiAuL2F1dG9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBhdXRvbWFrZSIgOyBcCi0JKGNkIGF1dG9tYWtlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLWJhc2ggVEFHUy1iYXNoCi1tYXliZS1UQUdTLWJhc2g6Ci0KLVRBR1MtYmFzaDogXAotICAgIGNvbmZpZ3VyZS1iYXNoIAotCUBbIC1mIC4vYmFzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gYmFzaCIgOyBcCi0JKGNkIGJhc2ggJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtYmZkIFRBR1MtYmZkCi1tYXliZS1UQUdTLWJmZDoKLQotVEFHUy1iZmQ6IFwKLSAgICBjb25maWd1cmUtYmZkIAotCUBbIC1mIC4vYmZkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBiZmQiIDsgXAotCShjZCBiZmQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1Mtb3Bjb2RlcyBUQUdTLW9wY29kZXMKLW1heWJlLVRBR1Mtb3Bjb2RlczoKLQotVEFHUy1vcGNvZGVzOiBcCi0gICAgY29uZmlndXJlLW9wY29kZXMgCi0JQFsgLWYgLi9vcGNvZGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBvcGNvZGVzIiA7IFwKLQkoY2Qgb3Bjb2RlcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1iaW51dGlscyBUQUdTLWJpbnV0aWxzCi1tYXliZS1UQUdTLWJpbnV0aWxzOgotCi1UQUdTLWJpbnV0aWxzOiBcCi0gICAgY29uZmlndXJlLWJpbnV0aWxzIAotCUBbIC1mIC4vYmludXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGJpbnV0aWxzIiA7IFwKLQkoY2QgYmludXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtYmlzb24gVEFHUy1iaXNvbgotbWF5YmUtVEFHUy1iaXNvbjoKLQotVEFHUy1iaXNvbjogXAotICAgIGNvbmZpZ3VyZS1iaXNvbiAKLQlAWyAtZiAuL2Jpc29uL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBiaXNvbiIgOyBcCi0JKGNkIGJpc29uICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLWJ5YWNjIFRBR1MtYnlhY2MKLW1heWJlLVRBR1MtYnlhY2M6Ci0KLVRBR1MtYnlhY2M6IFwKLSAgICBjb25maWd1cmUtYnlhY2MgCi0JQFsgLWYgLi9ieWFjYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gYnlhY2MiIDsgXAotCShjZCBieWFjYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1iemlwMiBUQUdTLWJ6aXAyCi1tYXliZS1UQUdTLWJ6aXAyOgotCi1UQUdTLWJ6aXAyOiBcCi0gICAgY29uZmlndXJlLWJ6aXAyIAotCUBbIC1mIC4vYnppcDIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGJ6aXAyIiA7IFwKLQkoY2QgYnppcDIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtZGVqYWdudSBUQUdTLWRlamFnbnUKLW1heWJlLVRBR1MtZGVqYWdudToKLQotVEFHUy1kZWphZ251OiBcCi0gICAgY29uZmlndXJlLWRlamFnbnUgCi0JQFsgLWYgLi9kZWphZ251L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBkZWphZ251IiA7IFwKLQkoY2QgZGVqYWdudSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1kaWZmIFRBR1MtZGlmZgotbWF5YmUtVEFHUy1kaWZmOgotCi1UQUdTLWRpZmY6IFwKLSAgICBjb25maWd1cmUtZGlmZiAKLQlAWyAtZiAuL2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGRpZmYiIDsgXAotCShjZCBkaWZmICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLWRvc3V0aWxzIFRBR1MtZG9zdXRpbHMKLW1heWJlLVRBR1MtZG9zdXRpbHM6Ci0KLVRBR1MtZG9zdXRpbHM6IFwKLSAgICBjb25maWd1cmUtZG9zdXRpbHMgCi0JQFsgLWYgLi9kb3N1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gZG9zdXRpbHMiIDsgXAotCShjZCBkb3N1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1ldGMgVEFHUy1ldGMKLW1heWJlLVRBR1MtZXRjOgotCi1UQUdTLWV0YzogXAotICAgIGNvbmZpZ3VyZS1ldGMgCi0JQFsgLWYgLi9ldGMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGV0YyIgOyBcCi0JKGNkIGV0YyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1mYXN0amFyIFRBR1MtZmFzdGphcgotbWF5YmUtVEFHUy1mYXN0amFyOgotCi1UQUdTLWZhc3RqYXI6IFwKLSAgICBjb25maWd1cmUtZmFzdGphciAKLQlAWyAtZiAuL2Zhc3RqYXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGZhc3RqYXIiIDsgXAotCShjZCBmYXN0amFyICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLWZpbGV1dGlscyBUQUdTLWZpbGV1dGlscwotbWF5YmUtVEFHUy1maWxldXRpbHM6Ci0KLVRBR1MtZmlsZXV0aWxzOiBcCi0gICAgY29uZmlndXJlLWZpbGV1dGlscyAKLQlAWyAtZiAuL2ZpbGV1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gZmlsZXV0aWxzIiA7IFwKLQkoY2QgZmlsZXV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLWZpbmR1dGlscyBUQUdTLWZpbmR1dGlscwotbWF5YmUtVEFHUy1maW5kdXRpbHM6Ci0KLVRBR1MtZmluZHV0aWxzOiBcCi0gICAgY29uZmlndXJlLWZpbmR1dGlscyAKLQlAWyAtZiAuL2ZpbmR1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gZmluZHV0aWxzIiA7IFwKLQkoY2QgZmluZHV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLWZpbmQgVEFHUy1maW5kCi1tYXliZS1UQUdTLWZpbmQ6Ci0KLVRBR1MtZmluZDogXAotICAgIGNvbmZpZ3VyZS1maW5kIAotCUBbIC1mIC4vZmluZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gZmluZCIgOyBcCi0JKGNkIGZpbmQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtZmxleCBUQUdTLWZsZXgKLW1heWJlLVRBR1MtZmxleDoKLQotVEFHUy1mbGV4OiBcCi0gICAgY29uZmlndXJlLWZsZXggCi0JQFsgLWYgLi9mbGV4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBmbGV4IiA7IFwKLQkoY2QgZmxleCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1nYXMgVEFHUy1nYXMKLW1heWJlLVRBR1MtZ2FzOgotCi1UQUdTLWdhczogXAotICAgIGNvbmZpZ3VyZS1nYXMgCi0JQFsgLWYgLi9nYXMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGdhcyIgOyBcCi0JKGNkIGdhcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1nYXdrIFRBR1MtZ2F3awotbWF5YmUtVEFHUy1nYXdrOgotCi1UQUdTLWdhd2s6IFwKLSAgICBjb25maWd1cmUtZ2F3ayAKLQlAWyAtZiAuL2dhd2svTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGdhd2siIDsgXAotCShjZCBnYXdrICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLWdldHRleHQgVEFHUy1nZXR0ZXh0Ci1tYXliZS1UQUdTLWdldHRleHQ6Ci0KLVRBR1MtZ2V0dGV4dDogXAotICAgIGNvbmZpZ3VyZS1nZXR0ZXh0IAotCUBbIC1mIC4vZ2V0dGV4dC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gZ2V0dGV4dCIgOyBcCi0JKGNkIGdldHRleHQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtZ251c2VydiBUQUdTLWdudXNlcnYKLW1heWJlLVRBR1MtZ251c2VydjoKLQotVEFHUy1nbnVzZXJ2OiBcCi0gICAgY29uZmlndXJlLWdudXNlcnYgCi0JQFsgLWYgLi9nbnVzZXJ2L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBnbnVzZXJ2IiA7IFwKLQkoY2QgZ251c2VydiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1ncHJvZiBUQUdTLWdwcm9mCi1tYXliZS1UQUdTLWdwcm9mOgotCi1UQUdTLWdwcm9mOiBcCi0gICAgY29uZmlndXJlLWdwcm9mIAotCUBbIC1mIC4vZ3Byb2YvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGdwcm9mIiA7IFwKLQkoY2QgZ3Byb2YgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtZ3ppcCBUQUdTLWd6aXAKLW1heWJlLVRBR1MtZ3ppcDoKLQotVEFHUy1nemlwOiBcCi0gICAgY29uZmlndXJlLWd6aXAgCi0JQFsgLWYgLi9nemlwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBnemlwIiA7IFwKLQkoY2QgZ3ppcCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1oZWxsbyBUQUdTLWhlbGxvCi1tYXliZS1UQUdTLWhlbGxvOgotCi1UQUdTLWhlbGxvOiBcCi0gICAgY29uZmlndXJlLWhlbGxvIAotCUBbIC1mIC4vaGVsbG8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGhlbGxvIiA7IFwKLQkoY2QgaGVsbG8gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtaW5kZW50IFRBR1MtaW5kZW50Ci1tYXliZS1UQUdTLWluZGVudDoKLQotVEFHUy1pbmRlbnQ6IFwKLSAgICBjb25maWd1cmUtaW5kZW50IAotCUBbIC1mIC4vaW5kZW50L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBpbmRlbnQiIDsgXAotCShjZCBpbmRlbnQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtaW50bCBUQUdTLWludGwKLW1heWJlLVRBR1MtaW50bDoKLQotVEFHUy1pbnRsOiBcCi0gICAgY29uZmlndXJlLWludGwgCi0JQFsgLWYgLi9pbnRsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBpbnRsIiA7IFwKLQkoY2QgaW50bCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy10Y2wgVEFHUy10Y2wKLW1heWJlLVRBR1MtdGNsOgotCi1UQUdTLXRjbDogXAotICAgIGNvbmZpZ3VyZS10Y2wgCi0JQFsgLWYgLi90Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIHRjbCIgOyBcCi0JKGNkIHRjbCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1pdGNsIFRBR1MtaXRjbAotbWF5YmUtVEFHUy1pdGNsOgotCi1UQUdTLWl0Y2w6IFwKLSAgICBjb25maWd1cmUtaXRjbCAKLQlAWyAtZiAuL2l0Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGl0Y2wiIDsgXAotCShjZCBpdGNsICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLWxkIFRBR1MtbGQKLW1heWJlLVRBR1MtbGQ6Ci0KLVRBR1MtbGQ6IFwKLSAgICBjb25maWd1cmUtbGQgCi0JQFsgLWYgLi9sZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gbGQiIDsgXAotCShjZCBsZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1saWJndWkgVEFHUy1saWJndWkKLW1heWJlLVRBR1MtbGliZ3VpOgotCi1UQUdTLWxpYmd1aTogXAotICAgIGNvbmZpZ3VyZS1saWJndWkgCi0JQFsgLWYgLi9saWJndWkvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGxpYmd1aSIgOyBcCi0JKGNkIGxpYmd1aSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1saWJpYmVydHkgVEFHUy1saWJpYmVydHkKLW1heWJlLVRBR1MtbGliaWJlcnR5OgotCi1UQUdTLWxpYmliZXJ0eTogXAotICAgIGNvbmZpZ3VyZS1saWJpYmVydHkgCi0JQFsgLWYgLi9saWJpYmVydHkvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGxpYmliZXJ0eSIgOyBcCi0JKGNkIGxpYmliZXJ0eSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1saWJ0b29sIFRBR1MtbGlidG9vbAotbWF5YmUtVEFHUy1saWJ0b29sOgotCi1UQUdTLWxpYnRvb2w6IFwKLSAgICBjb25maWd1cmUtbGlidG9vbCAKLQlAWyAtZiAuL2xpYnRvb2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGxpYnRvb2wiIDsgXAotCShjZCBsaWJ0b29sICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLW00IFRBR1MtbTQKLW1heWJlLVRBR1MtbTQ6Ci0KLVRBR1MtbTQ6IFwKLSAgICBjb25maWd1cmUtbTQgCi0JQFsgLWYgLi9tNC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gbTQiIDsgXAotCShjZCBtNCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1tYWtlIFRBR1MtbWFrZQotbWF5YmUtVEFHUy1tYWtlOgotCi1UQUdTLW1ha2U6IFwKLSAgICBjb25maWd1cmUtbWFrZSAKLQlAWyAtZiAuL21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIG1ha2UiIDsgXAotCShjZCBtYWtlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLW1tYWxsb2MgVEFHUy1tbWFsbG9jCi1tYXliZS1UQUdTLW1tYWxsb2M6Ci0KLVRBR1MtbW1hbGxvYzogXAotICAgIGNvbmZpZ3VyZS1tbWFsbG9jIAotCUBbIC1mIC4vbW1hbGxvYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gbW1hbGxvYyIgOyBcCi0JKGNkIG1tYWxsb2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtcGF0Y2ggVEFHUy1wYXRjaAotbWF5YmUtVEFHUy1wYXRjaDoKLQotVEFHUy1wYXRjaDogXAotICAgIGNvbmZpZ3VyZS1wYXRjaCAKLQlAWyAtZiAuL3BhdGNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBwYXRjaCIgOyBcCi0JKGNkIHBhdGNoICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLXBlcmwgVEFHUy1wZXJsCi1tYXliZS1UQUdTLXBlcmw6Ci0KLVRBR1MtcGVybDogXAotICAgIGNvbmZpZ3VyZS1wZXJsIAotCUBbIC1mIC4vcGVybC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gcGVybCIgOyBcCi0JKGNkIHBlcmwgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtcHJtcyBUQUdTLXBybXMKLW1heWJlLVRBR1MtcHJtczoKLQotVEFHUy1wcm1zOiBcCi0gICAgY29uZmlndXJlLXBybXMgCi0JQFsgLWYgLi9wcm1zL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBwcm1zIiA7IFwKLQkoY2QgcHJtcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1yY3MgVEFHUy1yY3MKLW1heWJlLVRBR1MtcmNzOgotCi1UQUdTLXJjczogXAotICAgIGNvbmZpZ3VyZS1yY3MgCi0JQFsgLWYgLi9yY3MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIHJjcyIgOyBcCi0JKGNkIHJjcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1yZWFkbGluZSBUQUdTLXJlYWRsaW5lCi1tYXliZS1UQUdTLXJlYWRsaW5lOgotCi1UQUdTLXJlYWRsaW5lOiBcCi0gICAgY29uZmlndXJlLXJlYWRsaW5lIAotCUBbIC1mIC4vcmVhZGxpbmUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIHJlYWRsaW5lIiA7IFwKLQkoY2QgcmVhZGxpbmUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtcmVsZWFzZSBUQUdTLXJlbGVhc2UKLW1heWJlLVRBR1MtcmVsZWFzZToKLQotVEFHUy1yZWxlYXNlOiBcCi0gICAgY29uZmlndXJlLXJlbGVhc2UgCi0JQFsgLWYgLi9yZWxlYXNlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiByZWxlYXNlIiA7IFwKLQkoY2QgcmVsZWFzZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1yZWNvZGUgVEFHUy1yZWNvZGUKLW1heWJlLVRBR1MtcmVjb2RlOgotCi1UQUdTLXJlY29kZTogXAotICAgIGNvbmZpZ3VyZS1yZWNvZGUgCi0JQFsgLWYgLi9yZWNvZGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIHJlY29kZSIgOyBcCi0JKGNkIHJlY29kZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1zZWQgVEFHUy1zZWQKLW1heWJlLVRBR1Mtc2VkOgotCi1UQUdTLXNlZDogXAotICAgIGNvbmZpZ3VyZS1zZWQgCi0JQFsgLWYgLi9zZWQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIHNlZCIgOyBcCi0JKGNkIHNlZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1zZW5kLXByIFRBR1Mtc2VuZC1wcgotbWF5YmUtVEFHUy1zZW5kLXByOgotCi1UQUdTLXNlbmQtcHI6IFwKLSAgICBjb25maWd1cmUtc2VuZC1wciAKLQlAWyAtZiAuL3NlbmQtcHIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIHNlbmQtcHIiIDsgXAotCShjZCBzZW5kLXByICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLXNoZWxsdXRpbHMgVEFHUy1zaGVsbHV0aWxzCi1tYXliZS1UQUdTLXNoZWxsdXRpbHM6Ci0KLVRBR1Mtc2hlbGx1dGlsczogXAotICAgIGNvbmZpZ3VyZS1zaGVsbHV0aWxzIAotCUBbIC1mIC4vc2hlbGx1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gc2hlbGx1dGlscyIgOyBcCi0JKGNkIHNoZWxsdXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1Mtc2lkIFRBR1Mtc2lkCi1tYXliZS1UQUdTLXNpZDoKLQotVEFHUy1zaWQ6IFwKLSAgICBjb25maWd1cmUtc2lkIAotCUBbIC1mIC4vc2lkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBzaWQiIDsgXAotCShjZCBzaWQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1Mtc2ltIFRBR1Mtc2ltCi1tYXliZS1UQUdTLXNpbToKLQotVEFHUy1zaW06IFwKLSAgICBjb25maWd1cmUtc2ltIAotCUBbIC1mIC4vc2ltL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiBzaW0iIDsgXAotCShjZCBzaW0gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtdGFyIFRBR1MtdGFyCi1tYXliZS1UQUdTLXRhcjoKLQotVEFHUy10YXI6IFwKLSAgICBjb25maWd1cmUtdGFyIAotCUBbIC1mIC4vdGFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiB0YXIiIDsgXAotCShjZCB0YXIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtdGV4aW5mbyBUQUdTLXRleGluZm8KLW1heWJlLVRBR1MtdGV4aW5mbzoKLQotVEFHUy10ZXhpbmZvOiBcCi0gICAgY29uZmlndXJlLXRleGluZm8gCi0JQFsgLWYgLi90ZXhpbmZvL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiB0ZXhpbmZvIiA7IFwKLQkoY2QgdGV4aW5mbyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy10ZXh0dXRpbHMgVEFHUy10ZXh0dXRpbHMKLW1heWJlLVRBR1MtdGV4dHV0aWxzOgotCi1UQUdTLXRleHR1dGlsczogXAotICAgIGNvbmZpZ3VyZS10ZXh0dXRpbHMgCi0JQFsgLWYgLi90ZXh0dXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIHRleHR1dGlscyIgOyBcCi0JKGNkIHRleHR1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy10aW1lIFRBR1MtdGltZQotbWF5YmUtVEFHUy10aW1lOgotCi1UQUdTLXRpbWU6IFwKLSAgICBjb25maWd1cmUtdGltZSAKLQlAWyAtZiAuL3RpbWUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIHRpbWUiIDsgXAotCShjZCB0aW1lICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLXV1ZGVjb2RlIFRBR1MtdXVkZWNvZGUKLW1heWJlLVRBR1MtdXVkZWNvZGU6Ci0KLVRBR1MtdXVkZWNvZGU6IFwKLSAgICBjb25maWd1cmUtdXVkZWNvZGUgCi0JQFsgLWYgLi91dWRlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gdXVkZWNvZGUiIDsgXAotCShjZCB1dWRlY29kZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy13ZGlmZiBUQUdTLXdkaWZmCi1tYXliZS1UQUdTLXdkaWZmOgotCi1UQUdTLXdkaWZmOiBcCi0gICAgY29uZmlndXJlLXdkaWZmIAotCUBbIC1mIC4vd2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIHdkaWZmIiA7IFwKLQkoY2Qgd2RpZmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtemlwIFRBR1MtemlwCi1tYXliZS1UQUdTLXppcDoKLQotVEFHUy16aXA6IFwKLSAgICBjb25maWd1cmUtemlwIAotCUBbIC1mIC4vemlwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiB6aXAiIDsgXAotCShjZCB6aXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtemxpYiBUQUdTLXpsaWIKLW1heWJlLVRBR1MtemxpYjoKLQotVEFHUy16bGliOiBcCi0gICAgY29uZmlndXJlLXpsaWIgCi0JQFsgLWYgLi96bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiB6bGliIiA7IFwKLQkoY2QgemxpYiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1nZGIgVEFHUy1nZGIKLW1heWJlLVRBR1MtZ2RiOgotCi1UQUdTLWdkYjogXAotICAgIGNvbmZpZ3VyZS1nZGIgCi0JQFsgLWYgLi9nZGIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGdkYiIgOyBcCi0JKGNkIGdkYiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1leHBlY3QgVEFHUy1leHBlY3QKLW1heWJlLVRBR1MtZXhwZWN0OgotCi1UQUdTLWV4cGVjdDogXAotICAgIGNvbmZpZ3VyZS1leHBlY3QgCi0JQFsgLWYgLi9leHBlY3QvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGV4cGVjdCIgOyBcCi0JKGNkIGV4cGVjdCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy1ndWlsZSBUQUdTLWd1aWxlCi1tYXliZS1UQUdTLWd1aWxlOgotCi1UQUdTLWd1aWxlOiBcCi0gICAgY29uZmlndXJlLWd1aWxlIAotCUBbIC1mIC4vZ3VpbGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBUQUdTIGluIGd1aWxlIiA7IFwKLQkoY2QgZ3VpbGUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtdGsgVEFHUy10awotbWF5YmUtVEFHUy10azoKLQotVEFHUy10azogXAotICAgIGNvbmZpZ3VyZS10ayAKLQlAWyAtZiAuL3RrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiB0ayIgOyBcCi0JKGNkIHRrICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLXRpeCBUQUdTLXRpeAotbWF5YmUtVEFHUy10aXg6Ci0KLVRBR1MtdGl4OiBcCi0gICAgY29uZmlndXJlLXRpeCAKLQlAWyAtZiAuL3RpeC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gdGl4IiA7IFwKLQkoY2QgdGl4ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLWxpYnRlcm1jYXAgVEFHUy1saWJ0ZXJtY2FwCi1tYXliZS1UQUdTLWxpYnRlcm1jYXA6Ci0KLVRBR1MtbGlidGVybWNhcDogXAotICAgIGNvbmZpZ3VyZS1saWJ0ZXJtY2FwIAotCUBbIC1mIC4vbGlidGVybWNhcC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gbGlidGVybWNhcCIgOyBcCi0JKGNkIGxpYnRlcm1jYXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtdXRpbHMgVEFHUy11dGlscwotbWF5YmUtVEFHUy11dGlsczoKLQotVEFHUy11dGlsczogXAotICAgIGNvbmZpZ3VyZS11dGlscyAKLQlAWyAtZiAuL3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiB1dGlscyIgOyBcCi0JKGNkIHV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotCi0jIFRhcmdldCBtb2R1bGVzLgotCi0uUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LWxpYnN0ZGMrKy12MyBUQUdTLXRhcmdldC1saWJzdGRjKystdjMKLW1heWJlLVRBR1MtdGFyZ2V0LWxpYnN0ZGMrKy12MzoKLQotVEFHUy10YXJnZXQtbGlic3RkYysrLXYzOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJzdGRjKystdjMgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LW5ld2xpYiBUQUdTLXRhcmdldC1uZXdsaWIKLW1heWJlLVRBR1MtdGFyZ2V0LW5ld2xpYjoKLQotVEFHUy10YXJnZXQtbmV3bGliOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1uZXdsaWIgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9uZXdsaWIvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL25ld2xpYiIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9uZXdsaWIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LWxpYmYyYyBUQUdTLXRhcmdldC1saWJmMmMKLW1heWJlLVRBR1MtdGFyZ2V0LWxpYmYyYzoKLQotVEFHUy10YXJnZXQtbGliZjJjOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJmMmMgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJmMmMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmMmMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LWxpYm9iamMgVEFHUy10YXJnZXQtbGlib2JqYwotbWF5YmUtVEFHUy10YXJnZXQtbGlib2JqYzoKLQotVEFHUy10YXJnZXQtbGlib2JqYzogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlib2JqYyAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy10YXJnZXQtbGlidGVybWNhcCBUQUdTLXRhcmdldC1saWJ0ZXJtY2FwCi1tYXliZS1UQUdTLXRhcmdldC1saWJ0ZXJtY2FwOgotCi1UQUdTLXRhcmdldC1saWJ0ZXJtY2FwOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJ0ZXJtY2FwIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlidGVybWNhcC9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBUQUdTIGluICQoVEFSR0VUX1NVQkRJUikvbGlidGVybWNhcCIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJ0ZXJtY2FwICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLXRhcmdldC13aW5zdXAgVEFHUy10YXJnZXQtd2luc3VwCi1tYXliZS1UQUdTLXRhcmdldC13aW5zdXA6Ci0KLVRBR1MtdGFyZ2V0LXdpbnN1cDogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtd2luc3VwIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvd2luc3VwL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gJChUQVJHRVRfU1VCRElSKS93aW5zdXAiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvd2luc3VwICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLXRhcmdldC1saWJnbG9zcyBUQUdTLXRhcmdldC1saWJnbG9zcwotbWF5YmUtVEFHUy10YXJnZXQtbGliZ2xvc3M6Ci0KLVRBR1MtdGFyZ2V0LWxpYmdsb3NzOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJnbG9zcyAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy10YXJnZXQtbGliaWJlcnR5IFRBR1MtdGFyZ2V0LWxpYmliZXJ0eQotbWF5YmUtVEFHUy10YXJnZXQtbGliaWJlcnR5OgotCi1UQUdTLXRhcmdldC1saWJpYmVydHk6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmliZXJ0eSAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBUQUdTIGluICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5IiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy10YXJnZXQtZ3BlcmYgVEFHUy10YXJnZXQtZ3BlcmYKLW1heWJlLVRBR1MtdGFyZ2V0LWdwZXJmOgotCi1UQUdTLXRhcmdldC1ncGVyZjogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtZ3BlcmYgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ncGVyZi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBUQUdTIGluICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LWV4YW1wbGVzIFRBR1MtdGFyZ2V0LWV4YW1wbGVzCi1tYXliZS1UQUdTLXRhcmdldC1leGFtcGxlczoKLQotVEFHUy10YXJnZXQtZXhhbXBsZXM6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWV4YW1wbGVzIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLXRhcmdldC1saWJmZmkgVEFHUy10YXJnZXQtbGliZmZpCi1tYXliZS1UQUdTLXRhcmdldC1saWJmZmk6Ci0KLVRBR1MtdGFyZ2V0LWxpYmZmaTogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliZmZpIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZmZpL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gJChUQVJHRVRfU1VCRElSKS9saWJmZmkiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZmZpICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLXRhcmdldC1saWJqYXZhIFRBR1MtdGFyZ2V0LWxpYmphdmEKLW1heWJlLVRBR1MtdGFyZ2V0LWxpYmphdmE6Ci0KLVRBR1MtdGFyZ2V0LWxpYmphdmE6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmphdmEgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJqYXZhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gJChUQVJHRVRfU1VCRElSKS9saWJqYXZhIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LXpsaWIgVEFHUy10YXJnZXQtemxpYgotbWF5YmUtVEFHUy10YXJnZXQtemxpYjoKLQotVEFHUy10YXJnZXQtemxpYjogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtemxpYiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL3psaWIiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvemxpYiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFRBR1MpIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtVEFHUy10YXJnZXQtYm9laG0tZ2MgVEFHUy10YXJnZXQtYm9laG0tZ2MKLW1heWJlLVRBR1MtdGFyZ2V0LWJvZWhtLWdjOgotCi1UQUdTLXRhcmdldC1ib2VobS1nYzogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtYm9laG0tZ2MgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBUQUdTIGluICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBUQUdTKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LXF0aHJlYWRzIFRBR1MtdGFyZ2V0LXF0aHJlYWRzCi1tYXliZS1UQUdTLXRhcmdldC1xdGhyZWFkczoKLQotVEFHUy10YXJnZXQtcXRocmVhZHM6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LXF0aHJlYWRzIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLXRhcmdldC1yZGEgVEFHUy10YXJnZXQtcmRhCi1tYXliZS1UQUdTLXRhcmdldC1yZGE6Ci0KLVRBR1MtdGFyZ2V0LXJkYTogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtcmRhIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcmRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gJChUQVJHRVRfU1VCRElSKS9yZGEiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvcmRhICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1UQUdTLXRhcmdldC1saWJhZGEgVEFHUy10YXJnZXQtbGliYWRhCi1tYXliZS1UQUdTLXRhcmdldC1saWJhZGE6Ci0KLVRBR1MtdGFyZ2V0LWxpYmFkYTogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliYWRhIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliYWRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIFRBR1MgaW4gJChUQVJHRVRfU1VCRElSKS9saWJhZGEiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliYWRhICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgVEFHUykgXAotCSAgfHwgZXhpdCAxCi0KLQotCiAuUEhPTlk6IGRvLWluc3RhbGwtaW5mbwogZG8taW5zdGFsbC1pbmZvOiBpbnN0YWxsLWluZm8taG9zdCBpbnN0YWxsLWluZm8tdGFyZ2V0CiAKQEAgLTY0OTYsMTg5NyArMTA3NSw2IEBACiAgICAgbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1yZGEgXAogICAgIG1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtbGliYWRhCiAKLSMgR0NDLCB0aGUgZXRlcm5hbCBzcGVjaWFsIGNhc2UKLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWdjYyBpbnN0YWxsLWluZm8tZ2NjCi1tYXliZS1pbnN0YWxsLWluZm8tZ2NjOgotaW5zdGFsbC1pbmZvLWdjYzogXAotICAgIGNvbmZpZ3VyZS1nY2MgXAotICAgIGluZm8tZ2NjIAotCUBbIC1mIC4vZ2NjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9HQ0NfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gZ2NjIiA7IFwKLQkoY2QgZ2NjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotIyBIb3N0IG1vZHVsZXMuCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWFzaCBpbnN0YWxsLWluZm8tYXNoCi1tYXliZS1pbnN0YWxsLWluZm8tYXNoOgotCi1pbnN0YWxsLWluZm8tYXNoOiBcCi0gICAgY29uZmlndXJlLWFzaCBcCi0gICAgaW5mby1hc2ggCi0JQFsgLWYgLi9hc2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gYXNoIiA7IFwKLQkoY2QgYXNoICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1hdXRvY29uZiBpbnN0YWxsLWluZm8tYXV0b2NvbmYKLW1heWJlLWluc3RhbGwtaW5mby1hdXRvY29uZjoKLQotaW5zdGFsbC1pbmZvLWF1dG9jb25mOiBcCi0gICAgY29uZmlndXJlLWF1dG9jb25mIFwKLSAgICBpbmZvLWF1dG9jb25mIAotCUBbIC1mIC4vYXV0b2NvbmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gYXV0b2NvbmYiIDsgXAotCShjZCBhdXRvY29uZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tYXV0b21ha2UgaW5zdGFsbC1pbmZvLWF1dG9tYWtlCi1tYXliZS1pbnN0YWxsLWluZm8tYXV0b21ha2U6Ci0KLWluc3RhbGwtaW5mby1hdXRvbWFrZTogXAotICAgIGNvbmZpZ3VyZS1hdXRvbWFrZSBcCi0gICAgaW5mby1hdXRvbWFrZSAKLQlAWyAtZiAuL2F1dG9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGF1dG9tYWtlIiA7IFwKLQkoY2QgYXV0b21ha2UgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWJhc2ggaW5zdGFsbC1pbmZvLWJhc2gKLW1heWJlLWluc3RhbGwtaW5mby1iYXNoOgotCi1pbnN0YWxsLWluZm8tYmFzaDogXAotICAgIGNvbmZpZ3VyZS1iYXNoIFwKLSAgICBpbmZvLWJhc2ggCi0JQFsgLWYgLi9iYXNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGJhc2giIDsgXAotCShjZCBiYXNoICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1iZmQgaW5zdGFsbC1pbmZvLWJmZAotbWF5YmUtaW5zdGFsbC1pbmZvLWJmZDoKLQotaW5zdGFsbC1pbmZvLWJmZDogXAotICAgIGNvbmZpZ3VyZS1iZmQgXAotICAgIGluZm8tYmZkIAotCUBbIC1mIC4vYmZkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGJmZCIgOyBcCi0JKGNkIGJmZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tb3Bjb2RlcyBpbnN0YWxsLWluZm8tb3Bjb2RlcwotbWF5YmUtaW5zdGFsbC1pbmZvLW9wY29kZXM6Ci0KLWluc3RhbGwtaW5mby1vcGNvZGVzOiBcCi0gICAgY29uZmlndXJlLW9wY29kZXMgXAotICAgIGluZm8tb3Bjb2RlcyAKLQlAWyAtZiAuL29wY29kZXMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gb3Bjb2RlcyIgOyBcCi0JKGNkIG9wY29kZXMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWJpbnV0aWxzIGluc3RhbGwtaW5mby1iaW51dGlscwotbWF5YmUtaW5zdGFsbC1pbmZvLWJpbnV0aWxzOgotCi1pbnN0YWxsLWluZm8tYmludXRpbHM6IFwKLSAgICBjb25maWd1cmUtYmludXRpbHMgXAotICAgIGluZm8tYmludXRpbHMgCi0JQFsgLWYgLi9iaW51dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBiaW51dGlscyIgOyBcCi0JKGNkIGJpbnV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1iaXNvbiBpbnN0YWxsLWluZm8tYmlzb24KLW1heWJlLWluc3RhbGwtaW5mby1iaXNvbjoKLQotaW5zdGFsbC1pbmZvLWJpc29uOiBcCi0gICAgY29uZmlndXJlLWJpc29uIFwKLSAgICBpbmZvLWJpc29uIAotCUBbIC1mIC4vYmlzb24vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gYmlzb24iIDsgXAotCShjZCBiaXNvbiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tYnlhY2MgaW5zdGFsbC1pbmZvLWJ5YWNjCi1tYXliZS1pbnN0YWxsLWluZm8tYnlhY2M6Ci0KLWluc3RhbGwtaW5mby1ieWFjYzogXAotICAgIGNvbmZpZ3VyZS1ieWFjYyBcCi0gICAgaW5mby1ieWFjYyAKLQlAWyAtZiAuL2J5YWNjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGJ5YWNjIiA7IFwKLQkoY2QgYnlhY2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWJ6aXAyIGluc3RhbGwtaW5mby1iemlwMgotbWF5YmUtaW5zdGFsbC1pbmZvLWJ6aXAyOgotCi1pbnN0YWxsLWluZm8tYnppcDI6IFwKLSAgICBjb25maWd1cmUtYnppcDIgXAotICAgIGluZm8tYnppcDIgCi0JQFsgLWYgLi9iemlwMi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBiemlwMiIgOyBcCi0JKGNkIGJ6aXAyICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1kZWphZ251IGluc3RhbGwtaW5mby1kZWphZ251Ci1tYXliZS1pbnN0YWxsLWluZm8tZGVqYWdudToKLQotaW5zdGFsbC1pbmZvLWRlamFnbnU6IFwKLSAgICBjb25maWd1cmUtZGVqYWdudSBcCi0gICAgaW5mby1kZWphZ251IAotCUBbIC1mIC4vZGVqYWdudS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBkZWphZ251IiA7IFwKLQkoY2QgZGVqYWdudSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZGlmZiBpbnN0YWxsLWluZm8tZGlmZgotbWF5YmUtaW5zdGFsbC1pbmZvLWRpZmY6Ci0KLWluc3RhbGwtaW5mby1kaWZmOiBcCi0gICAgY29uZmlndXJlLWRpZmYgXAotICAgIGluZm8tZGlmZiAKLQlAWyAtZiAuL2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gZGlmZiIgOyBcCi0JKGNkIGRpZmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWRvc3V0aWxzIGluc3RhbGwtaW5mby1kb3N1dGlscwotbWF5YmUtaW5zdGFsbC1pbmZvLWRvc3V0aWxzOgotCi1pbnN0YWxsLWluZm8tZG9zdXRpbHM6IFwKLSAgICBjb25maWd1cmUtZG9zdXRpbHMgXAotICAgIGluZm8tZG9zdXRpbHMgCi0JQFsgLWYgLi9kb3N1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBkb3N1dGlscyIgOyBcCi0JKGNkIGRvc3V0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1ldGMgaW5zdGFsbC1pbmZvLWV0YwotbWF5YmUtaW5zdGFsbC1pbmZvLWV0YzoKLQotaW5zdGFsbC1pbmZvLWV0YzogXAotICAgIGNvbmZpZ3VyZS1ldGMgXAotICAgIGluZm8tZXRjIAotCUBbIC1mIC4vZXRjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGV0YyIgOyBcCi0JKGNkIGV0YyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZmFzdGphciBpbnN0YWxsLWluZm8tZmFzdGphcgotbWF5YmUtaW5zdGFsbC1pbmZvLWZhc3RqYXI6Ci0KLWluc3RhbGwtaW5mby1mYXN0amFyOiBcCi0gICAgY29uZmlndXJlLWZhc3RqYXIgXAotICAgIGluZm8tZmFzdGphciAKLQlAWyAtZiAuL2Zhc3RqYXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gZmFzdGphciIgOyBcCi0JKGNkIGZhc3RqYXIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWZpbGV1dGlscyBpbnN0YWxsLWluZm8tZmlsZXV0aWxzCi1tYXliZS1pbnN0YWxsLWluZm8tZmlsZXV0aWxzOgotCi1pbnN0YWxsLWluZm8tZmlsZXV0aWxzOiBcCi0gICAgY29uZmlndXJlLWZpbGV1dGlscyBcCi0gICAgaW5mby1maWxldXRpbHMgCi0JQFsgLWYgLi9maWxldXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gZmlsZXV0aWxzIiA7IFwKLQkoY2QgZmlsZXV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1maW5kdXRpbHMgaW5zdGFsbC1pbmZvLWZpbmR1dGlscwotbWF5YmUtaW5zdGFsbC1pbmZvLWZpbmR1dGlsczoKLQotaW5zdGFsbC1pbmZvLWZpbmR1dGlsczogXAotICAgIGNvbmZpZ3VyZS1maW5kdXRpbHMgXAotICAgIGluZm8tZmluZHV0aWxzIAotCUBbIC1mIC4vZmluZHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGZpbmR1dGlscyIgOyBcCi0JKGNkIGZpbmR1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZmluZCBpbnN0YWxsLWluZm8tZmluZAotbWF5YmUtaW5zdGFsbC1pbmZvLWZpbmQ6Ci0KLWluc3RhbGwtaW5mby1maW5kOiBcCi0gICAgY29uZmlndXJlLWZpbmQgXAotICAgIGluZm8tZmluZCAKLQlAWyAtZiAuL2ZpbmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gZmluZCIgOyBcCi0JKGNkIGZpbmQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWZsZXggaW5zdGFsbC1pbmZvLWZsZXgKLW1heWJlLWluc3RhbGwtaW5mby1mbGV4OgotCi1pbnN0YWxsLWluZm8tZmxleDogXAotICAgIGNvbmZpZ3VyZS1mbGV4IFwKLSAgICBpbmZvLWZsZXggCi0JQFsgLWYgLi9mbGV4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGZsZXgiIDsgXAotCShjZCBmbGV4ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1nYXMgaW5zdGFsbC1pbmZvLWdhcwotbWF5YmUtaW5zdGFsbC1pbmZvLWdhczoKLQotaW5zdGFsbC1pbmZvLWdhczogXAotICAgIGNvbmZpZ3VyZS1nYXMgXAotICAgIGluZm8tZ2FzIAotCUBbIC1mIC4vZ2FzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGdhcyIgOyBcCi0JKGNkIGdhcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZ2F3ayBpbnN0YWxsLWluZm8tZ2F3awotbWF5YmUtaW5zdGFsbC1pbmZvLWdhd2s6Ci0KLWluc3RhbGwtaW5mby1nYXdrOiBcCi0gICAgY29uZmlndXJlLWdhd2sgXAotICAgIGluZm8tZ2F3ayAKLQlAWyAtZiAuL2dhd2svTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gZ2F3ayIgOyBcCi0JKGNkIGdhd2sgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWdldHRleHQgaW5zdGFsbC1pbmZvLWdldHRleHQKLW1heWJlLWluc3RhbGwtaW5mby1nZXR0ZXh0OgotCi1pbnN0YWxsLWluZm8tZ2V0dGV4dDogXAotICAgIGNvbmZpZ3VyZS1nZXR0ZXh0IFwKLSAgICBpbmZvLWdldHRleHQgCi0JQFsgLWYgLi9nZXR0ZXh0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGdldHRleHQiIDsgXAotCShjZCBnZXR0ZXh0ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1nbnVzZXJ2IGluc3RhbGwtaW5mby1nbnVzZXJ2Ci1tYXliZS1pbnN0YWxsLWluZm8tZ251c2VydjoKLQotaW5zdGFsbC1pbmZvLWdudXNlcnY6IFwKLSAgICBjb25maWd1cmUtZ251c2VydiBcCi0gICAgaW5mby1nbnVzZXJ2IAotCUBbIC1mIC4vZ251c2Vydi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBnbnVzZXJ2IiA7IFwKLQkoY2QgZ251c2VydiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZ3Byb2YgaW5zdGFsbC1pbmZvLWdwcm9mCi1tYXliZS1pbnN0YWxsLWluZm8tZ3Byb2Y6Ci0KLWluc3RhbGwtaW5mby1ncHJvZjogXAotICAgIGNvbmZpZ3VyZS1ncHJvZiBcCi0gICAgaW5mby1ncHJvZiAKLQlAWyAtZiAuL2dwcm9mL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGdwcm9mIiA7IFwKLQkoY2QgZ3Byb2YgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWd6aXAgaW5zdGFsbC1pbmZvLWd6aXAKLW1heWJlLWluc3RhbGwtaW5mby1nemlwOgotCi1pbnN0YWxsLWluZm8tZ3ppcDogXAotICAgIGNvbmZpZ3VyZS1nemlwIFwKLSAgICBpbmZvLWd6aXAgCi0JQFsgLWYgLi9nemlwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGd6aXAiIDsgXAotCShjZCBnemlwICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1oZWxsbyBpbnN0YWxsLWluZm8taGVsbG8KLW1heWJlLWluc3RhbGwtaW5mby1oZWxsbzoKLQotaW5zdGFsbC1pbmZvLWhlbGxvOiBcCi0gICAgY29uZmlndXJlLWhlbGxvIFwKLSAgICBpbmZvLWhlbGxvIAotCUBbIC1mIC4vaGVsbG8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gaGVsbG8iIDsgXAotCShjZCBoZWxsbyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8taW5kZW50IGluc3RhbGwtaW5mby1pbmRlbnQKLW1heWJlLWluc3RhbGwtaW5mby1pbmRlbnQ6Ci0KLWluc3RhbGwtaW5mby1pbmRlbnQ6IFwKLSAgICBjb25maWd1cmUtaW5kZW50IFwKLSAgICBpbmZvLWluZGVudCAKLQlAWyAtZiAuL2luZGVudC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBpbmRlbnQiIDsgXAotCShjZCBpbmRlbnQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWludGwgaW5zdGFsbC1pbmZvLWludGwKLW1heWJlLWluc3RhbGwtaW5mby1pbnRsOgotCi1pbnN0YWxsLWluZm8taW50bDogXAotICAgIGNvbmZpZ3VyZS1pbnRsIFwKLSAgICBpbmZvLWludGwgCi0JQFsgLWYgLi9pbnRsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGludGwiIDsgXAotCShjZCBpbnRsICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10Y2wgaW5zdGFsbC1pbmZvLXRjbAotbWF5YmUtaW5zdGFsbC1pbmZvLXRjbDoKLQotaW5zdGFsbC1pbmZvLXRjbDogXAotICAgIGNvbmZpZ3VyZS10Y2wgXAotICAgIGluZm8tdGNsIAotCUBbIC1mIC4vdGNsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHRjbCIgOyBcCi0JKGNkIHRjbCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8taXRjbCBpbnN0YWxsLWluZm8taXRjbAotbWF5YmUtaW5zdGFsbC1pbmZvLWl0Y2w6Ci0KLWluc3RhbGwtaW5mby1pdGNsOiBcCi0gICAgY29uZmlndXJlLWl0Y2wgXAotICAgIGluZm8taXRjbCAKLQlAWyAtZiAuL2l0Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gaXRjbCIgOyBcCi0JKGNkIGl0Y2wgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWxkIGluc3RhbGwtaW5mby1sZAotbWF5YmUtaW5zdGFsbC1pbmZvLWxkOgotCi1pbnN0YWxsLWluZm8tbGQ6IFwKLSAgICBjb25maWd1cmUtbGQgXAotICAgIGluZm8tbGQgCi0JQFsgLWYgLi9sZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBsZCIgOyBcCi0JKGNkIGxkICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1saWJndWkgaW5zdGFsbC1pbmZvLWxpYmd1aQotbWF5YmUtaW5zdGFsbC1pbmZvLWxpYmd1aToKLQotaW5zdGFsbC1pbmZvLWxpYmd1aTogXAotICAgIGNvbmZpZ3VyZS1saWJndWkgXAotICAgIGluZm8tbGliZ3VpIAotCUBbIC1mIC4vbGliZ3VpL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGxpYmd1aSIgOyBcCi0JKGNkIGxpYmd1aSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tbGliaWJlcnR5IGluc3RhbGwtaW5mby1saWJpYmVydHkKLW1heWJlLWluc3RhbGwtaW5mby1saWJpYmVydHk6Ci0KLWluc3RhbGwtaW5mby1saWJpYmVydHk6IFwKLSAgICBjb25maWd1cmUtbGliaWJlcnR5IFwKLSAgICBpbmZvLWxpYmliZXJ0eSAKLQlAWyAtZiAuL2xpYmliZXJ0eS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBsaWJpYmVydHkiIDsgXAotCShjZCBsaWJpYmVydHkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWxpYnRvb2wgaW5zdGFsbC1pbmZvLWxpYnRvb2wKLW1heWJlLWluc3RhbGwtaW5mby1saWJ0b29sOgotCi1pbnN0YWxsLWluZm8tbGlidG9vbDogXAotICAgIGNvbmZpZ3VyZS1saWJ0b29sIFwKLSAgICBpbmZvLWxpYnRvb2wgCi0JQFsgLWYgLi9saWJ0b29sL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGxpYnRvb2wiIDsgXAotCShjZCBsaWJ0b29sICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1tNCBpbnN0YWxsLWluZm8tbTQKLW1heWJlLWluc3RhbGwtaW5mby1tNDoKLQotaW5zdGFsbC1pbmZvLW00OiBcCi0gICAgY29uZmlndXJlLW00IFwKLSAgICBpbmZvLW00IAotCUBbIC1mIC4vbTQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gbTQiIDsgXAotCShjZCBtNCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tbWFrZSBpbnN0YWxsLWluZm8tbWFrZQotbWF5YmUtaW5zdGFsbC1pbmZvLW1ha2U6Ci0KLWluc3RhbGwtaW5mby1tYWtlOiBcCi0gICAgY29uZmlndXJlLW1ha2UgXAotICAgIGluZm8tbWFrZSAKLQlAWyAtZiAuL21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gbWFrZSIgOyBcCi0JKGNkIG1ha2UgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLW1tYWxsb2MgaW5zdGFsbC1pbmZvLW1tYWxsb2MKLW1heWJlLWluc3RhbGwtaW5mby1tbWFsbG9jOgotCi1pbnN0YWxsLWluZm8tbW1hbGxvYzogXAotICAgIGNvbmZpZ3VyZS1tbWFsbG9jIFwKLSAgICBpbmZvLW1tYWxsb2MgCi0JQFsgLWYgLi9tbWFsbG9jL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIG1tYWxsb2MiIDsgXAotCShjZCBtbWFsbG9jICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1wYXRjaCBpbnN0YWxsLWluZm8tcGF0Y2gKLW1heWJlLWluc3RhbGwtaW5mby1wYXRjaDoKLQotaW5zdGFsbC1pbmZvLXBhdGNoOiBcCi0gICAgY29uZmlndXJlLXBhdGNoIFwKLSAgICBpbmZvLXBhdGNoIAotCUBbIC1mIC4vcGF0Y2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gcGF0Y2giIDsgXAotCShjZCBwYXRjaCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tcGVybCBpbnN0YWxsLWluZm8tcGVybAotbWF5YmUtaW5zdGFsbC1pbmZvLXBlcmw6Ci0KLWluc3RhbGwtaW5mby1wZXJsOiBcCi0gICAgY29uZmlndXJlLXBlcmwgXAotICAgIGluZm8tcGVybCAKLQlAWyAtZiAuL3BlcmwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gcGVybCIgOyBcCi0JKGNkIHBlcmwgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXBybXMgaW5zdGFsbC1pbmZvLXBybXMKLW1heWJlLWluc3RhbGwtaW5mby1wcm1zOgotCi1pbnN0YWxsLWluZm8tcHJtczogXAotICAgIGNvbmZpZ3VyZS1wcm1zIFwKLSAgICBpbmZvLXBybXMgCi0JQFsgLWYgLi9wcm1zL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHBybXMiIDsgXAotCShjZCBwcm1zICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1yY3MgaW5zdGFsbC1pbmZvLXJjcwotbWF5YmUtaW5zdGFsbC1pbmZvLXJjczoKLQotaW5zdGFsbC1pbmZvLXJjczogXAotICAgIGNvbmZpZ3VyZS1yY3MgXAotICAgIGluZm8tcmNzIAotCUBbIC1mIC4vcmNzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHJjcyIgOyBcCi0JKGNkIHJjcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tcmVhZGxpbmUgaW5zdGFsbC1pbmZvLXJlYWRsaW5lCi1tYXliZS1pbnN0YWxsLWluZm8tcmVhZGxpbmU6Ci0KLWluc3RhbGwtaW5mby1yZWFkbGluZTogXAotICAgIGNvbmZpZ3VyZS1yZWFkbGluZSBcCi0gICAgaW5mby1yZWFkbGluZSAKLQlAWyAtZiAuL3JlYWRsaW5lL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHJlYWRsaW5lIiA7IFwKLQkoY2QgcmVhZGxpbmUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXJlbGVhc2UgaW5zdGFsbC1pbmZvLXJlbGVhc2UKLW1heWJlLWluc3RhbGwtaW5mby1yZWxlYXNlOgotCi1pbnN0YWxsLWluZm8tcmVsZWFzZTogXAotICAgIGNvbmZpZ3VyZS1yZWxlYXNlIFwKLSAgICBpbmZvLXJlbGVhc2UgCi0JQFsgLWYgLi9yZWxlYXNlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHJlbGVhc2UiIDsgXAotCShjZCByZWxlYXNlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1yZWNvZGUgaW5zdGFsbC1pbmZvLXJlY29kZQotbWF5YmUtaW5zdGFsbC1pbmZvLXJlY29kZToKLQotaW5zdGFsbC1pbmZvLXJlY29kZTogXAotICAgIGNvbmZpZ3VyZS1yZWNvZGUgXAotICAgIGluZm8tcmVjb2RlIAotCUBbIC1mIC4vcmVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHJlY29kZSIgOyBcCi0JKGNkIHJlY29kZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tc2VkIGluc3RhbGwtaW5mby1zZWQKLW1heWJlLWluc3RhbGwtaW5mby1zZWQ6Ci0KLWluc3RhbGwtaW5mby1zZWQ6IFwKLSAgICBjb25maWd1cmUtc2VkIFwKLSAgICBpbmZvLXNlZCAKLQlAWyAtZiAuL3NlZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBzZWQiIDsgXAotCShjZCBzZWQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXNlbmQtcHIgaW5zdGFsbC1pbmZvLXNlbmQtcHIKLW1heWJlLWluc3RhbGwtaW5mby1zZW5kLXByOgotCi1pbnN0YWxsLWluZm8tc2VuZC1wcjogXAotICAgIGNvbmZpZ3VyZS1zZW5kLXByIFwKLSAgICBpbmZvLXNlbmQtcHIgCi0JQFsgLWYgLi9zZW5kLXByL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHNlbmQtcHIiIDsgXAotCShjZCBzZW5kLXByICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1zaGVsbHV0aWxzIGluc3RhbGwtaW5mby1zaGVsbHV0aWxzCi1tYXliZS1pbnN0YWxsLWluZm8tc2hlbGx1dGlsczoKLQotaW5zdGFsbC1pbmZvLXNoZWxsdXRpbHM6IFwKLSAgICBjb25maWd1cmUtc2hlbGx1dGlscyBcCi0gICAgaW5mby1zaGVsbHV0aWxzIAotCUBbIC1mIC4vc2hlbGx1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBzaGVsbHV0aWxzIiA7IFwKLQkoY2Qgc2hlbGx1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tc2lkIGluc3RhbGwtaW5mby1zaWQKLW1heWJlLWluc3RhbGwtaW5mby1zaWQ6Ci0KLWluc3RhbGwtaW5mby1zaWQ6IFwKLSAgICBjb25maWd1cmUtc2lkIFwKLSAgICBpbmZvLXNpZCAKLQlAWyAtZiAuL3NpZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBzaWQiIDsgXAotCShjZCBzaWQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXNpbSBpbnN0YWxsLWluZm8tc2ltCi1tYXliZS1pbnN0YWxsLWluZm8tc2ltOgotCi1pbnN0YWxsLWluZm8tc2ltOiBcCi0gICAgY29uZmlndXJlLXNpbSBcCi0gICAgaW5mby1zaW0gCi0JQFsgLWYgLi9zaW0vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gc2ltIiA7IFwKLQkoY2Qgc2ltICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10YXIgaW5zdGFsbC1pbmZvLXRhcgotbWF5YmUtaW5zdGFsbC1pbmZvLXRhcjoKLQotaW5zdGFsbC1pbmZvLXRhcjogXAotICAgIGNvbmZpZ3VyZS10YXIgXAotICAgIGluZm8tdGFyIAotCUBbIC1mIC4vdGFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHRhciIgOyBcCi0JKGNkIHRhciAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGV4aW5mbyBpbnN0YWxsLWluZm8tdGV4aW5mbwotbWF5YmUtaW5zdGFsbC1pbmZvLXRleGluZm86Ci0KLWluc3RhbGwtaW5mby10ZXhpbmZvOiBcCi0gICAgY29uZmlndXJlLXRleGluZm8gXAotICAgIGluZm8tdGV4aW5mbyAKLQlAWyAtZiAuL3RleGluZm8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gdGV4aW5mbyIgOyBcCi0JKGNkIHRleGluZm8gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRleHR1dGlscyBpbnN0YWxsLWluZm8tdGV4dHV0aWxzCi1tYXliZS1pbnN0YWxsLWluZm8tdGV4dHV0aWxzOgotCi1pbnN0YWxsLWluZm8tdGV4dHV0aWxzOiBcCi0gICAgY29uZmlndXJlLXRleHR1dGlscyBcCi0gICAgaW5mby10ZXh0dXRpbHMgCi0JQFsgLWYgLi90ZXh0dXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gdGV4dHV0aWxzIiA7IFwKLQkoY2QgdGV4dHV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10aW1lIGluc3RhbGwtaW5mby10aW1lCi1tYXliZS1pbnN0YWxsLWluZm8tdGltZToKLQotaW5zdGFsbC1pbmZvLXRpbWU6IFwKLSAgICBjb25maWd1cmUtdGltZSBcCi0gICAgaW5mby10aW1lIAotCUBbIC1mIC4vdGltZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiB0aW1lIiA7IFwKLQkoY2QgdGltZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdXVkZWNvZGUgaW5zdGFsbC1pbmZvLXV1ZGVjb2RlCi1tYXliZS1pbnN0YWxsLWluZm8tdXVkZWNvZGU6Ci0KLWluc3RhbGwtaW5mby11dWRlY29kZTogXAotICAgIGNvbmZpZ3VyZS11dWRlY29kZSBcCi0gICAgaW5mby11dWRlY29kZSAKLQlAWyAtZiAuL3V1ZGVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHV1ZGVjb2RlIiA7IFwKLQkoY2QgdXVkZWNvZGUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXdkaWZmIGluc3RhbGwtaW5mby13ZGlmZgotbWF5YmUtaW5zdGFsbC1pbmZvLXdkaWZmOgotCi1pbnN0YWxsLWluZm8td2RpZmY6IFwKLSAgICBjb25maWd1cmUtd2RpZmYgXAotICAgIGluZm8td2RpZmYgCi0JQFsgLWYgLi93ZGlmZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiB3ZGlmZiIgOyBcCi0JKGNkIHdkaWZmICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby16aXAgaW5zdGFsbC1pbmZvLXppcAotbWF5YmUtaW5zdGFsbC1pbmZvLXppcDoKLQotaW5zdGFsbC1pbmZvLXppcDogXAotICAgIGNvbmZpZ3VyZS16aXAgXAotICAgIGluZm8temlwIAotCUBbIC1mIC4vemlwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHppcCIgOyBcCi0JKGNkIHppcCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8temxpYiBpbnN0YWxsLWluZm8temxpYgotbWF5YmUtaW5zdGFsbC1pbmZvLXpsaWI6Ci0KLWluc3RhbGwtaW5mby16bGliOiBcCi0gICAgY29uZmlndXJlLXpsaWIgXAotICAgIGluZm8temxpYiAKLQlAWyAtZiAuL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gemxpYiIgOyBcCi0JKGNkIHpsaWIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWdkYiBpbnN0YWxsLWluZm8tZ2RiCi1tYXliZS1pbnN0YWxsLWluZm8tZ2RiOgotCi1pbnN0YWxsLWluZm8tZ2RiOiBcCi0gICAgY29uZmlndXJlLWdkYiBcCi0gICAgaW5mby1nZGIgCi0JQFsgLWYgLi9nZGIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gZ2RiIiA7IFwKLQkoY2QgZ2RiICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1leHBlY3QgaW5zdGFsbC1pbmZvLWV4cGVjdAotbWF5YmUtaW5zdGFsbC1pbmZvLWV4cGVjdDoKLQotaW5zdGFsbC1pbmZvLWV4cGVjdDogXAotICAgIGNvbmZpZ3VyZS1leHBlY3QgXAotICAgIGluZm8tZXhwZWN0IAotCUBbIC1mIC4vZXhwZWN0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGV4cGVjdCIgOyBcCi0JKGNkIGV4cGVjdCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZ3VpbGUgaW5zdGFsbC1pbmZvLWd1aWxlCi1tYXliZS1pbnN0YWxsLWluZm8tZ3VpbGU6Ci0KLWluc3RhbGwtaW5mby1ndWlsZTogXAotICAgIGNvbmZpZ3VyZS1ndWlsZSBcCi0gICAgaW5mby1ndWlsZSAKLQlAWyAtZiAuL2d1aWxlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGd1aWxlIiA7IFwKLQkoY2QgZ3VpbGUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRrIGluc3RhbGwtaW5mby10awotbWF5YmUtaW5zdGFsbC1pbmZvLXRrOgotCi1pbnN0YWxsLWluZm8tdGs6IFwKLSAgICBjb25maWd1cmUtdGsgXAotICAgIGluZm8tdGsgCi0JQFsgLWYgLi90ay9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiB0ayIgOyBcCi0JKGNkIHRrICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10aXggaW5zdGFsbC1pbmZvLXRpeAotbWF5YmUtaW5zdGFsbC1pbmZvLXRpeDoKLQotaW5zdGFsbC1pbmZvLXRpeDogXAotICAgIGNvbmZpZ3VyZS10aXggXAotICAgIGluZm8tdGl4IAotCUBbIC1mIC4vdGl4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHRpeCIgOyBcCi0JKGNkIHRpeCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tbGlidGVybWNhcCBpbnN0YWxsLWluZm8tbGlidGVybWNhcAotbWF5YmUtaW5zdGFsbC1pbmZvLWxpYnRlcm1jYXA6Ci0KLWluc3RhbGwtaW5mby1saWJ0ZXJtY2FwOiBcCi0gICAgY29uZmlndXJlLWxpYnRlcm1jYXAgXAotICAgIGluZm8tbGlidGVybWNhcCAKLQlAWyAtZiAuL2xpYnRlcm1jYXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gbGlidGVybWNhcCIgOyBcCi0JKGNkIGxpYnRlcm1jYXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXV0aWxzIGluc3RhbGwtaW5mby11dGlscwotbWF5YmUtaW5zdGFsbC1pbmZvLXV0aWxzOgotCi1pbnN0YWxsLWluZm8tdXRpbHM6IFwKLSAgICBjb25maWd1cmUtdXRpbHMgXAotICAgIGluZm8tdXRpbHMgCi0JQFsgLWYgLi91dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiB1dGlscyIgOyBcCi0JKGNkIHV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0KLSMgVGFyZ2V0IG1vZHVsZXMuCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1saWJzdGRjKystdjMgaW5zdGFsbC1pbmZvLXRhcmdldC1saWJzdGRjKystdjMKLW1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtbGlic3RkYysrLXYzOgotCi1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYnN0ZGMrKy12MzogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlic3RkYysrLXYzIFwKLSAgICBpbmZvLXRhcmdldC1saWJzdGRjKystdjMgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LW5ld2xpYiBpbnN0YWxsLWluZm8tdGFyZ2V0LW5ld2xpYgotbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1uZXdsaWI6Ci0KLWluc3RhbGwtaW5mby10YXJnZXQtbmV3bGliOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1uZXdsaWIgXAotICAgIGluZm8tdGFyZ2V0LW5ld2xpYiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL25ld2xpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9uZXdsaWIiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbmV3bGliICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtbGliZjJjIGluc3RhbGwtaW5mby10YXJnZXQtbGliZjJjCi1tYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmYyYzoKLQotaW5zdGFsbC1pbmZvLXRhcmdldC1saWJmMmM6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmYyYyBcCi0gICAgaW5mby10YXJnZXQtbGliZjJjIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZjJjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmMmMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1saWJvYmpjIGluc3RhbGwtaW5mby10YXJnZXQtbGlib2JqYwotbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1saWJvYmpjOgotCi1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYm9iamM6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWxpYm9iamMgXAotICAgIGluZm8tdGFyZ2V0LWxpYm9iamMgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYnRlcm1jYXAgaW5zdGFsbC1pbmZvLXRhcmdldC1saWJ0ZXJtY2FwCi1tYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYnRlcm1jYXA6Ci0KLWluc3RhbGwtaW5mby10YXJnZXQtbGlidGVybWNhcDogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlidGVybWNhcCBcCi0gICAgaW5mby10YXJnZXQtbGlidGVybWNhcCAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYnRlcm1jYXAvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGlidGVybWNhcCIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJ0ZXJtY2FwICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtd2luc3VwIGluc3RhbGwtaW5mby10YXJnZXQtd2luc3VwCi1tYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LXdpbnN1cDoKLQotaW5zdGFsbC1pbmZvLXRhcmdldC13aW5zdXA6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LXdpbnN1cCBcCi0gICAgaW5mby10YXJnZXQtd2luc3VwIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvd2luc3VwL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS93aW5zdXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1saWJnbG9zcyBpbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmdsb3NzCi1tYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmdsb3NzOgotCi1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmdsb3NzOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJnbG9zcyBcCi0gICAgaW5mby10YXJnZXQtbGliZ2xvc3MgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmliZXJ0eSBpbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmliZXJ0eQotbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1saWJpYmVydHk6Ci0KLWluc3RhbGwtaW5mby10YXJnZXQtbGliaWJlcnR5OiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJpYmVydHkgXAotICAgIGluZm8tdGFyZ2V0LWxpYmliZXJ0eSAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtZ3BlcmYgaW5zdGFsbC1pbmZvLXRhcmdldC1ncGVyZgotbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1ncGVyZjoKLQotaW5zdGFsbC1pbmZvLXRhcmdldC1ncGVyZjogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtZ3BlcmYgXAotICAgIGluZm8tdGFyZ2V0LWdwZXJmIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1leGFtcGxlcyBpbnN0YWxsLWluZm8tdGFyZ2V0LWV4YW1wbGVzCi1tYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWV4YW1wbGVzOgotCi1pbnN0YWxsLWluZm8tdGFyZ2V0LWV4YW1wbGVzOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1leGFtcGxlcyBcCi0gICAgaW5mby10YXJnZXQtZXhhbXBsZXMgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9leGFtcGxlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9leGFtcGxlcyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9leGFtcGxlcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmZmaSBpbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmZmaQotbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1saWJmZmk6Ci0KLWluc3RhbGwtaW5mby10YXJnZXQtbGliZmZpOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJmZmkgXAotICAgIGluZm8tdGFyZ2V0LWxpYmZmaSAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9saWJmZmkiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZmZpICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtbGliamF2YSBpbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmphdmEKLW1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtbGliamF2YToKLQotaW5zdGFsbC1pbmZvLXRhcmdldC1saWJqYXZhOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJqYXZhIFwKLSAgICBpbmZvLXRhcmdldC1saWJqYXZhIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliamF2YS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9saWJqYXZhIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC16bGliIGluc3RhbGwtaW5mby10YXJnZXQtemxpYgotbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC16bGliOgotCi1pbnN0YWxsLWluZm8tdGFyZ2V0LXpsaWI6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LXpsaWIgXAotICAgIGluZm8tdGFyZ2V0LXpsaWIgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS96bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL3psaWIiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvemxpYiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWJvZWhtLWdjIGluc3RhbGwtaW5mby10YXJnZXQtYm9laG0tZ2MKLW1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtYm9laG0tZ2M6Ci0KLWluc3RhbGwtaW5mby10YXJnZXQtYm9laG0tZ2M6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWJvZWhtLWdjIFwKLSAgICBpbmZvLXRhcmdldC1ib2VobS1nYyAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtcXRocmVhZHMgaW5zdGFsbC1pbmZvLXRhcmdldC1xdGhyZWFkcwotbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1xdGhyZWFkczoKLQotaW5zdGFsbC1pbmZvLXRhcmdldC1xdGhyZWFkczogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtcXRocmVhZHMgXAotICAgIGluZm8tdGFyZ2V0LXF0aHJlYWRzIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1yZGEgaW5zdGFsbC1pbmZvLXRhcmdldC1yZGEKLW1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtcmRhOgotCi1pbnN0YWxsLWluZm8tdGFyZ2V0LXJkYTogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtcmRhIFwKLSAgICBpbmZvLXRhcmdldC1yZGEgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9yZGEvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluICQoVEFSR0VUX1NVQkRJUikvcmRhIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3JkYSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGwtaW5mbykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmFkYSBpbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmFkYQotbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1saWJhZGE6Ci0KLWluc3RhbGwtaW5mby10YXJnZXQtbGliYWRhOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJhZGEgXAotICAgIGluZm8tdGFyZ2V0LWxpYmFkYSAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9saWJhZGEiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliYWRhICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCi0JICB8fCBleGl0IDEKLQotCi0KIC5QSE9OWTogZG8taW5zdGFsbGNoZWNrCiBkby1pbnN0YWxsY2hlY2s6IGluc3RhbGxjaGVjay1ob3N0IGluc3RhbGxjaGVjay10YXJnZXQKIApAQCAtODQ3NywxODE1ICsxMTY1LDYgQEAKICAgICBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LXJkYSBcCiAgICAgbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJhZGEKIAotIyBHQ0MsIHRoZSBldGVybmFsIHNwZWNpYWwgY2FzZQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stZ2NjIGluc3RhbGxjaGVjay1nY2MKLW1heWJlLWluc3RhbGxjaGVjay1nY2M6Ci1pbnN0YWxsY2hlY2stZ2NjOiBcCi0gICAgY29uZmlndXJlLWdjYyAKLQlAWyAtZiAuL2djYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfR0NDX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGdjYyIgOyBcCi0JKGNkIGdjYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLSMgSG9zdCBtb2R1bGVzLgotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1hc2ggaW5zdGFsbGNoZWNrLWFzaAotbWF5YmUtaW5zdGFsbGNoZWNrLWFzaDoKLQotaW5zdGFsbGNoZWNrLWFzaDogXAotICAgIGNvbmZpZ3VyZS1hc2ggCi0JQFsgLWYgLi9hc2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gYXNoIiA7IFwKLQkoY2QgYXNoICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1hdXRvY29uZiBpbnN0YWxsY2hlY2stYXV0b2NvbmYKLW1heWJlLWluc3RhbGxjaGVjay1hdXRvY29uZjoKLQotaW5zdGFsbGNoZWNrLWF1dG9jb25mOiBcCi0gICAgY29uZmlndXJlLWF1dG9jb25mIAotCUBbIC1mIC4vYXV0b2NvbmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gYXV0b2NvbmYiIDsgXAotCShjZCBhdXRvY29uZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stYXV0b21ha2UgaW5zdGFsbGNoZWNrLWF1dG9tYWtlCi1tYXliZS1pbnN0YWxsY2hlY2stYXV0b21ha2U6Ci0KLWluc3RhbGxjaGVjay1hdXRvbWFrZTogXAotICAgIGNvbmZpZ3VyZS1hdXRvbWFrZSAKLQlAWyAtZiAuL2F1dG9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGF1dG9tYWtlIiA7IFwKLQkoY2QgYXV0b21ha2UgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWJhc2ggaW5zdGFsbGNoZWNrLWJhc2gKLW1heWJlLWluc3RhbGxjaGVjay1iYXNoOgotCi1pbnN0YWxsY2hlY2stYmFzaDogXAotICAgIGNvbmZpZ3VyZS1iYXNoIAotCUBbIC1mIC4vYmFzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBiYXNoIiA7IFwKLQkoY2QgYmFzaCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stYmZkIGluc3RhbGxjaGVjay1iZmQKLW1heWJlLWluc3RhbGxjaGVjay1iZmQ6Ci0KLWluc3RhbGxjaGVjay1iZmQ6IFwKLSAgICBjb25maWd1cmUtYmZkIAotCUBbIC1mIC4vYmZkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGJmZCIgOyBcCi0JKGNkIGJmZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stb3Bjb2RlcyBpbnN0YWxsY2hlY2stb3Bjb2RlcwotbWF5YmUtaW5zdGFsbGNoZWNrLW9wY29kZXM6Ci0KLWluc3RhbGxjaGVjay1vcGNvZGVzOiBcCi0gICAgY29uZmlndXJlLW9wY29kZXMgCi0JQFsgLWYgLi9vcGNvZGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIG9wY29kZXMiIDsgXAotCShjZCBvcGNvZGVzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1iaW51dGlscyBpbnN0YWxsY2hlY2stYmludXRpbHMKLW1heWJlLWluc3RhbGxjaGVjay1iaW51dGlsczoKLQotaW5zdGFsbGNoZWNrLWJpbnV0aWxzOiBcCi0gICAgY29uZmlndXJlLWJpbnV0aWxzIAotCUBbIC1mIC4vYmludXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gYmludXRpbHMiIDsgXAotCShjZCBiaW51dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stYmlzb24gaW5zdGFsbGNoZWNrLWJpc29uCi1tYXliZS1pbnN0YWxsY2hlY2stYmlzb246Ci0KLWluc3RhbGxjaGVjay1iaXNvbjogXAotICAgIGNvbmZpZ3VyZS1iaXNvbiAKLQlAWyAtZiAuL2Jpc29uL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGJpc29uIiA7IFwKLQkoY2QgYmlzb24gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWJ5YWNjIGluc3RhbGxjaGVjay1ieWFjYwotbWF5YmUtaW5zdGFsbGNoZWNrLWJ5YWNjOgotCi1pbnN0YWxsY2hlY2stYnlhY2M6IFwKLSAgICBjb25maWd1cmUtYnlhY2MgCi0JQFsgLWYgLi9ieWFjYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBieWFjYyIgOyBcCi0JKGNkIGJ5YWNjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1iemlwMiBpbnN0YWxsY2hlY2stYnppcDIKLW1heWJlLWluc3RhbGxjaGVjay1iemlwMjoKLQotaW5zdGFsbGNoZWNrLWJ6aXAyOiBcCi0gICAgY29uZmlndXJlLWJ6aXAyIAotCUBbIC1mIC4vYnppcDIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gYnppcDIiIDsgXAotCShjZCBiemlwMiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stZGVqYWdudSBpbnN0YWxsY2hlY2stZGVqYWdudQotbWF5YmUtaW5zdGFsbGNoZWNrLWRlamFnbnU6Ci0KLWluc3RhbGxjaGVjay1kZWphZ251OiBcCi0gICAgY29uZmlndXJlLWRlamFnbnUgCi0JQFsgLWYgLi9kZWphZ251L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGRlamFnbnUiIDsgXAotCShjZCBkZWphZ251ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1kaWZmIGluc3RhbGxjaGVjay1kaWZmCi1tYXliZS1pbnN0YWxsY2hlY2stZGlmZjoKLQotaW5zdGFsbGNoZWNrLWRpZmY6IFwKLSAgICBjb25maWd1cmUtZGlmZiAKLQlAWyAtZiAuL2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZGlmZiIgOyBcCi0JKGNkIGRpZmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWRvc3V0aWxzIGluc3RhbGxjaGVjay1kb3N1dGlscwotbWF5YmUtaW5zdGFsbGNoZWNrLWRvc3V0aWxzOgotCi1pbnN0YWxsY2hlY2stZG9zdXRpbHM6IFwKLSAgICBjb25maWd1cmUtZG9zdXRpbHMgCi0JQFsgLWYgLi9kb3N1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBkb3N1dGlscyIgOyBcCi0JKGNkIGRvc3V0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1ldGMgaW5zdGFsbGNoZWNrLWV0YwotbWF5YmUtaW5zdGFsbGNoZWNrLWV0YzoKLQotaW5zdGFsbGNoZWNrLWV0YzogXAotICAgIGNvbmZpZ3VyZS1ldGMgCi0JQFsgLWYgLi9ldGMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZXRjIiA7IFwKLQkoY2QgZXRjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1mYXN0amFyIGluc3RhbGxjaGVjay1mYXN0amFyCi1tYXliZS1pbnN0YWxsY2hlY2stZmFzdGphcjoKLQotaW5zdGFsbGNoZWNrLWZhc3RqYXI6IFwKLSAgICBjb25maWd1cmUtZmFzdGphciAKLQlAWyAtZiAuL2Zhc3RqYXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZmFzdGphciIgOyBcCi0JKGNkIGZhc3RqYXIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWZpbGV1dGlscyBpbnN0YWxsY2hlY2stZmlsZXV0aWxzCi1tYXliZS1pbnN0YWxsY2hlY2stZmlsZXV0aWxzOgotCi1pbnN0YWxsY2hlY2stZmlsZXV0aWxzOiBcCi0gICAgY29uZmlndXJlLWZpbGV1dGlscyAKLQlAWyAtZiAuL2ZpbGV1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBmaWxldXRpbHMiIDsgXAotCShjZCBmaWxldXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWZpbmR1dGlscyBpbnN0YWxsY2hlY2stZmluZHV0aWxzCi1tYXliZS1pbnN0YWxsY2hlY2stZmluZHV0aWxzOgotCi1pbnN0YWxsY2hlY2stZmluZHV0aWxzOiBcCi0gICAgY29uZmlndXJlLWZpbmR1dGlscyAKLQlAWyAtZiAuL2ZpbmR1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBmaW5kdXRpbHMiIDsgXAotCShjZCBmaW5kdXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWZpbmQgaW5zdGFsbGNoZWNrLWZpbmQKLW1heWJlLWluc3RhbGxjaGVjay1maW5kOgotCi1pbnN0YWxsY2hlY2stZmluZDogXAotICAgIGNvbmZpZ3VyZS1maW5kIAotCUBbIC1mIC4vZmluZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBmaW5kIiA7IFwKLQkoY2QgZmluZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stZmxleCBpbnN0YWxsY2hlY2stZmxleAotbWF5YmUtaW5zdGFsbGNoZWNrLWZsZXg6Ci0KLWluc3RhbGxjaGVjay1mbGV4OiBcCi0gICAgY29uZmlndXJlLWZsZXggCi0JQFsgLWYgLi9mbGV4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGZsZXgiIDsgXAotCShjZCBmbGV4ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1nYXMgaW5zdGFsbGNoZWNrLWdhcwotbWF5YmUtaW5zdGFsbGNoZWNrLWdhczoKLQotaW5zdGFsbGNoZWNrLWdhczogXAotICAgIGNvbmZpZ3VyZS1nYXMgCi0JQFsgLWYgLi9nYXMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZ2FzIiA7IFwKLQkoY2QgZ2FzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1nYXdrIGluc3RhbGxjaGVjay1nYXdrCi1tYXliZS1pbnN0YWxsY2hlY2stZ2F3azoKLQotaW5zdGFsbGNoZWNrLWdhd2s6IFwKLSAgICBjb25maWd1cmUtZ2F3ayAKLQlAWyAtZiAuL2dhd2svTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZ2F3ayIgOyBcCi0JKGNkIGdhd2sgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWdldHRleHQgaW5zdGFsbGNoZWNrLWdldHRleHQKLW1heWJlLWluc3RhbGxjaGVjay1nZXR0ZXh0OgotCi1pbnN0YWxsY2hlY2stZ2V0dGV4dDogXAotICAgIGNvbmZpZ3VyZS1nZXR0ZXh0IAotCUBbIC1mIC4vZ2V0dGV4dC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBnZXR0ZXh0IiA7IFwKLQkoY2QgZ2V0dGV4dCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stZ251c2VydiBpbnN0YWxsY2hlY2stZ251c2VydgotbWF5YmUtaW5zdGFsbGNoZWNrLWdudXNlcnY6Ci0KLWluc3RhbGxjaGVjay1nbnVzZXJ2OiBcCi0gICAgY29uZmlndXJlLWdudXNlcnYgCi0JQFsgLWYgLi9nbnVzZXJ2L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGdudXNlcnYiIDsgXAotCShjZCBnbnVzZXJ2ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1ncHJvZiBpbnN0YWxsY2hlY2stZ3Byb2YKLW1heWJlLWluc3RhbGxjaGVjay1ncHJvZjoKLQotaW5zdGFsbGNoZWNrLWdwcm9mOiBcCi0gICAgY29uZmlndXJlLWdwcm9mIAotCUBbIC1mIC4vZ3Byb2YvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZ3Byb2YiIDsgXAotCShjZCBncHJvZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stZ3ppcCBpbnN0YWxsY2hlY2stZ3ppcAotbWF5YmUtaW5zdGFsbGNoZWNrLWd6aXA6Ci0KLWluc3RhbGxjaGVjay1nemlwOiBcCi0gICAgY29uZmlndXJlLWd6aXAgCi0JQFsgLWYgLi9nemlwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGd6aXAiIDsgXAotCShjZCBnemlwICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1oZWxsbyBpbnN0YWxsY2hlY2staGVsbG8KLW1heWJlLWluc3RhbGxjaGVjay1oZWxsbzoKLQotaW5zdGFsbGNoZWNrLWhlbGxvOiBcCi0gICAgY29uZmlndXJlLWhlbGxvIAotCUBbIC1mIC4vaGVsbG8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gaGVsbG8iIDsgXAotCShjZCBoZWxsbyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2staW5kZW50IGluc3RhbGxjaGVjay1pbmRlbnQKLW1heWJlLWluc3RhbGxjaGVjay1pbmRlbnQ6Ci0KLWluc3RhbGxjaGVjay1pbmRlbnQ6IFwKLSAgICBjb25maWd1cmUtaW5kZW50IAotCUBbIC1mIC4vaW5kZW50L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGluZGVudCIgOyBcCi0JKGNkIGluZGVudCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2staW50bCBpbnN0YWxsY2hlY2staW50bAotbWF5YmUtaW5zdGFsbGNoZWNrLWludGw6Ci0KLWluc3RhbGxjaGVjay1pbnRsOiBcCi0gICAgY29uZmlndXJlLWludGwgCi0JQFsgLWYgLi9pbnRsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGludGwiIDsgXAotCShjZCBpbnRsICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10Y2wgaW5zdGFsbGNoZWNrLXRjbAotbWF5YmUtaW5zdGFsbGNoZWNrLXRjbDoKLQotaW5zdGFsbGNoZWNrLXRjbDogXAotICAgIGNvbmZpZ3VyZS10Y2wgCi0JQFsgLWYgLi90Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gdGNsIiA7IFwKLQkoY2QgdGNsICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1pdGNsIGluc3RhbGxjaGVjay1pdGNsCi1tYXliZS1pbnN0YWxsY2hlY2staXRjbDoKLQotaW5zdGFsbGNoZWNrLWl0Y2w6IFwKLSAgICBjb25maWd1cmUtaXRjbCAKLQlAWyAtZiAuL2l0Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gaXRjbCIgOyBcCi0JKGNkIGl0Y2wgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWxkIGluc3RhbGxjaGVjay1sZAotbWF5YmUtaW5zdGFsbGNoZWNrLWxkOgotCi1pbnN0YWxsY2hlY2stbGQ6IFwKLSAgICBjb25maWd1cmUtbGQgCi0JQFsgLWYgLi9sZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBsZCIgOyBcCi0JKGNkIGxkICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1saWJndWkgaW5zdGFsbGNoZWNrLWxpYmd1aQotbWF5YmUtaW5zdGFsbGNoZWNrLWxpYmd1aToKLQotaW5zdGFsbGNoZWNrLWxpYmd1aTogXAotICAgIGNvbmZpZ3VyZS1saWJndWkgCi0JQFsgLWYgLi9saWJndWkvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gbGliZ3VpIiA7IFwKLQkoY2QgbGliZ3VpICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1saWJpYmVydHkgaW5zdGFsbGNoZWNrLWxpYmliZXJ0eQotbWF5YmUtaW5zdGFsbGNoZWNrLWxpYmliZXJ0eToKLQotaW5zdGFsbGNoZWNrLWxpYmliZXJ0eTogXAotICAgIGNvbmZpZ3VyZS1saWJpYmVydHkgCi0JQFsgLWYgLi9saWJpYmVydHkvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gbGliaWJlcnR5IiA7IFwKLQkoY2QgbGliaWJlcnR5ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1saWJ0b29sIGluc3RhbGxjaGVjay1saWJ0b29sCi1tYXliZS1pbnN0YWxsY2hlY2stbGlidG9vbDoKLQotaW5zdGFsbGNoZWNrLWxpYnRvb2w6IFwKLSAgICBjb25maWd1cmUtbGlidG9vbCAKLQlAWyAtZiAuL2xpYnRvb2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gbGlidG9vbCIgOyBcCi0JKGNkIGxpYnRvb2wgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLW00IGluc3RhbGxjaGVjay1tNAotbWF5YmUtaW5zdGFsbGNoZWNrLW00OgotCi1pbnN0YWxsY2hlY2stbTQ6IFwKLSAgICBjb25maWd1cmUtbTQgCi0JQFsgLWYgLi9tNC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBtNCIgOyBcCi0JKGNkIG00ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1tYWtlIGluc3RhbGxjaGVjay1tYWtlCi1tYXliZS1pbnN0YWxsY2hlY2stbWFrZToKLQotaW5zdGFsbGNoZWNrLW1ha2U6IFwKLSAgICBjb25maWd1cmUtbWFrZSAKLQlAWyAtZiAuL21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gbWFrZSIgOyBcCi0JKGNkIG1ha2UgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLW1tYWxsb2MgaW5zdGFsbGNoZWNrLW1tYWxsb2MKLW1heWJlLWluc3RhbGxjaGVjay1tbWFsbG9jOgotCi1pbnN0YWxsY2hlY2stbW1hbGxvYzogXAotICAgIGNvbmZpZ3VyZS1tbWFsbG9jIAotCUBbIC1mIC4vbW1hbGxvYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBtbWFsbG9jIiA7IFwKLQkoY2QgbW1hbGxvYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stcGF0Y2ggaW5zdGFsbGNoZWNrLXBhdGNoCi1tYXliZS1pbnN0YWxsY2hlY2stcGF0Y2g6Ci0KLWluc3RhbGxjaGVjay1wYXRjaDogXAotICAgIGNvbmZpZ3VyZS1wYXRjaCAKLQlAWyAtZiAuL3BhdGNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHBhdGNoIiA7IFwKLQkoY2QgcGF0Y2ggJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXBlcmwgaW5zdGFsbGNoZWNrLXBlcmwKLW1heWJlLWluc3RhbGxjaGVjay1wZXJsOgotCi1pbnN0YWxsY2hlY2stcGVybDogXAotICAgIGNvbmZpZ3VyZS1wZXJsIAotCUBbIC1mIC4vcGVybC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBwZXJsIiA7IFwKLQkoY2QgcGVybCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stcHJtcyBpbnN0YWxsY2hlY2stcHJtcwotbWF5YmUtaW5zdGFsbGNoZWNrLXBybXM6Ci0KLWluc3RhbGxjaGVjay1wcm1zOiBcCi0gICAgY29uZmlndXJlLXBybXMgCi0JQFsgLWYgLi9wcm1zL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHBybXMiIDsgXAotCShjZCBwcm1zICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1yY3MgaW5zdGFsbGNoZWNrLXJjcwotbWF5YmUtaW5zdGFsbGNoZWNrLXJjczoKLQotaW5zdGFsbGNoZWNrLXJjczogXAotICAgIGNvbmZpZ3VyZS1yY3MgCi0JQFsgLWYgLi9yY3MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gcmNzIiA7IFwKLQkoY2QgcmNzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1yZWFkbGluZSBpbnN0YWxsY2hlY2stcmVhZGxpbmUKLW1heWJlLWluc3RhbGxjaGVjay1yZWFkbGluZToKLQotaW5zdGFsbGNoZWNrLXJlYWRsaW5lOiBcCi0gICAgY29uZmlndXJlLXJlYWRsaW5lIAotCUBbIC1mIC4vcmVhZGxpbmUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gcmVhZGxpbmUiIDsgXAotCShjZCByZWFkbGluZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stcmVsZWFzZSBpbnN0YWxsY2hlY2stcmVsZWFzZQotbWF5YmUtaW5zdGFsbGNoZWNrLXJlbGVhc2U6Ci0KLWluc3RhbGxjaGVjay1yZWxlYXNlOiBcCi0gICAgY29uZmlndXJlLXJlbGVhc2UgCi0JQFsgLWYgLi9yZWxlYXNlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHJlbGVhc2UiIDsgXAotCShjZCByZWxlYXNlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1yZWNvZGUgaW5zdGFsbGNoZWNrLXJlY29kZQotbWF5YmUtaW5zdGFsbGNoZWNrLXJlY29kZToKLQotaW5zdGFsbGNoZWNrLXJlY29kZTogXAotICAgIGNvbmZpZ3VyZS1yZWNvZGUgCi0JQFsgLWYgLi9yZWNvZGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gcmVjb2RlIiA7IFwKLQkoY2QgcmVjb2RlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1zZWQgaW5zdGFsbGNoZWNrLXNlZAotbWF5YmUtaW5zdGFsbGNoZWNrLXNlZDoKLQotaW5zdGFsbGNoZWNrLXNlZDogXAotICAgIGNvbmZpZ3VyZS1zZWQgCi0JQFsgLWYgLi9zZWQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gc2VkIiA7IFwKLQkoY2Qgc2VkICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1zZW5kLXByIGluc3RhbGxjaGVjay1zZW5kLXByCi1tYXliZS1pbnN0YWxsY2hlY2stc2VuZC1wcjoKLQotaW5zdGFsbGNoZWNrLXNlbmQtcHI6IFwKLSAgICBjb25maWd1cmUtc2VuZC1wciAKLQlAWyAtZiAuL3NlbmQtcHIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gc2VuZC1wciIgOyBcCi0JKGNkIHNlbmQtcHIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXNoZWxsdXRpbHMgaW5zdGFsbGNoZWNrLXNoZWxsdXRpbHMKLW1heWJlLWluc3RhbGxjaGVjay1zaGVsbHV0aWxzOgotCi1pbnN0YWxsY2hlY2stc2hlbGx1dGlsczogXAotICAgIGNvbmZpZ3VyZS1zaGVsbHV0aWxzIAotCUBbIC1mIC4vc2hlbGx1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBzaGVsbHV0aWxzIiA7IFwKLQkoY2Qgc2hlbGx1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stc2lkIGluc3RhbGxjaGVjay1zaWQKLW1heWJlLWluc3RhbGxjaGVjay1zaWQ6Ci0KLWluc3RhbGxjaGVjay1zaWQ6IFwKLSAgICBjb25maWd1cmUtc2lkIAotCUBbIC1mIC4vc2lkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHNpZCIgOyBcCi0JKGNkIHNpZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stc2ltIGluc3RhbGxjaGVjay1zaW0KLW1heWJlLWluc3RhbGxjaGVjay1zaW06Ci0KLWluc3RhbGxjaGVjay1zaW06IFwKLSAgICBjb25maWd1cmUtc2ltIAotCUBbIC1mIC4vc2ltL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHNpbSIgOyBcCi0JKGNkIHNpbSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyIGluc3RhbGxjaGVjay10YXIKLW1heWJlLWluc3RhbGxjaGVjay10YXI6Ci0KLWluc3RhbGxjaGVjay10YXI6IFwKLSAgICBjb25maWd1cmUtdGFyIAotCUBbIC1mIC4vdGFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHRhciIgOyBcCi0JKGNkIHRhciAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGV4aW5mbyBpbnN0YWxsY2hlY2stdGV4aW5mbwotbWF5YmUtaW5zdGFsbGNoZWNrLXRleGluZm86Ci0KLWluc3RhbGxjaGVjay10ZXhpbmZvOiBcCi0gICAgY29uZmlndXJlLXRleGluZm8gCi0JQFsgLWYgLi90ZXhpbmZvL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHRleGluZm8iIDsgXAotCShjZCB0ZXhpbmZvICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10ZXh0dXRpbHMgaW5zdGFsbGNoZWNrLXRleHR1dGlscwotbWF5YmUtaW5zdGFsbGNoZWNrLXRleHR1dGlsczoKLQotaW5zdGFsbGNoZWNrLXRleHR1dGlsczogXAotICAgIGNvbmZpZ3VyZS10ZXh0dXRpbHMgCi0JQFsgLWYgLi90ZXh0dXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gdGV4dHV0aWxzIiA7IFwKLQkoY2QgdGV4dHV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10aW1lIGluc3RhbGxjaGVjay10aW1lCi1tYXliZS1pbnN0YWxsY2hlY2stdGltZToKLQotaW5zdGFsbGNoZWNrLXRpbWU6IFwKLSAgICBjb25maWd1cmUtdGltZSAKLQlAWyAtZiAuL3RpbWUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gdGltZSIgOyBcCi0JKGNkIHRpbWUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXV1ZGVjb2RlIGluc3RhbGxjaGVjay11dWRlY29kZQotbWF5YmUtaW5zdGFsbGNoZWNrLXV1ZGVjb2RlOgotCi1pbnN0YWxsY2hlY2stdXVkZWNvZGU6IFwKLSAgICBjb25maWd1cmUtdXVkZWNvZGUgCi0JQFsgLWYgLi91dWRlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiB1dWRlY29kZSIgOyBcCi0JKGNkIHV1ZGVjb2RlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay13ZGlmZiBpbnN0YWxsY2hlY2std2RpZmYKLW1heWJlLWluc3RhbGxjaGVjay13ZGlmZjoKLQotaW5zdGFsbGNoZWNrLXdkaWZmOiBcCi0gICAgY29uZmlndXJlLXdkaWZmIAotCUBbIC1mIC4vd2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gd2RpZmYiIDsgXAotCShjZCB3ZGlmZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stemlwIGluc3RhbGxjaGVjay16aXAKLW1heWJlLWluc3RhbGxjaGVjay16aXA6Ci0KLWluc3RhbGxjaGVjay16aXA6IFwKLSAgICBjb25maWd1cmUtemlwIAotCUBbIC1mIC4vemlwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHppcCIgOyBcCi0JKGNkIHppcCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stemxpYiBpbnN0YWxsY2hlY2stemxpYgotbWF5YmUtaW5zdGFsbGNoZWNrLXpsaWI6Ci0KLWluc3RhbGxjaGVjay16bGliOiBcCi0gICAgY29uZmlndXJlLXpsaWIgCi0JQFsgLWYgLi96bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHpsaWIiIDsgXAotCShjZCB6bGliICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1nZGIgaW5zdGFsbGNoZWNrLWdkYgotbWF5YmUtaW5zdGFsbGNoZWNrLWdkYjoKLQotaW5zdGFsbGNoZWNrLWdkYjogXAotICAgIGNvbmZpZ3VyZS1nZGIgCi0JQFsgLWYgLi9nZGIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZ2RiIiA7IFwKLQkoY2QgZ2RiICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1leHBlY3QgaW5zdGFsbGNoZWNrLWV4cGVjdAotbWF5YmUtaW5zdGFsbGNoZWNrLWV4cGVjdDoKLQotaW5zdGFsbGNoZWNrLWV4cGVjdDogXAotICAgIGNvbmZpZ3VyZS1leHBlY3QgCi0JQFsgLWYgLi9leHBlY3QvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZXhwZWN0IiA7IFwKLQkoY2QgZXhwZWN0ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1ndWlsZSBpbnN0YWxsY2hlY2stZ3VpbGUKLW1heWJlLWluc3RhbGxjaGVjay1ndWlsZToKLQotaW5zdGFsbGNoZWNrLWd1aWxlOiBcCi0gICAgY29uZmlndXJlLWd1aWxlIAotCUBbIC1mIC4vZ3VpbGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZ3VpbGUiIDsgXAotCShjZCBndWlsZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGsgaW5zdGFsbGNoZWNrLXRrCi1tYXliZS1pbnN0YWxsY2hlY2stdGs6Ci0KLWluc3RhbGxjaGVjay10azogXAotICAgIGNvbmZpZ3VyZS10ayAKLQlAWyAtZiAuL3RrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHRrIiA7IFwKLQkoY2QgdGsgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRpeCBpbnN0YWxsY2hlY2stdGl4Ci1tYXliZS1pbnN0YWxsY2hlY2stdGl4OgotCi1pbnN0YWxsY2hlY2stdGl4OiBcCi0gICAgY29uZmlndXJlLXRpeCAKLQlAWyAtZiAuL3RpeC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiB0aXgiIDsgXAotCShjZCB0aXggJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWxpYnRlcm1jYXAgaW5zdGFsbGNoZWNrLWxpYnRlcm1jYXAKLW1heWJlLWluc3RhbGxjaGVjay1saWJ0ZXJtY2FwOgotCi1pbnN0YWxsY2hlY2stbGlidGVybWNhcDogXAotICAgIGNvbmZpZ3VyZS1saWJ0ZXJtY2FwIAotCUBbIC1mIC4vbGlidGVybWNhcC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBsaWJ0ZXJtY2FwIiA7IFwKLQkoY2QgbGlidGVybWNhcCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdXRpbHMgaW5zdGFsbGNoZWNrLXV0aWxzCi1tYXliZS1pbnN0YWxsY2hlY2stdXRpbHM6Ci0KLWluc3RhbGxjaGVjay11dGlsczogXAotICAgIGNvbmZpZ3VyZS11dGlscyAKLQlAWyAtZiAuL3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHV0aWxzIiA7IFwKLQkoY2QgdXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLQotIyBUYXJnZXQgbW9kdWxlcy4KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYnN0ZGMrKy12MyBpbnN0YWxsY2hlY2stdGFyZ2V0LWxpYnN0ZGMrKy12MwotbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJzdGRjKystdjM6Ci0KLWluc3RhbGxjaGVjay10YXJnZXQtbGlic3RkYysrLXYzOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJzdGRjKystdjMgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LW5ld2xpYiBpbnN0YWxsY2hlY2stdGFyZ2V0LW5ld2xpYgotbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1uZXdsaWI6Ci0KLWluc3RhbGxjaGVjay10YXJnZXQtbmV3bGliOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1uZXdsaWIgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9uZXdsaWIvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvbmV3bGliIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL25ld2xpYiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmYyYyBpbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmYyYwotbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJmMmM6Ci0KLWluc3RhbGxjaGVjay10YXJnZXQtbGliZjJjOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJmMmMgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJmMmMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvbGliZjJjIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYm9iamMgaW5zdGFsbGNoZWNrLXRhcmdldC1saWJvYmpjCi1tYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYm9iamM6Ci0KLWluc3RhbGxjaGVjay10YXJnZXQtbGlib2JqYzogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlib2JqYyAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGlidGVybWNhcCBpbnN0YWxsY2hlY2stdGFyZ2V0LWxpYnRlcm1jYXAKLW1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGlidGVybWNhcDoKLQotaW5zdGFsbGNoZWNrLXRhcmdldC1saWJ0ZXJtY2FwOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJ0ZXJtY2FwIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlidGVybWNhcC9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gJChUQVJHRVRfU1VCRElSKS9saWJ0ZXJtY2FwIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYnRlcm1jYXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC13aW5zdXAgaW5zdGFsbGNoZWNrLXRhcmdldC13aW5zdXAKLW1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtd2luc3VwOgotCi1pbnN0YWxsY2hlY2stdGFyZ2V0LXdpbnN1cDogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtd2luc3VwIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvd2luc3VwL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS93aW5zdXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJnbG9zcyBpbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmdsb3NzCi1tYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmdsb3NzOgotCi1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmdsb3NzOiBcCi0gICAgY29uZmlndXJlLXRhcmdldC1saWJnbG9zcyAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGliaWJlcnR5IGluc3RhbGxjaGVjay10YXJnZXQtbGliaWJlcnR5Ci1tYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmliZXJ0eToKLQotaW5zdGFsbGNoZWNrLXRhcmdldC1saWJpYmVydHk6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmliZXJ0eSAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtZ3BlcmYgaW5zdGFsbGNoZWNrLXRhcmdldC1ncGVyZgotbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1ncGVyZjoKLQotaW5zdGFsbGNoZWNrLXRhcmdldC1ncGVyZjogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtZ3BlcmYgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ncGVyZi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gJChUQVJHRVRfU1VCRElSKS9ncGVyZiIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9ncGVyZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWV4YW1wbGVzIGluc3RhbGxjaGVjay10YXJnZXQtZXhhbXBsZXMKLW1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtZXhhbXBsZXM6Ci0KLWluc3RhbGxjaGVjay10YXJnZXQtZXhhbXBsZXM6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWV4YW1wbGVzIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJmZmkgaW5zdGFsbGNoZWNrLXRhcmdldC1saWJmZmkKLW1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGliZmZpOgotCi1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmZmaTogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliZmZpIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZmZpL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmZmkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJqYXZhIGluc3RhbGxjaGVjay10YXJnZXQtbGliamF2YQotbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJqYXZhOgotCi1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmphdmE6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmphdmEgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJqYXZhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliamF2YSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LXpsaWIgaW5zdGFsbGNoZWNrLXRhcmdldC16bGliCi1tYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LXpsaWI6Ci0KLWluc3RhbGxjaGVjay10YXJnZXQtemxpYjogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtemxpYiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvemxpYiIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS96bGliICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtYm9laG0tZ2MgaW5zdGFsbGNoZWNrLXRhcmdldC1ib2VobS1nYwotbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1ib2VobS1nYzoKLQotaW5zdGFsbGNoZWNrLXRhcmdldC1ib2VobS1nYzogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtYm9laG0tZ2MgCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGluc3RhbGxjaGVjaykgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LXF0aHJlYWRzIGluc3RhbGxjaGVjay10YXJnZXQtcXRocmVhZHMKLW1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtcXRocmVhZHM6Ci0KLWluc3RhbGxjaGVjay10YXJnZXQtcXRocmVhZHM6IFwKLSAgICBjb25maWd1cmUtdGFyZ2V0LXF0aHJlYWRzIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1yZGEgaW5zdGFsbGNoZWNrLXRhcmdldC1yZGEKLW1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtcmRhOgotCi1pbnN0YWxsY2hlY2stdGFyZ2V0LXJkYTogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtcmRhIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcmRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiAkKFRBUkdFVF9TVUJESVIpL3JkYSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9yZGEgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJhZGEgaW5zdGFsbGNoZWNrLXRhcmdldC1saWJhZGEKLW1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGliYWRhOgotCi1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmFkYTogXAotICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliYWRhIAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliYWRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJhZGEgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKLQkgIHx8IGV4aXQgMQotCi0KLQogLlBIT05ZOiBkby1tb3N0bHljbGVhbgogZG8tbW9zdGx5Y2xlYW46IG1vc3RseWNsZWFuLWhvc3QgbW9zdGx5Y2xlYW4tdGFyZ2V0CiAKQEAgLTEwMzc2LDE2OTEgKzEyNTUsNiBAQAogICAgIG1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1yZGEgXAogICAgIG1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1saWJhZGEKIAotIyBHQ0MsIHRoZSBldGVybmFsIHNwZWNpYWwgY2FzZQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1nY2MgbW9zdGx5Y2xlYW4tZ2NjCi1tYXliZS1tb3N0bHljbGVhbi1nY2M6Ci1tb3N0bHljbGVhbi1nY2M6IAotCUBbIC1mIC4vZ2NjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9HQ0NfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBnY2MiIDsgXAotCShjZCBnY2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLSMgSG9zdCBtb2R1bGVzLgotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWFzaCBtb3N0bHljbGVhbi1hc2gKLW1heWJlLW1vc3RseWNsZWFuLWFzaDoKLQotbW9zdGx5Y2xlYW4tYXNoOiAKLQlAWyAtZiAuL2FzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGFzaCIgOyBcCi0JKGNkIGFzaCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWF1dG9jb25mIG1vc3RseWNsZWFuLWF1dG9jb25mCi1tYXliZS1tb3N0bHljbGVhbi1hdXRvY29uZjoKLQotbW9zdGx5Y2xlYW4tYXV0b2NvbmY6IAotCUBbIC1mIC4vYXV0b2NvbmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBhdXRvY29uZiIgOyBcCi0JKGNkIGF1dG9jb25mICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tYXV0b21ha2UgbW9zdGx5Y2xlYW4tYXV0b21ha2UKLW1heWJlLW1vc3RseWNsZWFuLWF1dG9tYWtlOgotCi1tb3N0bHljbGVhbi1hdXRvbWFrZTogCi0JQFsgLWYgLi9hdXRvbWFrZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGF1dG9tYWtlIiA7IFwKLQkoY2QgYXV0b21ha2UgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1iYXNoIG1vc3RseWNsZWFuLWJhc2gKLW1heWJlLW1vc3RseWNsZWFuLWJhc2g6Ci0KLW1vc3RseWNsZWFuLWJhc2g6IAotCUBbIC1mIC4vYmFzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGJhc2giIDsgXAotCShjZCBiYXNoICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tYmZkIG1vc3RseWNsZWFuLWJmZAotbWF5YmUtbW9zdGx5Y2xlYW4tYmZkOgotCi1tb3N0bHljbGVhbi1iZmQ6IAotCUBbIC1mIC4vYmZkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gYmZkIiA7IFwKLQkoY2QgYmZkICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tb3Bjb2RlcyBtb3N0bHljbGVhbi1vcGNvZGVzCi1tYXliZS1tb3N0bHljbGVhbi1vcGNvZGVzOgotCi1tb3N0bHljbGVhbi1vcGNvZGVzOiAKLQlAWyAtZiAuL29wY29kZXMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBvcGNvZGVzIiA7IFwKLQkoY2Qgb3Bjb2RlcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWJpbnV0aWxzIG1vc3RseWNsZWFuLWJpbnV0aWxzCi1tYXliZS1tb3N0bHljbGVhbi1iaW51dGlsczoKLQotbW9zdGx5Y2xlYW4tYmludXRpbHM6IAotCUBbIC1mIC4vYmludXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBiaW51dGlscyIgOyBcCi0JKGNkIGJpbnV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tYmlzb24gbW9zdGx5Y2xlYW4tYmlzb24KLW1heWJlLW1vc3RseWNsZWFuLWJpc29uOgotCi1tb3N0bHljbGVhbi1iaXNvbjogCi0JQFsgLWYgLi9iaXNvbi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGJpc29uIiA7IFwKLQkoY2QgYmlzb24gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1ieWFjYyBtb3N0bHljbGVhbi1ieWFjYwotbWF5YmUtbW9zdGx5Y2xlYW4tYnlhY2M6Ci0KLW1vc3RseWNsZWFuLWJ5YWNjOiAKLQlAWyAtZiAuL2J5YWNjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gYnlhY2MiIDsgXAotCShjZCBieWFjYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWJ6aXAyIG1vc3RseWNsZWFuLWJ6aXAyCi1tYXliZS1tb3N0bHljbGVhbi1iemlwMjoKLQotbW9zdGx5Y2xlYW4tYnppcDI6IAotCUBbIC1mIC4vYnppcDIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBiemlwMiIgOyBcCi0JKGNkIGJ6aXAyICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZGVqYWdudSBtb3N0bHljbGVhbi1kZWphZ251Ci1tYXliZS1tb3N0bHljbGVhbi1kZWphZ251OgotCi1tb3N0bHljbGVhbi1kZWphZ251OiAKLQlAWyAtZiAuL2RlamFnbnUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBkZWphZ251IiA7IFwKLQkoY2QgZGVqYWdudSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWRpZmYgbW9zdGx5Y2xlYW4tZGlmZgotbWF5YmUtbW9zdGx5Y2xlYW4tZGlmZjoKLQotbW9zdGx5Y2xlYW4tZGlmZjogCi0JQFsgLWYgLi9kaWZmL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZGlmZiIgOyBcCi0JKGNkIGRpZmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1kb3N1dGlscyBtb3N0bHljbGVhbi1kb3N1dGlscwotbWF5YmUtbW9zdGx5Y2xlYW4tZG9zdXRpbHM6Ci0KLW1vc3RseWNsZWFuLWRvc3V0aWxzOiAKLQlAWyAtZiAuL2Rvc3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZG9zdXRpbHMiIDsgXAotCShjZCBkb3N1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWV0YyBtb3N0bHljbGVhbi1ldGMKLW1heWJlLW1vc3RseWNsZWFuLWV0YzoKLQotbW9zdGx5Y2xlYW4tZXRjOiAKLQlAWyAtZiAuL2V0Yy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGV0YyIgOyBcCi0JKGNkIGV0YyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWZhc3RqYXIgbW9zdGx5Y2xlYW4tZmFzdGphcgotbWF5YmUtbW9zdGx5Y2xlYW4tZmFzdGphcjoKLQotbW9zdGx5Y2xlYW4tZmFzdGphcjogCi0JQFsgLWYgLi9mYXN0amFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZmFzdGphciIgOyBcCi0JKGNkIGZhc3RqYXIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1maWxldXRpbHMgbW9zdGx5Y2xlYW4tZmlsZXV0aWxzCi1tYXliZS1tb3N0bHljbGVhbi1maWxldXRpbHM6Ci0KLW1vc3RseWNsZWFuLWZpbGV1dGlsczogCi0JQFsgLWYgLi9maWxldXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBmaWxldXRpbHMiIDsgXAotCShjZCBmaWxldXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1maW5kdXRpbHMgbW9zdGx5Y2xlYW4tZmluZHV0aWxzCi1tYXliZS1tb3N0bHljbGVhbi1maW5kdXRpbHM6Ci0KLW1vc3RseWNsZWFuLWZpbmR1dGlsczogCi0JQFsgLWYgLi9maW5kdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBmaW5kdXRpbHMiIDsgXAotCShjZCBmaW5kdXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1maW5kIG1vc3RseWNsZWFuLWZpbmQKLW1heWJlLW1vc3RseWNsZWFuLWZpbmQ6Ci0KLW1vc3RseWNsZWFuLWZpbmQ6IAotCUBbIC1mIC4vZmluZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGZpbmQiIDsgXAotCShjZCBmaW5kICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZmxleCBtb3N0bHljbGVhbi1mbGV4Ci1tYXliZS1tb3N0bHljbGVhbi1mbGV4OgotCi1tb3N0bHljbGVhbi1mbGV4OiAKLQlAWyAtZiAuL2ZsZXgvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBmbGV4IiA7IFwKLQkoY2QgZmxleCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWdhcyBtb3N0bHljbGVhbi1nYXMKLW1heWJlLW1vc3RseWNsZWFuLWdhczoKLQotbW9zdGx5Y2xlYW4tZ2FzOiAKLQlAWyAtZiAuL2dhcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGdhcyIgOyBcCi0JKGNkIGdhcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWdhd2sgbW9zdGx5Y2xlYW4tZ2F3awotbWF5YmUtbW9zdGx5Y2xlYW4tZ2F3azoKLQotbW9zdGx5Y2xlYW4tZ2F3azogCi0JQFsgLWYgLi9nYXdrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZ2F3ayIgOyBcCi0JKGNkIGdhd2sgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1nZXR0ZXh0IG1vc3RseWNsZWFuLWdldHRleHQKLW1heWJlLW1vc3RseWNsZWFuLWdldHRleHQ6Ci0KLW1vc3RseWNsZWFuLWdldHRleHQ6IAotCUBbIC1mIC4vZ2V0dGV4dC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGdldHRleHQiIDsgXAotCShjZCBnZXR0ZXh0ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZ251c2VydiBtb3N0bHljbGVhbi1nbnVzZXJ2Ci1tYXliZS1tb3N0bHljbGVhbi1nbnVzZXJ2OgotCi1tb3N0bHljbGVhbi1nbnVzZXJ2OiAKLQlAWyAtZiAuL2dudXNlcnYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBnbnVzZXJ2IiA7IFwKLQkoY2QgZ251c2VydiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWdwcm9mIG1vc3RseWNsZWFuLWdwcm9mCi1tYXliZS1tb3N0bHljbGVhbi1ncHJvZjoKLQotbW9zdGx5Y2xlYW4tZ3Byb2Y6IAotCUBbIC1mIC4vZ3Byb2YvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBncHJvZiIgOyBcCi0JKGNkIGdwcm9mICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZ3ppcCBtb3N0bHljbGVhbi1nemlwCi1tYXliZS1tb3N0bHljbGVhbi1nemlwOgotCi1tb3N0bHljbGVhbi1nemlwOiAKLQlAWyAtZiAuL2d6aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBnemlwIiA7IFwKLQkoY2QgZ3ppcCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWhlbGxvIG1vc3RseWNsZWFuLWhlbGxvCi1tYXliZS1tb3N0bHljbGVhbi1oZWxsbzoKLQotbW9zdGx5Y2xlYW4taGVsbG86IAotCUBbIC1mIC4vaGVsbG8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBoZWxsbyIgOyBcCi0JKGNkIGhlbGxvICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4taW5kZW50IG1vc3RseWNsZWFuLWluZGVudAotbWF5YmUtbW9zdGx5Y2xlYW4taW5kZW50OgotCi1tb3N0bHljbGVhbi1pbmRlbnQ6IAotCUBbIC1mIC4vaW5kZW50L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gaW5kZW50IiA7IFwKLQkoY2QgaW5kZW50ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4taW50bCBtb3N0bHljbGVhbi1pbnRsCi1tYXliZS1tb3N0bHljbGVhbi1pbnRsOgotCi1tb3N0bHljbGVhbi1pbnRsOiAKLQlAWyAtZiAuL2ludGwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBpbnRsIiA7IFwKLQkoY2QgaW50bCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXRjbCBtb3N0bHljbGVhbi10Y2wKLW1heWJlLW1vc3RseWNsZWFuLXRjbDoKLQotIyB0Y2wgZG9lc24ndCBzdXBwb3J0IG1vc3RseWNsZWFuLgotbW9zdGx5Y2xlYW4tdGNsOgotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4taXRjbCBtb3N0bHljbGVhbi1pdGNsCi1tYXliZS1tb3N0bHljbGVhbi1pdGNsOgotCi1tb3N0bHljbGVhbi1pdGNsOiAKLQlAWyAtZiAuL2l0Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBpdGNsIiA7IFwKLQkoY2QgaXRjbCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWxkIG1vc3RseWNsZWFuLWxkCi1tYXliZS1tb3N0bHljbGVhbi1sZDoKLQotbW9zdGx5Y2xlYW4tbGQ6IAotCUBbIC1mIC4vbGQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBsZCIgOyBcCi0JKGNkIGxkICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tbGliZ3VpIG1vc3RseWNsZWFuLWxpYmd1aQotbWF5YmUtbW9zdGx5Y2xlYW4tbGliZ3VpOgotCi1tb3N0bHljbGVhbi1saWJndWk6IAotCUBbIC1mIC4vbGliZ3VpL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gbGliZ3VpIiA7IFwKLQkoY2QgbGliZ3VpICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tbGliaWJlcnR5IG1vc3RseWNsZWFuLWxpYmliZXJ0eQotbWF5YmUtbW9zdGx5Y2xlYW4tbGliaWJlcnR5OgotCi1tb3N0bHljbGVhbi1saWJpYmVydHk6IAotCUBbIC1mIC4vbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gbGliaWJlcnR5IiA7IFwKLQkoY2QgbGliaWJlcnR5ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tbGlidG9vbCBtb3N0bHljbGVhbi1saWJ0b29sCi1tYXliZS1tb3N0bHljbGVhbi1saWJ0b29sOgotCi1tb3N0bHljbGVhbi1saWJ0b29sOiAKLQlAWyAtZiAuL2xpYnRvb2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBsaWJ0b29sIiA7IFwKLQkoY2QgbGlidG9vbCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLW00IG1vc3RseWNsZWFuLW00Ci1tYXliZS1tb3N0bHljbGVhbi1tNDoKLQotbW9zdGx5Y2xlYW4tbTQ6IAotCUBbIC1mIC4vbTQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBtNCIgOyBcCi0JKGNkIG00ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tbWFrZSBtb3N0bHljbGVhbi1tYWtlCi1tYXliZS1tb3N0bHljbGVhbi1tYWtlOgotCi1tb3N0bHljbGVhbi1tYWtlOiAKLQlAWyAtZiAuL21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBtYWtlIiA7IFwKLQkoY2QgbWFrZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLW1tYWxsb2MgbW9zdGx5Y2xlYW4tbW1hbGxvYwotbWF5YmUtbW9zdGx5Y2xlYW4tbW1hbGxvYzoKLQotbW9zdGx5Y2xlYW4tbW1hbGxvYzogCi0JQFsgLWYgLi9tbWFsbG9jL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gbW1hbGxvYyIgOyBcCi0JKGNkIG1tYWxsb2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1wYXRjaCBtb3N0bHljbGVhbi1wYXRjaAotbWF5YmUtbW9zdGx5Y2xlYW4tcGF0Y2g6Ci0KLW1vc3RseWNsZWFuLXBhdGNoOiAKLQlAWyAtZiAuL3BhdGNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gcGF0Y2giIDsgXAotCShjZCBwYXRjaCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXBlcmwgbW9zdGx5Y2xlYW4tcGVybAotbWF5YmUtbW9zdGx5Y2xlYW4tcGVybDoKLQotbW9zdGx5Y2xlYW4tcGVybDogCi0JQFsgLWYgLi9wZXJsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gcGVybCIgOyBcCi0JKGNkIHBlcmwgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1wcm1zIG1vc3RseWNsZWFuLXBybXMKLW1heWJlLW1vc3RseWNsZWFuLXBybXM6Ci0KLW1vc3RseWNsZWFuLXBybXM6IAotCUBbIC1mIC4vcHJtcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHBybXMiIDsgXAotCShjZCBwcm1zICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tcmNzIG1vc3RseWNsZWFuLXJjcwotbWF5YmUtbW9zdGx5Y2xlYW4tcmNzOgotCi1tb3N0bHljbGVhbi1yY3M6IAotCUBbIC1mIC4vcmNzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gcmNzIiA7IFwKLQkoY2QgcmNzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tcmVhZGxpbmUgbW9zdGx5Y2xlYW4tcmVhZGxpbmUKLW1heWJlLW1vc3RseWNsZWFuLXJlYWRsaW5lOgotCi1tb3N0bHljbGVhbi1yZWFkbGluZTogCi0JQFsgLWYgLi9yZWFkbGluZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHJlYWRsaW5lIiA7IFwKLQkoY2QgcmVhZGxpbmUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1yZWxlYXNlIG1vc3RseWNsZWFuLXJlbGVhc2UKLW1heWJlLW1vc3RseWNsZWFuLXJlbGVhc2U6Ci0KLW1vc3RseWNsZWFuLXJlbGVhc2U6IAotCUBbIC1mIC4vcmVsZWFzZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHJlbGVhc2UiIDsgXAotCShjZCByZWxlYXNlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tcmVjb2RlIG1vc3RseWNsZWFuLXJlY29kZQotbWF5YmUtbW9zdGx5Y2xlYW4tcmVjb2RlOgotCi1tb3N0bHljbGVhbi1yZWNvZGU6IAotCUBbIC1mIC4vcmVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gcmVjb2RlIiA7IFwKLQkoY2QgcmVjb2RlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tc2VkIG1vc3RseWNsZWFuLXNlZAotbWF5YmUtbW9zdGx5Y2xlYW4tc2VkOgotCi1tb3N0bHljbGVhbi1zZWQ6IAotCUBbIC1mIC4vc2VkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gc2VkIiA7IFwKLQkoY2Qgc2VkICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tc2VuZC1wciBtb3N0bHljbGVhbi1zZW5kLXByCi1tYXliZS1tb3N0bHljbGVhbi1zZW5kLXByOgotCi1tb3N0bHljbGVhbi1zZW5kLXByOiAKLQlAWyAtZiAuL3NlbmQtcHIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBzZW5kLXByIiA7IFwKLQkoY2Qgc2VuZC1wciAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXNoZWxsdXRpbHMgbW9zdGx5Y2xlYW4tc2hlbGx1dGlscwotbWF5YmUtbW9zdGx5Y2xlYW4tc2hlbGx1dGlsczoKLQotbW9zdGx5Y2xlYW4tc2hlbGx1dGlsczogCi0JQFsgLWYgLi9zaGVsbHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gc2hlbGx1dGlscyIgOyBcCi0JKGNkIHNoZWxsdXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1zaWQgbW9zdGx5Y2xlYW4tc2lkCi1tYXliZS1tb3N0bHljbGVhbi1zaWQ6Ci0KLW1vc3RseWNsZWFuLXNpZDogCi0JQFsgLWYgLi9zaWQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBzaWQiIDsgXAotCShjZCBzaWQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1zaW0gbW9zdGx5Y2xlYW4tc2ltCi1tYXliZS1tb3N0bHljbGVhbi1zaW06Ci0KLW1vc3RseWNsZWFuLXNpbTogCi0JQFsgLWYgLi9zaW0vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBzaW0iIDsgXAotCShjZCBzaW0gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXIgbW9zdGx5Y2xlYW4tdGFyCi1tYXliZS1tb3N0bHljbGVhbi10YXI6Ci0KLW1vc3RseWNsZWFuLXRhcjogCi0JQFsgLWYgLi90YXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiB0YXIiIDsgXAotCShjZCB0YXIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10ZXhpbmZvIG1vc3RseWNsZWFuLXRleGluZm8KLW1heWJlLW1vc3RseWNsZWFuLXRleGluZm86Ci0KLW1vc3RseWNsZWFuLXRleGluZm86IAotCUBbIC1mIC4vdGV4aW5mby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHRleGluZm8iIDsgXAotCShjZCB0ZXhpbmZvICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGV4dHV0aWxzIG1vc3RseWNsZWFuLXRleHR1dGlscwotbWF5YmUtbW9zdGx5Y2xlYW4tdGV4dHV0aWxzOgotCi1tb3N0bHljbGVhbi10ZXh0dXRpbHM6IAotCUBbIC1mIC4vdGV4dHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gdGV4dHV0aWxzIiA7IFwKLQkoY2QgdGV4dHV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGltZSBtb3N0bHljbGVhbi10aW1lCi1tYXliZS1tb3N0bHljbGVhbi10aW1lOgotCi1tb3N0bHljbGVhbi10aW1lOiAKLQlAWyAtZiAuL3RpbWUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiB0aW1lIiA7IFwKLQkoY2QgdGltZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXV1ZGVjb2RlIG1vc3RseWNsZWFuLXV1ZGVjb2RlCi1tYXliZS1tb3N0bHljbGVhbi11dWRlY29kZToKLQotbW9zdGx5Y2xlYW4tdXVkZWNvZGU6IAotCUBbIC1mIC4vdXVkZWNvZGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiB1dWRlY29kZSIgOyBcCi0JKGNkIHV1ZGVjb2RlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4td2RpZmYgbW9zdGx5Y2xlYW4td2RpZmYKLW1heWJlLW1vc3RseWNsZWFuLXdkaWZmOgotCi1tb3N0bHljbGVhbi13ZGlmZjogCi0JQFsgLWYgLi93ZGlmZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHdkaWZmIiA7IFwKLQkoY2Qgd2RpZmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi16aXAgbW9zdGx5Y2xlYW4temlwCi1tYXliZS1tb3N0bHljbGVhbi16aXA6Ci0KLW1vc3RseWNsZWFuLXppcDogCi0JQFsgLWYgLi96aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiB6aXAiIDsgXAotCShjZCB6aXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi16bGliIG1vc3RseWNsZWFuLXpsaWIKLW1heWJlLW1vc3RseWNsZWFuLXpsaWI6Ci0KLW1vc3RseWNsZWFuLXpsaWI6IAotCUBbIC1mIC4vemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHpsaWIiIDsgXAotCShjZCB6bGliICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZ2RiIG1vc3RseWNsZWFuLWdkYgotbWF5YmUtbW9zdGx5Y2xlYW4tZ2RiOgotCi1tb3N0bHljbGVhbi1nZGI6IAotCUBbIC1mIC4vZ2RiL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZ2RiIiA7IFwKLQkoY2QgZ2RiICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZXhwZWN0IG1vc3RseWNsZWFuLWV4cGVjdAotbWF5YmUtbW9zdGx5Y2xlYW4tZXhwZWN0OgotCi1tb3N0bHljbGVhbi1leHBlY3Q6IAotCUBbIC1mIC4vZXhwZWN0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZXhwZWN0IiA7IFwKLQkoY2QgZXhwZWN0ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZ3VpbGUgbW9zdGx5Y2xlYW4tZ3VpbGUKLW1heWJlLW1vc3RseWNsZWFuLWd1aWxlOgotCi1tb3N0bHljbGVhbi1ndWlsZTogCi0JQFsgLWYgLi9ndWlsZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGd1aWxlIiA7IFwKLQkoY2QgZ3VpbGUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10ayBtb3N0bHljbGVhbi10awotbWF5YmUtbW9zdGx5Y2xlYW4tdGs6Ci0KLW1vc3RseWNsZWFuLXRrOiAKLQlAWyAtZiAuL3RrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gdGsiIDsgXAotCShjZCB0ayAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXRpeCBtb3N0bHljbGVhbi10aXgKLW1heWJlLW1vc3RseWNsZWFuLXRpeDoKLQotbW9zdGx5Y2xlYW4tdGl4OiAKLQlAWyAtZiAuL3RpeC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHRpeCIgOyBcCi0JKGNkIHRpeCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWxpYnRlcm1jYXAgbW9zdGx5Y2xlYW4tbGlidGVybWNhcAotbWF5YmUtbW9zdGx5Y2xlYW4tbGlidGVybWNhcDoKLQotIyBsaWJ0ZXJtY2FwIGRvZXNuJ3Qgc3VwcG9ydCBtb3N0bHljbGVhbi4KLW1vc3RseWNsZWFuLWxpYnRlcm1jYXA6Ci0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi11dGlscyBtb3N0bHljbGVhbi11dGlscwotbWF5YmUtbW9zdGx5Y2xlYW4tdXRpbHM6Ci0KLW1vc3RseWNsZWFuLXV0aWxzOiAKLQlAWyAtZiAuL3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gdXRpbHMiIDsgXAotCShjZCB1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0KLSMgVGFyZ2V0IG1vZHVsZXMuCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYnN0ZGMrKy12MyBtb3N0bHljbGVhbi10YXJnZXQtbGlic3RkYysrLXYzCi1tYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGlic3RkYysrLXYzOgotCi1tb3N0bHljbGVhbi10YXJnZXQtbGlic3RkYysrLXYzOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12My9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbmV3bGliIG1vc3RseWNsZWFuLXRhcmdldC1uZXdsaWIKLW1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1uZXdsaWI6Ci0KLW1vc3RseWNsZWFuLXRhcmdldC1uZXdsaWI6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbmV3bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbmV3bGliIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL25ld2xpYiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1saWJmMmMgbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmYyYwotbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmYyYzoKLQotbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmYyYzogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJmMmMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJmMmMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZjJjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYm9iamMgbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYm9iamMKLW1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1saWJvYmpjOgotCi1tb3N0bHljbGVhbi10YXJnZXQtbGlib2JqYzogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXAgbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXAKLW1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1saWJ0ZXJtY2FwOgotCi0jIGxpYnRlcm1jYXAgZG9lc24ndCBzdXBwb3J0IG1vc3RseWNsZWFuLgotbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXA6Ci0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtd2luc3VwIG1vc3RseWNsZWFuLXRhcmdldC13aW5zdXAKLW1heWJlLW1vc3RseWNsZWFuLXRhcmdldC13aW5zdXA6Ci0KLW1vc3RseWNsZWFuLXRhcmdldC13aW5zdXA6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvd2luc3VwL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvd2luc3VwIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1saWJnbG9zcyBtb3N0bHljbGVhbi10YXJnZXQtbGliZ2xvc3MKLW1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1saWJnbG9zczoKLQotbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmdsb3NzOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliZ2xvc3MiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZ2xvc3MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGliaWJlcnR5IG1vc3RseWNsZWFuLXRhcmdldC1saWJpYmVydHkKLW1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1saWJpYmVydHk6Ci0KLW1vc3RseWNsZWFuLXRhcmdldC1saWJpYmVydHk6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5IiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1ncGVyZiBtb3N0bHljbGVhbi10YXJnZXQtZ3BlcmYKLW1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1ncGVyZjoKLQotbW9zdGx5Y2xlYW4tdGFyZ2V0LWdwZXJmOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2dwZXJmL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtZXhhbXBsZXMgbW9zdGx5Y2xlYW4tdGFyZ2V0LWV4YW1wbGVzCi1tYXliZS1tb3N0bHljbGVhbi10YXJnZXQtZXhhbXBsZXM6Ci0KLW1vc3RseWNsZWFuLXRhcmdldC1leGFtcGxlczogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9leGFtcGxlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmZmaSBtb3N0bHljbGVhbi10YXJnZXQtbGliZmZpCi1tYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGliZmZpOgotCi1tb3N0bHljbGVhbi10YXJnZXQtbGliZmZpOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmZmkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGliamF2YSBtb3N0bHljbGVhbi10YXJnZXQtbGliamF2YQotbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmphdmE6Ci0KLW1vc3RseWNsZWFuLXRhcmdldC1saWJqYXZhOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJqYXZhIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtemxpYiBtb3N0bHljbGVhbi10YXJnZXQtemxpYgotbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LXpsaWI6Ci0KLW1vc3RseWNsZWFuLXRhcmdldC16bGliOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS96bGliIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3psaWIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtYm9laG0tZ2MgbW9zdGx5Y2xlYW4tdGFyZ2V0LWJvZWhtLWdjCi1tYXliZS1tb3N0bHljbGVhbi10YXJnZXQtYm9laG0tZ2M6Ci0KLW1vc3RseWNsZWFuLXRhcmdldC1ib2VobS1nYzogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LXF0aHJlYWRzIG1vc3RseWNsZWFuLXRhcmdldC1xdGhyZWFkcwotbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LXF0aHJlYWRzOgotCi1tb3N0bHljbGVhbi10YXJnZXQtcXRocmVhZHM6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1vc3RseWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1yZGEgbW9zdGx5Y2xlYW4tdGFyZ2V0LXJkYQotbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LXJkYToKLQotbW9zdGx5Y2xlYW4tdGFyZ2V0LXJkYTogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9yZGEvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9yZGEiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvcmRhICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmFkYSBtb3N0bHljbGVhbi10YXJnZXQtbGliYWRhCi1tYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGliYWRhOgotCi1tb3N0bHljbGVhbi10YXJnZXQtbGliYWRhOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJhZGEgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtb3N0bHljbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotCiAuUEhPTlk6IGRvLWNsZWFuCiBkby1jbGVhbjogY2xlYW4taG9zdCBjbGVhbi10YXJnZXQKIApAQCAtMTIxNTEsMTcwNSArMTM0NSw2IEBACiAgICAgbWF5YmUtY2xlYW4tdGFyZ2V0LXJkYSBcCiAgICAgbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYmFkYQogCi0jIEdDQywgdGhlIGV0ZXJuYWwgc3BlY2lhbCBjYXNlCi0uUEhPTlk6IG1heWJlLWNsZWFuLWdjYyBjbGVhbi1nY2MKLW1heWJlLWNsZWFuLWdjYzoKLWNsZWFuLWdjYzogCi0JQFsgLWYgLi9nY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0dDQ19GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGdjYyIgOyBcCi0JKGNkIGdjYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotIyBIb3N0IG1vZHVsZXMuCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tYXNoIGNsZWFuLWFzaAotbWF5YmUtY2xlYW4tYXNoOgotCi1jbGVhbi1hc2g6IAotCUBbIC1mIC4vYXNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gYXNoIiA7IFwKLQkoY2QgYXNoICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tYXV0b2NvbmYgY2xlYW4tYXV0b2NvbmYKLW1heWJlLWNsZWFuLWF1dG9jb25mOgotCi1jbGVhbi1hdXRvY29uZjogCi0JQFsgLWYgLi9hdXRvY29uZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGF1dG9jb25mIiA7IFwKLQkoY2QgYXV0b2NvbmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1hdXRvbWFrZSBjbGVhbi1hdXRvbWFrZQotbWF5YmUtY2xlYW4tYXV0b21ha2U6Ci0KLWNsZWFuLWF1dG9tYWtlOiAKLQlAWyAtZiAuL2F1dG9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gYXV0b21ha2UiIDsgXAotCShjZCBhdXRvbWFrZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLWJhc2ggY2xlYW4tYmFzaAotbWF5YmUtY2xlYW4tYmFzaDoKLQotY2xlYW4tYmFzaDogCi0JQFsgLWYgLi9iYXNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gYmFzaCIgOyBcCi0JKGNkIGJhc2ggJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1iZmQgY2xlYW4tYmZkCi1tYXliZS1jbGVhbi1iZmQ6Ci0KLWNsZWFuLWJmZDogCi0JQFsgLWYgLi9iZmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBiZmQiIDsgXAotCShjZCBiZmQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1vcGNvZGVzIGNsZWFuLW9wY29kZXMKLW1heWJlLWNsZWFuLW9wY29kZXM6Ci0KLWNsZWFuLW9wY29kZXM6IAotCUBbIC1mIC4vb3Bjb2Rlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIG9wY29kZXMiIDsgXAotCShjZCBvcGNvZGVzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tYmludXRpbHMgY2xlYW4tYmludXRpbHMKLW1heWJlLWNsZWFuLWJpbnV0aWxzOgotCi1jbGVhbi1iaW51dGlsczogCi0JQFsgLWYgLi9iaW51dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGJpbnV0aWxzIiA7IFwKLQkoY2QgYmludXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1iaXNvbiBjbGVhbi1iaXNvbgotbWF5YmUtY2xlYW4tYmlzb246Ci0KLWNsZWFuLWJpc29uOiAKLQlAWyAtZiAuL2Jpc29uL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gYmlzb24iIDsgXAotCShjZCBiaXNvbiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLWJ5YWNjIGNsZWFuLWJ5YWNjCi1tYXliZS1jbGVhbi1ieWFjYzoKLQotY2xlYW4tYnlhY2M6IAotCUBbIC1mIC4vYnlhY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBieWFjYyIgOyBcCi0JKGNkIGJ5YWNjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tYnppcDIgY2xlYW4tYnppcDIKLW1heWJlLWNsZWFuLWJ6aXAyOgotCi1jbGVhbi1iemlwMjogCi0JQFsgLWYgLi9iemlwMi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGJ6aXAyIiA7IFwKLQkoY2QgYnppcDIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1kZWphZ251IGNsZWFuLWRlamFnbnUKLW1heWJlLWNsZWFuLWRlamFnbnU6Ci0KLWNsZWFuLWRlamFnbnU6IAotCUBbIC1mIC4vZGVqYWdudS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGRlamFnbnUiIDsgXAotCShjZCBkZWphZ251ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tZGlmZiBjbGVhbi1kaWZmCi1tYXliZS1jbGVhbi1kaWZmOgotCi1jbGVhbi1kaWZmOiAKLQlAWyAtZiAuL2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBkaWZmIiA7IFwKLQkoY2QgZGlmZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLWRvc3V0aWxzIGNsZWFuLWRvc3V0aWxzCi1tYXliZS1jbGVhbi1kb3N1dGlsczoKLQotY2xlYW4tZG9zdXRpbHM6IAotCUBbIC1mIC4vZG9zdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBkb3N1dGlscyIgOyBcCi0JKGNkIGRvc3V0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tZXRjIGNsZWFuLWV0YwotbWF5YmUtY2xlYW4tZXRjOgotCi1jbGVhbi1ldGM6IAotCUBbIC1mIC4vZXRjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gZXRjIiA7IFwKLQkoY2QgZXRjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tZmFzdGphciBjbGVhbi1mYXN0amFyCi1tYXliZS1jbGVhbi1mYXN0amFyOgotCi1jbGVhbi1mYXN0amFyOiAKLQlAWyAtZiAuL2Zhc3RqYXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBmYXN0amFyIiA7IFwKLQkoY2QgZmFzdGphciAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLWZpbGV1dGlscyBjbGVhbi1maWxldXRpbHMKLW1heWJlLWNsZWFuLWZpbGV1dGlsczoKLQotY2xlYW4tZmlsZXV0aWxzOiAKLQlAWyAtZiAuL2ZpbGV1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGZpbGV1dGlscyIgOyBcCi0JKGNkIGZpbGV1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLWZpbmR1dGlscyBjbGVhbi1maW5kdXRpbHMKLW1heWJlLWNsZWFuLWZpbmR1dGlsczoKLQotY2xlYW4tZmluZHV0aWxzOiAKLQlAWyAtZiAuL2ZpbmR1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGZpbmR1dGlscyIgOyBcCi0JKGNkIGZpbmR1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLWZpbmQgY2xlYW4tZmluZAotbWF5YmUtY2xlYW4tZmluZDoKLQotY2xlYW4tZmluZDogCi0JQFsgLWYgLi9maW5kL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gZmluZCIgOyBcCi0JKGNkIGZpbmQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1mbGV4IGNsZWFuLWZsZXgKLW1heWJlLWNsZWFuLWZsZXg6Ci0KLWNsZWFuLWZsZXg6IAotCUBbIC1mIC4vZmxleC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGZsZXgiIDsgXAotCShjZCBmbGV4ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tZ2FzIGNsZWFuLWdhcwotbWF5YmUtY2xlYW4tZ2FzOgotCi1jbGVhbi1nYXM6IAotCUBbIC1mIC4vZ2FzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gZ2FzIiA7IFwKLQkoY2QgZ2FzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tZ2F3ayBjbGVhbi1nYXdrCi1tYXliZS1jbGVhbi1nYXdrOgotCi1jbGVhbi1nYXdrOiAKLQlAWyAtZiAuL2dhd2svTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBnYXdrIiA7IFwKLQkoY2QgZ2F3ayAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLWdldHRleHQgY2xlYW4tZ2V0dGV4dAotbWF5YmUtY2xlYW4tZ2V0dGV4dDoKLQotY2xlYW4tZ2V0dGV4dDogCi0JQFsgLWYgLi9nZXR0ZXh0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gZ2V0dGV4dCIgOyBcCi0JKGNkIGdldHRleHQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1nbnVzZXJ2IGNsZWFuLWdudXNlcnYKLW1heWJlLWNsZWFuLWdudXNlcnY6Ci0KLWNsZWFuLWdudXNlcnY6IAotCUBbIC1mIC4vZ251c2Vydi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGdudXNlcnYiIDsgXAotCShjZCBnbnVzZXJ2ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tZ3Byb2YgY2xlYW4tZ3Byb2YKLW1heWJlLWNsZWFuLWdwcm9mOgotCi1jbGVhbi1ncHJvZjogCi0JQFsgLWYgLi9ncHJvZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGdwcm9mIiA7IFwKLQkoY2QgZ3Byb2YgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1nemlwIGNsZWFuLWd6aXAKLW1heWJlLWNsZWFuLWd6aXA6Ci0KLWNsZWFuLWd6aXA6IAotCUBbIC1mIC4vZ3ppcC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGd6aXAiIDsgXAotCShjZCBnemlwICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4taGVsbG8gY2xlYW4taGVsbG8KLW1heWJlLWNsZWFuLWhlbGxvOgotCi1jbGVhbi1oZWxsbzogCi0JQFsgLWYgLi9oZWxsby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGhlbGxvIiA7IFwKLQkoY2QgaGVsbG8gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1pbmRlbnQgY2xlYW4taW5kZW50Ci1tYXliZS1jbGVhbi1pbmRlbnQ6Ci0KLWNsZWFuLWluZGVudDogCi0JQFsgLWYgLi9pbmRlbnQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBpbmRlbnQiIDsgXAotCShjZCBpbmRlbnQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1pbnRsIGNsZWFuLWludGwKLW1heWJlLWNsZWFuLWludGw6Ci0KLWNsZWFuLWludGw6IAotCUBbIC1mIC4vaW50bC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGludGwiIDsgXAotCShjZCBpbnRsICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tdGNsIGNsZWFuLXRjbAotbWF5YmUtY2xlYW4tdGNsOgotCi1jbGVhbi10Y2w6IAotCUBbIC1mIC4vdGNsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gdGNsIiA7IFwKLQkoY2QgdGNsICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4taXRjbCBjbGVhbi1pdGNsCi1tYXliZS1jbGVhbi1pdGNsOgotCi1jbGVhbi1pdGNsOiAKLQlAWyAtZiAuL2l0Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBpdGNsIiA7IFwKLQkoY2QgaXRjbCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLWxkIGNsZWFuLWxkCi1tYXliZS1jbGVhbi1sZDoKLQotY2xlYW4tbGQ6IAotCUBbIC1mIC4vbGQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBsZCIgOyBcCi0JKGNkIGxkICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tbGliZ3VpIGNsZWFuLWxpYmd1aQotbWF5YmUtY2xlYW4tbGliZ3VpOgotCi1jbGVhbi1saWJndWk6IAotCUBbIC1mIC4vbGliZ3VpL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gbGliZ3VpIiA7IFwKLQkoY2QgbGliZ3VpICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tbGliaWJlcnR5IGNsZWFuLWxpYmliZXJ0eQotbWF5YmUtY2xlYW4tbGliaWJlcnR5OgotCi1jbGVhbi1saWJpYmVydHk6IAotCUBbIC1mIC4vbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gbGliaWJlcnR5IiA7IFwKLQkoY2QgbGliaWJlcnR5ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tbGlidG9vbCBjbGVhbi1saWJ0b29sCi1tYXliZS1jbGVhbi1saWJ0b29sOgotCi1jbGVhbi1saWJ0b29sOiAKLQlAWyAtZiAuL2xpYnRvb2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBsaWJ0b29sIiA7IFwKLQkoY2QgbGlidG9vbCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLW00IGNsZWFuLW00Ci1tYXliZS1jbGVhbi1tNDoKLQotY2xlYW4tbTQ6IAotCUBbIC1mIC4vbTQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBtNCIgOyBcCi0JKGNkIG00ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tbWFrZSBjbGVhbi1tYWtlCi1tYXliZS1jbGVhbi1tYWtlOgotCi1jbGVhbi1tYWtlOiAKLQlAWyAtZiAuL21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBtYWtlIiA7IFwKLQkoY2QgbWFrZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLW1tYWxsb2MgY2xlYW4tbW1hbGxvYwotbWF5YmUtY2xlYW4tbW1hbGxvYzoKLQotY2xlYW4tbW1hbGxvYzogCi0JQFsgLWYgLi9tbWFsbG9jL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gbW1hbGxvYyIgOyBcCi0JKGNkIG1tYWxsb2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1wYXRjaCBjbGVhbi1wYXRjaAotbWF5YmUtY2xlYW4tcGF0Y2g6Ci0KLWNsZWFuLXBhdGNoOiAKLQlAWyAtZiAuL3BhdGNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gcGF0Y2giIDsgXAotCShjZCBwYXRjaCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLXBlcmwgY2xlYW4tcGVybAotbWF5YmUtY2xlYW4tcGVybDoKLQotY2xlYW4tcGVybDogCi0JQFsgLWYgLi9wZXJsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gcGVybCIgOyBcCi0JKGNkIHBlcmwgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1wcm1zIGNsZWFuLXBybXMKLW1heWJlLWNsZWFuLXBybXM6Ci0KLWNsZWFuLXBybXM6IAotCUBbIC1mIC4vcHJtcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIHBybXMiIDsgXAotCShjZCBwcm1zICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tcmNzIGNsZWFuLXJjcwotbWF5YmUtY2xlYW4tcmNzOgotCi1jbGVhbi1yY3M6IAotCUBbIC1mIC4vcmNzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gcmNzIiA7IFwKLQkoY2QgcmNzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tcmVhZGxpbmUgY2xlYW4tcmVhZGxpbmUKLW1heWJlLWNsZWFuLXJlYWRsaW5lOgotCi1jbGVhbi1yZWFkbGluZTogCi0JQFsgLWYgLi9yZWFkbGluZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIHJlYWRsaW5lIiA7IFwKLQkoY2QgcmVhZGxpbmUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1yZWxlYXNlIGNsZWFuLXJlbGVhc2UKLW1heWJlLWNsZWFuLXJlbGVhc2U6Ci0KLWNsZWFuLXJlbGVhc2U6IAotCUBbIC1mIC4vcmVsZWFzZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIHJlbGVhc2UiIDsgXAotCShjZCByZWxlYXNlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tcmVjb2RlIGNsZWFuLXJlY29kZQotbWF5YmUtY2xlYW4tcmVjb2RlOgotCi1jbGVhbi1yZWNvZGU6IAotCUBbIC1mIC4vcmVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gcmVjb2RlIiA7IFwKLQkoY2QgcmVjb2RlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tc2VkIGNsZWFuLXNlZAotbWF5YmUtY2xlYW4tc2VkOgotCi1jbGVhbi1zZWQ6IAotCUBbIC1mIC4vc2VkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gc2VkIiA7IFwKLQkoY2Qgc2VkICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tc2VuZC1wciBjbGVhbi1zZW5kLXByCi1tYXliZS1jbGVhbi1zZW5kLXByOgotCi1jbGVhbi1zZW5kLXByOiAKLQlAWyAtZiAuL3NlbmQtcHIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBzZW5kLXByIiA7IFwKLQkoY2Qgc2VuZC1wciAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLXNoZWxsdXRpbHMgY2xlYW4tc2hlbGx1dGlscwotbWF5YmUtY2xlYW4tc2hlbGx1dGlsczoKLQotY2xlYW4tc2hlbGx1dGlsczogCi0JQFsgLWYgLi9zaGVsbHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gc2hlbGx1dGlscyIgOyBcCi0JKGNkIHNoZWxsdXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1zaWQgY2xlYW4tc2lkCi1tYXliZS1jbGVhbi1zaWQ6Ci0KLWNsZWFuLXNpZDogCi0JQFsgLWYgLi9zaWQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBzaWQiIDsgXAotCShjZCBzaWQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi1zaW0gY2xlYW4tc2ltCi1tYXliZS1jbGVhbi1zaW06Ci0KLWNsZWFuLXNpbTogCi0JQFsgLWYgLi9zaW0vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiBzaW0iIDsgXAotCShjZCBzaW0gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi10YXIgY2xlYW4tdGFyCi1tYXliZS1jbGVhbi10YXI6Ci0KLWNsZWFuLXRhcjogCi0JQFsgLWYgLi90YXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiB0YXIiIDsgXAotCShjZCB0YXIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi10ZXhpbmZvIGNsZWFuLXRleGluZm8KLW1heWJlLWNsZWFuLXRleGluZm86Ci0KLWNsZWFuLXRleGluZm86IAotCUBbIC1mIC4vdGV4aW5mby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIHRleGluZm8iIDsgXAotCShjZCB0ZXhpbmZvICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tdGV4dHV0aWxzIGNsZWFuLXRleHR1dGlscwotbWF5YmUtY2xlYW4tdGV4dHV0aWxzOgotCi1jbGVhbi10ZXh0dXRpbHM6IAotCUBbIC1mIC4vdGV4dHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gdGV4dHV0aWxzIiA7IFwKLQkoY2QgdGV4dHV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tdGltZSBjbGVhbi10aW1lCi1tYXliZS1jbGVhbi10aW1lOgotCi1jbGVhbi10aW1lOiAKLQlAWyAtZiAuL3RpbWUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiB0aW1lIiA7IFwKLQkoY2QgdGltZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLXV1ZGVjb2RlIGNsZWFuLXV1ZGVjb2RlCi1tYXliZS1jbGVhbi11dWRlY29kZToKLQotY2xlYW4tdXVkZWNvZGU6IAotCUBbIC1mIC4vdXVkZWNvZGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiB1dWRlY29kZSIgOyBcCi0JKGNkIHV1ZGVjb2RlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4td2RpZmYgY2xlYW4td2RpZmYKLW1heWJlLWNsZWFuLXdkaWZmOgotCi1jbGVhbi13ZGlmZjogCi0JQFsgLWYgLi93ZGlmZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIHdkaWZmIiA7IFwKLQkoY2Qgd2RpZmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi16aXAgY2xlYW4temlwCi1tYXliZS1jbGVhbi16aXA6Ci0KLWNsZWFuLXppcDogCi0JQFsgLWYgLi96aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiB6aXAiIDsgXAotCShjZCB6aXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi16bGliIGNsZWFuLXpsaWIKLW1heWJlLWNsZWFuLXpsaWI6Ci0KLWNsZWFuLXpsaWI6IAotCUBbIC1mIC4vemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIHpsaWIiIDsgXAotCShjZCB6bGliICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tZ2RiIGNsZWFuLWdkYgotbWF5YmUtY2xlYW4tZ2RiOgotCi1jbGVhbi1nZGI6IAotCUBbIC1mIC4vZ2RiL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gZ2RiIiA7IFwKLQkoY2QgZ2RiICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tZXhwZWN0IGNsZWFuLWV4cGVjdAotbWF5YmUtY2xlYW4tZXhwZWN0OgotCi1jbGVhbi1leHBlY3Q6IAotCUBbIC1mIC4vZXhwZWN0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gZXhwZWN0IiA7IFwKLQkoY2QgZXhwZWN0ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tZ3VpbGUgY2xlYW4tZ3VpbGUKLW1heWJlLWNsZWFuLWd1aWxlOgotCi1jbGVhbi1ndWlsZTogCi0JQFsgLWYgLi9ndWlsZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIGd1aWxlIiA7IFwKLQkoY2QgZ3VpbGUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi10ayBjbGVhbi10awotbWF5YmUtY2xlYW4tdGs6Ci0KLWNsZWFuLXRrOiAKLQlAWyAtZiAuL3RrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gdGsiIDsgXAotCShjZCB0ayAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLXRpeCBjbGVhbi10aXgKLW1heWJlLWNsZWFuLXRpeDoKLQotY2xlYW4tdGl4OiAKLQlAWyAtZiAuL3RpeC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluIHRpeCIgOyBcCi0JKGNkIHRpeCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLWxpYnRlcm1jYXAgY2xlYW4tbGlidGVybWNhcAotbWF5YmUtY2xlYW4tbGlidGVybWNhcDoKLQotIyBsaWJ0ZXJtY2FwIGRvZXNuJ3Qgc3VwcG9ydCBjbGVhbi4KLWNsZWFuLWxpYnRlcm1jYXA6Ci0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi11dGlscyBjbGVhbi11dGlscwotbWF5YmUtY2xlYW4tdXRpbHM6Ci0KLWNsZWFuLXV0aWxzOiAKLQlAWyAtZiAuL3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gdXRpbHMiIDsgXAotCShjZCB1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0KLSMgVGFyZ2V0IG1vZHVsZXMuCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYnN0ZGMrKy12MyBjbGVhbi10YXJnZXQtbGlic3RkYysrLXYzCi1tYXliZS1jbGVhbi10YXJnZXQtbGlic3RkYysrLXYzOgotCi1jbGVhbi10YXJnZXQtbGlic3RkYysrLXYzOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12My9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtbmV3bGliIGNsZWFuLXRhcmdldC1uZXdsaWIKLW1heWJlLWNsZWFuLXRhcmdldC1uZXdsaWI6Ci0KLWNsZWFuLXRhcmdldC1uZXdsaWI6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbmV3bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbmV3bGliIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL25ld2xpYiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLXRhcmdldC1saWJmMmMgY2xlYW4tdGFyZ2V0LWxpYmYyYwotbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYmYyYzoKLQotY2xlYW4tdGFyZ2V0LWxpYmYyYzogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJmMmMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJmMmMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZjJjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYm9iamMgY2xlYW4tdGFyZ2V0LWxpYm9iamMKLW1heWJlLWNsZWFuLXRhcmdldC1saWJvYmpjOgotCi1jbGVhbi10YXJnZXQtbGlib2JqYzogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXAgY2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXAKLW1heWJlLWNsZWFuLXRhcmdldC1saWJ0ZXJtY2FwOgotCi0jIGxpYnRlcm1jYXAgZG9lc24ndCBzdXBwb3J0IGNsZWFuLgotY2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXA6Ci0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtd2luc3VwIGNsZWFuLXRhcmdldC13aW5zdXAKLW1heWJlLWNsZWFuLXRhcmdldC13aW5zdXA6Ci0KLWNsZWFuLXRhcmdldC13aW5zdXA6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvd2luc3VwL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvd2luc3VwIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLXRhcmdldC1saWJnbG9zcyBjbGVhbi10YXJnZXQtbGliZ2xvc3MKLW1heWJlLWNsZWFuLXRhcmdldC1saWJnbG9zczoKLQotY2xlYW4tdGFyZ2V0LWxpYmdsb3NzOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliZ2xvc3MiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZ2xvc3MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtbGliaWJlcnR5IGNsZWFuLXRhcmdldC1saWJpYmVydHkKLW1heWJlLWNsZWFuLXRhcmdldC1saWJpYmVydHk6Ci0KLWNsZWFuLXRhcmdldC1saWJpYmVydHk6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5IiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLXRhcmdldC1ncGVyZiBjbGVhbi10YXJnZXQtZ3BlcmYKLW1heWJlLWNsZWFuLXRhcmdldC1ncGVyZjoKLQotY2xlYW4tdGFyZ2V0LWdwZXJmOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2dwZXJmL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtZXhhbXBsZXMgY2xlYW4tdGFyZ2V0LWV4YW1wbGVzCi1tYXliZS1jbGVhbi10YXJnZXQtZXhhbXBsZXM6Ci0KLWNsZWFuLXRhcmdldC1leGFtcGxlczogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9leGFtcGxlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYmZmaSBjbGVhbi10YXJnZXQtbGliZmZpCi1tYXliZS1jbGVhbi10YXJnZXQtbGliZmZpOgotCi1jbGVhbi10YXJnZXQtbGliZmZpOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmZmkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtbGliamF2YSBjbGVhbi10YXJnZXQtbGliamF2YQotbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYmphdmE6Ci0KLWNsZWFuLXRhcmdldC1saWJqYXZhOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJqYXZhIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtemxpYiBjbGVhbi10YXJnZXQtemxpYgotbWF5YmUtY2xlYW4tdGFyZ2V0LXpsaWI6Ci0KLWNsZWFuLXRhcmdldC16bGliOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS96bGliIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3psaWIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtYm9laG0tZ2MgY2xlYW4tdGFyZ2V0LWJvZWhtLWdjCi1tYXliZS1jbGVhbi10YXJnZXQtYm9laG0tZ2M6Ci0KLWNsZWFuLXRhcmdldC1ib2VobS1nYzogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tdGFyZ2V0LXF0aHJlYWRzIGNsZWFuLXRhcmdldC1xdGhyZWFkcwotbWF5YmUtY2xlYW4tdGFyZ2V0LXF0aHJlYWRzOgotCi1jbGVhbi10YXJnZXQtcXRocmVhZHM6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWNsZWFuLXRhcmdldC1yZGEgY2xlYW4tdGFyZ2V0LXJkYQotbWF5YmUtY2xlYW4tdGFyZ2V0LXJkYToKLQotY2xlYW4tdGFyZ2V0LXJkYTogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9yZGEvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9yZGEiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvcmRhICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYmFkYSBjbGVhbi10YXJnZXQtbGliYWRhCi1tYXliZS1jbGVhbi10YXJnZXQtbGliYWRhOgotCi1jbGVhbi10YXJnZXQtbGliYWRhOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJhZGEgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotCiAuUEhPTlk6IGRvLWRpc3RjbGVhbgogZG8tZGlzdGNsZWFuOiBkaXN0Y2xlYW4taG9zdCBkaXN0Y2xlYW4tdGFyZ2V0CiAKQEAgLTEzOTQwLDE3MDUgKzE0MzUsNiBAQAogICAgIG1heWJlLWRpc3RjbGVhbi10YXJnZXQtcmRhIFwKICAgICBtYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWxpYmFkYQogCi0jIEdDQywgdGhlIGV0ZXJuYWwgc3BlY2lhbCBjYXNlCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1nY2MgZGlzdGNsZWFuLWdjYwotbWF5YmUtZGlzdGNsZWFuLWdjYzoKLWRpc3RjbGVhbi1nY2M6IAotCUBbIC1mIC4vZ2NjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9HQ0NfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZ2NjIiA7IFwKLQkoY2QgZ2NjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotIyBIb3N0IG1vZHVsZXMuCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWFzaCBkaXN0Y2xlYW4tYXNoCi1tYXliZS1kaXN0Y2xlYW4tYXNoOgotCi1kaXN0Y2xlYW4tYXNoOiAKLQlAWyAtZiAuL2FzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBhc2giIDsgXAotCShjZCBhc2ggJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWF1dG9jb25mIGRpc3RjbGVhbi1hdXRvY29uZgotbWF5YmUtZGlzdGNsZWFuLWF1dG9jb25mOgotCi1kaXN0Y2xlYW4tYXV0b2NvbmY6IAotCUBbIC1mIC4vYXV0b2NvbmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gYXV0b2NvbmYiIDsgXAotCShjZCBhdXRvY29uZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tYXV0b21ha2UgZGlzdGNsZWFuLWF1dG9tYWtlCi1tYXliZS1kaXN0Y2xlYW4tYXV0b21ha2U6Ci0KLWRpc3RjbGVhbi1hdXRvbWFrZTogCi0JQFsgLWYgLi9hdXRvbWFrZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBhdXRvbWFrZSIgOyBcCi0JKGNkIGF1dG9tYWtlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1iYXNoIGRpc3RjbGVhbi1iYXNoCi1tYXliZS1kaXN0Y2xlYW4tYmFzaDoKLQotZGlzdGNsZWFuLWJhc2g6IAotCUBbIC1mIC4vYmFzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBiYXNoIiA7IFwKLQkoY2QgYmFzaCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tYmZkIGRpc3RjbGVhbi1iZmQKLW1heWJlLWRpc3RjbGVhbi1iZmQ6Ci0KLWRpc3RjbGVhbi1iZmQ6IAotCUBbIC1mIC4vYmZkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGJmZCIgOyBcCi0JKGNkIGJmZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tb3Bjb2RlcyBkaXN0Y2xlYW4tb3Bjb2RlcwotbWF5YmUtZGlzdGNsZWFuLW9wY29kZXM6Ci0KLWRpc3RjbGVhbi1vcGNvZGVzOiAKLQlAWyAtZiAuL29wY29kZXMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gb3Bjb2RlcyIgOyBcCi0JKGNkIG9wY29kZXMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWJpbnV0aWxzIGRpc3RjbGVhbi1iaW51dGlscwotbWF5YmUtZGlzdGNsZWFuLWJpbnV0aWxzOgotCi1kaXN0Y2xlYW4tYmludXRpbHM6IAotCUBbIC1mIC4vYmludXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gYmludXRpbHMiIDsgXAotCShjZCBiaW51dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tYmlzb24gZGlzdGNsZWFuLWJpc29uCi1tYXliZS1kaXN0Y2xlYW4tYmlzb246Ci0KLWRpc3RjbGVhbi1iaXNvbjogCi0JQFsgLWYgLi9iaXNvbi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBiaXNvbiIgOyBcCi0JKGNkIGJpc29uICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1ieWFjYyBkaXN0Y2xlYW4tYnlhY2MKLW1heWJlLWRpc3RjbGVhbi1ieWFjYzoKLQotZGlzdGNsZWFuLWJ5YWNjOiAKLQlAWyAtZiAuL2J5YWNjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGJ5YWNjIiA7IFwKLQkoY2QgYnlhY2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWJ6aXAyIGRpc3RjbGVhbi1iemlwMgotbWF5YmUtZGlzdGNsZWFuLWJ6aXAyOgotCi1kaXN0Y2xlYW4tYnppcDI6IAotCUBbIC1mIC4vYnppcDIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gYnppcDIiIDsgXAotCShjZCBiemlwMiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tZGVqYWdudSBkaXN0Y2xlYW4tZGVqYWdudQotbWF5YmUtZGlzdGNsZWFuLWRlamFnbnU6Ci0KLWRpc3RjbGVhbi1kZWphZ251OiAKLQlAWyAtZiAuL2RlamFnbnUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZGVqYWdudSIgOyBcCi0JKGNkIGRlamFnbnUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWRpZmYgZGlzdGNsZWFuLWRpZmYKLW1heWJlLWRpc3RjbGVhbi1kaWZmOgotCi1kaXN0Y2xlYW4tZGlmZjogCi0JQFsgLWYgLi9kaWZmL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGRpZmYiIDsgXAotCShjZCBkaWZmICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1kb3N1dGlscyBkaXN0Y2xlYW4tZG9zdXRpbHMKLW1heWJlLWRpc3RjbGVhbi1kb3N1dGlsczoKLQotZGlzdGNsZWFuLWRvc3V0aWxzOiAKLQlAWyAtZiAuL2Rvc3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGRvc3V0aWxzIiA7IFwKLQkoY2QgZG9zdXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWV0YyBkaXN0Y2xlYW4tZXRjCi1tYXliZS1kaXN0Y2xlYW4tZXRjOgotCi1kaXN0Y2xlYW4tZXRjOiAKLQlAWyAtZiAuL2V0Yy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBldGMiIDsgXAotCShjZCBldGMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWZhc3RqYXIgZGlzdGNsZWFuLWZhc3RqYXIKLW1heWJlLWRpc3RjbGVhbi1mYXN0amFyOgotCi1kaXN0Y2xlYW4tZmFzdGphcjogCi0JQFsgLWYgLi9mYXN0amFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGZhc3RqYXIiIDsgXAotCShjZCBmYXN0amFyICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1maWxldXRpbHMgZGlzdGNsZWFuLWZpbGV1dGlscwotbWF5YmUtZGlzdGNsZWFuLWZpbGV1dGlsczoKLQotZGlzdGNsZWFuLWZpbGV1dGlsczogCi0JQFsgLWYgLi9maWxldXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZmlsZXV0aWxzIiA7IFwKLQkoY2QgZmlsZXV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1maW5kdXRpbHMgZGlzdGNsZWFuLWZpbmR1dGlscwotbWF5YmUtZGlzdGNsZWFuLWZpbmR1dGlsczoKLQotZGlzdGNsZWFuLWZpbmR1dGlsczogCi0JQFsgLWYgLi9maW5kdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZmluZHV0aWxzIiA7IFwKLQkoY2QgZmluZHV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1maW5kIGRpc3RjbGVhbi1maW5kCi1tYXliZS1kaXN0Y2xlYW4tZmluZDoKLQotZGlzdGNsZWFuLWZpbmQ6IAotCUBbIC1mIC4vZmluZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBmaW5kIiA7IFwKLQkoY2QgZmluZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tZmxleCBkaXN0Y2xlYW4tZmxleAotbWF5YmUtZGlzdGNsZWFuLWZsZXg6Ci0KLWRpc3RjbGVhbi1mbGV4OiAKLQlAWyAtZiAuL2ZsZXgvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZmxleCIgOyBcCi0JKGNkIGZsZXggJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWdhcyBkaXN0Y2xlYW4tZ2FzCi1tYXliZS1kaXN0Y2xlYW4tZ2FzOgotCi1kaXN0Y2xlYW4tZ2FzOiAKLQlAWyAtZiAuL2dhcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBnYXMiIDsgXAotCShjZCBnYXMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWdhd2sgZGlzdGNsZWFuLWdhd2sKLW1heWJlLWRpc3RjbGVhbi1nYXdrOgotCi1kaXN0Y2xlYW4tZ2F3azogCi0JQFsgLWYgLi9nYXdrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGdhd2siIDsgXAotCShjZCBnYXdrICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1nZXR0ZXh0IGRpc3RjbGVhbi1nZXR0ZXh0Ci1tYXliZS1kaXN0Y2xlYW4tZ2V0dGV4dDoKLQotZGlzdGNsZWFuLWdldHRleHQ6IAotCUBbIC1mIC4vZ2V0dGV4dC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBnZXR0ZXh0IiA7IFwKLQkoY2QgZ2V0dGV4dCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tZ251c2VydiBkaXN0Y2xlYW4tZ251c2VydgotbWF5YmUtZGlzdGNsZWFuLWdudXNlcnY6Ci0KLWRpc3RjbGVhbi1nbnVzZXJ2OiAKLQlAWyAtZiAuL2dudXNlcnYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZ251c2VydiIgOyBcCi0JKGNkIGdudXNlcnYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWdwcm9mIGRpc3RjbGVhbi1ncHJvZgotbWF5YmUtZGlzdGNsZWFuLWdwcm9mOgotCi1kaXN0Y2xlYW4tZ3Byb2Y6IAotCUBbIC1mIC4vZ3Byb2YvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZ3Byb2YiIDsgXAotCShjZCBncHJvZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tZ3ppcCBkaXN0Y2xlYW4tZ3ppcAotbWF5YmUtZGlzdGNsZWFuLWd6aXA6Ci0KLWRpc3RjbGVhbi1nemlwOiAKLQlAWyAtZiAuL2d6aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZ3ppcCIgOyBcCi0JKGNkIGd6aXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWhlbGxvIGRpc3RjbGVhbi1oZWxsbwotbWF5YmUtZGlzdGNsZWFuLWhlbGxvOgotCi1kaXN0Y2xlYW4taGVsbG86IAotCUBbIC1mIC4vaGVsbG8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gaGVsbG8iIDsgXAotCShjZCBoZWxsbyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4taW5kZW50IGRpc3RjbGVhbi1pbmRlbnQKLW1heWJlLWRpc3RjbGVhbi1pbmRlbnQ6Ci0KLWRpc3RjbGVhbi1pbmRlbnQ6IAotCUBbIC1mIC4vaW5kZW50L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGluZGVudCIgOyBcCi0JKGNkIGluZGVudCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4taW50bCBkaXN0Y2xlYW4taW50bAotbWF5YmUtZGlzdGNsZWFuLWludGw6Ci0KLWRpc3RjbGVhbi1pbnRsOiAKLQlAWyAtZiAuL2ludGwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gaW50bCIgOyBcCi0JKGNkIGludGwgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRjbCBkaXN0Y2xlYW4tdGNsCi1tYXliZS1kaXN0Y2xlYW4tdGNsOgotCi1kaXN0Y2xlYW4tdGNsOiAKLQlAWyAtZiAuL3RjbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiB0Y2wiIDsgXAotCShjZCB0Y2wgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWl0Y2wgZGlzdGNsZWFuLWl0Y2wKLW1heWJlLWRpc3RjbGVhbi1pdGNsOgotCi1kaXN0Y2xlYW4taXRjbDogCi0JQFsgLWYgLi9pdGNsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGl0Y2wiIDsgXAotCShjZCBpdGNsICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1sZCBkaXN0Y2xlYW4tbGQKLW1heWJlLWRpc3RjbGVhbi1sZDoKLQotZGlzdGNsZWFuLWxkOiAKLQlAWyAtZiAuL2xkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGxkIiA7IFwKLQkoY2QgbGQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWxpYmd1aSBkaXN0Y2xlYW4tbGliZ3VpCi1tYXliZS1kaXN0Y2xlYW4tbGliZ3VpOgotCi1kaXN0Y2xlYW4tbGliZ3VpOiAKLQlAWyAtZiAuL2xpYmd1aS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBsaWJndWkiIDsgXAotCShjZCBsaWJndWkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWxpYmliZXJ0eSBkaXN0Y2xlYW4tbGliaWJlcnR5Ci1tYXliZS1kaXN0Y2xlYW4tbGliaWJlcnR5OgotCi1kaXN0Y2xlYW4tbGliaWJlcnR5OiAKLQlAWyAtZiAuL2xpYmliZXJ0eS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBsaWJpYmVydHkiIDsgXAotCShjZCBsaWJpYmVydHkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGNsZWFuLWxpYnRvb2wKLW1heWJlLWRpc3RjbGVhbi1saWJ0b29sOgotCi1kaXN0Y2xlYW4tbGlidG9vbDogCi0JQFsgLWYgLi9saWJ0b29sL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGxpYnRvb2wiIDsgXAotCShjZCBsaWJ0b29sICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1tNCBkaXN0Y2xlYW4tbTQKLW1heWJlLWRpc3RjbGVhbi1tNDoKLQotZGlzdGNsZWFuLW00OiAKLQlAWyAtZiAuL200L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIG00IiA7IFwKLQkoY2QgbTQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLW1ha2UgZGlzdGNsZWFuLW1ha2UKLW1heWJlLWRpc3RjbGVhbi1tYWtlOgotCi1kaXN0Y2xlYW4tbWFrZTogCi0JQFsgLWYgLi9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIG1ha2UiIDsgXAotCShjZCBtYWtlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1tbWFsbG9jIGRpc3RjbGVhbi1tbWFsbG9jCi1tYXliZS1kaXN0Y2xlYW4tbW1hbGxvYzoKLQotZGlzdGNsZWFuLW1tYWxsb2M6IAotCUBbIC1mIC4vbW1hbGxvYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBtbWFsbG9jIiA7IFwKLQkoY2QgbW1hbGxvYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tcGF0Y2ggZGlzdGNsZWFuLXBhdGNoCi1tYXliZS1kaXN0Y2xlYW4tcGF0Y2g6Ci0KLWRpc3RjbGVhbi1wYXRjaDogCi0JQFsgLWYgLi9wYXRjaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBwYXRjaCIgOyBcCi0JKGNkIHBhdGNoICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1wZXJsIGRpc3RjbGVhbi1wZXJsCi1tYXliZS1kaXN0Y2xlYW4tcGVybDoKLQotZGlzdGNsZWFuLXBlcmw6IAotCUBbIC1mIC4vcGVybC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBwZXJsIiA7IFwKLQkoY2QgcGVybCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tcHJtcyBkaXN0Y2xlYW4tcHJtcwotbWF5YmUtZGlzdGNsZWFuLXBybXM6Ci0KLWRpc3RjbGVhbi1wcm1zOiAKLQlAWyAtZiAuL3BybXMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gcHJtcyIgOyBcCi0JKGNkIHBybXMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXJjcyBkaXN0Y2xlYW4tcmNzCi1tYXliZS1kaXN0Y2xlYW4tcmNzOgotCi1kaXN0Y2xlYW4tcmNzOiAKLQlAWyAtZiAuL3Jjcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiByY3MiIDsgXAotCShjZCByY3MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXJlYWRsaW5lIGRpc3RjbGVhbi1yZWFkbGluZQotbWF5YmUtZGlzdGNsZWFuLXJlYWRsaW5lOgotCi1kaXN0Y2xlYW4tcmVhZGxpbmU6IAotCUBbIC1mIC4vcmVhZGxpbmUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gcmVhZGxpbmUiIDsgXAotCShjZCByZWFkbGluZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tcmVsZWFzZSBkaXN0Y2xlYW4tcmVsZWFzZQotbWF5YmUtZGlzdGNsZWFuLXJlbGVhc2U6Ci0KLWRpc3RjbGVhbi1yZWxlYXNlOiAKLQlAWyAtZiAuL3JlbGVhc2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gcmVsZWFzZSIgOyBcCi0JKGNkIHJlbGVhc2UgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXJlY29kZSBkaXN0Y2xlYW4tcmVjb2RlCi1tYXliZS1kaXN0Y2xlYW4tcmVjb2RlOgotCi1kaXN0Y2xlYW4tcmVjb2RlOiAKLQlAWyAtZiAuL3JlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiByZWNvZGUiIDsgXAotCShjZCByZWNvZGUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXNlZCBkaXN0Y2xlYW4tc2VkCi1tYXliZS1kaXN0Y2xlYW4tc2VkOgotCi1kaXN0Y2xlYW4tc2VkOiAKLQlAWyAtZiAuL3NlZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBzZWQiIDsgXAotCShjZCBzZWQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXNlbmQtcHIgZGlzdGNsZWFuLXNlbmQtcHIKLW1heWJlLWRpc3RjbGVhbi1zZW5kLXByOgotCi1kaXN0Y2xlYW4tc2VuZC1wcjogCi0JQFsgLWYgLi9zZW5kLXByL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHNlbmQtcHIiIDsgXAotCShjZCBzZW5kLXByICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1zaGVsbHV0aWxzIGRpc3RjbGVhbi1zaGVsbHV0aWxzCi1tYXliZS1kaXN0Y2xlYW4tc2hlbGx1dGlsczoKLQotZGlzdGNsZWFuLXNoZWxsdXRpbHM6IAotCUBbIC1mIC4vc2hlbGx1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBzaGVsbHV0aWxzIiA7IFwKLQkoY2Qgc2hlbGx1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tc2lkIGRpc3RjbGVhbi1zaWQKLW1heWJlLWRpc3RjbGVhbi1zaWQ6Ci0KLWRpc3RjbGVhbi1zaWQ6IAotCUBbIC1mIC4vc2lkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHNpZCIgOyBcCi0JKGNkIHNpZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tc2ltIGRpc3RjbGVhbi1zaW0KLW1heWJlLWRpc3RjbGVhbi1zaW06Ci0KLWRpc3RjbGVhbi1zaW06IAotCUBbIC1mIC4vc2ltL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHNpbSIgOyBcCi0JKGNkIHNpbSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGFyIGRpc3RjbGVhbi10YXIKLW1heWJlLWRpc3RjbGVhbi10YXI6Ci0KLWRpc3RjbGVhbi10YXI6IAotCUBbIC1mIC4vdGFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHRhciIgOyBcCi0JKGNkIHRhciAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGV4aW5mbyBkaXN0Y2xlYW4tdGV4aW5mbwotbWF5YmUtZGlzdGNsZWFuLXRleGluZm86Ci0KLWRpc3RjbGVhbi10ZXhpbmZvOiAKLQlAWyAtZiAuL3RleGluZm8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gdGV4aW5mbyIgOyBcCi0JKGNkIHRleGluZm8gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRleHR1dGlscyBkaXN0Y2xlYW4tdGV4dHV0aWxzCi1tYXliZS1kaXN0Y2xlYW4tdGV4dHV0aWxzOgotCi1kaXN0Y2xlYW4tdGV4dHV0aWxzOiAKLQlAWyAtZiAuL3RleHR1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiB0ZXh0dXRpbHMiIDsgXAotCShjZCB0ZXh0dXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRpbWUgZGlzdGNsZWFuLXRpbWUKLW1heWJlLWRpc3RjbGVhbi10aW1lOgotCi1kaXN0Y2xlYW4tdGltZTogCi0JQFsgLWYgLi90aW1lL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHRpbWUiIDsgXAotCShjZCB0aW1lICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi11dWRlY29kZSBkaXN0Y2xlYW4tdXVkZWNvZGUKLW1heWJlLWRpc3RjbGVhbi11dWRlY29kZToKLQotZGlzdGNsZWFuLXV1ZGVjb2RlOiAKLQlAWyAtZiAuL3V1ZGVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHV1ZGVjb2RlIiA7IFwKLQkoY2QgdXVkZWNvZGUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXdkaWZmIGRpc3RjbGVhbi13ZGlmZgotbWF5YmUtZGlzdGNsZWFuLXdkaWZmOgotCi1kaXN0Y2xlYW4td2RpZmY6IAotCUBbIC1mIC4vd2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gd2RpZmYiIDsgXAotCShjZCB3ZGlmZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4temlwIGRpc3RjbGVhbi16aXAKLW1heWJlLWRpc3RjbGVhbi16aXA6Ci0KLWRpc3RjbGVhbi16aXA6IAotCUBbIC1mIC4vemlwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHppcCIgOyBcCi0JKGNkIHppcCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4temxpYiBkaXN0Y2xlYW4temxpYgotbWF5YmUtZGlzdGNsZWFuLXpsaWI6Ci0KLWRpc3RjbGVhbi16bGliOiAKLQlAWyAtZiAuL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gemxpYiIgOyBcCi0JKGNkIHpsaWIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWdkYiBkaXN0Y2xlYW4tZ2RiCi1tYXliZS1kaXN0Y2xlYW4tZ2RiOgotCi1kaXN0Y2xlYW4tZ2RiOiAKLQlAWyAtZiAuL2dkYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBnZGIiIDsgXAotCShjZCBnZGIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWV4cGVjdCBkaXN0Y2xlYW4tZXhwZWN0Ci1tYXliZS1kaXN0Y2xlYW4tZXhwZWN0OgotCi1kaXN0Y2xlYW4tZXhwZWN0OiAKLQlAWyAtZiAuL2V4cGVjdC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBleHBlY3QiIDsgXAotCShjZCBleHBlY3QgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWd1aWxlIGRpc3RjbGVhbi1ndWlsZQotbWF5YmUtZGlzdGNsZWFuLWd1aWxlOgotCi1kaXN0Y2xlYW4tZ3VpbGU6IAotCUBbIC1mIC4vZ3VpbGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZ3VpbGUiIDsgXAotCShjZCBndWlsZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGsgZGlzdGNsZWFuLXRrCi1tYXliZS1kaXN0Y2xlYW4tdGs6Ci0KLWRpc3RjbGVhbi10azogCi0JQFsgLWYgLi90ay9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiB0ayIgOyBcCi0JKGNkIHRrICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10aXggZGlzdGNsZWFuLXRpeAotbWF5YmUtZGlzdGNsZWFuLXRpeDoKLQotZGlzdGNsZWFuLXRpeDogCi0JQFsgLWYgLi90aXgvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gdGl4IiA7IFwKLQkoY2QgdGl4ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1saWJ0ZXJtY2FwIGRpc3RjbGVhbi1saWJ0ZXJtY2FwCi1tYXliZS1kaXN0Y2xlYW4tbGlidGVybWNhcDoKLQotIyBsaWJ0ZXJtY2FwIGRvZXNuJ3Qgc3VwcG9ydCBkaXN0Y2xlYW4uCi1kaXN0Y2xlYW4tbGlidGVybWNhcDoKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi11dGlscyBkaXN0Y2xlYW4tdXRpbHMKLW1heWJlLWRpc3RjbGVhbi11dGlsczoKLQotZGlzdGNsZWFuLXV0aWxzOiAKLQlAWyAtZiAuL3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHV0aWxzIiA7IFwKLQkoY2QgdXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLQotIyBUYXJnZXQgbW9kdWxlcy4KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWxpYnN0ZGMrKy12MyBkaXN0Y2xlYW4tdGFyZ2V0LWxpYnN0ZGMrKy12MwotbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1saWJzdGRjKystdjM6Ci0KLWRpc3RjbGVhbi10YXJnZXQtbGlic3RkYysrLXYzOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12My9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXJnZXQtbmV3bGliIGRpc3RjbGVhbi10YXJnZXQtbmV3bGliCi1tYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LW5ld2xpYjoKLQotZGlzdGNsZWFuLXRhcmdldC1uZXdsaWI6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbmV3bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL25ld2xpYiIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9uZXdsaWIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1saWJmMmMgZGlzdGNsZWFuLXRhcmdldC1saWJmMmMKLW1heWJlLWRpc3RjbGVhbi10YXJnZXQtbGliZjJjOgotCi1kaXN0Y2xlYW4tdGFyZ2V0LWxpYmYyYzogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJmMmMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliZjJjIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWxpYm9iamMgZGlzdGNsZWFuLXRhcmdldC1saWJvYmpjCi1tYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWxpYm9iamM6Ci0KLWRpc3RjbGVhbi10YXJnZXQtbGlib2JqYzogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXAgZGlzdGNsZWFuLXRhcmdldC1saWJ0ZXJtY2FwCi1tYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXA6Ci0KLSMgbGlidGVybWNhcCBkb2Vzbid0IHN1cHBvcnQgZGlzdGNsZWFuLgotZGlzdGNsZWFuLXRhcmdldC1saWJ0ZXJtY2FwOgotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRhcmdldC13aW5zdXAgZGlzdGNsZWFuLXRhcmdldC13aW5zdXAKLW1heWJlLWRpc3RjbGVhbi10YXJnZXQtd2luc3VwOgotCi1kaXN0Y2xlYW4tdGFyZ2V0LXdpbnN1cDogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS93aW5zdXAvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvd2luc3VwIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWxpYmdsb3NzIGRpc3RjbGVhbi10YXJnZXQtbGliZ2xvc3MKLW1heWJlLWRpc3RjbGVhbi10YXJnZXQtbGliZ2xvc3M6Ci0KLWRpc3RjbGVhbi10YXJnZXQtbGliZ2xvc3M6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZ2xvc3MvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliZ2xvc3MiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZ2xvc3MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1saWJpYmVydHkgZGlzdGNsZWFuLXRhcmdldC1saWJpYmVydHkKLW1heWJlLWRpc3RjbGVhbi10YXJnZXQtbGliaWJlcnR5OgotCi1kaXN0Y2xlYW4tdGFyZ2V0LWxpYmliZXJ0eTogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5IiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWdwZXJmIGRpc3RjbGVhbi10YXJnZXQtZ3BlcmYKLW1heWJlLWRpc3RjbGVhbi10YXJnZXQtZ3BlcmY6Ci0KLWRpc3RjbGVhbi10YXJnZXQtZ3BlcmY6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1leGFtcGxlcyBkaXN0Y2xlYW4tdGFyZ2V0LWV4YW1wbGVzCi1tYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWV4YW1wbGVzOgotCi1kaXN0Y2xlYW4tdGFyZ2V0LWV4YW1wbGVzOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXJnZXQtbGliZmZpIGRpc3RjbGVhbi10YXJnZXQtbGliZmZpCi1tYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWxpYmZmaToKLQotZGlzdGNsZWFuLXRhcmdldC1saWJmZmk6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZmZpL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmZmkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1saWJqYXZhIGRpc3RjbGVhbi10YXJnZXQtbGliamF2YQotbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1saWJqYXZhOgotCi1kaXN0Y2xlYW4tdGFyZ2V0LWxpYmphdmE6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliamF2YS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJqYXZhIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRhcmdldC16bGliIGRpc3RjbGVhbi10YXJnZXQtemxpYgotbWF5YmUtZGlzdGNsZWFuLXRhcmdldC16bGliOgotCi1kaXN0Y2xlYW4tdGFyZ2V0LXpsaWI6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS96bGliIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3psaWIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1ib2VobS1nYyBkaXN0Y2xlYW4tdGFyZ2V0LWJvZWhtLWdjCi1tYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWJvZWhtLWdjOgotCi1kaXN0Y2xlYW4tdGFyZ2V0LWJvZWhtLWdjOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXJnZXQtcXRocmVhZHMgZGlzdGNsZWFuLXRhcmdldC1xdGhyZWFkcwotbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1xdGhyZWFkczoKLQotZGlzdGNsZWFuLXRhcmdldC1xdGhyZWFkczogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIGRpc3RjbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LXJkYSBkaXN0Y2xlYW4tdGFyZ2V0LXJkYQotbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1yZGE6Ci0KLWRpc3RjbGVhbi10YXJnZXQtcmRhOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3JkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9yZGEiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvcmRhICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgZGlzdGNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXJnZXQtbGliYWRhIGRpc3RjbGVhbi10YXJnZXQtbGliYWRhCi1tYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWxpYmFkYToKLQotZGlzdGNsZWFuLXRhcmdldC1saWJhZGE6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliYWRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJhZGEgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLQogLlBIT05ZOiBkby1tYWludGFpbmVyLWNsZWFuCiBkby1tYWludGFpbmVyLWNsZWFuOiBtYWludGFpbmVyLWNsZWFuLWhvc3QgbWFpbnRhaW5lci1jbGVhbi10YXJnZXQKIApAQCAtMTU3MjksMTcwNSArMTUyNSw2IEBACiAgICAgbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtcmRhIFwKICAgICBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJhZGEKIAotIyBHQ0MsIHRoZSBldGVybmFsIHNwZWNpYWwgY2FzZQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWdjYyBtYWludGFpbmVyLWNsZWFuLWdjYwotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1nY2M6Ci1tYWludGFpbmVyLWNsZWFuLWdjYzogCi0JQFsgLWYgLi9nY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0dDQ19GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZ2NjIiA7IFwKLQkoY2QgZ2NjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLSMgSG9zdCBtb2R1bGVzLgotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tYXNoIG1haW50YWluZXItY2xlYW4tYXNoCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLWFzaDoKLQotbWFpbnRhaW5lci1jbGVhbi1hc2g6IAotCUBbIC1mIC4vYXNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBhc2giIDsgXAotCShjZCBhc2ggJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tYXV0b2NvbmYgbWFpbnRhaW5lci1jbGVhbi1hdXRvY29uZgotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1hdXRvY29uZjoKLQotbWFpbnRhaW5lci1jbGVhbi1hdXRvY29uZjogCi0JQFsgLWYgLi9hdXRvY29uZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gYXV0b2NvbmYiIDsgXAotCShjZCBhdXRvY29uZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1hdXRvbWFrZSBtYWludGFpbmVyLWNsZWFuLWF1dG9tYWtlCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLWF1dG9tYWtlOgotCi1tYWludGFpbmVyLWNsZWFuLWF1dG9tYWtlOiAKLQlAWyAtZiAuL2F1dG9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBhdXRvbWFrZSIgOyBcCi0JKGNkIGF1dG9tYWtlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWJhc2ggbWFpbnRhaW5lci1jbGVhbi1iYXNoCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLWJhc2g6Ci0KLW1haW50YWluZXItY2xlYW4tYmFzaDogCi0JQFsgLWYgLi9iYXNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBiYXNoIiA7IFwKLQkoY2QgYmFzaCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1iZmQgbWFpbnRhaW5lci1jbGVhbi1iZmQKLW1heWJlLW1haW50YWluZXItY2xlYW4tYmZkOgotCi1tYWludGFpbmVyLWNsZWFuLWJmZDogCi0JQFsgLWYgLi9iZmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGJmZCIgOyBcCi0JKGNkIGJmZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1vcGNvZGVzIG1haW50YWluZXItY2xlYW4tb3Bjb2RlcwotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1vcGNvZGVzOgotCi1tYWludGFpbmVyLWNsZWFuLW9wY29kZXM6IAotCUBbIC1mIC4vb3Bjb2Rlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gb3Bjb2RlcyIgOyBcCi0JKGNkIG9wY29kZXMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tYmludXRpbHMgbWFpbnRhaW5lci1jbGVhbi1iaW51dGlscwotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1iaW51dGlsczoKLQotbWFpbnRhaW5lci1jbGVhbi1iaW51dGlsczogCi0JQFsgLWYgLi9iaW51dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gYmludXRpbHMiIDsgXAotCShjZCBiaW51dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1iaXNvbiBtYWludGFpbmVyLWNsZWFuLWJpc29uCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLWJpc29uOgotCi1tYWludGFpbmVyLWNsZWFuLWJpc29uOiAKLQlAWyAtZiAuL2Jpc29uL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBiaXNvbiIgOyBcCi0JKGNkIGJpc29uICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWJ5YWNjIG1haW50YWluZXItY2xlYW4tYnlhY2MKLW1heWJlLW1haW50YWluZXItY2xlYW4tYnlhY2M6Ci0KLW1haW50YWluZXItY2xlYW4tYnlhY2M6IAotCUBbIC1mIC4vYnlhY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGJ5YWNjIiA7IFwKLQkoY2QgYnlhY2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tYnppcDIgbWFpbnRhaW5lci1jbGVhbi1iemlwMgotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1iemlwMjoKLQotbWFpbnRhaW5lci1jbGVhbi1iemlwMjogCi0JQFsgLWYgLi9iemlwMi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gYnppcDIiIDsgXAotCShjZCBiemlwMiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1kZWphZ251IG1haW50YWluZXItY2xlYW4tZGVqYWdudQotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1kZWphZ251OgotCi1tYWludGFpbmVyLWNsZWFuLWRlamFnbnU6IAotCUBbIC1mIC4vZGVqYWdudS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZGVqYWdudSIgOyBcCi0JKGNkIGRlamFnbnUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tZGlmZiBtYWludGFpbmVyLWNsZWFuLWRpZmYKLW1heWJlLW1haW50YWluZXItY2xlYW4tZGlmZjoKLQotbWFpbnRhaW5lci1jbGVhbi1kaWZmOiAKLQlAWyAtZiAuL2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGRpZmYiIDsgXAotCShjZCBkaWZmICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWRvc3V0aWxzIG1haW50YWluZXItY2xlYW4tZG9zdXRpbHMKLW1heWJlLW1haW50YWluZXItY2xlYW4tZG9zdXRpbHM6Ci0KLW1haW50YWluZXItY2xlYW4tZG9zdXRpbHM6IAotCUBbIC1mIC4vZG9zdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGRvc3V0aWxzIiA7IFwKLQkoY2QgZG9zdXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tZXRjIG1haW50YWluZXItY2xlYW4tZXRjCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLWV0YzoKLQotbWFpbnRhaW5lci1jbGVhbi1ldGM6IAotCUBbIC1mIC4vZXRjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBldGMiIDsgXAotCShjZCBldGMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tZmFzdGphciBtYWludGFpbmVyLWNsZWFuLWZhc3RqYXIKLW1heWJlLW1haW50YWluZXItY2xlYW4tZmFzdGphcjoKLQotbWFpbnRhaW5lci1jbGVhbi1mYXN0amFyOiAKLQlAWyAtZiAuL2Zhc3RqYXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGZhc3RqYXIiIDsgXAotCShjZCBmYXN0amFyICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWZpbGV1dGlscyBtYWludGFpbmVyLWNsZWFuLWZpbGV1dGlscwotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1maWxldXRpbHM6Ci0KLW1haW50YWluZXItY2xlYW4tZmlsZXV0aWxzOiAKLQlAWyAtZiAuL2ZpbGV1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZmlsZXV0aWxzIiA7IFwKLQkoY2QgZmlsZXV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWZpbmR1dGlscyBtYWludGFpbmVyLWNsZWFuLWZpbmR1dGlscwotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1maW5kdXRpbHM6Ci0KLW1haW50YWluZXItY2xlYW4tZmluZHV0aWxzOiAKLQlAWyAtZiAuL2ZpbmR1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZmluZHV0aWxzIiA7IFwKLQkoY2QgZmluZHV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWZpbmQgbWFpbnRhaW5lci1jbGVhbi1maW5kCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLWZpbmQ6Ci0KLW1haW50YWluZXItY2xlYW4tZmluZDogCi0JQFsgLWYgLi9maW5kL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBmaW5kIiA7IFwKLQkoY2QgZmluZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1mbGV4IG1haW50YWluZXItY2xlYW4tZmxleAotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1mbGV4OgotCi1tYWludGFpbmVyLWNsZWFuLWZsZXg6IAotCUBbIC1mIC4vZmxleC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZmxleCIgOyBcCi0JKGNkIGZsZXggJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tZ2FzIG1haW50YWluZXItY2xlYW4tZ2FzCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLWdhczoKLQotbWFpbnRhaW5lci1jbGVhbi1nYXM6IAotCUBbIC1mIC4vZ2FzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBnYXMiIDsgXAotCShjZCBnYXMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tZ2F3ayBtYWludGFpbmVyLWNsZWFuLWdhd2sKLW1heWJlLW1haW50YWluZXItY2xlYW4tZ2F3azoKLQotbWFpbnRhaW5lci1jbGVhbi1nYXdrOiAKLQlAWyAtZiAuL2dhd2svTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGdhd2siIDsgXAotCShjZCBnYXdrICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWdldHRleHQgbWFpbnRhaW5lci1jbGVhbi1nZXR0ZXh0Ci1tYXliZS1tYWludGFpbmVyLWNsZWFuLWdldHRleHQ6Ci0KLW1haW50YWluZXItY2xlYW4tZ2V0dGV4dDogCi0JQFsgLWYgLi9nZXR0ZXh0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBnZXR0ZXh0IiA7IFwKLQkoY2QgZ2V0dGV4dCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1nbnVzZXJ2IG1haW50YWluZXItY2xlYW4tZ251c2VydgotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1nbnVzZXJ2OgotCi1tYWludGFpbmVyLWNsZWFuLWdudXNlcnY6IAotCUBbIC1mIC4vZ251c2Vydi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZ251c2VydiIgOyBcCi0JKGNkIGdudXNlcnYgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tZ3Byb2YgbWFpbnRhaW5lci1jbGVhbi1ncHJvZgotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1ncHJvZjoKLQotbWFpbnRhaW5lci1jbGVhbi1ncHJvZjogCi0JQFsgLWYgLi9ncHJvZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZ3Byb2YiIDsgXAotCShjZCBncHJvZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1nemlwIG1haW50YWluZXItY2xlYW4tZ3ppcAotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1nemlwOgotCi1tYWludGFpbmVyLWNsZWFuLWd6aXA6IAotCUBbIC1mIC4vZ3ppcC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZ3ppcCIgOyBcCi0JKGNkIGd6aXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4taGVsbG8gbWFpbnRhaW5lci1jbGVhbi1oZWxsbwotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1oZWxsbzoKLQotbWFpbnRhaW5lci1jbGVhbi1oZWxsbzogCi0JQFsgLWYgLi9oZWxsby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gaGVsbG8iIDsgXAotCShjZCBoZWxsbyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1pbmRlbnQgbWFpbnRhaW5lci1jbGVhbi1pbmRlbnQKLW1heWJlLW1haW50YWluZXItY2xlYW4taW5kZW50OgotCi1tYWludGFpbmVyLWNsZWFuLWluZGVudDogCi0JQFsgLWYgLi9pbmRlbnQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGluZGVudCIgOyBcCi0JKGNkIGluZGVudCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1pbnRsIG1haW50YWluZXItY2xlYW4taW50bAotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1pbnRsOgotCi1tYWludGFpbmVyLWNsZWFuLWludGw6IAotCUBbIC1mIC4vaW50bC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gaW50bCIgOyBcCi0JKGNkIGludGwgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdGNsIG1haW50YWluZXItY2xlYW4tdGNsCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXRjbDoKLQotbWFpbnRhaW5lci1jbGVhbi10Y2w6IAotCUBbIC1mIC4vdGNsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiB0Y2wiIDsgXAotCShjZCB0Y2wgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4taXRjbCBtYWludGFpbmVyLWNsZWFuLWl0Y2wKLW1heWJlLW1haW50YWluZXItY2xlYW4taXRjbDoKLQotbWFpbnRhaW5lci1jbGVhbi1pdGNsOiAKLQlAWyAtZiAuL2l0Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGl0Y2wiIDsgXAotCShjZCBpdGNsICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWxkIG1haW50YWluZXItY2xlYW4tbGQKLW1heWJlLW1haW50YWluZXItY2xlYW4tbGQ6Ci0KLW1haW50YWluZXItY2xlYW4tbGQ6IAotCUBbIC1mIC4vbGQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGxkIiA7IFwKLQkoY2QgbGQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tbGliZ3VpIG1haW50YWluZXItY2xlYW4tbGliZ3VpCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLWxpYmd1aToKLQotbWFpbnRhaW5lci1jbGVhbi1saWJndWk6IAotCUBbIC1mIC4vbGliZ3VpL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBsaWJndWkiIDsgXAotCShjZCBsaWJndWkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tbGliaWJlcnR5IG1haW50YWluZXItY2xlYW4tbGliaWJlcnR5Ci1tYXliZS1tYWludGFpbmVyLWNsZWFuLWxpYmliZXJ0eToKLQotbWFpbnRhaW5lci1jbGVhbi1saWJpYmVydHk6IAotCUBbIC1mIC4vbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBsaWJpYmVydHkiIDsgXAotCShjZCBsaWJpYmVydHkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tbGlidG9vbCBtYWludGFpbmVyLWNsZWFuLWxpYnRvb2wKLW1heWJlLW1haW50YWluZXItY2xlYW4tbGlidG9vbDoKLQotbWFpbnRhaW5lci1jbGVhbi1saWJ0b29sOiAKLQlAWyAtZiAuL2xpYnRvb2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGxpYnRvb2wiIDsgXAotCShjZCBsaWJ0b29sICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLW00IG1haW50YWluZXItY2xlYW4tbTQKLW1heWJlLW1haW50YWluZXItY2xlYW4tbTQ6Ci0KLW1haW50YWluZXItY2xlYW4tbTQ6IAotCUBbIC1mIC4vbTQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIG00IiA7IFwKLQkoY2QgbTQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tbWFrZSBtYWludGFpbmVyLWNsZWFuLW1ha2UKLW1heWJlLW1haW50YWluZXItY2xlYW4tbWFrZToKLQotbWFpbnRhaW5lci1jbGVhbi1tYWtlOiAKLQlAWyAtZiAuL21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIG1ha2UiIDsgXAotCShjZCBtYWtlICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLW1tYWxsb2MgbWFpbnRhaW5lci1jbGVhbi1tbWFsbG9jCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLW1tYWxsb2M6Ci0KLW1haW50YWluZXItY2xlYW4tbW1hbGxvYzogCi0JQFsgLWYgLi9tbWFsbG9jL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBtbWFsbG9jIiA7IFwKLQkoY2QgbW1hbGxvYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1wYXRjaCBtYWludGFpbmVyLWNsZWFuLXBhdGNoCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXBhdGNoOgotCi1tYWludGFpbmVyLWNsZWFuLXBhdGNoOiAKLQlAWyAtZiAuL3BhdGNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBwYXRjaCIgOyBcCi0JKGNkIHBhdGNoICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXBlcmwgbWFpbnRhaW5lci1jbGVhbi1wZXJsCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXBlcmw6Ci0KLW1haW50YWluZXItY2xlYW4tcGVybDogCi0JQFsgLWYgLi9wZXJsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBwZXJsIiA7IFwKLQkoY2QgcGVybCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1wcm1zIG1haW50YWluZXItY2xlYW4tcHJtcwotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1wcm1zOgotCi1tYWludGFpbmVyLWNsZWFuLXBybXM6IAotCUBbIC1mIC4vcHJtcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gcHJtcyIgOyBcCi0JKGNkIHBybXMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tcmNzIG1haW50YWluZXItY2xlYW4tcmNzCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXJjczoKLQotbWFpbnRhaW5lci1jbGVhbi1yY3M6IAotCUBbIC1mIC4vcmNzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiByY3MiIDsgXAotCShjZCByY3MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tcmVhZGxpbmUgbWFpbnRhaW5lci1jbGVhbi1yZWFkbGluZQotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1yZWFkbGluZToKLQotbWFpbnRhaW5lci1jbGVhbi1yZWFkbGluZTogCi0JQFsgLWYgLi9yZWFkbGluZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gcmVhZGxpbmUiIDsgXAotCShjZCByZWFkbGluZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1yZWxlYXNlIG1haW50YWluZXItY2xlYW4tcmVsZWFzZQotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1yZWxlYXNlOgotCi1tYWludGFpbmVyLWNsZWFuLXJlbGVhc2U6IAotCUBbIC1mIC4vcmVsZWFzZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gcmVsZWFzZSIgOyBcCi0JKGNkIHJlbGVhc2UgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tcmVjb2RlIG1haW50YWluZXItY2xlYW4tcmVjb2RlCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXJlY29kZToKLQotbWFpbnRhaW5lci1jbGVhbi1yZWNvZGU6IAotCUBbIC1mIC4vcmVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiByZWNvZGUiIDsgXAotCShjZCByZWNvZGUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tc2VkIG1haW50YWluZXItY2xlYW4tc2VkCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXNlZDoKLQotbWFpbnRhaW5lci1jbGVhbi1zZWQ6IAotCUBbIC1mIC4vc2VkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBzZWQiIDsgXAotCShjZCBzZWQgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tc2VuZC1wciBtYWludGFpbmVyLWNsZWFuLXNlbmQtcHIKLW1heWJlLW1haW50YWluZXItY2xlYW4tc2VuZC1wcjoKLQotbWFpbnRhaW5lci1jbGVhbi1zZW5kLXByOiAKLQlAWyAtZiAuL3NlbmQtcHIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHNlbmQtcHIiIDsgXAotCShjZCBzZW5kLXByICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXNoZWxsdXRpbHMgbWFpbnRhaW5lci1jbGVhbi1zaGVsbHV0aWxzCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXNoZWxsdXRpbHM6Ci0KLW1haW50YWluZXItY2xlYW4tc2hlbGx1dGlsczogCi0JQFsgLWYgLi9zaGVsbHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBzaGVsbHV0aWxzIiA7IFwKLQkoY2Qgc2hlbGx1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1zaWQgbWFpbnRhaW5lci1jbGVhbi1zaWQKLW1heWJlLW1haW50YWluZXItY2xlYW4tc2lkOgotCi1tYWludGFpbmVyLWNsZWFuLXNpZDogCi0JQFsgLWYgLi9zaWQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHNpZCIgOyBcCi0JKGNkIHNpZCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1zaW0gbWFpbnRhaW5lci1jbGVhbi1zaW0KLW1heWJlLW1haW50YWluZXItY2xlYW4tc2ltOgotCi1tYWludGFpbmVyLWNsZWFuLXNpbTogCi0JQFsgLWYgLi9zaW0vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHNpbSIgOyBcCi0JKGNkIHNpbSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXIgbWFpbnRhaW5lci1jbGVhbi10YXIKLW1heWJlLW1haW50YWluZXItY2xlYW4tdGFyOgotCi1tYWludGFpbmVyLWNsZWFuLXRhcjogCi0JQFsgLWYgLi90YXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHRhciIgOyBcCi0JKGNkIHRhciAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10ZXhpbmZvIG1haW50YWluZXItY2xlYW4tdGV4aW5mbwotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10ZXhpbmZvOgotCi1tYWludGFpbmVyLWNsZWFuLXRleGluZm86IAotCUBbIC1mIC4vdGV4aW5mby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gdGV4aW5mbyIgOyBcCi0JKGNkIHRleGluZm8gJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdGV4dHV0aWxzIG1haW50YWluZXItY2xlYW4tdGV4dHV0aWxzCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXRleHR1dGlsczoKLQotbWFpbnRhaW5lci1jbGVhbi10ZXh0dXRpbHM6IAotCUBbIC1mIC4vdGV4dHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiB0ZXh0dXRpbHMiIDsgXAotCShjZCB0ZXh0dXRpbHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdGltZSBtYWludGFpbmVyLWNsZWFuLXRpbWUKLW1heWJlLW1haW50YWluZXItY2xlYW4tdGltZToKLQotbWFpbnRhaW5lci1jbGVhbi10aW1lOiAKLQlAWyAtZiAuL3RpbWUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHRpbWUiIDsgXAotCShjZCB0aW1lICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXV1ZGVjb2RlIG1haW50YWluZXItY2xlYW4tdXVkZWNvZGUKLW1heWJlLW1haW50YWluZXItY2xlYW4tdXVkZWNvZGU6Ci0KLW1haW50YWluZXItY2xlYW4tdXVkZWNvZGU6IAotCUBbIC1mIC4vdXVkZWNvZGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHV1ZGVjb2RlIiA7IFwKLQkoY2QgdXVkZWNvZGUgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4td2RpZmYgbWFpbnRhaW5lci1jbGVhbi13ZGlmZgotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi13ZGlmZjoKLQotbWFpbnRhaW5lci1jbGVhbi13ZGlmZjogCi0JQFsgLWYgLi93ZGlmZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gd2RpZmYiIDsgXAotCShjZCB3ZGlmZiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi16aXAgbWFpbnRhaW5lci1jbGVhbi16aXAKLW1heWJlLW1haW50YWluZXItY2xlYW4temlwOgotCi1tYWludGFpbmVyLWNsZWFuLXppcDogCi0JQFsgLWYgLi96aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHppcCIgOyBcCi0JKGNkIHppcCAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi16bGliIG1haW50YWluZXItY2xlYW4temxpYgotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi16bGliOgotCi1tYWludGFpbmVyLWNsZWFuLXpsaWI6IAotCUBbIC1mIC4vemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gemxpYiIgOyBcCi0JKGNkIHpsaWIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tZ2RiIG1haW50YWluZXItY2xlYW4tZ2RiCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLWdkYjoKLQotbWFpbnRhaW5lci1jbGVhbi1nZGI6IAotCUBbIC1mIC4vZ2RiL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBnZGIiIDsgXAotCShjZCBnZGIgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tZXhwZWN0IG1haW50YWluZXItY2xlYW4tZXhwZWN0Ci1tYXliZS1tYWludGFpbmVyLWNsZWFuLWV4cGVjdDoKLQotbWFpbnRhaW5lci1jbGVhbi1leHBlY3Q6IAotCUBbIC1mIC4vZXhwZWN0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBleHBlY3QiIDsgXAotCShjZCBleHBlY3QgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tZ3VpbGUgbWFpbnRhaW5lci1jbGVhbi1ndWlsZQotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1ndWlsZToKLQotbWFpbnRhaW5lci1jbGVhbi1ndWlsZTogCi0JQFsgLWYgLi9ndWlsZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZ3VpbGUiIDsgXAotCShjZCBndWlsZSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10ayBtYWludGFpbmVyLWNsZWFuLXRrCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXRrOgotCi1tYWludGFpbmVyLWNsZWFuLXRrOiAKLQlAWyAtZiAuL3RrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiB0ayIgOyBcCi0JKGNkIHRrICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRpeCBtYWludGFpbmVyLWNsZWFuLXRpeAotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10aXg6Ci0KLW1haW50YWluZXItY2xlYW4tdGl4OiAKLQlAWyAtZiAuL3RpeC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gdGl4IiA7IFwKLQkoY2QgdGl4ICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWxpYnRlcm1jYXAgbWFpbnRhaW5lci1jbGVhbi1saWJ0ZXJtY2FwCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLWxpYnRlcm1jYXA6Ci0KLSMgbGlidGVybWNhcCBkb2Vzbid0IHN1cHBvcnQgbWFpbnRhaW5lci1jbGVhbi4KLW1haW50YWluZXItY2xlYW4tbGlidGVybWNhcDoKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdXRpbHMgbWFpbnRhaW5lci1jbGVhbi11dGlscwotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi11dGlsczoKLQotbWFpbnRhaW5lci1jbGVhbi11dGlsczogCi0JQFsgLWYgLi91dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gdXRpbHMiIDsgXAotCShjZCB1dGlscyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLQotIyBUYXJnZXQgbW9kdWxlcy4KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJzdGRjKystdjMgbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGlic3RkYysrLXYzCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJzdGRjKystdjM6Ci0KLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYnN0ZGMrKy12MzogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LW5ld2xpYiBtYWludGFpbmVyLWNsZWFuLXRhcmdldC1uZXdsaWIKLW1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LW5ld2xpYjoKLQotbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbmV3bGliOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL25ld2xpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbmV3bGliIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL25ld2xpYiAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliZjJjIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmYyYwotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliZjJjOgotCi1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJmMmM6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZjJjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJmMmMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZjJjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJvYmpjIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYm9iamMKLW1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYm9iamM6Ci0KLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYm9iamM6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJ0ZXJtY2FwIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXAKLW1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXA6Ci0KLSMgbGlidGVybWNhcCBkb2Vzbid0IHN1cHBvcnQgbWFpbnRhaW5lci1jbGVhbi4KLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXA6Ci0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC13aW5zdXAgbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtd2luc3VwCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC13aW5zdXA6Ci0KLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LXdpbnN1cDogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS93aW5zdXAvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS93aW5zdXAgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmdsb3NzIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmdsb3NzCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJnbG9zczoKLQotbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliZ2xvc3M6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZ2xvc3MvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJpYmVydHkgbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliaWJlcnR5Ci1tYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJpYmVydHk6Ci0KLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmliZXJ0eTogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWdwZXJmIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWdwZXJmCi1tYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1ncGVyZjoKLQotbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtZ3BlcmY6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2dwZXJmIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL2dwZXJmICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1leGFtcGxlcyBtYWludGFpbmVyLWNsZWFuLXRhcmdldC1leGFtcGxlcwotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtZXhhbXBsZXM6Ci0KLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWV4YW1wbGVzOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9leGFtcGxlcyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9leGFtcGxlcyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliZmZpIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmZmaQotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliZmZpOgotCi1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJmZmk6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZmZpL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJmZmkiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZmZpICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJqYXZhIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmphdmEKLW1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmphdmE6Ci0KLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmphdmE6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliamF2YS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliamF2YSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJqYXZhICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC16bGliIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LXpsaWIKLW1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LXpsaWI6Ci0KLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LXpsaWI6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvemxpYiIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS96bGliICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1ib2VobS1nYyBtYWludGFpbmVyLWNsZWFuLXRhcmdldC1ib2VobS1nYwotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtYm9laG0tZ2M6Ci0KLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWJvZWhtLWdjOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYyIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYyAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtcXRocmVhZHMgbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtcXRocmVhZHMKLW1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LXF0aHJlYWRzOgotCi1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1xdGhyZWFkczogCi0JQFsgLWYgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCi0JICB8fCBleGl0IDEKLQotCi0uUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LXJkYSBtYWludGFpbmVyLWNsZWFuLXRhcmdldC1yZGEKLW1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LXJkYToKLQotbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtcmRhOiAKLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3JkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvcmRhIiA7IFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCShjZCAkKFRBUkdFVF9TVUJESVIpL3JkYSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKLQkgIHx8IGV4aXQgMQotCi0KLS5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliYWRhIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmFkYQotbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliYWRhOgotCi1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJhZGE6IAotCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliYWRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJhZGEiIDsgXAotCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAotCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKLQlkb25lOyBcCi0JKGNkICQoVEFSR0VUX1NVQkRJUikvbGliYWRhICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAotCSAgfHwgZXhpdCAxCi0KLQotCiAKICMgSGVyZSBhcmUgdGhlIHRhcmdldHMgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgZG8tWCB0YXJnZXRzLgogCkBAIC0xNzk0Nyw2ICsyMDQ0LDIwNCBAQAogCShjZCBhc2ggJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1hc2ggaW5mby1hc2gKK21heWJlLWluZm8tYXNoOgorCitpbmZvLWFzaDogXAorICAgIGNvbmZpZ3VyZS1hc2ggCisJQFsgLWYgLi9hc2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGFzaCIgOyBcCisJKGNkIGFzaCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLWFzaCBkdmktYXNoCittYXliZS1kdmktYXNoOgorCitkdmktYXNoOiBcCisgICAgY29uZmlndXJlLWFzaCAKKwlAWyAtZiAuL2FzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBhc2giIDsgXAorCShjZCBhc2ggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1hc2ggVEFHUy1hc2gKK21heWJlLVRBR1MtYXNoOgorCitUQUdTLWFzaDogXAorICAgIGNvbmZpZ3VyZS1hc2ggCisJQFsgLWYgLi9hc2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIGFzaCIgOyBcCisJKGNkIGFzaCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWFzaCBpbnN0YWxsLWluZm8tYXNoCittYXliZS1pbnN0YWxsLWluZm8tYXNoOgorCitpbnN0YWxsLWluZm8tYXNoOiBcCisgICAgY29uZmlndXJlLWFzaCBcCisgICAgaW5mby1hc2ggCisJQFsgLWYgLi9hc2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gYXNoIiA7IFwKKwkoY2QgYXNoICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1hc2ggaW5zdGFsbGNoZWNrLWFzaAorbWF5YmUtaW5zdGFsbGNoZWNrLWFzaDoKKworaW5zdGFsbGNoZWNrLWFzaDogXAorICAgIGNvbmZpZ3VyZS1hc2ggCisJQFsgLWYgLi9hc2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gYXNoIiA7IFwKKwkoY2QgYXNoICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWFzaCBtb3N0bHljbGVhbi1hc2gKK21heWJlLW1vc3RseWNsZWFuLWFzaDoKKworbW9zdGx5Y2xlYW4tYXNoOiAKKwlAWyAtZiAuL2FzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGFzaCIgOyBcCisJKGNkIGFzaCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWFzaCBjbGVhbi1hc2gKK21heWJlLWNsZWFuLWFzaDoKKworY2xlYW4tYXNoOiAKKwlAWyAtZiAuL2FzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIGFzaCIgOyBcCisJKGNkIGFzaCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1hc2ggZGlzdGNsZWFuLWFzaAorbWF5YmUtZGlzdGNsZWFuLWFzaDoKKworZGlzdGNsZWFuLWFzaDogCisJQFsgLWYgLi9hc2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gYXNoIiA7IFwKKwkoY2QgYXNoICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tYXNoIG1haW50YWluZXItY2xlYW4tYXNoCittYXliZS1tYWludGFpbmVyLWNsZWFuLWFzaDoKKworbWFpbnRhaW5lci1jbGVhbi1hc2g6IAorCUBbIC1mIC4vYXNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBhc2giIDsgXAorCShjZCBhc2ggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLWF1dG9jb25mIG1heWJlLWNvbmZpZ3VyZS1hdXRvY29uZgogbWF5YmUtY29uZmlndXJlLWF1dG9jb25mOgogY29uZmlndXJlLWF1dG9jb25mOgpAQCAtMTgwMTQsNiArMjMwOSwyMDQgQEAKIAkoY2QgYXV0b2NvbmYgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1hdXRvY29uZiBpbmZvLWF1dG9jb25mCittYXliZS1pbmZvLWF1dG9jb25mOgorCitpbmZvLWF1dG9jb25mOiBcCisgICAgY29uZmlndXJlLWF1dG9jb25mIAorCUBbIC1mIC4vYXV0b2NvbmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGF1dG9jb25mIiA7IFwKKwkoY2QgYXV0b2NvbmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1hdXRvY29uZiBkdmktYXV0b2NvbmYKK21heWJlLWR2aS1hdXRvY29uZjoKKworZHZpLWF1dG9jb25mOiBcCisgICAgY29uZmlndXJlLWF1dG9jb25mIAorCUBbIC1mIC4vYXV0b2NvbmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gYXV0b2NvbmYiIDsgXAorCShjZCBhdXRvY29uZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWF1dG9jb25mIFRBR1MtYXV0b2NvbmYKK21heWJlLVRBR1MtYXV0b2NvbmY6CisKK1RBR1MtYXV0b2NvbmY6IFwKKyAgICBjb25maWd1cmUtYXV0b2NvbmYgCisJQFsgLWYgLi9hdXRvY29uZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gYXV0b2NvbmYiIDsgXAorCShjZCBhdXRvY29uZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWF1dG9jb25mIGluc3RhbGwtaW5mby1hdXRvY29uZgorbWF5YmUtaW5zdGFsbC1pbmZvLWF1dG9jb25mOgorCitpbnN0YWxsLWluZm8tYXV0b2NvbmY6IFwKKyAgICBjb25maWd1cmUtYXV0b2NvbmYgXAorICAgIGluZm8tYXV0b2NvbmYgCisJQFsgLWYgLi9hdXRvY29uZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBhdXRvY29uZiIgOyBcCisJKGNkIGF1dG9jb25mICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1hdXRvY29uZiBpbnN0YWxsY2hlY2stYXV0b2NvbmYKK21heWJlLWluc3RhbGxjaGVjay1hdXRvY29uZjoKKworaW5zdGFsbGNoZWNrLWF1dG9jb25mOiBcCisgICAgY29uZmlndXJlLWF1dG9jb25mIAorCUBbIC1mIC4vYXV0b2NvbmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gYXV0b2NvbmYiIDsgXAorCShjZCBhdXRvY29uZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1hdXRvY29uZiBtb3N0bHljbGVhbi1hdXRvY29uZgorbWF5YmUtbW9zdGx5Y2xlYW4tYXV0b2NvbmY6CisKK21vc3RseWNsZWFuLWF1dG9jb25mOiAKKwlAWyAtZiAuL2F1dG9jb25mL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gYXV0b2NvbmYiIDsgXAorCShjZCBhdXRvY29uZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWF1dG9jb25mIGNsZWFuLWF1dG9jb25mCittYXliZS1jbGVhbi1hdXRvY29uZjoKKworY2xlYW4tYXV0b2NvbmY6IAorCUBbIC1mIC4vYXV0b2NvbmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiBhdXRvY29uZiIgOyBcCisJKGNkIGF1dG9jb25mICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWF1dG9jb25mIGRpc3RjbGVhbi1hdXRvY29uZgorbWF5YmUtZGlzdGNsZWFuLWF1dG9jb25mOgorCitkaXN0Y2xlYW4tYXV0b2NvbmY6IAorCUBbIC1mIC4vYXV0b2NvbmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gYXV0b2NvbmYiIDsgXAorCShjZCBhdXRvY29uZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWF1dG9jb25mIG1haW50YWluZXItY2xlYW4tYXV0b2NvbmYKK21heWJlLW1haW50YWluZXItY2xlYW4tYXV0b2NvbmY6CisKK21haW50YWluZXItY2xlYW4tYXV0b2NvbmY6IAorCUBbIC1mIC4vYXV0b2NvbmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGF1dG9jb25mIiA7IFwKKwkoY2QgYXV0b2NvbmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLWF1dG9tYWtlIG1heWJlLWNvbmZpZ3VyZS1hdXRvbWFrZQogbWF5YmUtY29uZmlndXJlLWF1dG9tYWtlOgogY29uZmlndXJlLWF1dG9tYWtlOgpAQCAtMTgwODEsNiArMjU3NCwyMDQgQEAKIAkoY2QgYXV0b21ha2UgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1hdXRvbWFrZSBpbmZvLWF1dG9tYWtlCittYXliZS1pbmZvLWF1dG9tYWtlOgorCitpbmZvLWF1dG9tYWtlOiBcCisgICAgY29uZmlndXJlLWF1dG9tYWtlIAorCUBbIC1mIC4vYXV0b21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGF1dG9tYWtlIiA7IFwKKwkoY2QgYXV0b21ha2UgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1hdXRvbWFrZSBkdmktYXV0b21ha2UKK21heWJlLWR2aS1hdXRvbWFrZToKKworZHZpLWF1dG9tYWtlOiBcCisgICAgY29uZmlndXJlLWF1dG9tYWtlIAorCUBbIC1mIC4vYXV0b21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gYXV0b21ha2UiIDsgXAorCShjZCBhdXRvbWFrZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWF1dG9tYWtlIFRBR1MtYXV0b21ha2UKK21heWJlLVRBR1MtYXV0b21ha2U6CisKK1RBR1MtYXV0b21ha2U6IFwKKyAgICBjb25maWd1cmUtYXV0b21ha2UgCisJQFsgLWYgLi9hdXRvbWFrZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gYXV0b21ha2UiIDsgXAorCShjZCBhdXRvbWFrZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWF1dG9tYWtlIGluc3RhbGwtaW5mby1hdXRvbWFrZQorbWF5YmUtaW5zdGFsbC1pbmZvLWF1dG9tYWtlOgorCitpbnN0YWxsLWluZm8tYXV0b21ha2U6IFwKKyAgICBjb25maWd1cmUtYXV0b21ha2UgXAorICAgIGluZm8tYXV0b21ha2UgCisJQFsgLWYgLi9hdXRvbWFrZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBhdXRvbWFrZSIgOyBcCisJKGNkIGF1dG9tYWtlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1hdXRvbWFrZSBpbnN0YWxsY2hlY2stYXV0b21ha2UKK21heWJlLWluc3RhbGxjaGVjay1hdXRvbWFrZToKKworaW5zdGFsbGNoZWNrLWF1dG9tYWtlOiBcCisgICAgY29uZmlndXJlLWF1dG9tYWtlIAorCUBbIC1mIC4vYXV0b21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gYXV0b21ha2UiIDsgXAorCShjZCBhdXRvbWFrZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1hdXRvbWFrZSBtb3N0bHljbGVhbi1hdXRvbWFrZQorbWF5YmUtbW9zdGx5Y2xlYW4tYXV0b21ha2U6CisKK21vc3RseWNsZWFuLWF1dG9tYWtlOiAKKwlAWyAtZiAuL2F1dG9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gYXV0b21ha2UiIDsgXAorCShjZCBhdXRvbWFrZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWF1dG9tYWtlIGNsZWFuLWF1dG9tYWtlCittYXliZS1jbGVhbi1hdXRvbWFrZToKKworY2xlYW4tYXV0b21ha2U6IAorCUBbIC1mIC4vYXV0b21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiBhdXRvbWFrZSIgOyBcCisJKGNkIGF1dG9tYWtlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWF1dG9tYWtlIGRpc3RjbGVhbi1hdXRvbWFrZQorbWF5YmUtZGlzdGNsZWFuLWF1dG9tYWtlOgorCitkaXN0Y2xlYW4tYXV0b21ha2U6IAorCUBbIC1mIC4vYXV0b21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gYXV0b21ha2UiIDsgXAorCShjZCBhdXRvbWFrZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWF1dG9tYWtlIG1haW50YWluZXItY2xlYW4tYXV0b21ha2UKK21heWJlLW1haW50YWluZXItY2xlYW4tYXV0b21ha2U6CisKK21haW50YWluZXItY2xlYW4tYXV0b21ha2U6IAorCUBbIC1mIC4vYXV0b21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGF1dG9tYWtlIiA7IFwKKwkoY2QgYXV0b21ha2UgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLWJhc2ggbWF5YmUtY29uZmlndXJlLWJhc2gKIG1heWJlLWNvbmZpZ3VyZS1iYXNoOgogY29uZmlndXJlLWJhc2g6CkBAIC0xODE0OCw2ICsyODM5LDIwNCBAQAogCShjZCBiYXNoICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tYmFzaCBpbmZvLWJhc2gKK21heWJlLWluZm8tYmFzaDoKKworaW5mby1iYXNoOiBcCisgICAgY29uZmlndXJlLWJhc2ggCisJQFsgLWYgLi9iYXNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiBiYXNoIiA7IFwKKwkoY2QgYmFzaCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLWJhc2ggZHZpLWJhc2gKK21heWJlLWR2aS1iYXNoOgorCitkdmktYmFzaDogXAorICAgIGNvbmZpZ3VyZS1iYXNoIAorCUBbIC1mIC4vYmFzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBiYXNoIiA7IFwKKwkoY2QgYmFzaCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWJhc2ggVEFHUy1iYXNoCittYXliZS1UQUdTLWJhc2g6CisKK1RBR1MtYmFzaDogXAorICAgIGNvbmZpZ3VyZS1iYXNoIAorCUBbIC1mIC4vYmFzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gYmFzaCIgOyBcCisJKGNkIGJhc2ggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1iYXNoIGluc3RhbGwtaW5mby1iYXNoCittYXliZS1pbnN0YWxsLWluZm8tYmFzaDoKKworaW5zdGFsbC1pbmZvLWJhc2g6IFwKKyAgICBjb25maWd1cmUtYmFzaCBcCisgICAgaW5mby1iYXNoIAorCUBbIC1mIC4vYmFzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBiYXNoIiA7IFwKKwkoY2QgYmFzaCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stYmFzaCBpbnN0YWxsY2hlY2stYmFzaAorbWF5YmUtaW5zdGFsbGNoZWNrLWJhc2g6CisKK2luc3RhbGxjaGVjay1iYXNoOiBcCisgICAgY29uZmlndXJlLWJhc2ggCisJQFsgLWYgLi9iYXNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGJhc2giIDsgXAorCShjZCBiYXNoICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWJhc2ggbW9zdGx5Y2xlYW4tYmFzaAorbWF5YmUtbW9zdGx5Y2xlYW4tYmFzaDoKKworbW9zdGx5Y2xlYW4tYmFzaDogCisJQFsgLWYgLi9iYXNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gYmFzaCIgOyBcCisJKGNkIGJhc2ggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi1iYXNoIGNsZWFuLWJhc2gKK21heWJlLWNsZWFuLWJhc2g6CisKK2NsZWFuLWJhc2g6IAorCUBbIC1mIC4vYmFzaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIGJhc2giIDsgXAorCShjZCBiYXNoICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWJhc2ggZGlzdGNsZWFuLWJhc2gKK21heWJlLWRpc3RjbGVhbi1iYXNoOgorCitkaXN0Y2xlYW4tYmFzaDogCisJQFsgLWYgLi9iYXNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGJhc2giIDsgXAorCShjZCBiYXNoICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tYmFzaCBtYWludGFpbmVyLWNsZWFuLWJhc2gKK21heWJlLW1haW50YWluZXItY2xlYW4tYmFzaDoKKworbWFpbnRhaW5lci1jbGVhbi1iYXNoOiAKKwlAWyAtZiAuL2Jhc2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGJhc2giIDsgXAorCShjZCBiYXNoICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1iZmQgbWF5YmUtY29uZmlndXJlLWJmZAogbWF5YmUtY29uZmlndXJlLWJmZDoKIGNvbmZpZ3VyZS1iZmQ6CkBAIC0xODIxNSw2ICszMTA0LDIwNCBAQAogCShjZCBiZmQgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1iZmQgaW5mby1iZmQKK21heWJlLWluZm8tYmZkOgorCitpbmZvLWJmZDogXAorICAgIGNvbmZpZ3VyZS1iZmQgCisJQFsgLWYgLi9iZmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGJmZCIgOyBcCisJKGNkIGJmZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLWJmZCBkdmktYmZkCittYXliZS1kdmktYmZkOgorCitkdmktYmZkOiBcCisgICAgY29uZmlndXJlLWJmZCAKKwlAWyAtZiAuL2JmZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBiZmQiIDsgXAorCShjZCBiZmQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1iZmQgVEFHUy1iZmQKK21heWJlLVRBR1MtYmZkOgorCitUQUdTLWJmZDogXAorICAgIGNvbmZpZ3VyZS1iZmQgCisJQFsgLWYgLi9iZmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIGJmZCIgOyBcCisJKGNkIGJmZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWJmZCBpbnN0YWxsLWluZm8tYmZkCittYXliZS1pbnN0YWxsLWluZm8tYmZkOgorCitpbnN0YWxsLWluZm8tYmZkOiBcCisgICAgY29uZmlndXJlLWJmZCBcCisgICAgaW5mby1iZmQgCisJQFsgLWYgLi9iZmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gYmZkIiA7IFwKKwkoY2QgYmZkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1iZmQgaW5zdGFsbGNoZWNrLWJmZAorbWF5YmUtaW5zdGFsbGNoZWNrLWJmZDoKKworaW5zdGFsbGNoZWNrLWJmZDogXAorICAgIGNvbmZpZ3VyZS1iZmQgCisJQFsgLWYgLi9iZmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gYmZkIiA7IFwKKwkoY2QgYmZkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWJmZCBtb3N0bHljbGVhbi1iZmQKK21heWJlLW1vc3RseWNsZWFuLWJmZDoKKworbW9zdGx5Y2xlYW4tYmZkOiAKKwlAWyAtZiAuL2JmZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGJmZCIgOyBcCisJKGNkIGJmZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWJmZCBjbGVhbi1iZmQKK21heWJlLWNsZWFuLWJmZDoKKworY2xlYW4tYmZkOiAKKwlAWyAtZiAuL2JmZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIGJmZCIgOyBcCisJKGNkIGJmZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1iZmQgZGlzdGNsZWFuLWJmZAorbWF5YmUtZGlzdGNsZWFuLWJmZDoKKworZGlzdGNsZWFuLWJmZDogCisJQFsgLWYgLi9iZmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gYmZkIiA7IFwKKwkoY2QgYmZkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tYmZkIG1haW50YWluZXItY2xlYW4tYmZkCittYXliZS1tYWludGFpbmVyLWNsZWFuLWJmZDoKKworbWFpbnRhaW5lci1jbGVhbi1iZmQ6IAorCUBbIC1mIC4vYmZkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBiZmQiIDsgXAorCShjZCBiZmQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLW9wY29kZXMgbWF5YmUtY29uZmlndXJlLW9wY29kZXMKIG1heWJlLWNvbmZpZ3VyZS1vcGNvZGVzOgogY29uZmlndXJlLW9wY29kZXM6CkBAIC0xODI4Miw2ICszMzY5LDIwNCBAQAogCShjZCBvcGNvZGVzICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tb3Bjb2RlcyBpbmZvLW9wY29kZXMKK21heWJlLWluZm8tb3Bjb2RlczoKKworaW5mby1vcGNvZGVzOiBcCisgICAgY29uZmlndXJlLW9wY29kZXMgCisJQFsgLWYgLi9vcGNvZGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiBvcGNvZGVzIiA7IFwKKwkoY2Qgb3Bjb2RlcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLW9wY29kZXMgZHZpLW9wY29kZXMKK21heWJlLWR2aS1vcGNvZGVzOgorCitkdmktb3Bjb2RlczogXAorICAgIGNvbmZpZ3VyZS1vcGNvZGVzIAorCUBbIC1mIC4vb3Bjb2Rlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBvcGNvZGVzIiA7IFwKKwkoY2Qgb3Bjb2RlcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLW9wY29kZXMgVEFHUy1vcGNvZGVzCittYXliZS1UQUdTLW9wY29kZXM6CisKK1RBR1Mtb3Bjb2RlczogXAorICAgIGNvbmZpZ3VyZS1vcGNvZGVzIAorCUBbIC1mIC4vb3Bjb2Rlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gb3Bjb2RlcyIgOyBcCisJKGNkIG9wY29kZXMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1vcGNvZGVzIGluc3RhbGwtaW5mby1vcGNvZGVzCittYXliZS1pbnN0YWxsLWluZm8tb3Bjb2RlczoKKworaW5zdGFsbC1pbmZvLW9wY29kZXM6IFwKKyAgICBjb25maWd1cmUtb3Bjb2RlcyBcCisgICAgaW5mby1vcGNvZGVzIAorCUBbIC1mIC4vb3Bjb2Rlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBvcGNvZGVzIiA7IFwKKwkoY2Qgb3Bjb2RlcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stb3Bjb2RlcyBpbnN0YWxsY2hlY2stb3Bjb2RlcworbWF5YmUtaW5zdGFsbGNoZWNrLW9wY29kZXM6CisKK2luc3RhbGxjaGVjay1vcGNvZGVzOiBcCisgICAgY29uZmlndXJlLW9wY29kZXMgCisJQFsgLWYgLi9vcGNvZGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIG9wY29kZXMiIDsgXAorCShjZCBvcGNvZGVzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLW9wY29kZXMgbW9zdGx5Y2xlYW4tb3Bjb2RlcworbWF5YmUtbW9zdGx5Y2xlYW4tb3Bjb2RlczoKKworbW9zdGx5Y2xlYW4tb3Bjb2RlczogCisJQFsgLWYgLi9vcGNvZGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gb3Bjb2RlcyIgOyBcCisJKGNkIG9wY29kZXMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi1vcGNvZGVzIGNsZWFuLW9wY29kZXMKK21heWJlLWNsZWFuLW9wY29kZXM6CisKK2NsZWFuLW9wY29kZXM6IAorCUBbIC1mIC4vb3Bjb2Rlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIG9wY29kZXMiIDsgXAorCShjZCBvcGNvZGVzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLW9wY29kZXMgZGlzdGNsZWFuLW9wY29kZXMKK21heWJlLWRpc3RjbGVhbi1vcGNvZGVzOgorCitkaXN0Y2xlYW4tb3Bjb2RlczogCisJQFsgLWYgLi9vcGNvZGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIG9wY29kZXMiIDsgXAorCShjZCBvcGNvZGVzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tb3Bjb2RlcyBtYWludGFpbmVyLWNsZWFuLW9wY29kZXMKK21heWJlLW1haW50YWluZXItY2xlYW4tb3Bjb2RlczoKKworbWFpbnRhaW5lci1jbGVhbi1vcGNvZGVzOiAKKwlAWyAtZiAuL29wY29kZXMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIG9wY29kZXMiIDsgXAorCShjZCBvcGNvZGVzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1iaW51dGlscyBtYXliZS1jb25maWd1cmUtYmludXRpbHMKIG1heWJlLWNvbmZpZ3VyZS1iaW51dGlsczoKIGNvbmZpZ3VyZS1iaW51dGlsczoKQEAgLTE4MzQ5LDYgKzM2MzQsMjA0IEBACiAJKGNkIGJpbnV0aWxzICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tYmludXRpbHMgaW5mby1iaW51dGlscworbWF5YmUtaW5mby1iaW51dGlsczoKKworaW5mby1iaW51dGlsczogXAorICAgIGNvbmZpZ3VyZS1iaW51dGlscyAKKwlAWyAtZiAuL2JpbnV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiBiaW51dGlscyIgOyBcCisJKGNkIGJpbnV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktYmludXRpbHMgZHZpLWJpbnV0aWxzCittYXliZS1kdmktYmludXRpbHM6CisKK2R2aS1iaW51dGlsczogXAorICAgIGNvbmZpZ3VyZS1iaW51dGlscyAKKwlAWyAtZiAuL2JpbnV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGJpbnV0aWxzIiA7IFwKKwkoY2QgYmludXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1iaW51dGlscyBUQUdTLWJpbnV0aWxzCittYXliZS1UQUdTLWJpbnV0aWxzOgorCitUQUdTLWJpbnV0aWxzOiBcCisgICAgY29uZmlndXJlLWJpbnV0aWxzIAorCUBbIC1mIC4vYmludXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIGJpbnV0aWxzIiA7IFwKKwkoY2QgYmludXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1iaW51dGlscyBpbnN0YWxsLWluZm8tYmludXRpbHMKK21heWJlLWluc3RhbGwtaW5mby1iaW51dGlsczoKKworaW5zdGFsbC1pbmZvLWJpbnV0aWxzOiBcCisgICAgY29uZmlndXJlLWJpbnV0aWxzIFwKKyAgICBpbmZvLWJpbnV0aWxzIAorCUBbIC1mIC4vYmludXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gYmludXRpbHMiIDsgXAorCShjZCBiaW51dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stYmludXRpbHMgaW5zdGFsbGNoZWNrLWJpbnV0aWxzCittYXliZS1pbnN0YWxsY2hlY2stYmludXRpbHM6CisKK2luc3RhbGxjaGVjay1iaW51dGlsczogXAorICAgIGNvbmZpZ3VyZS1iaW51dGlscyAKKwlAWyAtZiAuL2JpbnV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGJpbnV0aWxzIiA7IFwKKwkoY2QgYmludXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tYmludXRpbHMgbW9zdGx5Y2xlYW4tYmludXRpbHMKK21heWJlLW1vc3RseWNsZWFuLWJpbnV0aWxzOgorCittb3N0bHljbGVhbi1iaW51dGlsczogCisJQFsgLWYgLi9iaW51dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGJpbnV0aWxzIiA7IFwKKwkoY2QgYmludXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi1iaW51dGlscyBjbGVhbi1iaW51dGlscworbWF5YmUtY2xlYW4tYmludXRpbHM6CisKK2NsZWFuLWJpbnV0aWxzOiAKKwlAWyAtZiAuL2JpbnV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gYmludXRpbHMiIDsgXAorCShjZCBiaW51dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1iaW51dGlscyBkaXN0Y2xlYW4tYmludXRpbHMKK21heWJlLWRpc3RjbGVhbi1iaW51dGlsczoKKworZGlzdGNsZWFuLWJpbnV0aWxzOiAKKwlAWyAtZiAuL2JpbnV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGJpbnV0aWxzIiA7IFwKKwkoY2QgYmludXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1iaW51dGlscyBtYWludGFpbmVyLWNsZWFuLWJpbnV0aWxzCittYXliZS1tYWludGFpbmVyLWNsZWFuLWJpbnV0aWxzOgorCittYWludGFpbmVyLWNsZWFuLWJpbnV0aWxzOiAKKwlAWyAtZiAuL2JpbnV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBiaW51dGlscyIgOyBcCisJKGNkIGJpbnV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1iaXNvbiBtYXliZS1jb25maWd1cmUtYmlzb24KIG1heWJlLWNvbmZpZ3VyZS1iaXNvbjoKIGNvbmZpZ3VyZS1iaXNvbjoKQEAgLTE4NDE5LDYgKzM5MDIsMjA0IEBACiAJKGNkIGJpc29uICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tYmlzb24gaW5mby1iaXNvbgorbWF5YmUtaW5mby1iaXNvbjoKKworaW5mby1iaXNvbjogXAorICAgIGNvbmZpZ3VyZS1iaXNvbiAKKwlAWyAtZiAuL2Jpc29uL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiBiaXNvbiIgOyBcCisJKGNkIGJpc29uICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktYmlzb24gZHZpLWJpc29uCittYXliZS1kdmktYmlzb246CisKK2R2aS1iaXNvbjogXAorICAgIGNvbmZpZ3VyZS1iaXNvbiAKKwlAWyAtZiAuL2Jpc29uL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGJpc29uIiA7IFwKKwkoY2QgYmlzb24gJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1iaXNvbiBUQUdTLWJpc29uCittYXliZS1UQUdTLWJpc29uOgorCitUQUdTLWJpc29uOiBcCisgICAgY29uZmlndXJlLWJpc29uIAorCUBbIC1mIC4vYmlzb24vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIGJpc29uIiA7IFwKKwkoY2QgYmlzb24gJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1iaXNvbiBpbnN0YWxsLWluZm8tYmlzb24KK21heWJlLWluc3RhbGwtaW5mby1iaXNvbjoKKworaW5zdGFsbC1pbmZvLWJpc29uOiBcCisgICAgY29uZmlndXJlLWJpc29uIFwKKyAgICBpbmZvLWJpc29uIAorCUBbIC1mIC4vYmlzb24vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gYmlzb24iIDsgXAorCShjZCBiaXNvbiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stYmlzb24gaW5zdGFsbGNoZWNrLWJpc29uCittYXliZS1pbnN0YWxsY2hlY2stYmlzb246CisKK2luc3RhbGxjaGVjay1iaXNvbjogXAorICAgIGNvbmZpZ3VyZS1iaXNvbiAKKwlAWyAtZiAuL2Jpc29uL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGJpc29uIiA7IFwKKwkoY2QgYmlzb24gJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tYmlzb24gbW9zdGx5Y2xlYW4tYmlzb24KK21heWJlLW1vc3RseWNsZWFuLWJpc29uOgorCittb3N0bHljbGVhbi1iaXNvbjogCisJQFsgLWYgLi9iaXNvbi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGJpc29uIiA7IFwKKwkoY2QgYmlzb24gJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi1iaXNvbiBjbGVhbi1iaXNvbgorbWF5YmUtY2xlYW4tYmlzb246CisKK2NsZWFuLWJpc29uOiAKKwlAWyAtZiAuL2Jpc29uL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gYmlzb24iIDsgXAorCShjZCBiaXNvbiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1iaXNvbiBkaXN0Y2xlYW4tYmlzb24KK21heWJlLWRpc3RjbGVhbi1iaXNvbjoKKworZGlzdGNsZWFuLWJpc29uOiAKKwlAWyAtZiAuL2Jpc29uL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGJpc29uIiA7IFwKKwkoY2QgYmlzb24gJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1iaXNvbiBtYWludGFpbmVyLWNsZWFuLWJpc29uCittYXliZS1tYWludGFpbmVyLWNsZWFuLWJpc29uOgorCittYWludGFpbmVyLWNsZWFuLWJpc29uOiAKKwlAWyAtZiAuL2Jpc29uL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBiaXNvbiIgOyBcCisJKGNkIGJpc29uICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1ieWFjYyBtYXliZS1jb25maWd1cmUtYnlhY2MKIG1heWJlLWNvbmZpZ3VyZS1ieWFjYzoKIGNvbmZpZ3VyZS1ieWFjYzoKQEAgLTE4NDg5LDYgKzQxNzAsMjA0IEBACiAJKGNkIGJ5YWNjICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tYnlhY2MgaW5mby1ieWFjYworbWF5YmUtaW5mby1ieWFjYzoKKworaW5mby1ieWFjYzogXAorICAgIGNvbmZpZ3VyZS1ieWFjYyAKKwlAWyAtZiAuL2J5YWNjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiBieWFjYyIgOyBcCisJKGNkIGJ5YWNjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktYnlhY2MgZHZpLWJ5YWNjCittYXliZS1kdmktYnlhY2M6CisKK2R2aS1ieWFjYzogXAorICAgIGNvbmZpZ3VyZS1ieWFjYyAKKwlAWyAtZiAuL2J5YWNjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGJ5YWNjIiA7IFwKKwkoY2QgYnlhY2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1ieWFjYyBUQUdTLWJ5YWNjCittYXliZS1UQUdTLWJ5YWNjOgorCitUQUdTLWJ5YWNjOiBcCisgICAgY29uZmlndXJlLWJ5YWNjIAorCUBbIC1mIC4vYnlhY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIGJ5YWNjIiA7IFwKKwkoY2QgYnlhY2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1ieWFjYyBpbnN0YWxsLWluZm8tYnlhY2MKK21heWJlLWluc3RhbGwtaW5mby1ieWFjYzoKKworaW5zdGFsbC1pbmZvLWJ5YWNjOiBcCisgICAgY29uZmlndXJlLWJ5YWNjIFwKKyAgICBpbmZvLWJ5YWNjIAorCUBbIC1mIC4vYnlhY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gYnlhY2MiIDsgXAorCShjZCBieWFjYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stYnlhY2MgaW5zdGFsbGNoZWNrLWJ5YWNjCittYXliZS1pbnN0YWxsY2hlY2stYnlhY2M6CisKK2luc3RhbGxjaGVjay1ieWFjYzogXAorICAgIGNvbmZpZ3VyZS1ieWFjYyAKKwlAWyAtZiAuL2J5YWNjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGJ5YWNjIiA7IFwKKwkoY2QgYnlhY2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tYnlhY2MgbW9zdGx5Y2xlYW4tYnlhY2MKK21heWJlLW1vc3RseWNsZWFuLWJ5YWNjOgorCittb3N0bHljbGVhbi1ieWFjYzogCisJQFsgLWYgLi9ieWFjYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGJ5YWNjIiA7IFwKKwkoY2QgYnlhY2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi1ieWFjYyBjbGVhbi1ieWFjYworbWF5YmUtY2xlYW4tYnlhY2M6CisKK2NsZWFuLWJ5YWNjOiAKKwlAWyAtZiAuL2J5YWNjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gYnlhY2MiIDsgXAorCShjZCBieWFjYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1ieWFjYyBkaXN0Y2xlYW4tYnlhY2MKK21heWJlLWRpc3RjbGVhbi1ieWFjYzoKKworZGlzdGNsZWFuLWJ5YWNjOiAKKwlAWyAtZiAuL2J5YWNjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGJ5YWNjIiA7IFwKKwkoY2QgYnlhY2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1ieWFjYyBtYWludGFpbmVyLWNsZWFuLWJ5YWNjCittYXliZS1tYWludGFpbmVyLWNsZWFuLWJ5YWNjOgorCittYWludGFpbmVyLWNsZWFuLWJ5YWNjOiAKKwlAWyAtZiAuL2J5YWNjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBieWFjYyIgOyBcCisJKGNkIGJ5YWNjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1iemlwMiBtYXliZS1jb25maWd1cmUtYnppcDIKIG1heWJlLWNvbmZpZ3VyZS1iemlwMjoKIGNvbmZpZ3VyZS1iemlwMjoKQEAgLTE4NTU2LDYgKzQ0MzUsMjA0IEBACiAJKGNkIGJ6aXAyICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tYnppcDIgaW5mby1iemlwMgorbWF5YmUtaW5mby1iemlwMjoKKworaW5mby1iemlwMjogXAorICAgIGNvbmZpZ3VyZS1iemlwMiAKKwlAWyAtZiAuL2J6aXAyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiBiemlwMiIgOyBcCisJKGNkIGJ6aXAyICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktYnppcDIgZHZpLWJ6aXAyCittYXliZS1kdmktYnppcDI6CisKK2R2aS1iemlwMjogXAorICAgIGNvbmZpZ3VyZS1iemlwMiAKKwlAWyAtZiAuL2J6aXAyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGJ6aXAyIiA7IFwKKwkoY2QgYnppcDIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1iemlwMiBUQUdTLWJ6aXAyCittYXliZS1UQUdTLWJ6aXAyOgorCitUQUdTLWJ6aXAyOiBcCisgICAgY29uZmlndXJlLWJ6aXAyIAorCUBbIC1mIC4vYnppcDIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIGJ6aXAyIiA7IFwKKwkoY2QgYnppcDIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1iemlwMiBpbnN0YWxsLWluZm8tYnppcDIKK21heWJlLWluc3RhbGwtaW5mby1iemlwMjoKKworaW5zdGFsbC1pbmZvLWJ6aXAyOiBcCisgICAgY29uZmlndXJlLWJ6aXAyIFwKKyAgICBpbmZvLWJ6aXAyIAorCUBbIC1mIC4vYnppcDIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gYnppcDIiIDsgXAorCShjZCBiemlwMiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stYnppcDIgaW5zdGFsbGNoZWNrLWJ6aXAyCittYXliZS1pbnN0YWxsY2hlY2stYnppcDI6CisKK2luc3RhbGxjaGVjay1iemlwMjogXAorICAgIGNvbmZpZ3VyZS1iemlwMiAKKwlAWyAtZiAuL2J6aXAyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGJ6aXAyIiA7IFwKKwkoY2QgYnppcDIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tYnppcDIgbW9zdGx5Y2xlYW4tYnppcDIKK21heWJlLW1vc3RseWNsZWFuLWJ6aXAyOgorCittb3N0bHljbGVhbi1iemlwMjogCisJQFsgLWYgLi9iemlwMi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGJ6aXAyIiA7IFwKKwkoY2QgYnppcDIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi1iemlwMiBjbGVhbi1iemlwMgorbWF5YmUtY2xlYW4tYnppcDI6CisKK2NsZWFuLWJ6aXAyOiAKKwlAWyAtZiAuL2J6aXAyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gYnppcDIiIDsgXAorCShjZCBiemlwMiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1iemlwMiBkaXN0Y2xlYW4tYnppcDIKK21heWJlLWRpc3RjbGVhbi1iemlwMjoKKworZGlzdGNsZWFuLWJ6aXAyOiAKKwlAWyAtZiAuL2J6aXAyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGJ6aXAyIiA7IFwKKwkoY2QgYnppcDIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1iemlwMiBtYWludGFpbmVyLWNsZWFuLWJ6aXAyCittYXliZS1tYWludGFpbmVyLWNsZWFuLWJ6aXAyOgorCittYWludGFpbmVyLWNsZWFuLWJ6aXAyOiAKKwlAWyAtZiAuL2J6aXAyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBiemlwMiIgOyBcCisJKGNkIGJ6aXAyICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1kZWphZ251IG1heWJlLWNvbmZpZ3VyZS1kZWphZ251CiBtYXliZS1jb25maWd1cmUtZGVqYWdudToKIGNvbmZpZ3VyZS1kZWphZ251OgpAQCAtMTg2MjMsNiArNDcwMCwyMDQgQEAKIAkoY2QgZGVqYWdudSAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWRlamFnbnUgaW5mby1kZWphZ251CittYXliZS1pbmZvLWRlamFnbnU6CisKK2luZm8tZGVqYWdudTogXAorICAgIGNvbmZpZ3VyZS1kZWphZ251IAorCUBbIC1mIC4vZGVqYWdudS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gZGVqYWdudSIgOyBcCisJKGNkIGRlamFnbnUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1kZWphZ251IGR2aS1kZWphZ251CittYXliZS1kdmktZGVqYWdudToKKworZHZpLWRlamFnbnU6IFwKKyAgICBjb25maWd1cmUtZGVqYWdudSAKKwlAWyAtZiAuL2RlamFnbnUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gZGVqYWdudSIgOyBcCisJKGNkIGRlamFnbnUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1kZWphZ251IFRBR1MtZGVqYWdudQorbWF5YmUtVEFHUy1kZWphZ251OgorCitUQUdTLWRlamFnbnU6IFwKKyAgICBjb25maWd1cmUtZGVqYWdudSAKKwlAWyAtZiAuL2RlamFnbnUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIGRlamFnbnUiIDsgXAorCShjZCBkZWphZ251ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZGVqYWdudSBpbnN0YWxsLWluZm8tZGVqYWdudQorbWF5YmUtaW5zdGFsbC1pbmZvLWRlamFnbnU6CisKK2luc3RhbGwtaW5mby1kZWphZ251OiBcCisgICAgY29uZmlndXJlLWRlamFnbnUgXAorICAgIGluZm8tZGVqYWdudSAKKwlAWyAtZiAuL2RlamFnbnUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gZGVqYWdudSIgOyBcCisJKGNkIGRlamFnbnUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWRlamFnbnUgaW5zdGFsbGNoZWNrLWRlamFnbnUKK21heWJlLWluc3RhbGxjaGVjay1kZWphZ251OgorCitpbnN0YWxsY2hlY2stZGVqYWdudTogXAorICAgIGNvbmZpZ3VyZS1kZWphZ251IAorCUBbIC1mIC4vZGVqYWdudS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBkZWphZ251IiA7IFwKKwkoY2QgZGVqYWdudSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1kZWphZ251IG1vc3RseWNsZWFuLWRlamFnbnUKK21heWJlLW1vc3RseWNsZWFuLWRlamFnbnU6CisKK21vc3RseWNsZWFuLWRlamFnbnU6IAorCUBbIC1mIC4vZGVqYWdudS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGRlamFnbnUiIDsgXAorCShjZCBkZWphZ251ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tZGVqYWdudSBjbGVhbi1kZWphZ251CittYXliZS1jbGVhbi1kZWphZ251OgorCitjbGVhbi1kZWphZ251OiAKKwlAWyAtZiAuL2RlamFnbnUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiBkZWphZ251IiA7IFwKKwkoY2QgZGVqYWdudSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1kZWphZ251IGRpc3RjbGVhbi1kZWphZ251CittYXliZS1kaXN0Y2xlYW4tZGVqYWdudToKKworZGlzdGNsZWFuLWRlamFnbnU6IAorCUBbIC1mIC4vZGVqYWdudS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBkZWphZ251IiA7IFwKKwkoY2QgZGVqYWdudSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWRlamFnbnUgbWFpbnRhaW5lci1jbGVhbi1kZWphZ251CittYXliZS1tYWludGFpbmVyLWNsZWFuLWRlamFnbnU6CisKK21haW50YWluZXItY2xlYW4tZGVqYWdudTogCisJQFsgLWYgLi9kZWphZ251L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBkZWphZ251IiA7IFwKKwkoY2QgZGVqYWdudSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtZGlmZiBtYXliZS1jb25maWd1cmUtZGlmZgogbWF5YmUtY29uZmlndXJlLWRpZmY6CiBjb25maWd1cmUtZGlmZjoKQEAgLTE4NjkwLDYgKzQ5NjUsMjA0IEBACiAJKGNkIGRpZmYgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1kaWZmIGluZm8tZGlmZgorbWF5YmUtaW5mby1kaWZmOgorCitpbmZvLWRpZmY6IFwKKyAgICBjb25maWd1cmUtZGlmZiAKKwlAWyAtZiAuL2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGRpZmYiIDsgXAorCShjZCBkaWZmICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktZGlmZiBkdmktZGlmZgorbWF5YmUtZHZpLWRpZmY6CisKK2R2aS1kaWZmOiBcCisgICAgY29uZmlndXJlLWRpZmYgCisJQFsgLWYgLi9kaWZmL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGRpZmYiIDsgXAorCShjZCBkaWZmICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtZGlmZiBUQUdTLWRpZmYKK21heWJlLVRBR1MtZGlmZjoKKworVEFHUy1kaWZmOiBcCisgICAgY29uZmlndXJlLWRpZmYgCisJQFsgLWYgLi9kaWZmL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBkaWZmIiA7IFwKKwkoY2QgZGlmZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWRpZmYgaW5zdGFsbC1pbmZvLWRpZmYKK21heWJlLWluc3RhbGwtaW5mby1kaWZmOgorCitpbnN0YWxsLWluZm8tZGlmZjogXAorICAgIGNvbmZpZ3VyZS1kaWZmIFwKKyAgICBpbmZvLWRpZmYgCisJQFsgLWYgLi9kaWZmL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGRpZmYiIDsgXAorCShjZCBkaWZmICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1kaWZmIGluc3RhbGxjaGVjay1kaWZmCittYXliZS1pbnN0YWxsY2hlY2stZGlmZjoKKworaW5zdGFsbGNoZWNrLWRpZmY6IFwKKyAgICBjb25maWd1cmUtZGlmZiAKKwlAWyAtZiAuL2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZGlmZiIgOyBcCisJKGNkIGRpZmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZGlmZiBtb3N0bHljbGVhbi1kaWZmCittYXliZS1tb3N0bHljbGVhbi1kaWZmOgorCittb3N0bHljbGVhbi1kaWZmOiAKKwlAWyAtZiAuL2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBkaWZmIiA7IFwKKwkoY2QgZGlmZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWRpZmYgY2xlYW4tZGlmZgorbWF5YmUtY2xlYW4tZGlmZjoKKworY2xlYW4tZGlmZjogCisJQFsgLWYgLi9kaWZmL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gZGlmZiIgOyBcCisJKGNkIGRpZmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tZGlmZiBkaXN0Y2xlYW4tZGlmZgorbWF5YmUtZGlzdGNsZWFuLWRpZmY6CisKK2Rpc3RjbGVhbi1kaWZmOiAKKwlAWyAtZiAuL2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZGlmZiIgOyBcCisJKGNkIGRpZmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1kaWZmIG1haW50YWluZXItY2xlYW4tZGlmZgorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1kaWZmOgorCittYWludGFpbmVyLWNsZWFuLWRpZmY6IAorCUBbIC1mIC4vZGlmZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZGlmZiIgOyBcCisJKGNkIGRpZmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLWRvc3V0aWxzIG1heWJlLWNvbmZpZ3VyZS1kb3N1dGlscwogbWF5YmUtY29uZmlndXJlLWRvc3V0aWxzOgogY29uZmlndXJlLWRvc3V0aWxzOgpAQCAtMTg3NTMsNiArNTIyNiwyMDQgQEAKIAkoY2QgZG9zdXRpbHMgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1kb3N1dGlscyBpbmZvLWRvc3V0aWxzCittYXliZS1pbmZvLWRvc3V0aWxzOgorCitpbmZvLWRvc3V0aWxzOiBcCisgICAgY29uZmlndXJlLWRvc3V0aWxzIAorCUBbIC1mIC4vZG9zdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGRvc3V0aWxzIiA7IFwKKwkoY2QgZG9zdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1kb3N1dGlscyBkdmktZG9zdXRpbHMKK21heWJlLWR2aS1kb3N1dGlsczoKKworZHZpLWRvc3V0aWxzOiBcCisgICAgY29uZmlndXJlLWRvc3V0aWxzIAorCUBbIC1mIC4vZG9zdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gZG9zdXRpbHMiIDsgXAorCShjZCBkb3N1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWRvc3V0aWxzIFRBR1MtZG9zdXRpbHMKK21heWJlLVRBR1MtZG9zdXRpbHM6CisKK1RBR1MtZG9zdXRpbHM6IFwKKyAgICBjb25maWd1cmUtZG9zdXRpbHMgCisJQFsgLWYgLi9kb3N1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gZG9zdXRpbHMiIDsgXAorCShjZCBkb3N1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWRvc3V0aWxzIGluc3RhbGwtaW5mby1kb3N1dGlscworbWF5YmUtaW5zdGFsbC1pbmZvLWRvc3V0aWxzOgorCitpbnN0YWxsLWluZm8tZG9zdXRpbHM6IFwKKyAgICBjb25maWd1cmUtZG9zdXRpbHMgXAorICAgIGluZm8tZG9zdXRpbHMgCisJQFsgLWYgLi9kb3N1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBkb3N1dGlscyIgOyBcCisJKGNkIGRvc3V0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1kb3N1dGlscyBpbnN0YWxsY2hlY2stZG9zdXRpbHMKK21heWJlLWluc3RhbGxjaGVjay1kb3N1dGlsczoKKworaW5zdGFsbGNoZWNrLWRvc3V0aWxzOiBcCisgICAgY29uZmlndXJlLWRvc3V0aWxzIAorCUBbIC1mIC4vZG9zdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZG9zdXRpbHMiIDsgXAorCShjZCBkb3N1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1kb3N1dGlscyBtb3N0bHljbGVhbi1kb3N1dGlscworbWF5YmUtbW9zdGx5Y2xlYW4tZG9zdXRpbHM6CisKK21vc3RseWNsZWFuLWRvc3V0aWxzOiAKKwlAWyAtZiAuL2Rvc3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZG9zdXRpbHMiIDsgXAorCShjZCBkb3N1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWRvc3V0aWxzIGNsZWFuLWRvc3V0aWxzCittYXliZS1jbGVhbi1kb3N1dGlsczoKKworY2xlYW4tZG9zdXRpbHM6IAorCUBbIC1mIC4vZG9zdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiBkb3N1dGlscyIgOyBcCisJKGNkIGRvc3V0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWRvc3V0aWxzIGRpc3RjbGVhbi1kb3N1dGlscworbWF5YmUtZGlzdGNsZWFuLWRvc3V0aWxzOgorCitkaXN0Y2xlYW4tZG9zdXRpbHM6IAorCUBbIC1mIC4vZG9zdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZG9zdXRpbHMiIDsgXAorCShjZCBkb3N1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWRvc3V0aWxzIG1haW50YWluZXItY2xlYW4tZG9zdXRpbHMKK21heWJlLW1haW50YWluZXItY2xlYW4tZG9zdXRpbHM6CisKK21haW50YWluZXItY2xlYW4tZG9zdXRpbHM6IAorCUBbIC1mIC4vZG9zdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGRvc3V0aWxzIiA7IFwKKwkoY2QgZG9zdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLWV0YyBtYXliZS1jb25maWd1cmUtZXRjCiBtYXliZS1jb25maWd1cmUtZXRjOgogY29uZmlndXJlLWV0YzoKQEAgLTE4ODIwLDYgKzU0OTEsMjA0IEBACiAJKGNkIGV0YyAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWV0YyBpbmZvLWV0YworbWF5YmUtaW5mby1ldGM6CisKK2luZm8tZXRjOiBcCisgICAgY29uZmlndXJlLWV0YyAKKwlAWyAtZiAuL2V0Yy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gZXRjIiA7IFwKKwkoY2QgZXRjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktZXRjIGR2aS1ldGMKK21heWJlLWR2aS1ldGM6CisKK2R2aS1ldGM6IFwKKyAgICBjb25maWd1cmUtZXRjIAorCUBbIC1mIC4vZXRjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGV0YyIgOyBcCisJKGNkIGV0YyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWV0YyBUQUdTLWV0YworbWF5YmUtVEFHUy1ldGM6CisKK1RBR1MtZXRjOiBcCisgICAgY29uZmlndXJlLWV0YyAKKwlAWyAtZiAuL2V0Yy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gZXRjIiA7IFwKKwkoY2QgZXRjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZXRjIGluc3RhbGwtaW5mby1ldGMKK21heWJlLWluc3RhbGwtaW5mby1ldGM6CisKK2luc3RhbGwtaW5mby1ldGM6IFwKKyAgICBjb25maWd1cmUtZXRjIFwKKyAgICBpbmZvLWV0YyAKKwlAWyAtZiAuL2V0Yy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBldGMiIDsgXAorCShjZCBldGMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWV0YyBpbnN0YWxsY2hlY2stZXRjCittYXliZS1pbnN0YWxsY2hlY2stZXRjOgorCitpbnN0YWxsY2hlY2stZXRjOiBcCisgICAgY29uZmlndXJlLWV0YyAKKwlAWyAtZiAuL2V0Yy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBldGMiIDsgXAorCShjZCBldGMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZXRjIG1vc3RseWNsZWFuLWV0YworbWF5YmUtbW9zdGx5Y2xlYW4tZXRjOgorCittb3N0bHljbGVhbi1ldGM6IAorCUBbIC1mIC4vZXRjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZXRjIiA7IFwKKwkoY2QgZXRjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tZXRjIGNsZWFuLWV0YworbWF5YmUtY2xlYW4tZXRjOgorCitjbGVhbi1ldGM6IAorCUBbIC1mIC4vZXRjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gZXRjIiA7IFwKKwkoY2QgZXRjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWV0YyBkaXN0Y2xlYW4tZXRjCittYXliZS1kaXN0Y2xlYW4tZXRjOgorCitkaXN0Y2xlYW4tZXRjOiAKKwlAWyAtZiAuL2V0Yy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBldGMiIDsgXAorCShjZCBldGMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1ldGMgbWFpbnRhaW5lci1jbGVhbi1ldGMKK21heWJlLW1haW50YWluZXItY2xlYW4tZXRjOgorCittYWludGFpbmVyLWNsZWFuLWV0YzogCisJQFsgLWYgLi9ldGMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGV0YyIgOyBcCisJKGNkIGV0YyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtZmFzdGphciBtYXliZS1jb25maWd1cmUtZmFzdGphcgogbWF5YmUtY29uZmlndXJlLWZhc3RqYXI6CiBjb25maWd1cmUtZmFzdGphcjoKQEAgLTE4ODkwLDYgKzU3NTksMjA0IEBACiAJKGNkIGZhc3RqYXIgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1mYXN0amFyIGluZm8tZmFzdGphcgorbWF5YmUtaW5mby1mYXN0amFyOgorCitpbmZvLWZhc3RqYXI6IFwKKyAgICBjb25maWd1cmUtZmFzdGphciAKKwlAWyAtZiAuL2Zhc3RqYXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGZhc3RqYXIiIDsgXAorCShjZCBmYXN0amFyICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktZmFzdGphciBkdmktZmFzdGphcgorbWF5YmUtZHZpLWZhc3RqYXI6CisKK2R2aS1mYXN0amFyOiBcCisgICAgY29uZmlndXJlLWZhc3RqYXIgCisJQFsgLWYgLi9mYXN0amFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGZhc3RqYXIiIDsgXAorCShjZCBmYXN0amFyICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtZmFzdGphciBUQUdTLWZhc3RqYXIKK21heWJlLVRBR1MtZmFzdGphcjoKKworVEFHUy1mYXN0amFyOiBcCisgICAgY29uZmlndXJlLWZhc3RqYXIgCisJQFsgLWYgLi9mYXN0amFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBmYXN0amFyIiA7IFwKKwkoY2QgZmFzdGphciAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWZhc3RqYXIgaW5zdGFsbC1pbmZvLWZhc3RqYXIKK21heWJlLWluc3RhbGwtaW5mby1mYXN0amFyOgorCitpbnN0YWxsLWluZm8tZmFzdGphcjogXAorICAgIGNvbmZpZ3VyZS1mYXN0amFyIFwKKyAgICBpbmZvLWZhc3RqYXIgCisJQFsgLWYgLi9mYXN0amFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGZhc3RqYXIiIDsgXAorCShjZCBmYXN0amFyICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1mYXN0amFyIGluc3RhbGxjaGVjay1mYXN0amFyCittYXliZS1pbnN0YWxsY2hlY2stZmFzdGphcjoKKworaW5zdGFsbGNoZWNrLWZhc3RqYXI6IFwKKyAgICBjb25maWd1cmUtZmFzdGphciAKKwlAWyAtZiAuL2Zhc3RqYXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZmFzdGphciIgOyBcCisJKGNkIGZhc3RqYXIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZmFzdGphciBtb3N0bHljbGVhbi1mYXN0amFyCittYXliZS1tb3N0bHljbGVhbi1mYXN0amFyOgorCittb3N0bHljbGVhbi1mYXN0amFyOiAKKwlAWyAtZiAuL2Zhc3RqYXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBmYXN0amFyIiA7IFwKKwkoY2QgZmFzdGphciAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWZhc3RqYXIgY2xlYW4tZmFzdGphcgorbWF5YmUtY2xlYW4tZmFzdGphcjoKKworY2xlYW4tZmFzdGphcjogCisJQFsgLWYgLi9mYXN0amFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gZmFzdGphciIgOyBcCisJKGNkIGZhc3RqYXIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tZmFzdGphciBkaXN0Y2xlYW4tZmFzdGphcgorbWF5YmUtZGlzdGNsZWFuLWZhc3RqYXI6CisKK2Rpc3RjbGVhbi1mYXN0amFyOiAKKwlAWyAtZiAuL2Zhc3RqYXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZmFzdGphciIgOyBcCisJKGNkIGZhc3RqYXIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1mYXN0amFyIG1haW50YWluZXItY2xlYW4tZmFzdGphcgorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1mYXN0amFyOgorCittYWludGFpbmVyLWNsZWFuLWZhc3RqYXI6IAorCUBbIC1mIC4vZmFzdGphci9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZmFzdGphciIgOyBcCisJKGNkIGZhc3RqYXIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLWZpbGV1dGlscyBtYXliZS1jb25maWd1cmUtZmlsZXV0aWxzCiBtYXliZS1jb25maWd1cmUtZmlsZXV0aWxzOgogY29uZmlndXJlLWZpbGV1dGlsczoKQEAgLTE4OTU3LDYgKzYwMjQsMjA0IEBACiAJKGNkIGZpbGV1dGlscyAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWZpbGV1dGlscyBpbmZvLWZpbGV1dGlscworbWF5YmUtaW5mby1maWxldXRpbHM6CisKK2luZm8tZmlsZXV0aWxzOiBcCisgICAgY29uZmlndXJlLWZpbGV1dGlscyAKKwlAWyAtZiAuL2ZpbGV1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gZmlsZXV0aWxzIiA7IFwKKwkoY2QgZmlsZXV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktZmlsZXV0aWxzIGR2aS1maWxldXRpbHMKK21heWJlLWR2aS1maWxldXRpbHM6CisKK2R2aS1maWxldXRpbHM6IFwKKyAgICBjb25maWd1cmUtZmlsZXV0aWxzIAorCUBbIC1mIC4vZmlsZXV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGZpbGV1dGlscyIgOyBcCisJKGNkIGZpbGV1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWZpbGV1dGlscyBUQUdTLWZpbGV1dGlscworbWF5YmUtVEFHUy1maWxldXRpbHM6CisKK1RBR1MtZmlsZXV0aWxzOiBcCisgICAgY29uZmlndXJlLWZpbGV1dGlscyAKKwlAWyAtZiAuL2ZpbGV1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gZmlsZXV0aWxzIiA7IFwKKwkoY2QgZmlsZXV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZmlsZXV0aWxzIGluc3RhbGwtaW5mby1maWxldXRpbHMKK21heWJlLWluc3RhbGwtaW5mby1maWxldXRpbHM6CisKK2luc3RhbGwtaW5mby1maWxldXRpbHM6IFwKKyAgICBjb25maWd1cmUtZmlsZXV0aWxzIFwKKyAgICBpbmZvLWZpbGV1dGlscyAKKwlAWyAtZiAuL2ZpbGV1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBmaWxldXRpbHMiIDsgXAorCShjZCBmaWxldXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWZpbGV1dGlscyBpbnN0YWxsY2hlY2stZmlsZXV0aWxzCittYXliZS1pbnN0YWxsY2hlY2stZmlsZXV0aWxzOgorCitpbnN0YWxsY2hlY2stZmlsZXV0aWxzOiBcCisgICAgY29uZmlndXJlLWZpbGV1dGlscyAKKwlAWyAtZiAuL2ZpbGV1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBmaWxldXRpbHMiIDsgXAorCShjZCBmaWxldXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZmlsZXV0aWxzIG1vc3RseWNsZWFuLWZpbGV1dGlscworbWF5YmUtbW9zdGx5Y2xlYW4tZmlsZXV0aWxzOgorCittb3N0bHljbGVhbi1maWxldXRpbHM6IAorCUBbIC1mIC4vZmlsZXV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZmlsZXV0aWxzIiA7IFwKKwkoY2QgZmlsZXV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tZmlsZXV0aWxzIGNsZWFuLWZpbGV1dGlscworbWF5YmUtY2xlYW4tZmlsZXV0aWxzOgorCitjbGVhbi1maWxldXRpbHM6IAorCUBbIC1mIC4vZmlsZXV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gZmlsZXV0aWxzIiA7IFwKKwkoY2QgZmlsZXV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWZpbGV1dGlscyBkaXN0Y2xlYW4tZmlsZXV0aWxzCittYXliZS1kaXN0Y2xlYW4tZmlsZXV0aWxzOgorCitkaXN0Y2xlYW4tZmlsZXV0aWxzOiAKKwlAWyAtZiAuL2ZpbGV1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBmaWxldXRpbHMiIDsgXAorCShjZCBmaWxldXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1maWxldXRpbHMgbWFpbnRhaW5lci1jbGVhbi1maWxldXRpbHMKK21heWJlLW1haW50YWluZXItY2xlYW4tZmlsZXV0aWxzOgorCittYWludGFpbmVyLWNsZWFuLWZpbGV1dGlsczogCisJQFsgLWYgLi9maWxldXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGZpbGV1dGlscyIgOyBcCisJKGNkIGZpbGV1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtZmluZHV0aWxzIG1heWJlLWNvbmZpZ3VyZS1maW5kdXRpbHMKIG1heWJlLWNvbmZpZ3VyZS1maW5kdXRpbHM6CiBjb25maWd1cmUtZmluZHV0aWxzOgpAQCAtMTkwMjQsNiArNjI4OSwyMDQgQEAKIAkoY2QgZmluZHV0aWxzICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tZmluZHV0aWxzIGluZm8tZmluZHV0aWxzCittYXliZS1pbmZvLWZpbmR1dGlsczoKKworaW5mby1maW5kdXRpbHM6IFwKKyAgICBjb25maWd1cmUtZmluZHV0aWxzIAorCUBbIC1mIC4vZmluZHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiBmaW5kdXRpbHMiIDsgXAorCShjZCBmaW5kdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1maW5kdXRpbHMgZHZpLWZpbmR1dGlscworbWF5YmUtZHZpLWZpbmR1dGlsczoKKworZHZpLWZpbmR1dGlsczogXAorICAgIGNvbmZpZ3VyZS1maW5kdXRpbHMgCisJQFsgLWYgLi9maW5kdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gZmluZHV0aWxzIiA7IFwKKwkoY2QgZmluZHV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtZmluZHV0aWxzIFRBR1MtZmluZHV0aWxzCittYXliZS1UQUdTLWZpbmR1dGlsczoKKworVEFHUy1maW5kdXRpbHM6IFwKKyAgICBjb25maWd1cmUtZmluZHV0aWxzIAorCUBbIC1mIC4vZmluZHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBmaW5kdXRpbHMiIDsgXAorCShjZCBmaW5kdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1maW5kdXRpbHMgaW5zdGFsbC1pbmZvLWZpbmR1dGlscworbWF5YmUtaW5zdGFsbC1pbmZvLWZpbmR1dGlsczoKKworaW5zdGFsbC1pbmZvLWZpbmR1dGlsczogXAorICAgIGNvbmZpZ3VyZS1maW5kdXRpbHMgXAorICAgIGluZm8tZmluZHV0aWxzIAorCUBbIC1mIC4vZmluZHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGZpbmR1dGlscyIgOyBcCisJKGNkIGZpbmR1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stZmluZHV0aWxzIGluc3RhbGxjaGVjay1maW5kdXRpbHMKK21heWJlLWluc3RhbGxjaGVjay1maW5kdXRpbHM6CisKK2luc3RhbGxjaGVjay1maW5kdXRpbHM6IFwKKyAgICBjb25maWd1cmUtZmluZHV0aWxzIAorCUBbIC1mIC4vZmluZHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGZpbmR1dGlscyIgOyBcCisJKGNkIGZpbmR1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1maW5kdXRpbHMgbW9zdGx5Y2xlYW4tZmluZHV0aWxzCittYXliZS1tb3N0bHljbGVhbi1maW5kdXRpbHM6CisKK21vc3RseWNsZWFuLWZpbmR1dGlsczogCisJQFsgLWYgLi9maW5kdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBmaW5kdXRpbHMiIDsgXAorCShjZCBmaW5kdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi1maW5kdXRpbHMgY2xlYW4tZmluZHV0aWxzCittYXliZS1jbGVhbi1maW5kdXRpbHM6CisKK2NsZWFuLWZpbmR1dGlsczogCisJQFsgLWYgLi9maW5kdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiBmaW5kdXRpbHMiIDsgXAorCShjZCBmaW5kdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tZmluZHV0aWxzIGRpc3RjbGVhbi1maW5kdXRpbHMKK21heWJlLWRpc3RjbGVhbi1maW5kdXRpbHM6CisKK2Rpc3RjbGVhbi1maW5kdXRpbHM6IAorCUBbIC1mIC4vZmluZHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGZpbmR1dGlscyIgOyBcCisJKGNkIGZpbmR1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWZpbmR1dGlscyBtYWludGFpbmVyLWNsZWFuLWZpbmR1dGlscworbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1maW5kdXRpbHM6CisKK21haW50YWluZXItY2xlYW4tZmluZHV0aWxzOiAKKwlAWyAtZiAuL2ZpbmR1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZmluZHV0aWxzIiA7IFwKKwkoY2QgZmluZHV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1maW5kIG1heWJlLWNvbmZpZ3VyZS1maW5kCiBtYXliZS1jb25maWd1cmUtZmluZDoKIGNvbmZpZ3VyZS1maW5kOgpAQCAtMTkwOTEsNiArNjU1NCwyMDQgQEAKIAkoY2QgZmluZCAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWZpbmQgaW5mby1maW5kCittYXliZS1pbmZvLWZpbmQ6CisKK2luZm8tZmluZDogXAorICAgIGNvbmZpZ3VyZS1maW5kIAorCUBbIC1mIC4vZmluZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gZmluZCIgOyBcCisJKGNkIGZpbmQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1maW5kIGR2aS1maW5kCittYXliZS1kdmktZmluZDoKKworZHZpLWZpbmQ6IFwKKyAgICBjb25maWd1cmUtZmluZCAKKwlAWyAtZiAuL2ZpbmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gZmluZCIgOyBcCisJKGNkIGZpbmQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1maW5kIFRBR1MtZmluZAorbWF5YmUtVEFHUy1maW5kOgorCitUQUdTLWZpbmQ6IFwKKyAgICBjb25maWd1cmUtZmluZCAKKwlAWyAtZiAuL2ZpbmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIGZpbmQiIDsgXAorCShjZCBmaW5kICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZmluZCBpbnN0YWxsLWluZm8tZmluZAorbWF5YmUtaW5zdGFsbC1pbmZvLWZpbmQ6CisKK2luc3RhbGwtaW5mby1maW5kOiBcCisgICAgY29uZmlndXJlLWZpbmQgXAorICAgIGluZm8tZmluZCAKKwlAWyAtZiAuL2ZpbmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gZmluZCIgOyBcCisJKGNkIGZpbmQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWZpbmQgaW5zdGFsbGNoZWNrLWZpbmQKK21heWJlLWluc3RhbGxjaGVjay1maW5kOgorCitpbnN0YWxsY2hlY2stZmluZDogXAorICAgIGNvbmZpZ3VyZS1maW5kIAorCUBbIC1mIC4vZmluZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBmaW5kIiA7IFwKKwkoY2QgZmluZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1maW5kIG1vc3RseWNsZWFuLWZpbmQKK21heWJlLW1vc3RseWNsZWFuLWZpbmQ6CisKK21vc3RseWNsZWFuLWZpbmQ6IAorCUBbIC1mIC4vZmluZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGZpbmQiIDsgXAorCShjZCBmaW5kICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tZmluZCBjbGVhbi1maW5kCittYXliZS1jbGVhbi1maW5kOgorCitjbGVhbi1maW5kOiAKKwlAWyAtZiAuL2ZpbmQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiBmaW5kIiA7IFwKKwkoY2QgZmluZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1maW5kIGRpc3RjbGVhbi1maW5kCittYXliZS1kaXN0Y2xlYW4tZmluZDoKKworZGlzdGNsZWFuLWZpbmQ6IAorCUBbIC1mIC4vZmluZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBmaW5kIiA7IFwKKwkoY2QgZmluZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWZpbmQgbWFpbnRhaW5lci1jbGVhbi1maW5kCittYXliZS1tYWludGFpbmVyLWNsZWFuLWZpbmQ6CisKK21haW50YWluZXItY2xlYW4tZmluZDogCisJQFsgLWYgLi9maW5kL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBmaW5kIiA7IFwKKwkoY2QgZmluZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtZmxleCBtYXliZS1jb25maWd1cmUtZmxleAogbWF5YmUtY29uZmlndXJlLWZsZXg6CiBjb25maWd1cmUtZmxleDoKQEAgLTE5MTYxLDYgKzY4MjIsMjA0IEBACiAJKGNkIGZsZXggJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1mbGV4IGluZm8tZmxleAorbWF5YmUtaW5mby1mbGV4OgorCitpbmZvLWZsZXg6IFwKKyAgICBjb25maWd1cmUtZmxleCAKKwlAWyAtZiAuL2ZsZXgvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGZsZXgiIDsgXAorCShjZCBmbGV4ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktZmxleCBkdmktZmxleAorbWF5YmUtZHZpLWZsZXg6CisKK2R2aS1mbGV4OiBcCisgICAgY29uZmlndXJlLWZsZXggCisJQFsgLWYgLi9mbGV4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGZsZXgiIDsgXAorCShjZCBmbGV4ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtZmxleCBUQUdTLWZsZXgKK21heWJlLVRBR1MtZmxleDoKKworVEFHUy1mbGV4OiBcCisgICAgY29uZmlndXJlLWZsZXggCisJQFsgLWYgLi9mbGV4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBmbGV4IiA7IFwKKwkoY2QgZmxleCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWZsZXggaW5zdGFsbC1pbmZvLWZsZXgKK21heWJlLWluc3RhbGwtaW5mby1mbGV4OgorCitpbnN0YWxsLWluZm8tZmxleDogXAorICAgIGNvbmZpZ3VyZS1mbGV4IFwKKyAgICBpbmZvLWZsZXggCisJQFsgLWYgLi9mbGV4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGZsZXgiIDsgXAorCShjZCBmbGV4ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1mbGV4IGluc3RhbGxjaGVjay1mbGV4CittYXliZS1pbnN0YWxsY2hlY2stZmxleDoKKworaW5zdGFsbGNoZWNrLWZsZXg6IFwKKyAgICBjb25maWd1cmUtZmxleCAKKwlAWyAtZiAuL2ZsZXgvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZmxleCIgOyBcCisJKGNkIGZsZXggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZmxleCBtb3N0bHljbGVhbi1mbGV4CittYXliZS1tb3N0bHljbGVhbi1mbGV4OgorCittb3N0bHljbGVhbi1mbGV4OiAKKwlAWyAtZiAuL2ZsZXgvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBmbGV4IiA7IFwKKwkoY2QgZmxleCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWZsZXggY2xlYW4tZmxleAorbWF5YmUtY2xlYW4tZmxleDoKKworY2xlYW4tZmxleDogCisJQFsgLWYgLi9mbGV4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gZmxleCIgOyBcCisJKGNkIGZsZXggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tZmxleCBkaXN0Y2xlYW4tZmxleAorbWF5YmUtZGlzdGNsZWFuLWZsZXg6CisKK2Rpc3RjbGVhbi1mbGV4OiAKKwlAWyAtZiAuL2ZsZXgvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZmxleCIgOyBcCisJKGNkIGZsZXggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1mbGV4IG1haW50YWluZXItY2xlYW4tZmxleAorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1mbGV4OgorCittYWludGFpbmVyLWNsZWFuLWZsZXg6IAorCUBbIC1mIC4vZmxleC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZmxleCIgOyBcCisJKGNkIGZsZXggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLWdhcyBtYXliZS1jb25maWd1cmUtZ2FzCiBtYXliZS1jb25maWd1cmUtZ2FzOgogY29uZmlndXJlLWdhczoKQEAgLTE5MjI4LDYgKzcwODcsMjA0IEBACiAJKGNkIGdhcyAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWdhcyBpbmZvLWdhcworbWF5YmUtaW5mby1nYXM6CisKK2luZm8tZ2FzOiBcCisgICAgY29uZmlndXJlLWdhcyAKKwlAWyAtZiAuL2dhcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gZ2FzIiA7IFwKKwkoY2QgZ2FzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktZ2FzIGR2aS1nYXMKK21heWJlLWR2aS1nYXM6CisKK2R2aS1nYXM6IFwKKyAgICBjb25maWd1cmUtZ2FzIAorCUBbIC1mIC4vZ2FzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGdhcyIgOyBcCisJKGNkIGdhcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWdhcyBUQUdTLWdhcworbWF5YmUtVEFHUy1nYXM6CisKK1RBR1MtZ2FzOiBcCisgICAgY29uZmlndXJlLWdhcyAKKwlAWyAtZiAuL2dhcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gZ2FzIiA7IFwKKwkoY2QgZ2FzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZ2FzIGluc3RhbGwtaW5mby1nYXMKK21heWJlLWluc3RhbGwtaW5mby1nYXM6CisKK2luc3RhbGwtaW5mby1nYXM6IFwKKyAgICBjb25maWd1cmUtZ2FzIFwKKyAgICBpbmZvLWdhcyAKKwlAWyAtZiAuL2dhcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBnYXMiIDsgXAorCShjZCBnYXMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWdhcyBpbnN0YWxsY2hlY2stZ2FzCittYXliZS1pbnN0YWxsY2hlY2stZ2FzOgorCitpbnN0YWxsY2hlY2stZ2FzOiBcCisgICAgY29uZmlndXJlLWdhcyAKKwlAWyAtZiAuL2dhcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBnYXMiIDsgXAorCShjZCBnYXMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZ2FzIG1vc3RseWNsZWFuLWdhcworbWF5YmUtbW9zdGx5Y2xlYW4tZ2FzOgorCittb3N0bHljbGVhbi1nYXM6IAorCUBbIC1mIC4vZ2FzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZ2FzIiA7IFwKKwkoY2QgZ2FzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tZ2FzIGNsZWFuLWdhcworbWF5YmUtY2xlYW4tZ2FzOgorCitjbGVhbi1nYXM6IAorCUBbIC1mIC4vZ2FzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gZ2FzIiA7IFwKKwkoY2QgZ2FzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWdhcyBkaXN0Y2xlYW4tZ2FzCittYXliZS1kaXN0Y2xlYW4tZ2FzOgorCitkaXN0Y2xlYW4tZ2FzOiAKKwlAWyAtZiAuL2dhcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBnYXMiIDsgXAorCShjZCBnYXMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1nYXMgbWFpbnRhaW5lci1jbGVhbi1nYXMKK21heWJlLW1haW50YWluZXItY2xlYW4tZ2FzOgorCittYWludGFpbmVyLWNsZWFuLWdhczogCisJQFsgLWYgLi9nYXMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGdhcyIgOyBcCisJKGNkIGdhcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtZ2F3ayBtYXliZS1jb25maWd1cmUtZ2F3awogbWF5YmUtY29uZmlndXJlLWdhd2s6CiBjb25maWd1cmUtZ2F3azoKQEAgLTE5Mjk1LDYgKzczNTIsMjA0IEBACiAJKGNkIGdhd2sgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1nYXdrIGluZm8tZ2F3aworbWF5YmUtaW5mby1nYXdrOgorCitpbmZvLWdhd2s6IFwKKyAgICBjb25maWd1cmUtZ2F3ayAKKwlAWyAtZiAuL2dhd2svTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGdhd2siIDsgXAorCShjZCBnYXdrICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktZ2F3ayBkdmktZ2F3aworbWF5YmUtZHZpLWdhd2s6CisKK2R2aS1nYXdrOiBcCisgICAgY29uZmlndXJlLWdhd2sgCisJQFsgLWYgLi9nYXdrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGdhd2siIDsgXAorCShjZCBnYXdrICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtZ2F3ayBUQUdTLWdhd2sKK21heWJlLVRBR1MtZ2F3azoKKworVEFHUy1nYXdrOiBcCisgICAgY29uZmlndXJlLWdhd2sgCisJQFsgLWYgLi9nYXdrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBnYXdrIiA7IFwKKwkoY2QgZ2F3ayAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWdhd2sgaW5zdGFsbC1pbmZvLWdhd2sKK21heWJlLWluc3RhbGwtaW5mby1nYXdrOgorCitpbnN0YWxsLWluZm8tZ2F3azogXAorICAgIGNvbmZpZ3VyZS1nYXdrIFwKKyAgICBpbmZvLWdhd2sgCisJQFsgLWYgLi9nYXdrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGdhd2siIDsgXAorCShjZCBnYXdrICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1nYXdrIGluc3RhbGxjaGVjay1nYXdrCittYXliZS1pbnN0YWxsY2hlY2stZ2F3azoKKworaW5zdGFsbGNoZWNrLWdhd2s6IFwKKyAgICBjb25maWd1cmUtZ2F3ayAKKwlAWyAtZiAuL2dhd2svTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZ2F3ayIgOyBcCisJKGNkIGdhd2sgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZ2F3ayBtb3N0bHljbGVhbi1nYXdrCittYXliZS1tb3N0bHljbGVhbi1nYXdrOgorCittb3N0bHljbGVhbi1nYXdrOiAKKwlAWyAtZiAuL2dhd2svTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBnYXdrIiA7IFwKKwkoY2QgZ2F3ayAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWdhd2sgY2xlYW4tZ2F3aworbWF5YmUtY2xlYW4tZ2F3azoKKworY2xlYW4tZ2F3azogCisJQFsgLWYgLi9nYXdrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gZ2F3ayIgOyBcCisJKGNkIGdhd2sgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tZ2F3ayBkaXN0Y2xlYW4tZ2F3aworbWF5YmUtZGlzdGNsZWFuLWdhd2s6CisKK2Rpc3RjbGVhbi1nYXdrOiAKKwlAWyAtZiAuL2dhd2svTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZ2F3ayIgOyBcCisJKGNkIGdhd2sgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1nYXdrIG1haW50YWluZXItY2xlYW4tZ2F3aworbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1nYXdrOgorCittYWludGFpbmVyLWNsZWFuLWdhd2s6IAorCUBbIC1mIC4vZ2F3ay9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZ2F3ayIgOyBcCisJKGNkIGdhd2sgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLWdldHRleHQgbWF5YmUtY29uZmlndXJlLWdldHRleHQKIG1heWJlLWNvbmZpZ3VyZS1nZXR0ZXh0OgogY29uZmlndXJlLWdldHRleHQ6CkBAIC0xOTM2Miw2ICs3NjE3LDIwNCBAQAogCShjZCBnZXR0ZXh0ICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tZ2V0dGV4dCBpbmZvLWdldHRleHQKK21heWJlLWluZm8tZ2V0dGV4dDoKKworaW5mby1nZXR0ZXh0OiBcCisgICAgY29uZmlndXJlLWdldHRleHQgCisJQFsgLWYgLi9nZXR0ZXh0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiBnZXR0ZXh0IiA7IFwKKwkoY2QgZ2V0dGV4dCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLWdldHRleHQgZHZpLWdldHRleHQKK21heWJlLWR2aS1nZXR0ZXh0OgorCitkdmktZ2V0dGV4dDogXAorICAgIGNvbmZpZ3VyZS1nZXR0ZXh0IAorCUBbIC1mIC4vZ2V0dGV4dC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBnZXR0ZXh0IiA7IFwKKwkoY2QgZ2V0dGV4dCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWdldHRleHQgVEFHUy1nZXR0ZXh0CittYXliZS1UQUdTLWdldHRleHQ6CisKK1RBR1MtZ2V0dGV4dDogXAorICAgIGNvbmZpZ3VyZS1nZXR0ZXh0IAorCUBbIC1mIC4vZ2V0dGV4dC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gZ2V0dGV4dCIgOyBcCisJKGNkIGdldHRleHQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1nZXR0ZXh0IGluc3RhbGwtaW5mby1nZXR0ZXh0CittYXliZS1pbnN0YWxsLWluZm8tZ2V0dGV4dDoKKworaW5zdGFsbC1pbmZvLWdldHRleHQ6IFwKKyAgICBjb25maWd1cmUtZ2V0dGV4dCBcCisgICAgaW5mby1nZXR0ZXh0IAorCUBbIC1mIC4vZ2V0dGV4dC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBnZXR0ZXh0IiA7IFwKKwkoY2QgZ2V0dGV4dCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stZ2V0dGV4dCBpbnN0YWxsY2hlY2stZ2V0dGV4dAorbWF5YmUtaW5zdGFsbGNoZWNrLWdldHRleHQ6CisKK2luc3RhbGxjaGVjay1nZXR0ZXh0OiBcCisgICAgY29uZmlndXJlLWdldHRleHQgCisJQFsgLWYgLi9nZXR0ZXh0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGdldHRleHQiIDsgXAorCShjZCBnZXR0ZXh0ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWdldHRleHQgbW9zdGx5Y2xlYW4tZ2V0dGV4dAorbWF5YmUtbW9zdGx5Y2xlYW4tZ2V0dGV4dDoKKworbW9zdGx5Y2xlYW4tZ2V0dGV4dDogCisJQFsgLWYgLi9nZXR0ZXh0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZ2V0dGV4dCIgOyBcCisJKGNkIGdldHRleHQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi1nZXR0ZXh0IGNsZWFuLWdldHRleHQKK21heWJlLWNsZWFuLWdldHRleHQ6CisKK2NsZWFuLWdldHRleHQ6IAorCUBbIC1mIC4vZ2V0dGV4dC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIGdldHRleHQiIDsgXAorCShjZCBnZXR0ZXh0ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWdldHRleHQgZGlzdGNsZWFuLWdldHRleHQKK21heWJlLWRpc3RjbGVhbi1nZXR0ZXh0OgorCitkaXN0Y2xlYW4tZ2V0dGV4dDogCisJQFsgLWYgLi9nZXR0ZXh0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGdldHRleHQiIDsgXAorCShjZCBnZXR0ZXh0ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tZ2V0dGV4dCBtYWludGFpbmVyLWNsZWFuLWdldHRleHQKK21heWJlLW1haW50YWluZXItY2xlYW4tZ2V0dGV4dDoKKworbWFpbnRhaW5lci1jbGVhbi1nZXR0ZXh0OiAKKwlAWyAtZiAuL2dldHRleHQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGdldHRleHQiIDsgXAorCShjZCBnZXR0ZXh0ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1nbnVzZXJ2IG1heWJlLWNvbmZpZ3VyZS1nbnVzZXJ2CiBtYXliZS1jb25maWd1cmUtZ251c2VydjoKIGNvbmZpZ3VyZS1nbnVzZXJ2OgpAQCAtMTk0MjksNiArNzg4MiwyMDQgQEAKIAkoY2QgZ251c2VydiAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWdudXNlcnYgaW5mby1nbnVzZXJ2CittYXliZS1pbmZvLWdudXNlcnY6CisKK2luZm8tZ251c2VydjogXAorICAgIGNvbmZpZ3VyZS1nbnVzZXJ2IAorCUBbIC1mIC4vZ251c2Vydi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gZ251c2VydiIgOyBcCisJKGNkIGdudXNlcnYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1nbnVzZXJ2IGR2aS1nbnVzZXJ2CittYXliZS1kdmktZ251c2VydjoKKworZHZpLWdudXNlcnY6IFwKKyAgICBjb25maWd1cmUtZ251c2VydiAKKwlAWyAtZiAuL2dudXNlcnYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gZ251c2VydiIgOyBcCisJKGNkIGdudXNlcnYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1nbnVzZXJ2IFRBR1MtZ251c2VydgorbWF5YmUtVEFHUy1nbnVzZXJ2OgorCitUQUdTLWdudXNlcnY6IFwKKyAgICBjb25maWd1cmUtZ251c2VydiAKKwlAWyAtZiAuL2dudXNlcnYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIGdudXNlcnYiIDsgXAorCShjZCBnbnVzZXJ2ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZ251c2VydiBpbnN0YWxsLWluZm8tZ251c2VydgorbWF5YmUtaW5zdGFsbC1pbmZvLWdudXNlcnY6CisKK2luc3RhbGwtaW5mby1nbnVzZXJ2OiBcCisgICAgY29uZmlndXJlLWdudXNlcnYgXAorICAgIGluZm8tZ251c2VydiAKKwlAWyAtZiAuL2dudXNlcnYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gZ251c2VydiIgOyBcCisJKGNkIGdudXNlcnYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWdudXNlcnYgaW5zdGFsbGNoZWNrLWdudXNlcnYKK21heWJlLWluc3RhbGxjaGVjay1nbnVzZXJ2OgorCitpbnN0YWxsY2hlY2stZ251c2VydjogXAorICAgIGNvbmZpZ3VyZS1nbnVzZXJ2IAorCUBbIC1mIC4vZ251c2Vydi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBnbnVzZXJ2IiA7IFwKKwkoY2QgZ251c2VydiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1nbnVzZXJ2IG1vc3RseWNsZWFuLWdudXNlcnYKK21heWJlLW1vc3RseWNsZWFuLWdudXNlcnY6CisKK21vc3RseWNsZWFuLWdudXNlcnY6IAorCUBbIC1mIC4vZ251c2Vydi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGdudXNlcnYiIDsgXAorCShjZCBnbnVzZXJ2ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tZ251c2VydiBjbGVhbi1nbnVzZXJ2CittYXliZS1jbGVhbi1nbnVzZXJ2OgorCitjbGVhbi1nbnVzZXJ2OiAKKwlAWyAtZiAuL2dudXNlcnYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiBnbnVzZXJ2IiA7IFwKKwkoY2QgZ251c2VydiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1nbnVzZXJ2IGRpc3RjbGVhbi1nbnVzZXJ2CittYXliZS1kaXN0Y2xlYW4tZ251c2VydjoKKworZGlzdGNsZWFuLWdudXNlcnY6IAorCUBbIC1mIC4vZ251c2Vydi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBnbnVzZXJ2IiA7IFwKKwkoY2QgZ251c2VydiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWdudXNlcnYgbWFpbnRhaW5lci1jbGVhbi1nbnVzZXJ2CittYXliZS1tYWludGFpbmVyLWNsZWFuLWdudXNlcnY6CisKK21haW50YWluZXItY2xlYW4tZ251c2VydjogCisJQFsgLWYgLi9nbnVzZXJ2L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBnbnVzZXJ2IiA7IFwKKwkoY2QgZ251c2VydiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtZ3Byb2YgbWF5YmUtY29uZmlndXJlLWdwcm9mCiBtYXliZS1jb25maWd1cmUtZ3Byb2Y6CiBjb25maWd1cmUtZ3Byb2Y6CkBAIC0xOTQ5Niw2ICs4MTQ3LDIwNCBAQAogCShjZCBncHJvZiAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWdwcm9mIGluZm8tZ3Byb2YKK21heWJlLWluZm8tZ3Byb2Y6CisKK2luZm8tZ3Byb2Y6IFwKKyAgICBjb25maWd1cmUtZ3Byb2YgCisJQFsgLWYgLi9ncHJvZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gZ3Byb2YiIDsgXAorCShjZCBncHJvZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLWdwcm9mIGR2aS1ncHJvZgorbWF5YmUtZHZpLWdwcm9mOgorCitkdmktZ3Byb2Y6IFwKKyAgICBjb25maWd1cmUtZ3Byb2YgCisJQFsgLWYgLi9ncHJvZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBncHJvZiIgOyBcCisJKGNkIGdwcm9mICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtZ3Byb2YgVEFHUy1ncHJvZgorbWF5YmUtVEFHUy1ncHJvZjoKKworVEFHUy1ncHJvZjogXAorICAgIGNvbmZpZ3VyZS1ncHJvZiAKKwlAWyAtZiAuL2dwcm9mL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBncHJvZiIgOyBcCisJKGNkIGdwcm9mICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZ3Byb2YgaW5zdGFsbC1pbmZvLWdwcm9mCittYXliZS1pbnN0YWxsLWluZm8tZ3Byb2Y6CisKK2luc3RhbGwtaW5mby1ncHJvZjogXAorICAgIGNvbmZpZ3VyZS1ncHJvZiBcCisgICAgaW5mby1ncHJvZiAKKwlAWyAtZiAuL2dwcm9mL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGdwcm9mIiA7IFwKKwkoY2QgZ3Byb2YgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWdwcm9mIGluc3RhbGxjaGVjay1ncHJvZgorbWF5YmUtaW5zdGFsbGNoZWNrLWdwcm9mOgorCitpbnN0YWxsY2hlY2stZ3Byb2Y6IFwKKyAgICBjb25maWd1cmUtZ3Byb2YgCisJQFsgLWYgLi9ncHJvZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBncHJvZiIgOyBcCisJKGNkIGdwcm9mICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWdwcm9mIG1vc3RseWNsZWFuLWdwcm9mCittYXliZS1tb3N0bHljbGVhbi1ncHJvZjoKKworbW9zdGx5Y2xlYW4tZ3Byb2Y6IAorCUBbIC1mIC4vZ3Byb2YvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBncHJvZiIgOyBcCisJKGNkIGdwcm9mICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tZ3Byb2YgY2xlYW4tZ3Byb2YKK21heWJlLWNsZWFuLWdwcm9mOgorCitjbGVhbi1ncHJvZjogCisJQFsgLWYgLi9ncHJvZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIGdwcm9mIiA7IFwKKwkoY2QgZ3Byb2YgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tZ3Byb2YgZGlzdGNsZWFuLWdwcm9mCittYXliZS1kaXN0Y2xlYW4tZ3Byb2Y6CisKK2Rpc3RjbGVhbi1ncHJvZjogCisJQFsgLWYgLi9ncHJvZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBncHJvZiIgOyBcCisJKGNkIGdwcm9mICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tZ3Byb2YgbWFpbnRhaW5lci1jbGVhbi1ncHJvZgorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1ncHJvZjoKKworbWFpbnRhaW5lci1jbGVhbi1ncHJvZjogCisJQFsgLWYgLi9ncHJvZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZ3Byb2YiIDsgXAorCShjZCBncHJvZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtZ3ppcCBtYXliZS1jb25maWd1cmUtZ3ppcAogbWF5YmUtY29uZmlndXJlLWd6aXA6CiBjb25maWd1cmUtZ3ppcDoKQEAgLTE5NTYzLDYgKzg0MTIsMjA0IEBACiAJKGNkIGd6aXAgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1nemlwIGluZm8tZ3ppcAorbWF5YmUtaW5mby1nemlwOgorCitpbmZvLWd6aXA6IFwKKyAgICBjb25maWd1cmUtZ3ppcCAKKwlAWyAtZiAuL2d6aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGd6aXAiIDsgXAorCShjZCBnemlwICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktZ3ppcCBkdmktZ3ppcAorbWF5YmUtZHZpLWd6aXA6CisKK2R2aS1nemlwOiBcCisgICAgY29uZmlndXJlLWd6aXAgCisJQFsgLWYgLi9nemlwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGd6aXAiIDsgXAorCShjZCBnemlwICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtZ3ppcCBUQUdTLWd6aXAKK21heWJlLVRBR1MtZ3ppcDoKKworVEFHUy1nemlwOiBcCisgICAgY29uZmlndXJlLWd6aXAgCisJQFsgLWYgLi9nemlwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBnemlwIiA7IFwKKwkoY2QgZ3ppcCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWd6aXAgaW5zdGFsbC1pbmZvLWd6aXAKK21heWJlLWluc3RhbGwtaW5mby1nemlwOgorCitpbnN0YWxsLWluZm8tZ3ppcDogXAorICAgIGNvbmZpZ3VyZS1nemlwIFwKKyAgICBpbmZvLWd6aXAgCisJQFsgLWYgLi9nemlwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGd6aXAiIDsgXAorCShjZCBnemlwICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1nemlwIGluc3RhbGxjaGVjay1nemlwCittYXliZS1pbnN0YWxsY2hlY2stZ3ppcDoKKworaW5zdGFsbGNoZWNrLWd6aXA6IFwKKyAgICBjb25maWd1cmUtZ3ppcCAKKwlAWyAtZiAuL2d6aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZ3ppcCIgOyBcCisJKGNkIGd6aXAgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZ3ppcCBtb3N0bHljbGVhbi1nemlwCittYXliZS1tb3N0bHljbGVhbi1nemlwOgorCittb3N0bHljbGVhbi1nemlwOiAKKwlAWyAtZiAuL2d6aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBnemlwIiA7IFwKKwkoY2QgZ3ppcCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWd6aXAgY2xlYW4tZ3ppcAorbWF5YmUtY2xlYW4tZ3ppcDoKKworY2xlYW4tZ3ppcDogCisJQFsgLWYgLi9nemlwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gZ3ppcCIgOyBcCisJKGNkIGd6aXAgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tZ3ppcCBkaXN0Y2xlYW4tZ3ppcAorbWF5YmUtZGlzdGNsZWFuLWd6aXA6CisKK2Rpc3RjbGVhbi1nemlwOiAKKwlAWyAtZiAuL2d6aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZ3ppcCIgOyBcCisJKGNkIGd6aXAgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1nemlwIG1haW50YWluZXItY2xlYW4tZ3ppcAorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1nemlwOgorCittYWludGFpbmVyLWNsZWFuLWd6aXA6IAorCUBbIC1mIC4vZ3ppcC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gZ3ppcCIgOyBcCisJKGNkIGd6aXAgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLWhlbGxvIG1heWJlLWNvbmZpZ3VyZS1oZWxsbwogbWF5YmUtY29uZmlndXJlLWhlbGxvOgogY29uZmlndXJlLWhlbGxvOgpAQCAtMTk2MzAsNiArODY3NywyMDQgQEAKIAkoY2QgaGVsbG8gJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1oZWxsbyBpbmZvLWhlbGxvCittYXliZS1pbmZvLWhlbGxvOgorCitpbmZvLWhlbGxvOiBcCisgICAgY29uZmlndXJlLWhlbGxvIAorCUBbIC1mIC4vaGVsbG8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGhlbGxvIiA7IFwKKwkoY2QgaGVsbG8gJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1oZWxsbyBkdmktaGVsbG8KK21heWJlLWR2aS1oZWxsbzoKKworZHZpLWhlbGxvOiBcCisgICAgY29uZmlndXJlLWhlbGxvIAorCUBbIC1mIC4vaGVsbG8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gaGVsbG8iIDsgXAorCShjZCBoZWxsbyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWhlbGxvIFRBR1MtaGVsbG8KK21heWJlLVRBR1MtaGVsbG86CisKK1RBR1MtaGVsbG86IFwKKyAgICBjb25maWd1cmUtaGVsbG8gCisJQFsgLWYgLi9oZWxsby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gaGVsbG8iIDsgXAorCShjZCBoZWxsbyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWhlbGxvIGluc3RhbGwtaW5mby1oZWxsbworbWF5YmUtaW5zdGFsbC1pbmZvLWhlbGxvOgorCitpbnN0YWxsLWluZm8taGVsbG86IFwKKyAgICBjb25maWd1cmUtaGVsbG8gXAorICAgIGluZm8taGVsbG8gCisJQFsgLWYgLi9oZWxsby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBoZWxsbyIgOyBcCisJKGNkIGhlbGxvICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1oZWxsbyBpbnN0YWxsY2hlY2staGVsbG8KK21heWJlLWluc3RhbGxjaGVjay1oZWxsbzoKKworaW5zdGFsbGNoZWNrLWhlbGxvOiBcCisgICAgY29uZmlndXJlLWhlbGxvIAorCUBbIC1mIC4vaGVsbG8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gaGVsbG8iIDsgXAorCShjZCBoZWxsbyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1oZWxsbyBtb3N0bHljbGVhbi1oZWxsbworbWF5YmUtbW9zdGx5Y2xlYW4taGVsbG86CisKK21vc3RseWNsZWFuLWhlbGxvOiAKKwlAWyAtZiAuL2hlbGxvL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gaGVsbG8iIDsgXAorCShjZCBoZWxsbyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWhlbGxvIGNsZWFuLWhlbGxvCittYXliZS1jbGVhbi1oZWxsbzoKKworY2xlYW4taGVsbG86IAorCUBbIC1mIC4vaGVsbG8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiBoZWxsbyIgOyBcCisJKGNkIGhlbGxvICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWhlbGxvIGRpc3RjbGVhbi1oZWxsbworbWF5YmUtZGlzdGNsZWFuLWhlbGxvOgorCitkaXN0Y2xlYW4taGVsbG86IAorCUBbIC1mIC4vaGVsbG8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gaGVsbG8iIDsgXAorCShjZCBoZWxsbyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWhlbGxvIG1haW50YWluZXItY2xlYW4taGVsbG8KK21heWJlLW1haW50YWluZXItY2xlYW4taGVsbG86CisKK21haW50YWluZXItY2xlYW4taGVsbG86IAorCUBbIC1mIC4vaGVsbG8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGhlbGxvIiA7IFwKKwkoY2QgaGVsbG8gJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLWluZGVudCBtYXliZS1jb25maWd1cmUtaW5kZW50CiBtYXliZS1jb25maWd1cmUtaW5kZW50OgogY29uZmlndXJlLWluZGVudDoKQEAgLTE5Njk3LDYgKzg5NDIsMjA0IEBACiAJKGNkIGluZGVudCAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWluZGVudCBpbmZvLWluZGVudAorbWF5YmUtaW5mby1pbmRlbnQ6CisKK2luZm8taW5kZW50OiBcCisgICAgY29uZmlndXJlLWluZGVudCAKKwlAWyAtZiAuL2luZGVudC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gaW5kZW50IiA7IFwKKwkoY2QgaW5kZW50ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktaW5kZW50IGR2aS1pbmRlbnQKK21heWJlLWR2aS1pbmRlbnQ6CisKK2R2aS1pbmRlbnQ6IFwKKyAgICBjb25maWd1cmUtaW5kZW50IAorCUBbIC1mIC4vaW5kZW50L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGluZGVudCIgOyBcCisJKGNkIGluZGVudCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWluZGVudCBUQUdTLWluZGVudAorbWF5YmUtVEFHUy1pbmRlbnQ6CisKK1RBR1MtaW5kZW50OiBcCisgICAgY29uZmlndXJlLWluZGVudCAKKwlAWyAtZiAuL2luZGVudC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gaW5kZW50IiA7IFwKKwkoY2QgaW5kZW50ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8taW5kZW50IGluc3RhbGwtaW5mby1pbmRlbnQKK21heWJlLWluc3RhbGwtaW5mby1pbmRlbnQ6CisKK2luc3RhbGwtaW5mby1pbmRlbnQ6IFwKKyAgICBjb25maWd1cmUtaW5kZW50IFwKKyAgICBpbmZvLWluZGVudCAKKwlAWyAtZiAuL2luZGVudC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBpbmRlbnQiIDsgXAorCShjZCBpbmRlbnQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWluZGVudCBpbnN0YWxsY2hlY2staW5kZW50CittYXliZS1pbnN0YWxsY2hlY2staW5kZW50OgorCitpbnN0YWxsY2hlY2staW5kZW50OiBcCisgICAgY29uZmlndXJlLWluZGVudCAKKwlAWyAtZiAuL2luZGVudC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBpbmRlbnQiIDsgXAorCShjZCBpbmRlbnQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4taW5kZW50IG1vc3RseWNsZWFuLWluZGVudAorbWF5YmUtbW9zdGx5Y2xlYW4taW5kZW50OgorCittb3N0bHljbGVhbi1pbmRlbnQ6IAorCUBbIC1mIC4vaW5kZW50L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gaW5kZW50IiA7IFwKKwkoY2QgaW5kZW50ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4taW5kZW50IGNsZWFuLWluZGVudAorbWF5YmUtY2xlYW4taW5kZW50OgorCitjbGVhbi1pbmRlbnQ6IAorCUBbIC1mIC4vaW5kZW50L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gaW5kZW50IiA7IFwKKwkoY2QgaW5kZW50ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWluZGVudCBkaXN0Y2xlYW4taW5kZW50CittYXliZS1kaXN0Y2xlYW4taW5kZW50OgorCitkaXN0Y2xlYW4taW5kZW50OiAKKwlAWyAtZiAuL2luZGVudC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBpbmRlbnQiIDsgXAorCShjZCBpbmRlbnQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1pbmRlbnQgbWFpbnRhaW5lci1jbGVhbi1pbmRlbnQKK21heWJlLW1haW50YWluZXItY2xlYW4taW5kZW50OgorCittYWludGFpbmVyLWNsZWFuLWluZGVudDogCisJQFsgLWYgLi9pbmRlbnQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGluZGVudCIgOyBcCisJKGNkIGluZGVudCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtaW50bCBtYXliZS1jb25maWd1cmUtaW50bAogbWF5YmUtY29uZmlndXJlLWludGw6CiBjb25maWd1cmUtaW50bDoKQEAgLTE5NzY0LDYgKzkyMDcsMjA0IEBACiAJKGNkIGludGwgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1pbnRsIGluZm8taW50bAorbWF5YmUtaW5mby1pbnRsOgorCitpbmZvLWludGw6IFwKKyAgICBjb25maWd1cmUtaW50bCAKKwlAWyAtZiAuL2ludGwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGludGwiIDsgXAorCShjZCBpbnRsICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktaW50bCBkdmktaW50bAorbWF5YmUtZHZpLWludGw6CisKK2R2aS1pbnRsOiBcCisgICAgY29uZmlndXJlLWludGwgCisJQFsgLWYgLi9pbnRsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGludGwiIDsgXAorCShjZCBpbnRsICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtaW50bCBUQUdTLWludGwKK21heWJlLVRBR1MtaW50bDoKKworVEFHUy1pbnRsOiBcCisgICAgY29uZmlndXJlLWludGwgCisJQFsgLWYgLi9pbnRsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBpbnRsIiA7IFwKKwkoY2QgaW50bCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWludGwgaW5zdGFsbC1pbmZvLWludGwKK21heWJlLWluc3RhbGwtaW5mby1pbnRsOgorCitpbnN0YWxsLWluZm8taW50bDogXAorICAgIGNvbmZpZ3VyZS1pbnRsIFwKKyAgICBpbmZvLWludGwgCisJQFsgLWYgLi9pbnRsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGludGwiIDsgXAorCShjZCBpbnRsICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1pbnRsIGluc3RhbGxjaGVjay1pbnRsCittYXliZS1pbnN0YWxsY2hlY2staW50bDoKKworaW5zdGFsbGNoZWNrLWludGw6IFwKKyAgICBjb25maWd1cmUtaW50bCAKKwlAWyAtZiAuL2ludGwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gaW50bCIgOyBcCisJKGNkIGludGwgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4taW50bCBtb3N0bHljbGVhbi1pbnRsCittYXliZS1tb3N0bHljbGVhbi1pbnRsOgorCittb3N0bHljbGVhbi1pbnRsOiAKKwlAWyAtZiAuL2ludGwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBpbnRsIiA7IFwKKwkoY2QgaW50bCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWludGwgY2xlYW4taW50bAorbWF5YmUtY2xlYW4taW50bDoKKworY2xlYW4taW50bDogCisJQFsgLWYgLi9pbnRsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gaW50bCIgOyBcCisJKGNkIGludGwgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4taW50bCBkaXN0Y2xlYW4taW50bAorbWF5YmUtZGlzdGNsZWFuLWludGw6CisKK2Rpc3RjbGVhbi1pbnRsOiAKKwlAWyAtZiAuL2ludGwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gaW50bCIgOyBcCisJKGNkIGludGwgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1pbnRsIG1haW50YWluZXItY2xlYW4taW50bAorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1pbnRsOgorCittYWludGFpbmVyLWNsZWFuLWludGw6IAorCUBbIC1mIC4vaW50bC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gaW50bCIgOyBcCisJKGNkIGludGwgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXRjbCBtYXliZS1jb25maWd1cmUtdGNsCiBtYXliZS1jb25maWd1cmUtdGNsOgogY29uZmlndXJlLXRjbDoKQEAgLTE5ODMxLDYgKzk0NzIsMTkwIEBACiAJKGNkIHRjbCAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXRjbCBpbmZvLXRjbAorbWF5YmUtaW5mby10Y2w6CisKK2luZm8tdGNsOiBcCisgICAgY29uZmlndXJlLXRjbCAKKwlAWyAtZiAuL3RjbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gdGNsIiA7IFwKKwkoY2QgdGNsICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktdGNsIGR2aS10Y2wKK21heWJlLWR2aS10Y2w6CisKK2R2aS10Y2w6IFwKKyAgICBjb25maWd1cmUtdGNsIAorCUBbIC1mIC4vdGNsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIHRjbCIgOyBcCisJKGNkIHRjbCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXRjbCBUQUdTLXRjbAorbWF5YmUtVEFHUy10Y2w6CisKK1RBR1MtdGNsOiBcCisgICAgY29uZmlndXJlLXRjbCAKKwlAWyAtZiAuL3RjbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gdGNsIiA7IFwKKwkoY2QgdGNsICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGNsIGluc3RhbGwtaW5mby10Y2wKK21heWJlLWluc3RhbGwtaW5mby10Y2w6CisKK2luc3RhbGwtaW5mby10Y2w6IFwKKyAgICBjb25maWd1cmUtdGNsIFwKKyAgICBpbmZvLXRjbCAKKwlAWyAtZiAuL3RjbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiB0Y2wiIDsgXAorCShjZCB0Y2wgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRjbCBpbnN0YWxsY2hlY2stdGNsCittYXliZS1pbnN0YWxsY2hlY2stdGNsOgorCitpbnN0YWxsY2hlY2stdGNsOiBcCisgICAgY29uZmlndXJlLXRjbCAKKwlAWyAtZiAuL3RjbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiB0Y2wiIDsgXAorCShjZCB0Y2wgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGNsIG1vc3RseWNsZWFuLXRjbAorbWF5YmUtbW9zdGx5Y2xlYW4tdGNsOgorCisjIHRjbCBkb2Vzbid0IHN1cHBvcnQgbW9zdGx5Y2xlYW4uCittb3N0bHljbGVhbi10Y2w6CisKKworLlBIT05ZOiBtYXliZS1jbGVhbi10Y2wgY2xlYW4tdGNsCittYXliZS1jbGVhbi10Y2w6CisKK2NsZWFuLXRjbDogCisJQFsgLWYgLi90Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiB0Y2wiIDsgXAorCShjZCB0Y2wgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGNsIGRpc3RjbGVhbi10Y2wKK21heWJlLWRpc3RjbGVhbi10Y2w6CisKK2Rpc3RjbGVhbi10Y2w6IAorCUBbIC1mIC4vdGNsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHRjbCIgOyBcCisJKGNkIHRjbCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRjbCBtYWludGFpbmVyLWNsZWFuLXRjbAorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10Y2w6CisKK21haW50YWluZXItY2xlYW4tdGNsOiAKKwlAWyAtZiAuL3RjbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gdGNsIiA7IFwKKwkoY2QgdGNsICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1pdGNsIG1heWJlLWNvbmZpZ3VyZS1pdGNsCiBtYXliZS1jb25maWd1cmUtaXRjbDoKIGNvbmZpZ3VyZS1pdGNsOgpAQCAtMTk4OTgsNiArOTcyMywyMDQgQEAKIAkoY2QgaXRjbCAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWl0Y2wgaW5mby1pdGNsCittYXliZS1pbmZvLWl0Y2w6CisKK2luZm8taXRjbDogXAorICAgIGNvbmZpZ3VyZS1pdGNsIAorCUBbIC1mIC4vaXRjbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gaXRjbCIgOyBcCisJKGNkIGl0Y2wgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1pdGNsIGR2aS1pdGNsCittYXliZS1kdmktaXRjbDoKKworZHZpLWl0Y2w6IFwKKyAgICBjb25maWd1cmUtaXRjbCAKKwlAWyAtZiAuL2l0Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gaXRjbCIgOyBcCisJKGNkIGl0Y2wgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1pdGNsIFRBR1MtaXRjbAorbWF5YmUtVEFHUy1pdGNsOgorCitUQUdTLWl0Y2w6IFwKKyAgICBjb25maWd1cmUtaXRjbCAKKwlAWyAtZiAuL2l0Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIGl0Y2wiIDsgXAorCShjZCBpdGNsICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8taXRjbCBpbnN0YWxsLWluZm8taXRjbAorbWF5YmUtaW5zdGFsbC1pbmZvLWl0Y2w6CisKK2luc3RhbGwtaW5mby1pdGNsOiBcCisgICAgY29uZmlndXJlLWl0Y2wgXAorICAgIGluZm8taXRjbCAKKwlAWyAtZiAuL2l0Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gaXRjbCIgOyBcCisJKGNkIGl0Y2wgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWl0Y2wgaW5zdGFsbGNoZWNrLWl0Y2wKK21heWJlLWluc3RhbGxjaGVjay1pdGNsOgorCitpbnN0YWxsY2hlY2staXRjbDogXAorICAgIGNvbmZpZ3VyZS1pdGNsIAorCUBbIC1mIC4vaXRjbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBpdGNsIiA7IFwKKwkoY2QgaXRjbCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1pdGNsIG1vc3RseWNsZWFuLWl0Y2wKK21heWJlLW1vc3RseWNsZWFuLWl0Y2w6CisKK21vc3RseWNsZWFuLWl0Y2w6IAorCUBbIC1mIC4vaXRjbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIGl0Y2wiIDsgXAorCShjZCBpdGNsICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4taXRjbCBjbGVhbi1pdGNsCittYXliZS1jbGVhbi1pdGNsOgorCitjbGVhbi1pdGNsOiAKKwlAWyAtZiAuL2l0Y2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiBpdGNsIiA7IFwKKwkoY2QgaXRjbCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1pdGNsIGRpc3RjbGVhbi1pdGNsCittYXliZS1kaXN0Y2xlYW4taXRjbDoKKworZGlzdGNsZWFuLWl0Y2w6IAorCUBbIC1mIC4vaXRjbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBpdGNsIiA7IFwKKwkoY2QgaXRjbCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWl0Y2wgbWFpbnRhaW5lci1jbGVhbi1pdGNsCittYXliZS1tYWludGFpbmVyLWNsZWFuLWl0Y2w6CisKK21haW50YWluZXItY2xlYW4taXRjbDogCisJQFsgLWYgLi9pdGNsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBpdGNsIiA7IFwKKwkoY2QgaXRjbCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtbGQgbWF5YmUtY29uZmlndXJlLWxkCiBtYXliZS1jb25maWd1cmUtbGQ6CiBjb25maWd1cmUtbGQ6CkBAIC0xOTk2NSw2ICs5OTg4LDIwNCBAQAogCShjZCBsZCAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWxkIGluZm8tbGQKK21heWJlLWluZm8tbGQ6CisKK2luZm8tbGQ6IFwKKyAgICBjb25maWd1cmUtbGQgCisJQFsgLWYgLi9sZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gbGQiIDsgXAorCShjZCBsZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLWxkIGR2aS1sZAorbWF5YmUtZHZpLWxkOgorCitkdmktbGQ6IFwKKyAgICBjb25maWd1cmUtbGQgCisJQFsgLWYgLi9sZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBsZCIgOyBcCisJKGNkIGxkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtbGQgVEFHUy1sZAorbWF5YmUtVEFHUy1sZDoKKworVEFHUy1sZDogXAorICAgIGNvbmZpZ3VyZS1sZCAKKwlAWyAtZiAuL2xkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBsZCIgOyBcCisJKGNkIGxkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tbGQgaW5zdGFsbC1pbmZvLWxkCittYXliZS1pbnN0YWxsLWluZm8tbGQ6CisKK2luc3RhbGwtaW5mby1sZDogXAorICAgIGNvbmZpZ3VyZS1sZCBcCisgICAgaW5mby1sZCAKKwlAWyAtZiAuL2xkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGxkIiA7IFwKKwkoY2QgbGQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWxkIGluc3RhbGxjaGVjay1sZAorbWF5YmUtaW5zdGFsbGNoZWNrLWxkOgorCitpbnN0YWxsY2hlY2stbGQ6IFwKKyAgICBjb25maWd1cmUtbGQgCisJQFsgLWYgLi9sZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBsZCIgOyBcCisJKGNkIGxkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWxkIG1vc3RseWNsZWFuLWxkCittYXliZS1tb3N0bHljbGVhbi1sZDoKKworbW9zdGx5Y2xlYW4tbGQ6IAorCUBbIC1mIC4vbGQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBsZCIgOyBcCisJKGNkIGxkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tbGQgY2xlYW4tbGQKK21heWJlLWNsZWFuLWxkOgorCitjbGVhbi1sZDogCisJQFsgLWYgLi9sZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIGxkIiA7IFwKKwkoY2QgbGQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tbGQgZGlzdGNsZWFuLWxkCittYXliZS1kaXN0Y2xlYW4tbGQ6CisKK2Rpc3RjbGVhbi1sZDogCisJQFsgLWYgLi9sZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBsZCIgOyBcCisJKGNkIGxkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tbGQgbWFpbnRhaW5lci1jbGVhbi1sZAorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1sZDoKKworbWFpbnRhaW5lci1jbGVhbi1sZDogCisJQFsgLWYgLi9sZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gbGQiIDsgXAorCShjZCBsZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtbGliZ3VpIG1heWJlLWNvbmZpZ3VyZS1saWJndWkKIG1heWJlLWNvbmZpZ3VyZS1saWJndWk6CiBjb25maWd1cmUtbGliZ3VpOgpAQCAtMjAwMzIsNiArMTAyNTMsMjA0IEBACiAJKGNkIGxpYmd1aSAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWxpYmd1aSBpbmZvLWxpYmd1aQorbWF5YmUtaW5mby1saWJndWk6CisKK2luZm8tbGliZ3VpOiBcCisgICAgY29uZmlndXJlLWxpYmd1aSAKKwlAWyAtZiAuL2xpYmd1aS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gbGliZ3VpIiA7IFwKKwkoY2QgbGliZ3VpICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktbGliZ3VpIGR2aS1saWJndWkKK21heWJlLWR2aS1saWJndWk6CisKK2R2aS1saWJndWk6IFwKKyAgICBjb25maWd1cmUtbGliZ3VpIAorCUBbIC1mIC4vbGliZ3VpL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGxpYmd1aSIgOyBcCisJKGNkIGxpYmd1aSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWxpYmd1aSBUQUdTLWxpYmd1aQorbWF5YmUtVEFHUy1saWJndWk6CisKK1RBR1MtbGliZ3VpOiBcCisgICAgY29uZmlndXJlLWxpYmd1aSAKKwlAWyAtZiAuL2xpYmd1aS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gbGliZ3VpIiA7IFwKKwkoY2QgbGliZ3VpICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tbGliZ3VpIGluc3RhbGwtaW5mby1saWJndWkKK21heWJlLWluc3RhbGwtaW5mby1saWJndWk6CisKK2luc3RhbGwtaW5mby1saWJndWk6IFwKKyAgICBjb25maWd1cmUtbGliZ3VpIFwKKyAgICBpbmZvLWxpYmd1aSAKKwlAWyAtZiAuL2xpYmd1aS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBsaWJndWkiIDsgXAorCShjZCBsaWJndWkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWxpYmd1aSBpbnN0YWxsY2hlY2stbGliZ3VpCittYXliZS1pbnN0YWxsY2hlY2stbGliZ3VpOgorCitpbnN0YWxsY2hlY2stbGliZ3VpOiBcCisgICAgY29uZmlndXJlLWxpYmd1aSAKKwlAWyAtZiAuL2xpYmd1aS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBsaWJndWkiIDsgXAorCShjZCBsaWJndWkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tbGliZ3VpIG1vc3RseWNsZWFuLWxpYmd1aQorbWF5YmUtbW9zdGx5Y2xlYW4tbGliZ3VpOgorCittb3N0bHljbGVhbi1saWJndWk6IAorCUBbIC1mIC4vbGliZ3VpL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gbGliZ3VpIiA7IFwKKwkoY2QgbGliZ3VpICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tbGliZ3VpIGNsZWFuLWxpYmd1aQorbWF5YmUtY2xlYW4tbGliZ3VpOgorCitjbGVhbi1saWJndWk6IAorCUBbIC1mIC4vbGliZ3VpL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gbGliZ3VpIiA7IFwKKwkoY2QgbGliZ3VpICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWxpYmd1aSBkaXN0Y2xlYW4tbGliZ3VpCittYXliZS1kaXN0Y2xlYW4tbGliZ3VpOgorCitkaXN0Y2xlYW4tbGliZ3VpOiAKKwlAWyAtZiAuL2xpYmd1aS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBsaWJndWkiIDsgXAorCShjZCBsaWJndWkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1saWJndWkgbWFpbnRhaW5lci1jbGVhbi1saWJndWkKK21heWJlLW1haW50YWluZXItY2xlYW4tbGliZ3VpOgorCittYWludGFpbmVyLWNsZWFuLWxpYmd1aTogCisJQFsgLWYgLi9saWJndWkvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGxpYmd1aSIgOyBcCisJKGNkIGxpYmd1aSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtbGliaWJlcnR5IG1heWJlLWNvbmZpZ3VyZS1saWJpYmVydHkKIG1heWJlLWNvbmZpZ3VyZS1saWJpYmVydHk6CiBjb25maWd1cmUtbGliaWJlcnR5OgpAQCAtMjAwOTksNiArMTA1MTgsMjA0IEBACiAJKGNkIGxpYmliZXJ0eSAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWxpYmliZXJ0eSBpbmZvLWxpYmliZXJ0eQorbWF5YmUtaW5mby1saWJpYmVydHk6CisKK2luZm8tbGliaWJlcnR5OiBcCisgICAgY29uZmlndXJlLWxpYmliZXJ0eSAKKwlAWyAtZiAuL2xpYmliZXJ0eS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gbGliaWJlcnR5IiA7IFwKKwkoY2QgbGliaWJlcnR5ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktbGliaWJlcnR5IGR2aS1saWJpYmVydHkKK21heWJlLWR2aS1saWJpYmVydHk6CisKK2R2aS1saWJpYmVydHk6IFwKKyAgICBjb25maWd1cmUtbGliaWJlcnR5IAorCUBbIC1mIC4vbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGxpYmliZXJ0eSIgOyBcCisJKGNkIGxpYmliZXJ0eSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWxpYmliZXJ0eSBUQUdTLWxpYmliZXJ0eQorbWF5YmUtVEFHUy1saWJpYmVydHk6CisKK1RBR1MtbGliaWJlcnR5OiBcCisgICAgY29uZmlndXJlLWxpYmliZXJ0eSAKKwlAWyAtZiAuL2xpYmliZXJ0eS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gbGliaWJlcnR5IiA7IFwKKwkoY2QgbGliaWJlcnR5ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tbGliaWJlcnR5IGluc3RhbGwtaW5mby1saWJpYmVydHkKK21heWJlLWluc3RhbGwtaW5mby1saWJpYmVydHk6CisKK2luc3RhbGwtaW5mby1saWJpYmVydHk6IFwKKyAgICBjb25maWd1cmUtbGliaWJlcnR5IFwKKyAgICBpbmZvLWxpYmliZXJ0eSAKKwlAWyAtZiAuL2xpYmliZXJ0eS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBsaWJpYmVydHkiIDsgXAorCShjZCBsaWJpYmVydHkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWxpYmliZXJ0eSBpbnN0YWxsY2hlY2stbGliaWJlcnR5CittYXliZS1pbnN0YWxsY2hlY2stbGliaWJlcnR5OgorCitpbnN0YWxsY2hlY2stbGliaWJlcnR5OiBcCisgICAgY29uZmlndXJlLWxpYmliZXJ0eSAKKwlAWyAtZiAuL2xpYmliZXJ0eS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBsaWJpYmVydHkiIDsgXAorCShjZCBsaWJpYmVydHkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tbGliaWJlcnR5IG1vc3RseWNsZWFuLWxpYmliZXJ0eQorbWF5YmUtbW9zdGx5Y2xlYW4tbGliaWJlcnR5OgorCittb3N0bHljbGVhbi1saWJpYmVydHk6IAorCUBbIC1mIC4vbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gbGliaWJlcnR5IiA7IFwKKwkoY2QgbGliaWJlcnR5ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tbGliaWJlcnR5IGNsZWFuLWxpYmliZXJ0eQorbWF5YmUtY2xlYW4tbGliaWJlcnR5OgorCitjbGVhbi1saWJpYmVydHk6IAorCUBbIC1mIC4vbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gbGliaWJlcnR5IiA7IFwKKwkoY2QgbGliaWJlcnR5ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWxpYmliZXJ0eSBkaXN0Y2xlYW4tbGliaWJlcnR5CittYXliZS1kaXN0Y2xlYW4tbGliaWJlcnR5OgorCitkaXN0Y2xlYW4tbGliaWJlcnR5OiAKKwlAWyAtZiAuL2xpYmliZXJ0eS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBsaWJpYmVydHkiIDsgXAorCShjZCBsaWJpYmVydHkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1saWJpYmVydHkgbWFpbnRhaW5lci1jbGVhbi1saWJpYmVydHkKK21heWJlLW1haW50YWluZXItY2xlYW4tbGliaWJlcnR5OgorCittYWludGFpbmVyLWNsZWFuLWxpYmliZXJ0eTogCisJQFsgLWYgLi9saWJpYmVydHkvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGxpYmliZXJ0eSIgOyBcCisJKGNkIGxpYmliZXJ0eSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtbGlidG9vbCBtYXliZS1jb25maWd1cmUtbGlidG9vbAogbWF5YmUtY29uZmlndXJlLWxpYnRvb2w6CiBjb25maWd1cmUtbGlidG9vbDoKQEAgLTIwMTY2LDYgKzEwNzgzLDIwNCBAQAogCShjZCBsaWJ0b29sICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tbGlidG9vbCBpbmZvLWxpYnRvb2wKK21heWJlLWluZm8tbGlidG9vbDoKKworaW5mby1saWJ0b29sOiBcCisgICAgY29uZmlndXJlLWxpYnRvb2wgCisJQFsgLWYgLi9saWJ0b29sL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiBsaWJ0b29sIiA7IFwKKwkoY2QgbGlidG9vbCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLWxpYnRvb2wgZHZpLWxpYnRvb2wKK21heWJlLWR2aS1saWJ0b29sOgorCitkdmktbGlidG9vbDogXAorICAgIGNvbmZpZ3VyZS1saWJ0b29sIAorCUBbIC1mIC4vbGlidG9vbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBsaWJ0b29sIiA7IFwKKwkoY2QgbGlidG9vbCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWxpYnRvb2wgVEFHUy1saWJ0b29sCittYXliZS1UQUdTLWxpYnRvb2w6CisKK1RBR1MtbGlidG9vbDogXAorICAgIGNvbmZpZ3VyZS1saWJ0b29sIAorCUBbIC1mIC4vbGlidG9vbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gbGlidG9vbCIgOyBcCisJKGNkIGxpYnRvb2wgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1saWJ0b29sIGluc3RhbGwtaW5mby1saWJ0b29sCittYXliZS1pbnN0YWxsLWluZm8tbGlidG9vbDoKKworaW5zdGFsbC1pbmZvLWxpYnRvb2w6IFwKKyAgICBjb25maWd1cmUtbGlidG9vbCBcCisgICAgaW5mby1saWJ0b29sIAorCUBbIC1mIC4vbGlidG9vbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBsaWJ0b29sIiA7IFwKKwkoY2QgbGlidG9vbCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stbGlidG9vbCBpbnN0YWxsY2hlY2stbGlidG9vbAorbWF5YmUtaW5zdGFsbGNoZWNrLWxpYnRvb2w6CisKK2luc3RhbGxjaGVjay1saWJ0b29sOiBcCisgICAgY29uZmlndXJlLWxpYnRvb2wgCisJQFsgLWYgLi9saWJ0b29sL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIGxpYnRvb2wiIDsgXAorCShjZCBsaWJ0b29sICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLWxpYnRvb2wgbW9zdGx5Y2xlYW4tbGlidG9vbAorbWF5YmUtbW9zdGx5Y2xlYW4tbGlidG9vbDoKKworbW9zdGx5Y2xlYW4tbGlidG9vbDogCisJQFsgLWYgLi9saWJ0b29sL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gbGlidG9vbCIgOyBcCisJKGNkIGxpYnRvb2wgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi1saWJ0b29sIGNsZWFuLWxpYnRvb2wKK21heWJlLWNsZWFuLWxpYnRvb2w6CisKK2NsZWFuLWxpYnRvb2w6IAorCUBbIC1mIC4vbGlidG9vbC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIGxpYnRvb2wiIDsgXAorCShjZCBsaWJ0b29sICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGNsZWFuLWxpYnRvb2wKK21heWJlLWRpc3RjbGVhbi1saWJ0b29sOgorCitkaXN0Y2xlYW4tbGlidG9vbDogCisJQFsgLWYgLi9saWJ0b29sL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIGxpYnRvb2wiIDsgXAorCShjZCBsaWJ0b29sICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tbGlidG9vbCBtYWludGFpbmVyLWNsZWFuLWxpYnRvb2wKK21heWJlLW1haW50YWluZXItY2xlYW4tbGlidG9vbDoKKworbWFpbnRhaW5lci1jbGVhbi1saWJ0b29sOiAKKwlAWyAtZiAuL2xpYnRvb2wvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGxpYnRvb2wiIDsgXAorCShjZCBsaWJ0b29sICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1tNCBtYXliZS1jb25maWd1cmUtbTQKIG1heWJlLWNvbmZpZ3VyZS1tNDoKIGNvbmZpZ3VyZS1tNDoKQEAgLTIwMjMzLDYgKzExMDQ4LDIwNCBAQAogCShjZCBtNCAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLW00IGluZm8tbTQKK21heWJlLWluZm8tbTQ6CisKK2luZm8tbTQ6IFwKKyAgICBjb25maWd1cmUtbTQgCisJQFsgLWYgLi9tNC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gbTQiIDsgXAorCShjZCBtNCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLW00IGR2aS1tNAorbWF5YmUtZHZpLW00OgorCitkdmktbTQ6IFwKKyAgICBjb25maWd1cmUtbTQgCisJQFsgLWYgLi9tNC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBtNCIgOyBcCisJKGNkIG00ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtbTQgVEFHUy1tNAorbWF5YmUtVEFHUy1tNDoKKworVEFHUy1tNDogXAorICAgIGNvbmZpZ3VyZS1tNCAKKwlAWyAtZiAuL200L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBtNCIgOyBcCisJKGNkIG00ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tbTQgaW5zdGFsbC1pbmZvLW00CittYXliZS1pbnN0YWxsLWluZm8tbTQ6CisKK2luc3RhbGwtaW5mby1tNDogXAorICAgIGNvbmZpZ3VyZS1tNCBcCisgICAgaW5mby1tNCAKKwlAWyAtZiAuL200L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIG00IiA7IFwKKwkoY2QgbTQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLW00IGluc3RhbGxjaGVjay1tNAorbWF5YmUtaW5zdGFsbGNoZWNrLW00OgorCitpbnN0YWxsY2hlY2stbTQ6IFwKKyAgICBjb25maWd1cmUtbTQgCisJQFsgLWYgLi9tNC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBtNCIgOyBcCisJKGNkIG00ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLW00IG1vc3RseWNsZWFuLW00CittYXliZS1tb3N0bHljbGVhbi1tNDoKKworbW9zdGx5Y2xlYW4tbTQ6IAorCUBbIC1mIC4vbTQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBtNCIgOyBcCisJKGNkIG00ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tbTQgY2xlYW4tbTQKK21heWJlLWNsZWFuLW00OgorCitjbGVhbi1tNDogCisJQFsgLWYgLi9tNC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIG00IiA7IFwKKwkoY2QgbTQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tbTQgZGlzdGNsZWFuLW00CittYXliZS1kaXN0Y2xlYW4tbTQ6CisKK2Rpc3RjbGVhbi1tNDogCisJQFsgLWYgLi9tNC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBtNCIgOyBcCisJKGNkIG00ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tbTQgbWFpbnRhaW5lci1jbGVhbi1tNAorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1tNDoKKworbWFpbnRhaW5lci1jbGVhbi1tNDogCisJQFsgLWYgLi9tNC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gbTQiIDsgXAorCShjZCBtNCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtbWFrZSBtYXliZS1jb25maWd1cmUtbWFrZQogbWF5YmUtY29uZmlndXJlLW1ha2U6CiBjb25maWd1cmUtbWFrZToKQEAgLTIwMzAwLDYgKzExMzEzLDIwNCBAQAogCShjZCBtYWtlICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tbWFrZSBpbmZvLW1ha2UKK21heWJlLWluZm8tbWFrZToKKworaW5mby1tYWtlOiBcCisgICAgY29uZmlndXJlLW1ha2UgCisJQFsgLWYgLi9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiBtYWtlIiA7IFwKKwkoY2QgbWFrZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLW1ha2UgZHZpLW1ha2UKK21heWJlLWR2aS1tYWtlOgorCitkdmktbWFrZTogXAorICAgIGNvbmZpZ3VyZS1tYWtlIAorCUBbIC1mIC4vbWFrZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBtYWtlIiA7IFwKKwkoY2QgbWFrZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLW1ha2UgVEFHUy1tYWtlCittYXliZS1UQUdTLW1ha2U6CisKK1RBR1MtbWFrZTogXAorICAgIGNvbmZpZ3VyZS1tYWtlIAorCUBbIC1mIC4vbWFrZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gbWFrZSIgOyBcCisJKGNkIG1ha2UgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1tYWtlIGluc3RhbGwtaW5mby1tYWtlCittYXliZS1pbnN0YWxsLWluZm8tbWFrZToKKworaW5zdGFsbC1pbmZvLW1ha2U6IFwKKyAgICBjb25maWd1cmUtbWFrZSBcCisgICAgaW5mby1tYWtlIAorCUBbIC1mIC4vbWFrZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBtYWtlIiA7IFwKKwkoY2QgbWFrZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stbWFrZSBpbnN0YWxsY2hlY2stbWFrZQorbWF5YmUtaW5zdGFsbGNoZWNrLW1ha2U6CisKK2luc3RhbGxjaGVjay1tYWtlOiBcCisgICAgY29uZmlndXJlLW1ha2UgCisJQFsgLWYgLi9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIG1ha2UiIDsgXAorCShjZCBtYWtlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLW1ha2UgbW9zdGx5Y2xlYW4tbWFrZQorbWF5YmUtbW9zdGx5Y2xlYW4tbWFrZToKKworbW9zdGx5Y2xlYW4tbWFrZTogCisJQFsgLWYgLi9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gbWFrZSIgOyBcCisJKGNkIG1ha2UgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi1tYWtlIGNsZWFuLW1ha2UKK21heWJlLWNsZWFuLW1ha2U6CisKK2NsZWFuLW1ha2U6IAorCUBbIC1mIC4vbWFrZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIG1ha2UiIDsgXAorCShjZCBtYWtlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLW1ha2UgZGlzdGNsZWFuLW1ha2UKK21heWJlLWRpc3RjbGVhbi1tYWtlOgorCitkaXN0Y2xlYW4tbWFrZTogCisJQFsgLWYgLi9tYWtlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIG1ha2UiIDsgXAorCShjZCBtYWtlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tbWFrZSBtYWludGFpbmVyLWNsZWFuLW1ha2UKK21heWJlLW1haW50YWluZXItY2xlYW4tbWFrZToKKworbWFpbnRhaW5lci1jbGVhbi1tYWtlOiAKKwlAWyAtZiAuL21ha2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIG1ha2UiIDsgXAorCShjZCBtYWtlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1tbWFsbG9jIG1heWJlLWNvbmZpZ3VyZS1tbWFsbG9jCiBtYXliZS1jb25maWd1cmUtbW1hbGxvYzoKIGNvbmZpZ3VyZS1tbWFsbG9jOgpAQCAtMjAzNjMsNiArMTE1NzQsMjA0IEBACiAJKGNkIG1tYWxsb2MgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1tbWFsbG9jIGluZm8tbW1hbGxvYworbWF5YmUtaW5mby1tbWFsbG9jOgorCitpbmZvLW1tYWxsb2M6IFwKKyAgICBjb25maWd1cmUtbW1hbGxvYyAKKwlAWyAtZiAuL21tYWxsb2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIG1tYWxsb2MiIDsgXAorCShjZCBtbWFsbG9jICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktbW1hbGxvYyBkdmktbW1hbGxvYworbWF5YmUtZHZpLW1tYWxsb2M6CisKK2R2aS1tbWFsbG9jOiBcCisgICAgY29uZmlndXJlLW1tYWxsb2MgCisJQFsgLWYgLi9tbWFsbG9jL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIG1tYWxsb2MiIDsgXAorCShjZCBtbWFsbG9jICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtbW1hbGxvYyBUQUdTLW1tYWxsb2MKK21heWJlLVRBR1MtbW1hbGxvYzoKKworVEFHUy1tbWFsbG9jOiBcCisgICAgY29uZmlndXJlLW1tYWxsb2MgCisJQFsgLWYgLi9tbWFsbG9jL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBtbWFsbG9jIiA7IFwKKwkoY2QgbW1hbGxvYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLW1tYWxsb2MgaW5zdGFsbC1pbmZvLW1tYWxsb2MKK21heWJlLWluc3RhbGwtaW5mby1tbWFsbG9jOgorCitpbnN0YWxsLWluZm8tbW1hbGxvYzogXAorICAgIGNvbmZpZ3VyZS1tbWFsbG9jIFwKKyAgICBpbmZvLW1tYWxsb2MgCisJQFsgLWYgLi9tbWFsbG9jL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIG1tYWxsb2MiIDsgXAorCShjZCBtbWFsbG9jICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1tbWFsbG9jIGluc3RhbGxjaGVjay1tbWFsbG9jCittYXliZS1pbnN0YWxsY2hlY2stbW1hbGxvYzoKKworaW5zdGFsbGNoZWNrLW1tYWxsb2M6IFwKKyAgICBjb25maWd1cmUtbW1hbGxvYyAKKwlAWyAtZiAuL21tYWxsb2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gbW1hbGxvYyIgOyBcCisJKGNkIG1tYWxsb2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tbW1hbGxvYyBtb3N0bHljbGVhbi1tbWFsbG9jCittYXliZS1tb3N0bHljbGVhbi1tbWFsbG9jOgorCittb3N0bHljbGVhbi1tbWFsbG9jOiAKKwlAWyAtZiAuL21tYWxsb2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBtbWFsbG9jIiA7IFwKKwkoY2QgbW1hbGxvYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLW1tYWxsb2MgY2xlYW4tbW1hbGxvYworbWF5YmUtY2xlYW4tbW1hbGxvYzoKKworY2xlYW4tbW1hbGxvYzogCisJQFsgLWYgLi9tbWFsbG9jL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gbW1hbGxvYyIgOyBcCisJKGNkIG1tYWxsb2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tbW1hbGxvYyBkaXN0Y2xlYW4tbW1hbGxvYworbWF5YmUtZGlzdGNsZWFuLW1tYWxsb2M6CisKK2Rpc3RjbGVhbi1tbWFsbG9jOiAKKwlAWyAtZiAuL21tYWxsb2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gbW1hbGxvYyIgOyBcCisJKGNkIG1tYWxsb2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1tbWFsbG9jIG1haW50YWluZXItY2xlYW4tbW1hbGxvYworbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1tbWFsbG9jOgorCittYWludGFpbmVyLWNsZWFuLW1tYWxsb2M6IAorCUBbIC1mIC4vbW1hbGxvYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gbW1hbGxvYyIgOyBcCisJKGNkIG1tYWxsb2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXBhdGNoIG1heWJlLWNvbmZpZ3VyZS1wYXRjaAogbWF5YmUtY29uZmlndXJlLXBhdGNoOgogY29uZmlndXJlLXBhdGNoOgpAQCAtMjA0MzAsNiArMTE4MzksMjA0IEBACiAJKGNkIHBhdGNoICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tcGF0Y2ggaW5mby1wYXRjaAorbWF5YmUtaW5mby1wYXRjaDoKKworaW5mby1wYXRjaDogXAorICAgIGNvbmZpZ3VyZS1wYXRjaCAKKwlAWyAtZiAuL3BhdGNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiBwYXRjaCIgOyBcCisJKGNkIHBhdGNoICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktcGF0Y2ggZHZpLXBhdGNoCittYXliZS1kdmktcGF0Y2g6CisKK2R2aS1wYXRjaDogXAorICAgIGNvbmZpZ3VyZS1wYXRjaCAKKwlAWyAtZiAuL3BhdGNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIHBhdGNoIiA7IFwKKwkoY2QgcGF0Y2ggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1wYXRjaCBUQUdTLXBhdGNoCittYXliZS1UQUdTLXBhdGNoOgorCitUQUdTLXBhdGNoOiBcCisgICAgY29uZmlndXJlLXBhdGNoIAorCUBbIC1mIC4vcGF0Y2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIHBhdGNoIiA7IFwKKwkoY2QgcGF0Y2ggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1wYXRjaCBpbnN0YWxsLWluZm8tcGF0Y2gKK21heWJlLWluc3RhbGwtaW5mby1wYXRjaDoKKworaW5zdGFsbC1pbmZvLXBhdGNoOiBcCisgICAgY29uZmlndXJlLXBhdGNoIFwKKyAgICBpbmZvLXBhdGNoIAorCUBbIC1mIC4vcGF0Y2gvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gcGF0Y2giIDsgXAorCShjZCBwYXRjaCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stcGF0Y2ggaW5zdGFsbGNoZWNrLXBhdGNoCittYXliZS1pbnN0YWxsY2hlY2stcGF0Y2g6CisKK2luc3RhbGxjaGVjay1wYXRjaDogXAorICAgIGNvbmZpZ3VyZS1wYXRjaCAKKwlAWyAtZiAuL3BhdGNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHBhdGNoIiA7IFwKKwkoY2QgcGF0Y2ggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tcGF0Y2ggbW9zdGx5Y2xlYW4tcGF0Y2gKK21heWJlLW1vc3RseWNsZWFuLXBhdGNoOgorCittb3N0bHljbGVhbi1wYXRjaDogCisJQFsgLWYgLi9wYXRjaC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHBhdGNoIiA7IFwKKwkoY2QgcGF0Y2ggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi1wYXRjaCBjbGVhbi1wYXRjaAorbWF5YmUtY2xlYW4tcGF0Y2g6CisKK2NsZWFuLXBhdGNoOiAKKwlAWyAtZiAuL3BhdGNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gcGF0Y2giIDsgXAorCShjZCBwYXRjaCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1wYXRjaCBkaXN0Y2xlYW4tcGF0Y2gKK21heWJlLWRpc3RjbGVhbi1wYXRjaDoKKworZGlzdGNsZWFuLXBhdGNoOiAKKwlAWyAtZiAuL3BhdGNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHBhdGNoIiA7IFwKKwkoY2QgcGF0Y2ggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1wYXRjaCBtYWludGFpbmVyLWNsZWFuLXBhdGNoCittYXliZS1tYWludGFpbmVyLWNsZWFuLXBhdGNoOgorCittYWludGFpbmVyLWNsZWFuLXBhdGNoOiAKKwlAWyAtZiAuL3BhdGNoL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBwYXRjaCIgOyBcCisJKGNkIHBhdGNoICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1wZXJsIG1heWJlLWNvbmZpZ3VyZS1wZXJsCiBtYXliZS1jb25maWd1cmUtcGVybDoKIGNvbmZpZ3VyZS1wZXJsOgpAQCAtMjA0OTcsNiArMTIxMDQsMjA0IEBACiAJKGNkIHBlcmwgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1wZXJsIGluZm8tcGVybAorbWF5YmUtaW5mby1wZXJsOgorCitpbmZvLXBlcmw6IFwKKyAgICBjb25maWd1cmUtcGVybCAKKwlAWyAtZiAuL3BlcmwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIHBlcmwiIDsgXAorCShjZCBwZXJsICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktcGVybCBkdmktcGVybAorbWF5YmUtZHZpLXBlcmw6CisKK2R2aS1wZXJsOiBcCisgICAgY29uZmlndXJlLXBlcmwgCisJQFsgLWYgLi9wZXJsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIHBlcmwiIDsgXAorCShjZCBwZXJsICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtcGVybCBUQUdTLXBlcmwKK21heWJlLVRBR1MtcGVybDoKKworVEFHUy1wZXJsOiBcCisgICAgY29uZmlndXJlLXBlcmwgCisJQFsgLWYgLi9wZXJsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBwZXJsIiA7IFwKKwkoY2QgcGVybCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXBlcmwgaW5zdGFsbC1pbmZvLXBlcmwKK21heWJlLWluc3RhbGwtaW5mby1wZXJsOgorCitpbnN0YWxsLWluZm8tcGVybDogXAorICAgIGNvbmZpZ3VyZS1wZXJsIFwKKyAgICBpbmZvLXBlcmwgCisJQFsgLWYgLi9wZXJsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHBlcmwiIDsgXAorCShjZCBwZXJsICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1wZXJsIGluc3RhbGxjaGVjay1wZXJsCittYXliZS1pbnN0YWxsY2hlY2stcGVybDoKKworaW5zdGFsbGNoZWNrLXBlcmw6IFwKKyAgICBjb25maWd1cmUtcGVybCAKKwlAWyAtZiAuL3BlcmwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gcGVybCIgOyBcCisJKGNkIHBlcmwgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tcGVybCBtb3N0bHljbGVhbi1wZXJsCittYXliZS1tb3N0bHljbGVhbi1wZXJsOgorCittb3N0bHljbGVhbi1wZXJsOiAKKwlAWyAtZiAuL3BlcmwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBwZXJsIiA7IFwKKwkoY2QgcGVybCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXBlcmwgY2xlYW4tcGVybAorbWF5YmUtY2xlYW4tcGVybDoKKworY2xlYW4tcGVybDogCisJQFsgLWYgLi9wZXJsL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gcGVybCIgOyBcCisJKGNkIHBlcmwgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tcGVybCBkaXN0Y2xlYW4tcGVybAorbWF5YmUtZGlzdGNsZWFuLXBlcmw6CisKK2Rpc3RjbGVhbi1wZXJsOiAKKwlAWyAtZiAuL3BlcmwvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gcGVybCIgOyBcCisJKGNkIHBlcmwgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1wZXJsIG1haW50YWluZXItY2xlYW4tcGVybAorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1wZXJsOgorCittYWludGFpbmVyLWNsZWFuLXBlcmw6IAorCUBbIC1mIC4vcGVybC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gcGVybCIgOyBcCisJKGNkIHBlcmwgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXBybXMgbWF5YmUtY29uZmlndXJlLXBybXMKIG1heWJlLWNvbmZpZ3VyZS1wcm1zOgogY29uZmlndXJlLXBybXM6CkBAIC0yMDU2NCw2ICsxMjM2OSwyMDQgQEAKIAkoY2QgcHJtcyAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXBybXMgaW5mby1wcm1zCittYXliZS1pbmZvLXBybXM6CisKK2luZm8tcHJtczogXAorICAgIGNvbmZpZ3VyZS1wcm1zIAorCUBbIC1mIC4vcHJtcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gcHJtcyIgOyBcCisJKGNkIHBybXMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1wcm1zIGR2aS1wcm1zCittYXliZS1kdmktcHJtczoKKworZHZpLXBybXM6IFwKKyAgICBjb25maWd1cmUtcHJtcyAKKwlAWyAtZiAuL3BybXMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gcHJtcyIgOyBcCisJKGNkIHBybXMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1wcm1zIFRBR1MtcHJtcworbWF5YmUtVEFHUy1wcm1zOgorCitUQUdTLXBybXM6IFwKKyAgICBjb25maWd1cmUtcHJtcyAKKwlAWyAtZiAuL3BybXMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIHBybXMiIDsgXAorCShjZCBwcm1zICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tcHJtcyBpbnN0YWxsLWluZm8tcHJtcworbWF5YmUtaW5zdGFsbC1pbmZvLXBybXM6CisKK2luc3RhbGwtaW5mby1wcm1zOiBcCisgICAgY29uZmlndXJlLXBybXMgXAorICAgIGluZm8tcHJtcyAKKwlAWyAtZiAuL3BybXMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gcHJtcyIgOyBcCisJKGNkIHBybXMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXBybXMgaW5zdGFsbGNoZWNrLXBybXMKK21heWJlLWluc3RhbGxjaGVjay1wcm1zOgorCitpbnN0YWxsY2hlY2stcHJtczogXAorICAgIGNvbmZpZ3VyZS1wcm1zIAorCUBbIC1mIC4vcHJtcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBwcm1zIiA7IFwKKwkoY2QgcHJtcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1wcm1zIG1vc3RseWNsZWFuLXBybXMKK21heWJlLW1vc3RseWNsZWFuLXBybXM6CisKK21vc3RseWNsZWFuLXBybXM6IAorCUBbIC1mIC4vcHJtcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHBybXMiIDsgXAorCShjZCBwcm1zICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tcHJtcyBjbGVhbi1wcm1zCittYXliZS1jbGVhbi1wcm1zOgorCitjbGVhbi1wcm1zOiAKKwlAWyAtZiAuL3BybXMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiBwcm1zIiA7IFwKKwkoY2QgcHJtcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1wcm1zIGRpc3RjbGVhbi1wcm1zCittYXliZS1kaXN0Y2xlYW4tcHJtczoKKworZGlzdGNsZWFuLXBybXM6IAorCUBbIC1mIC4vcHJtcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBwcm1zIiA7IFwKKwkoY2QgcHJtcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXBybXMgbWFpbnRhaW5lci1jbGVhbi1wcm1zCittYXliZS1tYWludGFpbmVyLWNsZWFuLXBybXM6CisKK21haW50YWluZXItY2xlYW4tcHJtczogCisJQFsgLWYgLi9wcm1zL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBwcm1zIiA7IFwKKwkoY2QgcHJtcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtcmNzIG1heWJlLWNvbmZpZ3VyZS1yY3MKIG1heWJlLWNvbmZpZ3VyZS1yY3M6CiBjb25maWd1cmUtcmNzOgpAQCAtMjA2MzEsNiArMTI2MzQsMjA0IEBACiAJKGNkIHJjcyAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXJjcyBpbmZvLXJjcworbWF5YmUtaW5mby1yY3M6CisKK2luZm8tcmNzOiBcCisgICAgY29uZmlndXJlLXJjcyAKKwlAWyAtZiAuL3Jjcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gcmNzIiA7IFwKKwkoY2QgcmNzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktcmNzIGR2aS1yY3MKK21heWJlLWR2aS1yY3M6CisKK2R2aS1yY3M6IFwKKyAgICBjb25maWd1cmUtcmNzIAorCUBbIC1mIC4vcmNzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIHJjcyIgOyBcCisJKGNkIHJjcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXJjcyBUQUdTLXJjcworbWF5YmUtVEFHUy1yY3M6CisKK1RBR1MtcmNzOiBcCisgICAgY29uZmlndXJlLXJjcyAKKwlAWyAtZiAuL3Jjcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gcmNzIiA7IFwKKwkoY2QgcmNzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tcmNzIGluc3RhbGwtaW5mby1yY3MKK21heWJlLWluc3RhbGwtaW5mby1yY3M6CisKK2luc3RhbGwtaW5mby1yY3M6IFwKKyAgICBjb25maWd1cmUtcmNzIFwKKyAgICBpbmZvLXJjcyAKKwlAWyAtZiAuL3Jjcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiByY3MiIDsgXAorCShjZCByY3MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXJjcyBpbnN0YWxsY2hlY2stcmNzCittYXliZS1pbnN0YWxsY2hlY2stcmNzOgorCitpbnN0YWxsY2hlY2stcmNzOiBcCisgICAgY29uZmlndXJlLXJjcyAKKwlAWyAtZiAuL3Jjcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiByY3MiIDsgXAorCShjZCByY3MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tcmNzIG1vc3RseWNsZWFuLXJjcworbWF5YmUtbW9zdGx5Y2xlYW4tcmNzOgorCittb3N0bHljbGVhbi1yY3M6IAorCUBbIC1mIC4vcmNzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gcmNzIiA7IFwKKwkoY2QgcmNzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tcmNzIGNsZWFuLXJjcworbWF5YmUtY2xlYW4tcmNzOgorCitjbGVhbi1yY3M6IAorCUBbIC1mIC4vcmNzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gcmNzIiA7IFwKKwkoY2QgcmNzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXJjcyBkaXN0Y2xlYW4tcmNzCittYXliZS1kaXN0Y2xlYW4tcmNzOgorCitkaXN0Y2xlYW4tcmNzOiAKKwlAWyAtZiAuL3Jjcy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiByY3MiIDsgXAorCShjZCByY3MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1yY3MgbWFpbnRhaW5lci1jbGVhbi1yY3MKK21heWJlLW1haW50YWluZXItY2xlYW4tcmNzOgorCittYWludGFpbmVyLWNsZWFuLXJjczogCisJQFsgLWYgLi9yY3MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHJjcyIgOyBcCisJKGNkIHJjcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtcmVhZGxpbmUgbWF5YmUtY29uZmlndXJlLXJlYWRsaW5lCiBtYXliZS1jb25maWd1cmUtcmVhZGxpbmU6CiBjb25maWd1cmUtcmVhZGxpbmU6CkBAIC0yMDY5OCw2ICsxMjg5OSwyMDQgQEAKIAkoY2QgcmVhZGxpbmUgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1yZWFkbGluZSBpbmZvLXJlYWRsaW5lCittYXliZS1pbmZvLXJlYWRsaW5lOgorCitpbmZvLXJlYWRsaW5lOiBcCisgICAgY29uZmlndXJlLXJlYWRsaW5lIAorCUBbIC1mIC4vcmVhZGxpbmUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIHJlYWRsaW5lIiA7IFwKKwkoY2QgcmVhZGxpbmUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1yZWFkbGluZSBkdmktcmVhZGxpbmUKK21heWJlLWR2aS1yZWFkbGluZToKKworZHZpLXJlYWRsaW5lOiBcCisgICAgY29uZmlndXJlLXJlYWRsaW5lIAorCUBbIC1mIC4vcmVhZGxpbmUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gcmVhZGxpbmUiIDsgXAorCShjZCByZWFkbGluZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXJlYWRsaW5lIFRBR1MtcmVhZGxpbmUKK21heWJlLVRBR1MtcmVhZGxpbmU6CisKK1RBR1MtcmVhZGxpbmU6IFwKKyAgICBjb25maWd1cmUtcmVhZGxpbmUgCisJQFsgLWYgLi9yZWFkbGluZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gcmVhZGxpbmUiIDsgXAorCShjZCByZWFkbGluZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXJlYWRsaW5lIGluc3RhbGwtaW5mby1yZWFkbGluZQorbWF5YmUtaW5zdGFsbC1pbmZvLXJlYWRsaW5lOgorCitpbnN0YWxsLWluZm8tcmVhZGxpbmU6IFwKKyAgICBjb25maWd1cmUtcmVhZGxpbmUgXAorICAgIGluZm8tcmVhZGxpbmUgCisJQFsgLWYgLi9yZWFkbGluZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiByZWFkbGluZSIgOyBcCisJKGNkIHJlYWRsaW5lICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1yZWFkbGluZSBpbnN0YWxsY2hlY2stcmVhZGxpbmUKK21heWJlLWluc3RhbGxjaGVjay1yZWFkbGluZToKKworaW5zdGFsbGNoZWNrLXJlYWRsaW5lOiBcCisgICAgY29uZmlndXJlLXJlYWRsaW5lIAorCUBbIC1mIC4vcmVhZGxpbmUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gcmVhZGxpbmUiIDsgXAorCShjZCByZWFkbGluZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1yZWFkbGluZSBtb3N0bHljbGVhbi1yZWFkbGluZQorbWF5YmUtbW9zdGx5Y2xlYW4tcmVhZGxpbmU6CisKK21vc3RseWNsZWFuLXJlYWRsaW5lOiAKKwlAWyAtZiAuL3JlYWRsaW5lL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gcmVhZGxpbmUiIDsgXAorCShjZCByZWFkbGluZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXJlYWRsaW5lIGNsZWFuLXJlYWRsaW5lCittYXliZS1jbGVhbi1yZWFkbGluZToKKworY2xlYW4tcmVhZGxpbmU6IAorCUBbIC1mIC4vcmVhZGxpbmUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiByZWFkbGluZSIgOyBcCisJKGNkIHJlYWRsaW5lICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXJlYWRsaW5lIGRpc3RjbGVhbi1yZWFkbGluZQorbWF5YmUtZGlzdGNsZWFuLXJlYWRsaW5lOgorCitkaXN0Y2xlYW4tcmVhZGxpbmU6IAorCUBbIC1mIC4vcmVhZGxpbmUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gcmVhZGxpbmUiIDsgXAorCShjZCByZWFkbGluZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXJlYWRsaW5lIG1haW50YWluZXItY2xlYW4tcmVhZGxpbmUKK21heWJlLW1haW50YWluZXItY2xlYW4tcmVhZGxpbmU6CisKK21haW50YWluZXItY2xlYW4tcmVhZGxpbmU6IAorCUBbIC1mIC4vcmVhZGxpbmUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHJlYWRsaW5lIiA7IFwKKwkoY2QgcmVhZGxpbmUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXJlbGVhc2UgbWF5YmUtY29uZmlndXJlLXJlbGVhc2UKIG1heWJlLWNvbmZpZ3VyZS1yZWxlYXNlOgogY29uZmlndXJlLXJlbGVhc2U6CkBAIC0yMDc1Nyw2ICsxMzE1NiwyMDQgQEAKIGluc3RhbGwtcmVsZWFzZToKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXJlbGVhc2UgaW5mby1yZWxlYXNlCittYXliZS1pbmZvLXJlbGVhc2U6CisKK2luZm8tcmVsZWFzZTogXAorICAgIGNvbmZpZ3VyZS1yZWxlYXNlIAorCUBbIC1mIC4vcmVsZWFzZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gcmVsZWFzZSIgOyBcCisJKGNkIHJlbGVhc2UgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1yZWxlYXNlIGR2aS1yZWxlYXNlCittYXliZS1kdmktcmVsZWFzZToKKworZHZpLXJlbGVhc2U6IFwKKyAgICBjb25maWd1cmUtcmVsZWFzZSAKKwlAWyAtZiAuL3JlbGVhc2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gcmVsZWFzZSIgOyBcCisJKGNkIHJlbGVhc2UgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1yZWxlYXNlIFRBR1MtcmVsZWFzZQorbWF5YmUtVEFHUy1yZWxlYXNlOgorCitUQUdTLXJlbGVhc2U6IFwKKyAgICBjb25maWd1cmUtcmVsZWFzZSAKKwlAWyAtZiAuL3JlbGVhc2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIHJlbGVhc2UiIDsgXAorCShjZCByZWxlYXNlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tcmVsZWFzZSBpbnN0YWxsLWluZm8tcmVsZWFzZQorbWF5YmUtaW5zdGFsbC1pbmZvLXJlbGVhc2U6CisKK2luc3RhbGwtaW5mby1yZWxlYXNlOiBcCisgICAgY29uZmlndXJlLXJlbGVhc2UgXAorICAgIGluZm8tcmVsZWFzZSAKKwlAWyAtZiAuL3JlbGVhc2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gcmVsZWFzZSIgOyBcCisJKGNkIHJlbGVhc2UgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXJlbGVhc2UgaW5zdGFsbGNoZWNrLXJlbGVhc2UKK21heWJlLWluc3RhbGxjaGVjay1yZWxlYXNlOgorCitpbnN0YWxsY2hlY2stcmVsZWFzZTogXAorICAgIGNvbmZpZ3VyZS1yZWxlYXNlIAorCUBbIC1mIC4vcmVsZWFzZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiByZWxlYXNlIiA7IFwKKwkoY2QgcmVsZWFzZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1yZWxlYXNlIG1vc3RseWNsZWFuLXJlbGVhc2UKK21heWJlLW1vc3RseWNsZWFuLXJlbGVhc2U6CisKK21vc3RseWNsZWFuLXJlbGVhc2U6IAorCUBbIC1mIC4vcmVsZWFzZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHJlbGVhc2UiIDsgXAorCShjZCByZWxlYXNlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tcmVsZWFzZSBjbGVhbi1yZWxlYXNlCittYXliZS1jbGVhbi1yZWxlYXNlOgorCitjbGVhbi1yZWxlYXNlOiAKKwlAWyAtZiAuL3JlbGVhc2UvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiByZWxlYXNlIiA7IFwKKwkoY2QgcmVsZWFzZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1yZWxlYXNlIGRpc3RjbGVhbi1yZWxlYXNlCittYXliZS1kaXN0Y2xlYW4tcmVsZWFzZToKKworZGlzdGNsZWFuLXJlbGVhc2U6IAorCUBbIC1mIC4vcmVsZWFzZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiByZWxlYXNlIiA7IFwKKwkoY2QgcmVsZWFzZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXJlbGVhc2UgbWFpbnRhaW5lci1jbGVhbi1yZWxlYXNlCittYXliZS1tYWludGFpbmVyLWNsZWFuLXJlbGVhc2U6CisKK21haW50YWluZXItY2xlYW4tcmVsZWFzZTogCisJQFsgLWYgLi9yZWxlYXNlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiByZWxlYXNlIiA7IFwKKwkoY2QgcmVsZWFzZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtcmVjb2RlIG1heWJlLWNvbmZpZ3VyZS1yZWNvZGUKIG1heWJlLWNvbmZpZ3VyZS1yZWNvZGU6CiBjb25maWd1cmUtcmVjb2RlOgpAQCAtMjA4MjQsNiArMTM0MjEsMjA0IEBACiAJKGNkIHJlY29kZSAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXJlY29kZSBpbmZvLXJlY29kZQorbWF5YmUtaW5mby1yZWNvZGU6CisKK2luZm8tcmVjb2RlOiBcCisgICAgY29uZmlndXJlLXJlY29kZSAKKwlAWyAtZiAuL3JlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gcmVjb2RlIiA7IFwKKwkoY2QgcmVjb2RlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktcmVjb2RlIGR2aS1yZWNvZGUKK21heWJlLWR2aS1yZWNvZGU6CisKK2R2aS1yZWNvZGU6IFwKKyAgICBjb25maWd1cmUtcmVjb2RlIAorCUBbIC1mIC4vcmVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIHJlY29kZSIgOyBcCisJKGNkIHJlY29kZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXJlY29kZSBUQUdTLXJlY29kZQorbWF5YmUtVEFHUy1yZWNvZGU6CisKK1RBR1MtcmVjb2RlOiBcCisgICAgY29uZmlndXJlLXJlY29kZSAKKwlAWyAtZiAuL3JlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gcmVjb2RlIiA7IFwKKwkoY2QgcmVjb2RlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tcmVjb2RlIGluc3RhbGwtaW5mby1yZWNvZGUKK21heWJlLWluc3RhbGwtaW5mby1yZWNvZGU6CisKK2luc3RhbGwtaW5mby1yZWNvZGU6IFwKKyAgICBjb25maWd1cmUtcmVjb2RlIFwKKyAgICBpbmZvLXJlY29kZSAKKwlAWyAtZiAuL3JlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiByZWNvZGUiIDsgXAorCShjZCByZWNvZGUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXJlY29kZSBpbnN0YWxsY2hlY2stcmVjb2RlCittYXliZS1pbnN0YWxsY2hlY2stcmVjb2RlOgorCitpbnN0YWxsY2hlY2stcmVjb2RlOiBcCisgICAgY29uZmlndXJlLXJlY29kZSAKKwlAWyAtZiAuL3JlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiByZWNvZGUiIDsgXAorCShjZCByZWNvZGUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tcmVjb2RlIG1vc3RseWNsZWFuLXJlY29kZQorbWF5YmUtbW9zdGx5Y2xlYW4tcmVjb2RlOgorCittb3N0bHljbGVhbi1yZWNvZGU6IAorCUBbIC1mIC4vcmVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gcmVjb2RlIiA7IFwKKwkoY2QgcmVjb2RlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tcmVjb2RlIGNsZWFuLXJlY29kZQorbWF5YmUtY2xlYW4tcmVjb2RlOgorCitjbGVhbi1yZWNvZGU6IAorCUBbIC1mIC4vcmVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gcmVjb2RlIiA7IFwKKwkoY2QgcmVjb2RlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXJlY29kZSBkaXN0Y2xlYW4tcmVjb2RlCittYXliZS1kaXN0Y2xlYW4tcmVjb2RlOgorCitkaXN0Y2xlYW4tcmVjb2RlOiAKKwlAWyAtZiAuL3JlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiByZWNvZGUiIDsgXAorCShjZCByZWNvZGUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1yZWNvZGUgbWFpbnRhaW5lci1jbGVhbi1yZWNvZGUKK21heWJlLW1haW50YWluZXItY2xlYW4tcmVjb2RlOgorCittYWludGFpbmVyLWNsZWFuLXJlY29kZTogCisJQFsgLWYgLi9yZWNvZGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHJlY29kZSIgOyBcCisJKGNkIHJlY29kZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtc2VkIG1heWJlLWNvbmZpZ3VyZS1zZWQKIG1heWJlLWNvbmZpZ3VyZS1zZWQ6CiBjb25maWd1cmUtc2VkOgpAQCAtMjA4OTEsNiArMTM2ODYsMjA0IEBACiAJKGNkIHNlZCAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXNlZCBpbmZvLXNlZAorbWF5YmUtaW5mby1zZWQ6CisKK2luZm8tc2VkOiBcCisgICAgY29uZmlndXJlLXNlZCAKKwlAWyAtZiAuL3NlZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gc2VkIiA7IFwKKwkoY2Qgc2VkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktc2VkIGR2aS1zZWQKK21heWJlLWR2aS1zZWQ6CisKK2R2aS1zZWQ6IFwKKyAgICBjb25maWd1cmUtc2VkIAorCUBbIC1mIC4vc2VkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIHNlZCIgOyBcCisJKGNkIHNlZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXNlZCBUQUdTLXNlZAorbWF5YmUtVEFHUy1zZWQ6CisKK1RBR1Mtc2VkOiBcCisgICAgY29uZmlndXJlLXNlZCAKKwlAWyAtZiAuL3NlZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gc2VkIiA7IFwKKwkoY2Qgc2VkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tc2VkIGluc3RhbGwtaW5mby1zZWQKK21heWJlLWluc3RhbGwtaW5mby1zZWQ6CisKK2luc3RhbGwtaW5mby1zZWQ6IFwKKyAgICBjb25maWd1cmUtc2VkIFwKKyAgICBpbmZvLXNlZCAKKwlAWyAtZiAuL3NlZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBzZWQiIDsgXAorCShjZCBzZWQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXNlZCBpbnN0YWxsY2hlY2stc2VkCittYXliZS1pbnN0YWxsY2hlY2stc2VkOgorCitpbnN0YWxsY2hlY2stc2VkOiBcCisgICAgY29uZmlndXJlLXNlZCAKKwlAWyAtZiAuL3NlZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBzZWQiIDsgXAorCShjZCBzZWQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tc2VkIG1vc3RseWNsZWFuLXNlZAorbWF5YmUtbW9zdGx5Y2xlYW4tc2VkOgorCittb3N0bHljbGVhbi1zZWQ6IAorCUBbIC1mIC4vc2VkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gc2VkIiA7IFwKKwkoY2Qgc2VkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tc2VkIGNsZWFuLXNlZAorbWF5YmUtY2xlYW4tc2VkOgorCitjbGVhbi1zZWQ6IAorCUBbIC1mIC4vc2VkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gc2VkIiA7IFwKKwkoY2Qgc2VkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXNlZCBkaXN0Y2xlYW4tc2VkCittYXliZS1kaXN0Y2xlYW4tc2VkOgorCitkaXN0Y2xlYW4tc2VkOiAKKwlAWyAtZiAuL3NlZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBzZWQiIDsgXAorCShjZCBzZWQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1zZWQgbWFpbnRhaW5lci1jbGVhbi1zZWQKK21heWJlLW1haW50YWluZXItY2xlYW4tc2VkOgorCittYWludGFpbmVyLWNsZWFuLXNlZDogCisJQFsgLWYgLi9zZWQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHNlZCIgOyBcCisJKGNkIHNlZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtc2VuZC1wciBtYXliZS1jb25maWd1cmUtc2VuZC1wcgogbWF5YmUtY29uZmlndXJlLXNlbmQtcHI6CiBjb25maWd1cmUtc2VuZC1wcjoKQEAgLTIwOTU4LDYgKzEzOTUxLDIwNCBAQAogCShjZCBzZW5kLXByICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tc2VuZC1wciBpbmZvLXNlbmQtcHIKK21heWJlLWluZm8tc2VuZC1wcjoKKworaW5mby1zZW5kLXByOiBcCisgICAgY29uZmlndXJlLXNlbmQtcHIgCisJQFsgLWYgLi9zZW5kLXByL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiBzZW5kLXByIiA7IFwKKwkoY2Qgc2VuZC1wciAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXNlbmQtcHIgZHZpLXNlbmQtcHIKK21heWJlLWR2aS1zZW5kLXByOgorCitkdmktc2VuZC1wcjogXAorICAgIGNvbmZpZ3VyZS1zZW5kLXByIAorCUBbIC1mIC4vc2VuZC1wci9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBzZW5kLXByIiA7IFwKKwkoY2Qgc2VuZC1wciAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXNlbmQtcHIgVEFHUy1zZW5kLXByCittYXliZS1UQUdTLXNlbmQtcHI6CisKK1RBR1Mtc2VuZC1wcjogXAorICAgIGNvbmZpZ3VyZS1zZW5kLXByIAorCUBbIC1mIC4vc2VuZC1wci9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gc2VuZC1wciIgOyBcCisJKGNkIHNlbmQtcHIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby1zZW5kLXByIGluc3RhbGwtaW5mby1zZW5kLXByCittYXliZS1pbnN0YWxsLWluZm8tc2VuZC1wcjoKKworaW5zdGFsbC1pbmZvLXNlbmQtcHI6IFwKKyAgICBjb25maWd1cmUtc2VuZC1wciBcCisgICAgaW5mby1zZW5kLXByIAorCUBbIC1mIC4vc2VuZC1wci9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBzZW5kLXByIiA7IFwKKwkoY2Qgc2VuZC1wciAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stc2VuZC1wciBpbnN0YWxsY2hlY2stc2VuZC1wcgorbWF5YmUtaW5zdGFsbGNoZWNrLXNlbmQtcHI6CisKK2luc3RhbGxjaGVjay1zZW5kLXByOiBcCisgICAgY29uZmlndXJlLXNlbmQtcHIgCisJQFsgLWYgLi9zZW5kLXByL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHNlbmQtcHIiIDsgXAorCShjZCBzZW5kLXByICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXNlbmQtcHIgbW9zdGx5Y2xlYW4tc2VuZC1wcgorbWF5YmUtbW9zdGx5Y2xlYW4tc2VuZC1wcjoKKworbW9zdGx5Y2xlYW4tc2VuZC1wcjogCisJQFsgLWYgLi9zZW5kLXByL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gc2VuZC1wciIgOyBcCisJKGNkIHNlbmQtcHIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi1zZW5kLXByIGNsZWFuLXNlbmQtcHIKK21heWJlLWNsZWFuLXNlbmQtcHI6CisKK2NsZWFuLXNlbmQtcHI6IAorCUBbIC1mIC4vc2VuZC1wci9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIHNlbmQtcHIiIDsgXAorCShjZCBzZW5kLXByICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXNlbmQtcHIgZGlzdGNsZWFuLXNlbmQtcHIKK21heWJlLWRpc3RjbGVhbi1zZW5kLXByOgorCitkaXN0Y2xlYW4tc2VuZC1wcjogCisJQFsgLWYgLi9zZW5kLXByL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHNlbmQtcHIiIDsgXAorCShjZCBzZW5kLXByICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tc2VuZC1wciBtYWludGFpbmVyLWNsZWFuLXNlbmQtcHIKK21heWJlLW1haW50YWluZXItY2xlYW4tc2VuZC1wcjoKKworbWFpbnRhaW5lci1jbGVhbi1zZW5kLXByOiAKKwlAWyAtZiAuL3NlbmQtcHIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHNlbmQtcHIiIDsgXAorCShjZCBzZW5kLXByICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1zaGVsbHV0aWxzIG1heWJlLWNvbmZpZ3VyZS1zaGVsbHV0aWxzCiBtYXliZS1jb25maWd1cmUtc2hlbGx1dGlsczoKIGNvbmZpZ3VyZS1zaGVsbHV0aWxzOgpAQCAtMjEwMjUsNiArMTQyMTYsMjA0IEBACiAJKGNkIHNoZWxsdXRpbHMgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1zaGVsbHV0aWxzIGluZm8tc2hlbGx1dGlscworbWF5YmUtaW5mby1zaGVsbHV0aWxzOgorCitpbmZvLXNoZWxsdXRpbHM6IFwKKyAgICBjb25maWd1cmUtc2hlbGx1dGlscyAKKwlAWyAtZiAuL3NoZWxsdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIHNoZWxsdXRpbHMiIDsgXAorCShjZCBzaGVsbHV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktc2hlbGx1dGlscyBkdmktc2hlbGx1dGlscworbWF5YmUtZHZpLXNoZWxsdXRpbHM6CisKK2R2aS1zaGVsbHV0aWxzOiBcCisgICAgY29uZmlndXJlLXNoZWxsdXRpbHMgCisJQFsgLWYgLi9zaGVsbHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIHNoZWxsdXRpbHMiIDsgXAorCShjZCBzaGVsbHV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1Mtc2hlbGx1dGlscyBUQUdTLXNoZWxsdXRpbHMKK21heWJlLVRBR1Mtc2hlbGx1dGlsczoKKworVEFHUy1zaGVsbHV0aWxzOiBcCisgICAgY29uZmlndXJlLXNoZWxsdXRpbHMgCisJQFsgLWYgLi9zaGVsbHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBzaGVsbHV0aWxzIiA7IFwKKwkoY2Qgc2hlbGx1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXNoZWxsdXRpbHMgaW5zdGFsbC1pbmZvLXNoZWxsdXRpbHMKK21heWJlLWluc3RhbGwtaW5mby1zaGVsbHV0aWxzOgorCitpbnN0YWxsLWluZm8tc2hlbGx1dGlsczogXAorICAgIGNvbmZpZ3VyZS1zaGVsbHV0aWxzIFwKKyAgICBpbmZvLXNoZWxsdXRpbHMgCisJQFsgLWYgLi9zaGVsbHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHNoZWxsdXRpbHMiIDsgXAorCShjZCBzaGVsbHV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1zaGVsbHV0aWxzIGluc3RhbGxjaGVjay1zaGVsbHV0aWxzCittYXliZS1pbnN0YWxsY2hlY2stc2hlbGx1dGlsczoKKworaW5zdGFsbGNoZWNrLXNoZWxsdXRpbHM6IFwKKyAgICBjb25maWd1cmUtc2hlbGx1dGlscyAKKwlAWyAtZiAuL3NoZWxsdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gc2hlbGx1dGlscyIgOyBcCisJKGNkIHNoZWxsdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tc2hlbGx1dGlscyBtb3N0bHljbGVhbi1zaGVsbHV0aWxzCittYXliZS1tb3N0bHljbGVhbi1zaGVsbHV0aWxzOgorCittb3N0bHljbGVhbi1zaGVsbHV0aWxzOiAKKwlAWyAtZiAuL3NoZWxsdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiBzaGVsbHV0aWxzIiA7IFwKKwkoY2Qgc2hlbGx1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXNoZWxsdXRpbHMgY2xlYW4tc2hlbGx1dGlscworbWF5YmUtY2xlYW4tc2hlbGx1dGlsczoKKworY2xlYW4tc2hlbGx1dGlsczogCisJQFsgLWYgLi9zaGVsbHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gc2hlbGx1dGlscyIgOyBcCisJKGNkIHNoZWxsdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tc2hlbGx1dGlscyBkaXN0Y2xlYW4tc2hlbGx1dGlscworbWF5YmUtZGlzdGNsZWFuLXNoZWxsdXRpbHM6CisKK2Rpc3RjbGVhbi1zaGVsbHV0aWxzOiAKKwlAWyAtZiAuL3NoZWxsdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gc2hlbGx1dGlscyIgOyBcCisJKGNkIHNoZWxsdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1zaGVsbHV0aWxzIG1haW50YWluZXItY2xlYW4tc2hlbGx1dGlscworbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1zaGVsbHV0aWxzOgorCittYWludGFpbmVyLWNsZWFuLXNoZWxsdXRpbHM6IAorCUBbIC1mIC4vc2hlbGx1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gc2hlbGx1dGlscyIgOyBcCisJKGNkIHNoZWxsdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXNpZCBtYXliZS1jb25maWd1cmUtc2lkCiBtYXliZS1jb25maWd1cmUtc2lkOgogY29uZmlndXJlLXNpZDoKQEAgLTIxMDkyLDYgKzE0NDgxLDIwNCBAQAogCShjZCBzaWQgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1zaWQgaW5mby1zaWQKK21heWJlLWluZm8tc2lkOgorCitpbmZvLXNpZDogXAorICAgIGNvbmZpZ3VyZS1zaWQgCisJQFsgLWYgLi9zaWQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIHNpZCIgOyBcCisJKGNkIHNpZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXNpZCBkdmktc2lkCittYXliZS1kdmktc2lkOgorCitkdmktc2lkOiBcCisgICAgY29uZmlndXJlLXNpZCAKKwlAWyAtZiAuL3NpZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBzaWQiIDsgXAorCShjZCBzaWQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1zaWQgVEFHUy1zaWQKK21heWJlLVRBR1Mtc2lkOgorCitUQUdTLXNpZDogXAorICAgIGNvbmZpZ3VyZS1zaWQgCisJQFsgLWYgLi9zaWQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIHNpZCIgOyBcCisJKGNkIHNpZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXNpZCBpbnN0YWxsLWluZm8tc2lkCittYXliZS1pbnN0YWxsLWluZm8tc2lkOgorCitpbnN0YWxsLWluZm8tc2lkOiBcCisgICAgY29uZmlndXJlLXNpZCBcCisgICAgaW5mby1zaWQgCisJQFsgLWYgLi9zaWQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gc2lkIiA7IFwKKwkoY2Qgc2lkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1zaWQgaW5zdGFsbGNoZWNrLXNpZAorbWF5YmUtaW5zdGFsbGNoZWNrLXNpZDoKKworaW5zdGFsbGNoZWNrLXNpZDogXAorICAgIGNvbmZpZ3VyZS1zaWQgCisJQFsgLWYgLi9zaWQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gc2lkIiA7IFwKKwkoY2Qgc2lkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXNpZCBtb3N0bHljbGVhbi1zaWQKK21heWJlLW1vc3RseWNsZWFuLXNpZDoKKworbW9zdGx5Y2xlYW4tc2lkOiAKKwlAWyAtZiAuL3NpZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHNpZCIgOyBcCisJKGNkIHNpZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXNpZCBjbGVhbi1zaWQKK21heWJlLWNsZWFuLXNpZDoKKworY2xlYW4tc2lkOiAKKwlAWyAtZiAuL3NpZC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIHNpZCIgOyBcCisJKGNkIHNpZCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1zaWQgZGlzdGNsZWFuLXNpZAorbWF5YmUtZGlzdGNsZWFuLXNpZDoKKworZGlzdGNsZWFuLXNpZDogCisJQFsgLWYgLi9zaWQvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gc2lkIiA7IFwKKwkoY2Qgc2lkICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tc2lkIG1haW50YWluZXItY2xlYW4tc2lkCittYXliZS1tYWludGFpbmVyLWNsZWFuLXNpZDoKKworbWFpbnRhaW5lci1jbGVhbi1zaWQ6IAorCUBbIC1mIC4vc2lkL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBzaWQiIDsgXAorCShjZCBzaWQgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXNpbSBtYXliZS1jb25maWd1cmUtc2ltCiBtYXliZS1jb25maWd1cmUtc2ltOgogY29uZmlndXJlLXNpbToKQEAgLTIxMTU5LDYgKzE0NzQ2LDIwNCBAQAogCShjZCBzaW0gJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1zaW0gaW5mby1zaW0KK21heWJlLWluZm8tc2ltOgorCitpbmZvLXNpbTogXAorICAgIGNvbmZpZ3VyZS1zaW0gCisJQFsgLWYgLi9zaW0vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIHNpbSIgOyBcCisJKGNkIHNpbSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXNpbSBkdmktc2ltCittYXliZS1kdmktc2ltOgorCitkdmktc2ltOiBcCisgICAgY29uZmlndXJlLXNpbSAKKwlAWyAtZiAuL3NpbS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiBzaW0iIDsgXAorCShjZCBzaW0gJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy1zaW0gVEFHUy1zaW0KK21heWJlLVRBR1Mtc2ltOgorCitUQUdTLXNpbTogXAorICAgIGNvbmZpZ3VyZS1zaW0gCisJQFsgLWYgLi9zaW0vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIHNpbSIgOyBcCisJKGNkIHNpbSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXNpbSBpbnN0YWxsLWluZm8tc2ltCittYXliZS1pbnN0YWxsLWluZm8tc2ltOgorCitpbnN0YWxsLWluZm8tc2ltOiBcCisgICAgY29uZmlndXJlLXNpbSBcCisgICAgaW5mby1zaW0gCisJQFsgLWYgLi9zaW0vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gc2ltIiA7IFwKKwkoY2Qgc2ltICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1zaW0gaW5zdGFsbGNoZWNrLXNpbQorbWF5YmUtaW5zdGFsbGNoZWNrLXNpbToKKworaW5zdGFsbGNoZWNrLXNpbTogXAorICAgIGNvbmZpZ3VyZS1zaW0gCisJQFsgLWYgLi9zaW0vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gc2ltIiA7IFwKKwkoY2Qgc2ltICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXNpbSBtb3N0bHljbGVhbi1zaW0KK21heWJlLW1vc3RseWNsZWFuLXNpbToKKworbW9zdGx5Y2xlYW4tc2ltOiAKKwlAWyAtZiAuL3NpbS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHNpbSIgOyBcCisJKGNkIHNpbSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXNpbSBjbGVhbi1zaW0KK21heWJlLWNsZWFuLXNpbToKKworY2xlYW4tc2ltOiAKKwlAWyAtZiAuL3NpbS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIHNpbSIgOyBcCisJKGNkIHNpbSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi1zaW0gZGlzdGNsZWFuLXNpbQorbWF5YmUtZGlzdGNsZWFuLXNpbToKKworZGlzdGNsZWFuLXNpbTogCisJQFsgLWYgLi9zaW0vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gc2ltIiA7IFwKKwkoY2Qgc2ltICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tc2ltIG1haW50YWluZXItY2xlYW4tc2ltCittYXliZS1tYWludGFpbmVyLWNsZWFuLXNpbToKKworbWFpbnRhaW5lci1jbGVhbi1zaW06IAorCUBbIC1mIC4vc2ltL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiBzaW0iIDsgXAorCShjZCBzaW0gJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXRhciBtYXliZS1jb25maWd1cmUtdGFyCiBtYXliZS1jb25maWd1cmUtdGFyOgogY29uZmlndXJlLXRhcjoKQEAgLTIxMjI2LDYgKzE1MDExLDIwNCBAQAogCShjZCB0YXIgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby10YXIgaW5mby10YXIKK21heWJlLWluZm8tdGFyOgorCitpbmZvLXRhcjogXAorICAgIGNvbmZpZ3VyZS10YXIgCisJQFsgLWYgLi90YXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIHRhciIgOyBcCisJKGNkIHRhciAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXRhciBkdmktdGFyCittYXliZS1kdmktdGFyOgorCitkdmktdGFyOiBcCisgICAgY29uZmlndXJlLXRhciAKKwlAWyAtZiAuL3Rhci9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiB0YXIiIDsgXAorCShjZCB0YXIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy10YXIgVEFHUy10YXIKK21heWJlLVRBR1MtdGFyOgorCitUQUdTLXRhcjogXAorICAgIGNvbmZpZ3VyZS10YXIgCisJQFsgLWYgLi90YXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIHRhciIgOyBcCisJKGNkIHRhciAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhciBpbnN0YWxsLWluZm8tdGFyCittYXliZS1pbnN0YWxsLWluZm8tdGFyOgorCitpbnN0YWxsLWluZm8tdGFyOiBcCisgICAgY29uZmlndXJlLXRhciBcCisgICAgaW5mby10YXIgCisJQFsgLWYgLi90YXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gdGFyIiA7IFwKKwkoY2QgdGFyICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10YXIgaW5zdGFsbGNoZWNrLXRhcgorbWF5YmUtaW5zdGFsbGNoZWNrLXRhcjoKKworaW5zdGFsbGNoZWNrLXRhcjogXAorICAgIGNvbmZpZ3VyZS10YXIgCisJQFsgLWYgLi90YXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gdGFyIiA7IFwKKwkoY2QgdGFyICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXRhciBtb3N0bHljbGVhbi10YXIKK21heWJlLW1vc3RseWNsZWFuLXRhcjoKKworbW9zdGx5Y2xlYW4tdGFyOiAKKwlAWyAtZiAuL3Rhci9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHRhciIgOyBcCisJKGNkIHRhciAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXRhciBjbGVhbi10YXIKK21heWJlLWNsZWFuLXRhcjoKKworY2xlYW4tdGFyOiAKKwlAWyAtZiAuL3Rhci9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIHRhciIgOyBcCisJKGNkIHRhciAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXIgZGlzdGNsZWFuLXRhcgorbWF5YmUtZGlzdGNsZWFuLXRhcjoKKworZGlzdGNsZWFuLXRhcjogCisJQFsgLWYgLi90YXIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gdGFyIiA7IFwKKwkoY2QgdGFyICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdGFyIG1haW50YWluZXItY2xlYW4tdGFyCittYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcjoKKworbWFpbnRhaW5lci1jbGVhbi10YXI6IAorCUBbIC1mIC4vdGFyL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiB0YXIiIDsgXAorCShjZCB0YXIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXRleGluZm8gbWF5YmUtY29uZmlndXJlLXRleGluZm8KIG1heWJlLWNvbmZpZ3VyZS10ZXhpbmZvOgogY29uZmlndXJlLXRleGluZm86CkBAIC0yMTI4OSw2ICsxNTI3MiwyMDQgQEAKIGluc3RhbGwtdGV4aW5mbzoKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXRleGluZm8gaW5mby10ZXhpbmZvCittYXliZS1pbmZvLXRleGluZm86CisKK2luZm8tdGV4aW5mbzogXAorICAgIGNvbmZpZ3VyZS10ZXhpbmZvIAorCUBbIC1mIC4vdGV4aW5mby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gdGV4aW5mbyIgOyBcCisJKGNkIHRleGluZm8gJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS10ZXhpbmZvIGR2aS10ZXhpbmZvCittYXliZS1kdmktdGV4aW5mbzoKKworZHZpLXRleGluZm86IFwKKyAgICBjb25maWd1cmUtdGV4aW5mbyAKKwlAWyAtZiAuL3RleGluZm8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gdGV4aW5mbyIgOyBcCisJKGNkIHRleGluZm8gJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy10ZXhpbmZvIFRBR1MtdGV4aW5mbworbWF5YmUtVEFHUy10ZXhpbmZvOgorCitUQUdTLXRleGluZm86IFwKKyAgICBjb25maWd1cmUtdGV4aW5mbyAKKwlAWyAtZiAuL3RleGluZm8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIHRleGluZm8iIDsgXAorCShjZCB0ZXhpbmZvICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGV4aW5mbyBpbnN0YWxsLWluZm8tdGV4aW5mbworbWF5YmUtaW5zdGFsbC1pbmZvLXRleGluZm86CisKK2luc3RhbGwtaW5mby10ZXhpbmZvOiBcCisgICAgY29uZmlndXJlLXRleGluZm8gXAorICAgIGluZm8tdGV4aW5mbyAKKwlAWyAtZiAuL3RleGluZm8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gdGV4aW5mbyIgOyBcCisJKGNkIHRleGluZm8gJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRleGluZm8gaW5zdGFsbGNoZWNrLXRleGluZm8KK21heWJlLWluc3RhbGxjaGVjay10ZXhpbmZvOgorCitpbnN0YWxsY2hlY2stdGV4aW5mbzogXAorICAgIGNvbmZpZ3VyZS10ZXhpbmZvIAorCUBbIC1mIC4vdGV4aW5mby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiB0ZXhpbmZvIiA7IFwKKwkoY2QgdGV4aW5mbyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10ZXhpbmZvIG1vc3RseWNsZWFuLXRleGluZm8KK21heWJlLW1vc3RseWNsZWFuLXRleGluZm86CisKK21vc3RseWNsZWFuLXRleGluZm86IAorCUBbIC1mIC4vdGV4aW5mby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHRleGluZm8iIDsgXAorCShjZCB0ZXhpbmZvICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tdGV4aW5mbyBjbGVhbi10ZXhpbmZvCittYXliZS1jbGVhbi10ZXhpbmZvOgorCitjbGVhbi10ZXhpbmZvOiAKKwlAWyAtZiAuL3RleGluZm8vTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiB0ZXhpbmZvIiA7IFwKKwkoY2QgdGV4aW5mbyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10ZXhpbmZvIGRpc3RjbGVhbi10ZXhpbmZvCittYXliZS1kaXN0Y2xlYW4tdGV4aW5mbzoKKworZGlzdGNsZWFuLXRleGluZm86IAorCUBbIC1mIC4vdGV4aW5mby9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiB0ZXhpbmZvIiA7IFwKKwkoY2QgdGV4aW5mbyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRleGluZm8gbWFpbnRhaW5lci1jbGVhbi10ZXhpbmZvCittYXliZS1tYWludGFpbmVyLWNsZWFuLXRleGluZm86CisKK21haW50YWluZXItY2xlYW4tdGV4aW5mbzogCisJQFsgLWYgLi90ZXhpbmZvL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiB0ZXhpbmZvIiA7IFwKKwkoY2QgdGV4aW5mbyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtdGV4dHV0aWxzIG1heWJlLWNvbmZpZ3VyZS10ZXh0dXRpbHMKIG1heWJlLWNvbmZpZ3VyZS10ZXh0dXRpbHM6CiBjb25maWd1cmUtdGV4dHV0aWxzOgpAQCAtMjEzNTYsNiArMTU1MzcsMjA0IEBACiAJKGNkIHRleHR1dGlscyAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXRleHR1dGlscyBpbmZvLXRleHR1dGlscworbWF5YmUtaW5mby10ZXh0dXRpbHM6CisKK2luZm8tdGV4dHV0aWxzOiBcCisgICAgY29uZmlndXJlLXRleHR1dGlscyAKKwlAWyAtZiAuL3RleHR1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gdGV4dHV0aWxzIiA7IFwKKwkoY2QgdGV4dHV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktdGV4dHV0aWxzIGR2aS10ZXh0dXRpbHMKK21heWJlLWR2aS10ZXh0dXRpbHM6CisKK2R2aS10ZXh0dXRpbHM6IFwKKyAgICBjb25maWd1cmUtdGV4dHV0aWxzIAorCUBbIC1mIC4vdGV4dHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIHRleHR1dGlscyIgOyBcCisJKGNkIHRleHR1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXRleHR1dGlscyBUQUdTLXRleHR1dGlscworbWF5YmUtVEFHUy10ZXh0dXRpbHM6CisKK1RBR1MtdGV4dHV0aWxzOiBcCisgICAgY29uZmlndXJlLXRleHR1dGlscyAKKwlAWyAtZiAuL3RleHR1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gdGV4dHV0aWxzIiA7IFwKKwkoY2QgdGV4dHV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGV4dHV0aWxzIGluc3RhbGwtaW5mby10ZXh0dXRpbHMKK21heWJlLWluc3RhbGwtaW5mby10ZXh0dXRpbHM6CisKK2luc3RhbGwtaW5mby10ZXh0dXRpbHM6IFwKKyAgICBjb25maWd1cmUtdGV4dHV0aWxzIFwKKyAgICBpbmZvLXRleHR1dGlscyAKKwlAWyAtZiAuL3RleHR1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiB0ZXh0dXRpbHMiIDsgXAorCShjZCB0ZXh0dXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRleHR1dGlscyBpbnN0YWxsY2hlY2stdGV4dHV0aWxzCittYXliZS1pbnN0YWxsY2hlY2stdGV4dHV0aWxzOgorCitpbnN0YWxsY2hlY2stdGV4dHV0aWxzOiBcCisgICAgY29uZmlndXJlLXRleHR1dGlscyAKKwlAWyAtZiAuL3RleHR1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiB0ZXh0dXRpbHMiIDsgXAorCShjZCB0ZXh0dXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGV4dHV0aWxzIG1vc3RseWNsZWFuLXRleHR1dGlscworbWF5YmUtbW9zdGx5Y2xlYW4tdGV4dHV0aWxzOgorCittb3N0bHljbGVhbi10ZXh0dXRpbHM6IAorCUBbIC1mIC4vdGV4dHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gdGV4dHV0aWxzIiA7IFwKKwkoY2QgdGV4dHV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tdGV4dHV0aWxzIGNsZWFuLXRleHR1dGlscworbWF5YmUtY2xlYW4tdGV4dHV0aWxzOgorCitjbGVhbi10ZXh0dXRpbHM6IAorCUBbIC1mIC4vdGV4dHV0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gdGV4dHV0aWxzIiA7IFwKKwkoY2QgdGV4dHV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRleHR1dGlscyBkaXN0Y2xlYW4tdGV4dHV0aWxzCittYXliZS1kaXN0Y2xlYW4tdGV4dHV0aWxzOgorCitkaXN0Y2xlYW4tdGV4dHV0aWxzOiAKKwlAWyAtZiAuL3RleHR1dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiB0ZXh0dXRpbHMiIDsgXAorCShjZCB0ZXh0dXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10ZXh0dXRpbHMgbWFpbnRhaW5lci1jbGVhbi10ZXh0dXRpbHMKK21heWJlLW1haW50YWluZXItY2xlYW4tdGV4dHV0aWxzOgorCittYWludGFpbmVyLWNsZWFuLXRleHR1dGlsczogCisJQFsgLWYgLi90ZXh0dXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHRleHR1dGlscyIgOyBcCisJKGNkIHRleHR1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtdGltZSBtYXliZS1jb25maWd1cmUtdGltZQogbWF5YmUtY29uZmlndXJlLXRpbWU6CiBjb25maWd1cmUtdGltZToKQEAgLTIxNDIzLDYgKzE1ODAyLDIwNCBAQAogCShjZCB0aW1lICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tdGltZSBpbmZvLXRpbWUKK21heWJlLWluZm8tdGltZToKKworaW5mby10aW1lOiBcCisgICAgY29uZmlndXJlLXRpbWUgCisJQFsgLWYgLi90aW1lL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiB0aW1lIiA7IFwKKwkoY2QgdGltZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXRpbWUgZHZpLXRpbWUKK21heWJlLWR2aS10aW1lOgorCitkdmktdGltZTogXAorICAgIGNvbmZpZ3VyZS10aW1lIAorCUBbIC1mIC4vdGltZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiB0aW1lIiA7IFwKKwkoY2QgdGltZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXRpbWUgVEFHUy10aW1lCittYXliZS1UQUdTLXRpbWU6CisKK1RBR1MtdGltZTogXAorICAgIGNvbmZpZ3VyZS10aW1lIAorCUBbIC1mIC4vdGltZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gdGltZSIgOyBcCisJKGNkIHRpbWUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10aW1lIGluc3RhbGwtaW5mby10aW1lCittYXliZS1pbnN0YWxsLWluZm8tdGltZToKKworaW5zdGFsbC1pbmZvLXRpbWU6IFwKKyAgICBjb25maWd1cmUtdGltZSBcCisgICAgaW5mby10aW1lIAorCUBbIC1mIC4vdGltZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiB0aW1lIiA7IFwKKwkoY2QgdGltZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGltZSBpbnN0YWxsY2hlY2stdGltZQorbWF5YmUtaW5zdGFsbGNoZWNrLXRpbWU6CisKK2luc3RhbGxjaGVjay10aW1lOiBcCisgICAgY29uZmlndXJlLXRpbWUgCisJQFsgLWYgLi90aW1lL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHRpbWUiIDsgXAorCShjZCB0aW1lICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXRpbWUgbW9zdGx5Y2xlYW4tdGltZQorbWF5YmUtbW9zdGx5Y2xlYW4tdGltZToKKworbW9zdGx5Y2xlYW4tdGltZTogCisJQFsgLWYgLi90aW1lL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gdGltZSIgOyBcCisJKGNkIHRpbWUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi10aW1lIGNsZWFuLXRpbWUKK21heWJlLWNsZWFuLXRpbWU6CisKK2NsZWFuLXRpbWU6IAorCUBbIC1mIC4vdGltZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIHRpbWUiIDsgXAorCShjZCB0aW1lICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRpbWUgZGlzdGNsZWFuLXRpbWUKK21heWJlLWRpc3RjbGVhbi10aW1lOgorCitkaXN0Y2xlYW4tdGltZTogCisJQFsgLWYgLi90aW1lL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHRpbWUiIDsgXAorCShjZCB0aW1lICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdGltZSBtYWludGFpbmVyLWNsZWFuLXRpbWUKK21heWJlLW1haW50YWluZXItY2xlYW4tdGltZToKKworbWFpbnRhaW5lci1jbGVhbi10aW1lOiAKKwlAWyAtZiAuL3RpbWUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHRpbWUiIDsgXAorCShjZCB0aW1lICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS11dWRlY29kZSBtYXliZS1jb25maWd1cmUtdXVkZWNvZGUKIG1heWJlLWNvbmZpZ3VyZS11dWRlY29kZToKIGNvbmZpZ3VyZS11dWRlY29kZToKQEAgLTIxNDkwLDYgKzE2MDY3LDIwNCBAQAogCShjZCB1dWRlY29kZSAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXV1ZGVjb2RlIGluZm8tdXVkZWNvZGUKK21heWJlLWluZm8tdXVkZWNvZGU6CisKK2luZm8tdXVkZWNvZGU6IFwKKyAgICBjb25maWd1cmUtdXVkZWNvZGUgCisJQFsgLWYgLi91dWRlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gdXVkZWNvZGUiIDsgXAorCShjZCB1dWRlY29kZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXV1ZGVjb2RlIGR2aS11dWRlY29kZQorbWF5YmUtZHZpLXV1ZGVjb2RlOgorCitkdmktdXVkZWNvZGU6IFwKKyAgICBjb25maWd1cmUtdXVkZWNvZGUgCisJQFsgLWYgLi91dWRlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiB1dWRlY29kZSIgOyBcCisJKGNkIHV1ZGVjb2RlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtdXVkZWNvZGUgVEFHUy11dWRlY29kZQorbWF5YmUtVEFHUy11dWRlY29kZToKKworVEFHUy11dWRlY29kZTogXAorICAgIGNvbmZpZ3VyZS11dWRlY29kZSAKKwlAWyAtZiAuL3V1ZGVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiB1dWRlY29kZSIgOyBcCisJKGNkIHV1ZGVjb2RlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdXVkZWNvZGUgaW5zdGFsbC1pbmZvLXV1ZGVjb2RlCittYXliZS1pbnN0YWxsLWluZm8tdXVkZWNvZGU6CisKK2luc3RhbGwtaW5mby11dWRlY29kZTogXAorICAgIGNvbmZpZ3VyZS11dWRlY29kZSBcCisgICAgaW5mby11dWRlY29kZSAKKwlAWyAtZiAuL3V1ZGVjb2RlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHV1ZGVjb2RlIiA7IFwKKwkoY2QgdXVkZWNvZGUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXV1ZGVjb2RlIGluc3RhbGxjaGVjay11dWRlY29kZQorbWF5YmUtaW5zdGFsbGNoZWNrLXV1ZGVjb2RlOgorCitpbnN0YWxsY2hlY2stdXVkZWNvZGU6IFwKKyAgICBjb25maWd1cmUtdXVkZWNvZGUgCisJQFsgLWYgLi91dWRlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiB1dWRlY29kZSIgOyBcCisJKGNkIHV1ZGVjb2RlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXV1ZGVjb2RlIG1vc3RseWNsZWFuLXV1ZGVjb2RlCittYXliZS1tb3N0bHljbGVhbi11dWRlY29kZToKKworbW9zdGx5Y2xlYW4tdXVkZWNvZGU6IAorCUBbIC1mIC4vdXVkZWNvZGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiB1dWRlY29kZSIgOyBcCisJKGNkIHV1ZGVjb2RlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tdXVkZWNvZGUgY2xlYW4tdXVkZWNvZGUKK21heWJlLWNsZWFuLXV1ZGVjb2RlOgorCitjbGVhbi11dWRlY29kZTogCisJQFsgLWYgLi91dWRlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIHV1ZGVjb2RlIiA7IFwKKwkoY2QgdXVkZWNvZGUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdXVkZWNvZGUgZGlzdGNsZWFuLXV1ZGVjb2RlCittYXliZS1kaXN0Y2xlYW4tdXVkZWNvZGU6CisKK2Rpc3RjbGVhbi11dWRlY29kZTogCisJQFsgLWYgLi91dWRlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiB1dWRlY29kZSIgOyBcCisJKGNkIHV1ZGVjb2RlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdXVkZWNvZGUgbWFpbnRhaW5lci1jbGVhbi11dWRlY29kZQorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi11dWRlY29kZToKKworbWFpbnRhaW5lci1jbGVhbi11dWRlY29kZTogCisJQFsgLWYgLi91dWRlY29kZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gdXVkZWNvZGUiIDsgXAorCShjZCB1dWRlY29kZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtd2RpZmYgbWF5YmUtY29uZmlndXJlLXdkaWZmCiBtYXliZS1jb25maWd1cmUtd2RpZmY6CiBjb25maWd1cmUtd2RpZmY6CkBAIC0yMTU1Nyw2ICsxNjMzMiwyMDQgQEAKIAkoY2Qgd2RpZmYgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby13ZGlmZiBpbmZvLXdkaWZmCittYXliZS1pbmZvLXdkaWZmOgorCitpbmZvLXdkaWZmOiBcCisgICAgY29uZmlndXJlLXdkaWZmIAorCUBbIC1mIC4vd2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIHdkaWZmIiA7IFwKKwkoY2Qgd2RpZmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS13ZGlmZiBkdmktd2RpZmYKK21heWJlLWR2aS13ZGlmZjoKKworZHZpLXdkaWZmOiBcCisgICAgY29uZmlndXJlLXdkaWZmIAorCUBbIC1mIC4vd2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gd2RpZmYiIDsgXAorCShjZCB3ZGlmZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXdkaWZmIFRBR1Mtd2RpZmYKK21heWJlLVRBR1Mtd2RpZmY6CisKK1RBR1Mtd2RpZmY6IFwKKyAgICBjb25maWd1cmUtd2RpZmYgCisJQFsgLWYgLi93ZGlmZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gd2RpZmYiIDsgXAorCShjZCB3ZGlmZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXdkaWZmIGluc3RhbGwtaW5mby13ZGlmZgorbWF5YmUtaW5zdGFsbC1pbmZvLXdkaWZmOgorCitpbnN0YWxsLWluZm8td2RpZmY6IFwKKyAgICBjb25maWd1cmUtd2RpZmYgXAorICAgIGluZm8td2RpZmYgCisJQFsgLWYgLi93ZGlmZi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiB3ZGlmZiIgOyBcCisJKGNkIHdkaWZmICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay13ZGlmZiBpbnN0YWxsY2hlY2std2RpZmYKK21heWJlLWluc3RhbGxjaGVjay13ZGlmZjoKKworaW5zdGFsbGNoZWNrLXdkaWZmOiBcCisgICAgY29uZmlndXJlLXdkaWZmIAorCUBbIC1mIC4vd2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gd2RpZmYiIDsgXAorCShjZCB3ZGlmZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi13ZGlmZiBtb3N0bHljbGVhbi13ZGlmZgorbWF5YmUtbW9zdGx5Y2xlYW4td2RpZmY6CisKK21vc3RseWNsZWFuLXdkaWZmOiAKKwlAWyAtZiAuL3dkaWZmL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gd2RpZmYiIDsgXAorCShjZCB3ZGlmZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXdkaWZmIGNsZWFuLXdkaWZmCittYXliZS1jbGVhbi13ZGlmZjoKKworY2xlYW4td2RpZmY6IAorCUBbIC1mIC4vd2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiB3ZGlmZiIgOyBcCisJKGNkIHdkaWZmICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXdkaWZmIGRpc3RjbGVhbi13ZGlmZgorbWF5YmUtZGlzdGNsZWFuLXdkaWZmOgorCitkaXN0Y2xlYW4td2RpZmY6IAorCUBbIC1mIC4vd2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gd2RpZmYiIDsgXAorCShjZCB3ZGlmZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXdkaWZmIG1haW50YWluZXItY2xlYW4td2RpZmYKK21heWJlLW1haW50YWluZXItY2xlYW4td2RpZmY6CisKK21haW50YWluZXItY2xlYW4td2RpZmY6IAorCUBbIC1mIC4vd2RpZmYvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIHdkaWZmIiA7IFwKKwkoY2Qgd2RpZmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXppcCBtYXliZS1jb25maWd1cmUtemlwCiBtYXliZS1jb25maWd1cmUtemlwOgogY29uZmlndXJlLXppcDoKQEAgLTIxNjI3LDYgKzE2NjAwLDIwNCBAQAogCShjZCB6aXAgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby16aXAgaW5mby16aXAKK21heWJlLWluZm8temlwOgorCitpbmZvLXppcDogXAorICAgIGNvbmZpZ3VyZS16aXAgCisJQFsgLWYgLi96aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIHppcCIgOyBcCisJKGNkIHppcCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXppcCBkdmktemlwCittYXliZS1kdmktemlwOgorCitkdmktemlwOiBcCisgICAgY29uZmlndXJlLXppcCAKKwlAWyAtZiAuL3ppcC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiB6aXAiIDsgXAorCShjZCB6aXAgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy16aXAgVEFHUy16aXAKK21heWJlLVRBR1MtemlwOgorCitUQUdTLXppcDogXAorICAgIGNvbmZpZ3VyZS16aXAgCisJQFsgLWYgLi96aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIHppcCIgOyBcCisJKGNkIHppcCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXppcCBpbnN0YWxsLWluZm8temlwCittYXliZS1pbnN0YWxsLWluZm8temlwOgorCitpbnN0YWxsLWluZm8temlwOiBcCisgICAgY29uZmlndXJlLXppcCBcCisgICAgaW5mby16aXAgCisJQFsgLWYgLi96aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gemlwIiA7IFwKKwkoY2QgemlwICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay16aXAgaW5zdGFsbGNoZWNrLXppcAorbWF5YmUtaW5zdGFsbGNoZWNrLXppcDoKKworaW5zdGFsbGNoZWNrLXppcDogXAorICAgIGNvbmZpZ3VyZS16aXAgCisJQFsgLWYgLi96aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gemlwIiA7IFwKKwkoY2QgemlwICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXppcCBtb3N0bHljbGVhbi16aXAKK21heWJlLW1vc3RseWNsZWFuLXppcDoKKworbW9zdGx5Y2xlYW4temlwOiAKKwlAWyAtZiAuL3ppcC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHppcCIgOyBcCisJKGNkIHppcCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXppcCBjbGVhbi16aXAKK21heWJlLWNsZWFuLXppcDoKKworY2xlYW4temlwOiAKKwlAWyAtZiAuL3ppcC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluIHppcCIgOyBcCisJKGNkIHppcCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi16aXAgZGlzdGNsZWFuLXppcAorbWF5YmUtZGlzdGNsZWFuLXppcDoKKworZGlzdGNsZWFuLXppcDogCisJQFsgLWYgLi96aXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gemlwIiA7IFwKKwkoY2QgemlwICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4temlwIG1haW50YWluZXItY2xlYW4temlwCittYXliZS1tYWludGFpbmVyLWNsZWFuLXppcDoKKworbWFpbnRhaW5lci1jbGVhbi16aXA6IAorCUBbIC1mIC4vemlwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiB6aXAiIDsgXAorCShjZCB6aXAgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXpsaWIgbWF5YmUtY29uZmlndXJlLXpsaWIKIG1heWJlLWNvbmZpZ3VyZS16bGliOgogY29uZmlndXJlLXpsaWI6CkBAIC0yMTY4Niw2ICsxNjg1NywyMDQgQEAKIGluc3RhbGwtemxpYjoKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXpsaWIgaW5mby16bGliCittYXliZS1pbmZvLXpsaWI6CisKK2luZm8temxpYjogXAorICAgIGNvbmZpZ3VyZS16bGliIAorCUBbIC1mIC4vemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gemxpYiIgOyBcCisJKGNkIHpsaWIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS16bGliIGR2aS16bGliCittYXliZS1kdmktemxpYjoKKworZHZpLXpsaWI6IFwKKyAgICBjb25maWd1cmUtemxpYiAKKwlAWyAtZiAuL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gemxpYiIgOyBcCisJKGNkIHpsaWIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy16bGliIFRBR1MtemxpYgorbWF5YmUtVEFHUy16bGliOgorCitUQUdTLXpsaWI6IFwKKyAgICBjb25maWd1cmUtemxpYiAKKwlAWyAtZiAuL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIHpsaWIiIDsgXAorCShjZCB6bGliICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8temxpYiBpbnN0YWxsLWluZm8temxpYgorbWF5YmUtaW5zdGFsbC1pbmZvLXpsaWI6CisKK2luc3RhbGwtaW5mby16bGliOiBcCisgICAgY29uZmlndXJlLXpsaWIgXAorICAgIGluZm8temxpYiAKKwlAWyAtZiAuL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gemxpYiIgOyBcCisJKGNkIHpsaWIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXpsaWIgaW5zdGFsbGNoZWNrLXpsaWIKK21heWJlLWluc3RhbGxjaGVjay16bGliOgorCitpbnN0YWxsY2hlY2stemxpYjogXAorICAgIGNvbmZpZ3VyZS16bGliIAorCUBbIC1mIC4vemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiB6bGliIiA7IFwKKwkoY2QgemxpYiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi16bGliIG1vc3RseWNsZWFuLXpsaWIKK21heWJlLW1vc3RseWNsZWFuLXpsaWI6CisKK21vc3RseWNsZWFuLXpsaWI6IAorCUBbIC1mIC4vemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHpsaWIiIDsgXAorCShjZCB6bGliICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4temxpYiBjbGVhbi16bGliCittYXliZS1jbGVhbi16bGliOgorCitjbGVhbi16bGliOiAKKwlAWyAtZiAuL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiB6bGliIiA7IFwKKwkoY2QgemxpYiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi16bGliIGRpc3RjbGVhbi16bGliCittYXliZS1kaXN0Y2xlYW4temxpYjoKKworZGlzdGNsZWFuLXpsaWI6IAorCUBbIC1mIC4vemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiB6bGliIiA7IFwKKwkoY2QgemxpYiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXpsaWIgbWFpbnRhaW5lci1jbGVhbi16bGliCittYXliZS1tYWludGFpbmVyLWNsZWFuLXpsaWI6CisKK21haW50YWluZXItY2xlYW4temxpYjogCisJQFsgLWYgLi96bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiB6bGliIiA7IFwKKwkoY2QgemxpYiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtZ2RiIG1heWJlLWNvbmZpZ3VyZS1nZGIKIG1heWJlLWNvbmZpZ3VyZS1nZGI6CiBjb25maWd1cmUtZ2RiOgpAQCAtMjE3NTMsNiArMTcxMjIsMjA0IEBACiAJKGNkIGdkYiAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgJChYMTFfRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWdkYiBpbmZvLWdkYgorbWF5YmUtaW5mby1nZGI6CisKK2luZm8tZ2RiOiBcCisgICAgY29uZmlndXJlLWdkYiAKKwlAWyAtZiAuL2dkYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gZ2RiIiA7IFwKKwkoY2QgZ2RiICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktZ2RiIGR2aS1nZGIKK21heWJlLWR2aS1nZGI6CisKK2R2aS1nZGI6IFwKKyAgICBjb25maWd1cmUtZ2RiIAorCUBbIC1mIC4vZ2RiL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGdkYiIgOyBcCisJKGNkIGdkYiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWdkYiBUQUdTLWdkYgorbWF5YmUtVEFHUy1nZGI6CisKK1RBR1MtZ2RiOiBcCisgICAgY29uZmlndXJlLWdkYiAKKwlAWyAtZiAuL2dkYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gZ2RiIiA7IFwKKwkoY2QgZ2RiICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZ2RiIGluc3RhbGwtaW5mby1nZGIKK21heWJlLWluc3RhbGwtaW5mby1nZGI6CisKK2luc3RhbGwtaW5mby1nZGI6IFwKKyAgICBjb25maWd1cmUtZ2RiIFwKKyAgICBpbmZvLWdkYiAKKwlAWyAtZiAuL2dkYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBnZGIiIDsgXAorCShjZCBnZGIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWdkYiBpbnN0YWxsY2hlY2stZ2RiCittYXliZS1pbnN0YWxsY2hlY2stZ2RiOgorCitpbnN0YWxsY2hlY2stZ2RiOiBcCisgICAgY29uZmlndXJlLWdkYiAKKwlAWyAtZiAuL2dkYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBnZGIiIDsgXAorCShjZCBnZGIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZ2RiIG1vc3RseWNsZWFuLWdkYgorbWF5YmUtbW9zdGx5Y2xlYW4tZ2RiOgorCittb3N0bHljbGVhbi1nZGI6IAorCUBbIC1mIC4vZ2RiL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZ2RiIiA7IFwKKwkoY2QgZ2RiICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tZ2RiIGNsZWFuLWdkYgorbWF5YmUtY2xlYW4tZ2RiOgorCitjbGVhbi1nZGI6IAorCUBbIC1mIC4vZ2RiL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gZ2RiIiA7IFwKKwkoY2QgZ2RiICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWdkYiBkaXN0Y2xlYW4tZ2RiCittYXliZS1kaXN0Y2xlYW4tZ2RiOgorCitkaXN0Y2xlYW4tZ2RiOiAKKwlAWyAtZiAuL2dkYi9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBnZGIiIDsgXAorCShjZCBnZGIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1nZGIgbWFpbnRhaW5lci1jbGVhbi1nZGIKK21heWJlLW1haW50YWluZXItY2xlYW4tZ2RiOgorCittYWludGFpbmVyLWNsZWFuLWdkYjogCisJQFsgLWYgLi9nZGIvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGdkYiIgOyBcCisJKGNkIGdkYiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtZXhwZWN0IG1heWJlLWNvbmZpZ3VyZS1leHBlY3QKIG1heWJlLWNvbmZpZ3VyZS1leHBlY3Q6CiBjb25maWd1cmUtZXhwZWN0OgpAQCAtMjE4MjAsNiArMTczODcsMjA0IEBACiAJKGNkIGV4cGVjdCAmJiAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgJChYMTFfRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWV4cGVjdCBpbmZvLWV4cGVjdAorbWF5YmUtaW5mby1leHBlY3Q6CisKK2luZm8tZXhwZWN0OiBcCisgICAgY29uZmlndXJlLWV4cGVjdCAKKwlAWyAtZiAuL2V4cGVjdC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gZXhwZWN0IiA7IFwKKwkoY2QgZXhwZWN0ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktZXhwZWN0IGR2aS1leHBlY3QKK21heWJlLWR2aS1leHBlY3Q6CisKK2R2aS1leHBlY3Q6IFwKKyAgICBjb25maWd1cmUtZXhwZWN0IAorCUBbIC1mIC4vZXhwZWN0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGV4cGVjdCIgOyBcCisJKGNkIGV4cGVjdCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWV4cGVjdCBUQUdTLWV4cGVjdAorbWF5YmUtVEFHUy1leHBlY3Q6CisKK1RBR1MtZXhwZWN0OiBcCisgICAgY29uZmlndXJlLWV4cGVjdCAKKwlAWyAtZiAuL2V4cGVjdC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gZXhwZWN0IiA7IFwKKwkoY2QgZXhwZWN0ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZXhwZWN0IGluc3RhbGwtaW5mby1leHBlY3QKK21heWJlLWluc3RhbGwtaW5mby1leHBlY3Q6CisKK2luc3RhbGwtaW5mby1leHBlY3Q6IFwKKyAgICBjb25maWd1cmUtZXhwZWN0IFwKKyAgICBpbmZvLWV4cGVjdCAKKwlAWyAtZiAuL2V4cGVjdC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBleHBlY3QiIDsgXAorCShjZCBleHBlY3QgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWV4cGVjdCBpbnN0YWxsY2hlY2stZXhwZWN0CittYXliZS1pbnN0YWxsY2hlY2stZXhwZWN0OgorCitpbnN0YWxsY2hlY2stZXhwZWN0OiBcCisgICAgY29uZmlndXJlLWV4cGVjdCAKKwlAWyAtZiAuL2V4cGVjdC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBleHBlY3QiIDsgXAorCShjZCBleHBlY3QgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZXhwZWN0IG1vc3RseWNsZWFuLWV4cGVjdAorbWF5YmUtbW9zdGx5Y2xlYW4tZXhwZWN0OgorCittb3N0bHljbGVhbi1leHBlY3Q6IAorCUBbIC1mIC4vZXhwZWN0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZXhwZWN0IiA7IFwKKwkoY2QgZXhwZWN0ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tZXhwZWN0IGNsZWFuLWV4cGVjdAorbWF5YmUtY2xlYW4tZXhwZWN0OgorCitjbGVhbi1leHBlY3Q6IAorCUBbIC1mIC4vZXhwZWN0L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gZXhwZWN0IiA7IFwKKwkoY2QgZXhwZWN0ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWV4cGVjdCBkaXN0Y2xlYW4tZXhwZWN0CittYXliZS1kaXN0Y2xlYW4tZXhwZWN0OgorCitkaXN0Y2xlYW4tZXhwZWN0OiAKKwlAWyAtZiAuL2V4cGVjdC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBleHBlY3QiIDsgXAorCShjZCBleHBlY3QgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1leHBlY3QgbWFpbnRhaW5lci1jbGVhbi1leHBlY3QKK21heWJlLW1haW50YWluZXItY2xlYW4tZXhwZWN0OgorCittYWludGFpbmVyLWNsZWFuLWV4cGVjdDogCisJQFsgLWYgLi9leHBlY3QvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGV4cGVjdCIgOyBcCisJKGNkIGV4cGVjdCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtZ3VpbGUgbWF5YmUtY29uZmlndXJlLWd1aWxlCiBtYXliZS1jb25maWd1cmUtZ3VpbGU6CiBjb25maWd1cmUtZ3VpbGU6CkBAIC0yMTg4Nyw2ICsxNzY1MiwyMDQgQEAKIAkoY2QgZ3VpbGUgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpICQoWDExX0ZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1ndWlsZSBpbmZvLWd1aWxlCittYXliZS1pbmZvLWd1aWxlOgorCitpbmZvLWd1aWxlOiBcCisgICAgY29uZmlndXJlLWd1aWxlIAorCUBbIC1mIC4vZ3VpbGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGd1aWxlIiA7IFwKKwkoY2QgZ3VpbGUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS1ndWlsZSBkdmktZ3VpbGUKK21heWJlLWR2aS1ndWlsZToKKworZHZpLWd1aWxlOiBcCisgICAgY29uZmlndXJlLWd1aWxlIAorCUBbIC1mIC4vZ3VpbGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gZ3VpbGUiIDsgXAorCShjZCBndWlsZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWd1aWxlIFRBR1MtZ3VpbGUKK21heWJlLVRBR1MtZ3VpbGU6CisKK1RBR1MtZ3VpbGU6IFwKKyAgICBjb25maWd1cmUtZ3VpbGUgCisJQFsgLWYgLi9ndWlsZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gZ3VpbGUiIDsgXAorCShjZCBndWlsZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWd1aWxlIGluc3RhbGwtaW5mby1ndWlsZQorbWF5YmUtaW5zdGFsbC1pbmZvLWd1aWxlOgorCitpbnN0YWxsLWluZm8tZ3VpbGU6IFwKKyAgICBjb25maWd1cmUtZ3VpbGUgXAorICAgIGluZm8tZ3VpbGUgCisJQFsgLWYgLi9ndWlsZS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBndWlsZSIgOyBcCisJKGNkIGd1aWxlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1ndWlsZSBpbnN0YWxsY2hlY2stZ3VpbGUKK21heWJlLWluc3RhbGxjaGVjay1ndWlsZToKKworaW5zdGFsbGNoZWNrLWd1aWxlOiBcCisgICAgY29uZmlndXJlLWd1aWxlIAorCUBbIC1mIC4vZ3VpbGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gZ3VpbGUiIDsgXAorCShjZCBndWlsZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi1ndWlsZSBtb3N0bHljbGVhbi1ndWlsZQorbWF5YmUtbW9zdGx5Y2xlYW4tZ3VpbGU6CisKK21vc3RseWNsZWFuLWd1aWxlOiAKKwlAWyAtZiAuL2d1aWxlL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZ3VpbGUiIDsgXAorCShjZCBndWlsZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWd1aWxlIGNsZWFuLWd1aWxlCittYXliZS1jbGVhbi1ndWlsZToKKworY2xlYW4tZ3VpbGU6IAorCUBbIC1mIC4vZ3VpbGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiBndWlsZSIgOyBcCisJKGNkIGd1aWxlICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWd1aWxlIGRpc3RjbGVhbi1ndWlsZQorbWF5YmUtZGlzdGNsZWFuLWd1aWxlOgorCitkaXN0Y2xlYW4tZ3VpbGU6IAorCUBbIC1mIC4vZ3VpbGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gZ3VpbGUiIDsgXAorCShjZCBndWlsZSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWd1aWxlIG1haW50YWluZXItY2xlYW4tZ3VpbGUKK21heWJlLW1haW50YWluZXItY2xlYW4tZ3VpbGU6CisKK21haW50YWluZXItY2xlYW4tZ3VpbGU6IAorCUBbIC1mIC4vZ3VpbGUvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGd1aWxlIiA7IFwKKwkoY2QgZ3VpbGUgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXRrIG1heWJlLWNvbmZpZ3VyZS10awogbWF5YmUtY29uZmlndXJlLXRrOgogY29uZmlndXJlLXRrOgpAQCAtMjE5NTQsNiArMTc5MTcsMjA0IEBACiAJKGNkIHRrICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSAkKFgxMV9GTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tdGsgaW5mby10aworbWF5YmUtaW5mby10azoKKworaW5mby10azogXAorICAgIGNvbmZpZ3VyZS10ayAKKwlAWyAtZiAuL3RrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiB0ayIgOyBcCisJKGNkIHRrICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktdGsgZHZpLXRrCittYXliZS1kdmktdGs6CisKK2R2aS10azogXAorICAgIGNvbmZpZ3VyZS10ayAKKwlAWyAtZiAuL3RrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIHRrIiA7IFwKKwkoY2QgdGsgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy10ayBUQUdTLXRrCittYXliZS1UQUdTLXRrOgorCitUQUdTLXRrOiBcCisgICAgY29uZmlndXJlLXRrIAorCUBbIC1mIC4vdGsvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIHRrIiA7IFwKKwkoY2QgdGsgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10ayBpbnN0YWxsLWluZm8tdGsKK21heWJlLWluc3RhbGwtaW5mby10azoKKworaW5zdGFsbC1pbmZvLXRrOiBcCisgICAgY29uZmlndXJlLXRrIFwKKyAgICBpbmZvLXRrIAorCUBbIC1mIC4vdGsvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gdGsiIDsgXAorCShjZCB0ayAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGsgaW5zdGFsbGNoZWNrLXRrCittYXliZS1pbnN0YWxsY2hlY2stdGs6CisKK2luc3RhbGxjaGVjay10azogXAorICAgIGNvbmZpZ3VyZS10ayAKKwlAWyAtZiAuL3RrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHRrIiA7IFwKKwkoY2QgdGsgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGsgbW9zdGx5Y2xlYW4tdGsKK21heWJlLW1vc3RseWNsZWFuLXRrOgorCittb3N0bHljbGVhbi10azogCisJQFsgLWYgLi90ay9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHRrIiA7IFwKKwkoY2QgdGsgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi10ayBjbGVhbi10aworbWF5YmUtY2xlYW4tdGs6CisKK2NsZWFuLXRrOiAKKwlAWyAtZiAuL3RrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gdGsiIDsgXAorCShjZCB0ayAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10ayBkaXN0Y2xlYW4tdGsKK21heWJlLWRpc3RjbGVhbi10azoKKworZGlzdGNsZWFuLXRrOiAKKwlAWyAtZiAuL3RrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHRrIiA7IFwKKwkoY2QgdGsgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10ayBtYWludGFpbmVyLWNsZWFuLXRrCittYXliZS1tYWludGFpbmVyLWNsZWFuLXRrOgorCittYWludGFpbmVyLWNsZWFuLXRrOiAKKwlAWyAtZiAuL3RrL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiB0ayIgOyBcCisJKGNkIHRrICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS10aXggbWF5YmUtY29uZmlndXJlLXRpeAogbWF5YmUtY29uZmlndXJlLXRpeDoKIGNvbmZpZ3VyZS10aXg6CkBAIC0yMjAyMSw2ICsxODE4MiwyMDQgQEAKIAkoY2QgdGl4ICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSAkKFgxMV9GTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tdGl4IGluZm8tdGl4CittYXliZS1pbmZvLXRpeDoKKworaW5mby10aXg6IFwKKyAgICBjb25maWd1cmUtdGl4IAorCUBbIC1mIC4vdGl4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiB0aXgiIDsgXAorCShjZCB0aXggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS10aXggZHZpLXRpeAorbWF5YmUtZHZpLXRpeDoKKworZHZpLXRpeDogXAorICAgIGNvbmZpZ3VyZS10aXggCisJQFsgLWYgLi90aXgvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBkdmkgaW4gdGl4IiA7IFwKKwkoY2QgdGl4ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtdGl4IFRBR1MtdGl4CittYXliZS1UQUdTLXRpeDoKKworVEFHUy10aXg6IFwKKyAgICBjb25maWd1cmUtdGl4IAorCUBbIC1mIC4vdGl4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiB0aXgiIDsgXAorCShjZCB0aXggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10aXggaW5zdGFsbC1pbmZvLXRpeAorbWF5YmUtaW5zdGFsbC1pbmZvLXRpeDoKKworaW5zdGFsbC1pbmZvLXRpeDogXAorICAgIGNvbmZpZ3VyZS10aXggXAorICAgIGluZm8tdGl4IAorCUBbIC1mIC4vdGl4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIHRpeCIgOyBcCisJKGNkIHRpeCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGl4IGluc3RhbGxjaGVjay10aXgKK21heWJlLWluc3RhbGxjaGVjay10aXg6CisKK2luc3RhbGxjaGVjay10aXg6IFwKKyAgICBjb25maWd1cmUtdGl4IAorCUBbIC1mIC4vdGl4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHRpeCIgOyBcCisJKGNkIHRpeCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10aXggbW9zdGx5Y2xlYW4tdGl4CittYXliZS1tb3N0bHljbGVhbi10aXg6CisKK21vc3RseWNsZWFuLXRpeDogCisJQFsgLWYgLi90aXgvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiB0aXgiIDsgXAorCShjZCB0aXggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi10aXggY2xlYW4tdGl4CittYXliZS1jbGVhbi10aXg6CisKK2NsZWFuLXRpeDogCisJQFsgLWYgLi90aXgvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiB0aXgiIDsgXAorCShjZCB0aXggJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGl4IGRpc3RjbGVhbi10aXgKK21heWJlLWRpc3RjbGVhbi10aXg6CisKK2Rpc3RjbGVhbi10aXg6IAorCUBbIC1mIC4vdGl4L01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHRpeCIgOyBcCisJKGNkIHRpeCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRpeCBtYWludGFpbmVyLWNsZWFuLXRpeAorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10aXg6CisKK21haW50YWluZXItY2xlYW4tdGl4OiAKKwlAWyAtZiAuL3RpeC9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gdGl4IiA7IFwKKwkoY2QgdGl4ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS1saWJ0ZXJtY2FwIG1heWJlLWNvbmZpZ3VyZS1saWJ0ZXJtY2FwCiBtYXliZS1jb25maWd1cmUtbGlidGVybWNhcDoKIGNvbmZpZ3VyZS1saWJ0ZXJtY2FwOgpAQCAtMjIwODQsNiArMTg0NDMsMTQ4IEBACiAJKGNkIGxpYnRlcm1jYXAgJiYgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby1saWJ0ZXJtY2FwIGluZm8tbGlidGVybWNhcAorbWF5YmUtaW5mby1saWJ0ZXJtY2FwOgorCitpbmZvLWxpYnRlcm1jYXA6IFwKKyAgICBjb25maWd1cmUtbGlidGVybWNhcCAKKwlAWyAtZiAuL2xpYnRlcm1jYXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbmZvIGluIGxpYnRlcm1jYXAiIDsgXAorCShjZCBsaWJ0ZXJtY2FwICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktbGlidGVybWNhcCBkdmktbGlidGVybWNhcAorbWF5YmUtZHZpLWxpYnRlcm1jYXA6CisKK2R2aS1saWJ0ZXJtY2FwOiBcCisgICAgY29uZmlndXJlLWxpYnRlcm1jYXAgCisJQFsgLWYgLi9saWJ0ZXJtY2FwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGxpYnRlcm1jYXAiIDsgXAorCShjZCBsaWJ0ZXJtY2FwICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtbGlidGVybWNhcCBUQUdTLWxpYnRlcm1jYXAKK21heWJlLVRBR1MtbGlidGVybWNhcDoKKworVEFHUy1saWJ0ZXJtY2FwOiBcCisgICAgY29uZmlndXJlLWxpYnRlcm1jYXAgCisJQFsgLWYgLi9saWJ0ZXJtY2FwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiBsaWJ0ZXJtY2FwIiA7IFwKKwkoY2QgbGlidGVybWNhcCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLWxpYnRlcm1jYXAgaW5zdGFsbC1pbmZvLWxpYnRlcm1jYXAKK21heWJlLWluc3RhbGwtaW5mby1saWJ0ZXJtY2FwOgorCitpbnN0YWxsLWluZm8tbGlidGVybWNhcDogXAorICAgIGNvbmZpZ3VyZS1saWJ0ZXJtY2FwIFwKKyAgICBpbmZvLWxpYnRlcm1jYXAgCisJQFsgLWYgLi9saWJ0ZXJtY2FwL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluIGxpYnRlcm1jYXAiIDsgXAorCShjZCBsaWJ0ZXJtY2FwICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay1saWJ0ZXJtY2FwIGluc3RhbGxjaGVjay1saWJ0ZXJtY2FwCittYXliZS1pbnN0YWxsY2hlY2stbGlidGVybWNhcDoKKworaW5zdGFsbGNoZWNrLWxpYnRlcm1jYXA6IFwKKyAgICBjb25maWd1cmUtbGlidGVybWNhcCAKKwlAWyAtZiAuL2xpYnRlcm1jYXAvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gbGlidGVybWNhcCIgOyBcCisJKGNkIGxpYnRlcm1jYXAgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tbGlidGVybWNhcCBtb3N0bHljbGVhbi1saWJ0ZXJtY2FwCittYXliZS1tb3N0bHljbGVhbi1saWJ0ZXJtY2FwOgorCisjIGxpYnRlcm1jYXAgZG9lc24ndCBzdXBwb3J0IG1vc3RseWNsZWFuLgorbW9zdGx5Y2xlYW4tbGlidGVybWNhcDoKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLWxpYnRlcm1jYXAgY2xlYW4tbGlidGVybWNhcAorbWF5YmUtY2xlYW4tbGlidGVybWNhcDoKKworIyBsaWJ0ZXJtY2FwIGRvZXNuJ3Qgc3VwcG9ydCBjbGVhbi4KK2NsZWFuLWxpYnRlcm1jYXA6CisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tbGlidGVybWNhcCBkaXN0Y2xlYW4tbGlidGVybWNhcAorbWF5YmUtZGlzdGNsZWFuLWxpYnRlcm1jYXA6CisKKyMgbGlidGVybWNhcCBkb2Vzbid0IHN1cHBvcnQgZGlzdGNsZWFuLgorZGlzdGNsZWFuLWxpYnRlcm1jYXA6CisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLWxpYnRlcm1jYXAgbWFpbnRhaW5lci1jbGVhbi1saWJ0ZXJtY2FwCittYXliZS1tYWludGFpbmVyLWNsZWFuLWxpYnRlcm1jYXA6CisKKyMgbGlidGVybWNhcCBkb2Vzbid0IHN1cHBvcnQgbWFpbnRhaW5lci1jbGVhbi4KK21haW50YWluZXItY2xlYW4tbGlidGVybWNhcDoKKworCisKIC5QSE9OWTogY29uZmlndXJlLXV0aWxzIG1heWJlLWNvbmZpZ3VyZS11dGlscwogbWF5YmUtY29uZmlndXJlLXV0aWxzOgogY29uZmlndXJlLXV0aWxzOgpAQCAtMjIxNDcsNiArMTg2NDgsMjA0IEBACiAJKGNkIHV0aWxzICYmICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tdXRpbHMgaW5mby11dGlscworbWF5YmUtaW5mby11dGlsczoKKworaW5mby11dGlsczogXAorICAgIGNvbmZpZ3VyZS11dGlscyAKKwlAWyAtZiAuL3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiB1dGlscyIgOyBcCisJKGNkIHV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktdXRpbHMgZHZpLXV0aWxzCittYXliZS1kdmktdXRpbHM6CisKK2R2aS11dGlsczogXAorICAgIGNvbmZpZ3VyZS11dGlscyAKKwlAWyAtZiAuL3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIHV0aWxzIiA7IFwKKwkoY2QgdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy11dGlscyBUQUdTLXV0aWxzCittYXliZS1UQUdTLXV0aWxzOgorCitUQUdTLXV0aWxzOiBcCisgICAgY29uZmlndXJlLXV0aWxzIAorCUBbIC1mIC4vdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBUQUdTIGluIHV0aWxzIiA7IFwKKwkoY2QgdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby11dGlscyBpbnN0YWxsLWluZm8tdXRpbHMKK21heWJlLWluc3RhbGwtaW5mby11dGlsczoKKworaW5zdGFsbC1pbmZvLXV0aWxzOiBcCisgICAgY29uZmlndXJlLXV0aWxzIFwKKyAgICBpbmZvLXV0aWxzIAorCUBbIC1mIC4vdXRpbHMvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0hPU1RfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gdXRpbHMiIDsgXAorCShjZCB1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdXRpbHMgaW5zdGFsbGNoZWNrLXV0aWxzCittYXliZS1pbnN0YWxsY2hlY2stdXRpbHM6CisKK2luc3RhbGxjaGVjay11dGlsczogXAorICAgIGNvbmZpZ3VyZS11dGlscyAKKwlAWyAtZiAuL3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluIHV0aWxzIiA7IFwKKwkoY2QgdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdXRpbHMgbW9zdGx5Y2xlYW4tdXRpbHMKK21heWJlLW1vc3RseWNsZWFuLXV0aWxzOgorCittb3N0bHljbGVhbi11dGlsczogCisJQFsgLWYgLi91dGlscy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluIHV0aWxzIiA7IFwKKwkoY2QgdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi11dGlscyBjbGVhbi11dGlscworbWF5YmUtY2xlYW4tdXRpbHM6CisKK2NsZWFuLXV0aWxzOiAKKwlAWyAtZiAuL3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gdXRpbHMiIDsgXAorCShjZCB1dGlscyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi11dGlscyBkaXN0Y2xlYW4tdXRpbHMKK21heWJlLWRpc3RjbGVhbi11dGlsczoKKworZGlzdGNsZWFuLXV0aWxzOiAKKwlAWyAtZiAuL3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluIHV0aWxzIiA7IFwKKwkoY2QgdXRpbHMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi11dGlscyBtYWludGFpbmVyLWNsZWFuLXV0aWxzCittYXliZS1tYWludGFpbmVyLWNsZWFuLXV0aWxzOgorCittYWludGFpbmVyLWNsZWFuLXV0aWxzOiAKKwlAWyAtZiAuL3V0aWxzL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiB1dGlscyIgOyBcCisJKGNkIHV0aWxzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIE1vZHVsZXMgd2hpY2ggcnVuIG9uIHRoZSB0YXJnZXQgbWFjaGluZQpAQCAtMjIyMzMsNiArMTg5MzIsMjA0IEBACiAJICAkKE1BS0UpICQoVEFSR0VUX0ZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby10YXJnZXQtbGlic3RkYysrLXYzIGluZm8tdGFyZ2V0LWxpYnN0ZGMrKy12MworbWF5YmUtaW5mby10YXJnZXQtbGlic3RkYysrLXYzOgorCitpbmZvLXRhcmdldC1saWJzdGRjKystdjM6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYnN0ZGMrKy12MyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12My9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC1saWJzdGRjKystdjMgZHZpLXRhcmdldC1saWJzdGRjKystdjMKK21heWJlLWR2aS10YXJnZXQtbGlic3RkYysrLXYzOgorCitkdmktdGFyZ2V0LWxpYnN0ZGMrKy12MzogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlic3RkYysrLXYzIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy10YXJnZXQtbGlic3RkYysrLXYzIFRBR1MtdGFyZ2V0LWxpYnN0ZGMrKy12MworbWF5YmUtVEFHUy10YXJnZXQtbGlic3RkYysrLXYzOgorCitUQUdTLXRhcmdldC1saWJzdGRjKystdjM6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYnN0ZGMrKy12MyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12My9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBUQUdTIGluICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1saWJzdGRjKystdjMgaW5zdGFsbC1pbmZvLXRhcmdldC1saWJzdGRjKystdjMKK21heWJlLWluc3RhbGwtaW5mby10YXJnZXQtbGlic3RkYysrLXYzOgorCitpbnN0YWxsLWluZm8tdGFyZ2V0LWxpYnN0ZGMrKy12MzogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlic3RkYysrLXYzIFwKKyAgICBpbmZvLXRhcmdldC1saWJzdGRjKystdjMgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYnN0ZGMrKy12MyBpbnN0YWxsY2hlY2stdGFyZ2V0LWxpYnN0ZGMrKy12MworbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJzdGRjKystdjM6CisKK2luc3RhbGxjaGVjay10YXJnZXQtbGlic3RkYysrLXYzOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJzdGRjKystdjMgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGlic3RkYysrLXYzIG1vc3RseWNsZWFuLXRhcmdldC1saWJzdGRjKystdjMKK21heWJlLW1vc3RseWNsZWFuLXRhcmdldC1saWJzdGRjKystdjM6CisKK21vc3RseWNsZWFuLXRhcmdldC1saWJzdGRjKystdjM6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXRhcmdldC1saWJzdGRjKystdjMgY2xlYW4tdGFyZ2V0LWxpYnN0ZGMrKy12MworbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYnN0ZGMrKy12MzoKKworY2xlYW4tdGFyZ2V0LWxpYnN0ZGMrKy12MzogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1saWJzdGRjKystdjMgZGlzdGNsZWFuLXRhcmdldC1saWJzdGRjKystdjMKK21heWJlLWRpc3RjbGVhbi10YXJnZXQtbGlic3RkYysrLXYzOgorCitkaXN0Y2xlYW4tdGFyZ2V0LWxpYnN0ZGMrKy12MzogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGlic3RkYysrLXYzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJzdGRjKystdjMgbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGlic3RkYysrLXYzCittYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJzdGRjKystdjM6CisKK21haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYnN0ZGMrKy12MzogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYnN0ZGMrKy12MyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJzdGRjKystdjMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXRhcmdldC1uZXdsaWIgbWF5YmUtY29uZmlndXJlLXRhcmdldC1uZXdsaWIKIG1heWJlLWNvbmZpZ3VyZS10YXJnZXQtbmV3bGliOgogCkBAIC0yMjMxMyw2ICsxOTIxMCwyMDQgQEAKIAkgICQoTUFLRSkgJChUQVJHRVRfRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXRhcmdldC1uZXdsaWIgaW5mby10YXJnZXQtbmV3bGliCittYXliZS1pbmZvLXRhcmdldC1uZXdsaWI6CisKK2luZm8tdGFyZ2V0LW5ld2xpYjogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbmV3bGliIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbmV3bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9uZXdsaWIiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbmV3bGliICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktdGFyZ2V0LW5ld2xpYiBkdmktdGFyZ2V0LW5ld2xpYgorbWF5YmUtZHZpLXRhcmdldC1uZXdsaWI6CisKK2R2aS10YXJnZXQtbmV3bGliOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1uZXdsaWIgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9uZXdsaWIvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgZHZpIGluICQoVEFSR0VUX1NVQkRJUikvbmV3bGliIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL25ld2xpYiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXRhcmdldC1uZXdsaWIgVEFHUy10YXJnZXQtbmV3bGliCittYXliZS1UQUdTLXRhcmdldC1uZXdsaWI6CisKK1RBR1MtdGFyZ2V0LW5ld2xpYjogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbmV3bGliIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbmV3bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gJChUQVJHRVRfU1VCRElSKS9uZXdsaWIiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbmV3bGliICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LW5ld2xpYiBpbnN0YWxsLWluZm8tdGFyZ2V0LW5ld2xpYgorbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1uZXdsaWI6CisKK2luc3RhbGwtaW5mby10YXJnZXQtbmV3bGliOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1uZXdsaWIgXAorICAgIGluZm8tdGFyZ2V0LW5ld2xpYiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL25ld2xpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9uZXdsaWIiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbmV3bGliICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbmV3bGliIGluc3RhbGxjaGVjay10YXJnZXQtbmV3bGliCittYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LW5ld2xpYjoKKworaW5zdGFsbGNoZWNrLXRhcmdldC1uZXdsaWI6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LW5ld2xpYiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL25ld2xpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gJChUQVJHRVRfU1VCRElSKS9uZXdsaWIiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbmV3bGliICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1uZXdsaWIgbW9zdGx5Y2xlYW4tdGFyZ2V0LW5ld2xpYgorbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LW5ld2xpYjoKKworbW9zdGx5Y2xlYW4tdGFyZ2V0LW5ld2xpYjogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9uZXdsaWIvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9uZXdsaWIiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbmV3bGliICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tdGFyZ2V0LW5ld2xpYiBjbGVhbi10YXJnZXQtbmV3bGliCittYXliZS1jbGVhbi10YXJnZXQtbmV3bGliOgorCitjbGVhbi10YXJnZXQtbmV3bGliOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL25ld2xpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL25ld2xpYiIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9uZXdsaWIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LW5ld2xpYiBkaXN0Y2xlYW4tdGFyZ2V0LW5ld2xpYgorbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1uZXdsaWI6CisKK2Rpc3RjbGVhbi10YXJnZXQtbmV3bGliOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL25ld2xpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9uZXdsaWIiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbmV3bGliICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LW5ld2xpYiBtYWludGFpbmVyLWNsZWFuLXRhcmdldC1uZXdsaWIKK21heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LW5ld2xpYjoKKworbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbmV3bGliOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL25ld2xpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbmV3bGliIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL25ld2xpYiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtdGFyZ2V0LWxpYmYyYyBtYXliZS1jb25maWd1cmUtdGFyZ2V0LWxpYmYyYwogbWF5YmUtY29uZmlndXJlLXRhcmdldC1saWJmMmM6CiAKQEAgLTIyMzkzLDYgKzE5NDg4LDIwNCBAQAogCSAgJChNQUtFKSAkKFRBUkdFVF9GTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tdGFyZ2V0LWxpYmYyYyBpbmZvLXRhcmdldC1saWJmMmMKK21heWJlLWluZm8tdGFyZ2V0LWxpYmYyYzoKKworaW5mby10YXJnZXQtbGliZjJjOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJmMmMgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJmMmMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmMmMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtbGliZjJjIGR2aS10YXJnZXQtbGliZjJjCittYXliZS1kdmktdGFyZ2V0LWxpYmYyYzoKKworZHZpLXRhcmdldC1saWJmMmM6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmYyYyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9saWJmMmMiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZjJjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LWxpYmYyYyBUQUdTLXRhcmdldC1saWJmMmMKK21heWJlLVRBR1MtdGFyZ2V0LWxpYmYyYzoKKworVEFHUy10YXJnZXQtbGliZjJjOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJmMmMgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJmMmMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmMmMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtbGliZjJjIGluc3RhbGwtaW5mby10YXJnZXQtbGliZjJjCittYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmYyYzoKKworaW5zdGFsbC1pbmZvLXRhcmdldC1saWJmMmM6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmYyYyBcCisgICAgaW5mby10YXJnZXQtbGliZjJjIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZjJjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmMmMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJmMmMgaW5zdGFsbGNoZWNrLXRhcmdldC1saWJmMmMKK21heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGliZjJjOgorCitpbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmYyYzogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliZjJjIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZjJjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmMmMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmYyYyBtb3N0bHljbGVhbi10YXJnZXQtbGliZjJjCittYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGliZjJjOgorCittb3N0bHljbGVhbi10YXJnZXQtbGliZjJjOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmMmMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtbGliZjJjIGNsZWFuLXRhcmdldC1saWJmMmMKK21heWJlLWNsZWFuLXRhcmdldC1saWJmMmM6CisKK2NsZWFuLXRhcmdldC1saWJmMmM6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZjJjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliZjJjIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXJnZXQtbGliZjJjIGRpc3RjbGVhbi10YXJnZXQtbGliZjJjCittYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWxpYmYyYzoKKworZGlzdGNsZWFuLXRhcmdldC1saWJmMmM6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZjJjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmYyYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmMmMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliZjJjIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmYyYworbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliZjJjOgorCittYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJmMmM6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZjJjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJmMmMiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZjJjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS10YXJnZXQtbGlib2JqYyBtYXliZS1jb25maWd1cmUtdGFyZ2V0LWxpYm9iamMKIG1heWJlLWNvbmZpZ3VyZS10YXJnZXQtbGlib2JqYzoKIApAQCAtMjI0NzMsNiArMTk3NjYsMjA0IEBACiAJICAkKE1BS0UpICQoVEFSR0VUX0ZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby10YXJnZXQtbGlib2JqYyBpbmZvLXRhcmdldC1saWJvYmpjCittYXliZS1pbmZvLXRhcmdldC1saWJvYmpjOgorCitpbmZvLXRhcmdldC1saWJvYmpjOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJvYmpjIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktdGFyZ2V0LWxpYm9iamMgZHZpLXRhcmdldC1saWJvYmpjCittYXliZS1kdmktdGFyZ2V0LWxpYm9iamM6CisKK2R2aS10YXJnZXQtbGlib2JqYzogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlib2JqYyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgZHZpIGluICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LWxpYm9iamMgVEFHUy10YXJnZXQtbGlib2JqYworbWF5YmUtVEFHUy10YXJnZXQtbGlib2JqYzoKKworVEFHUy10YXJnZXQtbGlib2JqYzogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlib2JqYyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1saWJvYmpjIGluc3RhbGwtaW5mby10YXJnZXQtbGlib2JqYworbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1saWJvYmpjOgorCitpbnN0YWxsLWluZm8tdGFyZ2V0LWxpYm9iamM6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYm9iamMgXAorICAgIGluZm8tdGFyZ2V0LWxpYm9iamMgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYm9iamMgaW5zdGFsbGNoZWNrLXRhcmdldC1saWJvYmpjCittYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYm9iamM6CisKK2luc3RhbGxjaGVjay10YXJnZXQtbGlib2JqYzogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlib2JqYyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1saWJvYmpjIG1vc3RseWNsZWFuLXRhcmdldC1saWJvYmpjCittYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGlib2JqYzoKKworbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYm9iamM6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXRhcmdldC1saWJvYmpjIGNsZWFuLXRhcmdldC1saWJvYmpjCittYXliZS1jbGVhbi10YXJnZXQtbGlib2JqYzoKKworY2xlYW4tdGFyZ2V0LWxpYm9iamM6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXJnZXQtbGlib2JqYyBkaXN0Y2xlYW4tdGFyZ2V0LWxpYm9iamMKK21heWJlLWRpc3RjbGVhbi10YXJnZXQtbGlib2JqYzoKKworZGlzdGNsZWFuLXRhcmdldC1saWJvYmpjOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGlib2JqYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYm9iamMgbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGlib2JqYworbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGlib2JqYzoKKworbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGlib2JqYzogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJvYmpjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJvYmpjIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYm9iamMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXRhcmdldC1saWJ0ZXJtY2FwIG1heWJlLWNvbmZpZ3VyZS10YXJnZXQtbGlidGVybWNhcAogbWF5YmUtY29uZmlndXJlLXRhcmdldC1saWJ0ZXJtY2FwOgogCkBAIC0yMjU3MSw2ICsyMDA2MiwxNDggQEAKIAkgICQoTUFLRSkgJChUQVJHRVRfRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXRhcmdldC1saWJ0ZXJtY2FwIGluZm8tdGFyZ2V0LWxpYnRlcm1jYXAKK21heWJlLWluZm8tdGFyZ2V0LWxpYnRlcm1jYXA6CisKK2luZm8tdGFyZ2V0LWxpYnRlcm1jYXA6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYnRlcm1jYXAgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJ0ZXJtY2FwL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9saWJ0ZXJtY2FwIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYnRlcm1jYXAgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtbGlidGVybWNhcCBkdmktdGFyZ2V0LWxpYnRlcm1jYXAKK21heWJlLWR2aS10YXJnZXQtbGlidGVybWNhcDoKKworZHZpLXRhcmdldC1saWJ0ZXJtY2FwOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJ0ZXJtY2FwIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlidGVybWNhcC9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9saWJ0ZXJtY2FwIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYnRlcm1jYXAgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy10YXJnZXQtbGlidGVybWNhcCBUQUdTLXRhcmdldC1saWJ0ZXJtY2FwCittYXliZS1UQUdTLXRhcmdldC1saWJ0ZXJtY2FwOgorCitUQUdTLXRhcmdldC1saWJ0ZXJtY2FwOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJ0ZXJtY2FwIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlidGVybWNhcC9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBUQUdTIGluICQoVEFSR0VUX1NVQkRJUikvbGlidGVybWNhcCIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJ0ZXJtY2FwICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYnRlcm1jYXAgaW5zdGFsbC1pbmZvLXRhcmdldC1saWJ0ZXJtY2FwCittYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYnRlcm1jYXA6CisKK2luc3RhbGwtaW5mby10YXJnZXQtbGlidGVybWNhcDogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGlidGVybWNhcCBcCisgICAgaW5mby10YXJnZXQtbGlidGVybWNhcCAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYnRlcm1jYXAvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGlidGVybWNhcCIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJ0ZXJtY2FwICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGlidGVybWNhcCBpbnN0YWxsY2hlY2stdGFyZ2V0LWxpYnRlcm1jYXAKK21heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGlidGVybWNhcDoKKworaW5zdGFsbGNoZWNrLXRhcmdldC1saWJ0ZXJtY2FwOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJ0ZXJtY2FwIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGlidGVybWNhcC9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gJChUQVJHRVRfU1VCRElSKS9saWJ0ZXJtY2FwIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYnRlcm1jYXAgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXAgbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXAKK21heWJlLW1vc3RseWNsZWFuLXRhcmdldC1saWJ0ZXJtY2FwOgorCisjIGxpYnRlcm1jYXAgZG9lc24ndCBzdXBwb3J0IG1vc3RseWNsZWFuLgorbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXA6CisKKworLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtbGlidGVybWNhcCBjbGVhbi10YXJnZXQtbGlidGVybWNhcAorbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXA6CisKKyMgbGlidGVybWNhcCBkb2Vzbid0IHN1cHBvcnQgY2xlYW4uCitjbGVhbi10YXJnZXQtbGlidGVybWNhcDoKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXJnZXQtbGlidGVybWNhcCBkaXN0Y2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXAKK21heWJlLWRpc3RjbGVhbi10YXJnZXQtbGlidGVybWNhcDoKKworIyBsaWJ0ZXJtY2FwIGRvZXNuJ3Qgc3VwcG9ydCBkaXN0Y2xlYW4uCitkaXN0Y2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXA6CisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJ0ZXJtY2FwIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXAKK21heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXA6CisKKyMgbGlidGVybWNhcCBkb2Vzbid0IHN1cHBvcnQgbWFpbnRhaW5lci1jbGVhbi4KK21haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYnRlcm1jYXA6CisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS10YXJnZXQtd2luc3VwIG1heWJlLWNvbmZpZ3VyZS10YXJnZXQtd2luc3VwCiBtYXliZS1jb25maWd1cmUtdGFyZ2V0LXdpbnN1cDoKIApAQCAtMjI2NTEsNiArMjAyODQsMjA0IEBACiAJICAkKE1BS0UpICQoVEFSR0VUX0ZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby10YXJnZXQtd2luc3VwIGluZm8tdGFyZ2V0LXdpbnN1cAorbWF5YmUtaW5mby10YXJnZXQtd2luc3VwOgorCitpbmZvLXRhcmdldC13aW5zdXA6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LXdpbnN1cCAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cC9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbmZvIGluICQoVEFSR0VUX1NVQkRJUikvd2luc3VwIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC13aW5zdXAgZHZpLXRhcmdldC13aW5zdXAKK21heWJlLWR2aS10YXJnZXQtd2luc3VwOgorCitkdmktdGFyZ2V0LXdpbnN1cDogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtd2luc3VwIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvd2luc3VwL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS93aW5zdXAgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy10YXJnZXQtd2luc3VwIFRBR1MtdGFyZ2V0LXdpbnN1cAorbWF5YmUtVEFHUy10YXJnZXQtd2luc3VwOgorCitUQUdTLXRhcmdldC13aW5zdXA6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LXdpbnN1cCAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cC9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBUQUdTIGluICQoVEFSR0VUX1NVQkRJUikvd2luc3VwIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC13aW5zdXAgaW5zdGFsbC1pbmZvLXRhcmdldC13aW5zdXAKK21heWJlLWluc3RhbGwtaW5mby10YXJnZXQtd2luc3VwOgorCitpbnN0YWxsLWluZm8tdGFyZ2V0LXdpbnN1cDogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtd2luc3VwIFwKKyAgICBpbmZvLXRhcmdldC13aW5zdXAgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS93aW5zdXAvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluICQoVEFSR0VUX1NVQkRJUikvd2luc3VwIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LXdpbnN1cCBpbnN0YWxsY2hlY2stdGFyZ2V0LXdpbnN1cAorbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC13aW5zdXA6CisKK2luc3RhbGxjaGVjay10YXJnZXQtd2luc3VwOiBcCisgICAgY29uZmlndXJlLXRhcmdldC13aW5zdXAgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS93aW5zdXAvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvd2luc3VwIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtd2luc3VwIG1vc3RseWNsZWFuLXRhcmdldC13aW5zdXAKK21heWJlLW1vc3RseWNsZWFuLXRhcmdldC13aW5zdXA6CisKK21vc3RseWNsZWFuLXRhcmdldC13aW5zdXA6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvd2luc3VwL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvd2luc3VwIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXRhcmdldC13aW5zdXAgY2xlYW4tdGFyZ2V0LXdpbnN1cAorbWF5YmUtY2xlYW4tdGFyZ2V0LXdpbnN1cDoKKworY2xlYW4tdGFyZ2V0LXdpbnN1cDogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS93aW5zdXAvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS93aW5zdXAiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvd2luc3VwICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRhcmdldC13aW5zdXAgZGlzdGNsZWFuLXRhcmdldC13aW5zdXAKK21heWJlLWRpc3RjbGVhbi10YXJnZXQtd2luc3VwOgorCitkaXN0Y2xlYW4tdGFyZ2V0LXdpbnN1cDogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS93aW5zdXAvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvd2luc3VwIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC13aW5zdXAgbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtd2luc3VwCittYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC13aW5zdXA6CisKK21haW50YWluZXItY2xlYW4tdGFyZ2V0LXdpbnN1cDogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS93aW5zdXAvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL3dpbnN1cCIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS93aW5zdXAgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXRhcmdldC1saWJnbG9zcyBtYXliZS1jb25maWd1cmUtdGFyZ2V0LWxpYmdsb3NzCiBtYXliZS1jb25maWd1cmUtdGFyZ2V0LWxpYmdsb3NzOgogCkBAIC0yMjcyNyw2ICsyMDU1OCwyMDQgQEAKIAkgICQoTUFLRSkgJChUQVJHRVRfRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXRhcmdldC1saWJnbG9zcyBpbmZvLXRhcmdldC1saWJnbG9zcworbWF5YmUtaW5mby10YXJnZXQtbGliZ2xvc3M6CisKK2luZm8tdGFyZ2V0LWxpYmdsb3NzOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJnbG9zcyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC1saWJnbG9zcyBkdmktdGFyZ2V0LWxpYmdsb3NzCittYXliZS1kdmktdGFyZ2V0LWxpYmdsb3NzOgorCitkdmktdGFyZ2V0LWxpYmdsb3NzOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJnbG9zcyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LWxpYmdsb3NzIFRBR1MtdGFyZ2V0LWxpYmdsb3NzCittYXliZS1UQUdTLXRhcmdldC1saWJnbG9zczoKKworVEFHUy10YXJnZXQtbGliZ2xvc3M6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmdsb3NzIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZ2xvc3MvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmdsb3NzIGluc3RhbGwtaW5mby10YXJnZXQtbGliZ2xvc3MKK21heWJlLWluc3RhbGwtaW5mby10YXJnZXQtbGliZ2xvc3M6CisKK2luc3RhbGwtaW5mby10YXJnZXQtbGliZ2xvc3M6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmdsb3NzIFwKKyAgICBpbmZvLXRhcmdldC1saWJnbG9zcyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGliZ2xvc3MgaW5zdGFsbGNoZWNrLXRhcmdldC1saWJnbG9zcworbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJnbG9zczoKKworaW5zdGFsbGNoZWNrLXRhcmdldC1saWJnbG9zczogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliZ2xvc3MgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGliZ2xvc3MgbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmdsb3NzCittYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGliZ2xvc3M6CisKK21vc3RseWNsZWFuLXRhcmdldC1saWJnbG9zczogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYmdsb3NzIGNsZWFuLXRhcmdldC1saWJnbG9zcworbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYmdsb3NzOgorCitjbGVhbi10YXJnZXQtbGliZ2xvc3M6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZ2xvc3MvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXJnZXQtbGliZ2xvc3MgZGlzdGNsZWFuLXRhcmdldC1saWJnbG9zcworbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1saWJnbG9zczoKKworZGlzdGNsZWFuLXRhcmdldC1saWJnbG9zczogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJnbG9zcyBtYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJnbG9zcworbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliZ2xvc3M6CisKK21haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmdsb3NzOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmdsb3NzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJnbG9zcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtdGFyZ2V0LWxpYmliZXJ0eSBtYXliZS1jb25maWd1cmUtdGFyZ2V0LWxpYmliZXJ0eQogbWF5YmUtY29uZmlndXJlLXRhcmdldC1saWJpYmVydHk6CiAKQEAgLTIyODA3LDYgKzIwODM2LDIwNCBAQAogCSAgJChNQUtFKSAkKFRBUkdFVF9GTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tdGFyZ2V0LWxpYmliZXJ0eSBpbmZvLXRhcmdldC1saWJpYmVydHkKK21heWJlLWluZm8tdGFyZ2V0LWxpYmliZXJ0eToKKworaW5mby10YXJnZXQtbGliaWJlcnR5OiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJpYmVydHkgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtbGliaWJlcnR5IGR2aS10YXJnZXQtbGliaWJlcnR5CittYXliZS1kdmktdGFyZ2V0LWxpYmliZXJ0eToKKworZHZpLXRhcmdldC1saWJpYmVydHk6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmliZXJ0eSAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LWxpYmliZXJ0eSBUQUdTLXRhcmdldC1saWJpYmVydHkKK21heWJlLVRBR1MtdGFyZ2V0LWxpYmliZXJ0eToKKworVEFHUy10YXJnZXQtbGliaWJlcnR5OiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJpYmVydHkgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtbGliaWJlcnR5IGluc3RhbGwtaW5mby10YXJnZXQtbGliaWJlcnR5CittYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmliZXJ0eToKKworaW5zdGFsbC1pbmZvLXRhcmdldC1saWJpYmVydHk6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmliZXJ0eSBcCisgICAgaW5mby10YXJnZXQtbGliaWJlcnR5IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJpYmVydHkgaW5zdGFsbGNoZWNrLXRhcmdldC1saWJpYmVydHkKK21heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGliaWJlcnR5OgorCitpbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmliZXJ0eTogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliaWJlcnR5IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmliZXJ0eSBtb3N0bHljbGVhbi10YXJnZXQtbGliaWJlcnR5CittYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGliaWJlcnR5OgorCittb3N0bHljbGVhbi10YXJnZXQtbGliaWJlcnR5OiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtbGliaWJlcnR5IGNsZWFuLXRhcmdldC1saWJpYmVydHkKK21heWJlLWNsZWFuLXRhcmdldC1saWJpYmVydHk6CisKK2NsZWFuLXRhcmdldC1saWJpYmVydHk6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5IiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXJnZXQtbGliaWJlcnR5IGRpc3RjbGVhbi10YXJnZXQtbGliaWJlcnR5CittYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWxpYmliZXJ0eToKKworZGlzdGNsZWFuLXRhcmdldC1saWJpYmVydHk6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmliZXJ0eSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliaWJlcnR5IG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmliZXJ0eQorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliaWJlcnR5OgorCittYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJpYmVydHk6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5L01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJpYmVydHkiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGliaWJlcnR5ICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS10YXJnZXQtZ3BlcmYgbWF5YmUtY29uZmlndXJlLXRhcmdldC1ncGVyZgogbWF5YmUtY29uZmlndXJlLXRhcmdldC1ncGVyZjoKIApAQCAtMjI4ODcsNiArMjExMTQsMjA0IEBACiAJICAkKE1BS0UpICQoVEFSR0VUX0ZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby10YXJnZXQtZ3BlcmYgaW5mby10YXJnZXQtZ3BlcmYKK21heWJlLWluZm8tdGFyZ2V0LWdwZXJmOgorCitpbmZvLXRhcmdldC1ncGVyZjogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtZ3BlcmYgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ncGVyZi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbmZvIGluICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtZ3BlcmYgZHZpLXRhcmdldC1ncGVyZgorbWF5YmUtZHZpLXRhcmdldC1ncGVyZjoKKworZHZpLXRhcmdldC1ncGVyZjogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtZ3BlcmYgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ncGVyZi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9ncGVyZiIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9ncGVyZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXRhcmdldC1ncGVyZiBUQUdTLXRhcmdldC1ncGVyZgorbWF5YmUtVEFHUy10YXJnZXQtZ3BlcmY6CisKK1RBR1MtdGFyZ2V0LWdwZXJmOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1ncGVyZiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2dwZXJmL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gJChUQVJHRVRfU1VCRElSKS9ncGVyZiIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9ncGVyZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1ncGVyZiBpbnN0YWxsLWluZm8tdGFyZ2V0LWdwZXJmCittYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWdwZXJmOgorCitpbnN0YWxsLWluZm8tdGFyZ2V0LWdwZXJmOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1ncGVyZiBcCisgICAgaW5mby10YXJnZXQtZ3BlcmYgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ncGVyZi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9ncGVyZiIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9ncGVyZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWdwZXJmIGluc3RhbGxjaGVjay10YXJnZXQtZ3BlcmYKK21heWJlLWluc3RhbGxjaGVjay10YXJnZXQtZ3BlcmY6CisKK2luc3RhbGxjaGVjay10YXJnZXQtZ3BlcmY6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWdwZXJmIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWdwZXJmIG1vc3RseWNsZWFuLXRhcmdldC1ncGVyZgorbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWdwZXJmOgorCittb3N0bHljbGVhbi10YXJnZXQtZ3BlcmY6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9ncGVyZiIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9ncGVyZiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXRhcmdldC1ncGVyZiBjbGVhbi10YXJnZXQtZ3BlcmYKK21heWJlLWNsZWFuLXRhcmdldC1ncGVyZjoKKworY2xlYW4tdGFyZ2V0LWdwZXJmOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2dwZXJmL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWdwZXJmIGRpc3RjbGVhbi10YXJnZXQtZ3BlcmYKK21heWJlLWRpc3RjbGVhbi10YXJnZXQtZ3BlcmY6CisKK2Rpc3RjbGVhbi10YXJnZXQtZ3BlcmY6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtZ3BlcmYgbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtZ3BlcmYKK21heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWdwZXJmOgorCittYWludGFpbmVyLWNsZWFuLXRhcmdldC1ncGVyZjogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ncGVyZi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvZ3BlcmYgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXRhcmdldC1leGFtcGxlcyBtYXliZS1jb25maWd1cmUtdGFyZ2V0LWV4YW1wbGVzCiBtYXliZS1jb25maWd1cmUtdGFyZ2V0LWV4YW1wbGVzOgogCkBAIC0yMjk1OSw2ICsyMTM4NCwyMDQgQEAKIGluc3RhbGwtdGFyZ2V0LWV4YW1wbGVzOgogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tdGFyZ2V0LWV4YW1wbGVzIGluZm8tdGFyZ2V0LWV4YW1wbGVzCittYXliZS1pbmZvLXRhcmdldC1leGFtcGxlczoKKworaW5mby10YXJnZXQtZXhhbXBsZXM6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWV4YW1wbGVzIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktdGFyZ2V0LWV4YW1wbGVzIGR2aS10YXJnZXQtZXhhbXBsZXMKK21heWJlLWR2aS10YXJnZXQtZXhhbXBsZXM6CisKK2R2aS10YXJnZXQtZXhhbXBsZXM6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWV4YW1wbGVzIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgZHZpIGluICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy10YXJnZXQtZXhhbXBsZXMgVEFHUy10YXJnZXQtZXhhbXBsZXMKK21heWJlLVRBR1MtdGFyZ2V0LWV4YW1wbGVzOgorCitUQUdTLXRhcmdldC1leGFtcGxlczogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtZXhhbXBsZXMgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9leGFtcGxlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBUQUdTIGluICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtZXhhbXBsZXMgaW5zdGFsbC1pbmZvLXRhcmdldC1leGFtcGxlcworbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1leGFtcGxlczoKKworaW5zdGFsbC1pbmZvLXRhcmdldC1leGFtcGxlczogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtZXhhbXBsZXMgXAorICAgIGluZm8tdGFyZ2V0LWV4YW1wbGVzIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1leGFtcGxlcyBpbnN0YWxsY2hlY2stdGFyZ2V0LWV4YW1wbGVzCittYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWV4YW1wbGVzOgorCitpbnN0YWxsY2hlY2stdGFyZ2V0LWV4YW1wbGVzOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1leGFtcGxlcyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbGNoZWNrKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1vc3RseWNsZWFuLXRhcmdldC1leGFtcGxlcyBtb3N0bHljbGVhbi10YXJnZXQtZXhhbXBsZXMKK21heWJlLW1vc3RseWNsZWFuLXRhcmdldC1leGFtcGxlczoKKworbW9zdGx5Y2xlYW4tdGFyZ2V0LWV4YW1wbGVzOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtZXhhbXBsZXMgY2xlYW4tdGFyZ2V0LWV4YW1wbGVzCittYXliZS1jbGVhbi10YXJnZXQtZXhhbXBsZXM6CisKK2NsZWFuLXRhcmdldC1leGFtcGxlczogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9leGFtcGxlcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1leGFtcGxlcyBkaXN0Y2xlYW4tdGFyZ2V0LWV4YW1wbGVzCittYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWV4YW1wbGVzOgorCitkaXN0Y2xlYW4tdGFyZ2V0LWV4YW1wbGVzOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZGlzdGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWV4YW1wbGVzIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWV4YW1wbGVzCittYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1leGFtcGxlczoKKworbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtZXhhbXBsZXM6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvZXhhbXBsZXMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2V4YW1wbGVzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS10YXJnZXQtbGliZmZpIG1heWJlLWNvbmZpZ3VyZS10YXJnZXQtbGliZmZpCiBtYXliZS1jb25maWd1cmUtdGFyZ2V0LWxpYmZmaToKIApAQCAtMjMwMzksNiArMjE2NjIsMjA0IEBACiAJICAkKE1BS0UpICQoVEFSR0VUX0ZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby10YXJnZXQtbGliZmZpIGluZm8tdGFyZ2V0LWxpYmZmaQorbWF5YmUtaW5mby10YXJnZXQtbGliZmZpOgorCitpbmZvLXRhcmdldC1saWJmZmk6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmZmaSAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGliZmZpIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC1saWJmZmkgZHZpLXRhcmdldC1saWJmZmkKK21heWJlLWR2aS10YXJnZXQtbGliZmZpOgorCitkdmktdGFyZ2V0LWxpYmZmaTogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliZmZpIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZmZpL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmZmkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy10YXJnZXQtbGliZmZpIFRBR1MtdGFyZ2V0LWxpYmZmaQorbWF5YmUtVEFHUy10YXJnZXQtbGliZmZpOgorCitUQUdTLXRhcmdldC1saWJmZmk6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmZmaSAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBUQUdTIGluICQoVEFSR0VUX1NVQkRJUikvbGliZmZpIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1saWJmZmkgaW5zdGFsbC1pbmZvLXRhcmdldC1saWJmZmkKK21heWJlLWluc3RhbGwtaW5mby10YXJnZXQtbGliZmZpOgorCitpbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmZmaTogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliZmZpIFwKKyAgICBpbmZvLXRhcmdldC1saWJmZmkgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJmZmkvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGliZmZpIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmZmaSBpbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmZmaQorbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJmZmk6CisKK2luc3RhbGxjaGVjay10YXJnZXQtbGliZmZpOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJmZmkgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJmZmkvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvbGliZmZpIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGliZmZpIG1vc3RseWNsZWFuLXRhcmdldC1saWJmZmkKK21heWJlLW1vc3RseWNsZWFuLXRhcmdldC1saWJmZmk6CisKK21vc3RseWNsZWFuLXRhcmdldC1saWJmZmk6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliZmZpL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliZmZpIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXRhcmdldC1saWJmZmkgY2xlYW4tdGFyZ2V0LWxpYmZmaQorbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYmZmaToKKworY2xlYW4tdGFyZ2V0LWxpYmZmaTogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJmZmkvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJmZmkiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGliZmZpICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1saWJmZmkgZGlzdGNsZWFuLXRhcmdldC1saWJmZmkKK21heWJlLWRpc3RjbGVhbi10YXJnZXQtbGliZmZpOgorCitkaXN0Y2xlYW4tdGFyZ2V0LWxpYmZmaTogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJmZmkvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliZmZpIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJmZmkgbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliZmZpCittYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJmZmk6CisKK21haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmZmaTogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJmZmkvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmZmaSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJmZmkgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXRhcmdldC1saWJqYXZhIG1heWJlLWNvbmZpZ3VyZS10YXJnZXQtbGliamF2YQogbWF5YmUtY29uZmlndXJlLXRhcmdldC1saWJqYXZhOgogCkBAIC0yMzEyMCw2ICsyMTk0MSwyMDQgQEAKIAkgICQoTUFLRSkgJChUQVJHRVRfRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXRhcmdldC1saWJqYXZhIGluZm8tdGFyZ2V0LWxpYmphdmEKK21heWJlLWluZm8tdGFyZ2V0LWxpYmphdmE6CisKK2luZm8tdGFyZ2V0LWxpYmphdmE6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmphdmEgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJqYXZhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9saWJqYXZhIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtbGliamF2YSBkdmktdGFyZ2V0LWxpYmphdmEKK21heWJlLWR2aS10YXJnZXQtbGliamF2YToKKworZHZpLXRhcmdldC1saWJqYXZhOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJqYXZhIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliamF2YS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9saWJqYXZhIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkdmkpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtVEFHUy10YXJnZXQtbGliamF2YSBUQUdTLXRhcmdldC1saWJqYXZhCittYXliZS1UQUdTLXRhcmdldC1saWJqYXZhOgorCitUQUdTLXRhcmdldC1saWJqYXZhOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJqYXZhIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliamF2YS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBUQUdTIGluICQoVEFSR0VUX1NVQkRJUikvbGliamF2YSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJqYXZhICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmphdmEgaW5zdGFsbC1pbmZvLXRhcmdldC1saWJqYXZhCittYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmphdmE6CisKK2luc3RhbGwtaW5mby10YXJnZXQtbGliamF2YTogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliamF2YSBcCisgICAgaW5mby10YXJnZXQtbGliamF2YSAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5zdGFsbC1pbmZvIGluICQoVEFSR0VUX1NVQkRJUikvbGliamF2YSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJqYXZhICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGliamF2YSBpbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmphdmEKK21heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGliamF2YToKKworaW5zdGFsbGNoZWNrLXRhcmdldC1saWJqYXZhOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJqYXZhIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliamF2YS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gJChUQVJHRVRfU1VCRElSKS9saWJqYXZhIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmphdmEgbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmphdmEKK21heWJlLW1vc3RseWNsZWFuLXRhcmdldC1saWJqYXZhOgorCittb3N0bHljbGVhbi10YXJnZXQtbGliamF2YTogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJqYXZhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIG1vc3RseWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliamF2YSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJqYXZhICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tdGFyZ2V0LWxpYmphdmEgY2xlYW4tdGFyZ2V0LWxpYmphdmEKK21heWJlLWNsZWFuLXRhcmdldC1saWJqYXZhOgorCitjbGVhbi10YXJnZXQtbGliamF2YTogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJqYXZhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliamF2YSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJqYXZhICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1saWJqYXZhIGRpc3RjbGVhbi10YXJnZXQtbGliamF2YQorbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1saWJqYXZhOgorCitkaXN0Y2xlYW4tdGFyZ2V0LWxpYmphdmE6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliamF2YS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJqYXZhIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliamF2YSBtYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJqYXZhCittYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJqYXZhOgorCittYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJqYXZhOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgbWFpbnRhaW5lci1jbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmphdmEiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGliamF2YSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtdGFyZ2V0LXpsaWIgbWF5YmUtY29uZmlndXJlLXRhcmdldC16bGliCiBtYXliZS1jb25maWd1cmUtdGFyZ2V0LXpsaWI6CiAKQEAgLTIzMjIyLDYgKzIyMjQxLDIwNCBAQAogCSAgJChNQUtFKSAkKFRBUkdFVF9GTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tdGFyZ2V0LXpsaWIgaW5mby10YXJnZXQtemxpYgorbWF5YmUtaW5mby10YXJnZXQtemxpYjoKKworaW5mby10YXJnZXQtemxpYjogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtemxpYiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL3psaWIiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvemxpYiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC16bGliIGR2aS10YXJnZXQtemxpYgorbWF5YmUtZHZpLXRhcmdldC16bGliOgorCitkdmktdGFyZ2V0LXpsaWI6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LXpsaWIgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS96bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL3psaWIiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvemxpYiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXRhcmdldC16bGliIFRBR1MtdGFyZ2V0LXpsaWIKK21heWJlLVRBR1MtdGFyZ2V0LXpsaWI6CisKK1RBR1MtdGFyZ2V0LXpsaWI6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LXpsaWIgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS96bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gJChUQVJHRVRfU1VCRElSKS96bGliIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3psaWIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtemxpYiBpbnN0YWxsLWluZm8tdGFyZ2V0LXpsaWIKK21heWJlLWluc3RhbGwtaW5mby10YXJnZXQtemxpYjoKKworaW5zdGFsbC1pbmZvLXRhcmdldC16bGliOiBcCisgICAgY29uZmlndXJlLXRhcmdldC16bGliIFwKKyAgICBpbmZvLXRhcmdldC16bGliIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gJChUQVJHRVRfU1VCRElSKS96bGliIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3psaWIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC16bGliIGluc3RhbGxjaGVjay10YXJnZXQtemxpYgorbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC16bGliOgorCitpbnN0YWxsY2hlY2stdGFyZ2V0LXpsaWI6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LXpsaWIgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS96bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiAkKFRBUkdFVF9TVUJESVIpL3psaWIiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvemxpYiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtemxpYiBtb3N0bHljbGVhbi10YXJnZXQtemxpYgorbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LXpsaWI6CisKK21vc3RseWNsZWFuLXRhcmdldC16bGliOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS96bGliIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3psaWIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtemxpYiBjbGVhbi10YXJnZXQtemxpYgorbWF5YmUtY2xlYW4tdGFyZ2V0LXpsaWI6CisKK2NsZWFuLXRhcmdldC16bGliOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3psaWIvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS96bGliIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3psaWIgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LXpsaWIgZGlzdGNsZWFuLXRhcmdldC16bGliCittYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LXpsaWI6CisKK2Rpc3RjbGVhbi10YXJnZXQtemxpYjogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS96bGliL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL3psaWIiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvemxpYiAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC16bGliIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LXpsaWIKK21heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LXpsaWI6CisKK21haW50YWluZXItY2xlYW4tdGFyZ2V0LXpsaWI6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvemxpYi9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvemxpYiIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS96bGliICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS10YXJnZXQtYm9laG0tZ2MgbWF5YmUtY29uZmlndXJlLXRhcmdldC1ib2VobS1nYwogbWF5YmUtY29uZmlndXJlLXRhcmdldC1ib2VobS1nYzoKIApAQCAtMjMzMDIsNiArMjI1MTksMjA0IEBACiAJICAkKE1BS0UpICQoVEFSR0VUX0ZMQUdTX1RPX1BBU1MpIGluc3RhbGwpCiAKIAorIyBPdGhlciB0YXJnZXRzIChpbmZvLCBkdmksIGV0Yy4pCisKKy5QSE9OWTogbWF5YmUtaW5mby10YXJnZXQtYm9laG0tZ2MgaW5mby10YXJnZXQtYm9laG0tZ2MKK21heWJlLWluZm8tdGFyZ2V0LWJvZWhtLWdjOgorCitpbmZvLXRhcmdldC1ib2VobS1nYzogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtYm9laG0tZ2MgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbmZvIGluICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtYm9laG0tZ2MgZHZpLXRhcmdldC1ib2VobS1nYworbWF5YmUtZHZpLXRhcmdldC1ib2VobS1nYzoKKworZHZpLXRhcmdldC1ib2VobS1nYzogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtYm9laG0tZ2MgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLXRhcmdldC1ib2VobS1nYyBUQUdTLXRhcmdldC1ib2VobS1nYworbWF5YmUtVEFHUy10YXJnZXQtYm9laG0tZ2M6CisKK1RBR1MtdGFyZ2V0LWJvZWhtLWdjOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1ib2VobS1nYyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFRBR1MpIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbC1pbmZvLXRhcmdldC1ib2VobS1nYyBpbnN0YWxsLWluZm8tdGFyZ2V0LWJvZWhtLWdjCittYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWJvZWhtLWdjOgorCitpbnN0YWxsLWluZm8tdGFyZ2V0LWJvZWhtLWdjOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1ib2VobS1nYyBcCisgICAgaW5mby10YXJnZXQtYm9laG0tZ2MgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbnN0YWxsLWluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGwtaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsY2hlY2stdGFyZ2V0LWJvZWhtLWdjIGluc3RhbGxjaGVjay10YXJnZXQtYm9laG0tZ2MKK21heWJlLWluc3RhbGxjaGVjay10YXJnZXQtYm9laG0tZ2M6CisKK2luc3RhbGxjaGVjay10YXJnZXQtYm9laG0tZ2M6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWJvZWhtLWdjIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5zdGFsbGNoZWNrIGluICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWJvZWhtLWdjIG1vc3RseWNsZWFuLXRhcmdldC1ib2VobS1nYworbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWJvZWhtLWdjOgorCittb3N0bHljbGVhbi10YXJnZXQtYm9laG0tZ2M6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1vc3RseWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWNsZWFuLXRhcmdldC1ib2VobS1nYyBjbGVhbi10YXJnZXQtYm9laG0tZ2MKK21heWJlLWNsZWFuLXRhcmdldC1ib2VobS1nYzoKKworY2xlYW4tdGFyZ2V0LWJvZWhtLWdjOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2JvZWhtLWdjL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWJvZWhtLWdjIGRpc3RjbGVhbi10YXJnZXQtYm9laG0tZ2MKK21heWJlLWRpc3RjbGVhbi10YXJnZXQtYm9laG0tZ2M6CisKK2Rpc3RjbGVhbi10YXJnZXQtYm9laG0tZ2M6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgZGlzdGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtYm9laG0tZ2MgbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtYm9laG0tZ2MKK21heWJlLW1haW50YWluZXItY2xlYW4tdGFyZ2V0LWJvZWhtLWdjOgorCittYWludGFpbmVyLWNsZWFuLXRhcmdldC1ib2VobS1nYzogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9ib2VobS1nYy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvYm9laG0tZ2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtYWludGFpbmVyLWNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisKIC5QSE9OWTogY29uZmlndXJlLXRhcmdldC1xdGhyZWFkcyBtYXliZS1jb25maWd1cmUtdGFyZ2V0LXF0aHJlYWRzCiBtYXliZS1jb25maWd1cmUtdGFyZ2V0LXF0aHJlYWRzOgogCkBAIC0yMzM4Miw2ICsyMjc5NywyMDQgQEAKIAkgICQoTUFLRSkgJChUQVJHRVRfRkxBR1NfVE9fUEFTUykgaW5zdGFsbCkKIAogCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLXRhcmdldC1xdGhyZWFkcyBpbmZvLXRhcmdldC1xdGhyZWFkcworbWF5YmUtaW5mby10YXJnZXQtcXRocmVhZHM6CisKK2luZm8tdGFyZ2V0LXF0aHJlYWRzOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1xdGhyZWFkcyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZHZpLXRhcmdldC1xdGhyZWFkcyBkdmktdGFyZ2V0LXF0aHJlYWRzCittYXliZS1kdmktdGFyZ2V0LXF0aHJlYWRzOgorCitkdmktdGFyZ2V0LXF0aHJlYWRzOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1xdGhyZWFkcyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGR2aSBpbiAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LXF0aHJlYWRzIFRBR1MtdGFyZ2V0LXF0aHJlYWRzCittYXliZS1UQUdTLXRhcmdldC1xdGhyZWFkczoKKworVEFHUy10YXJnZXQtcXRocmVhZHM6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LXF0aHJlYWRzIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LXF0aHJlYWRzIGluc3RhbGwtaW5mby10YXJnZXQtcXRocmVhZHMKK21heWJlLWluc3RhbGwtaW5mby10YXJnZXQtcXRocmVhZHM6CisKK2luc3RhbGwtaW5mby10YXJnZXQtcXRocmVhZHM6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LXF0aHJlYWRzIFwKKyAgICBpbmZvLXRhcmdldC1xdGhyZWFkcyAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5zdGFsbC1pbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGxjaGVjay10YXJnZXQtcXRocmVhZHMgaW5zdGFsbGNoZWNrLXRhcmdldC1xdGhyZWFkcworbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1xdGhyZWFkczoKKworaW5zdGFsbGNoZWNrLXRhcmdldC1xdGhyZWFkczogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtcXRocmVhZHMgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBpbnN0YWxsY2hlY2sgaW4gJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGluc3RhbGxjaGVjaykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tb3N0bHljbGVhbi10YXJnZXQtcXRocmVhZHMgbW9zdGx5Y2xlYW4tdGFyZ2V0LXF0aHJlYWRzCittYXliZS1tb3N0bHljbGVhbi10YXJnZXQtcXRocmVhZHM6CisKK21vc3RseWNsZWFuLXRhcmdldC1xdGhyZWFkczogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tdGFyZ2V0LXF0aHJlYWRzIGNsZWFuLXRhcmdldC1xdGhyZWFkcworbWF5YmUtY2xlYW4tdGFyZ2V0LXF0aHJlYWRzOgorCitjbGVhbi10YXJnZXQtcXRocmVhZHM6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcXRocmVhZHMvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXJnZXQtcXRocmVhZHMgZGlzdGNsZWFuLXRhcmdldC1xdGhyZWFkcworbWF5YmUtZGlzdGNsZWFuLXRhcmdldC1xdGhyZWFkczoKKworZGlzdGNsZWFuLXRhcmdldC1xdGhyZWFkczogCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcy9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBkaXN0Y2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGRpc3RjbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1tYWludGFpbmVyLWNsZWFuLXRhcmdldC1xdGhyZWFkcyBtYWludGFpbmVyLWNsZWFuLXRhcmdldC1xdGhyZWFkcworbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtcXRocmVhZHM6CisKK21haW50YWluZXItY2xlYW4tdGFyZ2V0LXF0aHJlYWRzOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3F0aHJlYWRzL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9xdGhyZWFkcyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKwogLlBIT05ZOiBjb25maWd1cmUtdGFyZ2V0LXJkYSBtYXliZS1jb25maWd1cmUtdGFyZ2V0LXJkYQogbWF5YmUtY29uZmlndXJlLXRhcmdldC1yZGE6CiAKQEAgLTIzNDYyLDYgKzIzMDc1LDIwNCBAQAogCSAgJChNQUtFKSAkKFRBUkdFVF9GTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tdGFyZ2V0LXJkYSBpbmZvLXRhcmdldC1yZGEKK21heWJlLWluZm8tdGFyZ2V0LXJkYToKKworaW5mby10YXJnZXQtcmRhOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1yZGEgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9yZGEvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL3JkYSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9yZGEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtcmRhIGR2aS10YXJnZXQtcmRhCittYXliZS1kdmktdGFyZ2V0LXJkYToKKworZHZpLXRhcmdldC1yZGE6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LXJkYSAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3JkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9yZGEiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvcmRhICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LXJkYSBUQUdTLXRhcmdldC1yZGEKK21heWJlLVRBR1MtdGFyZ2V0LXJkYToKKworVEFHUy10YXJnZXQtcmRhOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1yZGEgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9yZGEvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL3JkYSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9yZGEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtcmRhIGluc3RhbGwtaW5mby10YXJnZXQtcmRhCittYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LXJkYToKKworaW5zdGFsbC1pbmZvLXRhcmdldC1yZGE6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LXJkYSBcCisgICAgaW5mby10YXJnZXQtcmRhIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcmRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL3JkYSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9yZGEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1yZGEgaW5zdGFsbGNoZWNrLXRhcmdldC1yZGEKK21heWJlLWluc3RhbGxjaGVjay10YXJnZXQtcmRhOgorCitpbnN0YWxsY2hlY2stdGFyZ2V0LXJkYTogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtcmRhIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcmRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiAkKFRBUkdFVF9TVUJESVIpL3JkYSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9yZGEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LXJkYSBtb3N0bHljbGVhbi10YXJnZXQtcmRhCittYXliZS1tb3N0bHljbGVhbi10YXJnZXQtcmRhOgorCittb3N0bHljbGVhbi10YXJnZXQtcmRhOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL3JkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL3JkYSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9yZGEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtcmRhIGNsZWFuLXRhcmdldC1yZGEKK21heWJlLWNsZWFuLXRhcmdldC1yZGE6CisKK2NsZWFuLXRhcmdldC1yZGE6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcmRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvcmRhIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL3JkYSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXJnZXQtcmRhIGRpc3RjbGVhbi10YXJnZXQtcmRhCittYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LXJkYToKKworZGlzdGNsZWFuLXRhcmdldC1yZGE6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcmRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL3JkYSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9yZGEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtcmRhIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LXJkYQorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtcmRhOgorCittYWludGFpbmVyLWNsZWFuLXRhcmdldC1yZGE6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvcmRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9yZGEiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvcmRhICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAuUEhPTlk6IGNvbmZpZ3VyZS10YXJnZXQtbGliYWRhIG1heWJlLWNvbmZpZ3VyZS10YXJnZXQtbGliYWRhCiBtYXliZS1jb25maWd1cmUtdGFyZ2V0LWxpYmFkYToKIApAQCAtMjM0ODEsNiArMjMyOTIsNyBAQAogCUFTPSIkKEFTX0ZPUl9UQVJHRVQpIjsgZXhwb3J0IEFTOyBcCiAJQ0M9IiQoQ0NfRk9SX1RBUkdFVCkiOyBleHBvcnQgQ0M7IFwKIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9UQVJHRVQpIjsgZXhwb3J0IENGTEFHUzsgXAorCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCiAJQ1BQRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9UQVJHRVQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCiAJQ1hYPSIkKENYWF9GT1JfVEFSR0VUKSI7IGV4cG9ydCBDWFg7IFwKIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfVEFSR0VUKSI7IGV4cG9ydCBDWFhGTEFHUzsgXApAQCAtMjM1MDIsMzAgKzIzMzE0LDggQEAKIAkgICAgICAqKSB0b3BkaXI9Ii4uLy4uLyQoc3JjZGlyKSIgOzsgXAogCSAgICBlc2FjIDs7IFwKIAllc2FjOyBcCi0JaWYgWyAiJChzcmNkaXIpIiA9ICIuIiBdIDsgdGhlbiBcCi0JICBpZiBbICIkKFRBUkdFVF9TVUJESVIpIiAhPSAiLiIgXSA7IHRoZW4gXAotCSAgICBpZiAkKFNIRUxMKSAkJHMvc3ltbGluay10cmVlICQke3RvcGRpcn0vbGliYWRhICJuby1zdWNoLWZpbGUiIDsgdGhlbiBcCi0JICAgICAgaWYgWyAtZiBNYWtlZmlsZSBdOyB0aGVuIFwKLQkgICAgICAgIGlmICQoTUFLRSkgZGlzdGNsZWFuOyB0aGVuIFwKLQkgICAgICAgICAgdHJ1ZTsgXAotCSAgICAgICAgZWxzZSBcCi0JICAgICAgICAgIGV4aXQgMTsgXAotCSAgICAgICAgZmk7IFwKLQkgICAgICBlbHNlIFwKLQkgICAgICAgIHRydWU7IFwKLQkgICAgICBmaTsgXAotCSAgICBlbHNlIFwKLQkgICAgICBleGl0IDE7IFwKLQkgICAgZmk7IFwKLQkgIGVsc2UgXAotCSAgICB0cnVlOyBcCi0JICBmaTsgXAotCSAgc3JjZGlyb3B0aW9uPSItLXNyY2Rpcj0uIjsgXAotCSAgbGlic3JjZGlyPSIuIjsgXAotCWVsc2UgXAogCSAgc3JjZGlyb3B0aW9uPSItLXNyY2Rpcj0kJHt0b3BkaXJ9L2xpYmFkYSI7IFwKIAkgIGxpYnNyY2Rpcj0iJCRzL2xpYmFkYSI7IFwKLQlmaTsgXAogCXJtIC1mIG5vLXN1Y2gtZmlsZSB8fCA6IDsgXAogCUNPTkZJR19TSVRFPW5vLXN1Y2gtZmlsZSAkKFNIRUxMKSAkJHtsaWJzcmNkaXJ9L2NvbmZpZ3VyZSBcCiAJICAkKFRBUkdFVF9DT05GSUdBUkdTKSAkJHtzcmNkaXJvcHRpb259IFwKQEAgLTIzNTYzLDYgKzIzMzUzLDIwNCBAQAogCSAgJChNQUtFKSAkKFRBUkdFVF9GTEFHU19UT19QQVNTKSBpbnN0YWxsKQogCiAKKyMgT3RoZXIgdGFyZ2V0cyAoaW5mbywgZHZpLCBldGMuKQorCisuUEhPTlk6IG1heWJlLWluZm8tdGFyZ2V0LWxpYmFkYSBpbmZvLXRhcmdldC1saWJhZGEKK21heWJlLWluZm8tdGFyZ2V0LWxpYmFkYToKKworaW5mby10YXJnZXQtbGliYWRhOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJhZGEgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJhZGEvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJhZGEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbmZvKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWR2aS10YXJnZXQtbGliYWRhIGR2aS10YXJnZXQtbGliYWRhCittYXliZS1kdmktdGFyZ2V0LWxpYmFkYToKKworZHZpLXRhcmdldC1saWJhZGE6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmFkYSAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBkdmkgaW4gJChUQVJHRVRfU1VCRElSKS9saWJhZGEiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGliYWRhICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgZHZpKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLVRBR1MtdGFyZ2V0LWxpYmFkYSBUQUdTLXRhcmdldC1saWJhZGEKK21heWJlLVRBR1MtdGFyZ2V0LWxpYmFkYToKKworVEFHUy10YXJnZXQtbGliYWRhOiBcCisgICAgY29uZmlndXJlLXRhcmdldC1saWJhZGEgCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9saWJhZGEvTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZWNobyAiRG9pbmcgVEFHUyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJhZGEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBUQUdTKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWluc3RhbGwtaW5mby10YXJnZXQtbGliYWRhIGluc3RhbGwtaW5mby10YXJnZXQtbGliYWRhCittYXliZS1pbnN0YWxsLWluZm8tdGFyZ2V0LWxpYmFkYToKKworaW5zdGFsbC1pbmZvLXRhcmdldC1saWJhZGE6IFwKKyAgICBjb25maWd1cmUtdGFyZ2V0LWxpYmFkYSBcCisgICAgaW5mby10YXJnZXQtbGliYWRhIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliYWRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJhZGEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLXRhcmdldC1saWJhZGEgaW5zdGFsbGNoZWNrLXRhcmdldC1saWJhZGEKK21heWJlLWluc3RhbGxjaGVjay10YXJnZXQtbGliYWRhOgorCitpbnN0YWxsY2hlY2stdGFyZ2V0LWxpYmFkYTogXAorICAgIGNvbmZpZ3VyZS10YXJnZXQtbGliYWRhIAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliYWRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJhZGEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tdGFyZ2V0LWxpYmFkYSBtb3N0bHljbGVhbi10YXJnZXQtbGliYWRhCittYXliZS1tb3N0bHljbGVhbi10YXJnZXQtbGliYWRhOgorCittb3N0bHljbGVhbi10YXJnZXQtbGliYWRhOiAKKwlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYS9NYWtlZmlsZSBdIHx8IGV4aXQgMCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwllY2hvICJEb2luZyBtb3N0bHljbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJhZGEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBtb3N0bHljbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1jbGVhbi10YXJnZXQtbGliYWRhIGNsZWFuLXRhcmdldC1saWJhZGEKK21heWJlLWNsZWFuLXRhcmdldC1saWJhZGE6CisKK2NsZWFuLXRhcmdldC1saWJhZGE6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliYWRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGNsZWFuIGluICQoVEFSR0VUX1NVQkRJUikvbGliYWRhIiA7IFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX1RBUkdFVF9GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCShjZCAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGNsZWFuKSBcCisJICB8fCBleGl0IDEKKworCisuUEhPTlk6IG1heWJlLWRpc3RjbGVhbi10YXJnZXQtbGliYWRhIGRpc3RjbGVhbi10YXJnZXQtbGliYWRhCittYXliZS1kaXN0Y2xlYW4tdGFyZ2V0LWxpYmFkYToKKworZGlzdGNsZWFuLXRhcmdldC1saWJhZGE6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliYWRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiAkKFRBUkdFVF9TVUJESVIpL2xpYmFkYSIgOyBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwkoY2QgJChUQVJHRVRfU1VCRElSKS9saWJhZGEgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliYWRhIG1haW50YWluZXItY2xlYW4tdGFyZ2V0LWxpYmFkYQorbWF5YmUtbWFpbnRhaW5lci1jbGVhbi10YXJnZXQtbGliYWRhOgorCittYWludGFpbmVyLWNsZWFuLXRhcmdldC1saWJhZGE6IAorCUBbIC1mICQoVEFSR0VUX1NVQkRJUikvbGliYWRhL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIG1haW50YWluZXItY2xlYW4gaW4gJChUQVJHRVRfU1VCRElSKS9saWJhZGEiIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvbGliYWRhICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbWFpbnRhaW5lci1jbGVhbikgXAorCSAgfHwgZXhpdCAxCisKKworCiAKICMgLS0tLS0tLS0tLQogIyBHQ0MgbW9kdWxlCkBAIC0yMzU3NiwxMCArMjM1NjQsMTMgQEAKICMgRG9uJ3QgdXNlIHNoYXJlZCBob3N0IGNvbmZpZy5jYWNoZSwgYXMgaXQgd2lsbCBjb25mdXNlIGxhdGVyCiAjIGRpcmVjdG9yaWVzOyBHQ0Mgd2FudHMgc2xpZ2h0bHkgZGlmZmVyZW50IHZhbHVlcyBmb3Igc29tZQogIyBwcmVjaW91cyB2YXJpYWJsZXMuICAqc2lnaCoKKworIyBXZSBtdXN0IHNraXAgY29uZmlndXJpbmcgaWYgdG9wbGV2ZWwgYm9vdHN0cmFwIGlzIGdvaW5nLgogLlBIT05ZOiBjb25maWd1cmUtZ2NjIG1heWJlLWNvbmZpZ3VyZS1nY2MKIG1heWJlLWNvbmZpZ3VyZS1nY2M6CiBjb25maWd1cmUtZ2NjOgogCUB0ZXN0ICEgLWYgZ2NjL01ha2VmaWxlIHx8IGV4aXQgMDsgXAorCVsgLWYgc3RhZ2VfbGFzdCBdICYmIGV4aXQgMDsgXAogCVsgLWQgZ2NjIF0gfHwgbWtkaXIgZ2NjOyBcCiAJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAogCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXApAQCAtMjM2MjIsMTQgKzIzNjEzLDE0IEBACiAuUEhPTlk6IGFsbC1nY2MgbWF5YmUtYWxsLWdjYwogbWF5YmUtYWxsLWdjYzoKIGFsbC1nY2M6IGNvbmZpZ3VyZS1nY2MKLQlAaWYgWyAtZiBnY2Mvc3RhZ2VfbGFzdCBdIDsgdGhlbiBcCi0JICByPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0JICBzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJaWYgWyAtZiBzdGFnZV9sYXN0IF0gOyB0aGVuIFwKKwkgIHRydWUgOyBcCisJZWxpZiBbIC1mIGdjYy9zdGFnZV9sYXN0IF0gOyB0aGVuIFwKIAkgICQoU0VUX0xJQl9QQVRIKSBcCiAJICAoY2QgZ2NjICYmICQoTUFLRSkgJChHQ0NfRkxBR1NfVE9fUEFTUykgcXVpY2tzdHJhcCk7IFwKIAllbHNlIFwKLQkgIHI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQkgIHM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAogCSAgJChTRVRfTElCX1BBVEgpIFwKIAkgIChjZCBnY2MgJiYgJChNQUtFKSAkKEdDQ19GTEFHU19UT19QQVNTKSBhbGwpOyBcCiAJZmkKQEAgLTIzNzY3LDYgKzIzNzU4LDQ3NCBAQAogCSAgbXYgZ2NjL3RtcC1pbmNsdWRlIGdjYy9pbmNsdWRlIDI+L2Rldi9udWxsOyBcCiAJZWxzZSB0cnVlOyBmaQogCisjIE90aGVyIHRhcmdldHMgKGR2aSwgaW5mbywgZXRjLikKKworLlBIT05ZOiBtYXliZS1pbmZvLWdjYyBpbmZvLWdjYworbWF5YmUtaW5mby1nY2M6CitpbmZvLWdjYzogXAorICAgIGNvbmZpZ3VyZS1nY2MgCisJQFsgLWYgLi9nY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0dDQ19GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluZm8gaW4gZ2NjIiA7IFwKKwkoY2QgZ2NjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgaW5mbykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1kdmktZ2NjIGR2aS1nY2MKK21heWJlLWR2aS1nY2M6CitkdmktZ2NjOiBcCisgICAgY29uZmlndXJlLWdjYyAKKwlAWyAtZiAuL2djYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfR0NDX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgZHZpIGluIGdjYyIgOyBcCisJKGNkIGdjYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIGR2aSkgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1UQUdTLWdjYyBUQUdTLWdjYworbWF5YmUtVEFHUy1nY2M6CitUQUdTLWdjYzogXAorICAgIGNvbmZpZ3VyZS1nY2MgCisJQFsgLWYgLi9nY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0dDQ19GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIFRBR1MgaW4gZ2NjIiA7IFwKKwkoY2QgZ2NjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgVEFHUykgXAorCSAgfHwgZXhpdCAxCisKKworLlBIT05ZOiBtYXliZS1pbnN0YWxsLWluZm8tZ2NjIGluc3RhbGwtaW5mby1nY2MKK21heWJlLWluc3RhbGwtaW5mby1nY2M6CitpbnN0YWxsLWluZm8tZ2NjOiBcCisgICAgY29uZmlndXJlLWdjYyBcCisgICAgaW5mby1nY2MgCisJQFsgLWYgLi9nY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0dDQ19GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGwtaW5mbyBpbiBnY2MiIDsgXAorCShjZCBnY2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsLWluZm8pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtaW5zdGFsbGNoZWNrLWdjYyBpbnN0YWxsY2hlY2stZ2NjCittYXliZS1pbnN0YWxsY2hlY2stZ2NjOgoraW5zdGFsbGNoZWNrLWdjYzogXAorICAgIGNvbmZpZ3VyZS1nY2MgCisJQFsgLWYgLi9nY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0dDQ19GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGluc3RhbGxjaGVjayBpbiBnY2MiIDsgXAorCShjZCBnY2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBpbnN0YWxsY2hlY2spIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbW9zdGx5Y2xlYW4tZ2NjIG1vc3RseWNsZWFuLWdjYworbWF5YmUtbW9zdGx5Y2xlYW4tZ2NjOgorbW9zdGx5Y2xlYW4tZ2NjOiAKKwlAWyAtZiAuL2djYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfR0NDX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgbW9zdGx5Y2xlYW4gaW4gZ2NjIiA7IFwKKwkoY2QgZ2NjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgbW9zdGx5Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtY2xlYW4tZ2NjIGNsZWFuLWdjYworbWF5YmUtY2xlYW4tZ2NjOgorY2xlYW4tZ2NjOiAKKwlAWyAtZiAuL2djYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfR0NDX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgY2xlYW4gaW4gZ2NjIiA7IFwKKwkoY2QgZ2NjICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtZGlzdGNsZWFuLWdjYyBkaXN0Y2xlYW4tZ2NjCittYXliZS1kaXN0Y2xlYW4tZ2NjOgorZGlzdGNsZWFuLWdjYzogCisJQFsgLWYgLi9nY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJJChTRVRfTElCX1BBVEgpIFwKKwlmb3IgZmxhZyBpbiAkKEVYVFJBX0dDQ19GTEFHUyk7IGRvIFwKKwkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCisJZG9uZTsgXAorCWVjaG8gIkRvaW5nIGRpc3RjbGVhbiBpbiBnY2MiIDsgXAorCShjZCBnY2MgJiYgXAorCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAorCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKKwkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCisJICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAorCSAgICAgICAgICBkaXN0Y2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKy5QSE9OWTogbWF5YmUtbWFpbnRhaW5lci1jbGVhbi1nY2MgbWFpbnRhaW5lci1jbGVhbi1nY2MKK21heWJlLW1haW50YWluZXItY2xlYW4tZ2NjOgorbWFpbnRhaW5lci1jbGVhbi1nY2M6IAorCUBbIC1mIC4vZ2NjL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9HQ0NfRkxBR1MpOyBkbyBcCisJICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAorCWRvbmU7IFwKKwllY2hvICJEb2luZyBtYWludGFpbmVyLWNsZWFuIGluIGdjYyIgOyBcCisJKGNkIGdjYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIG1haW50YWluZXItY2xlYW4pIFwKKwkgIHx8IGV4aXQgMQorCisKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgR0NDIGJvb3RzdHJhcCBzdXBwb3J0CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIFdlIG5hbWUgdGhlIGRpcmVjdG9yaWVzIGZvciB0aGUgdmFyaW91cyBzdGFnZXMgInN0YWdlMS1nY2MiLAorIyAic3RhZ2UyLWdjYyIsInN0YWdlMy1nY2MiLCBldGMuICAKKyMgVW5mb3J0dW5hdGVseSwgdGhlICdjb21wYXJlJyBwcm9jZXNzIHdpbGwgZmFpbCAob24gZGVidWdnaW5nIGluZm9ybWF0aW9uKQorIyBpZiBhbnkgZGlyZWN0b3J5IG5hbWVzIGFyZSBkaWZmZXJlbnQhCisjIFNvIGluIHRoZSBidWlsZGluZyBydWxlIGZvciBlYWNoIHN0YWdlLCB3ZSByZWxvY2F0ZSB0aGVtIGJlZm9yZSBhbmQgYWZ0ZXIuCisjIFRoZSBjdXJyZW50IG9uZSBpcyAnZ2NjJywgd2hpbGUgdGhlIHByZXZpb3VzIG9uZSBpcyAncHJldi1nY2MnLiAgKFRoZQorIyBjdXJyZW50IG9uZSBtdXN0IGJlICdnY2MnIGZvciBub3cgYmVjYXVzZSB0aGUgc2NyaXB0cyBpbiB0aGF0IGRpcmVjdG9yeQorIyBhc3N1bWUgaXQuKQorIyBBdCB0aGUgZW5kIG9mIHRoZSBib290c3RyYXAsICdzdGFnZTMtZ2NjJyBtdXN0IGJlIG1vdmVkIHRvICdnY2MnIHNvIHRoYXQKKyMgbGlicmFyaWVzIGNhbiBmaW5kIGl0LiAgSWNrIQorCisjIEJ1Z3M6IFRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBub3QgcGFyYWxsZWwtbWFrZSBzYWZlLgorCisjICd0b3VjaCcgZG9lc24ndCB3b3JrIHJpZ2h0IG9uIHNvbWUgcGxhdGZvcm1zLgorU1RBTVAgPSBlY2hvIHRpbWVzdGFtcCA+IAorCisjIE9ubHkgYnVpbGQgdGhlIEMgY29tcGlsZXIgZm9yIHN0YWdlMSwgYmVjYXVzZSB0aGF0IGlzIHRoZSBvbmx5IG9uZSB0aGF0CisjIHdlIGNhbiBndWFyYW50ZWUgd2lsbCBidWlsZCB3aXRoIHRoZSBuYXRpdmUgY29tcGlsZXIsIGFuZCBhbHNvIGl0IGlzIHRoZQorIyBvbmx5IHRoaW5nIHVzZWZ1bCBmb3IgYnVpbGRpbmcgc3RhZ2UyLiBTVEFHRTFfQ0ZMQUdTICh2aWEgQ0ZMQUdTKSwKKyMgTUFLRUlORk8gYW5kIE1BS0VJTkZPRkxBR1MgYXJlIGV4cGxpY2l0bHkgcGFzc2VkIGhlcmUgdG8gbWFrZSB0aGVtCisjIG92ZXJyaWRlYWJsZSAoZm9yIGEgYm9vdHN0cmFwIGJ1aWxkIHN0YWdlMSBhbHNvIGJ1aWxkcyBnY2MuaW5mbykuCisKK1NUQUdFMV9DRkxBR1M9QHN0YWdlMV9jZmxhZ3NACitTVEFHRTFfTEFOR1VBR0VTPUBzdGFnZTFfbGFuZ3VhZ2VzQAorCisjIEZvciBzdGFnZSAxOgorIyAqIFdlIGZvcmNlLWRpc2FibGUgaW50ZXJtb2R1bGUgb3B0aW1pemF0aW9ucywgZXZlbiBpZgorIyAgIC0tZW5hYmxlLWludGVybW9kdWxlIHdhcyBwYXNzZWQsIHNpbmNlIHRoZSBpbnN0YWxsZWQgY29tcGlsZXIgcHJvYmFibHkKKyMgICBjYW4ndCBoYW5kbGUgdGhlbS4gIEx1Y2tpbHksIGF1dG9jb25mIGFsd2F5cyByZXNwZWN0cworIyAgIHRoZSBsYXN0IGFyZ3VtZW50IHdoZW4gY29uZmxpY3RpbmcgLS1lbmFibGUgYXJndW1lbnRzIGFyZSBwYXNzZWQuCisjICogTGlrZXdpc2UsIHdlIGZvcmNlLWRpc2FibGUgY292ZXJhZ2UgZmxhZ3MsIHNpbmNlIHRoZSBpbnN0YWxsZWQgY29tcGlsZXIKKyMgICBwcm9iYWJseSBoYXMgbmV2ZXIgaGVhcmQgb2YgdGhlbS4KKyMgKiBXZSBidWlsZCBvbmx5IEMgKGFuZCBwb3NzaWJseSBBZGEpLgorY29uZmlndXJlLXN0YWdlMS1nY2M6CisJZWNobyBjb25maWd1cmUtc3RhZ2UxLWdjYyA+IHN0YWdlX2xhc3QgOyBcCisJaWYgWyAtZiBzdGFnZTEtZ2NjL01ha2VmaWxlIF0gOyB0aGVuIFwKKwkgICQoU1RBTVApIGNvbmZpZ3VyZS1zdGFnZTEtZ2NjIDsgXAorCSAgZXhpdCAwOyBcCisJZWxzZSBcCisJICB0cnVlIDsgXAorCWZpIDsgXAorCVsgLWQgc3RhZ2UxLWdjYyBdIHx8IG1rZGlyIHN0YWdlMS1nY2M7IFwKKwltdiBzdGFnZTEtZ2NjIGdjYyA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKwlUT1BMRVZFTF9DT05GSUdVUkVfQVJHVU1FTlRTPSIkKFRPUExFVkVMX0NPTkZJR1VSRV9BUkdVTUVOVFMpIjsgZXhwb3J0IFRPUExFVkVMX0NPTkZJR1VSRV9BUkdVTUVOVFM7IFwKKwlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKKwlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKKwlDWFg9IiQoQ1hYKSI7IGV4cG9ydCBDWFg7IFwKKwlDWFhGTEFHUz0iJChDWFhGTEFHUykiOyBleHBvcnQgQ1hYRkxBR1M7IFwKKwlBUj0iJChBUikiOyBleHBvcnQgQVI7IFwKKwlBUz0iJChBUykiOyBleHBvcnQgQVM7IFwKKwlDQ19GT1JfQlVJTEQ9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQ19GT1JfQlVJTEQ7IFwKKwlETExUT09MPSIkKERMTFRPT0wpIjsgZXhwb3J0IERMTFRPT0w7IFwKKwlMRD0iJChMRCkiOyBleHBvcnQgTEQ7IFwKKwlOTT0iJChOTSkiOyBleHBvcnQgTk07IFwKKwlSQU5MSUI9IiQoUkFOTElCKSI7IGV4cG9ydCBSQU5MSUI7IFwKKwlXSU5EUkVTPSIkKFdJTkRSRVMpIjsgZXhwb3J0IFdJTkRSRVM7IFwKKwlPQkpDT1BZPSIkKE9CSkNPUFkpIjsgZXhwb3J0IE9CSkNPUFk7IFwKKwlPQkpEVU1QPSIkKE9CSkRVTVApIjsgZXhwb3J0IE9CSkRVTVA7IFwKKwllY2hvIENvbmZpZ3VyaW5nIHN0YWdlIDEgaW4gZ2NjOyBcCisJY2QgZ2NjIHx8IGV4aXQgMTsgXAorCWNhc2UgJChzcmNkaXIpIGluIFwKKwkgIFwuKSBcCisJICAgIHNyY2Rpcm9wdGlvbj0iLS1zcmNkaXI9LiI7IFwKKwkgICAgbGlic3JjZGlyPSIuIjs7IFwKKwkgIC8qIHwgW0EtWmEtel06W1xcL10qKSBcCisJICAgIHNyY2Rpcm9wdGlvbj0iLS1zcmNkaXI9JChzcmNkaXIpL2djYyI7IFwKKwkgICAgbGlic3JjZGlyPSIkJHMvZ2NjIjs7IFwKKwkgICopIFwKKwkgICAgc3JjZGlyb3B0aW9uPSItLXNyY2Rpcj0uLi8kKHNyY2RpcikvZ2NjIjsgXAorCSAgICBsaWJzcmNkaXI9IiQkcy9nY2MiOzsgXAorCWVzYWM7IFwKKwkkKFNIRUxMKSAkJHtsaWJzcmNkaXJ9L2NvbmZpZ3VyZSBcCisJICAkKEhPU1RfQ09ORklHQVJHUykgJCR7c3JjZGlyb3B0aW9ufSBcCisJICAtLWRpc2FibGUtaW50ZXJtb2R1bGUgLS1kaXNhYmxlLWNvdmVyYWdlIFwKKwkgIC0tZW5hYmxlLWxhbmd1YWdlcz0iJChTVEFHRTFfTEFOR1VBR0VTKSI7IFwKKwljZCAuLiA7IFwKKwltdiBnY2Mgc3RhZ2UxLWdjYyA7IFwKKwkkKFNUQU1QKSBjb25maWd1cmUtc3RhZ2UxLWdjYworCisjIFJlYWwgdGFyZ2V0cyBhY3QgcGhvbnkgaWYgdGhleSBkZXBlbmQgb24gcGhvbnkgdGFyZ2V0czsgdGhpcyBoYWNrCisjIHByZXZlbnRzIGdyYXR1aXRvdXMgcmVidWlsZGluZyBvZiBzdGFnZSAxLgorcHJlYm9vdHN0cmFwOgorCSQoTUFLRSkgYWxsLWJvb3RzdHJhcAorCSQoU1RBTVApIHByZWJvb3RzdHJhcAorCithbGwtc3RhZ2UxLWdjYzogY29uZmlndXJlLXN0YWdlMS1nY2MgcHJlYm9vdHN0cmFwCisJZWNobyBhbGwtc3RhZ2UxLWdjYyA+IHN0YWdlX2xhc3QgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCW12IHN0YWdlMS1nY2MgZ2NjIDsgXAorCWNkIGdjYyAmJiBcCisJJChNQUtFKSAkKEdDQ19GTEFHU19UT19QQVNTKSBcCisJCUNGTEFHUz0iJChTVEFHRTFfQ0ZMQUdTKSIgXAorCQl8fCBleGl0IDEgOyBcCisJY2QgLi4gOyBcCisJbXYgZ2NjIHN0YWdlMS1nY2MgOyBcCisJJChTVEFNUCkgYWxsLXN0YWdlMS1nY2MKKworIyBUT0RPOiBEZWFsIHdpdGggU1RBR0VfUFJFRklYICh3aGljaCBpcyBvbmx5IGZvciBhZGEsIGluY2lkZW50YWxseSkKKyMgUG9zc2libHkgcGFzcyAtLWVuYWJsZS13ZXJyb3ItYWx3YXlzIChkZXBlbmRpbmcgb24gLS1lbmFibGUtd2Vycm9yKTsKKyMgdGhhdCdzIHdoYXQgQHN0YWdlMl93ZXJyb3JfZmxhZ0AgaXMgZm9yCitjb25maWd1cmUtc3RhZ2UyLWdjYzogYWxsLXN0YWdlMS1nY2MKKwllY2hvIGNvbmZpZ3VyZS1zdGFnZTItZ2NjID4gc3RhZ2VfbGFzdCA7IFwKKwlpZiBbIC1mIHN0YWdlMi1nY2MvTWFrZWZpbGUgXSA7IHRoZW4gXAorCSAgJChTVEFNUCkgY29uZmlndXJlLXN0YWdlMi1nY2MgOyBcCisJICBleGl0IDA7IFwKKwllbHNlIFwKKwkgIHRydWUgOyBcCisJZmkgOyBcCisJWyAtZCBzdGFnZTItZ2NjIF0gfHwgbWtkaXIgc3RhZ2UyLWdjYzsgXAorCW12IHN0YWdlMi1nY2MgZ2NjIDsgXAorCW12IHN0YWdlMS1nY2MgcHJldi1nY2MgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCisJVE9QTEVWRUxfQ09ORklHVVJFX0FSR1VNRU5UUz0iJChUT1BMRVZFTF9DT05GSUdVUkVfQVJHVU1FTlRTKSI7IGV4cG9ydCBUT1BMRVZFTF9DT05GSUdVUkVfQVJHVU1FTlRTOyBcCisJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCisJQ1hYPSIkKENYWCkiOyBleHBvcnQgQ1hYOyBcCisJQ1hYRkxBR1M9IiQoQ1hYRkxBR1MpIjsgZXhwb3J0IENYWEZMQUdTOyBcCisJQVI9IiQoQVIpIjsgZXhwb3J0IEFSOyBcCisJQVM9IiQoQVMpIjsgZXhwb3J0IEFTOyBcCisJRExMVE9PTD0iJChETExUT09MKSI7IGV4cG9ydCBETExUT09MOyBcCisJTEQ9IiQoTEQpIjsgZXhwb3J0IExEOyBcCisJTk09IiQoTk0pIjsgZXhwb3J0IE5NOyBcCisJUkFOTElCPSIkKFJBTkxJQikiOyBleHBvcnQgUkFOTElCOyBcCisJV0lORFJFUz0iJChXSU5EUkVTKSI7IGV4cG9ydCBXSU5EUkVTOyBcCisJT0JKQ09QWT0iJChPQkpDT1BZKSI7IGV4cG9ydCBPQkpDT1BZOyBcCisJT0JKRFVNUD0iJChPQkpEVU1QKSI7IGV4cG9ydCBPQkpEVU1QOyBcCisJQ0M9IiQoU1RBR0VfQ0NfV1JBUFBFUikgJCRyL3ByZXYtZ2NjL3hnY2MkKGV4ZWV4dCkgLUIkJHIvcHJldi1nY2MvIC1CJChidWlsZF90b29sZGlyKS9iaW4vIjsgZXhwb3J0IENDOyBcCisJQ0NfRk9SX0JVSUxEPSIkKFNUQUdFX0NDX1dSQVBQRVIpICQkci9wcmV2LWdjYy94Z2NjJChleGVleHQpIC1CJCRyL3ByZXYtZ2NjLyAtQiQoYnVpbGRfdG9vbGRpcikvYmluLyI7IGV4cG9ydCBDQ19GT1JfQlVJTEQ7IFwKKwllY2hvIENvbmZpZ3VyaW5nIHN0YWdlIDIgaW4gZ2NjOyBcCisJY2QgZ2NjIHx8IGV4aXQgMTsgXAorCWNhc2UgJChzcmNkaXIpIGluIFwKKwkgIFwuKSBcCisJICAgIHNyY2Rpcm9wdGlvbj0iLS1zcmNkaXI9LiI7IFwKKwkgICAgbGlic3JjZGlyPSIuIjs7IFwKKwkgIC8qIHwgW0EtWmEtel06W1xcL10qKSBcCisJICAgIHNyY2Rpcm9wdGlvbj0iLS1zcmNkaXI9JChzcmNkaXIpL2djYyI7IFwKKwkgICAgbGlic3JjZGlyPSIkJHMvZ2NjIjs7IFwKKwkgICopIFwKKwkgICAgc3JjZGlyb3B0aW9uPSItLXNyY2Rpcj0uLi8kKHNyY2RpcikvZ2NjIjsgXAorCSAgICBsaWJzcmNkaXI9IiQkcy9nY2MiOzsgXAorCWVzYWM7IFwKKwkkKFNIRUxMKSAkJHtsaWJzcmNkaXJ9L2NvbmZpZ3VyZSBcCisJICAkKEhPU1RfQ09ORklHQVJHUykgJCR7c3JjZGlyb3B0aW9ufSBAc3RhZ2UyX3dlcnJvcl9mbGFnQCA7IFwKKwljZCAuLiA7IFwKKwltdiBnY2Mgc3RhZ2UyLWdjYyA7IFwKKwltdiBwcmV2LWdjYyBzdGFnZTEtZ2NjIDsgXAorCSQoU1RBTVApIGNvbmZpZ3VyZS1zdGFnZTItZ2NjCisKKyMgRmxhZ3MgdG8gcGFzcyB0byBzdGFnZTIgYW5kIGxhdGVyIG1ha2VzLgorQk9PVF9DRkxBR1M9IC1nIC1PMgorUE9TVFNUQUdFMV9GTEFHU19UT19QQVNTID0gXAorCUNGTEFHUz0iJChCT09UX0NGTEFHUykiIFwKKwlBREFDPSJcJCQoQ0MpIgorCithbGwtc3RhZ2UyLWdjYzogYWxsLXN0YWdlMS1nY2MgY29uZmlndXJlLXN0YWdlMi1nY2MKKwllY2hvIGFsbC1zdGFnZTItZ2NjID4gc3RhZ2VfbGFzdCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJbXYgc3RhZ2UyLWdjYyBnY2MgOyBcCisJbXYgc3RhZ2UxLWdjYyBwcmV2LWdjYyA7IFwKKwljZCBnY2MgJiYgXAorCSQoTUFLRSkgJChHQ0NfRkxBR1NfVE9fUEFTUykgXAorCQlDQz0iJChTVEFHRV9DQ19XUkFQUEVSKSAkJHIvcHJldi1nY2MveGdjYyQoZXhlZXh0KSAtQiQkci9wcmV2LWdjYy8gLUIkKGJ1aWxkX3Rvb2xkaXIpL2Jpbi8iIFwKKwkJQ0NfRk9SX0JVSUxEPSIkKFNUQUdFX0NDX1dSQVBQRVIpICQkci9wcmV2LWdjYy94Z2NjJChleGVleHQpIC1CJCRyL3ByZXYtZ2NjLyAtQiQoYnVpbGRfdG9vbGRpcikvYmluLyIgXAorCQlTVEFHRV9QUkVGSVg9JCRyL3ByZXYtZ2NjLyBcCisJCSQoUE9TVFNUQUdFMV9GTEFHU19UT19QQVNTKSB8fCBleGl0IDEgOyBcCisJY2QgLi4gOyBcCisJbXYgcHJldi1nY2Mgc3RhZ2UxLWdjYyA7IFwKKwltdiBnY2Mgc3RhZ2UyLWdjYyA7IFwKKwkkKFNUQU1QKSBhbGwtc3RhZ2UyLWdjYworCitjb25maWd1cmUtc3RhZ2UzLWdjYzogYWxsLXN0YWdlMi1nY2MKKwllY2hvIGNvbmZpZ3VyZS1zdGFnZTMtZ2NjID4gc3RhZ2VfbGFzdCA7IFwKKwlpZiBbIC1mIHN0YWdlMy1nY2MvTWFrZWZpbGUgXSA7IHRoZW4gXAorCSAgJChTVEFNUCkgY29uZmlndXJlLXN0YWdlMy1nY2MgOyBcCisJICBleGl0IDA7IFwKKwllbHNlIFwKKwkgIHRydWUgOyBcCisJZmkgOyBcCisJWyAtZCBzdGFnZTMtZ2NjIF0gfHwgbWtkaXIgc3RhZ2UzLWdjYzsgXAorCW12IHN0YWdlMy1nY2MgZ2NjIDsgXAorCW12IHN0YWdlMi1nY2MgcHJldi1nY2MgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCisJVE9QTEVWRUxfQ09ORklHVVJFX0FSR1VNRU5UUz0iJChUT1BMRVZFTF9DT05GSUdVUkVfQVJHVU1FTlRTKSI7IGV4cG9ydCBUT1BMRVZFTF9DT05GSUdVUkVfQVJHVU1FTlRTOyBcCisJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCisJQ1hYPSIkKENYWCkiOyBleHBvcnQgQ1hYOyBcCisJQ1hYRkxBR1M9IiQoQ1hYRkxBR1MpIjsgZXhwb3J0IENYWEZMQUdTOyBcCisJQVI9IiQoQVIpIjsgZXhwb3J0IEFSOyBcCisJQVM9IiQoQVMpIjsgZXhwb3J0IEFTOyBcCisJRExMVE9PTD0iJChETExUT09MKSI7IGV4cG9ydCBETExUT09MOyBcCisJTEQ9IiQoTEQpIjsgZXhwb3J0IExEOyBcCisJTk09IiQoTk0pIjsgZXhwb3J0IE5NOyBcCisJUkFOTElCPSIkKFJBTkxJQikiOyBleHBvcnQgUkFOTElCOyBcCisJV0lORFJFUz0iJChXSU5EUkVTKSI7IGV4cG9ydCBXSU5EUkVTOyBcCisJT0JKQ09QWT0iJChPQkpDT1BZKSI7IGV4cG9ydCBPQkpDT1BZOyBcCisJT0JKRFVNUD0iJChPQkpEVU1QKSI7IGV4cG9ydCBPQkpEVU1QOyBcCisJQ0M9IiQoU1RBR0VfQ0NfV1JBUFBFUikgJCRyL3ByZXYtZ2NjL3hnY2MkKGV4ZWV4dCkgLUIkJHIvcHJldi1nY2MvIC1CJChidWlsZF90b29sZGlyKS9iaW4vIjsgZXhwb3J0IENDOyBcCisJQ0NfRk9SX0JVSUxEPSIkKFNUQUdFX0NDX1dSQVBQRVIpICQkci9wcmV2LWdjYy94Z2NjJChleGVleHQpIC1CJCRyL3ByZXYtZ2NjLyAtQiQoYnVpbGRfdG9vbGRpcikvYmluLyI7IGV4cG9ydCBDQ19GT1JfQlVJTEQ7IFwKKwllY2hvIENvbmZpZ3VyaW5nIHN0YWdlIDMgaW4gZ2NjOyBcCisJY2QgZ2NjIHx8IGV4aXQgMTsgXAorCWNhc2UgJChzcmNkaXIpIGluIFwKKwkgIFwuKSBcCisJICAgIHNyY2Rpcm9wdGlvbj0iLS1zcmNkaXI9LiI7IFwKKwkgICAgbGlic3JjZGlyPSIuIjs7IFwKKwkgIC8qIHwgW0EtWmEtel06W1xcL10qKSBcCisJICAgIHNyY2Rpcm9wdGlvbj0iLS1zcmNkaXI9JChzcmNkaXIpL2djYyI7IFwKKwkgICAgbGlic3JjZGlyPSIkJHMvZ2NjIjs7IFwKKwkgICopIFwKKwkgICAgc3JjZGlyb3B0aW9uPSItLXNyY2Rpcj0uLi8kKHNyY2RpcikvZ2NjIjsgXAorCSAgICBsaWJzcmNkaXI9IiQkcy9nY2MiOzsgXAorCWVzYWM7IFwKKwkkKFNIRUxMKSAkJHtsaWJzcmNkaXJ9L2NvbmZpZ3VyZSBcCisJICAkKEhPU1RfQ09ORklHQVJHUykgJCR7c3JjZGlyb3B0aW9ufSBAc3RhZ2UyX3dlcnJvcl9mbGFnQCA7IFwKKwljZCAuLiA7IFwKKwltdiBnY2Mgc3RhZ2UzLWdjYyA7IFwKKwltdiBwcmV2LWdjYyBzdGFnZTItZ2NjIDsgXAorCSQoU1RBTVApIGNvbmZpZ3VyZS1zdGFnZTMtZ2NjCisKK2FsbC1zdGFnZTMtZ2NjOiBhbGwtc3RhZ2UyLWdjYyBjb25maWd1cmUtc3RhZ2UzLWdjYworCWVjaG8gYWxsLXN0YWdlMy1nY2MgPiBzdGFnZV9sYXN0IDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwltdiBzdGFnZTItZ2NjIHByZXYtZ2NjIDsgXAorCW12IHN0YWdlMy1nY2MgZ2NjIDsgXAorCWNkIGdjYyAmJiBcCisJJChNQUtFKSAkKEdDQ19GTEFHU19UT19QQVNTKSBcCisJCUNDPSIkKFNUQUdFX0NDX1dSQVBQRVIpICQkci9wcmV2LWdjYy94Z2NjJChleGVleHQpIC1CJCRyL3ByZXYtZ2NjLyAtQiQoYnVpbGRfdG9vbGRpcikvYmluLyIgXAorCQlDQ19GT1JfQlVJTEQ9IiQoU1RBR0VfQ0NfV1JBUFBFUikgJCRyL3ByZXYtZ2NjL3hnY2MkKGV4ZWV4dCkgLUIkJHIvcHJldi1nY2MvIC1CJChidWlsZF90b29sZGlyKS9iaW4vIiBcCisJCVNUQUdFX1BSRUZJWD0kJHIvcHJldi1nY2MvIFwKKwkJJChQT1NUU1RBR0UxX0ZMQUdTX1RPX1BBU1MpIHx8IGV4aXQgMSA7IFwKKwljZCAuLiA7IFwKKwltdiBwcmV2LWdjYyBzdGFnZTItZ2NjIDsgXAorCW12IGdjYyBzdGFnZTMtZ2NjIDsgXAorCSQoU1RBTVApIGFsbC1zdGFnZTMtZ2NjCisKKyMgV2Ugb25seSB3YW50IHRvIGNvbXBhcmUgLm8gZmlsZXMsIHNvIHNldCB0aGlzIQorb2JqZXh0ID0gLm8KKworY29tcGFyZTogYWxsLXN0YWdlMy1nY2MKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJcm0gLWYgLmJhZF9jb21wYXJlIDsgXAorCWNkIHN0YWdlMy1nY2M7IFwKKwlmaWxlcz1gZmluZCAuIC1uYW1lICIqJChvYmpleHQpIiAtcHJpbnRgIDsgXAorCWNkIC4uIDsgXAorCWZvciBmaWxlIGluICQke2ZpbGVzfSA7IGRvIFwKKwkgIGNtcCAtLWlnbm9yZS1pbml0aWFsPTE2ICQkci9zdGFnZTItZ2NjLyQkZmlsZSAkJHIvc3RhZ2UzLWdjYy8kJGZpbGUgXAorCSAgICAgID4gL2Rldi9udWxsIDI+JjE7IFwKKwkgIHRlc3QgJCQ/IC1lcSAxICYmIGVjaG8gJCRmaWxlIGRpZmZlcnMgPj4gLmJhZF9jb21wYXJlIHx8IHRydWU7IFwKKwlkb25lIDsgXAorCWlmIFsgLWYgLmJhZF9jb21wYXJlIF07IHRoZW4gXAorCSAgZWNobyAiQm9vdHN0cmFwIGNvbXBhcmlzb24gZmFpbHVyZSEiOyBcCisJICBjYXQgLmJhZF9jb21wYXJlOyBcCisJICBleGl0IDE7IFwKKwllbHNlIFwKKwkgIHRydWU7IFwKKwlmaSA7IFwKKyAgICAgICAgJChTVEFNUCkgY29tcGFyZQorCisuUEhPTlk6IG5ldy1ib290c3RyYXAKKyMgVGhpcyB0YXJnZXQgZXhpc3RzIHNvIHRoYXQgZXZlcnl0aGluZyBjYW4gYmUgbWFkZSBpbiBvbmUgcGFzcy4KKyMgJ2FsbC1nY2MnIGhhcyB0byBhdm9pZCBzdG9tcGluZyBvbiB0aGUgYm9vdHN0cmFwLWdlbmVyYXRlZCBnY2MgZm9yCisjIHRoaXMgdG8gd29yay4KK25ldy1ib290c3RyYXA6IGNvbXBhcmUKKwltdiBzdGFnZTMtZ2NjIGdjYyA7IFwKKwkkKE1BS0UpIGFsbCA7IFwKKwltdiBnY2Mgc3RhZ2UzLWdjYworCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIERlcGVuZGVuY2llcyBiZXR3ZWVuIGRpZmZlcmVudCBtb2R1bGVzCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9NYWtlZmlsZS50cGwgYi9NYWtlZmlsZS50cGwKaW5kZXggYzgyYzgxOC4uZTUyZjcwOSAxMDA2NDQKLS0tIGEvTWFrZWZpbGUudHBsCisrKyBiL01ha2VmaWxlLnRwbApAQCAtNzMsNyArNzMsNiBAQAogIyBNaXNjZWxsYW5lb3VzIG5vbi1zdGFuZGFyZCBhdXRvY29uZi1zZXQgdmFyaWFibGVzCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotbGlua3M9QGNvbmZpZ2xpbmtzQAogIyBUaGUgZmlsZSBjb250YWluaW5nIEdDQydzIHZlcnNpb24gbnVtYmVyLgogZ2NjX3ZlcnNpb25fdHJpZ2dlciA9IEBnY2NfdmVyc2lvbl90cmlnZ2VyQAogZ2NjX3ZlcnNpb24gPSBAZ2NjX3ZlcnNpb25ACkBAIC0yNTAsNiArMjQ5LDcgQEAKIEZMQUdTX0ZPUl9UQVJHRVQgPSBARkxBR1NfRk9SX1RBUkdFVEAKIAogQVJfRk9SX1RBUkdFVD1AQVJfRk9SX1RBUkdFVEAKK0NPTkZJR1VSRURfQVJfRk9SX1RBUkdFVD1AQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUQAogVVNVQUxfQVJfRk9SX1RBUkdFVCA9IGAgXAogICBpZiBbIC1mICQkci9iaW51dGlscy9hciBdIDsgdGhlbiBcCiAgICAgZWNobyAkJHIvYmludXRpbHMvYXIgOyBcCkBAIC0yNTcsMTEgKzI1NywxMiBAQAogICAgIGlmIFsgJyQoaG9zdCknID0gJyQodGFyZ2V0KScgXSA7IHRoZW4gXAogICAgICAgZWNobyAkKEFSKTsgXAogICAgIGVsc2UgXAotICAgICAgIGVjaG8gYXIgfCBzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknIDsgXAorICAgICAgZWNobyAkKENPTkZJR1VSRURfQVJfRk9SX1RBUkdFVCkgOyBcCiAgICAgZmk7IFwKICAgZmlgCiAKIEFTX0ZPUl9UQVJHRVQ9QEFTX0ZPUl9UQVJHRVRACitDT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVQ9QENPTkZJR1VSRURfQVNfRk9SX1RBUkdFVEAKIFVTVUFMX0FTX0ZPUl9UQVJHRVQgPSBgIFwKICAgaWYgWyAtZiAkJHIvZ2FzL2FzLW5ldyBdIDsgdGhlbiBcCiAgICAgZWNobyAkJHIvZ2FzL2FzLW5ldyA7IFwKQEAgLTI3MSw3ICsyNzIsNyBAQAogICAgIGlmIFsgJyQoaG9zdCknID0gJyQodGFyZ2V0KScgXSA7IHRoZW4gXAogICAgICAgZWNobyAkKEFTKTsgXAogICAgIGVsc2UgXAotICAgICAgIGVjaG8gYXMgfCBzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknIDsgXAorICAgICAgZWNobyAkKENPTkZJR1VSRURfQVNfRk9SX1RBUkdFVCkgOyBcCiAgICAgZmk7IFwKICAgZmlgCiAKQEAgLTI5Nyw2ICsyOTgsNyBAQAogTElCQ1hYRkxBR1NfRk9SX1RBUkdFVCA9ICQoQ1hYRkxBR1NfRk9SX1RBUkdFVCkgLWZuby1pbXBsaWNpdC10ZW1wbGF0ZXMKIAogRExMVE9PTF9GT1JfVEFSR0VUPUBETExUT09MX0ZPUl9UQVJHRVRACitDT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVD1AQ09ORklHVVJFRF9ETExUT09MX0ZPUl9UQVJHRVRACiBVU1VBTF9ETExUT09MX0ZPUl9UQVJHRVQgPSBgIFwKICAgaWYgWyAtZiAkJHIvYmludXRpbHMvZGxsdG9vbCBdIDsgdGhlbiBcCiAgICAgZWNobyAkJHIvYmludXRpbHMvZGxsdG9vbCA7IFwKQEAgLTMwNCwxMyArMzA2LDE0IEBACiAgICAgaWYgWyAnJChob3N0KScgPSAnJCh0YXJnZXQpJyBdIDsgdGhlbiBcCiAgICAgICBlY2hvICQoRExMVE9PTCk7IFwKICAgICBlbHNlIFwKLSAgICAgICBlY2hvIGRsbHRvb2wgfCBzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknIDsgXAorICAgICAgZWNobyAkKENPTkZJR1VSRURfRExMVE9PTF9GT1JfVEFSR0VUKSA7IFwKICAgICBmaTsgXAogICBmaWAKIAogR0NKX0ZPUl9UQVJHRVQgPSBAR0NKX0ZPUl9UQVJHRVRACiAKIExEX0ZPUl9UQVJHRVQ9QExEX0ZPUl9UQVJHRVRACitDT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQ9QENPTkZJR1VSRURfTERfRk9SX1RBUkdFVEAKIFVTVUFMX0xEX0ZPUl9UQVJHRVQgPSBgIFwKICAgaWYgWyAtZiAkJHIvbGQvbGQtbmV3IF0gOyB0aGVuIFwKICAgICBlY2hvICQkci9sZC9sZC1uZXcgOyBcCkBAIC0zMjAsMTMgKzMyMywxNCBAQAogICAgIGlmIFsgJyQoaG9zdCknID0gJyQodGFyZ2V0KScgXSA7IHRoZW4gXAogICAgICAgZWNobyAkKExEKTsgXAogICAgIGVsc2UgXAotICAgICAgIGVjaG8gbGQgfCBzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknIDsgXAorICAgICAgZWNobyAkKENPTkZJR1VSRURfTERfRk9SX1RBUkdFVCkgOyBcCiAgICAgZmk7IFwKICAgZmlgCiAKIExERkxBR1NfRk9SX1RBUkdFVCA9IAogCiBOTV9GT1JfVEFSR0VUPUBOTV9GT1JfVEFSR0VUQAorQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUPUBDT05GSUdVUkVEX05NX0ZPUl9UQVJHRVRACiBVU1VBTF9OTV9GT1JfVEFSR0VUID0gYCBcCiAgIGlmIFsgLWYgJCRyL2JpbnV0aWxzL25tLW5ldyBdIDsgdGhlbiBcCiAgICAgZWNobyAkJHIvYmludXRpbHMvbm0tbmV3IDsgXApAQCAtMzM2LDExICszNDAsMTIgQEAKICAgICBpZiBbICckKGhvc3QpJyA9ICckKHRhcmdldCknIF0gOyB0aGVuIFwKICAgICAgIGVjaG8gJChOTSk7IFwKICAgICBlbHNlIFwKLSAgICAgICBlY2hvIG5tIHwgc2VkICckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJyA7IFwKKyAgICAgIGVjaG8gJChDT05GSUdVUkVEX05NX0ZPUl9UQVJHRVQpIDsgXAogICAgIGZpOyBcCiAgIGZpYAogCiBSQU5MSUJfRk9SX1RBUkdFVD1AUkFOTElCX0ZPUl9UQVJHRVRACitDT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUPUBDT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUQAogVVNVQUxfUkFOTElCX0ZPUl9UQVJHRVQgPSBgIFwKICAgaWYgWyAtZiAkJHIvYmludXRpbHMvcmFubGliIF0gOyB0aGVuIFwKICAgICBlY2hvICQkci9iaW51dGlscy9yYW5saWIgOyBcCkBAIC0zNTIsMTEgKzM1NywxMiBAQAogICAgICAgICAgZWNobyByYW5saWI7IFwKICAgICAgIGZpOyBcCiAgICAgZWxzZSBcCi0gICAgICAgZWNobyByYW5saWIgfCBzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknIDsgXAorICAgICAgZWNobyAkKENPTkZJR1VSRURfUkFOTElCX0ZPUl9UQVJHRVQpIDsgXAogICAgIGZpOyBcCiAgIGZpYAogCiBXSU5EUkVTX0ZPUl9UQVJHRVQ9QFdJTkRSRVNfRk9SX1RBUkdFVEAKK0NPTkZJR1VSRURfV0lORFJFU19GT1JfVEFSR0VUPUBDT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVEAKIFVTVUFMX1dJTkRSRVNfRk9SX1RBUkdFVCA9IGAgXAogICBpZiBbIC1mICQkci9iaW51dGlscy93aW5kcmVzIF0gOyB0aGVuIFwKICAgICBlY2hvICQkci9iaW51dGlscy93aW5kcmVzIDsgXApAQCAtMzY0LDcgKzM3MCw3IEBACiAgICAgaWYgWyAnJChob3N0KScgPSAnJCh0YXJnZXQpJyBdIDsgdGhlbiBcCiAgICAgICBlY2hvICQoV0lORFJFUyk7IFwKICAgICBlbHNlIFwKLSAgICAgICBlY2hvIHdpbmRyZXMgfCBzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknIDsgXAorICAgICAgZWNobyAkKENPTkZJR1VSRURfV0lORFJFU19GT1JfVEFSR0VUKSA7IFwKICAgICBmaTsgXAogICBmaWAKIApAQCAtNDU5LDE1ICs0NjUsMTUgQEAKIAknQlVJTERfUFJFRklYXzE9JChCVUlMRF9QUkVGSVhfMSknIFwKIAkiR0NDX0ZPUl9UQVJHRVQ9JChHQ0NfRk9SX1RBUkdFVCkiIFwKIAkiQ0ZMQUdTX0ZPUl9CVUlMRD0kKENGTEFHU19GT1JfQlVJTEQpIiBcCi0JImBlY2hvICdMQU5HVUFHRVM9JChMQU5HVUFHRVMpJyB8IHNlZCAtZSBzLy4qPSQkL1hGT089L2AiIFwKLQkiYGVjaG8gJ1NUTVBfRklYUFJPVE89JChTVE1QX0ZJWFBST1RPKScgfCBzZWQgLWUgcy8uKj0kJC9YRk9PPS9gIiBcCi0JImBlY2hvICdMSU1JVFNfSF9URVNUPSQoTElNSVRTX0hfVEVTVCknIHwgc2VkIC1lIHMvLio9JCQvWEZPTz0vYCIgXAotCSJgZWNobyAnTElCR0NDMl9DRkxBR1M9JChMSUJHQ0MyX0NGTEFHUyknIHwgc2VkIC1lIHMvLio9JCQvWEZPTz0vYCIgXAotCSJgZWNobyAnTElCR0NDMl9ERUJVR19DRkxBR1M9JChMSUJHQ0MyX0RFQlVHX0NGTEFHUyknIHwgc2VkIC1lIHMvLio9JCQvWEZPTz0vYCIgXAotCSJgZWNobyAnTElCR0NDMl9JTkNMVURFUz0kKExJQkdDQzJfSU5DTFVERVMpJyB8IHNlZCAtZSBzLy4qPSQkL1hGT089L2AiIFwKLQkiYGVjaG8gJ1NUQUdFMV9DRkxBR1M9JChTVEFHRTFfQ0ZMQUdTKScgfCBzZWQgLWUgcy8uKj0kJC9YRk9PPS9gIiBcCi0JImBlY2hvICdCT09UX0NGTEFHUz0kKEJPT1RfQ0ZMQUdTKScgfCBzZWQgLWUgcy8uKj0kJC9YRk9PPS9gIiBcCi0JImBlY2hvICdCT09UX0FEQUZMQUdTPSQoQk9PVF9BREFGTEFHUyknIHwgc2VkIC1lIHMvLio9JCQvWEZPTz0vYCIKKwkiYGVjaG8gJ0xBTkdVQUdFUz0kKExBTkdVQUdFUyknIHwgc2VkIC1lIHMnL1tePV1bXj1dKj0kJC9YRk9PPS8nYCIgXAorCSJgZWNobyAnU1RNUF9GSVhQUk9UTz0kKFNUTVBfRklYUFJPVE8pJyB8IHNlZCAtZSBzJy9bXj1dW149XSo9JCQvWEZPTz0vJ2AiIFwKKwkiYGVjaG8gJ0xJTUlUU19IX1RFU1Q9JChMSU1JVFNfSF9URVNUKScgfCBzZWQgLWUgcycvW149XVtePV0qPSQkL1hGT089LydgIiBcCisJImBlY2hvICdMSUJHQ0MyX0NGTEFHUz0kKExJQkdDQzJfQ0ZMQUdTKScgfCBzZWQgLWUgcycvW149XVtePV0qPSQkL1hGT089LydgIiBcCisJImBlY2hvICdMSUJHQ0MyX0RFQlVHX0NGTEFHUz0kKExJQkdDQzJfREVCVUdfQ0ZMQUdTKScgfCBzZWQgLWUgcycvW149XVtePV0qPSQkL1hGT089LydgIiBcCisJImBlY2hvICdMSUJHQ0MyX0lOQ0xVREVTPSQoTElCR0NDMl9JTkNMVURFUyknIHwgc2VkIC1lIHMnL1tePV1bXj1dKj0kJC9YRk9PPS8nYCIgXAorCSJgZWNobyAnU1RBR0UxX0NGTEFHUz0kKFNUQUdFMV9DRkxBR1MpJyB8IHNlZCAtZSBzJy9bXj1dW149XSo9JCQvWEZPTz0vJ2AiIFwKKwkiYGVjaG8gJ0JPT1RfQ0ZMQUdTPSQoQk9PVF9DRkxBR1MpJyB8IHNlZCAtZSBzJy9bXj1dW149XSo9JCQvWEZPTz0vJ2AiIFwKKwkiYGVjaG8gJ0JPT1RfQURBRkxBR1M9JChCT09UX0FEQUZMQUdTKScgfCBzZWQgLWUgcycvW149XVtePV0qPSQkL1hGT089LydgIgogCiBHQ0NfRkxBR1NfVE9fUEFTUyA9ICQoQkFTRV9GTEFHU19UT19QQVNTKSAkKEVYVFJBX0hPU1RfRkxBR1MpICQoRVhUUkFfR0NDX0ZMQUdTKQogCkBAIC01MTYsODkgKzUyMiw2IEBACiAgIEZPUiB0YXJnZXRfbW9kdWxlcyArXSBcCiAgICAgbWF5YmUtWyttYWtlX3RhcmdldCtdLXRhcmdldC1bK21vZHVsZStdWysKICAgRU5ERk9SIHRhcmdldF9tb2R1bGVzICtdCi0KLSMgR0NDLCB0aGUgZXRlcm5hbCBzcGVjaWFsIGNhc2UKLS5QSE9OWTogbWF5YmUtWyttYWtlX3RhcmdldCtdLWdjYyBbK21ha2VfdGFyZ2V0K10tZ2NjCi1tYXliZS1bK21ha2VfdGFyZ2V0K10tZ2NjOgotWyttYWtlX3RhcmdldCtdLWdjYzogWysKLSAgRk9SIGRlcGVuZCArXVwKLSAgICBbK2RlcGVuZCtdLWdjYyBbKwotICBFTkRGT1IgZGVwZW5kICtdCi0JQFsgLWYgLi9nY2MvTWFrZWZpbGUgXSB8fCBleGl0IDA7IFwKLQlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCi0Jcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChTRVRfTElCX1BBVEgpIFwKLQlmb3IgZmxhZyBpbiAkKEVYVFJBX0dDQ19GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFsrbWFrZV90YXJnZXQrXSBpbiBnY2MiIDsgXAotCShjZCBnY2MgJiYgXAotCSAgJChNQUtFKSAkKEJBU0VfRkxBR1NfVE9fUEFTUykgIkFSPSQke0FSfSIgIkFTPSQke0FTfSIgXAotCSAgICAgICAgICAiQ0M9JCR7Q0N9IiAiQ1hYPSQke0NYWH0iICJMRD0kJHtMRH0iICJOTT0kJHtOTX0iIFwKLQkgICAgICAgICAgIlJBTkxJQj0kJHtSQU5MSUJ9IiBcCi0JICAgICAgICAgICJETExUT09MPSQke0RMTFRPT0x9IiAiV0lORFJFUz0kJHtXSU5EUkVTfSIgXAotCSAgICAgICAgICBbK21ha2VfdGFyZ2V0K10pIFwKLQkgIHx8IGV4aXQgMQotCi0jIEhvc3QgbW9kdWxlcy4KLVsrIEZPUiBob3N0X21vZHVsZXMgK10KLS5QSE9OWTogbWF5YmUtWyttYWtlX3RhcmdldCtdLVsrbW9kdWxlK10gWyttYWtlX3RhcmdldCtdLVsrbW9kdWxlK10KLW1heWJlLVsrbWFrZV90YXJnZXQrXS1bK21vZHVsZStdOgotWysgSUYgKG1hdGNoLXZhbHVlPyA9ICJtaXNzaW5nIiAoZ2V0ICJtYWtlX3RhcmdldCIpICkgK10KLSMgWyttb2R1bGUrXSBkb2Vzbid0IHN1cHBvcnQgWyttYWtlX3RhcmdldCtdLgotWyttYWtlX3RhcmdldCtdLVsrbW9kdWxlK106Ci1bKyBFTFNFICtdCi1bK21ha2VfdGFyZ2V0K10tWyttb2R1bGUrXTogWysKLSAgRk9SIGRlcGVuZCArXVwKLSAgICBbK2RlcGVuZCtdLVsrbW9kdWxlK10gWysKLSAgRU5ERk9SIGRlcGVuZCArXQotCUBbIC1mIC4vWyttb2R1bGUrXS9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAotCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKFNFVF9MSUJfUEFUSCkgXAotCWZvciBmbGFnIGluICQoRVhUUkFfSE9TVF9GTEFHUyk7IGRvIFwKLQkgIGV2YWwgYGVjaG8gIiQkZmxhZyIgfCBzZWQgLWUgInN8XlwoW149XSpcKT1cKC4qXCl8XDE9J1wyJzsgZXhwb3J0IFwxfCJgOyBcCi0JZG9uZTsgXAotCWVjaG8gIkRvaW5nIFsrbWFrZV90YXJnZXQrXSBpbiBbK21vZHVsZStdIiA7IFwKLQkoY2QgWyttb2R1bGUrXSAmJiBcCi0JICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCi0JICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAotCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKLQkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCi0JICAgICAgICAgIFsrbWFrZV90YXJnZXQrXSkgXAotCSAgfHwgZXhpdCAxCi1bKyBFTkRJRiArXQotWysgRU5ERk9SIGhvc3RfbW9kdWxlcyArXQotCi0jIFRhcmdldCBtb2R1bGVzLgotWysgRk9SIHRhcmdldF9tb2R1bGVzICtdCi0uUEhPTlk6IG1heWJlLVsrbWFrZV90YXJnZXQrXS10YXJnZXQtWyttb2R1bGUrXSBbK21ha2VfdGFyZ2V0K10tdGFyZ2V0LVsrbW9kdWxlK10KLW1heWJlLVsrbWFrZV90YXJnZXQrXS10YXJnZXQtWyttb2R1bGUrXToKLVsrIElGIChtYXRjaC12YWx1ZT8gPSAibWlzc2luZyIgKGdldCAibWFrZV90YXJnZXQiKSApICtdCi0jIFsrbW9kdWxlK10gZG9lc24ndCBzdXBwb3J0IFsrbWFrZV90YXJnZXQrXS4KLVsrbWFrZV90YXJnZXQrXS10YXJnZXQtWyttb2R1bGUrXToKLVsrIEVMU0UgK10KLVsrbWFrZV90YXJnZXQrXS10YXJnZXQtWyttb2R1bGUrXTogWysKLSAgRk9SIGRlcGVuZCArXVwKLSAgICBbK2RlcGVuZCtdLXRhcmdldC1bK21vZHVsZStdIFsrCi0gIEVOREZPUiBkZXBlbmQgK10KLQlAWyAtZiAkKFRBUkdFVF9TVUJESVIpL1srbW9kdWxlK10vTWFrZWZpbGUgXSB8fCBleGl0IDAgOyBcCi0Jcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoU0VUX0xJQl9QQVRIKSBcCi0JZWNobyAiRG9pbmcgWyttYWtlX3RhcmdldCtdIGluICQoVEFSR0VUX1NVQkRJUikvWyttb2R1bGUrXSIgOyBcCi0JZm9yIGZsYWcgaW4gJChFWFRSQV9UQVJHRVRfRkxBR1MpOyBkbyBcCi0JICBldmFsIGBlY2hvICIkJGZsYWciIHwgc2VkIC1lICJzfF5cKFtePV0qXCk9XCguKlwpfFwxPSdcMic7IGV4cG9ydCBcMXwiYDsgXAotCWRvbmU7IFwKLQkoY2QgJChUQVJHRVRfU1VCRElSKS9bK21vZHVsZStdICYmIFwKLQkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKLQkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCi0JICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAotCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKLQkgICAgICAgICAgWyttYWtlX3RhcmdldCtdKSBcCi0JICB8fCBleGl0IDEKLVsrIEVORElGICtdCi1bKyBFTkRGT1IgdGFyZ2V0X21vZHVsZXMgK10KIFsrIEVOREZPUiByZWN1cnNpdmVfdGFyZ2V0cyArXQogCiAjIEhlcmUgYXJlIHRoZSB0YXJnZXRzIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlIGRvLVggdGFyZ2V0cy4KQEAgLTkzMiw2ICs4NTUsMzYgQEAKIAkgICAgK10gJChYMTFfRkxBR1NfVE9fUEFTUylbKyAKIAkgIEVORElGIHdpdGhfeCArXSBpbnN0YWxsKQogWysgRU5ESUYgbm9faW5zdGFsbCArXQorCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKK1srIEZPUiByZWN1cnNpdmVfdGFyZ2V0cyArXQorLlBIT05ZOiBtYXliZS1bK21ha2VfdGFyZ2V0K10tWyttb2R1bGUrXSBbK21ha2VfdGFyZ2V0K10tWyttb2R1bGUrXQorbWF5YmUtWyttYWtlX3RhcmdldCtdLVsrbW9kdWxlK106CitbKyBJRiAobWF0Y2gtdmFsdWU/ID0gIm1pc3NpbmciIChnZXQgIm1ha2VfdGFyZ2V0IikgKSArXQorIyBbK21vZHVsZStdIGRvZXNuJ3Qgc3VwcG9ydCBbK21ha2VfdGFyZ2V0K10uCitbK21ha2VfdGFyZ2V0K10tWyttb2R1bGUrXToKK1srIEVMU0UgK10KK1srbWFrZV90YXJnZXQrXS1bK21vZHVsZStdOiBbKworICBGT1IgZGVwZW5kICtdXAorICAgIFsrZGVwZW5kK10tWyttb2R1bGUrXSBbKworICBFTkRGT1IgZGVwZW5kICtdCisJQFsgLWYgLi9bK21vZHVsZStdL01ha2VmaWxlIF0gfHwgZXhpdCAwOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCSQoU0VUX0xJQl9QQVRIKSBcCisJZm9yIGZsYWcgaW4gJChFWFRSQV9IT1NUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgWyttYWtlX3RhcmdldCtdIGluIFsrbW9kdWxlK10iIDsgXAorCShjZCBbK21vZHVsZStdICYmIFwKKwkgICQoTUFLRSkgJChCQVNFX0ZMQUdTX1RPX1BBU1MpICJBUj0kJHtBUn0iICJBUz0kJHtBU30iIFwKKwkgICAgICAgICAgIkNDPSQke0NDfSIgIkNYWD0kJHtDWFh9IiAiTEQ9JCR7TER9IiAiTk09JCR7Tk19IiBcCisJICAgICAgICAgICJSQU5MSUI9JCR7UkFOTElCfSIgXAorCSAgICAgICAgICAiRExMVE9PTD0kJHtETExUT09MfSIgIldJTkRSRVM9JCR7V0lORFJFU30iIFwKKwkgICAgICAgICAgWyttYWtlX3RhcmdldCtdKSBcCisJICB8fCBleGl0IDEKK1srIEVORElGICtdCitbKyBFTkRGT1IgcmVjdXJzaXZlX3RhcmdldHMgK10KIFsrIEVOREZPUiBob3N0X21vZHVsZXMgK10KIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEwNTgsNiArMTAxMSwzNiBAQAogCShjZCAkKFRBUkdFVF9TVUJESVIpL1srbW9kdWxlK10gJiYgXAogCSAgJChNQUtFKSAkKFRBUkdFVF9GTEFHU19UT19QQVNTKSBpbnN0YWxsKQogWysgRU5ESUYgbm9faW5zdGFsbCArXQorCisjIE90aGVyIHRhcmdldHMgKGluZm8sIGR2aSwgZXRjLikKK1srIEZPUiByZWN1cnNpdmVfdGFyZ2V0cyArXQorLlBIT05ZOiBtYXliZS1bK21ha2VfdGFyZ2V0K10tdGFyZ2V0LVsrbW9kdWxlK10gWyttYWtlX3RhcmdldCtdLXRhcmdldC1bK21vZHVsZStdCittYXliZS1bK21ha2VfdGFyZ2V0K10tdGFyZ2V0LVsrbW9kdWxlK106CitbKyBJRiAobWF0Y2gtdmFsdWU/ID0gIm1pc3NpbmciIChnZXQgIm1ha2VfdGFyZ2V0IikgKSArXQorIyBbK21vZHVsZStdIGRvZXNuJ3Qgc3VwcG9ydCBbK21ha2VfdGFyZ2V0K10uCitbK21ha2VfdGFyZ2V0K10tdGFyZ2V0LVsrbW9kdWxlK106CitbKyBFTFNFICtdCitbK21ha2VfdGFyZ2V0K10tdGFyZ2V0LVsrbW9kdWxlK106IFsrCisgIEZPUiBkZXBlbmQgK11cCisgICAgWytkZXBlbmQrXS10YXJnZXQtWyttb2R1bGUrXSBbKworICBFTkRGT1IgZGVwZW5kICtdCisJQFsgLWYgJChUQVJHRVRfU1VCRElSKS9bK21vZHVsZStdL01ha2VmaWxlIF0gfHwgZXhpdCAwIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWVjaG8gIkRvaW5nIFsrbWFrZV90YXJnZXQrXSBpbiAkKFRBUkdFVF9TVUJESVIpL1srbW9kdWxlK10iIDsgXAorCWZvciBmbGFnIGluICQoRVhUUkFfVEFSR0VUX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJKGNkICQoVEFSR0VUX1NVQkRJUikvWyttb2R1bGUrXSAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFsrbWFrZV90YXJnZXQrXSkgXAorCSAgfHwgZXhpdCAxCitbKyBFTkRJRiArXQorWysgRU5ERk9SIHJlY3Vyc2l2ZV90YXJnZXRzICtdCiBbKyBFTkRGT1IgdGFyZ2V0X21vZHVsZXMgK10KIAogIyAtLS0tLS0tLS0tCkBAIC0xMDcyLDEwICsxMDU1LDEzIEBACiAjIERvbid0IHVzZSBzaGFyZWQgaG9zdCBjb25maWcuY2FjaGUsIGFzIGl0IHdpbGwgY29uZnVzZSBsYXRlcgogIyBkaXJlY3RvcmllczsgR0NDIHdhbnRzIHNsaWdodGx5IGRpZmZlcmVudCB2YWx1ZXMgZm9yIHNvbWUKICMgcHJlY2lvdXMgdmFyaWFibGVzLiAgKnNpZ2gqCisKKyMgV2UgbXVzdCBza2lwIGNvbmZpZ3VyaW5nIGlmIHRvcGxldmVsIGJvb3RzdHJhcCBpcyBnb2luZy4KIC5QSE9OWTogY29uZmlndXJlLWdjYyBtYXliZS1jb25maWd1cmUtZ2NjCiBtYXliZS1jb25maWd1cmUtZ2NjOgogY29uZmlndXJlLWdjYzoKIAlAdGVzdCAhIC1mIGdjYy9NYWtlZmlsZSB8fCBleGl0IDA7IFwKKwlbIC1mIHN0YWdlX2xhc3QgXSAmJiBleGl0IDA7IFwKIAlbIC1kIGdjYyBdIHx8IG1rZGlyIGdjYzsgXAogCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKIAlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKQEAgLTExMTgsMTQgKzExMDQsMTQgQEAKIC5QSE9OWTogYWxsLWdjYyBtYXliZS1hbGwtZ2NjCiBtYXliZS1hbGwtZ2NjOgogYWxsLWdjYzogY29uZmlndXJlLWdjYwotCUBpZiBbIC1mIGdjYy9zdGFnZV9sYXN0IF0gOyB0aGVuIFwKLQkgIHI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKLQkgIHM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwlpZiBbIC1mIHN0YWdlX2xhc3QgXSA7IHRoZW4gXAorCSAgdHJ1ZSA7IFwKKwllbGlmIFsgLWYgZ2NjL3N0YWdlX2xhc3QgXSA7IHRoZW4gXAogCSAgJChTRVRfTElCX1BBVEgpIFwKIAkgIChjZCBnY2MgJiYgJChNQUtFKSAkKEdDQ19GTEFHU19UT19QQVNTKSBxdWlja3N0cmFwKTsgXAogCWVsc2UgXAotCSAgcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAotCSAgcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCiAJICAkKFNFVF9MSUJfUEFUSCkgXAogCSAgKGNkIGdjYyAmJiAkKE1BS0UpICQoR0NDX0ZMQUdTX1RPX1BBU1MpIGFsbCk7IFwKIAlmaQpAQCAtMTI2Myw2ICsxMjQ5LDMxMSBAQAogCSAgbXYgZ2NjL3RtcC1pbmNsdWRlIGdjYy9pbmNsdWRlIDI+L2Rldi9udWxsOyBcCiAJZWxzZSB0cnVlOyBmaQogCisjIE90aGVyIHRhcmdldHMgKGR2aSwgaW5mbywgZXRjLikKK1srIEZPUiByZWN1cnNpdmVfdGFyZ2V0cyArXQorLlBIT05ZOiBtYXliZS1bK21ha2VfdGFyZ2V0K10tZ2NjIFsrbWFrZV90YXJnZXQrXS1nY2MKK21heWJlLVsrbWFrZV90YXJnZXQrXS1nY2M6CitbK21ha2VfdGFyZ2V0K10tZ2NjOiBbKworICBGT1IgZGVwZW5kICtdXAorICAgIFsrZGVwZW5kK10tZ2NjIFsrCisgIEVOREZPUiBkZXBlbmQgK10KKwlAWyAtZiAuL2djYy9NYWtlZmlsZSBdIHx8IGV4aXQgMDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwkkKFNFVF9MSUJfUEFUSCkgXAorCWZvciBmbGFnIGluICQoRVhUUkFfR0NDX0ZMQUdTKTsgZG8gXAorCSAgZXZhbCBgZWNobyAiJCRmbGFnIiB8IHNlZCAtZSAic3xeXChbXj1dKlwpPVwoLipcKXxcMT0nXDInOyBleHBvcnQgXDF8ImA7IFwKKwlkb25lOyBcCisJZWNobyAiRG9pbmcgWyttYWtlX3RhcmdldCtdIGluIGdjYyIgOyBcCisJKGNkIGdjYyAmJiBcCisJICAkKE1BS0UpICQoQkFTRV9GTEFHU19UT19QQVNTKSAiQVI9JCR7QVJ9IiAiQVM9JCR7QVN9IiBcCisJICAgICAgICAgICJDQz0kJHtDQ30iICJDWFg9JCR7Q1hYfSIgIkxEPSQke0xEfSIgIk5NPSQke05NfSIgXAorCSAgICAgICAgICAiUkFOTElCPSQke1JBTkxJQn0iIFwKKwkgICAgICAgICAgIkRMTFRPT0w9JCR7RExMVE9PTH0iICJXSU5EUkVTPSQke1dJTkRSRVN9IiBcCisJICAgICAgICAgIFsrbWFrZV90YXJnZXQrXSkgXAorCSAgfHwgZXhpdCAxCisKK1srIEVOREZPUiByZWN1cnNpdmVfdGFyZ2V0cyArXQorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBHQ0MgYm9vdHN0cmFwIHN1cHBvcnQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgV2UgbmFtZSB0aGUgZGlyZWN0b3JpZXMgZm9yIHRoZSB2YXJpb3VzIHN0YWdlcyAic3RhZ2UxLWdjYyIsCisjICJzdGFnZTItZ2NjIiwic3RhZ2UzLWdjYyIsIGV0Yy4gIAorIyBVbmZvcnR1bmF0ZWx5LCB0aGUgJ2NvbXBhcmUnIHByb2Nlc3Mgd2lsbCBmYWlsIChvbiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24pCisjIGlmIGFueSBkaXJlY3RvcnkgbmFtZXMgYXJlIGRpZmZlcmVudCEKKyMgU28gaW4gdGhlIGJ1aWxkaW5nIHJ1bGUgZm9yIGVhY2ggc3RhZ2UsIHdlIHJlbG9jYXRlIHRoZW0gYmVmb3JlIGFuZCBhZnRlci4KKyMgVGhlIGN1cnJlbnQgb25lIGlzICdnY2MnLCB3aGlsZSB0aGUgcHJldmlvdXMgb25lIGlzICdwcmV2LWdjYycuICAoVGhlCisjIGN1cnJlbnQgb25lIG11c3QgYmUgJ2djYycgZm9yIG5vdyBiZWNhdXNlIHRoZSBzY3JpcHRzIGluIHRoYXQgZGlyZWN0b3J5CisjIGFzc3VtZSBpdC4pCisjIEF0IHRoZSBlbmQgb2YgdGhlIGJvb3RzdHJhcCwgJ3N0YWdlMy1nY2MnIG11c3QgYmUgbW92ZWQgdG8gJ2djYycgc28gdGhhdAorIyBsaWJyYXJpZXMgY2FuIGZpbmQgaXQuICBJY2shCisKKyMgQnVnczogVGhpcyBpcyBhbG1vc3QgY2VydGFpbmx5IG5vdCBwYXJhbGxlbC1tYWtlIHNhZmUuCisKKyMgJ3RvdWNoJyBkb2Vzbid0IHdvcmsgcmlnaHQgb24gc29tZSBwbGF0Zm9ybXMuCitTVEFNUCA9IGVjaG8gdGltZXN0YW1wID4gCisKKyMgT25seSBidWlsZCB0aGUgQyBjb21waWxlciBmb3Igc3RhZ2UxLCBiZWNhdXNlIHRoYXQgaXMgdGhlIG9ubHkgb25lIHRoYXQKKyMgd2UgY2FuIGd1YXJhbnRlZSB3aWxsIGJ1aWxkIHdpdGggdGhlIG5hdGl2ZSBjb21waWxlciwgYW5kIGFsc28gaXQgaXMgdGhlCisjIG9ubHkgdGhpbmcgdXNlZnVsIGZvciBidWlsZGluZyBzdGFnZTIuIFNUQUdFMV9DRkxBR1MgKHZpYSBDRkxBR1MpLAorIyBNQUtFSU5GTyBhbmQgTUFLRUlORk9GTEFHUyBhcmUgZXhwbGljaXRseSBwYXNzZWQgaGVyZSB0byBtYWtlIHRoZW0KKyMgb3ZlcnJpZGVhYmxlIChmb3IgYSBib290c3RyYXAgYnVpbGQgc3RhZ2UxIGFsc28gYnVpbGRzIGdjYy5pbmZvKS4KKworU1RBR0UxX0NGTEFHUz1Ac3RhZ2UxX2NmbGFnc0AKK1NUQUdFMV9MQU5HVUFHRVM9QHN0YWdlMV9sYW5ndWFnZXNACisKKyMgRm9yIHN0YWdlIDE6CisjICogV2UgZm9yY2UtZGlzYWJsZSBpbnRlcm1vZHVsZSBvcHRpbWl6YXRpb25zLCBldmVuIGlmCisjICAgLS1lbmFibGUtaW50ZXJtb2R1bGUgd2FzIHBhc3NlZCwgc2luY2UgdGhlIGluc3RhbGxlZCBjb21waWxlciBwcm9iYWJseQorIyAgIGNhbid0IGhhbmRsZSB0aGVtLiAgTHVja2lseSwgYXV0b2NvbmYgYWx3YXlzIHJlc3BlY3RzCisjICAgdGhlIGxhc3QgYXJndW1lbnQgd2hlbiBjb25mbGljdGluZyAtLWVuYWJsZSBhcmd1bWVudHMgYXJlIHBhc3NlZC4KKyMgKiBMaWtld2lzZSwgd2UgZm9yY2UtZGlzYWJsZSBjb3ZlcmFnZSBmbGFncywgc2luY2UgdGhlIGluc3RhbGxlZCBjb21waWxlcgorIyAgIHByb2JhYmx5IGhhcyBuZXZlciBoZWFyZCBvZiB0aGVtLgorIyAqIFdlIGJ1aWxkIG9ubHkgQyAoYW5kIHBvc3NpYmx5IEFkYSkuCitjb25maWd1cmUtc3RhZ2UxLWdjYzoKKwllY2hvIGNvbmZpZ3VyZS1zdGFnZTEtZ2NjID4gc3RhZ2VfbGFzdCA7IFwKKwlpZiBbIC1mIHN0YWdlMS1nY2MvTWFrZWZpbGUgXSA7IHRoZW4gXAorCSAgJChTVEFNUCkgY29uZmlndXJlLXN0YWdlMS1nY2MgOyBcCisJICBleGl0IDA7IFwKKwllbHNlIFwKKwkgIHRydWUgOyBcCisJZmkgOyBcCisJWyAtZCBzdGFnZTEtZ2NjIF0gfHwgbWtkaXIgc3RhZ2UxLWdjYzsgXAorCW12IHN0YWdlMS1nY2MgZ2NjIDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorCVRPUExFVkVMX0NPTkZJR1VSRV9BUkdVTUVOVFM9IiQoVE9QTEVWRUxfQ09ORklHVVJFX0FSR1VNRU5UUykiOyBleHBvcnQgVE9QTEVWRUxfQ09ORklHVVJFX0FSR1VNRU5UUzsgXAorCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAorCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAorCUNYWD0iJChDWFgpIjsgZXhwb3J0IENYWDsgXAorCUNYWEZMQUdTPSIkKENYWEZMQUdTKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAorCUFSPSIkKEFSKSI7IGV4cG9ydCBBUjsgXAorCUFTPSIkKEFTKSI7IGV4cG9ydCBBUzsgXAorCUNDX0ZPUl9CVUlMRD0iJChDQ19GT1JfQlVJTEQpIjsgZXhwb3J0IENDX0ZPUl9CVUlMRDsgXAorCURMTFRPT0w9IiQoRExMVE9PTCkiOyBleHBvcnQgRExMVE9PTDsgXAorCUxEPSIkKExEKSI7IGV4cG9ydCBMRDsgXAorCU5NPSIkKE5NKSI7IGV4cG9ydCBOTTsgXAorCVJBTkxJQj0iJChSQU5MSUIpIjsgZXhwb3J0IFJBTkxJQjsgXAorCVdJTkRSRVM9IiQoV0lORFJFUykiOyBleHBvcnQgV0lORFJFUzsgXAorCU9CSkNPUFk9IiQoT0JKQ09QWSkiOyBleHBvcnQgT0JKQ09QWTsgXAorCU9CSkRVTVA9IiQoT0JKRFVNUCkiOyBleHBvcnQgT0JKRFVNUDsgXAorCWVjaG8gQ29uZmlndXJpbmcgc3RhZ2UgMSBpbiBnY2M7IFwKKwljZCBnY2MgfHwgZXhpdCAxOyBcCisJY2FzZSAkKHNyY2RpcikgaW4gXAorCSAgXC4pIFwKKwkgICAgc3JjZGlyb3B0aW9uPSItLXNyY2Rpcj0uIjsgXAorCSAgICBsaWJzcmNkaXI9Ii4iOzsgXAorCSAgLyogfCBbQS1aYS16XTpbXFwvXSopIFwKKwkgICAgc3JjZGlyb3B0aW9uPSItLXNyY2Rpcj0kKHNyY2RpcikvZ2NjIjsgXAorCSAgICBsaWJzcmNkaXI9IiQkcy9nY2MiOzsgXAorCSAgKikgXAorCSAgICBzcmNkaXJvcHRpb249Ii0tc3JjZGlyPS4uLyQoc3JjZGlyKS9nY2MiOyBcCisJICAgIGxpYnNyY2Rpcj0iJCRzL2djYyI7OyBcCisJZXNhYzsgXAorCSQoU0hFTEwpICQke2xpYnNyY2Rpcn0vY29uZmlndXJlIFwKKwkgICQoSE9TVF9DT05GSUdBUkdTKSAkJHtzcmNkaXJvcHRpb259IFwKKwkgIC0tZGlzYWJsZS1pbnRlcm1vZHVsZSAtLWRpc2FibGUtY292ZXJhZ2UgXAorCSAgLS1lbmFibGUtbGFuZ3VhZ2VzPSIkKFNUQUdFMV9MQU5HVUFHRVMpIjsgXAorCWNkIC4uIDsgXAorCW12IGdjYyBzdGFnZTEtZ2NjIDsgXAorCSQoU1RBTVApIGNvbmZpZ3VyZS1zdGFnZTEtZ2NjCisKKyMgUmVhbCB0YXJnZXRzIGFjdCBwaG9ueSBpZiB0aGV5IGRlcGVuZCBvbiBwaG9ueSB0YXJnZXRzOyB0aGlzIGhhY2sKKyMgcHJldmVudHMgZ3JhdHVpdG91cyByZWJ1aWxkaW5nIG9mIHN0YWdlIDEuCitwcmVib290c3RyYXA6CisJJChNQUtFKSBhbGwtYm9vdHN0cmFwCisJJChTVEFNUCkgcHJlYm9vdHN0cmFwCisKK2FsbC1zdGFnZTEtZ2NjOiBjb25maWd1cmUtc3RhZ2UxLWdjYyBwcmVib290c3RyYXAKKwllY2hvIGFsbC1zdGFnZTEtZ2NjID4gc3RhZ2VfbGFzdCA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJbXYgc3RhZ2UxLWdjYyBnY2MgOyBcCisJY2QgZ2NjICYmIFwKKwkkKE1BS0UpICQoR0NDX0ZMQUdTX1RPX1BBU1MpIFwKKwkJQ0ZMQUdTPSIkKFNUQUdFMV9DRkxBR1MpIiBcCisJCXx8IGV4aXQgMSA7IFwKKwljZCAuLiA7IFwKKwltdiBnY2Mgc3RhZ2UxLWdjYyA7IFwKKwkkKFNUQU1QKSBhbGwtc3RhZ2UxLWdjYworCisjIFRPRE86IERlYWwgd2l0aCBTVEFHRV9QUkVGSVggKHdoaWNoIGlzIG9ubHkgZm9yIGFkYSwgaW5jaWRlbnRhbGx5KQorIyBQb3NzaWJseSBwYXNzIC0tZW5hYmxlLXdlcnJvci1hbHdheXMgKGRlcGVuZGluZyBvbiAtLWVuYWJsZS13ZXJyb3IpOworIyB0aGF0J3Mgd2hhdCBAc3RhZ2UyX3dlcnJvcl9mbGFnQCBpcyBmb3IKK2NvbmZpZ3VyZS1zdGFnZTItZ2NjOiBhbGwtc3RhZ2UxLWdjYworCWVjaG8gY29uZmlndXJlLXN0YWdlMi1nY2MgPiBzdGFnZV9sYXN0IDsgXAorCWlmIFsgLWYgc3RhZ2UyLWdjYy9NYWtlZmlsZSBdIDsgdGhlbiBcCisJICAkKFNUQU1QKSBjb25maWd1cmUtc3RhZ2UyLWdjYyA7IFwKKwkgIGV4aXQgMDsgXAorCWVsc2UgXAorCSAgdHJ1ZSA7IFwKKwlmaSA7IFwKKwlbIC1kIHN0YWdlMi1nY2MgXSB8fCBta2RpciBzdGFnZTItZ2NjOyBcCisJbXYgc3RhZ2UyLWdjYyBnY2MgOyBcCisJbXYgc3RhZ2UxLWdjYyBwcmV2LWdjYyA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKwlUT1BMRVZFTF9DT05GSUdVUkVfQVJHVU1FTlRTPSIkKFRPUExFVkVMX0NPTkZJR1VSRV9BUkdVTUVOVFMpIjsgZXhwb3J0IFRPUExFVkVMX0NPTkZJR1VSRV9BUkdVTUVOVFM7IFwKKwlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKKwlDWFg9IiQoQ1hYKSI7IGV4cG9ydCBDWFg7IFwKKwlDWFhGTEFHUz0iJChDWFhGTEFHUykiOyBleHBvcnQgQ1hYRkxBR1M7IFwKKwlBUj0iJChBUikiOyBleHBvcnQgQVI7IFwKKwlBUz0iJChBUykiOyBleHBvcnQgQVM7IFwKKwlETExUT09MPSIkKERMTFRPT0wpIjsgZXhwb3J0IERMTFRPT0w7IFwKKwlMRD0iJChMRCkiOyBleHBvcnQgTEQ7IFwKKwlOTT0iJChOTSkiOyBleHBvcnQgTk07IFwKKwlSQU5MSUI9IiQoUkFOTElCKSI7IGV4cG9ydCBSQU5MSUI7IFwKKwlXSU5EUkVTPSIkKFdJTkRSRVMpIjsgZXhwb3J0IFdJTkRSRVM7IFwKKwlPQkpDT1BZPSIkKE9CSkNPUFkpIjsgZXhwb3J0IE9CSkNPUFk7IFwKKwlPQkpEVU1QPSIkKE9CSkRVTVApIjsgZXhwb3J0IE9CSkRVTVA7IFwKKwlDQz0iJChTVEFHRV9DQ19XUkFQUEVSKSAkJHIvcHJldi1nY2MveGdjYyQoZXhlZXh0KSAtQiQkci9wcmV2LWdjYy8gLUIkKGJ1aWxkX3Rvb2xkaXIpL2Jpbi8iOyBleHBvcnQgQ0M7IFwKKwlDQ19GT1JfQlVJTEQ9IiQoU1RBR0VfQ0NfV1JBUFBFUikgJCRyL3ByZXYtZ2NjL3hnY2MkKGV4ZWV4dCkgLUIkJHIvcHJldi1nY2MvIC1CJChidWlsZF90b29sZGlyKS9iaW4vIjsgZXhwb3J0IENDX0ZPUl9CVUlMRDsgXAorCWVjaG8gQ29uZmlndXJpbmcgc3RhZ2UgMiBpbiBnY2M7IFwKKwljZCBnY2MgfHwgZXhpdCAxOyBcCisJY2FzZSAkKHNyY2RpcikgaW4gXAorCSAgXC4pIFwKKwkgICAgc3JjZGlyb3B0aW9uPSItLXNyY2Rpcj0uIjsgXAorCSAgICBsaWJzcmNkaXI9Ii4iOzsgXAorCSAgLyogfCBbQS1aYS16XTpbXFwvXSopIFwKKwkgICAgc3JjZGlyb3B0aW9uPSItLXNyY2Rpcj0kKHNyY2RpcikvZ2NjIjsgXAorCSAgICBsaWJzcmNkaXI9IiQkcy9nY2MiOzsgXAorCSAgKikgXAorCSAgICBzcmNkaXJvcHRpb249Ii0tc3JjZGlyPS4uLyQoc3JjZGlyKS9nY2MiOyBcCisJICAgIGxpYnNyY2Rpcj0iJCRzL2djYyI7OyBcCisJZXNhYzsgXAorCSQoU0hFTEwpICQke2xpYnNyY2Rpcn0vY29uZmlndXJlIFwKKwkgICQoSE9TVF9DT05GSUdBUkdTKSAkJHtzcmNkaXJvcHRpb259IEBzdGFnZTJfd2Vycm9yX2ZsYWdAIDsgXAorCWNkIC4uIDsgXAorCW12IGdjYyBzdGFnZTItZ2NjIDsgXAorCW12IHByZXYtZ2NjIHN0YWdlMS1nY2MgOyBcCisJJChTVEFNUCkgY29uZmlndXJlLXN0YWdlMi1nY2MKKworIyBGbGFncyB0byBwYXNzIHRvIHN0YWdlMiBhbmQgbGF0ZXIgbWFrZXMuCitCT09UX0NGTEFHUz0gLWcgLU8yCitQT1NUU1RBR0UxX0ZMQUdTX1RPX1BBU1MgPSBcCisJQ0ZMQUdTPSIkKEJPT1RfQ0ZMQUdTKSIgXAorCUFEQUM9IlwkJChDQykiCisKK2FsbC1zdGFnZTItZ2NjOiBhbGwtc3RhZ2UxLWdjYyBjb25maWd1cmUtc3RhZ2UyLWdjYworCWVjaG8gYWxsLXN0YWdlMi1nY2MgPiBzdGFnZV9sYXN0IDsgXAorCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwltdiBzdGFnZTItZ2NjIGdjYyA7IFwKKwltdiBzdGFnZTEtZ2NjIHByZXYtZ2NjIDsgXAorCWNkIGdjYyAmJiBcCisJJChNQUtFKSAkKEdDQ19GTEFHU19UT19QQVNTKSBcCisJCUNDPSIkKFNUQUdFX0NDX1dSQVBQRVIpICQkci9wcmV2LWdjYy94Z2NjJChleGVleHQpIC1CJCRyL3ByZXYtZ2NjLyAtQiQoYnVpbGRfdG9vbGRpcikvYmluLyIgXAorCQlDQ19GT1JfQlVJTEQ9IiQoU1RBR0VfQ0NfV1JBUFBFUikgJCRyL3ByZXYtZ2NjL3hnY2MkKGV4ZWV4dCkgLUIkJHIvcHJldi1nY2MvIC1CJChidWlsZF90b29sZGlyKS9iaW4vIiBcCisJCVNUQUdFX1BSRUZJWD0kJHIvcHJldi1nY2MvIFwKKwkJJChQT1NUU1RBR0UxX0ZMQUdTX1RPX1BBU1MpIHx8IGV4aXQgMSA7IFwKKwljZCAuLiA7IFwKKwltdiBwcmV2LWdjYyBzdGFnZTEtZ2NjIDsgXAorCW12IGdjYyBzdGFnZTItZ2NjIDsgXAorCSQoU1RBTVApIGFsbC1zdGFnZTItZ2NjCisKK2NvbmZpZ3VyZS1zdGFnZTMtZ2NjOiBhbGwtc3RhZ2UyLWdjYworCWVjaG8gY29uZmlndXJlLXN0YWdlMy1nY2MgPiBzdGFnZV9sYXN0IDsgXAorCWlmIFsgLWYgc3RhZ2UzLWdjYy9NYWtlZmlsZSBdIDsgdGhlbiBcCisJICAkKFNUQU1QKSBjb25maWd1cmUtc3RhZ2UzLWdjYyA7IFwKKwkgIGV4aXQgMDsgXAorCWVsc2UgXAorCSAgdHJ1ZSA7IFwKKwlmaSA7IFwKKwlbIC1kIHN0YWdlMy1nY2MgXSB8fCBta2RpciBzdGFnZTMtZ2NjOyBcCisJbXYgc3RhZ2UzLWdjYyBnY2MgOyBcCisJbXYgc3RhZ2UyLWdjYyBwcmV2LWdjYyA7IFwKKwlyPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCisJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCisJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKwlUT1BMRVZFTF9DT05GSUdVUkVfQVJHVU1FTlRTPSIkKFRPUExFVkVMX0NPTkZJR1VSRV9BUkdVTUVOVFMpIjsgZXhwb3J0IFRPUExFVkVMX0NPTkZJR1VSRV9BUkdVTUVOVFM7IFwKKwlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKKwlDWFg9IiQoQ1hYKSI7IGV4cG9ydCBDWFg7IFwKKwlDWFhGTEFHUz0iJChDWFhGTEFHUykiOyBleHBvcnQgQ1hYRkxBR1M7IFwKKwlBUj0iJChBUikiOyBleHBvcnQgQVI7IFwKKwlBUz0iJChBUykiOyBleHBvcnQgQVM7IFwKKwlETExUT09MPSIkKERMTFRPT0wpIjsgZXhwb3J0IERMTFRPT0w7IFwKKwlMRD0iJChMRCkiOyBleHBvcnQgTEQ7IFwKKwlOTT0iJChOTSkiOyBleHBvcnQgTk07IFwKKwlSQU5MSUI9IiQoUkFOTElCKSI7IGV4cG9ydCBSQU5MSUI7IFwKKwlXSU5EUkVTPSIkKFdJTkRSRVMpIjsgZXhwb3J0IFdJTkRSRVM7IFwKKwlPQkpDT1BZPSIkKE9CSkNPUFkpIjsgZXhwb3J0IE9CSkNPUFk7IFwKKwlPQkpEVU1QPSIkKE9CSkRVTVApIjsgZXhwb3J0IE9CSkRVTVA7IFwKKwlDQz0iJChTVEFHRV9DQ19XUkFQUEVSKSAkJHIvcHJldi1nY2MveGdjYyQoZXhlZXh0KSAtQiQkci9wcmV2LWdjYy8gLUIkKGJ1aWxkX3Rvb2xkaXIpL2Jpbi8iOyBleHBvcnQgQ0M7IFwKKwlDQ19GT1JfQlVJTEQ9IiQoU1RBR0VfQ0NfV1JBUFBFUikgJCRyL3ByZXYtZ2NjL3hnY2MkKGV4ZWV4dCkgLUIkJHIvcHJldi1nY2MvIC1CJChidWlsZF90b29sZGlyKS9iaW4vIjsgZXhwb3J0IENDX0ZPUl9CVUlMRDsgXAorCWVjaG8gQ29uZmlndXJpbmcgc3RhZ2UgMyBpbiBnY2M7IFwKKwljZCBnY2MgfHwgZXhpdCAxOyBcCisJY2FzZSAkKHNyY2RpcikgaW4gXAorCSAgXC4pIFwKKwkgICAgc3JjZGlyb3B0aW9uPSItLXNyY2Rpcj0uIjsgXAorCSAgICBsaWJzcmNkaXI9Ii4iOzsgXAorCSAgLyogfCBbQS1aYS16XTpbXFwvXSopIFwKKwkgICAgc3JjZGlyb3B0aW9uPSItLXNyY2Rpcj0kKHNyY2RpcikvZ2NjIjsgXAorCSAgICBsaWJzcmNkaXI9IiQkcy9nY2MiOzsgXAorCSAgKikgXAorCSAgICBzcmNkaXJvcHRpb249Ii0tc3JjZGlyPS4uLyQoc3JjZGlyKS9nY2MiOyBcCisJICAgIGxpYnNyY2Rpcj0iJCRzL2djYyI7OyBcCisJZXNhYzsgXAorCSQoU0hFTEwpICQke2xpYnNyY2Rpcn0vY29uZmlndXJlIFwKKwkgICQoSE9TVF9DT05GSUdBUkdTKSAkJHtzcmNkaXJvcHRpb259IEBzdGFnZTJfd2Vycm9yX2ZsYWdAIDsgXAorCWNkIC4uIDsgXAorCW12IGdjYyBzdGFnZTMtZ2NjIDsgXAorCW12IHByZXYtZ2NjIHN0YWdlMi1nY2MgOyBcCisJJChTVEFNUCkgY29uZmlndXJlLXN0YWdlMy1nY2MKKworYWxsLXN0YWdlMy1nY2M6IGFsbC1zdGFnZTItZ2NjIGNvbmZpZ3VyZS1zdGFnZTMtZ2NjCisJZWNobyBhbGwtc3RhZ2UzLWdjYyA+IHN0YWdlX2xhc3QgOyBcCisJcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAorCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAorCW12IHN0YWdlMi1nY2MgcHJldi1nY2MgOyBcCisJbXYgc3RhZ2UzLWdjYyBnY2MgOyBcCisJY2QgZ2NjICYmIFwKKwkkKE1BS0UpICQoR0NDX0ZMQUdTX1RPX1BBU1MpIFwKKwkJQ0M9IiQoU1RBR0VfQ0NfV1JBUFBFUikgJCRyL3ByZXYtZ2NjL3hnY2MkKGV4ZWV4dCkgLUIkJHIvcHJldi1nY2MvIC1CJChidWlsZF90b29sZGlyKS9iaW4vIiBcCisJCUNDX0ZPUl9CVUlMRD0iJChTVEFHRV9DQ19XUkFQUEVSKSAkJHIvcHJldi1nY2MveGdjYyQoZXhlZXh0KSAtQiQkci9wcmV2LWdjYy8gLUIkKGJ1aWxkX3Rvb2xkaXIpL2Jpbi8iIFwKKwkJU1RBR0VfUFJFRklYPSQkci9wcmV2LWdjYy8gXAorCQkkKFBPU1RTVEFHRTFfRkxBR1NfVE9fUEFTUykgfHwgZXhpdCAxIDsgXAorCWNkIC4uIDsgXAorCW12IHByZXYtZ2NjIHN0YWdlMi1nY2MgOyBcCisJbXYgZ2NjIHN0YWdlMy1nY2MgOyBcCisJJChTVEFNUCkgYWxsLXN0YWdlMy1nY2MKKworIyBXZSBvbmx5IHdhbnQgdG8gY29tcGFyZSAubyBmaWxlcywgc28gc2V0IHRoaXMhCitvYmpleHQgPSAubworCitjb21wYXJlOiBhbGwtc3RhZ2UzLWdjYworCXI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKKwlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKKwlybSAtZiAuYmFkX2NvbXBhcmUgOyBcCisJY2Qgc3RhZ2UzLWdjYzsgXAorCWZpbGVzPWBmaW5kIC4gLW5hbWUgIiokKG9iamV4dCkiIC1wcmludGAgOyBcCisJY2QgLi4gOyBcCisJZm9yIGZpbGUgaW4gJCR7ZmlsZXN9IDsgZG8gXAorCSAgY21wIC0taWdub3JlLWluaXRpYWw9MTYgJCRyL3N0YWdlMi1nY2MvJCRmaWxlICQkci9zdGFnZTMtZ2NjLyQkZmlsZSBcCisJICAgICAgPiAvZGV2L251bGwgMj4mMTsgXAorCSAgdGVzdCAkJD8gLWVxIDEgJiYgZWNobyAkJGZpbGUgZGlmZmVycyA+PiAuYmFkX2NvbXBhcmUgfHwgdHJ1ZTsgXAorCWRvbmUgOyBcCisJaWYgWyAtZiAuYmFkX2NvbXBhcmUgXTsgdGhlbiBcCisJICBlY2hvICJCb290c3RyYXAgY29tcGFyaXNvbiBmYWlsdXJlISI7IFwKKwkgIGNhdCAuYmFkX2NvbXBhcmU7IFwKKwkgIGV4aXQgMTsgXAorCWVsc2UgXAorCSAgdHJ1ZTsgXAorCWZpIDsgXAorICAgICAgICAkKFNUQU1QKSBjb21wYXJlCisKKy5QSE9OWTogbmV3LWJvb3RzdHJhcAorIyBUaGlzIHRhcmdldCBleGlzdHMgc28gdGhhdCBldmVyeXRoaW5nIGNhbiBiZSBtYWRlIGluIG9uZSBwYXNzLgorIyAnYWxsLWdjYycgaGFzIHRvIGF2b2lkIHN0b21waW5nIG9uIHRoZSBib290c3RyYXAtZ2VuZXJhdGVkIGdjYyBmb3IKKyMgdGhpcyB0byB3b3JrLgorbmV3LWJvb3RzdHJhcDogY29tcGFyZQorCW12IHN0YWdlMy1nY2MgZ2NjIDsgXAorCSQoTUFLRSkgYWxsIDsgXAorCW12IGdjYyBzdGFnZTMtZ2NjCisKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRGVwZW5kZW5jaWVzIGJldHdlZW4gZGlmZmVyZW50IG1vZHVsZXMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEzNTQsNiArMTY0NSw3IEBACiBjb25maWd1cmUtdGFyZ2V0LWJvZWhtLWdjOiAkKEFMTF9HQ0NfQykgbWF5YmUtY29uZmlndXJlLXRhcmdldC1xdGhyZWFkcwogY29uZmlndXJlLXRhcmdldC1mYXN0amFyOiBtYXliZS1jb25maWd1cmUtdGFyZ2V0LXpsaWIKIGFsbC10YXJnZXQtZmFzdGphcjogbWF5YmUtYWxsLXRhcmdldC16bGliIG1heWJlLWFsbC10YXJnZXQtbGliaWJlcnR5Citjb25maWd1cmUtdGFyZ2V0LWxpYmFkYTogJChBTExfR0NDX0MpCiBjb25maWd1cmUtdGFyZ2V0LWxpYmYyYzogJChBTExfR0NDX0MpCiBhbGwtdGFyZ2V0LWxpYmYyYzogbWF5YmUtYWxsLXRhcmdldC1saWJpYmVydHkKIGNvbmZpZ3VyZS10YXJnZXQtbGliZmZpOiAkKEFMTF9HQ0NfQykgCmRpZmYgLS1naXQgYS9iZmQvQ2hhbmdlTG9nIGIvYmZkL0NoYW5nZUxvZwppbmRleCA4ODAwZDRmLi42OGNjODI0IDEwMDY0NAotLS0gYS9iZmQvQ2hhbmdlTG9nCisrKyBiL2JmZC9DaGFuZ2VMb2cKQEAgLTEsNyArMSw0OTMgQEAKKzIwMDQtMDQtMDggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KKworCSogZWxmbGluay5jOiBJbmNsdWRlIGxpYmliZXJ0eS5oLgorCSogTWFrZWZpbGUuYW0gKGVsZmxpbmsubG8pOiBEZXBlbmQgb24gbGliaWJlcnR5LmguCisJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKworMjAwNC0wNC0wNiAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CisKKwkqIGVsZnh4LW1pcHMuYyAoTUlQU19FTEZfU1RVQl9TRUNUSU9OX05BTUUpOiBBbHdheXMgdXNlCisJIi5NSVBTLnN0dWJzIi4KKworMjAwNC0wNC0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgorCisJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogQWx3YXlzCisJcmVzZXJ2ZSB0aGUgbWVtb3J5IGZvciBkeW5hbWljIGxpbmtlcgorCisyMDA0LTA0LTA1ICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KKworCSogbmV0YnNkLWNvcmUuYyAoQ09SRV9XQ09PS0lFX09GRlNFVCk6IE5ldyBkZWZpbmUuCisJKG5ldGJzZF9jb3JlX2ZpbGVfcCk6IENyZWF0ZSBhIC53Y29va2llIHNlY3Rpb24gZm9yIE9wZW5CU0Qvc3BhcmMuCisKKzIwMDQtMDQtMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KKworCSogZWxmMzItY3IxNmMuYyAoZWxmMzJfY3IxNmNfcmVsb2NhdGVfc2VjdGlvbik6IFVzZQorCVJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MLgorCShlbGYzMl9jcjE2Y19hZGRfc3ltYm9sX2hvb2spOiBSZW1vdmUgY29uc3QgZnJvbSBFbGZfSW50ZXJuYWxfU3ltLgorCisyMDA0LTA0LTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CisKKwkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSk6IEhhbmRsZQorCVJfQVJNX0FMVSogb25seSBpZiBPTERfQVJNX0FCSSBpcyBub3QgZGVmaW5lZC4KKworMjAwNC0wNC0wMSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KKworCSogYmZkLWluLmggKGJmZF9lbGYzMl9hcm1fcHJvY2Vzc19iZWZvcmVfYWxsb2NhdGlvbik6IFVwZGF0ZS4KKwkqIGVsZjMyLWFybS5oIChzdHJ1Y3QgZWxmMzJfZWxmX3NlY3Rpb25fbWFwKTogTmV3LgorCShzdHJ1Y3QgX2FybV9lbGZfc2VjdGlvbl9kYXRhKTogTmV3LgorCShlbGYzMl9hcm1fc2VjdGlvbl9kYXRhKTogRGVmaW5lLgorCShzdHJ1Y3QgZWxmMzJfYXJtX2xpbmtfaGFzaF90YWJsZSk6IEFkZCBieXRlc3dhcF9jb2RlLgorCShlbGYzMl9hcm1fbGlua19oYXNoX3RhYmxlX2NyZWF0ZSk6IEluaXRpYWxpemUgYnl0ZXN3YXBfY29kZS4KKwkoYmZkX2VsZjMyX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uKTogQWRkIGJ5dGVzd2FwX2NvZGUuCisJKGVsZjMyX2FybV9wb3N0X3Byb2Nlc3NfaGVhZGVycyk6IFNldCBFRl9BUk1fQkU4LgorCShlbGYzMl9hcm1fb3V0cHV0X3N5bWJvbF9ob29rLCBlbGYzMl9hcm1fbmV3X3NlY3Rpb25faG9vaywKKwllbGYzMl9hcm1fY29tcGFyZV9tYXBwaW5nLCBlbGYzMl9hcm1fd3JpdGVfc2VjdGlvbik6IE5ldyBmdW5jdGlvbnMuCisJKGJmZF9lbGYzMl9uZXdfc2VjdGlvbl9ob29rLCBlbGZfYmFja2VuZF93cml0ZV9zZWN0aW9uLAorCWVsZl9iYWNrZW5kX2xpbmtfb3V0cHV0X3N5bWJvbF9ob29rKTogRGVmaW5lLgorCisyMDA0LTA0LTAxICBBbmR5IENoaXR0ZW5kZW4gIDxhY2hpdHRlbmRlbkBibHVlYXJjLmNvbT4KKworCSogc3RhYnMuYyAoc3RydWN0IHN0YWJfbGlua19pbmNsdWRlc190b3RhbHMpOiBBZGQgZmllbGQgJ3N5bWInCisJdGhhdCBrZWVwcyB0aGUgY2hhcmFjdGVycyBpbiBhIEJfSU5DTC4uQl9FSU5DTCByYW5nZS4KKwkoX2JmZF9saW5rX3NlY3Rpb25fc3RhYnMpOiBXaGVuIGNvbXB1dGluZyB0aGUgc3VtIG9mIHRoZQorCWNoYXJhY3RlcnMgaW4gYSBCX0lOQ0wuLkJfRUlOQ0wgcmFuZ2UgYWxzbyBrZWVwIGEgY29weSBvZiB0aG9zZQorCWNoYXJhY3RlcnMuICBVc2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCisJaW5jbHVkZSBzZWN0aW9ucyB0aGF0IGhhdmUgdGhlIHNhbWUgc3VtIGFuZCB0aGUgc2FtZSBsZW5ndGgKKwlidXQgd2hpY2ggYXJlIG5ldmVydGhlbGVzcyB1bmlxdWUuCisKKzIwMDQtMDMtMzEgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CisKKwkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSk6IEFkZCBSX0FSTV9BTFUqLgorCSogZWxmYXJtLW5hYmkuYyAoZWxmMzJfYXJtX2hvd3RvX3RhYmxlKTogRGl0dG8uCisKKzIwMDQtMDMtMzEgIEFuZHkgQ2hpdHRlbmRlbiA8YWNoaXR0ZW5kZW5AYmx1ZWFyYy5jb20+CisKKwkqIHN0YWJzLmMgKHN0cnVjdCBzdGFiX2xpbmtfaW5jbHVkZXNfdG90YWxzKTogUmVuYW1lIGZpZWxkICd0b3RhbCcKKwl0byAnc3VtX2NoYXJzJyBhbmQgYWRkIGZpZWxkICdudW1fY2hhcnMnLgorCShfYmZkX2xpbmtfc2VjdGlvbl9zdGFicyk6IFdoZW4gY29tcHV0aW5nIHRoZSBzdW0gb2YgdGhlCisJY2hhcmFjdGVycyBpbiBhIEJfSU5DTC4uQl9FSU5DTCByYW5nZSBhbHNvIGtlZXAgYSBjb3VudCBvZiB0aGUKKwludW1iZXIgb2YgY2hhcmFjdGVycy4gIFVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIGhlbHAgZGlzdGluZ3Vpc2gKKwliZXR3ZWVuIGluY2x1ZGUgc2VjdGlvbnMgd2hlbiBoYXZlIHRoZSBzYW1lIHN1bSBidXQgd2hpY2gKKwluZXZlcnRoZWxlc3MgYXJlIHN0aWxsIHVuaXF1ZS4KKworMjAwNC0wMy0zMSAgTWF0dGlhcyBFbmdkZWflcmQgIDxtYXR0aWFzQHZpcnR1dGVjaC5zZT4KKworCSogc3RhYnMuYyAoX2JmZF9saW5rX3NlY3Rpb25fc3RhYnMpOiBEbyBub3Qgc2tpcCBOX0VYQ0wgc3RhYnMuCisKKzIwMDQtMDMtMzAgIEdhbGl0IEhlbGxlciAgPEdhbGl0LkhlbGxlckBuc2MuY29tPgorICAgICAgICAgICAgVG9tZXIgTGV2aSAgICA8VG9tZXIuTGV2aUBuc2MuY29tPgorCisJKiBNYWtlZmlsZS5hbSAoQUxMX01BQ0hJTkVTKTogQWRkIGNwdS1jcjE2Yy5sby4KKwkoQUxMX01BQ0hJTkVTX0NGSUxFUyk6IEFkZCBjcHUtY3IxNmMuYy4KKwkoQkZEMzJfQkFDS0VORFMpOiBBZGQgZWxmMzItY3IxNmMubG8uCisJKEJGRDMyX0JBQ0tFTkRTX0NGSUxFUyk6IEFkZCBlbGYzMi1jcjE2Yy5jLgorCShjcHUtY3IxNmMubG8pOiBOZXcgdGFyZ2V0LgorCShlbGYzMi1jcjE2Yy5sbyk6IExpa2V3aXNlLgorCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisJKiBhcmNodXJlcy5jIChiZmRfYXJjaGl0ZWN0dXJlKTogQWRkIGJmZF97YXJjaCxtYWNofV9jcjE2Yy4KKwkoYmZkX2FyY2h1cmVzX2xpc3QpOiBBZGQgYmZkX2NyMTZjX2FyY2guCisJKiBjb25maWcuYmZkOiBIYW5kbGUgY3IxNmMtKi1lbGYqLgorCSogY29uZmlndXJlLmluOiBIYW5kbGUgYmZkX2VsZjMyX2NyMTZjX3ZlYy4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKwkqIHJlbG9jLmM6IEFkZCBCRkRfUkVMT0NfMTZDX05VTTA4LCBCRkRfUkVMT0NfMTZDX05VTTA4X0MsCisJQkZEX1JFTE9DXzE2Q19OVU0xNiwgQkZEX1JFTE9DXzE2Q19OVU0xNl9DLAorCUJGRF9SRUxPQ18xNkNfTlVNMzIsIEJGRF9SRUxPQ18xNkNfTlVNMzJfQywKKwlCRkRfUkVMT0NfMTZDX0RJU1AwNCwgQkZEX1JFTE9DXzE2Q19ESVNQMDRfQywKKwlCRkRfUkVMT0NfMTZDX0RJU1AwOCwgQkZEX1JFTE9DXzE2Q19ESVNQMDhfQywKKwlCRkRfUkVMT0NfMTZDX0RJU1AxNiwgQkZEX1JFTE9DXzE2Q19ESVNQMTZfQywKKwlCRkRfUkVMT0NfMTZDX0RJU1AyNCwgQkZEX1JFTE9DXzE2Q19ESVNQMjRfQywKKwlCRkRfUkVMT0NfMTZDX0RJU1AyNGEsIEJGRF9SRUxPQ18xNkNfRElTUDI0YV9DLAorCUJGRF9SRUxPQ18xNkNfUkVHMDQsIEJGRF9SRUxPQ18xNkNfUkVHMDRfQywKKwlCRkRfUkVMT0NfMTZDX1JFRzA0YSwgQkZEX1JFTE9DXzE2Q19SRUcwNGFfQywKKwlCRkRfUkVMT0NfMTZDX1JFRzE0LCBCRkRfUkVMT0NfMTZDX1JFRzE0X0MsCisJQkZEX1JFTE9DXzE2Q19SRUcxNiwgQkZEX1JFTE9DXzE2Q19SRUcxNl9DLAorCUJGRF9SRUxPQ18xNkNfUkVHMjAsIEJGRF9SRUxPQ18xNkNfUkVHMjBfQywKKwlCRkRfUkVMT0NfMTZDX0FCUzIwLCBCRkRfUkVMT0NfMTZDX0FCUzIwX0MsCisJQkZEX1JFTE9DXzE2Q19BQlMyNCwgQkZEX1JFTE9DXzE2Q19BQlMyNF9DLAorCUJGRF9SRUxPQ18xNkNfSU1NMDQsIEJGRF9SRUxPQ18xNkNfSU1NMDRfQywKKwlCRkRfUkVMT0NfMTZDX0lNTTE2LCBCRkRfUkVMT0NfMTZDX0lNTTE2X0MsCisJQkZEX1JFTE9DXzE2Q19JTU0yMCwgQkZEX1JFTE9DXzE2Q19JTU0yMF9DLAorCUJGRF9SRUxPQ18xNkNfSU1NMjQsIEJGRF9SRUxPQ18xNkNfSU1NMjRfQywKKwlCRkRfUkVMT0NfMTZDX0lNTTMyLCBCRkRfUkVMT0NfMTZDX0lNTTMyX0MuCisJKiB0YXJnZXRzLmMgKGJmZF9lbGYzMl9jcjE2Y192ZWMpOiBEZWNsYXJlLgorCShiZmRfdGFyZ2V0X3ZlY3Rvcik6IEFkZCBiZmRfZWxmMzJfY3IxNmNfdmVjLgorCSogY3B1LWNyMTZjLmM6IE5ldyBmaWxlLgorCSogZWxmMzItY3IxNmMuYzogTGlrZXdpc2UuCisJKiBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KKwkqIGJmZC1pbjIuaDogTGlrZXdpc2UuCisKKzIwMDQtMDMtMzAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJKiBlbGYuYyAobWFwX3NlY3Rpb25zX3RvX3NlZ21lbnRzKTogRml4IGhhbmRsaW5nIG9mIC50YnNzLgorCisyMDA0LTAzLTI3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgorCisJKiBNYWtlZmlsZS5hbTogUmVtb3ZlIGFsbCBtZW50aW9uIG9mIGVsZmxpbmsuaC4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCSogYmZkLWluLmggKGJmZF9lbGZfZGlzY2FyZF9pbmZvKTogRGVjbGFyZS4KKwkoYmZkX2VsZjMyX2Rpc2NhcmRfaW5mbywgYmZkX2VsZjY0X2Rpc2NhcmRfaW5mbyk6IERlbGV0ZS4KKwkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KKwkqIGVsZi1iZmQuaCAoYmZkX2VsZjMyX3ByaW50X3N5bWJvbCwgYmZkX2VsZjY0X3ByaW50X3N5bWJvbCwKKwliZmRfZWxmMzJfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wsCisJYmZkX2VsZjY0X2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sLAorCV9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sLCBiZmRfZWxmMzJfYmZkX2ZpbmFsX2xpbmssCisJYmZkX2VsZjY0X2JmZF9maW5hbF9saW5rLCBlbGZfbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wsCisJX2JmZF9lbGYzMl9saW5rX3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbCwKKwlfYmZkX2VsZjY0X2xpbmtfcmVjb3JkX2xvY2FsX2R5bmFtaWNfc3ltYm9sLAorCV9iZmRfZWxmMzJfZ2Nfc2VjdGlvbnMsIF9iZmRfZWxmMzJfZ2NfY29tbW9uX2ZpbmFsaXplX2dvdF9vZmZzZXRzLAorCV9iZmRfZWxmMzJfZ2NfY29tbW9uX2ZpbmFsX2xpbmssIF9iZmRfZWxmNjRfZ2NfY29tbW9uX2ZpbmFsX2xpbmssCisJX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRpbmhlcml0LCBfYmZkX2VsZjMyX2djX3JlY29yZF92dGVudHJ5LAorCV9iZmRfZWxmNjRfZ2Nfc2VjdGlvbnMsIF9iZmRfZWxmNjRfZ2NfY29tbW9uX2ZpbmFsaXplX2dvdF9vZmZzZXRzLAorCV9iZmRfZWxmNjRfZ2NfcmVjb3JkX3Z0aW5oZXJpdCwgX2JmZF9lbGY2NF9nY19yZWNvcmRfdnRlbnRyeSwKKwlfYmZkX2VsZjMyX3JlbG9jX3N5bWJvbF9kZWxldGVkX3AsCisJX2JmZF9lbGY2NF9yZWxvY19zeW1ib2xfZGVsZXRlZF9wKTogRGVsZXRlLgorCShiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sLAorCWJmZF9lbGZfbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wsCisJYmZkX2VsZl9maW5hbF9saW5rLCBiZmRfZWxmX2djX3NlY3Rpb25zLAorCWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCwgYmZkX2VsZl9nY19yZWNvcmRfdnRlbnRyeSwKKwliZmRfZWxmX2djX2NvbW1vbl9maW5hbGl6ZV9nb3Rfb2Zmc2V0cywgYmZkX2VsZl9nY19jb21tb25fZmluYWxfbGluaywKKwliZmRfZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3ApOiBEZWNsYXJlLgorCShXSUxMX0NBTExfRklOSVNIX0RZTkFNSUNfU1lNQk9MKTogRGVmaW5lLgorCSogZWxmMzItYXJtLmg6IFVwZGF0ZSBmb3IgY2hhbmdlZCBmdW5jdGlvbiBuYW1lcy4gIFJlbW92ZSBsb2NhbAorCVdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TRUNUSU9OIGRlZmluZS4KKwkqIGVsZi1ocHBhLmgsIGVsZi1tMTAzMDAuYywgZWxmMzItY3Jpcy5jLCBlbGYzMi1kMTB2LmMsIGVsZjMyLWRseC5jLAorCSogZWxmMzItZnIzMC5jLCBlbGYzMi1mcnYuYywgZWxmMzItaDgzMDAuYywgZWxmMzItaHBwYS5jLCBlbGYzMi1pMzg2LmMsCisJKiBlbGYzMi1pcTIwMDAuYywgZWxmMzItbTMyci5jLCBlbGYzMi1tNjhoYzF4LmMsIGVsZjMyLW02OGsuYywKKwkqIGVsZjMyLW1jb3JlLmMsIGVsZjMyLW9wZW5yaXNjLmMsIGVsZjMyLXBwYy5jLCBlbGYzMi1zMzkwLmMsCisJKiBlbGYzMi1zaC5jLCBlbGYzMi1zcGFyYy5jLCBlbGYzMi12ODUwLmMsIGVsZjMyLXZheC5jLAorCSogZWxmMzIteHN0b3JteTE2LmMsIGVsZjMyLXh0ZW5zYS5jLCBlbGY2NC1hbHBoYS5jLCBlbGY2NC1ocHBhLmMsCisJKiBlbGY2NC1tbWl4LmMsIGVsZjY0LXBwYy5jLCBlbGY2NC1zMzkwLmMsIGVsZjY0LXNoNjQuYywgZWxmNjQtc3BhcmMuYywKKwkqIGVsZjY0LXg4Ni02NC5jLCBlbGZ4eC1pYTY0LmMsIGVsZnh4LW1pcHMuYywgZWxmeHgtdGFyZ2V0Lmg6IExpa2V3aXNlLgorCSogZWxmeHgtdGFyZ2V0LmggKGJmZF9lbGZOTl9iZmRfZmluYWxfbGluayk6IERlZmluZS4KKwkoYmZkX2VsZk5OX3ByaW50X3N5bWJvbCk6IERlZmluZS4KKwkqIGVsZmNvZGUuaDogRG9uJ3QgaW5jbHVkZSBlbGZsaW5rLmguCisJKGVsZl9iZmRfZGlzY2FyZF9pbmZvLCBlbGZfcmVsb2Nfc3ltYm9sX2RlbGV0ZWRfcCwKKwllbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wsIGVsZl9iZmRfZmluYWxfbGluaywgZWxmX2djX3NlY3Rpb25zLAorCWVsZl9nY19jb21tb25fZmluYWxpemVfZ290X29mZnNldHMsIGVsZl9nY19jb21tb25fZmluYWxfbGluaywKKwllbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCwgZWxmX2djX3JlY29yZF92dGVudHJ5LAorCWVsZl9saW5rX3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbCk6IERvbid0IGRlZmluZS4KKwkqIGVsZmxpbmsuYzogVXBkYXRlIGZvciBjaGFuZ2VkIGZ1bmN0aW9uIG5hbWVzLiAgTW92ZSBlbGZsaW5rLmgKKwljb2RlIGhlcmUuCisJKiBlbGZsaW5rLmg6IERlbGV0ZSBmaWxlLgorCSogcG8vU1JDLVBPVEZJTEVTLmluOiBSZWdlbmVyYXRlLgorCSogcG8vYmZkLnBvdDogUmVnZW5lcmF0ZS4KKworMjAwNC0wMy0yNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKworCSogZWxmNjQtbW1peC5jIChtbWl4X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogUmVzdG9yZSBjb2RlIHNldHRpbmcKKwkibmFtZSIgZm9yIGdsb2JhbCBzeW1zIGFjY2lkZW50YWxseSByZW1vdmVkIGluIDIwMDQtMDMtMjAgY2hhbmdlLgorCisyMDA0LTAzLTI3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgorCisJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfcmVsb2NfY29va2llKTogQWRkIHJfc3ltX3NoaWZ0IGZpZWxkLgorCSogZWxmbGluay5oOiBSZXBsYWNlIGFsbCBvY2N1cnJlbmNlcyBvZiBzaXplb2YgKEVsZl9FeHRlcm5hbF8qKQorCXdoZXJlIEVsZl9FeHRlcm5hbF8qIGlzIGRpZmZlcmVudCBmb3IgNjQgYW5kIDMyIGJpdCwgd2l0aAorCWNvcnJlc3BvbmRpbmcgZWxmX3NpemVfaW5mbyBmaWVsZC4KKwkoc3RydWN0IGVsZl9maW5hbF9saW5rX2luZm8pOiBVc2UgImJmZF9ieXRlICoiIGluc3RlYWQKKwlvZiAiRWxmX0V4dGVybmFsX1N5bSAqIiBmb3IgZXh0ZXJuYWxfc3ltcyBhbmQgc3ltYnVmLgorCShlbGZfbGlua19hZGp1c3RfcmVsb2NzKTogU2V0IHVwIHJfdHlwZV9tYXNrIGFuZCByX3N5bV9zaGlmdCBsb2NhbAorCXZhcnMgYW5kIHVzZSBpbnN0ZWFkIG9mIEVMRl9SX0lORk8gYW5kIEVMRl9SX1RZUEUgbWFjcm9zLgorCShzdHJ1Y3QgZWxmX2xpbmtfc29ydF9yZWxhKTogQWRkICJzeW1fbWFzayIgYWxpYXMgZm9yICJvZmZzZXQiLgorCShlbGZfbGlua19zb3J0X2NtcDEpOiBVc2Ugc3ltX21hc2sgZmllbGQgaW5zdGVhZCBvZiBFTEZfUl9TWU0uCisJKGVsZl9saW5rX3NvcnRfY21wMik6IEFkanVzdC4KKwkoZWxmX2xpbmtfc29ydF9yZWxvY3MpOiBTZXQgdXAgcl9zeW1fbWFzayBsb2NhbCB2YXIgaW5zdGVhZCBvZgorCXVzaW5nIEVMRl9SX1NZTSBtYWNyby4gIFNldCB1LnN5bV9tYXNrLgorCShlbGZfYmZkX2ZpbmFsX2xpbmspOiBDYWxsIF9iZmRfZWxmX3N0cmluZ3RhYl9pbml0IGluc3RlYWQgb2YgbWFjcm8KKwl2ZXJzaW9uLCBlbGZfc3RyaW5ndGFiX2luaXQuICBEaXR0byBmb3IgYmZkX3NlY3Rpb25fZnJvbV9lbGZfaW5kZXgKKwl2cy4gc2VjdGlvbl9mcm9tX2VsZl9pbmRleC4gIEFkanVzdCBFbGZfRXh0ZXJuYWxfU3ltIHBvaW50ZXIKKwlhcml0aG1ldGljLiAgUGFzcyBiZWQgdG8gZWxmX2xpbmtfZmx1c2hfb3V0cHV0X3N5bXMuICBBZGp1c3QKKwlFbGZfRXh0ZXJuYWxfRHluIHBvaW50ZXIgYXJpdGhtZW50aWMuICBVc2UgYmVkIHN3YXBfZHluX2luIGFuZAorCXN3YXBfc3luX291dCBmdW5jdGlvbnMuICBSZWFycmFuZ2UgZHluIHN3YXAgaW4vb3V0IHN3aXRjaC4KKwkoZWxmX2xpbmtfb3V0cHV0X3N5bSk6IEFkanVzdCBFbGZfRXh0ZXJuYWxfU3ltIHBvaW50ZXIgYXJpdGhtZW50aWMuCisJUGFzcyBiZWQgdG8gZWxmX2xpbmtfZmx1c2hfb3V0cHV0X3N5bXMuICBVc2UgYmVkIHN3YXBfc3ltYm9sX291dC4KKwkoZWxmX2xpbmtfZmx1c2hfb3V0cHV0X3N5bXMpOiBBZGQgZWxmX2JhY2tlbmRfZGF0YSBhcmcuCisJKGVsZl9saW5rX2NoZWNrX3ZlcnNpb25lZF9zeW1ib2wpOiBMaWtld2lzZS4KKwkoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IFBhc3MgYmVkIHRvIGVsZl9saW5rX2NoZWNrX3ZlcnNpb25lZF9zeW1ib2wuCisJQWRqdXN0IEVsZl9FeHRlcm5hbF9TeW0gcG9pbnRlciBhcml0aG1ldGljLiAgVXNlIGJlZCBzd2FwX3N5bWJvbF9vdXQuCisJKGVsZl9saW5rX2lucHV0X2JmZCk6IFVzZSBiZmRfc2VjdGlvbl9mcm9tX2VsZl9pbmRleC4gIFNldCB1cAorCXJfdHlwZV9tYXNrIGFuZCByX3N5bV9zaGlmdCBsb2NhbCB2YXJzIGFuZCB1c2UgaW5zdGVhZCBvZiBFTEZfUl9TWU0sCisJRUxGX1JfVFlQRSBhbmQgRUxGX1JfSU5GTyBtYWNyb3MuCisJKGVsZl9yZWxvY19saW5rX29yZGVyKTogU2VsZWN0IEVMRjMyX1JfSU5GTyBvciBFTEY2NF9SX0lORk8gaW52b2NhdGlvbgorCWJhc2VkIG9uIHNpemUgcmF0aGVyIHRoYW4gdXNpbmcgRUxGX1JfSU5GTy4KKwkoZWxmX2djX21hcmspOiBTZXQgdXAgcl9zeW1fc2hpZnQgbG9jYWwgdmFyIGFuZCB1c2UgaW5zdGVhZCBvZgorCUVMRl9SX1NZTSBtYWNyby4KKwkoc3RydWN0IGFsbG9jX2dvdF9vZmZfYXJnKTogTmV3LgorCShlbGZfZ2NfY29tbW9uX2ZpbmFsaXplX2dvdF9vZmZzZXRzKTogVXNlIGVsZl9zaXplX2luZm8gaW5zdGVhZCBvZgorCUFSQ0hfU0laRS4gIFBhc3MgZ2V0IGVudHJ5IHNpemUgZG93biB0byBlbGZfZ2NfYWxsb2NhdGVfZ290X29mZnNldHMuCisJKGVsZl9nY19hbGxvY2F0ZV9nb3Rfb2Zmc2V0cyk6IEFkanVzdC4KKwkoZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3ApOiBVc2VlIGNvb2tpZS5yX3N5bV9zaGlmdCBpbnN0ZWFkIG9mCisJRUxGX1JfU1lNLiAgVXNlIGJmZF9zZWN0aW9uX2Zyb21fZWxmX2luZGV4LgorCShlbGZfYmZkX2Rpc2NhcmRfaW5mbyk6IFNldCBjb29raWUucl9zeW1fc2hpZnQuCisJKiBlbGZjb2RlLmggKGVsZl9zdHJpbmd0YWJfaW5pdCwgc2VjdGlvbl9mcm9tX2VsZl9pbmRleCk6IERlbGV0ZS4KKwkoZWxmX3NsdXJwX3N5bWJvbF90YWJsZSk6IFVzZSBiZmRfc2VjdGlvbl9mcm9tX2VsZl9pbmRleC4KKworMjAwNC0wMy0yNiAgU3RhbiBTaGVicyAgPHNoZWJzQGFwcGxlLmNvbT4KKworCVJlbW92ZSBNUFcgc3VwcG9ydCwgbm8gbG9uZ2VyIHVzZWQuCisJKiBjb25maWcuYmZkIChwb3dlcnBjLSotbXB3Kik6IFJlbW92ZSBjb25maWd1cmF0aW9uLgorCSogbXB3LWNvbmZpZy5pbiwgbXB3LW1ha2Uuc2VkOiBSZW1vdmUgZmlsZXMuCisJKiBlY29mZnN3YXAuaCBbTVBXX0NdOiBSZW1vdmUgTVBXLUMtZnJpZW5kbHkgdmVyc2lvbiBvZiBjb2RlLgorCisyMDA0LTAzLTI2ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgorCisJKiBlbGY2NC1wcGMuYyAoZWxmX2JhY2tlbmRfYWRkX3N5bWJvbF9ob29rKTogRGVmaW5lLgorCShwcGM2NF9lbGZfYWRkX3N5bWJvbF9ob29rKTogTmV3IGZ1bmN0aW9uLgorCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSA8ZWxmX2FkZF9zeW1ib2xfaG9vaz4pOiBSZW1vdmUKKwljb25zdCBmcm9tIEVsZl9JbnRlcm5hbF9TeW0gcGFyYW0uCisJKiBlbGZsaW5rLmMgKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IEFkanVzdC4KKwkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2FkZF9zeW1ib2xfaG9vayk6IEFkanVzdC4KKwkqIGVsZjMyLWZydi5jIChlbGYzMl9mcnZfYWRkX3N5bWJvbF9ob29rKTogQWRqdXN0LgorCSogZWxmMzItaTM3MC5jIChlbGZfYmFja2VuZF9hZGRfc3ltYm9sX2hvb2spOiBBZGp1c3QuCisJKiBlbGYzMi1tMzJyLmMgKG0zMnJfZWxmX2FkZF9zeW1ib2xfaG9vayk6IEFkanVzdC4KKwkqIGVsZjMyLW02OGhjMXguYyAoZWxmMzJfbTY4aGMxMV9hZGRfc3ltYm9sX2hvb2spOiBBZGp1c3QuCisJKiBlbGYzMi1tNjhoYzF4LmggKGVsZjMyX202OGhjMTFfYWRkX3N5bWJvbF9ob29rKTogQWRqdXN0LgorCSogZWxmMzItcHBjLmMgKHBwY19lbGZfYWRkX3N5bWJvbF9ob29rKTogQWRqdXN0LgorCSogZWxmMzItc2g2NC5jIChzaDY0X2VsZl9hZGRfc3ltYm9sX2hvb2spOiBBZGp1c3QuCisJKiBlbGYzMi12ODUwLmMgKHY4NTBfZWxmX2FkZF9zeW1ib2xfaG9vayk6IEFkanVzdC4KKwkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX2FkZF9zeW1ib2xfaG9vayk6IEFkanVzdC4KKwkqIGVsZjY0LW1taXguYyAobW1peF9lbGZfYWRkX3N5bWJvbF9ob29rKTogQWRqdXN0LgorCSogZWxmNjQtc2g2NC5jIChzaDY0X2VsZjY0X2FkZF9zeW1ib2xfaG9vayk6IEFkanVzdC4KKwkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX2FkZF9zeW1ib2xfaG9vayk6IEFkanVzdC4KKwkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9hZGRfc3ltYm9sX2hvb2spOiBBZGp1c3QuCisJKiBlbGZ4eC1taXBzLmMgKF9iZmRfbWlwc19lbGZfYWRkX3N5bWJvbF9ob29rKTogQWRqdXN0LgorCSogZWxmeHgtbWlwcy5oIChfYmZkX21pcHNfZWxmX2FkZF9zeW1ib2xfaG9vayk6IEFkanVzdC4KKworMjAwNC0wMy0yNiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKworCSogZWxmeHgtdGFyZ2V0LmggKGJmZF9lbGZOTl9iZmRfbGlua19hZGRfc3ltYm9scyk6IERlZmluZS4KKwkqIGVsZi1iZmQuaCAoX2JmZF9lbGZfbGlua19hZGRfYXJjaGl2ZV9zeW1ib2xzKTogRGVsZXRlLgorCShfYmZkX2VsZl9zb3J0X3N5bWJvbCwgX2JmZF9lbGZfYWRkX2R0X25lZWRlZF90YWcpOiBEZWxldGUuCisJKF9iZmRfZWxmX2ZpbmFsaXplX2R5bnN0ciwgYmZkX2VsZjMyX2JmZF9saW5rX2FkZF9zeW1ib2xzKTogRGVsZXRlLgorCShiZmRfZWxmNjRfYmZkX2xpbmtfYWRkX3N5bWJvbHMpOiBEZWxldGUuCisJKGJmZF9lbGZfbGlua19hZGRfc3ltYm9scyk6IERlY2xhcmUuCisJKiBlbGZjb2RlLmggKGVsZl9iZmRfbGlua19hZGRfc3ltYm9scyk6IERlbGV0ZS4KKwkqIGVsZmxpbmsuYzogSW5jbHVkZSBzYWZlLWN0eXBlLmguCisJKGVsZl9hZGRfZHRfbmVlZGVkX3RhZyk6IFJlbmFtZSBmcm9tIF9iZmRfZWxmX2FkZF9kdF9uZWVkZWRfdGFnLAorCW1ha2Ugc3RhdGljLgorCShlbGZfc29ydF9zeW1ib2wpOiBSZW5hbWUgZnJvbSBfYmZkX2VsZl9zb3J0X3N5bWJvbCwgbWFrZSBzdGF0aWMuCisJKGVsZl9maW5hbGl6ZV9keW5zdHIpOiBSZW5hbWUgZnJvbSBfYmZkX2VsZl9maW5hbGl6ZV9keW5zdHIsIG1ha2UKKwlzdGF0aWMuCisJKGVsZl9saW5rX2FkZF9hcmNoaXZlX3N5bWJvbHMpOiBSZW5hbWUgZnJvbQorCV9iZmRfZWxmX2xpbmtfYWRkX2FyY2hpdmVfc3ltYm9scywgbWFrZSBzdGF0aWMuCisJKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IE5ldyBmdW5jdGlvbi4gIENvcnJlc3BvbmRpbmcKKwllbGZsaW5rLmggZnVuY3Rpb24gY29udmVydGVkIHRvIHVzZSBlbGZfc2l6ZV9pbmZvLgorCShiZmRfZWxmX2xpbmtfYWRkX3N5bWJvbHMpOiBMaWtld2lzZS4KKwkoYmZkX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBBZGp1c3QuCisJKiBlbGZsaW5rLmggKGVsZl9iZmRfbGlua19hZGRfc3ltYm9scyk6IERlbGV0ZS4KKwkoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogRGVsZXRlLgorCSogZWxmMzItZ2VuLmMgKGVsZjMyX2dlbmVyaWNfbGlua19hZGRfc3ltYm9scyk6IENhbGwKKwliZmRfZWxmX2xpbmtfYWRkX3N5bWJvbHMuCisJKiBlbGY2NC1nZW4uYyAoZWxmNjRfZ2VuZXJpY19saW5rX2FkZF9zeW1ib2xzKTogTGlrZXdpc2UuCisKKzIwMDQtMDMtMjUgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKKwkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogQWRkIERUX05FRURFRCBmb3IgYXMtbmVlZGVkCisJYW5kIGNoYWluZWQgc2hhcmVkIGxpYnMgb25seSBpZiBkeW5zeW0uICBDbGVhciBkeW5zeW0gb24gZm9yY2VkLWxvY2FsLgorCisJKiBlbGYtYmZkLmggKF9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5KTogRGVjbGFyZS4KKwkoYmZkX2VsZjMyX2FkZF9keW5hbWljX2VudHJ5LCBiZmRfZWxmNjRfYWRkX2R5bmFtaWNfZW50cnkpOiBEZWxldGUuCisJKF9iZmRfZWxmX2FkZF9kdF9uZWVkZWRfdGFnKTogRGVjbGFyZS4KKwkoX2JmZF9lbGZfc29ydF9zeW1ib2wpOiBEZWNsYXJlLgorCShfYmZkX2VsZl9maW5hbGl6ZV9keW5zdHIpOiBEZWNsYXJlLgorCShSRUxPQ19GT1JfR0xPQkFMX1NZTSk6IEZvcm1hdHRpbmcuCisJKiBlbGZjb2RlLmggKGVsZl9hZGRfZHluYW1pY19lbnRyeSk6IERlbGV0ZS4KKwkqIGVsZmxpbmsuYyAoX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkpOiBOZXcgZnVuY3Rpb24uICBDb3JyZXNwb25kaW5nCisJZWxmbGluay5oIGZ1bmN0aW9uIGNvbnZlcnRlZCB0byB1c2UgZWxmX3NpemVfaW5mby4KKwkoX2JmZF9lbGZfYWRkX2R0X25lZWRlZF90YWcpOiBMaWtld2lzZS4KKwkoX2JmZF9lbGZfc29ydF9zeW1ib2wpOiBMaWtld2lzZS4KKwkoX2JmZF9lbGZfZmluYWxpemVfZHluc3RyKTogTGlrZXdpc2UuCisJKGNvbXB1dGVfYnVja2V0X2NvdW50KTogTGlrZXdpc2UuCisJKGJmZF9lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuICBDaGVjayByZXN1bHQgb2YKKwlfYmZkX2VsZl9zdHJ0YWJfYWRkIGJlZm9yZSBjYWxsaW5nIF9iZmRfZWxmX3N0cnRhYl9hZGRyZWYuCisJKGVsZl9hZGp1c3RfZHluc3RyX29mZnNldHMsIGVsZl9jb2xsZWN0X2hhc2hfY29kZXMpOiBNb3ZlZCBmcm9tLi4KKwkqIGVsZmxpbmsuaDogLi5oZXJlLgorCShzb3J0X3N5bWJvbCwgYWRkX2R0X25lZWRlZF90YWcpOiBEZWxldGUuCisJKGVsZl9hZGRfZHluYW1pY19lbnRyeSwgZWxmX2ZpbmFsaXplX2R5bnN0cik6IERlbGV0ZS4KKwkoY29tcHV0ZV9idWNrZXRfY291bnQsIE5BTUUoYmZkX2VsZixzaXplX2R5bmFtaWNfc2VjdGlvbnMpKTogRGVsZXRlLgorCVVwZGF0ZSBhbGwgdXNlcnMuCisJKiBlbGYzMi1hcm0uaCAoYWRkX2R5bmFtaWNfZW50cnkpOiBVcGRhdGUuICBSZW1vdmUgY2FzdHMuCisJKiBlbGYzMi1jcmlzLmMgKGFkZF9keW5hbWljX2VudHJ5KTogTGlrZXdpc2UuCisJKiBlbGYzMi1ocHBhLmMgKGFkZF9keW5hbWljX2VudHJ5KTogTGlrZXdpc2UuCisJKiBlbGYzMi1pMzcwLmMgKGFkZF9keW5hbWljX2VudHJ5KTogTGlrZXdpc2UuCisJKiBlbGYzMi1pMzg2LmMgKGFkZF9keW5hbWljX2VudHJ5KTogTGlrZXdpc2UuCisJKiBlbGYzMi1tMzJyLmMgKGFkZF9keW5hbWljX2VudHJ5KTogTGlrZXdpc2UuCisJKiBlbGYzMi1tNjhrLmMgKGFkZF9keW5hbWljX2VudHJ5KTogTGlrZXdpc2UuCisJKiBlbGYzMi1wcGMuYyAoYWRkX2R5bmFtaWNfZW50cnkpOiBMaWtld2lzZS4KKwkqIGVsZjMyLXMzOTAuYyAoYWRkX2R5bmFtaWNfZW50cnkpOiBMaWtld2lzZS4KKwkqIGVsZjMyLXNoLmMgKGFkZF9keW5hbWljX2VudHJ5KTogTGlrZXdpc2UuCisJKiBlbGYzMi1zcGFyYy5jIChhZGRfZHluYW1pY19lbnRyeSk6IExpa2V3aXNlLgorCSogZWxmMzItdmF4LmMgKGFkZF9keW5hbWljX2VudHJ5KTogTGlrZXdpc2UuCisJKiBlbGYzMi14dGVuc2EuYyAoYWRkX2R5bmFtaWNfZW50cnkpOiBMaWtld2lzZS4KKwkqIGVsZjY0LWFscGhhLmMgKGFkZF9keW5hbWljX2VudHJ5KTogTGlrZXdpc2UuCisJKiBlbGY2NC1ocHBhLmMgKGFkZF9keW5hbWljX2VudHJ5KTogTGlrZXdpc2UuCisJKiBlbGY2NC1wcGMuYyAoYWRkX2R5bmFtaWNfZW50cnkpOiBMaWtld2lzZS4KKwkqIGVsZjY0LXMzOTAuYyAoYWRkX2R5bmFtaWNfZW50cnkpOiBMaWtld2lzZS4KKwkqIGVsZjY0LXNwYXJjLmMgKGFkZF9keW5hbWljX2VudHJ5KTogTGlrZXdpc2UuCisJKiBlbGY2NC14ODYtNjQuYyAoYWRkX2R5bmFtaWNfZW50cnkpOiBMaWtld2lzZS4KKwkqIGVsZnh4LWlhNjQuYyAoYWRkX2R5bmFtaWNfZW50cnkpOiBMaWtld2lzZS4KKwkqIGVsZnh4LW1pcHMuYyAoTUlQU19FTEZfQUREX0RZTkFNSUNfRU5UUlkpOiBMaWtld2lzZS4KKwkqIGVsZi1tMTAzMDAuYyAoX2JmZF9tbjEwMzAwX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KKwkqIGVsZjMyLWZydi5jIChlbGYzMl9mcnZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCisJKiBlbGY2NC1zaDY0LmMgKHNoNjRfZWxmNjRfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCisKKzIwMDQtMDMtMjMgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CisKKwkqIGVsZjMyLWFybS5oIChhcm1fcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IEFkZCBFQUJJIHYzLgorCisyMDA0LTAzLTIyICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgorCisJKiBlbGYzMi14dGVuc2EuYyAoZWxmX3h0ZW5zYV9jaGVja19yZWxvY3MpOiBSZW1vdmUgY29kZSB0byByZWFkCisJbGl0ZXJhbCB0YWJsZXMgYW5kIGNoZWNrIGZvciByZWxvY3Mgb3V0c2lkZSBvZiBsaXRlcmFsIHBvb2xzLgorCShlbGZfeHRlbnNhX21ha2Vfc3ltX2xvY2FsKTogRG9uJ3QgY2xlYXIgRUxGX0xJTktfTk9OX0dPVF9SRUYgZmxhZy4KKwkoZWxmX3h0ZW5zYV9maXhfcmVmY291bnRzKTogRG9uJ3QgY2hlY2sgRUxGX0xJTktfTk9OX0dPVF9SRUYgb3IKKwlzZXQgREZfVEVYVFJFTC4KKwkoZWxmX3h0ZW5zYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBEb24ndCBhZGQgRFRfVEVYVFJFTCBlbnRyeS4KKwkoZWxmX3h0ZW5zYV9yZWxvY2F0ZV9zZWN0aW9uKTogUmVhZCBsaXRlcmFsIHRhYmxlcyBhbmQgY2hlY2sgZm9yCisJZHluYW1pYyByZWxvY2F0aW9ucyBpbiByZWFkLW9ubHkgc2VjdGlvbnMgYW5kIG5vdCBpbiBsaXRlcmFsIHBvb2xzLgorCisyMDA0LTAzLTIzICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgorCisJUFIgNTEuCisJKiBsaW5rZXIuYyAoYmZkX3dyYXBwZWRfbGlua19oYXNoX2xvb2t1cCk6IEhhbmRsZSBpbmZvLT53cmFwX2NoYXIuCisKKzIwMDQtMDMtMjIgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgorCisJKiBlbGYzMi1jcmlzLmMgKGNyaXNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pIDxjYXNlIFJfQ1JJU18xNl9HT1RQTFQsCisJUl9DUklTXzE2X0dPVFBMVD46IEFsc28gZXJyb3IgaWYgdGhlcmUncyBubyBQTFQgZm9yIGEgc3ltYm9sCisJbm90IGRlZmluZWQgYnkgdGhlIGV4ZWN1dGFibGUsIG9yIGRlZmluZWQgaW4gYSBEU08uCisJPGVsaWRpbmcgcnVuLXRpbWUgcmVsb2NhdGlvbiBvZiAuZ290PjogSW5pdGlhbGl6ZSBHT1QgZW50cnkgZm9yIGEKKwlmdW5jdGlvbiBzeW1ib2wgb3IgRUxGX0xJTktfSEFTSF9ORUVEU19QTFQgc3RhdGljYWxseSBpbiBhbgorCWV4ZWN1dGFibGUuCisJKGNyaXNfZWxmX2djX3N3ZWVwX2hvb2spOiBJbXByb3ZlIGZhbGx0aHJvdWdoIG1hcmtpbmcuCisJKGVsZl9jcmlzX3RyeV9mb2xkX3BsdF90b19nb3QpOiBJbXByb3ZlIGhlYWQgY29tbWVudC4gIERvIG5vdCBmb2xkCisJYSBQTFQgcmVsb2MgdG8gR09UIGZvciBhbiBleGVjdXRhYmxlLgorCShlbGZfY3Jpc19hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBPbmx5IGZvbGQgYSAuZ290LnBsdCBlbnRyeSB3aXRoCisJLmdvdCBmb3IgYSBEU08gYW5kIGV4cGxhaW4gd2h5LgorCShlbGZfY3Jpc19kaXNjYXJkX2V4Y2Vzc19wcm9ncmFtX2R5bmFtaWNzKTogQWxzbyBsb3NlIEdPVC1yZWxvY3MKKwlhbmQgdW5yZWZlcmVuY2VkIHN5bWJvbHMgZm9yIHdoaWNoIGEgUExUIGlzIGRlZmluZWQuICBBZGp1c3QKKwlkeW5hbWljLXN5bWJvbCBwcnVuaW5nIGNvcnJlc3BvbmRpbmdseSwgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGxvc2UKKwlhIGR5bmFtaWMgc3ltYm9sIGFsc28gZGVmaW5lZCBieSBhIERTTy4KKworMjAwNC0wMy0yMiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKworCSogZWxmLWJmZC5oIChSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCk6IEFkZCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24KKwlhbmQgcmVsIGFyZ3MuICBHcm91cCBpbnB1dCBhbmQgb3V0cHV0IGFyZ3MuICBXcmFwIHRvIDgwIGNvbHVtbnMuCisJKiBlbGYtbTEwMjAwLmMsIGVsZi1tMTAzMDAuYywgZWxmMzItYXJtLmgsIGVsZjMyLWF2ci5jLAorCWVsZjMyLWNyaXMuYywgZWxmMzItZDEwdi5jLCBlbGYzMi1mcjMwLmMsIGVsZjMyLWg4MzAwLmMsCisJZWxmMzItaHBwYS5jLCBlbGYzMi1pMzg2LmMsIGVsZjMyLWk4NjAuYywgZWxmMzItaXAyay5jLAorCWVsZjMyLWlxMjAwMC5jLCBlbGYzMi1tNjhoYzF4LmMsIGVsZjMyLW02OGsuYywgZWxmMzItbWNvcmUuYywKKwllbGYzMi1tc3A0MzAuYywgZWxmMzItb3BlbnJpc2MuYywgZWxmMzItcHBjLmMsIGVsZjMyLXMzOTAuYywKKwllbGYzMi1zcGFyYy5jLCBlbGYzMi12ODUwLmMsIGVsZjMyLXZheC5jLCBlbGYzMi14c3Rvcm15MTYuYywKKwllbGYzMi14dGVuc2EuYywgZWxmNjQtYWxwaGEuYywgZWxmNjQtbW1peC5jLCBlbGY2NC1wcGMuYywKKwllbGY2NC1zMzkwLmMsIGVsZjY0LXNwYXJjLmMsIGVsZjY0LXg4Ni02NC5jLCBlbGZ4eC1pYTY0LmM6IFVwZGF0ZQorCVJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIGludm9jYXRpb24uCisKKzIwMDQtMDMtMjAgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KKworCSogZWxmLWJmZC5oIChSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCk6IFJlcG9ydCBlcnJvciBpZgorCXVucmVzb2x2ZWQgc3ltYm9scyBpbiBvYmplY3RzIGFyZW4ndCBhbGxvd2VkLgorCisJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogUHJvcGVybHkgaGFuZGxlCisJdW5yZXNvbHZlZCBzeW1ib2xzLgorCShlbGZfaHBwYV9yZW1hcmtfdXNlbGVzc19keW5hbWljX3N5bWJvbHMpOiBMaWtld2lzZS4KKwkoZWxmX2hwcGFfdW5tYXJrX3VzZWxlc3NfZHluYW1pY19zeW1ib2xzKToKKwkqIGVsZjMyLWZydi5jIChlbGYzMl9mcnZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBMaWtld2lzZS4KKwkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCisJKiBlbGYzMi1pMzcwLmMgKGkzNzBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKwkqIGVsZjMyLW0zMnIuYyAobTMycl9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKwkqIGVsZjY0LXNoNjQuYyAoc2hfZWxmNjRfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorCSogZWxmeHgtbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IExpa2V3aXNlLgorCisJKiBlbGYtbTEwMjAwLmMgKG1uMTAyMDBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBVc2UKKwlSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTC4KKwkqIGVsZjMyLWF2ci5jIChlbGYzMl9hdnJfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorCSogZWxmMzItZDEwdi5jIChlbGYzMl9kMTB2X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKwkqIGVsZjMyLWZyMzAuYyAoZnIzMF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorCSogZWxmMzItaDgzMDAuYyAoZWxmMzJfaDhfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorCSogZWxmMzItaTg2MC5jIChlbGYzMl9pODYwX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKwkqIGVsZjMyLW02OGhjMXguYyAobTY4aGMxMV9nZXRfcmVsb2NhdGlvbl92YWx1ZSk6IExpa2V3aXNlLgorCSogZWxmMzItbWNvcmUuYyAobWNvcmVfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKwkqIGVsZjMyLW1zcDQzMC5jIChlbGYzMl9tc3A0MzBfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorCSogZWxmMzItb3BlbnJpc2MuYyAob3BlbnJpc2NfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKwkqIGVsZjMyLXY4NTAuYyAodjg1MF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorCSogZWxmMzIteHN0b3JteTE2LmMgKHhzdG9ybXkxNl9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorCSogZWxmNjQtbW1peC5jIChtbWl4X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCisKKzIwMDQtMDMtMTkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CisKKwkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBIYW5kbGUgUl9QQVJJU0NfUENSRUwzMi4KKwkoZmluYWxfbGlua19yZWxvY2F0ZSk6IExpa2V3aXNlLgorCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfcmVsb2NfZmluYWxfdHlwZSk6IEhhbmRsZSBzZWxlY3RvcnMgZm9yCisJUl9QQVJJU0NfUENSRUwzMiBhbmQgUl9QQVJJU0NfUENSRUw2NCByZWxvY2F0aW9ucy4KKworMjAwNC0wMy0xOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKworCSogTWFrZWZpbGUuYW06IFJ1biAibWFrZSBkZXAtYW0iLgorCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisJKiBhY2xvY2FsLm00OiBSZWdlbmVyYXRlLgorCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgorCSogcG8vYmZkLnBvdDogUmVnZW5lcmF0ZS4KKworMjAwNC0wMy0xOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKwkgICAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgorCisJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX21lcmdlX3N5bWJvbCk6IFJldmVydCBsYXN0IGNoYW5nZS4gIE1vdmUKKwl0eXBlIGFuZCBzaXplIGNoYW5nZSBjb2RlIHRvIHdoZXJlIGl0IHdhcyBwcmV2aW91c2x5LiAgUmVtb3ZlCisJZHRfbmVlZGVkIHBhcmFtLiAgVHJlYXQgb2xkIHdlYWsgc3ltcyBhcyBzdHJvbmcgaWYgbmV3IHN5bSBpcworCWZyb20gYSBzaGFyZWQgbGliLCBldmVuIHdoZW4gb2xkIHN5bSBpcyBmcm9tIGFub3RoZXIgc2hhcmVkCisJbGliLiAgUmVtb3ZlIHVubmVjZXNzYXJ5IHRlc3RzIG9mIG9sZHdlYWsgYW5kIG5ld3dlYWsuICBDb3JyZWN0CisJY29tbWVudHMuCisJKF9iZmRfZWxmX2FkZF9kZWZhdWx0X3N5bWJvbCk6IFJlbW92ZSBkdF9uZWVkZWQgcGFyYW0uICBVcGRhdGUKKwlfYmZkX2VsZl9tZXJnZV9zeW1ib2wgY2FsbHMuCisJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IFVwZGF0ZSBjYWxscy4gIFJlbW92ZQorCWR0X25lZWRlZCBsb2NhbCB2YXIuICBVcGRhdGUgY29tbWVudHMuCisJKiBlbGYtYmZkLmggKF9iZmRfZWxmX21lcmdlX3N5bWJvbCk6IFVwZGF0ZSBwcm90b3R5cGUuCisJKF9iZmRfZWxmX2FkZF9kZWZhdWx0X3N5bWJvbCk6IExpa2V3aXNlLgorCisJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX21lcmdlX3N5bWJvbCk6IFJlaW5zdGF0ZSBjb2RlIHRvIGhhbmRsZQorCXN0cm9uZyBzeW1zIGluIG9uZSBzaGFyZWQgb2JqZWN0IG92ZXJyaWRpbmcgd2VhayBzeW1zIGluIGFub3RoZXIuCisKKzIwMDQtMDMtMTggIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKKwkqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9vYmpfdGRhdGEpOiBEZWxldGUgZHRfc29uYW1lIGZpZWxkLiAgQWRkCisJZHluX2xpYl9jbGFzcyBmaWVsZC4gIFJlYXJyYW5nZSBmb3IgYmV0dGVyIHBhY2tpbmcuCisJKGVsZl9kdF9zb25hbWUpOiBEZWxldGUuCisJKGVsZl9keW5fbGliX2NsYXNzKTogRGVmaW5lLgorCSogZWxmLmMgKGJmZF9lbGZfc2V0X2R0X25lZWRlZF9uYW1lKTogVXBkYXRlIGNvbW1lbnQuCisJKGJmZF9lbGZfc2V0X2R0X25lZWRlZF9zb25hbWUpOiBEZWxldGUuCisJKGJmZF9lbGZfc2V0X2R5bl9saWJfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCisJKiBlbGZsaW5rLmggKGFkZF9kdF9uZWVkZWRfdGFnKTogTmV3IGZ1bmN0aW9uLiAgU3BsaXQgb3V0IGZyb20uLgorCShlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiAuLmhlcmUuICBSZW5hbWUgIm5hbWUiIHRvICJzb25hbWUiLgorCVVzZSBlbGZfZHluX2xpYl9jbGFzcyB0byBzZXQgZHRfbmVlZGVkIGFuZCBhZGRfbmVlZGVkLiAgTW92ZSBmYWxsYmFjaworCWluaXRpYWxpemF0aW9uIG9mIHNvbmFtZS4KKwkoZWxmX2xpbmtfY2hlY2tfdmVyc2lvbmVkX3N5bWJvbCk6IFRlc3QgZWxmX2R5bl9saWJfY2xhc3MgaW5zdGVhZCBvZgorCWVsZl9kdF9zb25hbWUuCisJKiBiZmQtaW4uaCAoZW51bSBkeW5hbWljX2xpYl9saW5rX2NsYXNzKTogTmV3LgorCShiZmRfZWxmX3NldF9kdF9uZWVkZWRfc29uYW1lKTogRGVsZXRlLgorCShiZmRfZWxmX3NldF9keW5fbGliX2NsYXNzKTogRGVjbGFyZS4KKwkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KKworCSogZWxmbGluay5jIChfYmZkX2VsZl9tZXJnZV9zeW1ib2wpOiBSZXdyaXRlIHdlYWsgc3ltYm9sIGhhbmRsaW5nLgorCShfYmZkX2VsZl9hZGRfZGVmYXVsdF9zeW1ib2wpOiBSZW1vdmUgaW5kaXJlY3QgQkZEX0FTU0VSVHMuCisJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IERvbid0IGNsZWFyIGR0X25lZWRlZCBpbgorCXN5bWJvbCBsb29wLiAgSW5zdGVhZCB1c2UgYWRkX25lZWRlZCB0byBmbGFnIHRhZyBhcyB3cml0dGVuLgorCisyMDA0LTAzLTE3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgorCisJKiBlbGZ4eC1taXBzLmMgKF9iZmRfbWlwc19lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IENvcnJlY3QKKwlsb2dpYyBmb3IgbnVsbF9pbnB1dF9iZmQgZGV0ZWN0aW9uLgorCiAyMDA0LTAzLTE3ICBSYWxmIENvcnNlcGl1cyA8Y29yc2VwaXVAZmF3LnVuaS11bG0uZGU+CiAKIAkqIGNvbmZpZy5iZmQ6IFN3aXRjaCBzaC0qLXJ0ZW1zKiB0byBFTEYuICBBZGQgc2gtKi1ydGVtc2NvZmYqLgogCisyMDA0LTAzLTE2ICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KKworCSogbmV0YnNkLWNvcmUuYyAobmV0YnNkX2NvcmVfZmlsZV9wKSBbQ09SRV9GUFVfT0ZGU0VUXTogUmVtb3ZlCisJY29kZS4KKwogMjAwNC0wMy0xNiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KIAogCSogZWxmbGluay5jIChlbGZfbGlua19yZWFkX3JlbG9jc19mcm9tX3NlY3Rpb24pOiBEb24ndCB1c2UKQEAgLTksMTEgKzQ5NSw2IEBACiAJKF9iZmRfZWxmX2xpbmtfcmVhZF9yZWxvY3MpOiAuLnRvIGhlcmUuCiAJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9yZWxheF9zZWN0aW9uKTogRm9ybWF0dGluZy4KIAotCU1lcmdlIGZyb20gbWFpbmxpbmUuCi0JMjAwNC0wMi0yMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0JKiBlbGYzMi1wcGMuYyAoYWxsb2NhdGVfZHlucmVsb2NzKTogQ3JlYXRlIGR5bnN5bSBmb3IgdW5kZWYgd2VhawotCXN5bWJvbHMgdXNlZCBpbiBQSUUgcmVsb2NzLgotCiAyMDA0LTAzLTE2ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgogCiAJKiBjb25maWd1cmUuaW4gKEhPU1RfNjRCSVRfVFlQRSwgSE9TVF9VXzY0QklUX1RZUEUpOiBEb24ndCBvdmVycmlkZQpAQCAtMTI3LDE1ICs2MDgsMTg5IEBACiAJbmV0YnNkLWNvcmUubG8uCiAJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCiAKKzIwMDQtMDMtMTIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CisJICAgIERhdmUgTXVycGh5ICA8d2ludGVybXV0ZTJrNEBudGx3b3JsZC5jb20+CisKKwkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IFNraXAgbW9zdCBjaGVja3MKKwlpZiB0aGUgaW5wdXQgYmZkIGRvZXMgbm90IGNvbnRhaW4gYW55IGNvZGUuCisKIDIwMDQtMDMtMDkgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgogCiAJKiBlbGZ4eC1pYTY0LmMgKHBsdF9mdWxsX2VudHJ5KTogQ2hhbmdlIGxkOCB0byBsZDguYWNxLgogCisyMDA0LTAzLTA1ICBGcmVkIEZpc2ggIDxmbmZAcmVkaGF0LmNvbT4KKworCSogZWxmeHgtbWlwcy5jIChfYmZkX21pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IEp1c3QgZm9yY2UKKwltaXBzMTYgc3ltYm9scyB0byBiZSBldmVuIHJhdGhlciB0aGFuIHRlc3RpbmcgZmlyc3QgZm9yIGV2ZW4vb2RkLgorCShfYmZkX21pcHNfZWxmX2xpbmtfb3V0cHV0X3N5bWJvbF9ob29rKTogRGl0dG8uCisKIDIwMDQtMDMtMDUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CiAKIAkqIGVsZi5jIChtYXBfc2VjdGlvbnNfdG9fc2VnbWVudHMpOiBJZ25vcmUgLnRic3Mgc2VjdGlvbnMgZm9yCiAJbGF5b3V0IHB1cnBvc2VzLgogCisyMDA0LTAzLTAzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KKworCSogZWxmbGluay5jIChiZmRfZWxmX3JlY29yZF9saW5rX2Fzc2lnbm1lbnQpOiBNYXJrIHVuZGVmd2VhayBhbmQKKwl1bmRlZmluZWQgc3ltYm9scyBhcyBoYXNoX25ldy4KKworMjAwMy0wMy0wMyAgQW5kcmV3IFN0dWJicyAgPGFuZHJldy5zdHViYnNAc3VwZXJoLmNvbT4KKworCSogYXJjaHVyZXMuYzogQWRkIGJmZF9tYWNoX3NoNF9ub21tdV9ub2ZwdS4KKwkqIGNwdS1zaC5jOiBEaXR0by4KKwkqIGVsZjMyLXNoLmM6IERpdHRvLgorCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgorCisyMDA0LTAzLTAyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KKworCSogZWxmMzItZnJ2LmMgKHN0cnVjdCBmcnZfcGljX3JlbG9jc19pbmZvKTogQWRkZWQgZml4dXBzIGFuZAorCWR5bnJlbG9jcy4KKwkoX2Zydl9jb3VudF9nb3RfcGx0X2VudHJpZXMpOiBJbml0aWFsaXplIHRoZW0uCisJKGZydl9waWNfcmVsb2NzX2luZm9fZmluZCk6IEFkZCBpbnNlcnQgYXJndW1lbnQuICBBZGp1c3QgYWxsCisJY2FsbGVycy4KKwkoZnJ2X3BpY19yZWxvY3NfaW5mb19mb3JfZ2xvYmFsKTogTGlrZXdpc2UuCisJKGZydl9waWNfcmVsb2NzX2luZm9fZm9yX2xvY2FsKTogTGlrZXdpc2UuCisJKGZydl9waWNfbWVyZ2VfZWFybHlfcmVsb2NzX2luZm8pOiBOZXcuCisJKF9mcnZfcmVzb2x2ZV9maW5hbF9yZWxvY3NfaW5mbyk6IFVzZSBpdCBpbiBjYXNlIG9uZSBlbnRyeSBtYXBzIHRvCisJYW5vdGhlci4KKwkoX2Zydl9hZGRfZHluX3JlbG9jKTogQWRkIGVudHJ5IGFyZ3VtZW50LiAgQWRqdXN0IGFsbCBjYWxsZXJzLgorCUNoZWNrIHRoYXQgd2UgZG9uJ3QgZXhjZWVkIHRoZSBhbGxvY2F0ZWQgY291bnQgZm9yIGVudHJ5LgorCShfZnJ2X2FkZF9yb2ZpeHVwKTogTGlrZXdpc2UuCisJKF9mcnZfZW1pdF9nb3RfcmVsb2NzX3BsdF9lbnRyaWVzKTogQWRqdXN0IGZvciBjb2Rpbmcgc3RhbmRhcmRzLgorCShlbGYzMl9mcnZfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UgaW4gY2FzZQorCXdlIGVtaXQgdG9vIGZldyByb2ZpeHVwIGVudHJpZXMuCisKKzIwMDQtMDMtMDEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KKworCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfZnI0NTApOiBOZXcuCisJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCisJKiBjcHUtZnJ2LmMgKGFyY2hfaW5mb180NTApOiBOZXcgYmZkX2FyY2hfaW5mb190eXBlLgorCShhcmNoX2luZm9fNTAwKTogTGluayB0byBpdC4KKwkqIGVsZjMyLWZydi5jIChlbGYzMl9mcnZfbWFjaGluZSwgZnJ2X2VsZl9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKQorCShmcnZfZWxmX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBIYW5kbGUgZnI0MDUgYW5kIGZyNDUwIGhlYWRlciBmbGFncy4KKwkoZnJ2X2VsZl9hcmNoX2V4dGVuc2lvbl9wKTogTmV3IGZ1bmN0aW9uLgorCShmcnZfZWxmX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBVc2UgaXQuCisKKzIwMDQtMDItMjggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KKworCSogZWxmLWJmZC5oIChfYmZkX2VsZl9saW5rX2FkZF9hcmNoaXZlX3N5bWJvbHMpOiBOZXcgcHJvdG90eXBlLgorCisJKiBlbGZsaW5rLmggKGlzX2dsb2JhbF9kYXRhX3N5bWJvbF9kZWZpbml0aW9uKTogTW92ZWQgdG8KKwllbGZsaW5rLmMuCisJKGVsZl9saW5rX2lzX2RlZmluZWRfYXJjaGl2ZV9zeW1ib2wpOiBMaWtld2lzZS4KKwkoZWxmX2xpbmtfYWRkX2FyY2hpdmVfc3ltYm9scyk6IExpa2V3aXNlLiBSZW5hbWVkIHRvCisJX2JmZF9lbGZfbGlua19hZGRfYXJjaGl2ZV9zeW1ib2xzLgorCisJKiBlbGZsaW5rLmMgKGVsZl9saW5rX2lzX2RlZmluZWRfYXJjaGl2ZV9zeW1ib2wpOiBHZXQgdGhlIHNpemUKKwlvZiBFTEYgc3ltYm9sIHRhYmxlIGVudHJ5IGZyb20gYmFja2VuZC4KKwkoX2JmZF9lbGZfbGlua19hZGRfYXJjaGl2ZV9zeW1ib2xzKTogQ2FsbCBiZmRfbGlua19hZGRfc3ltYm9scworCWluc3RlYWQgb2YgZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzLgorCisyMDA0LTAyLTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KKworCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSk6IEFkZGVkCisJZWxmX2JhY2tlbmRfY2FuX21ha2VfcmVsYXRpdmVfZWhfZnJhbWUsCisJZWxmX2JhY2tlbmRfY2FuX21ha2VfbHNkYV9yZWxhdGl2ZV9laF9mcmFtZSBhbmQKKwllbGZfYmFja2VuZF9lbmNvZGVfZWhfYWRkcmVzcy4KKwkoX2JmZF9lbGZfZW5jb2RlX2VoX2FkZHJlc3MpOiBEZWNsYXJlLgorCShfYmZkX2VsZl9jYW5fbWFrZV9yZWxhdGl2ZSk6IERlY2xhcmUuCisJKiBlbGYtZWgtZnJhbWUuYyAoX2JmZF9lbGZfZGlzY2FyZF9zZWN0aW9uX2VoX2ZyYW1lKTogVXNlIG5ldworCWhvb2tzIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGF0dGVtcHQgdG8gbWFrZV9yZWxhdGl2ZSBhbmQKKwltYWtlX2xzZGFfcmVsYXRpdmUuCisJKF9iZmRfZWxmX3dyaXRlX3NlY3Rpb25fZWhfZnJhbWVfaGRyKTogQ2FsbCBlbmNvZGVfZWhfYWRkcmVzcy4KKwkoX2JmZF9lbGZfY2FuX21ha2VfcmVsYXRpdmUpOiBOZXcuCisJKF9iZmRfZWxmX2VuY29kZV9laF9hZGRyZXNzKTogTmV3LgorCSogZWxmMzItZnJ2LmMgKGZydl9lbGZfdXNlX3JlbGF0aXZlX2VoX2ZyYW1lKTogTmV3LgorCShmcnZfZWxmX2VuY29kZV9laF9hZGRyZXNzKTogTmV3LgorCShlbGZfYmFja2VuZF9jYW5fbWFrZV9yZWxhdGl2ZV9laF9mcmFtZSk6IERlZmluZS4KKwkoZWxmX2JhY2tlbmRfY2FuX21ha2VfbHNkYV9yZWxhdGl2ZV9laF9mcmFtZSk6IERlZmluZS4KKwkoZWxmX2JhY2tlbmRfZW5jb2RlX2VoX2FkZHJlc3MpOiBEZWZpbmUuCisJKiBlbGZ4eC10YXJnZXQuaAorCShlbGZfYmFja2VuZF9jYW5fbWFrZV9yZWxhdGl2ZV9laF9mcmFtZSk6IERlZmluZS4KKwkoZWxmX2JhY2tlbmRfY2FuX21ha2VfbHNkYV9yZWxhdGl2ZV9laF9mcmFtZSk6IERlZmluZS4KKwkoZWxmX2JhY2tlbmRfZW5jb2RlX2VoX2FkZHJlc3MpOiBEZWZpbmUuCisJKGVsZk5OX2JlZCk6IEFkZCB0aGVtLgorCisyMDA0LTAyLTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KKworCSogZWxmMzItZnJ2LmMgKGVsZjMyX2Zydl9ob3d0b190YWJsZSkgPFJfRlJWX0xBQkVMMTY+OiBTZXQKKwljb21wbGFpbl9vbl9vdmVyZmxvdyB0byBzaWduZWQuCisKKzIwMDQtMDItMjcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KKworCSogZWxmbGluay5oIChzb3J0X3N5bWJvbCk6IE5ldy4KKwkoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogVXNlIGEgc29ydGVkIHN5bWJvbCBhcnJheSBmb3IKKwl3ZWFrZGVmLgorCisyMDA0LTAyLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCSogZWxmMzItczM5MC5jIChhbGxvY2F0ZV9keW5yZWxvY3MpOiBVc2UgU1lNQk9MX1JFRkVSRU5DRVNfTE9DQUwKKwlmb3IgcGMgcmVsYXRpdmUgcmVsb2NzLgorCShlbGZfczM5MF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCisJKiBlbGY2NC1zMzkwLmMgKGFsbG9jYXRlX2R5bnJlbG9jcyk6IFVzZSBTWU1CT0xfUkVGRVJFTkNFU19MT0NBTAorCWZvciBwYyByZWxhdGl2ZSByZWxvY3MuCisJKGVsZl9zMzkwX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKworMjAwNC0wMi0yNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgorCisJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfY2hlY2tfcmVsb2NzKTogRml4IGNhbGwgdG8KKwljb3VudF9keW5fcmVsb2MuCisKKzIwMDQtMDItMjUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KKworCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X2R5bl9yZWxvY19lbnRyeSk6IEFkZCB0aGUgcmVsdGV4dC4KKwlmaWVsZCB0byB0cmFjayBpZiBhIHJlbG9jYXRpb24gaXMgYWdhaW5zdCByZWFkb25seSBzZWN0aW9uLgorCShjb3VudF9keW5fcmVsb2MpOiBUYWtlIGEgbmV3IGFyZ3VtZW50IGZvciByZW50LT5yZWx0ZXh0LgorCShlbGZOTl9pYTY0X2NoZWNrX3JlbG9jcyk6IEFkanVzdCBjYWxsIHRvIGNvdW50X2R5bl9yZWxvYy4KKwkoZ2V0X3JlbG9jX3NlY3Rpb24pOiBEb24ndCBzZXQgaWE2NF9pbmZvLT5yZWx0ZXh0IGhlcmUuCisJKGFsbG9jYXRlX2R5bnJlbF9lbnRyaWVzKTogU2V0IGlhNjRfaW5mby0+cmVsdGV4dCBoZXJlLgorCisyMDA0LTAyLTI0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KKworCSogZWxmMzItZnJ2LmMgKEZSVl9TWU1fTE9DQUwpOiBXZWFrIHVuZGVmaW5lZCBkb2Vzbid0IGltcGx5IGxvY2FsLgorCShfZnJ2X2VtaXRfZ290X3JlbG9jc19wbHRfZW50cmllcyk6IERlY2F5IHJlbG9jYXRpb24gdG8gcHJvdGVjdGVkCisJZnVuY3Rpb24ncyBkZXNjcmlwdG9yIHRvIHN5bWJvbCtvZmZzZXQsIGFuZCBtYXAgbG9jYWwgdW5kZWZ3ZWFrCisJc3ltYm9sIHRvIE5VTEwgZnVuY3Rpb24gZGVzY3JpcHRvci4KKwkoZWxmMzJfZnJ2X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKworMjAwNC0wMi0yMyAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+CisKKwkqIGxpYmFvdXQuaCAoZW51bSBtYWNoaW5lX3R5cGUpOiBBZGQgTV9TUEFSQzY0X05FVEJTRCBhbmQKKwlNX1g4Nl82NF9ORVRCU0QuCisJKiBuZXRic2QtY29yZS5jIChNX1NQQVJDNjRfT1BFTkJTRCk6IERlZmluZS4KKwkobmV0YnNkX2NvcmVfZmlsZV9wKTogU2V0IGFyY2hpdGVjdHVyZSBmcm9tIG1hY2hpbmUgSUQgZm9yCisJc2VsZWN0ZWQgbWFjaGluZXMuCisKKzIwMDQtMDItMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJKiBlbGZsaW5rLmggKHNpemVfZHluYW1pY19zZWN0aW9ucyk6IElmIG5vdCBhZGRpbmcgRFRfRkxBR1MgYW5kCisJREZfQklORF9OT1cgaXMgc2V0IGluIGluZm8tPmZsYWdzLCBjcmVhdGUgRFRfQklORF9OT1cgZHluYW1pYyBlbnRyeS4KKworMjAwNC0wMi0yMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgorCisJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX21lcmdlX3N5bWJvbCk6IFByb3Blcmx5IGhhbmRsZSB1bmRlZmluZWQKKwlzeW1ib2xzIHdpdGggbm9uLWRlZmF1bHQgdmlzaWJpbGl0eS4KKworMjAwNC0wMi0yMSAgRGFubnkgU21pdGggIDxkYWFueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogcGVYWGlnZW4uYyAoX2JmZF9YWGlfc3dhcF9zY25oZHJfb3V0KTogQ2xlYXIKKwlJTUFHRV9TQ05fTUVNX1dSSVRFIG9uIGtub3duIHNlY3Rpb25zIG9ubHkuCisKKzIwMDQtMDItMjAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJKiBlbGYzMi1wcGMuYyAoYWxsb2NhdGVfZHlucmVsb2NzKTogQ3JlYXRlIGR5bnN5bSBmb3IgdW5kZWYgd2VhaworCXN5bWJvbHMgdXNlZCBpbiBQSUUgcmVsb2NzLgorCisyMDA0LTAyLTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBDbGVhcgorCS5wbHQgc2hfZW50c2l6ZS4KKworMjAwNC0wMi0xOCAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CisKKwkqIGNvbmZpZ3VyZS5pbjogVXBkYXRlIHZlcnNpb24gdG8gMi4xNS45MC4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKwogMjAwNC0wMi0xNyAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CiAJICAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KIApkaWZmIC0tZ2l0IGEvYmZkL01ha2VmaWxlLmFtIGIvYmZkL01ha2VmaWxlLmFtCmluZGV4IDNhMmQ0M2UuLmMzOTVkMzIgMTAwNjQ0Ci0tLSBhL2JmZC9NYWtlZmlsZS5hbQorKysgYi9iZmQvTWFrZWZpbGUuYW0KQEAgLTU1LDYgKzU1LDcgQEAKIAljcHUtYXJjLmxvIFwKIAljcHUtYXJtLmxvIFwKIAljcHUtYXZyLmxvIFwKKwljcHUtY3IxNmMubG8gXAogCWNwdS1jcmlzLmxvIFwKIAljcHUtZDEwdi5sbyBcCiAJY3B1LWQzMHYubG8gXApAQCAtMTExLDYgKzExMiw3IEBACiAJY3B1LWFybS5jIFwKIAljcHUtYXZyLmMgXAogCWNwdS1jcmlzLmMgXAorCWNwdS1jcjE2Yy5jIFwKIAljcHUtZDEwdi5jIFwKIAljcHUtZDMwdi5jIFwKIAljcHUtZGx4LmMgXApAQCAtMjEzLDYgKzIxNSw3IEBACiAJZWxmYXJtLW9hYmkubG8gXAogCWVsZmFybS1uYWJpLmxvIFwKIAllbGYzMi1hdnIubG8gXAorCWVsZjMyLWNyMTZjLmxvIFwKIAllbGYzMi1jcmlzLmxvIFwKIAllbGYzMi1kMTB2LmxvIFwKIAllbGYzMi1kMzB2LmxvIFwKQEAgLTM3OCw2ICszODEsNyBAQAogCWVsZmFybS1vYWJpLmMgXAogCWVsZmFybS1uYWJpLmMgXAogCWVsZjMyLWF2ci5jIFwKKwllbGYzMi1jcjE2Yy5jIFwKIAllbGYzMi1jcmlzLmMgXAogCWVsZjMyLWQxMHYuYyBcCiAJZWxmMzItZDMwdi5jIFwKQEAgLTU4OCw3ICs1OTIsNyBAQAogU09VUkNFX0hGSUxFUyA9IFwKIAlhb3V0LXRhcmdldC5oIGFvdXRmMS5oIGFvdXR4LmggY29mZmNvZGUuaCBjb2Zmc3dhcC5oIGVjb2Zmc3dhcC5oIFwKIAllbGYtYmZkLmggZWxmLWhwcGEuaCBlbGYzMi1hcm0uaCBlbGYzMi1ocHBhLmggXAotCWVsZjY0LWhwcGEuaCBlbGZjb2RlLmggZWxmY29yZS5oIGVsZmxpbmsuaCBcCisJZWxmNjQtaHBwYS5oIGVsZmNvZGUuaCBlbGZjb3JlLmggXAogCWZyZWVic2QuaCBnZW5saW5rLmggZ28zMnN0dWIuaCBcCiAJbGliYW91dC5oIGxpYmJmZC5oIGxpYmNvZmYuaCBsaWJlY29mZi5oIGxpYmhwcGEuaCBsaWJpZWVlLmggXAogCWxpYm5sbS5oIGxpYm9hc3lzLmggbGlicGVpLmggbGlieGNvZmYuaCBtYWNoLW8uaCBcCkBAIC05MTUsNiArOTE5LDcgQEAKIGNwdS1hcmMubG86IGNwdS1hcmMuYyAkKElOQ0RJUikvZmlsZW5hbWVzLmgKIGNwdS1hcm0ubG86IGNwdS1hcm0uYyAkKElOQ0RJUikvZmlsZW5hbWVzLmggJChJTkNESVIpL2xpYmliZXJ0eS5oCiBjcHUtYXZyLmxvOiBjcHUtYXZyLmMgJChJTkNESVIpL2ZpbGVuYW1lcy5oCitjcHUtY3IxNmMubG86IGNwdS1jcjE2Yy5jICQoSU5DRElSKS9maWxlbmFtZXMuaAogY3B1LWNyaXMubG86IGNwdS1jcmlzLmMgJChJTkNESVIpL2ZpbGVuYW1lcy5oCiBjcHUtZDEwdi5sbzogY3B1LWQxMHYuYyAkKElOQ0RJUikvZmlsZW5hbWVzLmgKIGNwdS1kMzB2LmxvOiBjcHUtZDMwdi5jICQoSU5DRElSKS9maWxlbmFtZXMuaApAQCAtMTEzNyw2ICsxMTQyLDEwIEBACiAgICQoSU5DRElSKS9lbGYvY29tbW9uLmggJChJTkNESVIpL2VsZi9pbnRlcm5hbC5oICQoSU5DRElSKS9lbGYvZXh0ZXJuYWwuaCBcCiAgICQoSU5DRElSKS9iZmRsaW5rLmggJChJTkNESVIpL2VsZi9hdnIuaCAkKElOQ0RJUikvZWxmL3JlbG9jLW1hY3Jvcy5oIFwKICAgZWxmMzItdGFyZ2V0LmgKK2VsZjMyLWNyMTZjLmxvOiBlbGYzMi1jcjE2Yy5jICQoSU5DRElSKS9maWxlbmFtZXMuaCBlbGYtYmZkLmggXAorICAkKElOQ0RJUikvZWxmL2NvbW1vbi5oICQoSU5DRElSKS9lbGYvaW50ZXJuYWwuaCAkKElOQ0RJUikvZWxmL2V4dGVybmFsLmggXAorICAkKElOQ0RJUikvYmZkbGluay5oICQoSU5DRElSKS9lbGYvY3IxNmMuaCAkKElOQ0RJUikvZWxmL3JlbG9jLW1hY3Jvcy5oIFwKKyAgZWxmMzItdGFyZ2V0LmgKIGVsZjMyLWNyaXMubG86IGVsZjMyLWNyaXMuYyAkKElOQ0RJUikvZmlsZW5hbWVzLmggZWxmLWJmZC5oIFwKICAgJChJTkNESVIpL2VsZi9jb21tb24uaCAkKElOQ0RJUikvZWxmL2ludGVybmFsLmggJChJTkNESVIpL2VsZi9leHRlcm5hbC5oIFwKICAgJChJTkNESVIpL2JmZGxpbmsuaCAkKElOQ0RJUikvZWxmL2NyaXMuaCAkKElOQ0RJUikvZWxmL3JlbG9jLW1hY3Jvcy5oIFwKQEAgLTExNjAsNyArMTE2OSw3IEBACiBlbGYzMi1mcnYubG86IGVsZjMyLWZydi5jICQoSU5DRElSKS9maWxlbmFtZXMuaCBlbGYtYmZkLmggXAogICAkKElOQ0RJUikvZWxmL2NvbW1vbi5oICQoSU5DRElSKS9lbGYvaW50ZXJuYWwuaCAkKElOQ0RJUikvZWxmL2V4dGVybmFsLmggXAogICAkKElOQ0RJUikvYmZkbGluay5oICQoSU5DRElSKS9lbGYvZnJ2LmggJChJTkNESVIpL2VsZi9yZWxvYy1tYWNyb3MuaCBcCi0gIGVsZjMyLXRhcmdldC5oCisgICQoSU5DRElSKS9lbGYvZHdhcmYyLmggJChJTkNESVIpL2hhc2h0YWIuaCBlbGYzMi10YXJnZXQuaAogZWxmMzItZ2VuLmxvOiBlbGYzMi1nZW4uYyAkKElOQ0RJUikvZmlsZW5hbWVzLmggZWxmLWJmZC5oIFwKICAgJChJTkNESVIpL2VsZi9jb21tb24uaCAkKElOQ0RJUikvZWxmL2ludGVybmFsLmggJChJTkNESVIpL2VsZi9leHRlcm5hbC5oIFwKICAgJChJTkNESVIpL2JmZGxpbmsuaCBlbGYzMi10YXJnZXQuaApAQCAtMTMxMCwxMCArMTMxOSwxMCBAQAogZWxmMzIubG86IGVsZjMyLmMgZWxmY29kZS5oICQoSU5DRElSKS9maWxlbmFtZXMuaCAkKElOQ0RJUikvbGliaWJlcnR5LmggXAogICAkKElOQ0RJUikvYmZkbGluay5oIGVsZi1iZmQuaCAkKElOQ0RJUikvZWxmL2NvbW1vbi5oIFwKICAgJChJTkNESVIpL2VsZi9pbnRlcm5hbC5oICQoSU5DRElSKS9lbGYvZXh0ZXJuYWwuaCBlbGZjb3JlLmggXAotICBlbGZsaW5rLmggJChJTkNESVIpL3NhZmUtY3R5cGUuaAorICAkKElOQ0RJUikvc2FmZS1jdHlwZS5oCiBlbGZsaW5rLmxvOiBlbGZsaW5rLmMgJChJTkNESVIpL2ZpbGVuYW1lcy5oICQoSU5DRElSKS9iZmRsaW5rLmggXAogICBlbGYtYmZkLmggJChJTkNESVIpL2VsZi9jb21tb24uaCAkKElOQ0RJUikvZWxmL2ludGVybmFsLmggXAotICAkKElOQ0RJUikvZWxmL2V4dGVybmFsLmgKKyAgJChJTkNESVIpL2VsZi9leHRlcm5hbC5oICQoSU5DRElSKS9saWJpYmVydHkuaAogZWxmLXN0cnRhYi5sbzogZWxmLXN0cnRhYi5jICQoSU5DRElSKS9maWxlbmFtZXMuaCBlbGYtYmZkLmggXAogICAkKElOQ0RJUikvZWxmL2NvbW1vbi5oICQoSU5DRElSKS9lbGYvaW50ZXJuYWwuaCAkKElOQ0RJUikvZWxmL2V4dGVybmFsLmggXAogICAkKElOQ0RJUikvYmZkbGluay5oICQoSU5DRElSKS9oYXNodGFiLmggJChJTkNESVIpL2xpYmliZXJ0eS5oCkBAIC0xNTkyLDcgKzE2MDEsNyBAQAogZWxmNjQubG86IGVsZjY0LmMgZWxmY29kZS5oICQoSU5DRElSKS9maWxlbmFtZXMuaCAkKElOQ0RJUikvbGliaWJlcnR5LmggXAogICAkKElOQ0RJUikvYmZkbGluay5oIGVsZi1iZmQuaCAkKElOQ0RJUikvZWxmL2NvbW1vbi5oIFwKICAgJChJTkNESVIpL2VsZi9pbnRlcm5hbC5oICQoSU5DRElSKS9lbGYvZXh0ZXJuYWwuaCBlbGZjb3JlLmggXAotICBlbGZsaW5rLmggJChJTkNESVIpL3NhZmUtY3R5cGUuaAorICAkKElOQ0RJUikvc2FmZS1jdHlwZS5oCiBtbW8ubG86IG1tby5jICQoSU5DRElSKS9maWxlbmFtZXMuaCAkKElOQ0RJUikvbGliaWJlcnR5LmggXAogICAkKElOQ0RJUikvZWxmL21taXguaCAkKElOQ0RJUikvZWxmL3JlbG9jLW1hY3Jvcy5oICQoSU5DRElSKS9vcGNvZGUvbW1peC5oCiBubG0zMi1hbHBoYS5sbzogbmxtMzItYWxwaGEuYyAkKElOQ0RJUikvZmlsZW5hbWVzLmggXApkaWZmIC0tZ2l0IGEvYmZkL01ha2VmaWxlLmluIGIvYmZkL01ha2VmaWxlLmluCmluZGV4IGIzYmY2NWIuLjRkNGQ3ODQgMTAwNjQ0Ci0tLSBhL2JmZC9NYWtlZmlsZS5pbgorKysgYi9iZmQvTWFrZWZpbGUuaW4KQEAgLTEsNCArMSw0IEBACi0jIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGF1dG9tYWtlIDEuNC1wNiBmcm9tIE1ha2VmaWxlLmFtCisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGF1dG9tYWtlIDEuNC1wNSBmcm9tIE1ha2VmaWxlLmFtCiAKICMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LTgsIDE5OTksIDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgpAQCAtMTE2LDggKzExNiwxMCBAQAogYWxsX2JhY2tlbmRzID0gQGFsbF9iYWNrZW5kc0AKIGJmZF9iYWNrZW5kcyA9IEBiZmRfYmFja2VuZHNACiBiZmRfZGVmYXVsdF90YXJnZXRfc2l6ZSA9IEBiZmRfZGVmYXVsdF90YXJnZXRfc2l6ZUAKK2JmZF9maWxlX3B0ciA9IEBiZmRfZmlsZV9wdHJACiBiZmRfbGlicyA9IEBiZmRfbGlic0AKIGJmZF9tYWNoaW5lcyA9IEBiZmRfbWFjaGluZXNACitiZmRfdWZpbGVfcHRyID0gQGJmZF91ZmlsZV9wdHJACiBiZmRfdmVyc2lvbiA9IEBiZmRfdmVyc2lvbkAKIGJmZF92ZXJzaW9uX3N0cmluZyA9IEBiZmRfdmVyc2lvbl9zdHJpbmdACiBsID0gQGxACkBAIC0xODEsNiArMTgzLDcgQEAKIAljcHUtYXJjLmxvIFwKIAljcHUtYXJtLmxvIFwKIAljcHUtYXZyLmxvIFwKKwljcHUtY3IxNmMubG8gXAogCWNwdS1jcmlzLmxvIFwKIAljcHUtZDEwdi5sbyBcCiAJY3B1LWQzMHYubG8gXApAQCAtMjM4LDYgKzI0MSw3IEBACiAJY3B1LWFybS5jIFwKIAljcHUtYXZyLmMgXAogCWNwdS1jcmlzLmMgXAorCWNwdS1jcjE2Yy5jIFwKIAljcHUtZDEwdi5jIFwKIAljcHUtZDMwdi5jIFwKIAljcHUtZGx4LmMgXApAQCAtMzQxLDYgKzM0NSw3IEBACiAJZWxmYXJtLW9hYmkubG8gXAogCWVsZmFybS1uYWJpLmxvIFwKIAllbGYzMi1hdnIubG8gXAorCWVsZjMyLWNyMTZjLmxvIFwKIAllbGYzMi1jcmlzLmxvIFwKIAllbGYzMi1kMTB2LmxvIFwKIAllbGYzMi1kMzB2LmxvIFwKQEAgLTUwNyw2ICs1MTIsNyBAQAogCWVsZmFybS1vYWJpLmMgXAogCWVsZmFybS1uYWJpLmMgXAogCWVsZjMyLWF2ci5jIFwKKwllbGYzMi1jcjE2Yy5jIFwKIAllbGYzMi1jcmlzLmMgXAogCWVsZjMyLWQxMHYuYyBcCiAJZWxmMzItZDMwdi5jIFwKQEAgLTcyMyw3ICs3MjksNyBAQAogU09VUkNFX0hGSUxFUyA9IFwKIAlhb3V0LXRhcmdldC5oIGFvdXRmMS5oIGFvdXR4LmggY29mZmNvZGUuaCBjb2Zmc3dhcC5oIGVjb2Zmc3dhcC5oIFwKIAllbGYtYmZkLmggZWxmLWhwcGEuaCBlbGYzMi1hcm0uaCBlbGYzMi1ocHBhLmggXAotCWVsZjY0LWhwcGEuaCBlbGZjb2RlLmggZWxmY29yZS5oIGVsZmxpbmsuaCBcCisJZWxmNjQtaHBwYS5oIGVsZmNvZGUuaCBlbGZjb3JlLmggXAogCWZyZWVic2QuaCBnZW5saW5rLmggZ28zMnN0dWIuaCBcCiAJbGliYW91dC5oIGxpYmJmZC5oIGxpYmNvZmYuaCBsaWJlY29mZi5oIGxpYmhwcGEuaCBsaWJpZWVlLmggXAogCWxpYm5sbS5oIGxpYm9hc3lzLmggbGlicGVpLmggbGlieGNvZmYuaCBtYWNoLW8uaCBcCkBAIC04MTIsNyArODE4LDcgQEAKIAogRElTVEZJTEVTID0gJChESVNUX0NPTU1PTikgJChTT1VSQ0VTKSAkKEhFQURFUlMpICQoVEVYSU5GT1MpICQoRVhUUkFfRElTVCkKIAotVEFSID0gdGFyCitUQVIgPSBndGFyCiBHWklQX0VOViA9IC0tYmVzdAogU09VUkNFUyA9ICQobGliYmZkX2FfU09VUkNFUykgJChsaWJiZmRfbGFfU09VUkNFUykKIE9CSkVDVFMgPSAkKGxpYmJmZF9hX09CSkVDVFMpICQobGliYmZkX2xhX09CSkVDVFMpCkBAIC05NDEsNyArOTQ3LDcgQEAKIGFsbC1yZWN1cnNpdmUgaW5zdGFsbC1kYXRhLXJlY3Vyc2l2ZSBpbnN0YWxsLWV4ZWMtcmVjdXJzaXZlIFwKIGluc3RhbGxkaXJzLXJlY3Vyc2l2ZSBpbnN0YWxsLXJlY3Vyc2l2ZSB1bmluc3RhbGwtcmVjdXJzaXZlIGluc3RhbGwtaW5mby1yZWN1cnNpdmUgXAogY2hlY2stcmVjdXJzaXZlIGluc3RhbGxjaGVjay1yZWN1cnNpdmUgaW5mby1yZWN1cnNpdmUgZHZpLXJlY3Vyc2l2ZToKLQlAc2V0IGZub3JkICQkTUFLRUZMQUdTOyBhbWY9JCQyOyBcCisJQHNldCBmbm9yZCAkKE1BS0VGTEFHUyk7IGFtZj0kJDI7IFwKIAlkb3Rfc2Vlbj1ubzsgXAogCXRhcmdldD1gZWNobyAkQCB8IHNlZCBzLy1yZWN1cnNpdmUvL2A7IFwKIAlsaXN0PSckKFNVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKQEAgLTk2MSw3ICs5NjcsNyBAQAogCiBtb3N0bHljbGVhbi1yZWN1cnNpdmUgY2xlYW4tcmVjdXJzaXZlIGRpc3RjbGVhbi1yZWN1cnNpdmUgXAogbWFpbnRhaW5lci1jbGVhbi1yZWN1cnNpdmU6Ci0JQHNldCBmbm9yZCAkJE1BS0VGTEFHUzsgYW1mPSQkMjsgXAorCUBzZXQgZm5vcmQgJChNQUtFRkxBR1MpOyBhbWY9JCQyOyBcCiAJZG90X3NlZW49bm87IFwKIAlyZXY9Jyc7IGxpc3Q9JyQoU1VCRElSUyknOyBmb3Igc3ViZGlyIGluICQkbGlzdDsgZG8gXAogCSAgcmV2PSIkJHN1YmRpciAkJHJldiI7IFwKQEAgLTE0NTAsNiArMTQ1Niw3IEBACiBjcHUtYXJjLmxvOiBjcHUtYXJjLmMgJChJTkNESVIpL2ZpbGVuYW1lcy5oCiBjcHUtYXJtLmxvOiBjcHUtYXJtLmMgJChJTkNESVIpL2ZpbGVuYW1lcy5oICQoSU5DRElSKS9saWJpYmVydHkuaAogY3B1LWF2ci5sbzogY3B1LWF2ci5jICQoSU5DRElSKS9maWxlbmFtZXMuaAorY3B1LWNyMTZjLmxvOiBjcHUtY3IxNmMuYyAkKElOQ0RJUikvZmlsZW5hbWVzLmgKIGNwdS1jcmlzLmxvOiBjcHUtY3Jpcy5jICQoSU5DRElSKS9maWxlbmFtZXMuaAogY3B1LWQxMHYubG86IGNwdS1kMTB2LmMgJChJTkNESVIpL2ZpbGVuYW1lcy5oCiBjcHUtZDMwdi5sbzogY3B1LWQzMHYuYyAkKElOQ0RJUikvZmlsZW5hbWVzLmgKQEAgLTE2NzIsNiArMTY3OSwxMCBAQAogICAkKElOQ0RJUikvZWxmL2NvbW1vbi5oICQoSU5DRElSKS9lbGYvaW50ZXJuYWwuaCAkKElOQ0RJUikvZWxmL2V4dGVybmFsLmggXAogICAkKElOQ0RJUikvYmZkbGluay5oICQoSU5DRElSKS9lbGYvYXZyLmggJChJTkNESVIpL2VsZi9yZWxvYy1tYWNyb3MuaCBcCiAgIGVsZjMyLXRhcmdldC5oCitlbGYzMi1jcjE2Yy5sbzogZWxmMzItY3IxNmMuYyAkKElOQ0RJUikvZmlsZW5hbWVzLmggZWxmLWJmZC5oIFwKKyAgJChJTkNESVIpL2VsZi9jb21tb24uaCAkKElOQ0RJUikvZWxmL2ludGVybmFsLmggJChJTkNESVIpL2VsZi9leHRlcm5hbC5oIFwKKyAgJChJTkNESVIpL2JmZGxpbmsuaCAkKElOQ0RJUikvZWxmL2NyMTZjLmggJChJTkNESVIpL2VsZi9yZWxvYy1tYWNyb3MuaCBcCisgIGVsZjMyLXRhcmdldC5oCiBlbGYzMi1jcmlzLmxvOiBlbGYzMi1jcmlzLmMgJChJTkNESVIpL2ZpbGVuYW1lcy5oIGVsZi1iZmQuaCBcCiAgICQoSU5DRElSKS9lbGYvY29tbW9uLmggJChJTkNESVIpL2VsZi9pbnRlcm5hbC5oICQoSU5DRElSKS9lbGYvZXh0ZXJuYWwuaCBcCiAgICQoSU5DRElSKS9iZmRsaW5rLmggJChJTkNESVIpL2VsZi9jcmlzLmggJChJTkNESVIpL2VsZi9yZWxvYy1tYWNyb3MuaCBcCkBAIC0xNjk1LDcgKzE3MDYsNyBAQAogZWxmMzItZnJ2LmxvOiBlbGYzMi1mcnYuYyAkKElOQ0RJUikvZmlsZW5hbWVzLmggZWxmLWJmZC5oIFwKICAgJChJTkNESVIpL2VsZi9jb21tb24uaCAkKElOQ0RJUikvZWxmL2ludGVybmFsLmggJChJTkNESVIpL2VsZi9leHRlcm5hbC5oIFwKICAgJChJTkNESVIpL2JmZGxpbmsuaCAkKElOQ0RJUikvZWxmL2Zydi5oICQoSU5DRElSKS9lbGYvcmVsb2MtbWFjcm9zLmggXAotICBlbGYzMi10YXJnZXQuaAorICAkKElOQ0RJUikvZWxmL2R3YXJmMi5oICQoSU5DRElSKS9oYXNodGFiLmggZWxmMzItdGFyZ2V0LmgKIGVsZjMyLWdlbi5sbzogZWxmMzItZ2VuLmMgJChJTkNESVIpL2ZpbGVuYW1lcy5oIGVsZi1iZmQuaCBcCiAgICQoSU5DRElSKS9lbGYvY29tbW9uLmggJChJTkNESVIpL2VsZi9pbnRlcm5hbC5oICQoSU5DRElSKS9lbGYvZXh0ZXJuYWwuaCBcCiAgICQoSU5DRElSKS9iZmRsaW5rLmggZWxmMzItdGFyZ2V0LmgKQEAgLTE4NDUsMTAgKzE4NTYsMTAgQEAKIGVsZjMyLmxvOiBlbGYzMi5jIGVsZmNvZGUuaCAkKElOQ0RJUikvZmlsZW5hbWVzLmggJChJTkNESVIpL2xpYmliZXJ0eS5oIFwKICAgJChJTkNESVIpL2JmZGxpbmsuaCBlbGYtYmZkLmggJChJTkNESVIpL2VsZi9jb21tb24uaCBcCiAgICQoSU5DRElSKS9lbGYvaW50ZXJuYWwuaCAkKElOQ0RJUikvZWxmL2V4dGVybmFsLmggZWxmY29yZS5oIFwKLSAgZWxmbGluay5oICQoSU5DRElSKS9zYWZlLWN0eXBlLmgKKyAgJChJTkNESVIpL3NhZmUtY3R5cGUuaAogZWxmbGluay5sbzogZWxmbGluay5jICQoSU5DRElSKS9maWxlbmFtZXMuaCAkKElOQ0RJUikvYmZkbGluay5oIFwKICAgZWxmLWJmZC5oICQoSU5DRElSKS9lbGYvY29tbW9uLmggJChJTkNESVIpL2VsZi9pbnRlcm5hbC5oIFwKLSAgJChJTkNESVIpL2VsZi9leHRlcm5hbC5oCisgICQoSU5DRElSKS9lbGYvZXh0ZXJuYWwuaCAkKElOQ0RJUikvbGliaWJlcnR5LmgKIGVsZi1zdHJ0YWIubG86IGVsZi1zdHJ0YWIuYyAkKElOQ0RJUikvZmlsZW5hbWVzLmggZWxmLWJmZC5oIFwKICAgJChJTkNESVIpL2VsZi9jb21tb24uaCAkKElOQ0RJUikvZWxmL2ludGVybmFsLmggJChJTkNESVIpL2VsZi9leHRlcm5hbC5oIFwKICAgJChJTkNESVIpL2JmZGxpbmsuaCAkKElOQ0RJUikvaGFzaHRhYi5oICQoSU5DRElSKS9saWJpYmVydHkuaApAQCAtMjEyNyw3ICsyMTM4LDcgQEAKIGVsZjY0LmxvOiBlbGY2NC5jIGVsZmNvZGUuaCAkKElOQ0RJUikvZmlsZW5hbWVzLmggJChJTkNESVIpL2xpYmliZXJ0eS5oIFwKICAgJChJTkNESVIpL2JmZGxpbmsuaCBlbGYtYmZkLmggJChJTkNESVIpL2VsZi9jb21tb24uaCBcCiAgICQoSU5DRElSKS9lbGYvaW50ZXJuYWwuaCAkKElOQ0RJUikvZWxmL2V4dGVybmFsLmggZWxmY29yZS5oIFwKLSAgZWxmbGluay5oICQoSU5DRElSKS9zYWZlLWN0eXBlLmgKKyAgJChJTkNESVIpL3NhZmUtY3R5cGUuaAogbW1vLmxvOiBtbW8uYyAkKElOQ0RJUikvZmlsZW5hbWVzLmggJChJTkNESVIpL2xpYmliZXJ0eS5oIFwKICAgJChJTkNESVIpL2VsZi9tbWl4LmggJChJTkNESVIpL2VsZi9yZWxvYy1tYWNyb3MuaCAkKElOQ0RJUikvb3Bjb2RlL21taXguaAogbmxtMzItYWxwaGEubG86IG5sbTMyLWFscGhhLmMgJChJTkNESVIpL2ZpbGVuYW1lcy5oIFwKZGlmZiAtLWdpdCBhL2JmZC9hY2xvY2FsLm00IGIvYmZkL2FjbG9jYWwubTQKaW5kZXggOWQyNzY3MC4uYTk3YjM1ZiAxMDA2NDQKLS0tIGEvYmZkL2FjbG9jYWwubTQKKysrIGIvYmZkL2FjbG9jYWwubTQKQEAgLTEzLDcgKzEzLDcgQEAKIHNpbmNsdWRlKC4uL2NvbmZpZy9hY2Nyb3NzLm00KQogCiBkbmwgU2VlIHdoZXRoZXIgd2UgbmVlZCB0byB1c2UgZm9wZW4tYmluLmggcmF0aGVyIHRoYW4gZm9wZW4tc2FtZS5oLgotQUNfREVGVU4oQkZEX0JJTkFSWV9GT1BFTiwKK0FDX0RFRlVOKFtCRkRfQklOQVJZX0ZPUEVOXSwKIFtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfU1lTVEVNXSkKIGNhc2UgIiR7aG9zdH0iIGluCiBjaGFuZ2VxdW90ZSgsKWRubApAQCAtMjMsNyArMjMsNyBAQAogZXNhY10pZG5sCiAKIGRubCBHZXQgYSBkZWZhdWx0IGZvciBDQ19GT1JfQlVJTEQgdG8gcHV0IGludG8gTWFrZWZpbGUuCi1BQ19ERUZVTihCRkRfQ0NfRk9SX0JVSUxELAorQUNfREVGVU4oW0JGRF9DQ19GT1JfQlVJTERdLAogWyMgUHV0IGEgcGxhdXNpYmxlIGRlZmF1bHQgZm9yIENDX0ZPUl9CVUlMRCBpbiBNYWtlZmlsZS4KIGlmIHRlc3QgLXogIiRDQ19GT1JfQlVJTEQiOyB0aGVuCiAgIGlmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiA9ICJ4bm8iOyB0aGVuCkBAIC01Niw3ICs1Niw3IEBACiBBQ19TVUJTVChFWEVFWFRfRk9SX0JVSUxEKV0pZG5sCiAKIGRubCBTZWUgd2hldGhlciB3ZSBuZWVkIGEgZGVjbGFyYXRpb24gZm9yIGEgZnVuY3Rpb24uCi1BQ19ERUZVTihCRkRfTkVFRF9ERUNMQVJBVElPTiwKK0FDX0RFRlVOKFtCRkRfTkVFRF9ERUNMQVJBVElPTl0sCiBbQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyICQxIG11c3QgYmUgZGVjbGFyZWRdKQogQUNfQ0FDSEVfVkFMKGJmZF9jdl9kZWNsX25lZWRlZF8kMSwKIFtBQ19UUllfQ09NUElMRShbCkBAIC04NSw3ICs4NSw3IEBACiAKIGRubCBDaGVjayBmb3IgZXhpc3RlbmNlIG9mIGEgdHlwZSAkMSBpbiBzeXMvcHJvY2ZzLmgKIAotQUNfREVGVU4oQkZEX0hBVkVfU1lTX1BST0NGU19UWVBFLAorQUNfREVGVU4oW0JGRF9IQVZFX1NZU19QUk9DRlNfVFlQRV0sCiBbQUNfTVNHX0NIRUNLSU5HKFtmb3IgJDEgaW4gc3lzL3Byb2Nmcy5oXSkKICBBQ19DQUNIRV9WQUwoYmZkX2N2X2hhdmVfc3lzX3Byb2Nmc190eXBlXyQxLAogICAgW0FDX1RSWV9DT01QSUxFKFsKQEAgLTEwNSw3ICsxMDUsNyBAQAogCiBkbmwgQ2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBtZW1iZXIgJDIgaW4gdHlwZSAkMSBpbiBzeXMvcHJvY2ZzLmgKIAotQUNfREVGVU4oQkZEX0hBVkVfU1lTX1BST0NGU19UWVBFX01FTUJFUiwKK0FDX0RFRlVOKFtCRkRfSEFWRV9TWVNfUFJPQ0ZTX1RZUEVfTUVNQkVSXSwKIFtBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkMS4kMiBpbiBzeXMvcHJvY2ZzLmhdKQogIEFDX0NBQ0hFX1ZBTChiZmRfY3ZfaGF2ZV9zeXNfcHJvY2ZzX3R5cGVfbWVtYmVyXyQxXyQyLAogICAgW0FDX1RSWV9DT01QSUxFKFsKZGlmZiAtLWdpdCBhL2JmZC9hcmNodXJlcy5jIGIvYmZkL2FyY2h1cmVzLmMKaW5kZXggZjhhZWVlZi4uZjc1YmU4NCAxMDA2NDQKLS0tIGEvYmZkL2FyY2h1cmVzLmMKKysrIGIvYmZkL2FyY2h1cmVzLmMKQEAgLTEsNiArMSw2IEBACiAvKiBCRkQgbGlicmFyeSBzdXBwb3J0IHJvdXRpbmVzIGZvciBhcmNoaXRlY3R1cmVzLgogICAgQ29weXJpZ2h0IDE5OTAsIDE5OTEsIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCi0gICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzCisgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0CiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgIEhhY2tlZCBieSBKb2huIEdpbG1vcmUgYW5kIFN0ZXZlIENoYW1iZXJsYWluIG9mIEN5Z251cyBTdXBwb3J0LgogCkBAIC0yMzAsNiArMjMwLDcgQEAKIC4jZGVmaW5lIGJmZF9tYWNoX3NoM2UgICAgICAgMHgzZQogLiNkZWZpbmUgYmZkX21hY2hfc2g0ICAgICAgICAweDQwCiAuI2RlZmluZSBiZmRfbWFjaF9zaDRfbm9mcHUgIDB4NDEKKy4jZGVmaW5lIGJmZF9tYWNoX3NoNF9ub21tdV9ub2ZwdSAgMHg0MgogLiNkZWZpbmUgYmZkX21hY2hfc2g0YSAgICAgICAweDRhCiAuI2RlZmluZSBiZmRfbWFjaF9zaDRhX25vZnB1IDB4NGIKIC4jZGVmaW5lIGJmZF9tYWNoX3NoNGFsX2RzcCAgMHg0ZApAQCAtMjg1LDYgKzI4Niw3IEBACiAuI2RlZmluZSBiZmRfbWFjaF9mcnZzaW1wbGUJMgogLiNkZWZpbmUgYmZkX21hY2hfZnIzMDAJCTMwMAogLiNkZWZpbmUgYmZkX21hY2hfZnI0MDAJCTQwMAorLiNkZWZpbmUgYmZkX21hY2hfZnI0NTAJCTQ1MAogLiNkZWZpbmUgYmZkX21hY2hfZnJ2dG9tY2F0CTQ5OQl7KiBmcjUwMCBwcm90b3R5cGUgKn0KIC4jZGVmaW5lIGJmZF9tYWNoX2ZyNTAwCQk1MDAKIC4jZGVmaW5lIGJmZF9tYWNoX2ZyNTUwCQk1NTAKQEAgLTMwNSw2ICszMDcsOCBAQAogLiNkZWZpbmUgYmZkX21hY2hfYXZyMwkJMwogLiNkZWZpbmUgYmZkX21hY2hfYXZyNAkJNAogLiNkZWZpbmUgYmZkX21hY2hfYXZyNQkJNQorLiAgYmZkX2FyY2hfY3IxNmMsICAgICAgIHsqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgQ29tcGFjdFJJU0MuICp9CisuI2RlZmluZSBiZmRfbWFjaF9jcjE2YwkJMQogLiAgYmZkX2FyY2hfY3JpcywgICAgICB7KiBBeGlzIENSSVMgKn0KIC4gIGJmZF9hcmNoX3MzOTAsICAgICAgeyogSUJNIHMzOTAgKn0KIC4jZGVmaW5lIGJmZF9tYWNoX3MzOTBfMzEgICAgICAgMzEKQEAgLTM3Myw2ICszNzcsNyBAQAogZXh0ZXJuIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSBiZmRfYXJjX2FyY2g7CiBleHRlcm4gY29uc3QgYmZkX2FyY2hfaW5mb190eXBlIGJmZF9hcm1fYXJjaDsKIGV4dGVybiBjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgYmZkX2F2cl9hcmNoOworZXh0ZXJuIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSBiZmRfY3IxNmNfYXJjaDsKIGV4dGVybiBjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgYmZkX2NyaXNfYXJjaDsKIGV4dGVybiBjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgYmZkX2QxMHZfYXJjaDsKIGV4dGVybiBjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgYmZkX2QzMHZfYXJjaDsKQEAgLTQzMyw2ICs0MzgsNyBAQAogICAgICZiZmRfYXJjX2FyY2gsCiAgICAgJmJmZF9hcm1fYXJjaCwKICAgICAmYmZkX2F2cl9hcmNoLAorICAgICZiZmRfY3IxNmNfYXJjaCwKICAgICAmYmZkX2NyaXNfYXJjaCwKICAgICAmYmZkX2QxMHZfYXJjaCwKICAgICAmYmZkX2QzMHZfYXJjaCwKZGlmZiAtLWdpdCBhL2JmZC9iZmQtaW4uaCBiL2JmZC9iZmQtaW4uaAppbmRleCAzN2RmNWYyLi45YWQ3MjdlIDEwMDY0NAotLS0gYS9iZmQvYmZkLWluLmgKKysrIGIvYmZkL2JmZC1pbi5oCkBAIC01OTksMjkgKzU5OSwzMCBAQAogICBjb25zdCBjaGFyICpuYW1lOwogfTsKIAorZW51bSBkeW5hbWljX2xpYl9saW5rX2NsYXNzIHsKKyAgRFlOX05PUk1BTCA9IDAsCisgIERZTl9BU19ORUVERUQgPSAxLAorICBEWU5fRFRfTkVFREVEID0gMgorfTsKKwogZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGZfcmVjb3JkX2xpbmtfYXNzaWdubWVudAogICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNvbnN0IGNoYXIgKiwgYmZkX2Jvb2xlYW4pOwogZXh0ZXJuIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqYmZkX2VsZl9nZXRfbmVlZGVkX2xpc3QKICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKIGV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmX2dldF9iZmRfbmVlZGVkX2xpc3QKICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfbmVlZGVkX2xpc3QgKiopOwotZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGYzMl9zaXplX2R5bmFtaWNfc2VjdGlvbnMKLSAgKGJmZCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogY29uc3QgKiwKLSAgIHN0cnVjdCBiZmRfbGlua19pbmZvICosIHN0cnVjdCBiZmRfc2VjdGlvbiAqKiwgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90cmVlICopOwotZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGY2NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMKK2V4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucwogICAoYmZkICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiBjb25zdCAqLAogICAgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IGJmZF9zZWN0aW9uICoqLCBzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX3RyZWUgKik7CiBleHRlcm4gdm9pZCBiZmRfZWxmX3NldF9kdF9uZWVkZWRfbmFtZQogICAoYmZkICosIGNvbnN0IGNoYXIgKik7Ci1leHRlcm4gdm9pZCBiZmRfZWxmX3NldF9kdF9uZWVkZWRfc29uYW1lCi0gIChiZmQgKiwgY29uc3QgY2hhciAqKTsKIGV4dGVybiBjb25zdCBjaGFyICpiZmRfZWxmX2dldF9kdF9zb25hbWUKICAgKGJmZCAqKTsKK2V4dGVybiB2b2lkIGJmZF9lbGZfc2V0X2R5bl9saWJfY2xhc3MKKyAgKGJmZCAqLCBpbnQpOwogZXh0ZXJuIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqYmZkX2VsZl9nZXRfcnVucGF0aF9saXN0CiAgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7Ci1leHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZjMyX2Rpc2NhcmRfaW5mbwotICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwotZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGY2NF9kaXNjYXJkX2luZm8KK2V4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmX2Rpc2NhcmRfaW5mbwogICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwogCiAvKiBSZXR1cm4gYW4gdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCB0byBzdG9yZSBhCkBAIC03ODUsNyArNzg2LDcgQEAKICAgKHN0cnVjdCBiZmRfbGlua19pbmZvICopOwogCiBleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZjMyX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uCi0gIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgaW50KTsKKyAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBpbnQsIGludCk7CiAKIGV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmMzJfYXJtX2dldF9iZmRfZm9yX2ludGVyd29ya2luZwogICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwpkaWZmIC0tZ2l0IGEvYmZkL2JmZC1pbjIuaCBiL2JmZC9iZmQtaW4yLmgKaW5kZXggMmQwNmZkYS4uYzJlMTgxOSAxMDA2NDQKLS0tIGEvYmZkL2JmZC1pbjIuaAorKysgYi9iZmQvYmZkLWluMi5oCkBAIC02MDYsMjkgKzYwNiwzMCBAQAogICBjb25zdCBjaGFyICpuYW1lOwogfTsKIAorZW51bSBkeW5hbWljX2xpYl9saW5rX2NsYXNzIHsKKyAgRFlOX05PUk1BTCA9IDAsCisgIERZTl9BU19ORUVERUQgPSAxLAorICBEWU5fRFRfTkVFREVEID0gMgorfTsKKwogZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGZfcmVjb3JkX2xpbmtfYXNzaWdubWVudAogICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNvbnN0IGNoYXIgKiwgYmZkX2Jvb2xlYW4pOwogZXh0ZXJuIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqYmZkX2VsZl9nZXRfbmVlZGVkX2xpc3QKICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKIGV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmX2dldF9iZmRfbmVlZGVkX2xpc3QKICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfbmVlZGVkX2xpc3QgKiopOwotZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGYzMl9zaXplX2R5bmFtaWNfc2VjdGlvbnMKLSAgKGJmZCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogY29uc3QgKiwKLSAgIHN0cnVjdCBiZmRfbGlua19pbmZvICosIHN0cnVjdCBiZmRfc2VjdGlvbiAqKiwgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90cmVlICopOwotZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGY2NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMKK2V4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucwogICAoYmZkICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiBjb25zdCAqLAogICAgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IGJmZF9zZWN0aW9uICoqLCBzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX3RyZWUgKik7CiBleHRlcm4gdm9pZCBiZmRfZWxmX3NldF9kdF9uZWVkZWRfbmFtZQogICAoYmZkICosIGNvbnN0IGNoYXIgKik7Ci1leHRlcm4gdm9pZCBiZmRfZWxmX3NldF9kdF9uZWVkZWRfc29uYW1lCi0gIChiZmQgKiwgY29uc3QgY2hhciAqKTsKIGV4dGVybiBjb25zdCBjaGFyICpiZmRfZWxmX2dldF9kdF9zb25hbWUKICAgKGJmZCAqKTsKK2V4dGVybiB2b2lkIGJmZF9lbGZfc2V0X2R5bl9saWJfY2xhc3MKKyAgKGJmZCAqLCBpbnQpOwogZXh0ZXJuIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqYmZkX2VsZl9nZXRfcnVucGF0aF9saXN0CiAgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7Ci1leHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZjMyX2Rpc2NhcmRfaW5mbwotICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwotZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGY2NF9kaXNjYXJkX2luZm8KK2V4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmX2Rpc2NhcmRfaW5mbwogICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwogCiAvKiBSZXR1cm4gYW4gdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCB0byBzdG9yZSBhCkBAIC03OTIsNyArNzkzLDcgQEAKICAgKHN0cnVjdCBiZmRfbGlua19pbmZvICopOwogCiBleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZjMyX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uCi0gIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgaW50KTsKKyAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBpbnQsIGludCk7CiAKIGV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmMzJfYXJtX2dldF9iZmRfZm9yX2ludGVyd29ya2luZwogICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwpAQCAtMTYyNyw2ICsxNjI4LDcgQEAKICNkZWZpbmUgYmZkX21hY2hfc2gzZSAgICAgICAweDNlCiAjZGVmaW5lIGJmZF9tYWNoX3NoNCAgICAgICAgMHg0MAogI2RlZmluZSBiZmRfbWFjaF9zaDRfbm9mcHUgIDB4NDEKKyNkZWZpbmUgYmZkX21hY2hfc2g0X25vbW11X25vZnB1ICAweDQyCiAjZGVmaW5lIGJmZF9tYWNoX3NoNGEgICAgICAgMHg0YQogI2RlZmluZSBiZmRfbWFjaF9zaDRhX25vZnB1IDB4NGIKICNkZWZpbmUgYmZkX21hY2hfc2g0YWxfZHNwICAweDRkCkBAIC0xNjgyLDYgKzE2ODQsNyBAQAogI2RlZmluZSBiZmRfbWFjaF9mcnZzaW1wbGUgICAgIDIKICNkZWZpbmUgYmZkX21hY2hfZnIzMDAgICAgICAgICAzMDAKICNkZWZpbmUgYmZkX21hY2hfZnI0MDAgICAgICAgICA0MDAKKyNkZWZpbmUgYmZkX21hY2hfZnI0NTAgICAgICAgICA0NTAKICNkZWZpbmUgYmZkX21hY2hfZnJ2dG9tY2F0ICAgICA0OTkgICAgIC8qIGZyNTAwIHByb3RvdHlwZSAqLwogI2RlZmluZSBiZmRfbWFjaF9mcjUwMCAgICAgICAgIDUwMAogI2RlZmluZSBiZmRfbWFjaF9mcjU1MCAgICAgICAgIDU1MApAQCAtMTcwMiw2ICsxNzA1LDggQEAKICNkZWZpbmUgYmZkX21hY2hfYXZyMyAgICAgICAgICAzCiAjZGVmaW5lIGJmZF9tYWNoX2F2cjQgICAgICAgICAgNAogI2RlZmluZSBiZmRfbWFjaF9hdnI1ICAgICAgICAgIDUKKyAgYmZkX2FyY2hfY3IxNmMsICAgICAgIC8qIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgQ29tcGFjdFJJU0MuICovCisjZGVmaW5lIGJmZF9tYWNoX2NyMTZjICAgICAgICAgMQogICBiZmRfYXJjaF9jcmlzLCAgICAgIC8qIEF4aXMgQ1JJUyAqLwogICBiZmRfYXJjaF9zMzkwLCAgICAgIC8qIElCTSBzMzkwICovCiAjZGVmaW5lIGJmZF9tYWNoX3MzOTBfMzEgICAgICAgMzEKQEAgLTMzNDAsNiArMzM0NSw0OCBAQAogVGhpcyBpcyB0aGUgNSBiaXRzIG9mIGEgdmFsdWUuICAqLwogICBCRkRfUkVMT0NfTTY4SEMxMl81QiwKIAorLyogTlMgQ1IxNkMgUmVsb2NhdGlvbnMuICAqLworICBCRkRfUkVMT0NfMTZDX05VTTA4LAorICBCRkRfUkVMT0NfMTZDX05VTTA4X0MsCisgIEJGRF9SRUxPQ18xNkNfTlVNMTYsCisgIEJGRF9SRUxPQ18xNkNfTlVNMTZfQywKKyAgQkZEX1JFTE9DXzE2Q19OVU0zMiwKKyAgQkZEX1JFTE9DXzE2Q19OVU0zMl9DLAorICBCRkRfUkVMT0NfMTZDX0RJU1AwNCwKKyAgQkZEX1JFTE9DXzE2Q19ESVNQMDRfQywKKyAgQkZEX1JFTE9DXzE2Q19ESVNQMDgsCisgIEJGRF9SRUxPQ18xNkNfRElTUDA4X0MsCisgIEJGRF9SRUxPQ18xNkNfRElTUDE2LAorICBCRkRfUkVMT0NfMTZDX0RJU1AxNl9DLAorICBCRkRfUkVMT0NfMTZDX0RJU1AyNCwKKyAgQkZEX1JFTE9DXzE2Q19ESVNQMjRfQywKKyAgQkZEX1JFTE9DXzE2Q19ESVNQMjRhLAorICBCRkRfUkVMT0NfMTZDX0RJU1AyNGFfQywKKyAgQkZEX1JFTE9DXzE2Q19SRUcwNCwKKyAgQkZEX1JFTE9DXzE2Q19SRUcwNF9DLAorICBCRkRfUkVMT0NfMTZDX1JFRzA0YSwKKyAgQkZEX1JFTE9DXzE2Q19SRUcwNGFfQywKKyAgQkZEX1JFTE9DXzE2Q19SRUcxNCwKKyAgQkZEX1JFTE9DXzE2Q19SRUcxNF9DLAorICBCRkRfUkVMT0NfMTZDX1JFRzE2LAorICBCRkRfUkVMT0NfMTZDX1JFRzE2X0MsCisgIEJGRF9SRUxPQ18xNkNfUkVHMjAsCisgIEJGRF9SRUxPQ18xNkNfUkVHMjBfQywKKyAgQkZEX1JFTE9DXzE2Q19BQlMyMCwKKyAgQkZEX1JFTE9DXzE2Q19BQlMyMF9DLAorICBCRkRfUkVMT0NfMTZDX0FCUzI0LAorICBCRkRfUkVMT0NfMTZDX0FCUzI0X0MsCisgIEJGRF9SRUxPQ18xNkNfSU1NMDQsCisgIEJGRF9SRUxPQ18xNkNfSU1NMDRfQywKKyAgQkZEX1JFTE9DXzE2Q19JTU0xNiwKKyAgQkZEX1JFTE9DXzE2Q19JTU0xNl9DLAorICBCRkRfUkVMT0NfMTZDX0lNTTIwLAorICBCRkRfUkVMT0NfMTZDX0lNTTIwX0MsCisgIEJGRF9SRUxPQ18xNkNfSU1NMjQsCisgIEJGRF9SRUxPQ18xNkNfSU1NMjRfQywKKyAgQkZEX1JFTE9DXzE2Q19JTU0zMiwKKyAgQkZEX1JFTE9DXzE2Q19JTU0zMl9DLAorCiAvKiBUaGVzZSByZWxvY3MgYXJlIG9ubHkgdXNlZCB3aXRoaW4gdGhlIENSSVMgYXNzZW1ibGVyLiAgVGhleSBhcmUgbm90CiAoYXQgcHJlc2VudCkgd3JpdHRlbiB0byBhbnkgb2JqZWN0IGZpbGVzLiAgKi8KICAgQkZEX1JFTE9DX0NSSVNfQkRJU1A4LApkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAppbmRleCAyZjljMTk3Li5lYzMyNmNjIDEwMDY0NAotLS0gYS9iZmQvY29uZmlnLmJmZAorKysgYi9iZmQvY29uZmlnLmJmZApAQCAtMzA2LDYgKzMwNiwxMSBAQAogICAgIHRhcmdfdW5kZXJzY29yZT15ZXMKICAgICA7OwogCisgIGNyMTZjLSotZWxmKikKKyAgICB0YXJnX2RlZnZlYz1iZmRfZWxmMzJfY3IxNmNfdmVjCisgICAgdGFyZ191bmRlcnNjb3JlPXllcworICAgIDs7CisKICAgY3Jpcy0qLSopCiAgICAgdGFyZ19kZWZ2ZWM9Y3Jpc19hb3V0X3ZlYwogICAgIHRhcmdfc2VsdmVjcz0iYmZkX2VsZjMyX3VzX2NyaXNfdmVjIGJmZF9lbGYzMl9jcmlzX3ZlYyBpZWVlX3ZlYyIKQEAgLTk2OSw3ICs5NzQsNyBAQAogICAgIHRhcmdfc2VsdmVjcz0ibWFjaF9vX2JlX3ZlYyBtYWNoX29fbGVfdmVjIG1hY2hfb19mYXRfdmVjIHBlZl92ZWMgcGVmX3hsaWJfdmVjIHN5bV92ZWMiCiAgICAgdGFyZ19hcmNocz0iYmZkX3Bvd2VycGNfYXJjaCBiZmRfcnM2MDAwX2FyY2ggYmZkX2kzODZfYXJjaCIKICAgICA7OwotICBwb3dlcnBjLSotbWFjb3MqIHwgcG93ZXJwYy0qLW1wdyopCisgIHBvd2VycGMtKi1tYWNvcyopCiAgICAgdGFyZ19kZWZ2ZWM9cG1hY194Y29mZl92ZWMKICAgICA7OwogICBwb3dlcnBjLSotbmV0d2FyZSopCmRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmluIGIvYmZkL2NvbmZpZy5pbgppbmRleCBlZjllY2E0Li4zMjI0NTM5IDEwMDY0NAotLS0gYS9iZmQvY29uZmlnLmluCisrKyBiL2JmZC9jb25maWcuaW4KQEAgLTE3Miw5ICsxNzIsMTUgQEAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wcm9jZnMuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfU1lTX1BST0NGU19ICiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAgKi8KKyN1bmRlZiBIQVZFX1NZU19TVEFUX0gKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWUuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfU1lTX1RJTUVfSAogCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICAqLworI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0gKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8dGltZS5oPiBoZWFkZXIgZmlsZS4gICovCiAjdW5kZWYgSEFWRV9USU1FX0gKIApkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZSBiL2JmZC9jb25maWd1cmUKaW5kZXggNDI0ZGJhOS4uY2VjNGE4YiAxMDA3NTUKLS0tIGEvYmZkL2NvbmZpZ3VyZQorKysgYi9iZmQvY29uZmlndXJlCkBAIC05MTksNyArOTE5LDcgQEAKIAogUEFDS0FHRT1iZmQKIAotVkVSU0lPTj0yLjE0LjkwCitWRVJTSU9OPTIuMTUuOTAKIAogaWYgdGVzdCAiYGNkICRzcmNkaXIgJiYgcHdkYCIgIT0gImBwd2RgIiAmJiB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLnN0YXR1czsgdGhlbgogICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IHNvdXJjZSBkaXJlY3RvcnkgYWxyZWFkeSBjb25maWd1cmVkOyBydW4gIm1ha2UgZGlzdGNsZWFuIiB0aGVyZSBmaXJzdCIgMT4mMjsgZXhpdCAxOyB9CkBAIC02Mjk5LDYgKzYyOTksNyBAQAogICAgIGJmZF9lbGYzMl9iaWdhcm1fb2FiaV92ZWMpCXRiPSIkdGIgZWxmYXJtLW9hYmkubG8gZWxmMzIubG8gJGVsZiIgOzsKICAgICBiZmRfZWxmMzJfYmlnYXJtX3ZlYykJdGI9IiR0YiBlbGZhcm0tbmFiaS5sbyBlbGYzMi5sbyAkZWxmIiA7OwogICAgIGJmZF9lbGYzMl9iaWdtaXBzX3ZlYykgCXRiPSIkdGIgZWxmMzItbWlwcy5sbyBlbGZ4eC1taXBzLmxvIGVsZjMyLmxvICRlbGYgZWNvZmZsaW5rLmxvIiA7OworICAgIGJmZF9lbGYzMl9jcjE2Y192ZWMpCXRiPSIkdGIgZWxmMzItY3IxNmMubG8gZWxmMzIubG8gJGVsZiIgOzsKICAgICBiZmRfZWxmMzJfY3Jpc192ZWMpCQl0Yj0iJHRiIGVsZjMyLWNyaXMubG8gZWxmMzIubG8gJGVsZiIgOzsKICAgICBiZmRfZWxmMzJfZDEwdl92ZWMpCQl0Yj0iJHRiIGVsZjMyLWQxMHYubG8gZWxmMzIubG8gJGVsZiIgOzsKICAgICBiZmRfZWxmMzJfZDMwdl92ZWMpCQl0Yj0iJHRiIGVsZjMyLWQzMHYubG8gZWxmMzIubG8gJGVsZiIgOzsKQEAgLTY1ODYsMTAgKzY1ODcsMTAgQEAKICAgICBpZiB0ZXN0IC1uICIkR0NDIiA7IHRoZW4KICAgICAgICBiYWRfNjRiaXRfZ2NjPW5vOwogICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBnY2MgdmVyc2lvbiB3aXRoIGJ1Z2d5IDY0LWJpdCBzdXBwb3J0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2NTkwOiBjaGVja2luZyBmb3IgZ2NjIHZlcnNpb24gd2l0aCBidWdneSA2NC1iaXQgc3VwcG9ydCIgPiY1CitlY2hvICJjb25maWd1cmU6NjU5MTogY2hlY2tpbmcgZm9yIGdjYyB2ZXJzaW9uIHdpdGggYnVnZ3kgNjQtYml0IHN1cHBvcnQiID4mNQogICAgICAgICMgQWRkIG1vcmUgdGVzdHMgZm9yIGdjYyB2ZXJzaW9ucyB3aXRoIG5vbi13b3JraW5nIDY0LWJpdCBzdXBwb3J0IGhlcmUuCiAgICAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjU5MyAiY29uZmlndXJlIgorI2xpbmUgNjU5NCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiA6X19HTlVDX186X19HTlVDX01JTk9SX186X19pMzg2X186CiBFT0YKQEAgLTY2MzEsMTIgKzY2MzIsMTIgQEAKIGZvciBhY19mdW5jIGluIGZ0ZWxsbyBmdGVsbG82NCBmc2Vla28gZnNlZWtvNjQKIGRvCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2Z1bmMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjY2MzU6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CitlY2hvICJjb25maWd1cmU6NjYzNjogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jXyRhY19mdW5jJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjY0MCAiY29uZmlndXJlIgorI2xpbmUgNjY0MSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYygpOyBiZWxvdy4gICovCkBAIC02NjU5LDcgKzY2NjAsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjY2MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjY2NjQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNfJGFjX2Z1bmM9eWVzIgogZWxzZQpAQCAtNjY4NSwxMyArNjY4NiwxMyBAQAogCiBpZiB0ZXN0IHgiJGFjX2N2X2Z1bmNfZnRlbGxvIiA9IHh5ZXMgLWEgeCIkYWNfY3ZfZnVuY19mc2Vla28iID0geHllczsgdGhlbgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIHNpemUgb2Ygb2ZmX3QiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjY2ODk6IGNoZWNraW5nIHNpemUgb2Ygb2ZmX3QiID4mNQorZWNobyAiY29uZmlndXJlOjY2OTA6IGNoZWNraW5nIHNpemUgb2Ygb2ZmX3QiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3NpemVvZl9vZmZfdCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGZvciBhY19zaXplIGluIDQgOCAxIDIgMTYgMTIgIDsgZG8gIyBMaXN0IHNpemVzIGluIHJvdWdoIG9yZGVyIG9mIHByZXZhbGVuY2UuCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDY2OTUgImNvbmZpZ3VyZSIKKyNsaW5lIDY2OTYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC02NzAxLDcgKzY3MDIsNyBAQAogc3dpdGNoICgwKSBjYXNlIDA6IGNhc2UgKHNpemVvZiAob2ZmX3QpID09ICRhY19zaXplKTo7CiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjcwNTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NzA2OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3Zfc2l6ZW9mX29mZl90PSRhY19zaXplCiBlbHNlCkBAIC02NzI1LDcgKzY3MjYsNyBAQAogCiBmaQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZmlsZV9wdHIgdHlwZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NjcyOTogY2hlY2tpbmcgZmlsZV9wdHIgdHlwZSIgPiY1CitlY2hvICJjb25maWd1cmU6NjczMDogY2hlY2tpbmcgZmlsZV9wdHIgdHlwZSIgPiY1CiBiZmRfZmlsZV9wdHI9ImxvbmciCiBiZmRfdWZpbGVfcHRyPSJ1bnNpZ25lZCBsb25nIgogaWYgdGVzdCB4IiRhY19jdl9mdW5jX2Z0ZWxsbzY0IiA9IHh5ZXMgLWEgeCIkYWNfY3ZfZnVuY19mc2Vla282NCIgPSB4eWVzIFwKQEAgLTY3NTAsMTcgKzY3NTEsMTcgQEAKIGRvCiBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2NzU0OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CitlY2hvICJjb25maWd1cmU6Njc1NTogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDY3NTkgImNvbmZpZ3VyZSIKKyNsaW5lIDY3NjAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZHI+CiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjY3NjQ6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjY3NjU6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC02Nzg5LDEyICs2NzkwLDEyIEBACiBmb3IgYWNfZnVuYyBpbiBnZXRwYWdlc2l6ZQogZG8KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Njc5MzogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2Nzk0OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA2Nzk4ICJjb25maWd1cmUiCisjbGluZSA2Nzk5ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8KQEAgLTY4MTcsNyArNjgxOCw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2ODIxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjgyMjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiCiBlbHNlCkBAIC02ODQyLDcgKzY4NDMsNyBAQAogZG9uZQogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igd29ya2luZyBtbWFwIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2ODQ2OiBjaGVja2luZyBmb3Igd29ya2luZyBtbWFwIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2ODQ3OiBjaGVja2luZyBmb3Igd29ya2luZyBtbWFwIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTY4NTAsNyArNjg1MSw3IEBACiAgIGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9bm8KIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjg1NCAiY29uZmlndXJlIgorI2xpbmUgNjg1NSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIC8qIFRoYW5rcyB0byBNaWtlIEhhZXJ0ZWwgYW5kIEppbSBBdmVyYSBmb3IgdGhpcyB0ZXN0LgpAQCAtNzAwMyw3ICs3MDA0LDcgQEAKIH0KIAogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjcwMDc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzAwODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPXllcwogZWxzZQpAQCAtNzAyOCwxMiArNzAyOSwxMiBAQAogZm9yIGFjX2Z1bmMgaW4gbWFkdmlzZSBtcHJvdGVjdAogZG8KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NzAzMjogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo3MDMzOiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA3MDM3ICJjb25maWd1cmUiCisjbGluZSA3MDM4ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8KQEAgLTcwNTYsNyArNzA1Nyw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3MDYwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzA2MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiCiBlbHNlCmRpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlLmluIGIvYmZkL2NvbmZpZ3VyZS5pbgppbmRleCBmOTcwMjg3Li5kMGFlY2E3IDEwMDY0NAotLS0gYS9iZmQvY29uZmlndXJlLmluCisrKyBiL2JmZC9jb25maWd1cmUuaW4KQEAgLTcsNyArNyw3IEBACiBBQ19DQU5PTklDQUxfU1lTVEVNCiBBQ19JU0NfUE9TSVgKIAotQU1fSU5JVF9BVVRPTUFLRShiZmQsIDIuMTQuOTApCitBTV9JTklUX0FVVE9NQUtFKGJmZCwgMi4xNS45MCkKICMgVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gcmVtb3ZlIHRoZSBkYXRlIGZyb20gdGhlIHJlcG9ydGVkIGJmZCB2ZXJzaW9uCiAjaXNfcmVsZWFzZT15CiAKQEAgLTYwOCw2ICs2MDgsNyBAQAogICAgIGJmZF9lbGYzMl9iaWdhcm1fb2FiaV92ZWMpCXRiPSIkdGIgZWxmYXJtLW9hYmkubG8gZWxmMzIubG8gJGVsZiIgOzsKICAgICBiZmRfZWxmMzJfYmlnYXJtX3ZlYykJdGI9IiR0YiBlbGZhcm0tbmFiaS5sbyBlbGYzMi5sbyAkZWxmIiA7OwogICAgIGJmZF9lbGYzMl9iaWdtaXBzX3ZlYykgCXRiPSIkdGIgZWxmMzItbWlwcy5sbyBlbGZ4eC1taXBzLmxvIGVsZjMyLmxvICRlbGYgZWNvZmZsaW5rLmxvIiA7OworICAgIGJmZF9lbGYzMl9jcjE2Y192ZWMpCXRiPSIkdGIgZWxmMzItY3IxNmMubG8gZWxmMzIubG8gJGVsZiIgOzsKICAgICBiZmRfZWxmMzJfY3Jpc192ZWMpCQl0Yj0iJHRiIGVsZjMyLWNyaXMubG8gZWxmMzIubG8gJGVsZiIgOzsKICAgICBiZmRfZWxmMzJfZDEwdl92ZWMpCQl0Yj0iJHRiIGVsZjMyLWQxMHYubG8gZWxmMzIubG8gJGVsZiIgOzsKICAgICBiZmRfZWxmMzJfZDMwdl92ZWMpCQl0Yj0iJHRiIGVsZjMyLWQzMHYubG8gZWxmMzIubG8gJGVsZiIgOzsKZGlmZiAtLWdpdCBhL2JmZC9jcHUtY3IxNmMuYyBiL2JmZC9jcHUtY3IxNmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzczZTA4Ci0tLSAvZGV2L251bGwKKysrIGIvYmZkL2NwdS1jcjE2Yy5jCkBAIC0wLDAgKzEsMzggQEAKKy8qIEJGRCBzdXBwb3J0IGZvciB0aGUgQ1IxNkMgcHJvY2Vzc29yLgorICAgQ29weXJpZ2h0IDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEJGRCwgdGhlIEJpbmFyeSBGaWxlIERlc2NyaXB0b3IgbGlicmFyeS4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKworI2luY2x1ZGUgImJmZC5oIgorI2luY2x1ZGUgInN5c2RlcC5oIgorI2luY2x1ZGUgImxpYmJmZC5oIgorCitjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgYmZkX2NyMTZjX2FyY2ggPQorICB7CisgICAgMTYsCQkvKiAxNiBiaXRzIGluIGEgd29yZC4gICovCisgICAgMzIsCQkvKiAzMiBiaXRzIGluIGFuIGFkZHJlc3MuICAqLworICAgIDgsCQkvKiAgOCBiaXRzIGluIGEgYnl0ZS4gICovCisgICAgYmZkX2FyY2hfY3IxNmMsCisgICAgYmZkX21hY2hfY3IxNmMsCisgICAgImNyMTZjIiwKKyAgICAiY3IxNmMiLAorICAgIDEsCisgICAgVFJVRSwgCS8qIFRoZSBvbmUgYW5kIG9ubHkuICAqLworICAgIGJmZF9kZWZhdWx0X2NvbXBhdGlibGUsIAorICAgIGJmZF9kZWZhdWx0X3NjYW4gLAorICAgIDAsCisgIH07CmRpZmYgLS1naXQgYS9iZmQvY3B1LWZydi5jIGIvYmZkL2NwdS1mcnYuYwppbmRleCBmOTExODgxLi40OTljNjZkIDEwMDY0NAotLS0gYS9iZmQvY3B1LWZydi5jCisrKyBiL2JmZC9jcHUtZnJ2LmMKQEAgLTQzLDggKzQzLDExIEBACiBzdGF0aWMgY29uc3QgYmZkX2FyY2hfaW5mb190eXBlIGFyY2hfaW5mb180MDAKICAgPSBGUlZfQVJDSCAoYmZkX21hY2hfZnI0MDAsICJmcjQwMCIsIEZBTFNFLCAmYXJjaF9pbmZvXzMwMCk7CiAKK3N0YXRpYyBjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgYXJjaF9pbmZvXzQ1MAorICA9IEZSVl9BUkNIIChiZmRfbWFjaF9mcjQ1MCwgImZyNDUwIiwgRkFMU0UsICZhcmNoX2luZm9fNDAwKTsKKwogc3RhdGljIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSBhcmNoX2luZm9fNTAwCi0gID0gRlJWX0FSQ0ggKGJmZF9tYWNoX2ZyNTAwLCAiZnI1MDAiLCBGQUxTRSwgJmFyY2hfaW5mb180MDApOworICA9IEZSVl9BUkNIIChiZmRfbWFjaF9mcjUwMCwgImZyNTAwIiwgRkFMU0UsICZhcmNoX2luZm9fNDUwKTsKIAogc3RhdGljIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSBhcmNoX2luZm9fNTUwCiAgID0gRlJWX0FSQ0ggKGJmZF9tYWNoX2ZyNTUwLCAiZnI1NTAiLCBGQUxTRSwgJmFyY2hfaW5mb181MDApOwpkaWZmIC0tZ2l0IGEvYmZkL2NwdS1zaC5jIGIvYmZkL2NwdS1zaC5jCmluZGV4IDJmMzMyNDAuLmJlMzU5ZGYgMTAwNjQ0Ci0tLSBhL2JmZC9jcHUtc2guYworKysgYi9iZmQvY3B1LXNoLmMKQEAgLTEsNSArMSw1IEBACiAvKiBCRkQgbGlicmFyeSBzdXBwb3J0IHJvdXRpbmVzIGZvciB0aGUgUmVuZXNhcyAvIFN1cGVySCBTSCBhcmNoaXRlY3R1cmUuCi0gICBDb3B5cmlnaHQgMTk5MywgMTk5NCwgMTk5NywgMTk5OCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMworICAgQ29weXJpZ2h0IDE5OTMsIDE5OTQsIDE5OTcsIDE5OTgsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgSGFja2VkIGJ5IFN0ZXZlIENoYW1iZXJsYWluIG9mIEN5Z251cyBTdXBwb3J0LgogCkBAIC0zNCw3ICszNCw4IEBACiAjZGVmaW5lIFNINEFfTkVYVCAgICAmYXJjaF9pbmZvX3N0cnVjdFs4XQogI2RlZmluZSBTSDRBTF9EU1BfTkVYVCAmYXJjaF9pbmZvX3N0cnVjdFs5XQogI2RlZmluZSBTSDRfTk9GUFVfTkVYVCAmYXJjaF9pbmZvX3N0cnVjdFsxMF0KLSNkZWZpbmUgU0g0QV9OT0ZQVV9ORVhUICZhcmNoX2luZm9fc3RydWN0WzExXQorI2RlZmluZSBTSDRfTk9NTVVfTk9GUFVfTkVYVCAmYXJjaF9pbmZvX3N0cnVjdFsxMV0KKyNkZWZpbmUgU0g0QV9OT0ZQVV9ORVhUICZhcmNoX2luZm9fc3RydWN0WzEyXQogI2RlZmluZSBTSDY0X05FWFQgICAgTlVMTAogCiBzdGF0aWMgY29uc3QgYmZkX2FyY2hfaW5mb190eXBlIGFyY2hfaW5mb19zdHJ1Y3RbXSA9CkBAIC0xODQsNiArMTg1LDIwIEBACiAgICAgMzIsCQkJCS8qIDMyIGJpdHMgaW4gYW4gYWRkcmVzcyAqLwogICAgIDgsCQkJCS8qIDggYml0cyBpbiBhIGJ5dGUgKi8KICAgICBiZmRfYXJjaF9zaCwKKyAgICBiZmRfbWFjaF9zaDRfbm9tbXVfbm9mcHUsCisgICAgInNoIiwJCQkvKiBhcmNoX25hbWUgICovCisgICAgInNoNC1ub21tdS1ub2ZwdSIsCQkvKiBwcmludGFibGUgbmFtZSAqLworICAgIDEsCisgICAgRkFMU0UsCQkJLyogbm90IHRoZSBkZWZhdWx0ICovCisgICAgYmZkX2RlZmF1bHRfY29tcGF0aWJsZSwKKyAgICBiZmRfZGVmYXVsdF9zY2FuLAorICAgIFNINF9OT01NVV9OT0ZQVV9ORVhUCisgIH0sCisgIHsKKyAgICAzMiwJCQkJLyogMzIgYml0cyBpbiBhIHdvcmQgKi8KKyAgICAzMiwJCQkJLyogMzIgYml0cyBpbiBhbiBhZGRyZXNzICovCisgICAgOCwJCQkJLyogOCBiaXRzIGluIGEgYnl0ZSAqLworICAgIGJmZF9hcmNoX3NoLAogICAgIGJmZF9tYWNoX3NoNGFfbm9mcHUsCiAgICAgInNoIiwJCQkvKiBhcmNoX25hbWUgICovCiAgICAgInNoNGEtbm9mcHUiLAkJLyogcHJpbnRhYmxlIG5hbWUgKi8KZGlmZiAtLWdpdCBhL2JmZC9kb2MvQ2hhbmdlTG9nIGIvYmZkL2RvYy9DaGFuZ2VMb2cKaW5kZXggMzMxNjM4My4uY2M1N2IyYiAxMDA2NDQKLS0tIGEvYmZkL2RvYy9DaGFuZ2VMb2cKKysrIGIvYmZkL2RvYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAwNC0wMy0yNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKworCSogYmZkaW50LnRleGk6IFJlbW92ZSBhbGwgbWVudGlvbiBvZiBlbGZsaW5rLmguCisKKzIwMDQtMDMtMTkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgogCiBGb3Igb2xkZXIgY2hhbmdlcyBzZWUgQ2hhbmdlTG9nLTkxMDMKIAwKZGlmZiAtLWdpdCBhL2JmZC9kb2MvTWFrZWZpbGUuaW4gYi9iZmQvZG9jL01ha2VmaWxlLmluCmluZGV4IDFjMWZjZTkuLjEzNmI0MjkgMTAwNjQ0Ci0tLSBhL2JmZC9kb2MvTWFrZWZpbGUuaW4KKysrIGIvYmZkL2RvYy9NYWtlZmlsZS5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYXV0b21ha2UgMS40LXA2IGZyb20gTWFrZWZpbGUuYW0KKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYXV0b21ha2UgMS40LXA1IGZyb20gTWFrZWZpbGUuYW0KIAogIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUtOCwgMTk5OSwgMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBNYWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCkBAIC0xMTcsOCArMTE3LDEwIEBACiBhbGxfYmFja2VuZHMgPSBAYWxsX2JhY2tlbmRzQAogYmZkX2JhY2tlbmRzID0gQGJmZF9iYWNrZW5kc0AKIGJmZF9kZWZhdWx0X3RhcmdldF9zaXplID0gQGJmZF9kZWZhdWx0X3RhcmdldF9zaXplQAorYmZkX2ZpbGVfcHRyID0gQGJmZF9maWxlX3B0ckAKIGJmZF9saWJzID0gQGJmZF9saWJzQAogYmZkX21hY2hpbmVzID0gQGJmZF9tYWNoaW5lc0AKK2JmZF91ZmlsZV9wdHIgPSBAYmZkX3VmaWxlX3B0ckAKIGJmZF92ZXJzaW9uID0gQGJmZF92ZXJzaW9uQAogYmZkX3ZlcnNpb25fc3RyaW5nID0gQGJmZF92ZXJzaW9uX3N0cmluZ0AKIGJmZGluY2x1ZGVkaXIgPSBAYmZkaW5jbHVkZWRpckAKZGlmZiAtLWdpdCBhL2JmZC9kb2MvYmZkaW50LnRleGkgYi9iZmQvZG9jL2JmZGludC50ZXhpCmluZGV4IGNkMjlhZTguLjk1YzAwOTYgMTAwNjQ0Ci0tLSBhL2JmZC9kb2MvYmZkaW50LnRleGkKKysrIGIvYmZkL2RvYy9iZmRpbnQudGV4aQpAQCAtMTA3MywxMSArMTA3Myw2IEBACiBMaWtlIEBmaWxle2VsZmNvZGUuaH0sIGJ1dCBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIHNwZWNpZmljIHRvIEVMRiBjb3JlCiBmaWxlcy4gIFRoaXMgaXMgaW5jbHVkZWQgb25seSBieSBAZmlsZXtlbGZjb2RlLmh9LgogCi1AaXRlbSBlbGZsaW5rLmgKLUBjaW5kZXggQGZpbGV7ZWxmbGluay5ofQotTGlrZSBAZmlsZXtlbGZjb2RlLmh9LCBidXQgZm9yIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBFTEYgbGlua2VyLiAgVGhpcwotaXMgaW5jbHVkZWQgb25seSBieSBAZmlsZXtlbGZjb2RlLmh9LgotCiBAaXRlbSBlbGZ4eC10YXJnZXQuaAogQGNpbmRleCBAZmlsZXtlbGZ4eC10YXJnZXQuaH0KIFRoaXMgZmlsZSBpcyB0aGUgc291cmNlIGZvciB0aGUgZ2VuZXJhdGVkIGZpbGVzIEBmaWxle2VsZjMyLXRhcmdldC5ofQpAQCAtMTQ4Miw4ICsxNDc3LDcgQEAKIEBmaWxle2VsZmNvZGUuaH0gaW5jbHVkZXMgZnVuY3Rpb25zIHRvIHN3YXAgdGhlIEVMRiBzdHJ1Y3R1cmVzIGluIGFuZAogb3V0IG9mIGV4dGVybmFsIGZvcm0sIGFzIHdlbGwgYXMgYSBmZXcgbW9yZSBjb21wbGV4IGZ1bmN0aW9ucy4KIAotTGlua2VyIHN1cHBvcnQgaXMgZm91bmQgaW4gQGZpbGV7ZWxmbGluay5jfSBhbmQgQGZpbGV7ZWxmbGluay5ofS4gIFRoZQotbGF0dGVyIGZpbGUgaXMgY29tcGlsZWQgdHdpY2UsIGZvciBib3RoIDMyIGFuZCA2NCBiaXQgc3VwcG9ydC4gIFRoZQorTGlua2VyIHN1cHBvcnQgaXMgZm91bmQgaW4gQGZpbGV7ZWxmbGluay5jfS4gIFRoZQogbGlua2VyIHN1cHBvcnQgaXMgb25seSB1c2VkIGlmIHRoZSBwcm9jZXNzb3Igc3BlY2lmaWMgZmlsZSBkZWZpbmVzCiBAc2FtcHtlbGZfYmFja2VuZF9yZWxvY2F0ZV9zZWN0aW9ufSwgd2hpY2ggaXMgcmVxdWlyZWQgdG8gcmVsb2NhdGUgdGhlCiBzZWN0aW9uIGNvbnRlbnRzLiAgSWYgdGhhdCBtYWNybyBpcyBub3QgZGVmaW5lZCwgdGhlIGdlbmVyaWMgbGlua2VyIGNvZGUKZGlmZiAtLWdpdCBhL2JmZC9lY29mZnN3YXAuaCBiL2JmZC9lY29mZnN3YXAuaAppbmRleCA3ZWEwMzk0Li4wZTc3MDUyIDEwMDY0NAotLS0gYS9iZmQvZWNvZmZzd2FwLmgKKysrIGIvYmZkL2Vjb2Zmc3dhcC5oCkBAIC0zMjQsOCArMzI0LDYgQEAKICNlbmRpZgogfQogCi0jaWZuZGVmIE1QV19DCi0KIC8qIFN3YXAgaW4gdGhlIHByb2NlZHVyZSBkZXNjcmlwdG9yIHJlY29yZC4gICovCiAKIHN0YXRpYyB2b2lkCkBAIC00NTQsNzggKzQ1Miw2IEBACiAjZW5kaWYKIH0KIAotI2Vsc2UgLyogTVBXX0MgKi8KLS8qIFNhbWUgcm91dGluZXMsIGJ1dCB3aXRoIEVDT0ZGXzY0IGNvZGUgcmVtb3ZlZCwgc28gXiYlJCMmISBNUFcgQyBkb2Vzbid0Ci0gICBjb3JydXB0IGl0c2VsZiBhbmQgdGhlbiBmcmVhayBvdXQuICAqLwotLyogU3dhcCBpbiB0aGUgcHJvY2VkdXJlIGRlc2NyaXB0b3IgcmVjb3JkLiAgKi8KLQotc3RhdGljIHZvaWQKLWVjb2ZmX3N3YXBfcGRyX2luIChhYmZkLCBleHRfY29weSwgaW50ZXJuKQotICAgICBiZmQgKmFiZmQ7Ci0gICAgIFBUUiBleHRfY29weTsKLSAgICAgUERSICppbnRlcm47Ci17Ci0gIHN0cnVjdCBwZHJfZXh0IGV4dFsxXTsKLQotICAqZXh0ID0gKihzdHJ1Y3QgcGRyX2V4dCAqKSBleHRfY29weTsKLQotICBpbnRlcm4tPmFkciAgICAgICAgICAgPSBFQ09GRl9HRVRfT0ZGIChhYmZkLCBleHQtPnBfYWRyKTsKLSAgaW50ZXJuLT5pc3ltICAgICAgICAgID0gSF9HRVRfMzIgKGFiZmQsIGV4dC0+cF9pc3ltKTsKLSAgaW50ZXJuLT5pbGluZSAgICAgICAgID0gSF9HRVRfMzIgKGFiZmQsIGV4dC0+cF9pbGluZSk7Ci0gIGludGVybi0+cmVnbWFzayAgICAgICA9IEhfR0VUXzMyIChhYmZkLCBleHQtPnBfcmVnbWFzayk7Ci0gIGludGVybi0+cmVnb2Zmc2V0ICAgICA9IEhfR0VUX1MzMiAoYWJmZCwgZXh0LT5wX3JlZ29mZnNldCk7Ci0gIGludGVybi0+aW9wdCAgICAgICAgICA9IEhfR0VUX1MzMiAoYWJmZCwgZXh0LT5wX2lvcHQpOwotICBpbnRlcm4tPmZyZWdtYXNrICAgICAgPSBIX0dFVF8zMiAoYWJmZCwgZXh0LT5wX2ZyZWdtYXNrKTsKLSAgaW50ZXJuLT5mcmVnb2Zmc2V0ICAgID0gSF9HRVRfUzMyIChhYmZkLCBleHQtPnBfZnJlZ29mZnNldCk7Ci0gIGludGVybi0+ZnJhbWVvZmZzZXQgICA9IEhfR0VUX1MzMiAoYWJmZCwgZXh0LT5wX2ZyYW1lb2Zmc2V0KTsKLSAgaW50ZXJuLT5mcmFtZXJlZyAgICAgID0gSF9HRVRfMTYgKGFiZmQsIGV4dC0+cF9mcmFtZXJlZyk7Ci0gIGludGVybi0+cGNyZWcgICAgICAgICA9IEhfR0VUXzE2IChhYmZkLCBleHQtPnBfcGNyZWcpOwotICBpbnRlcm4tPmxuTG93ICAgICAgICAgPSBIX0dFVF8zMiAoYWJmZCwgZXh0LT5wX2xuTG93KTsKLSAgaW50ZXJuLT5sbkhpZ2ggICAgICAgID0gSF9HRVRfMzIgKGFiZmQsIGV4dC0+cF9sbkhpZ2gpOwotICBpbnRlcm4tPmNiTGluZU9mZnNldCAgPSBFQ09GRl9HRVRfT0ZGIChhYmZkLCBleHQtPnBfY2JMaW5lT2Zmc2V0KTsKLQotI2lmZGVmIFRFU1QKLSAgaWYgKG1lbWNtcCAoKGNoYXIgKilleHQsIChjaGFyICopaW50ZXJuLCBzaXplb2YgKCppbnRlcm4pKSAhPSAwKQotICAgIGFib3J0ICgpOwotI2VuZGlmCi19Ci0KLS8qIFN3YXAgb3V0IHRoZSBwcm9jZWR1cmUgZGVzY3JpcHRvciByZWNvcmQuICAqLwotCi1zdGF0aWMgdm9pZAotZWNvZmZfc3dhcF9wZHJfb3V0IChhYmZkLCBpbnRlcm5fY29weSwgZXh0X3B0cikKLSAgICAgYmZkICphYmZkOwotICAgICBjb25zdCBQRFIgKmludGVybl9jb3B5OwotICAgICBQVFIgZXh0X3B0cjsKLXsKLSAgc3RydWN0IHBkcl9leHQgKmV4dCA9IChzdHJ1Y3QgcGRyX2V4dCAqKSBleHRfcHRyOwotICBQRFIgaW50ZXJuWzFdOwotCi0gIC8qIE1ha2UgaXQgcmVhc29uYWJsZSB0byBkbyBpbi1wbGFjZS4gICovCi0gICppbnRlcm4gPSAqaW50ZXJuX2NvcHk7Ci0KLSAgRUNPRkZfUFVUX09GRiAoYWJmZCwgaW50ZXJuLT5hZHIsICAgICAgICAgIGV4dC0+cF9hZHIpOwotICBIX1BVVF8zMiAgICAgIChhYmZkLCBpbnRlcm4tPmlzeW0sICAgICAgICAgZXh0LT5wX2lzeW0pOwotICBIX1BVVF8zMiAgICAgIChhYmZkLCBpbnRlcm4tPmlsaW5lLCAgICAgICAgZXh0LT5wX2lsaW5lKTsKLSAgSF9QVVRfMzIgICAgICAoYWJmZCwgaW50ZXJuLT5yZWdtYXNrLCAgICAgIGV4dC0+cF9yZWdtYXNrKTsKLSAgSF9QVVRfMzIgICAgICAoYWJmZCwgaW50ZXJuLT5yZWdvZmZzZXQsICAgIGV4dC0+cF9yZWdvZmZzZXQpOwotICBIX1BVVF8zMiAgICAgIChhYmZkLCBpbnRlcm4tPmlvcHQsICAgICAgICAgZXh0LT5wX2lvcHQpOwotICBIX1BVVF8zMiAgICAgIChhYmZkLCBpbnRlcm4tPmZyZWdtYXNrLCAgICAgZXh0LT5wX2ZyZWdtYXNrKTsKLSAgSF9QVVRfMzIgICAgICAoYWJmZCwgaW50ZXJuLT5mcmVnb2Zmc2V0LCAgIGV4dC0+cF9mcmVnb2Zmc2V0KTsKLSAgSF9QVVRfMzIgICAgICAoYWJmZCwgaW50ZXJuLT5mcmFtZW9mZnNldCwgIGV4dC0+cF9mcmFtZW9mZnNldCk7Ci0gIEhfUFVUXzE2ICAgICAgKGFiZmQsIGludGVybi0+ZnJhbWVyZWcsICAgICBleHQtPnBfZnJhbWVyZWcpOwotICBIX1BVVF8xNiAgICAgIChhYmZkLCBpbnRlcm4tPnBjcmVnLCAgICAgICAgZXh0LT5wX3BjcmVnKTsKLSAgSF9QVVRfMzIgICAgICAoYWJmZCwgaW50ZXJuLT5sbkxvdywgICAgICAgIGV4dC0+cF9sbkxvdyk7Ci0gIEhfUFVUXzMyICAgICAgKGFiZmQsIGludGVybi0+bG5IaWdoLCAgICAgICBleHQtPnBfbG5IaWdoKTsKLSAgRUNPRkZfUFVUX09GRiAoYWJmZCwgaW50ZXJuLT5jYkxpbmVPZmZzZXQsIGV4dC0+cF9jYkxpbmVPZmZzZXQpOwotCi0jaWZkZWYgVEVTVAotICBpZiAobWVtY21wICgoY2hhciAqKWV4dCwgKGNoYXIgKilpbnRlcm4sIHNpemVvZiAoKmludGVybikpICE9IDApCi0gICAgYWJvcnQgKCk7Ci0jZW5kaWYKLX0KLSNlbmRpZiAvKiBNUFdfQyAqLwotCiAvKiBTd2FwIGluIGEgc3ltYm9sIHJlY29yZC4gICovCiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9iZmQvZWxmLWJmZC5oIGIvYmZkL2VsZi1iZmQuaAppbmRleCA2YmJhY2FkLi4xMTBkZDY5IDEwMDY0NAotLS0gYS9iZmQvZWxmLWJmZC5oCisrKyBiL2JmZC9lbGYtYmZkLmgKQEAgLTEsNiArMSw2IEBACiAvKiBCRkQgYmFjay1lbmQgZGF0YSBzdHJ1Y3R1cmVzIGZvciBFTEYgZmlsZXMuCiAgICBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLSAgIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgV3JpdHRlbiBieSBDeWdudXMgU3VwcG9ydC4KIAogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgQkZELCB0aGUgQmluYXJ5IEZpbGUgRGVzY3JpcHRvciBsaWJyYXJ5LgpAQCAtNDkyLDYgKzQ5Miw3IEBACiAgIHNpemVfdCBsb2NzeW1jb3VudDsKICAgc2l6ZV90IGV4dHN5bW9mZjsKICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipzeW1faGFzaGVzOworICBpbnQgcl9zeW1fc2hpZnQ7CiAgIGJmZF9ib29sZWFuIGJhZF9zeW10YWI7CiB9OwogCkBAIC02MjUsNyArNjI2LDcgQEAKICAgICAgaW5kaWNlcywgYW5kIG11c3Qgc2V0IGF0IGxlYXN0ICpGTEFHUyBhbmQgKlNFQyBmb3IgZWFjaCBwcm9jZXNzb3IKICAgICAgZGVwZW5kZW50IGNhc2U7IGZhaWx1cmUgdG8gZG8gc28gd2lsbCBjYXVzZSBhIGxpbmsgZXJyb3IuICAqLwogICBiZmRfYm9vbGVhbiAoKmVsZl9hZGRfc3ltYm9sX2hvb2spCi0gICAgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sIGNvbnN0IEVsZl9JbnRlcm5hbF9TeW0gKiwKKyAgICAoYmZkICphYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywgRWxmX0ludGVybmFsX1N5bSAqLAogICAgICBjb25zdCBjaGFyICoqbmFtZSwgZmxhZ3dvcmQgKmZsYWdzLCBhc2VjdGlvbiAqKnNlYywgYmZkX3ZtYSAqdmFsdWUpOwogCiAgIC8qIElmIHRoaXMgZmllbGQgaXMgbm90IE5VTEwsIGl0IGlzIGNhbGxlZCBieSB0aGUgZWxmX2xpbmtfb3V0cHV0X3N5bQpAQCAtODYwLDYgKzg2MSwyNCBAQAogICBiZmRfYm9vbGVhbiAoKmVsZl9iYWNrZW5kX2lnbm9yZV9kaXNjYXJkZWRfcmVsb2NzKQogICAgIChhc2VjdGlvbiAqKTsKIAorICAvKiBUaGVzZSBmdW5jdGlvbnMgdGVsbCBlbGYtZWgtZnJhbWUgd2hldGhlciB0byBhdHRlbXB0IHRvIHR1cm4KKyAgICAgYWJzb2x1dGUgb3IgbHNkYSBlbmNvZGluZ3MgaW50byBwYy1yZWxhdGl2ZSBvbmVzLiAgVGhlIGRlZmF1bHQKKyAgICAgZGVmaW5pdGlvbiBlbmFibGVzIHRoZXNlIHRyYW5zZm9ybWF0aW9ucy4gICovCisgIGJmZF9ib29sZWFuICgqZWxmX2JhY2tlbmRfY2FuX21ha2VfcmVsYXRpdmVfZWhfZnJhbWUpCisgICAgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgYXNlY3Rpb24gKik7CisgIGJmZF9ib29sZWFuICgqZWxmX2JhY2tlbmRfY2FuX21ha2VfbHNkYV9yZWxhdGl2ZV9laF9mcmFtZSkKKyAgICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBhc2VjdGlvbiAqKTsKKworICAvKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gZW5jb2RpbmcgYWZ0ZXIgY29tcHV0aW5nIHRoZSBlbmNvZGVkCisgICAgIHZhbHVlIChhbmQgc3RvcmluZyBpdCBpbiBFTkNPREVEKSBmb3IgdGhlIGdpdmVuIE9GRlNFVCBpbnRvIE9TRUMsCisgICAgIHRvIGJlIHN0b3JlZCBpbiBhdCBMT0NfT0ZGU0VUIGludG8gdGhlIExPQ19TRUMgaW5wdXQgc2VjdGlvbi4KKyAgICAgVGhlIGRlZmF1bHQgZGVmaW5pdGlvbiBjaG9vc2VzIGEgMzItYml0IFBDLXJlbGF0aXZlIGVuY29kaW5nLiAgKi8KKyAgYmZkX2J5dGUgKCplbGZfYmFja2VuZF9lbmNvZGVfZWhfYWRkcmVzcykKKyAgICAgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCisgICAgICBhc2VjdGlvbiAqb3NlYywgYmZkX3ZtYSBvZmZzZXQsCisgICAgICBhc2VjdGlvbiAqbG9jX3NlYywgYmZkX3ZtYSBsb2Nfb2Zmc2V0LAorICAgICAgYmZkX3ZtYSAqZW5jb2RlZCk7CisKICAgLyogVGhpcyBmdW5jdGlvbiwgaWYgZGVmaW5lZCwgbWF5IHdyaXRlIG91dCB0aGUgZ2l2ZW4gc2VjdGlvbi4KICAgICAgUmV0dXJucyBUUlVFIGlmIGl0IGRpZCBzbyBhbmQgRkFMU0UgaWYgdGhlIGNhbGxlciBzaG91bGQuICAqLwogICBiZmRfYm9vbGVhbiAoKmVsZl9iYWNrZW5kX3dyaXRlX3NlY3Rpb24pCkBAIC0xMTE0LDkgKzExMzMsNiBAQAogICBiZmRfdm1hIGdwOwkJCQkvKiBUaGUgZ3AgdmFsdWUgKi8KICAgdW5zaWduZWQgaW50IGdwX3NpemU7CQkJLyogVGhlIGdwIHNpemUgKi8KIAotICBFbGZfSW50ZXJuYWxfU2hkciAqKmdyb3VwX3NlY3RfcHRyOwotICBpbnQgbnVtX2dyb3VwOwotCiAgIC8qIEluZm9ybWF0aW9uIGdyYWJiZWQgZnJvbSBhbiBlbGYgY29yZSBmaWxlLiAgKi8KICAgaW50IGNvcmVfc2lnbmFsOwogICBpbnQgY29yZV9waWQ7CkBAIC0xMTI0LDEwICsxMTQwLDYgQEAKICAgY2hhciogY29yZV9wcm9ncmFtOwogICBjaGFyKiBjb3JlX2NvbW1hbmQ7CiAKLSAgLyogVGhpcyBpcyBzZXQgdG8gVFJVRSBpZiB0aGUgb2JqZWN0IHdhcyBjcmVhdGVkIGJ5IHRoZSBiYWNrZW5kCi0gICAgIGxpbmtlci4gICovCi0gIGJmZF9ib29sZWFuIGxpbmtlcjsKLQogICAvKiBBIG1hcHBpbmcgZnJvbSBleHRlcm5hbCBzeW1ib2xzIHRvIGVudHJpZXMgaW4gdGhlIGxpbmtlciBoYXNoCiAgICAgIHRhYmxlLCB1c2VkIHdoZW4gbGlua2luZy4gIFRoaXMgaXMgaW5kZXhlZCBieSB0aGUgc3ltYm9sIGluZGV4CiAgICAgIG1pbnVzIHRoZSBzaF9pbmZvIGZpZWxkIG9mIHRoZSBzeW1ib2wgdGFibGUgaGVhZGVyLiAgKi8KQEAgLTExNTMsMjEgKzExNjUsNiBAQAogICAgICBvbmUuICAqLwogICBjb25zdCBjaGFyICpkdF9uYW1lOwogCi0gIC8qIFdoZW4gYSByZWZlcmVuY2UgaW4gYSByZWd1bGFyIG9iamVjdCBpcyByZXNvbHZlZCBieSBhIHNoYXJlZAotICAgICBvYmplY3QgaXMgbG9hZGVkIGludG8gdmlhIHRoZSBEVF9ORUVERUQgZW50cmllcyBieSB0aGUgbGlua2VyCi0gICAgIEVMRiBlbXVsYXRpb24gY29kZSwgd2UgbmVlZCB0byBhZGQgdGhlIHNoYXJlZCBvYmplY3QgdG8gdGhlCi0gICAgIERUX05FRURFRCBsaXN0IG9mIHRoZSByZXN1bHRpbmcgYmluYXJ5IHRvIGluZGljYXRlIHRoZSBkZXBlbmRlbmN5Ci0gICAgIGFzIGlmIHRoZSAtbCBvcHRpb24gaXMgcGFzc2VkIHRvIHRoZSBsaW5rZXIuIFRoaXMgZmllbGQgaG9sZHMgdGhlCi0gICAgIG5hbWUgb2YgdGhlIGxvYWRlZCBzaGFyZWQgb2JqZWN0LiAgKi8KLSAgY29uc3QgY2hhciAqZHRfc29uYW1lOwotCi0gIC8qIElyaXggNSBvZnRlbiBzY3Jld3MgdXAgdGhlIHN5bWJvbCB0YWJsZSwgc29ydGluZyBsb2NhbCBzeW1ib2xzCi0gICAgIGFmdGVyIGdsb2JhbCBzeW1ib2xzLiAgVGhpcyBmbGFnIGlzIHNldCBpZiB0aGUgc3ltYm9sIHRhYmxlIGluCi0gICAgIHRoaXMgQkZEIGFwcGVhcnMgdG8gYmUgc2NyZXdlZCB1cC4gIElmIGl0IGlzLCB3ZSBpZ25vcmUgdGhlCi0gICAgIHNoX2luZm8gZmllbGQgaW4gdGhlIHN5bWJvbCB0YWJsZSBoZWFkZXIsIGFuZCBhbHdheXMgcmVhZCBhbGwgdGhlCi0gICAgIHN5bWJvbHMuICAqLwotICBiZmRfYm9vbGVhbiBiYWRfc3ltdGFiOwotCiAgIC8qIFJlY29yZHMgdGhlIHJlc3VsdCBvZiBgZ2V0X3Byb2dyYW1faGVhZGVyX3NpemUnLiAgKi8KICAgYmZkX3NpemVfdHlwZSBwcm9ncmFtX2hlYWRlcl9zaXplOwogCkBAIC0xMTk1LDggKzExOTIsOCBAQAogICAgICBjcmVhdGVkLiAgKi8KICAgYXNlY3Rpb24gKmVoX2ZyYW1lX2hkcjsKIAotICAvKiBVc2VkIHRvIGRldGVybWluZSBpZiB0aGUgZV9mbGFncyBmaWVsZCBoYXMgYmVlbiBpbml0aWFsaXplZCAqLwotICBiZmRfYm9vbGVhbiBmbGFnc19pbml0OworICBFbGZfSW50ZXJuYWxfU2hkciAqKmdyb3VwX3NlY3RfcHRyOworICBpbnQgbnVtX2dyb3VwOwogCiAgIC8qIE51bWJlciBvZiBzeW1ib2wgdmVyc2lvbiBkZWZpbml0aW9ucyB3ZSBhcmUgYWJvdXQgdG8gZW1pdC4gICovCiAgIHVuc2lnbmVkIGludCBjdmVyZGVmczsKQEAgLTEyMTksNiArMTIxNiwyNSBAQAogICBhc3ltYm9sICplbGZfdGV4dF9zeW1ib2w7CiAgIGFzZWN0aW9uICplbGZfZGF0YV9zZWN0aW9uOwogICBhc2VjdGlvbiAqZWxmX3RleHRfc2VjdGlvbjsKKworICAvKiBXaGV0aGVyIGEgZHlhbm1pYyBvYmplY3Qgd2FzIHNwZWNpZmllZCBub3JtYWxseSBvbiB0aGUgbGlua2VyCisgICAgIGNvbW1hbmQgbGluZSwgb3Igd2FzIHNwZWNpZmllZCB3aGVuIC0tYXMtbmVlZGVkIHdhcyBpbiBlZmZlY3QsCisgICAgIG9yIHdhcyBmb3VuZCB2aWEgYSBEVF9ORUVERUQgZW50cnkuICAqLworICBlbnVtIGR5bmFtaWNfbGliX2xpbmtfY2xhc3MgZHluX2xpYl9jbGFzczsKKworICAvKiBUaGlzIGlzIHNldCB0byBUUlVFIGlmIHRoZSBvYmplY3Qgd2FzIGNyZWF0ZWQgYnkgdGhlIGJhY2tlbmQKKyAgICAgbGlua2VyLiAgKi8KKyAgYmZkX2Jvb2xlYW4gbGlua2VyOworCisgIC8qIElyaXggNSBvZnRlbiBzY3Jld3MgdXAgdGhlIHN5bWJvbCB0YWJsZSwgc29ydGluZyBsb2NhbCBzeW1ib2xzCisgICAgIGFmdGVyIGdsb2JhbCBzeW1ib2xzLiAgVGhpcyBmbGFnIGlzIHNldCBpZiB0aGUgc3ltYm9sIHRhYmxlIGluCisgICAgIHRoaXMgQkZEIGFwcGVhcnMgdG8gYmUgc2NyZXdlZCB1cC4gIElmIGl0IGlzLCB3ZSBpZ25vcmUgdGhlCisgICAgIHNoX2luZm8gZmllbGQgaW4gdGhlIHN5bWJvbCB0YWJsZSBoZWFkZXIsIGFuZCBhbHdheXMgcmVhZCBhbGwgdGhlCisgICAgIHN5bWJvbHMuICAqLworICBiZmRfYm9vbGVhbiBiYWRfc3ltdGFiOworCisgIC8qIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBlX2ZsYWdzIGZpZWxkIGhhcyBiZWVuIGluaXRpYWxpemVkICovCisgIGJmZF9ib29sZWFuIGZsYWdzX2luaXQ7CiB9OwogCiAjZGVmaW5lIGVsZl90ZGF0YShiZmQpCQkoKGJmZCkgLT4gdGRhdGEuZWxmX29ial9kYXRhKQpAQCAtMTI0NSw3ICsxMjYxLDcgQEAKICNkZWZpbmUgZWxmX2xvY2FsX2dvdF9vZmZzZXRzKGJmZCkgKGVsZl90ZGF0YShiZmQpIC0+IGxvY2FsX2dvdC5vZmZzZXRzKQogI2RlZmluZSBlbGZfbG9jYWxfZ290X2VudHMoYmZkKSAoZWxmX3RkYXRhKGJmZCkgLT4gbG9jYWxfZ290LmVudHMpCiAjZGVmaW5lIGVsZl9kdF9uYW1lKGJmZCkJKGVsZl90ZGF0YShiZmQpIC0+IGR0X25hbWUpCi0jZGVmaW5lIGVsZl9kdF9zb25hbWUoYmZkKQkoZWxmX3RkYXRhKGJmZCkgLT4gZHRfc29uYW1lKQorI2RlZmluZSBlbGZfZHluX2xpYl9jbGFzcyhiZmQpCShlbGZfdGRhdGEoYmZkKSAtPiBkeW5fbGliX2NsYXNzKQogI2RlZmluZSBlbGZfYmFkX3N5bXRhYihiZmQpCShlbGZfdGRhdGEoYmZkKSAtPiBiYWRfc3ltdGFiKQogI2RlZmluZSBlbGZfZmxhZ3NfaW5pdChiZmQpCShlbGZfdGRhdGEoYmZkKSAtPiBmbGFnc19pbml0KQogDApAQCAtMTI5MywxNCArMTMwOSwxNyBAQAogICBiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uIChhYmZkLCBlbGZfZWxmaGVhZGVyKGFiZmQpLT5lX3Noc3RybmR4LCBcCiAJCQkJICAgc3RyaW5kZXgpCiAKLSNkZWZpbmUgYmZkX2VsZjMyX3ByaW50X3N5bWJvbAliZmRfZWxmX3ByaW50X3N5bWJvbAotI2RlZmluZSBiZmRfZWxmNjRfcHJpbnRfc3ltYm9sCWJmZF9lbGZfcHJpbnRfc3ltYm9sCi0KIGV4dGVybiB2b2lkIF9iZmRfZWxmX3NwcmludGZfdm1hCiAgIChiZmQgKiwgY2hhciAqLCBiZmRfdm1hKTsKIGV4dGVybiB2b2lkIF9iZmRfZWxmX2ZwcmludGZfdm1hCiAgIChiZmQgKiwgdm9pZCAqLCBiZmRfdm1hKTsKIAorZXh0ZXJuIGJmZF9ieXRlIF9iZmRfZWxmX2VuY29kZV9laF9hZGRyZXNzCisgIChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLCBhc2VjdGlvbiAqb3NlYywgYmZkX3ZtYSBvZmZzZXQsCisgICBhc2VjdGlvbiAqbG9jX3NlYywgYmZkX3ZtYSBsb2Nfb2Zmc2V0LCBiZmRfdm1hICplbmNvZGVkKTsKK2V4dGVybiBiZmRfYm9vbGVhbiBfYmZkX2VsZl9jYW5fbWFrZV9yZWxhdGl2ZQorICAoYmZkICppbnB1dF9iZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLCBhc2VjdGlvbiAqZWhfZnJhbWVfc2VjdGlvbik7CisKIGV4dGVybiBlbnVtIGVsZl9yZWxvY190eXBlX2NsYXNzIF9iZmRfZWxmX3JlbG9jX3R5cGVfY2xhc3MKICAgKGNvbnN0IEVsZl9JbnRlcm5hbF9SZWxhICopOwogZXh0ZXJuIGJmZF92bWEgX2JmZF9lbGZfcmVsYV9sb2NhbF9zeW0KQEAgLTE0NTUsMTIgKzE0NzQsMTIgQEAKIGV4dGVybiBiZmRfYm9vbGVhbiBfYmZkX2VsZl9tZXJnZV9zeW1ib2wKICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBjb25zdCBjaGFyICosIEVsZl9JbnRlcm5hbF9TeW0gKiwKICAgIGFzZWN0aW9uICoqLCBiZmRfdm1hICosIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqLCBiZmRfYm9vbGVhbiAqLAotICAgYmZkX2Jvb2xlYW4gKiwgYmZkX2Jvb2xlYW4gKiwgYmZkX2Jvb2xlYW4gKiwgYmZkX2Jvb2xlYW4pOworICAgYmZkX2Jvb2xlYW4gKiwgYmZkX2Jvb2xlYW4gKiwgYmZkX2Jvb2xlYW4gKik7CiAKIGV4dGVybiBiZmRfYm9vbGVhbiBfYmZkX2VsZl9hZGRfZGVmYXVsdF9zeW1ib2wKICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLAogICAgY29uc3QgY2hhciAqLCBFbGZfSW50ZXJuYWxfU3ltICosIGFzZWN0aW9uICoqLCBiZmRfdm1hICosCi0gICBiZmRfYm9vbGVhbiAqLCBiZmRfYm9vbGVhbiwgYmZkX2Jvb2xlYW4pOworICAgYmZkX2Jvb2xlYW4gKiwgYmZkX2Jvb2xlYW4pOwogCiBleHRlcm4gYmZkX2Jvb2xlYW4gX2JmZF9lbGZfZXhwb3J0X3N5bWJvbAogICAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKiwgdm9pZCAqKTsKQEAgLTE0NzEsOCArMTQ5MCw2IEBACiBleHRlcm4gYmZkX2Jvb2xlYW4gX2JmZF9lbGZfbGlua19hc3NpZ25fc3ltX3ZlcnNpb24KICAgKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICosIHZvaWQgKik7CiAKLWV4dGVybiBiZmRfYm9vbGVhbiBfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbAotICAoc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKik7CiBleHRlcm4gbG9uZyBfYmZkX2VsZl9saW5rX2xvb2t1cF9sb2NhbF9keW5pbmR4CiAgIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBiZmQgKiwgbG9uZyk7CiBleHRlcm4gYmZkX2Jvb2xlYW4gX2JmZF9lbGZfY29tcHV0ZV9zZWN0aW9uX2ZpbGVfcG9zaXRpb25zCkBAIC0xNTM0LDExICsxNTUxLDYgQEAKIGV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmMzJfY29yZV9maWxlX21hdGNoZXNfZXhlY3V0YWJsZV9wCiAgIChiZmQgKiwgYmZkICopOwogCi1leHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZjMyX2JmZF9saW5rX2FkZF9zeW1ib2xzCi0gIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7Ci1leHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZjMyX2JmZF9maW5hbF9saW5rCi0gIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7Ci0KIGV4dGVybiB2b2lkIGJmZF9lbGYzMl9zd2FwX3N5bWJvbF9pbgogICAoYmZkICosIGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBFbGZfSW50ZXJuYWxfU3ltICopOwogZXh0ZXJuIHZvaWQgYmZkX2VsZjMyX3N3YXBfc3ltYm9sX291dApAQCAtMTU2OSw4ICsxNTgxLDYgQEAKICAgKGJmZCAqLCBhc2VjdGlvbiAqLCB2b2lkICopOwogZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGYzMl9zbHVycF9yZWxvY190YWJsZQogICAoYmZkICosIGFzZWN0aW9uICosIGFzeW1ib2wgKiosIGJmZF9ib29sZWFuKTsKLWV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkKLSAgKHN0cnVjdCBiZmRfbGlua19pbmZvICosIGJmZF92bWEsIGJmZF92bWEpOwogCiBleHRlcm4gY29uc3QgYmZkX3RhcmdldCAqYmZkX2VsZjY0X29iamVjdF9wCiAgIChiZmQgKik7CkBAIC0xNTgyLDEwICsxNTkyLDYgQEAKICAgKGJmZCAqKTsKIGV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmNjRfY29yZV9maWxlX21hdGNoZXNfZXhlY3V0YWJsZV9wCiAgIChiZmQgKiwgYmZkICopOwotZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGY2NF9iZmRfbGlua19hZGRfc3ltYm9scwotICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwotZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGY2NF9iZmRfZmluYWxfbGluawotICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwogCiBleHRlcm4gdm9pZCBiZmRfZWxmNjRfc3dhcF9zeW1ib2xfaW4KICAgKGJmZCAqLCBjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgRWxmX0ludGVybmFsX1N5bSAqKTsKQEAgLTE2MTcsMjAgKzE2MjMsMTcgQEAKICAgKGJmZCAqLCBhc2VjdGlvbiAqLCB2b2lkICopOwogZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGY2NF9zbHVycF9yZWxvY190YWJsZQogICAoYmZkICosIGFzZWN0aW9uICosIGFzeW1ib2wgKiosIGJmZF9ib29sZWFuKTsKLWV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmNjRfYWRkX2R5bmFtaWNfZW50cnkKKworZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGZfbGlua19hZGRfc3ltYm9scworICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOworZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5CiAgIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBiZmRfdm1hLCBiZmRfdm1hKTsKIAotI2RlZmluZSBiZmRfZWxmMzJfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgXAotICBfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbAotI2RlZmluZSBiZmRfZWxmNjRfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgXAotICBfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbAorZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wKKyAgKHN0cnVjdCBiZmRfbGlua19pbmZvICosIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopOwogCi1leHRlcm4gaW50IGVsZl9saW5rX3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbAorZXh0ZXJuIGludCBiZmRfZWxmX2xpbmtfcmVjb3JkX2xvY2FsX2R5bmFtaWNfc3ltYm9sCiAgIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBiZmQgKiwgbG9uZyk7Ci0jZGVmaW5lIF9iZmRfZWxmMzJfbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wgXAotICBlbGZfbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wKLSNkZWZpbmUgX2JmZF9lbGY2NF9saW5rX3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbCBcCi0gIGVsZl9saW5rX3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbAogCiBleHRlcm4gYmZkX2Jvb2xlYW4gX2JmZF9lbGZfY2xvc2VfYW5kX2NsZWFudXAKICAgKGJmZCAqKTsKQEAgLTE2MzgsMzEgKzE2NDEsMjUgQEAKICAgKGJmZCAqLCBhcmVsZW50ICosIHN0cnVjdCBiZmRfc3ltYm9sICosIHZvaWQgKiwKICAgIGFzZWN0aW9uICosIGJmZCAqLCBjaGFyICoqKTsKIAotZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfZWxmMzJfZ2Nfc2VjdGlvbnMKK2V4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmX2ZpbmFsX2xpbmsKICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKLWV4dGVybiBiZmRfYm9vbGVhbiBfYmZkX2VsZjMyX2djX2NvbW1vbl9maW5hbGl6ZV9nb3Rfb2Zmc2V0cworCitleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZl9nY19zZWN0aW9ucwogICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwotZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfZWxmMzJfZ2NfY29tbW9uX2ZpbmFsX2xpbmsKLSAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKLWV4dGVybiBiZmRfYm9vbGVhbiBfYmZkX2VsZjMyX2djX3JlY29yZF92dGluaGVyaXQKLSAgKGJmZCAqLCBhc2VjdGlvbiAqLCBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCBiZmRfdm1hKTsKLWV4dGVybiBiZmRfYm9vbGVhbiBfYmZkX2VsZjMyX2djX3JlY29yZF92dGVudHJ5CisKK2V4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmX2djX3JlY29yZF92dGluaGVyaXQKICAgKGJmZCAqLCBhc2VjdGlvbiAqLCBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCBiZmRfdm1hKTsKIAotZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfZWxmNjRfZ2Nfc2VjdGlvbnMKLSAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKLWV4dGVybiBiZmRfYm9vbGVhbiBfYmZkX2VsZjY0X2djX2NvbW1vbl9maW5hbGl6ZV9nb3Rfb2Zmc2V0cwotICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwotZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfZWxmNjRfZ2NfY29tbW9uX2ZpbmFsX2xpbmsKLSAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKLWV4dGVybiBiZmRfYm9vbGVhbiBfYmZkX2VsZjY0X2djX3JlY29yZF92dGluaGVyaXQKLSAgKGJmZCAqLCBhc2VjdGlvbiAqLCBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCBiZmRfdm1hKTsKLWV4dGVybiBiZmRfYm9vbGVhbiBfYmZkX2VsZjY0X2djX3JlY29yZF92dGVudHJ5CitleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZl9nY19yZWNvcmRfdnRlbnRyeQogICAoYmZkICosIGFzZWN0aW9uICosIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICosIGJmZF92bWEpOwogCi1leHRlcm4gYmZkX2Jvb2xlYW4gX2JmZF9lbGYzMl9yZWxvY19zeW1ib2xfZGVsZXRlZF9wCi0gIChiZmRfdm1hLCB2b2lkICopOwotZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfZWxmNjRfcmVsb2Nfc3ltYm9sX2RlbGV0ZWRfcAorZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGZfZ2NfY29tbW9uX2ZpbmFsaXplX2dvdF9vZmZzZXRzCisgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CisKK2V4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmX2djX2NvbW1vbl9maW5hbF9saW5rCisgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CisKK2V4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3AKICAgKGJmZF92bWEsIHZvaWQgKik7CiAKIC8qIEV4cG9ydGVkIGludGVyZmFjZSBmb3Igd3JpdGluZyBlbGYgY29yZWZpbGUgbm90ZXMuICovCkBAIC0xNjkzLDYwICsxNjkwLDczIEBACiBleHRlcm4gYmZkX2Jvb2xlYW4gX3NoX2VsZl9zZXRfbWFjaF9mcm9tX2ZsYWdzCiAgIChiZmQgKik7CiAKKy8qIFRoaXMgaXMgdGhlIGNvbmRpdGlvbiB1bmRlciB3aGljaCBmaW5pc2hfZHluYW1pY19zeW1ib2wgd2lsbCBiZSBjYWxsZWQuCisgICBJZiBvdXIgZmluaXNoX2R5bmFtaWNfc3ltYm9sIGlzbid0IGNhbGxlZCwgd2UnbGwgbmVlZCB0byBkbyBzb21ldGhpbmcKKyAgIGFib3V0IGluaXRpYWxpemluZyBhbnkgLnBsdCBhbmQgLmdvdCBlbnRyaWVzIGluIHJlbG9jYXRlX3NlY3Rpb24uICAqLworI2RlZmluZSBXSUxMX0NBTExfRklOSVNIX0RZTkFNSUNfU1lNQk9MKERZTiwgU0hBUkVELCBIKSBcCisgICgoRFlOKQkJCQkJCQkJXAorICAgJiYgKChTSEFSRUQpCQkJCQkJCQlcCisgICAgICAgfHwgKChIKS0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkJXAorICAgJiYgKChIKS0+ZHluaW5keCAhPSAtMQkJCQkJCVwKKyAgICAgICB8fCAoKEgpLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSAhPSAwKSkKKwogLyogVGhpcyBtYWNybyBpcyB0byBhdm9pZCBsb3RzIG9mIGR1cGxpY2F0ZWQgY29kZSBpbiB0aGUgYm9keQogICAgb2YgeHh4X3JlbG9jYXRlX3NlY3Rpb24oKSBpbiB0aGUgdmFyaW91cyBlbGZ4eC14eHh4LmMgZmlsZXMuICAqLwotI2RlZmluZSBSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTChoLCBzeW1faGFzaGVzLCByX3N5bW5keCwgc3ltdGFiX2hkciwgcmVsb2NhdGlvbiwgc2VjLCB1bnJlc29sdmVkX3JlbG9jLCBpbmZvLCB3YXJuZWQpCVwKLSAgZG8JCQkJCQkJCQkJCQkJCQlcCi0gICAgewkJCQkJCQkJCQkJCQkJCVwKLSAgICAgIC8qIEl0IHNlZW1zIHRoaXMgY2FuIGhhcHBlbiB3aXRoIGVycm9uZW91cyBvciB1bnN1cHBvcnRlZAkJCQkJCQkJXAotCSBpbnB1dCAobWl4aW5nIGEub3V0IGFuZCBlbGYgaW4gYW4gYXJjaGl2ZSwgZm9yIGV4YW1wbGUuKSAgKi8JCQkJCQkJXAotICAgICAgaWYgKHN5bV9oYXNoZXMgPT0gTlVMTCkJCQkJCQkJCQkJCQlcCi0JcmV0dXJuIEZBTFNFOwkJCQkJCQkJCQkJCQlcCi0JCQkJCQkJCQkJCQkJCQlcCi0gICAgICBoID0gc3ltX2hhc2hlc1tyX3N5bW5keCAtIHN5bXRhYl9oZHItPnNoX2luZm9dOwkJCQkJCQkJCVwKLQkJCQkJCQkJCQkJCQkJCVwKLSAgICAgIHdoaWxlIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9pbmRpcmVjdAkJCQkJCQkJCVwKLQkgICAgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCQkJCQkJCQkJXAotCWggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsJCQkJCQkJCVwKLQkJCQkJCQkJCQkJCQkJCVwKLSAgICAgIHdhcm5lZCA9IEZBTFNFOwkJCQkJCQkJCQkJCQlcCi0gICAgICB1bnJlc29sdmVkX3JlbG9jID0gRkFMU0U7CQkJCQkJCQkJCQkJXAotICAgICAgcmVsb2NhdGlvbiA9IDA7CQkJCQkJCQkJCQkJCVwKLSAgICAgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCQkJCQkJCQkJCVwKLQkgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZndlYWspCQkJCQkJCQkJXAotCXsJCQkJCQkJCQkJCQkJCVwKLQkgIHNlYyA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsJCQkJCQkJCQkJCVwKLQkgIGlmIChzZWMgPT0gTlVMTAkJCQkJCQkJCQkJCVwKLQkgICAgICB8fCBzZWMtPm91dHB1dF9zZWN0aW9uID09IE5VTEwpCQkJCQkJCQkJCVwKLQkgICAgLyogU2V0IGEgZmxhZyB0aGF0IHdpbGwgYmUgY2xlYXJlZCBsYXRlciBpZiB3ZSBmaW5kIGEJCQkJCQkJXAotCSAgICAgICByZWxvY2F0aW9uIHZhbHVlIGZvciB0aGlzIHN5bWJvbC4gIG91dHB1dF9zZWN0aW9uCQkJCQkJCVwKLQkgICAgICAgaXMgdHlwaWNhbGx5IE5VTEwgZm9yIHN5bWJvbHMgc2F0aXNmaWVkIGJ5IGEgc2hhcmVkCQkJCQkJCVwKLQkgICAgICAgbGlicmFyeS4gICovCQkJCQkJCQkJCQkJXAotCSAgICB1bnJlc29sdmVkX3JlbG9jID0gVFJVRTsJCQkJCQkJCQkJCVwKLQkgIGVsc2UJCQkJCQkJCQkJCQkJCVwKLQkgICAgcmVsb2NhdGlvbiA9IChoLT5yb290LnUuZGVmLnZhbHVlCQkJCQkJCQkJCVwKLQkJCSAgKyBzZWMtPm91dHB1dF9zZWN0aW9uLT52bWEJCQkJCQkJCQlcCi0JCQkgICsgc2VjLT5vdXRwdXRfb2Zmc2V0KTsJCQkJCQkJCQlcCi0JfQkJCQkJCQkJCQkJCQkJXAotICAgICAgZWxzZSBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQkJCQkJCQkJCVwKLQk7CQkJCQkJCQkJCQkJCQlcCi0gICAgICBlbHNlIGlmICghaW5mby0+ZXhlY3V0YWJsZQkJCQkJCQkJCQkJXAotCSAgICAgICAmJiBpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9JR05PUkUJCQkJCQkJCVwKLQkgICAgICAgJiYgRUxGX1NUX1ZJU0lCSUxJVFkgKGgtPm90aGVyKSA9PSBTVFZfREVGQVVMVCkJCQkJCQkJCVwKLQk7CQkJCQkJCQkJCQkJCQlcCi0gICAgICBlbHNlCQkJCQkJCQkJCQkJCQlcCi0JewkJCQkJCQkJCQkJCQkJXAotCSAgaWYgKCEgaW5mby0+Y2FsbGJhY2tzLT51bmRlZmluZWRfc3ltYm9sCQkJCQkJCQkJXAotCSAgICAgIChpbmZvLCBoLT5yb290LnJvb3Quc3RyaW5nLCBpbnB1dF9iZmQsCQkJCQkJCQkJXAotCSAgICAgICBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0LAkJCQkJCQkJCQlcCi0JICAgICAgICgoaW5mby0+c2hhcmVkICYmIGluZm8tPnVucmVzb2x2ZWRfc3ltc19pbl9zaGFyZWRfbGlicyA9PSBSTV9HRU5FUkFURV9FUlJPUikJCQkJXAotCQl8fCAoIWluZm8tPnNoYXJlZCAmJiBpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9HRU5FUkFURV9FUlJPUikJCQkJXAotCQl8fCBFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpKQkJCQkJCQkJCVwKLQkgICAgICAgKSkJCQkJCQkJCQkJCQkJXAotCSAgICByZXR1cm4gRkFMU0U7CQkJCQkJCQkJCQkJXAotCSAgd2FybmVkID0gVFJVRTsJCQkJCQkJCQkJCQlcCi0JfQkJCQkJCQkJCQkJCQkJXAotICAgIH0JCQkJCQkJCQkJCQkJCQlcCisjZGVmaW5lIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAlcCisJCQkJcl9zeW1uZHgsIHN5bXRhYl9oZHIsIHN5bV9oYXNoZXMsCVwKKwkJCQloLCBzZWMsIHJlbG9jYXRpb24sCQkJXAorCQkJCXVucmVzb2x2ZWRfcmVsb2MsIHdhcm5lZCkJCVwKKyAgZG8JCQkJCQkJCQlcCisgICAgewkJCQkJCQkJCVwKKyAgICAgIC8qIEl0IHNlZW1zIHRoaXMgY2FuIGhhcHBlbiB3aXRoIGVycm9uZW91cyBvciB1bnN1cHBvcnRlZAkJXAorCSBpbnB1dCAobWl4aW5nIGEub3V0IGFuZCBlbGYgaW4gYW4gYXJjaGl2ZSwgZm9yIGV4YW1wbGUuKSAgKi8JXAorICAgICAgaWYgKHN5bV9oYXNoZXMgPT0gTlVMTCkJCQkJCQlcCisJcmV0dXJuIEZBTFNFOwkJCQkJCQlcCisJCQkJCQkJCQlcCisgICAgICBoID0gc3ltX2hhc2hlc1tyX3N5bW5keCAtIHN5bXRhYl9oZHItPnNoX2luZm9dOwkJCVwKKwkJCQkJCQkJCVwKKyAgICAgIHdoaWxlIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9pbmRpcmVjdAkJCVwKKwkgICAgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCQkJXAorCWggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsJCVwKKwkJCQkJCQkJCVwKKyAgICAgIHdhcm5lZCA9IEZBTFNFOwkJCQkJCQlcCisgICAgICB1bnJlc29sdmVkX3JlbG9jID0gRkFMU0U7CQkJCQkJXAorICAgICAgcmVsb2NhdGlvbiA9IDA7CQkJCQkJCVwKKyAgICAgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCQkJCVwKKwkgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZndlYWspCQkJXAorCXsJCQkJCQkJCVwKKwkgIHNlYyA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsJCQkJCVwKKwkgIGlmIChzZWMgPT0gTlVMTAkJCQkJCVwKKwkgICAgICB8fCBzZWMtPm91dHB1dF9zZWN0aW9uID09IE5VTEwpCQkJCVwKKwkgICAgLyogU2V0IGEgZmxhZyB0aGF0IHdpbGwgYmUgY2xlYXJlZCBsYXRlciBpZiB3ZSBmaW5kIGEJXAorCSAgICAgICByZWxvY2F0aW9uIHZhbHVlIGZvciB0aGlzIHN5bWJvbC4gIG91dHB1dF9zZWN0aW9uCVwKKwkgICAgICAgaXMgdHlwaWNhbGx5IE5VTEwgZm9yIHN5bWJvbHMgc2F0aXNmaWVkIGJ5IGEgc2hhcmVkCVwKKwkgICAgICAgbGlicmFyeS4gICovCQkJCQkJXAorCSAgICB1bnJlc29sdmVkX3JlbG9jID0gVFJVRTsJCQkJCVwKKwkgIGVsc2UJCQkJCQkJCVwKKwkgICAgcmVsb2NhdGlvbiA9IChoLT5yb290LnUuZGVmLnZhbHVlCQkJCVwKKwkJCSAgKyBzZWMtPm91dHB1dF9zZWN0aW9uLT52bWEJCQlcCisJCQkgICsgc2VjLT5vdXRwdXRfb2Zmc2V0KTsJCQlcCisJfQkJCQkJCQkJXAorICAgICAgZWxzZSBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQkJCVwKKwk7CQkJCQkJCQlcCisgICAgICBlbHNlIGlmIChpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9JR05PUkUJCVwKKwkgICAgICAgJiYgRUxGX1NUX1ZJU0lCSUxJVFkgKGgtPm90aGVyKSA9PSBTVFZfREVGQVVMVCkJCVwKKwk7CQkJCQkJCQlcCisgICAgICBlbHNlCQkJCQkJCQlcCisJewkJCQkJCQkJXAorCSAgYmZkX2Jvb2xlYW4gZXJyOwkJCQkJCVwKKwkgIGVyciA9IChpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9HRU5FUkFURV9FUlJPUglcCisJCSB8fCBFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpICE9IFNUVl9ERUZBVUxUKTsJXAorCSAgaWYgKCFpbmZvLT5jYWxsYmFja3MtPnVuZGVmaW5lZF9zeW1ib2wgKGluZm8sCQkJXAorCQkJCQkJICBoLT5yb290LnJvb3Quc3RyaW5nLAlcCisJCQkJCQkgIGlucHV0X2JmZCwJCVwKKwkJCQkJCSAgaW5wdXRfc2VjdGlvbiwJXAorCQkJCQkJICByZWwtPnJfb2Zmc2V0LCBlcnIpKQlcCisJICAgIHJldHVybiBGQUxTRTsJCQkJCQlcCisJICB3YXJuZWQgPSBUUlVFOwkJCQkJCVwKKwl9CQkJCQkJCQlcCisgICAgfQkJCQkJCQkJCVwKICAgd2hpbGUgKDApCiAKICNlbmRpZiAvKiBfTElCRUxGX0hfICovCmRpZmYgLS1naXQgYS9iZmQvZWxmLWVoLWZyYW1lLmMgYi9iZmQvZWxmLWVoLWZyYW1lLmMKaW5kZXggMjhlMGI1NS4uZDM3NzdiNCAxMDA2NDQKLS0tIGEvYmZkL2VsZi1laC1mcmFtZS5jCisrKyBiL2JmZC9lbGYtZWgtZnJhbWUuYwpAQCAtNTE4LDEwICs1MTgsMTYgQEAKIAkgIC8qIEZvciBzaGFyZWQgbGlicmFyaWVzLCB0cnkgdG8gZ2V0IHJpZCBvZiBhcyBtYW55IFJFTEFUSVZFIHJlbG9jcwogCSAgICAgYXMgcG9zc2libGUuICAqLwogICAgICAgICAgIGlmIChpbmZvLT5zaGFyZWQKKwkgICAgICAmJiAoZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpCisJCSAgLT5lbGZfYmFja2VuZF9jYW5fbWFrZV9yZWxhdGl2ZV9laF9mcmFtZQorCQkgIChhYmZkLCBpbmZvLCBzZWMpKQogCSAgICAgICYmIChjaWUuZmRlX2VuY29kaW5nICYgMHhmMCkgPT0gRFdfRUhfUEVfYWJzcHRyKQogCSAgICBjaWUubWFrZV9yZWxhdGl2ZSA9IDE7CiAKIAkgIGlmIChpbmZvLT5zaGFyZWQKKwkgICAgICAmJiAoZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpCisJCSAgLT5lbGZfYmFja2VuZF9jYW5fbWFrZV9sc2RhX3JlbGF0aXZlX2VoX2ZyYW1lCisJCSAgKGFiZmQsIGluZm8sIHNlYykpCiAJICAgICAgJiYgKGNpZS5sc2RhX2VuY29kaW5nICYgMHhmMCkgPT0gRFdfRUhfUEVfYWJzcHRyKQogCSAgICBjaWUubWFrZV9sc2RhX3JlbGF0aXZlID0gMTsKIApAQCAtMTEyMCw2ICsxMTI2LDcgQEAKICAgYXNlY3Rpb24gKmVoX2ZyYW1lX3NlYzsKICAgYmZkX3NpemVfdHlwZSBzaXplOwogICBiZmRfYm9vbGVhbiByZXR2YWw7CisgIGJmZF92bWEgZW5jb2RlZF9laF9mcmFtZTsKIAogICBodGFiID0gZWxmX2hhc2hfdGFibGUgKGluZm8pOwogICBoZHJfaW5mbyA9ICZodGFiLT5laF9pbmZvOwpAQCAtMTE0Myw3ICsxMTUwLDEwIEBACiAKICAgbWVtc2V0IChjb250ZW50cywgMCwgRUhfRlJBTUVfSERSX1NJWkUpOwogICBjb250ZW50c1swXSA9IDE7CQkJCS8qIFZlcnNpb24uICAqLwotICBjb250ZW50c1sxXSA9IERXX0VIX1BFX3BjcmVsIHwgRFdfRUhfUEVfc2RhdGE0OyAvKiAuZWhfZnJhbWUgb2Zmc2V0LiAgKi8KKyAgY29udGVudHNbMV0gPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCktPmVsZl9iYWNrZW5kX2VuY29kZV9laF9hZGRyZXNzCisgICAgKGFiZmQsIGluZm8sIGVoX2ZyYW1lX3NlYywgMCwgc2VjLCA0LAorICAgICAmZW5jb2RlZF9laF9mcmFtZSk7CQkJLyogLmVoX2ZyYW1lIG9mZnNldC4gICovCisKICAgaWYgKGhkcl9pbmZvLT5hcnJheSAmJiBoZHJfaW5mby0+YXJyYXlfY291bnQgPT0gaGRyX2luZm8tPmZkZV9jb3VudCkKICAgICB7CiAgICAgICBjb250ZW50c1syXSA9IERXX0VIX1BFX3VkYXRhNDsJCS8qIEZERSBjb3VudCBlbmNvZGluZy4gICovCkBAIC0xMTU0LDggKzExNjQsOCBAQAogICAgICAgY29udGVudHNbMl0gPSBEV19FSF9QRV9vbWl0OwogICAgICAgY29udGVudHNbM10gPSBEV19FSF9QRV9vbWl0OwogICAgIH0KLSAgYmZkX3B1dF8zMiAoYWJmZCwgZWhfZnJhbWVfc2VjLT52bWEgLSBzZWMtPm91dHB1dF9zZWN0aW9uLT52bWEgLSA0LAotCSAgICAgIGNvbnRlbnRzICsgNCk7CisgIGJmZF9wdXRfMzIgKGFiZmQsIGVuY29kZWRfZWhfZnJhbWUsIGNvbnRlbnRzICsgNCk7CisKICAgaWYgKGNvbnRlbnRzWzJdICE9IERXX0VIX1BFX29taXQpCiAgICAgewogICAgICAgdW5zaWduZWQgaW50IGk7CkBAIC0xMTgxLDMgKzExOTEsMjkgQEAKICAgZnJlZSAoY29udGVudHMpOwogICByZXR1cm4gcmV0dmFsOwogfQorCisvKiBEZWNpZGUgd2hldGhlciB3ZSBjYW4gdXNlIGEgUEMtcmVsYXRpdmUgZW5jb2Rpbmcgd2l0aGluIHRoZSBnaXZlbgorICAgRUggZnJhbWUgc2VjdGlvbi4gIFRoaXMgaXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uICAqLworCitiZmRfYm9vbGVhbgorX2JmZF9lbGZfY2FuX21ha2VfcmVsYXRpdmUgKGJmZCAqaW5wdXRfYmZkIEFUVFJJQlVURV9VTlVTRUQsCisJCQkgICAgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8gQVRUUklCVVRFX1VOVVNFRCwKKwkJCSAgICBhc2VjdGlvbiAqZWhfZnJhbWVfc2VjdGlvbiBBVFRSSUJVVEVfVU5VU0VEKQoreworICByZXR1cm4gVFJVRTsKK30KKworLyogU2VsZWN0IGFuIGVuY29kaW5nIGZvciB0aGUgZ2l2ZW4gYWRkcmVzcy4gIFByZWZlcmVuY2UgaXMgZ2l2ZW4gdG8KKyAgIFBDLXJlbGF0aXZlIGFkZHJlc3NpbmcgbW9kZXMuICAqLworCitiZmRfYnl0ZQorX2JmZF9lbGZfZW5jb2RlX2VoX2FkZHJlc3MgKGJmZCAqYWJmZCBBVFRSSUJVVEVfVU5VU0VELAorCQkJICAgIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvIEFUVFJJQlVURV9VTlVTRUQsCisJCQkgICAgYXNlY3Rpb24gKm9zZWMsIGJmZF92bWEgb2Zmc2V0LAorCQkJICAgIGFzZWN0aW9uICpsb2Nfc2VjLCBiZmRfdm1hIGxvY19vZmZzZXQsCisJCQkgICAgYmZkX3ZtYSAqZW5jb2RlZCkKK3sKKyAgKmVuY29kZWQgPSBvc2VjLT52bWEgKyBvZmZzZXQgLQorICAgIChsb2Nfc2VjLT5vdXRwdXRfc2VjdGlvbi0+dm1hICsgbG9jX3NlYy0+b3V0cHV0X29mZnNldCArIGxvY19vZmZzZXQpOworICByZXR1cm4gRFdfRUhfUEVfcGNyZWwgfCBEV19FSF9QRV9zZGF0YTQ7Cit9CmRpZmYgLS1naXQgYS9iZmQvZWxmLWhwcGEuaCBiL2JmZC9lbGYtaHBwYS5oCmluZGV4IGE1YzBiNDQuLjFmNzkxNDcgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYtaHBwYS5oCisrKyBiL2JmZC9lbGYtaHBwYS5oCkBAIC0xLDUgKzEsNiBAQAogLyogQ29tbW9uIGNvZGUgZm9yIFBBIEVMRiBpbXBsZW1lbnRhdGlvbnMuCi0gICBDb3B5cmlnaHQgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0CisgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBmaWxlIGlzIHBhcnQgb2YgQkZELCB0aGUgQmluYXJ5IEZpbGUgRGVzY3JpcHRvciBsaWJyYXJ5LgogCkBAIC0zMSw3ICszMiw2IEBACiAjZGVmaW5lIGVsZl9ocHBhX3JlbG9jX2ZpbmFsX3R5cGUgZWxmNjRfaHBwYV9yZWxvY19maW5hbF90eXBlCiAjZGVmaW5lIF9iZmRfZWxmX2hwcGFfZ2VuX3JlbG9jX3R5cGUgX2JmZF9lbGY2NF9ocHBhX2dlbl9yZWxvY190eXBlCiAjZGVmaW5lIGVsZl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24gZWxmNjRfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uCi0jZGVmaW5lIGJmZF9lbGZfYmZkX2ZpbmFsX2xpbmsgYmZkX2VsZjY0X2JmZF9maW5hbF9saW5rCiAjZGVmaW5lIGVsZl9ocHBhX2ZpbmFsX2xpbmsgZWxmNjRfaHBwYV9maW5hbF9saW5rCiAjZW5kaWYKICNpZiBBUkNIX1NJWkUgPT0gMzIKQEAgLTQwLDcgKzQwLDYgQEAKICNkZWZpbmUgZWxmX2hwcGFfcmVsb2NfZmluYWxfdHlwZSBlbGYzMl9ocHBhX3JlbG9jX2ZpbmFsX3R5cGUKICNkZWZpbmUgX2JmZF9lbGZfaHBwYV9nZW5fcmVsb2NfdHlwZSBfYmZkX2VsZjMyX2hwcGFfZ2VuX3JlbG9jX3R5cGUKICNkZWZpbmUgZWxmX2hwcGFfcmVsb2NhdGVfc2VjdGlvbiBlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24KLSNkZWZpbmUgYmZkX2VsZl9iZmRfZmluYWxfbGluayBiZmRfZWxmMzJfYmZkX2ZpbmFsX2xpbmsKICNkZWZpbmUgZWxmX2hwcGFfZmluYWxfbGluayBlbGYzMl9ocHBhX2ZpbmFsX2xpbmsKICNlbmRpZgogCkBAIC04MTIsNiArODExLDI4IEBACiAJICAgIH0KIAkgIGJyZWFrOwogCisJY2FzZSAzMjoKKwkgIHN3aXRjaCAoZmllbGQpCisJICAgIHsKKwkgICAgY2FzZSBlX2ZzZWw6CisJICAgICAgZmluYWxfdHlwZSA9IFJfUEFSSVNDX1BDUkVMMzI7CisJICAgICAgYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJICAgICAgcmV0dXJuIFJfUEFSSVNDX05PTkU7CisJICAgIH0KKwkgIGJyZWFrOworCisJY2FzZSA2NDoKKwkgIHN3aXRjaCAoZmllbGQpCisJICAgIHsKKwkgICAgY2FzZSBlX2ZzZWw6CisJICAgICAgZmluYWxfdHlwZSA9IFJfUEFSSVNDX1BDUkVMNjQ7CisJICAgICAgYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJICAgICAgcmV0dXJuIFJfUEFSSVNDX05PTkU7CisJICAgIH0KKwkgIGJyZWFrOworCiAJZGVmYXVsdDoKIAkgIHJldHVybiBSX1BBUklTQ19OT05FOwogCX0KQEAgLTEwNDgsNyArMTA2OSw3IEBACiBzdGF0aWMgYmZkX2Jvb2xlYW4KIGVsZl9ocHBhX2FkZF9zeW1ib2xfaG9vayAoYmZkICphYmZkLAogCQkJICBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbyBBVFRSSUJVVEVfVU5VU0VELAotCQkJICBjb25zdCBFbGZfSW50ZXJuYWxfU3ltICpzeW0sCisJCQkgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bSwKIAkJCSAgY29uc3QgY2hhciAqKm5hbWVwIEFUVFJJQlVURV9VTlVTRUQsCiAJCQkgIGZsYWd3b3JkICpmbGFnc3AgQVRUUklCVVRFX1VOVVNFRCwKIAkJCSAgYXNlY3Rpb24gKipzZWNwLApAQCAtMTA5Niw4ICsxMTE3LDcgQEAKICAgICAgVWx0aW1hdGVseSB3ZSBzaG91bGQgaGF2ZSBiZXR0ZXIgY29udHJvbHMgb3ZlciB0aGUgZ2VuZXJpYyBFTEYgQkZECiAgICAgIGxpbmtlciBjb2RlLiAgKi8KICAgaWYgKCEgaW5mby0+cmVsb2NhdGFibGUKLSAgICAgICYmICEgKGluZm8tPnNoYXJlZAotCSAgICAmJiBpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fc2hhcmVkX2xpYnMgPT0gUk1fSUdOT1JFKQorICAgICAgJiYgaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX3NoYXJlZF9saWJzICE9IFJNX0lHTk9SRQogICAgICAgJiYgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZpbmVkCiAgICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfUkVGX0RZTkFNSUMpICE9IDAKICAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfSEFTSF9SRUZfUkVHVUxBUikgPT0gMCkKQEAgLTExMzEsOCArMTE1MSw3IEBACiAgICAgIFVsdGltYXRlbHkgd2Ugc2hvdWxkIGhhdmUgYmV0dGVyIGNvbnRyb2xzIG92ZXIgdGhlIGdlbmVyaWMgRUxGIEJGRAogICAgICBsaW5rZXIgY29kZS4gICovCiAgIGlmICghIGluZm8tPnJlbG9jYXRhYmxlCi0gICAgICAmJiAhIChpbmZvLT5zaGFyZWQKLQkgICAgJiYgaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX3NoYXJlZF9saWJzID09IFJNX0lHTk9SRSkKKyAgICAgICYmIGluZm8tPnVucmVzb2x2ZWRfc3ltc19pbl9zaGFyZWRfbGlicyAhPSBSTV9JR05PUkUKICAgICAgICYmIGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmaW5lZAogICAgICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX1JFRl9EWU5BTUlDKSA9PSAwCiAgICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfUkVGX1JFR1VMQVIpID09IDAKQEAgLTEyNzQsNyArMTI5Myw3IEBACiAJCQkgIGluZm8pOwogCiAgIC8qIEludm9rZSB0aGUgcmVndWxhciBFTEYgYmFja2VuZCBsaW5rZXIgdG8gZG8gYWxsIHRoZSB3b3JrLiAgKi8KLSAgcmV0dmFsID0gYmZkX2VsZl9iZmRfZmluYWxfbGluayAoYWJmZCwgaW5mbyk7CisgIHJldHZhbCA9IGJmZF9lbGZfZmluYWxfbGluayAoYWJmZCwgaW5mbyk7CiAKICAgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZSAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAogCQkJICBlbGZfaHBwYV9yZW1hcmtfdXNlbGVzc19keW5hbWljX3N5bWJvbHMsCkBAIC0xMzk4LDE2ICsxNDE3LDkgQEAKIAkgICAgICBlbHNlCiAJCXJlbG9jYXRpb24gPSAwOwogCSAgICB9Ci0JICAvKiBBbGxvdyB1bmRlZmluZWQgc3ltYm9scyBpbiBzaGFyZWQgbGlicmFyaWVzLiAgKi8KLQkgIGVsc2UgaWYgKGluZm8tPnNoYXJlZAotCQkgICAmJiBpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fc2hhcmVkX2xpYnMgPT0gUk1fSUdOT1JFCisJICBlbHNlIGlmIChpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9JR05PUkUKIAkJICAgJiYgRUxGX1NUX1ZJU0lCSUxJVFkgKGgtPm90aGVyKSA9PSBTVFZfREVGQVVMVCkKIAkgICAgewotCSAgICAgIGlmIChpbmZvLT5zeW1ib2xpYykKLQkJKCppbmZvLT5jYWxsYmFja3MtPnVuZGVmaW5lZF9zeW1ib2wpCi0JCSAgKGluZm8sIGgtPnJvb3Qucm9vdC5zdHJpbmcsIGlucHV0X2JmZCwKLQkJICAgaW5wdXRfc2VjdGlvbiwgcmVsLT5yX29mZnNldCwgRkFMU0UpOwotCiAJICAgICAgLyogSWYgdGhpcyBzeW1ib2wgaGFzIGFuIGVudHJ5IGluIHRoZSBQQTY0IGR5bmFtaWMgaGFzaAogCQkgdGFibGUsIHRoZW4gZ2V0IGl0LiAgKi8KIAkgICAgICBkeW5fbmFtZSA9IGdldF9keW5fbmFtZSAoaW5wdXRfYmZkLCBoLCByZWwsCkBAIC0xNDQ5LDcgKzE0NjEsOSBAQAogCQl7CiAJCSAgaWYgKCEoKCppbmZvLT5jYWxsYmFja3MtPnVuZGVmaW5lZF9zeW1ib2wpCiAJCQkoaW5mbywgaC0+cm9vdC5yb290LnN0cmluZywgaW5wdXRfYmZkLAotCQkJIGlucHV0X3NlY3Rpb24sIHJlbC0+cl9vZmZzZXQsIFRSVUUpKSkKKwkJCSBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0LAorCQkJIChpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9HRU5FUkFURV9FUlJPUgorCQkJICB8fCBFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpKSkpKQogCQkgICAgcmV0dXJuIEZBTFNFOwogCQkgIGJyZWFrOwogCQl9CmRpZmYgLS1naXQgYS9iZmQvZWxmLW0xMDIwMC5jIGIvYmZkL2VsZi1tMTAyMDAuYwppbmRleCAxMzNkMmE5Li41MjY4NTI1IDEwMDY0NAotLS0gYS9iZmQvZWxmLW0xMDIwMC5jCisrKyBiL2JmZC9lbGYtbTEwMjAwLmMKQEAgLTEsNSArMSw1IEBACiAvKiBNYXRzdXNoaXRhIDEwMjAwIHNwZWNpZmljIHN1cHBvcnQgZm9yIDMyLWJpdCBFTEYKLSAgIENvcHlyaWdodCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzCisgICBDb3B5cmlnaHQgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNAogICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEJGRCwgdGhlIEJpbmFyeSBGaWxlIERlc2NyaXB0b3IgbGlicmFyeS4KQEAgLTM3NywyOCArMzc3LDEyIEBACiAJfQogICAgICAgZWxzZQogCXsKLQkgIGggPSBzeW1faGFzaGVzW3Jfc3ltbmR4IC0gc3ltdGFiX2hkci0+c2hfaW5mb107Ci0JICB3aGlsZSAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKLQkJIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0JICAgIGggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKLQkgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaykKLQkgICAgewotCSAgICAgIHNlYyA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKLQkgICAgICByZWxvY2F0aW9uID0gKGgtPnJvb3QudS5kZWYudmFsdWUKLQkJCSAgICArIHNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYQotCQkJICAgICsgc2VjLT5vdXRwdXRfb2Zmc2V0KTsKLQkgICAgfQotCSAgZWxzZSBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQotCSAgICByZWxvY2F0aW9uID0gMDsKLQkgIGVsc2UKLQkgICAgewotCSAgICAgIGlmICghICgoKmluZm8tPmNhbGxiYWNrcy0+dW5kZWZpbmVkX3N5bWJvbCkKLQkJICAgICAoaW5mbywgaC0+cm9vdC5yb290LnN0cmluZywgaW5wdXRfYmZkLAotCQkgICAgICBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0LCBUUlVFKSkpCi0JCXJldHVybiBGQUxTRTsKLQkgICAgICByZWxvY2F0aW9uID0gMDsKLQkgICAgfQorCSAgYmZkX2Jvb2xlYW4gdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkOworCisJICBSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCAoaW5mbywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLCByZWwsCisJCQkJICAgcl9zeW1uZHgsIHN5bXRhYl9oZHIsIHN5bV9oYXNoZXMsCisJCQkJICAgaCwgc2VjLCByZWxvY2F0aW9uLAorCQkJCSAgIHVucmVzb2x2ZWRfcmVsb2MsIHdhcm5lZCk7CiAJfQogCiAgICAgICByID0gbW4xMDIwMF9lbGZfZmluYWxfbGlua19yZWxvY2F0ZSAoaG93dG8sIGlucHV0X2JmZCwgb3V0cHV0X2JmZCwKZGlmZiAtLWdpdCBhL2JmZC9lbGYtbTEwMzAwLmMgYi9iZmQvZWxmLW0xMDMwMC5jCmluZGV4IGY2MjhlNzYuLmM2NGQzNGYgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYtbTEwMzAwLmMKKysrIGIvYmZkL2VsZi1tMTAzMDAuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIE1hdHN1c2hpdGEgMTAzMDAgc3BlY2lmaWMgc3VwcG9ydCBmb3IgMzItYml0IEVMRgotICAgQ29weXJpZ2h0IDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMKKyAgIENvcHlyaWdodCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0CiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBmaWxlIGlzIHBhcnQgb2YgQkZELCB0aGUgQmluYXJ5IEZpbGUgRGVzY3JpcHRvciBsaWJyYXJ5LgpAQCAtNjE2LDcgKzYxNiw3IEBACiAgICAgICBoLT50eXBlID0gU1RUX09CSkVDVDsKIAogICAgICAgaWYgKGluZm8tPnNoYXJlZAotCSAgJiYgISBfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICAmJiAhIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCXJldHVybiBGQUxTRTsKICAgICB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQAogICBoLT50eXBlID0gU1RUX09CSkVDVDsKIAogICBpZiAoaW5mby0+c2hhcmVkCi0gICAgICAmJiAhIF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKyAgICAgICYmICEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAgICAgcmV0dXJuIEZBTFNFOwogCiAgIGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+aGdvdCA9IGg7CkBAIC03NzAsMTQgKzc3MCwxNCBAQAogCS8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgdGhlIEMrKyBvYmplY3QgdnRhYmxlIGhpZXJhcmNoeS4KIAkgICBSZWNvbnN0cnVjdCBpdCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSX01OMTAzMDBfR05VX1ZUSU5IRVJJVDoKLQkgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQorCSAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAkgIGJyZWFrOwogCiAJLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB3aGljaCBDKysgdnRhYmxlIGVudHJpZXMgYXJlIGFjdHVhbGx5CiAJICAgdXNlZC4gIFJlY29yZCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSX01OMTAzMDBfR05VX1ZURU5UUlk6Ci0JICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCisJICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAkgIGJyZWFrOwogCWNhc2UgUl9NTjEwMzAwX0dPVDMyOgpAQCAtODIyLDcgKzgyMiw3IEBACiAJICAgICAgLyogTWFrZSBzdXJlIHRoaXMgc3ltYm9sIGlzIG91dHB1dCBhcyBhIGR5bmFtaWMgc3ltYm9sLiAgKi8KIAkgICAgICBpZiAoaC0+ZHluaW5keCA9PSAtMSkKIAkJewotCQkgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJCSAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJCSAgICByZXR1cm4gRkFMU0U7CiAJCX0KIApAQCAtMTUzNywxNSArMTUzNywxNCBAQAogICAgICBhc2VjdGlvbiAqKmxvY2FsX3NlY3Rpb25zOwogewogICBFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFiX2hkcjsKLSAgc3RydWN0IGVsZjMyX21uMTAzMDBfbGlua19oYXNoX2VudHJ5ICoqc3ltX2hhc2hlczsKKyAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipzeW1faGFzaGVzOwogICBFbGZfSW50ZXJuYWxfUmVsYSAqcmVsLCAqcmVsZW5kOwogCiAgIGlmIChpbmZvLT5yZWxvY2F0YWJsZSkKICAgICByZXR1cm4gVFJVRTsKIAogICBzeW10YWJfaGRyID0gJmVsZl90ZGF0YSAoaW5wdXRfYmZkKS0+c3ltdGFiX2hkcjsKLSAgc3ltX2hhc2hlcyA9IChzdHJ1Y3QgZWxmMzJfbW4xMDMwMF9saW5rX2hhc2hfZW50cnkgKiopCi0JCSAoZWxmX3N5bV9oYXNoZXMgKGlucHV0X2JmZCkpOworICBzeW1faGFzaGVzID0gZWxmX3N5bV9oYXNoZXMgKGlucHV0X2JmZCk7CiAKICAgcmVsID0gcmVsb2NzOwogICByZWxlbmQgPSByZWxvY3MgKyBpbnB1dF9zZWN0aW9uLT5yZWxvY19jb3VudDsKQEAgLTE1ODQsMTAgKzE1ODMsMTAgQEAKIAkgIGJmZF9ib29sZWFuIHdhcm5lZDsKIAkgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoaDsKIAotCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGhoLCAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgc3ltX2hhc2hlcywKLQkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgcmVsb2NhdGlvbiwKLQkJCQkgICBzZWMsIHVucmVzb2x2ZWRfcmVsb2MsIGluZm8sCi0JCQkJICAgd2FybmVkKTsKKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoaCwgc2VjLCByZWxvY2F0aW9uLAorCQkJCSAgIHVucmVzb2x2ZWRfcmVsb2MsIHdhcm5lZCk7CiAKIAkgIGggPSAoc3RydWN0IGVsZjMyX21uMTAzMDBfbGlua19oYXNoX2VudHJ5ICopIGhoOwogCkBAIC00MTg3LDcgKzQxODYsNyBAQAogICAgICAgLyogTWFrZSBzdXJlIHRoaXMgc3ltYm9sIGlzIG91dHB1dCBhcyBhIGR5bmFtaWMgc3ltYm9sLiAgKi8KICAgICAgIGlmIChoLT5keW5pbmR4ID09IC0xKQogCXsKLQkgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIApAQCAtNDQ5MiwzMSArNDQ5MSwzMSBAQAogCSBpbiBieSB0aGUgZHluYW1pYyBsaW5rZXIgYW5kIHVzZWQgYnkgdGhlIGRlYnVnZ2VyLiAgKi8KICAgICAgIGlmICghIGluZm8tPnNoYXJlZCkKIAl7Ci0JICBpZiAoISBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0RFQlVHLCAwKSkKKwkgIGlmICghX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0RFQlVHLCAwKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIAogICAgICAgaWYgKHBsdCkKIAl7Ci0JICBpZiAoISBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1BMVEdPVCwgMCkKLQkgICAgICB8fCAhIGJmZF9lbGYzMl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfUExUUkVMU1osIDApCi0JICAgICAgfHwgISBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1BMVFJFTCwgRFRfUkVMQSkKLQkgICAgICB8fCAhIGJmZF9lbGYzMl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfSk1QUkVMLCAwKSkKKwkgIGlmICghX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1BMVEdPVCwgMCkKKwkgICAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1BMVFJFTFNaLCAwKQorCSAgICAgIHx8ICFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfUExUUkVMLCBEVF9SRUxBKQorCSAgICAgIHx8ICFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfSk1QUkVMLCAwKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIAogICAgICAgaWYgKHJlbG9jcykKIAl7Ci0JICBpZiAoISBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1JFTEEsIDApCi0JICAgICAgfHwgISBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1JFTEFTWiwgMCkKLQkgICAgICB8fCAhIGJmZF9lbGYzMl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfUkVMQUVOVCwKLQkJCQkJCXNpemVvZiAoRWxmMzJfRXh0ZXJuYWxfUmVsYSkpKQorCSAgaWYgKCFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfUkVMQSwgMCkKKwkgICAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1JFTEFTWiwgMCkKKwkgICAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1JFTEFFTlQsCisJCQkJCSAgICAgIHNpemVvZiAoRWxmMzJfRXh0ZXJuYWxfUmVsYSkpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogCiAgICAgICBpZiAocmVsdGV4dCkKIAl7Ci0JICBpZiAoISBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1RFWFRSRUwsIDApKQorCSAgaWYgKCFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfVEVYVFJFTCwgMCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAgICAgfQpkaWZmIC0tZ2l0IGEvYmZkL2VsZi5jIGIvYmZkL2VsZi5jCmluZGV4IDMzYjU4ZjUuLjJmY2ZhOTggMTAwNjQ0Ci0tLSBhL2JmZC9lbGYuYworKysgYi9iZmQvZWxmLmMKQEAgLTE0NzksOCArMTQ3OSw3IEBACiAKIC8qIFRoaXMgaXMgYSBob29rIGZvciB0aGUgRUxGIGVtdWxhdGlvbiBjb2RlIGluIHRoZSBnZW5lcmljIGxpbmtlciB0bwogICAgdGVsbCB0aGUgYmFja2VuZCBsaW5rZXIgd2hhdCBmaWxlIG5hbWUgdG8gdXNlIGZvciB0aGUgRFRfTkVFREVECi0gICBlbnRyeSBmb3IgYSBkeW5hbWljIG9iamVjdC4gIFRoZSBnZW5lcmljIGxpbmtlciBwYXNzZXMgbmFtZSBhcyBhbgotICAgZW1wdHkgc3RyaW5nIHRvIGluZGljYXRlIHRoYXQgbm8gRFRfTkVFREVEIGVudHJ5IHNob3VsZCBiZSBtYWRlLiAgKi8KKyAgIGVudHJ5IGZvciBhIGR5bmFtaWMgb2JqZWN0LiAgKi8KIAogdm9pZAogYmZkX2VsZl9zZXRfZHRfbmVlZGVkX25hbWUgKGJmZCAqYWJmZCwgY29uc3QgY2hhciAqbmFtZSkKQEAgLTE0OTEsMTEgKzE0OTAsMTEgQEAKIH0KIAogdm9pZAotYmZkX2VsZl9zZXRfZHRfbmVlZGVkX3NvbmFtZSAoYmZkICphYmZkLCBjb25zdCBjaGFyICpuYW1lKQorYmZkX2VsZl9zZXRfZHluX2xpYl9jbGFzcyAoYmZkICphYmZkLCBpbnQgbGliX2NsYXNzKQogewogICBpZiAoYmZkX2dldF9mbGF2b3VyIChhYmZkKSA9PSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyCiAgICAgICAmJiBiZmRfZ2V0X2Zvcm1hdCAoYWJmZCkgPT0gYmZkX29iamVjdCkKLSAgICBlbGZfZHRfc29uYW1lIChhYmZkKSA9IG5hbWU7CisgICAgZWxmX2R5bl9saWJfY2xhc3MgKGFiZmQpID0gbGliX2NsYXNzOwogfQogCiAvKiBHZXQgdGhlIGxpc3Qgb2YgRFRfTkVFREVEIGVudHJpZXMgZm9yIGEgbGluay4gIFRoaXMgaXMgYSBob29rIGZvcgpAQCAtMzE4Nyw2ICszMTg2LDcgQEAKICAgc3RydWN0IGVsZl9zZWdtZW50X21hcCAqKnBtOwogICBzdHJ1Y3QgZWxmX3NlZ21lbnRfbWFwICptOwogICBhc2VjdGlvbiAqbGFzdF9oZHI7CisgIGJmZF92bWEgbGFzdF9zaXplOwogICB1bnNpZ25lZCBpbnQgcGhkcl9pbmRleDsKICAgYmZkX3ZtYSBtYXhwYWdlc2l6ZTsKICAgYXNlY3Rpb24gKipoZHJwcDsKQEAgLTMyNjYsNiArMzI2Niw3IEBACiAgICAgIHNlZ21lbnQgd2hlbiB0aGUgc3RhcnQgb2YgdGhlIHNlY29uZCBzZWN0aW9uIGNhbiBiZSBwbGFjZWQgd2l0aGluCiAgICAgIGEgZmV3IGJ5dGVzIG9mIHRoZSBlbmQgb2YgdGhlIGZpcnN0IHNlY3Rpb24uICAqLwogICBsYXN0X2hkciA9IE5VTEw7CisgIGxhc3Rfc2l6ZSA9IDA7CiAgIHBoZHJfaW5kZXggPSAwOwogICBtYXhwYWdlc2l6ZSA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChhYmZkKS0+bWF4cGFnZXNpemU7CiAgIHdyaXRhYmxlID0gRkFMU0U7CkBAIC0zMzE0LDE4ICszMzE1LDE5IEBACiAgICAgICAgICAgICAgc2VnbWVudC4gICovCiAJICBuZXdfc2VnbWVudCA9IFRSVUU7CiAJfQotICAgICAgZWxzZSBpZiAoQkZEX0FMSUdOIChsYXN0X2hkci0+bG1hICsgbGFzdF9oZHItPl9yYXdfc2l6ZSwgbWF4cGFnZXNpemUpCisgICAgICBlbHNlIGlmIChCRkRfQUxJR04gKGxhc3RfaGRyLT5sbWEgKyBsYXN0X3NpemUsIG1heHBhZ2VzaXplKQogCSAgICAgICA8IEJGRF9BTElHTiAoaGRyLT5sbWEsIG1heHBhZ2VzaXplKSkKIAl7CiAJICAvKiBJZiBwdXR0aW5nIHRoaXMgc2VjdGlvbiBpbiB0aGlzIHNlZ21lbnQgd291bGQgZm9yY2UgdXMgdG8KICAgICAgICAgICAgICBza2lwIGEgcGFnZSBpbiB0aGUgc2VnbWVudCwgdGhlbiB3ZSBuZWVkIGEgbmV3IHNlZ21lbnQuICAqLwogCSAgbmV3X3NlZ21lbnQgPSBUUlVFOwogCX0KLSAgICAgIGVsc2UgaWYgKChsYXN0X2hkci0+ZmxhZ3MgJiBTRUNfTE9BRCkgPT0gMAotCSAgICAgICAmJiAoaGRyLT5mbGFncyAmIFNFQ19MT0FEKSAhPSAwKQorICAgICAgZWxzZSBpZiAoKGxhc3RfaGRyLT5mbGFncyAmIChTRUNfTE9BRCB8IFNFQ19USFJFQURfTE9DQUwpKSA9PSAwCisJICAgICAgICYmIChoZHItPmZsYWdzICYgKFNFQ19MT0FEIHwgU0VDX1RIUkVBRF9MT0NBTCkpICE9IDApCiAJewogCSAgLyogV2UgZG9uJ3Qgd2FudCB0byBwdXQgYSBsb2FkYWJsZSBzZWN0aW9uIGFmdGVyIGEKLSAgICAgICAgICAgICBub25sb2FkYWJsZSBzZWN0aW9uIGluIHRoZSBzYW1lIHNlZ21lbnQuICAqLworICAgICAgICAgICAgIG5vbmxvYWRhYmxlIHNlY3Rpb24gaW4gdGhlIHNhbWUgc2VnbWVudC4KKyAgICAgICAgICAgICBDb25zaWRlciAudGJzcyBzZWN0aW9ucyBhcyBsb2FkYWJsZSBmb3IgdGhpcyBwdXJwb3NlLiAgKi8KIAkgIG5ld19zZWdtZW50ID0gVFJVRTsKIAl9CiAgICAgICBlbHNlIGlmICgoYWJmZC0+ZmxhZ3MgJiBEX1BBR0VEKSA9PSAwKQpAQCAtMzMzNyw3ICszMzM5LDcgQEAKIAl9CiAgICAgICBlbHNlIGlmICghIHdyaXRhYmxlCiAJICAgICAgICYmIChoZHItPmZsYWdzICYgU0VDX1JFQURPTkxZKSA9PSAwCi0JICAgICAgICYmICgoKGxhc3RfaGRyLT5sbWEgKyBsYXN0X2hkci0+X3Jhd19zaXplIC0gMSkKKwkgICAgICAgJiYgKCgobGFzdF9oZHItPmxtYSArIGxhc3Rfc2l6ZSAtIDEpCiAJCSAgICAmIH4obWF4cGFnZXNpemUgLSAxKSkKIAkJICAgIT0gKGhkci0+bG1hICYgfihtYXhwYWdlc2l6ZSAtIDEpKSkpCiAJewpAQCAtMzM2MCw5ICszMzYyLDEyIEBACiAJewogCSAgaWYgKChoZHItPmZsYWdzICYgU0VDX1JFQURPTkxZKSA9PSAwKQogCSAgICB3cml0YWJsZSA9IFRSVUU7Ci0JICAvKiBJZ25vcmUgLnRic3Mgc2VjdGlvbiBmb3Igc2VnbWVudCBsYXlvdXQgcHVycG9zZXMuICAqLworCSAgbGFzdF9oZHIgPSBoZHI7CisJICAvKiAudGJzcyBzZWN0aW9ucyBlZmZlY3RpdmVseSBoYXZlIHplcm8gc2l6ZS4gICovCiAJICBpZiAoKGhkci0+ZmxhZ3MgJiAoU0VDX1RIUkVBRF9MT0NBTCB8IFNFQ19MT0FEKSkgIT0gU0VDX1RIUkVBRF9MT0NBTCkKLQkgICAgbGFzdF9oZHIgPSBoZHI7CisJICAgIGxhc3Rfc2l6ZSA9IGhkci0+X3Jhd19zaXplOworCSAgZWxzZQorCSAgICBsYXN0X3NpemUgPSAwOwogCSAgY29udGludWU7CiAJfQogCkBAIC0zMzgyLDYgKzMzODcsMTEgQEAKIAl3cml0YWJsZSA9IEZBTFNFOwogCiAgICAgICBsYXN0X2hkciA9IGhkcjsKKyAgICAgIC8qIC50YnNzIHNlY3Rpb25zIGVmZmVjdGl2ZWx5IGhhdmUgemVybyBzaXplLiAgKi8KKyAgICAgIGlmICgoaGRyLT5mbGFncyAmIChTRUNfVEhSRUFEX0xPQ0FMIHwgU0VDX0xPQUQpKSAhPSBTRUNfVEhSRUFEX0xPQ0FMKQorCWxhc3Rfc2l6ZSA9IGhkci0+X3Jhd19zaXplOworICAgICAgZWxzZQorCWxhc3Rfc2l6ZSA9IDA7CiAgICAgICBwaGRyX2luZGV4ID0gaTsKICAgICAgIHBoZHJfaW5fc2VnbWVudCA9IEZBTFNFOwogICAgIH0KZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1hcm0uaCBiL2JmZC9lbGYzMi1hcm0uaAppbmRleCA3YzI4NGMxLi4zOTg2NGQ0IDEwMDY0NAotLS0gYS9iZmQvZWxmMzItYXJtLmgKKysrIGIvYmZkL2VsZjMyLWFybS5oCkBAIC0xLDUgKzEsNiBAQAogLyogMzItYml0IEVMRiBzdXBwb3J0IGZvciBBUk0KLSAgIENvcHlyaWdodCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCiAKQEAgLTEwNSw3ICsxMDYsNyBAQAogYmZkX2Jvb2xlYW4gYmZkX2VsZjMyX2FybV9nZXRfYmZkX2Zvcl9pbnRlcndvcmtpbmcKICAgUEFSQU1TICgoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopKTsKIGJmZF9ib29sZWFuIGJmZF9lbGYzMl9hcm1fcHJvY2Vzc19iZWZvcmVfYWxsb2NhdGlvbgotICBQQVJBTVMgKChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgaW50KSk7CisgIFBBUkFNUyAoKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBpbnQsIGludCkpOwogI2VuZGlmCiAKIApAQCAtMTg5LDYgKzE5MCwyNiBAQAogCiAjZW5kaWYKIAorLyogVXNlZCB0byBidWlsZCBhIG1hcCBvZiBhIHNlY3Rpb24uICBUaGlzIGlzIHJlcXVpcmVkIGZvciBtaXhlZC1lbmRpYW4KKyAgIGNvZGUvZGF0YS4gICovCisKK3R5cGVkZWYgc3RydWN0IGVsZjMyX2VsZl9zZWN0aW9uX21hcAoreworICBiZmRfdm1hIHZtYTsKKyAgY2hhciB0eXBlOworfQorZWxmMzJfYXJtX3NlY3Rpb25fbWFwOworCitzdHJ1Y3QgX2FybV9lbGZfc2VjdGlvbl9kYXRhCit7CisgIHN0cnVjdCBiZmRfZWxmX3NlY3Rpb25fZGF0YSBlbGY7CisgIGludCBtYXBjb3VudDsKKyAgZWxmMzJfYXJtX3NlY3Rpb25fbWFwICptYXA7Cit9OworCisjZGVmaW5lIGVsZjMyX2FybV9zZWN0aW9uX2RhdGEoc2VjKSBcCisgICgoc3RydWN0IF9hcm1fZWxmX3NlY3Rpb25fZGF0YSAqKSBlbGZfc2VjdGlvbl9kYXRhIChzZWMpKQorCiAvKiBUaGUgQVJNIGxpbmtlciBuZWVkcyB0byBrZWVwIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgcmVsb2NzIHRoYXQgaXQKICAgIGRlY2lkZXMgdG8gY29weSBpbiBjaGVja19yZWxvY3MgZm9yIGVhY2ggc3ltYm9sLiAgVGhpcyBpcyBzbyB0aGF0CiAgICBpdCBjYW4gZGlzY2FyZCBQQyByZWxhdGl2ZSByZWxvY3MgaWYgaXQgZG9lc24ndCBuZWVkIHRoZW0gd2hlbgpAQCAtMjQ2LDYgKzI2Nyw5IEBACiAgICAgICAgbGVuZ3RoIHNob3VsZCBiZSBhcHBsaWVkIGJ5IHRoZSBsaW5rZXIuICAqLwogICAgIGludCBub19waXBlbGluZV9rbm93bGVkZ2U7CiAKKyAgICAvKiBOb256ZXJvIHRvIG91dHB1dCBhIEJFOCBpbWFnZS4gICovCisgICAgaW50IGJ5dGVzd2FwX2NvZGU7CisKICAgICAvKiBTaG9ydC1jdXRzIHRvIGdldCB0byBkeW5hbWljIGxpbmtlciBzZWN0aW9ucy4gICovCiAgICAgYXNlY3Rpb24gKnNnb3Q7CiAgICAgYXNlY3Rpb24gKnNnb3RwbHQ7CkBAIC00MjksNiArNDUzLDcgQEAKICAgcmV0LT5hcm1fZ2x1ZV9zaXplID0gMDsKICAgcmV0LT5iZmRfb2ZfZ2x1ZV9vd25lciA9IE5VTEw7CiAgIHJldC0+bm9fcGlwZWxpbmVfa25vd2xlZGdlID0gMDsKKyAgcmV0LT5ieXRlc3dhcF9jb2RlID0gMDsKICAgcmV0LT5zeW1fc2VjLmFiZmQgPSBOVUxMOwogCiAgIHJldHVybiAmcmV0LT5yb290LnJvb3Q7CkBAIC04MDcsMTAgKzgzMiwxMyBAQAogfQogCiBiZmRfYm9vbGVhbgotYmZkX2VsZjMyX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uIChhYmZkLCBsaW5rX2luZm8sIG5vX3BpcGVsaW5lX2tub3dsZWRnZSkKK2JmZF9lbGYzMl9hcm1fcHJvY2Vzc19iZWZvcmVfYWxsb2NhdGlvbiAoYWJmZCwgbGlua19pbmZvLAorCQkJCQkgbm9fcGlwZWxpbmVfa25vd2xlZGdlLAorCQkJCQkgYnl0ZXN3YXBfY29kZSkKICAgICAgYmZkICphYmZkOwogICAgICBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqbGlua19pbmZvOwogICAgICBpbnQgbm9fcGlwZWxpbmVfa25vd2xlZGdlOworICAgICBpbnQgYnl0ZXN3YXBfY29kZTsKIHsKICAgRWxmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9oZHI7CiAgIEVsZl9JbnRlcm5hbF9SZWxhICppbnRlcm5hbF9yZWxvY3MgPSBOVUxMOwpAQCAtODMzLDYgKzg2MSwxNCBAQAogICBCRkRfQVNTRVJUIChnbG9iYWxzLT5iZmRfb2ZfZ2x1ZV9vd25lciAhPSBOVUxMKTsKIAogICBnbG9iYWxzLT5ub19waXBlbGluZV9rbm93bGVkZ2UgPSBub19waXBlbGluZV9rbm93bGVkZ2U7CisgIGlmIChieXRlc3dhcF9jb2RlICYmICFiZmRfYmlnX2VuZGlhbiAoYWJmZCkpCisgICAgeworICAgICAgX2JmZF9lcnJvcl9oYW5kbGVyICgKKwkgIF8oIiVzOiBCRTggaW1hZ2VzIG9ubHkgdmFsaWQgaW4gYmlnLWVuZGlhbiBtb2RlLiIpLAorCSAgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKGFiZmQpKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIGdsb2JhbHMtPmJ5dGVzd2FwX2NvZGUgPSBieXRlc3dhcF9jb2RlOwogCiAgIC8qIFJ1bW1hZ2UgYXJvdW5kIGFsbCB0aGUgcmVsb2NzIGFuZCBtYXAgdGhlIGdsdWUgdmVjdG9ycy4gICovCiAgIHNlYyA9IGFiZmQtPnNlY3Rpb25zOwpAQCAtMTIwOCwxOCArMTI0NCw2IEBACiAgIHJldHVybiBUUlVFOwogfQogCi0vKiBUaGlzIGlzIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggZWxmMzJfYXJtX2ZpbmlzaF9keW5hbWljX3N5bWJvbAotICAgd2lsbCBiZSBjYWxsZWQgZnJvbSBlbGZsaW5rLmguICBJZiBlbGZsaW5rLmggZG9lc24ndCBjYWxsIG91cgotICAgZmluaXNoX2R5bmFtaWNfc3ltYm9sIHJvdXRpbmUsIHdlJ2xsIG5lZWQgdG8gZG8gc29tZXRoaW5nIGFib3V0Ci0gICBpbml0aWFsaXppbmcgYW55IC5wbHQgYW5kIC5nb3QgZW50cmllcyBpbiBlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbgotICAgYW5kIGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlLiAgKi8KLSNkZWZpbmUgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTChEWU4sIFNIQVJFRCwgSCkJCQlcCi0gICgoRFlOKQkJCQkJCQkJXAotICAgJiYgKChTSEFSRUQpCQkJCQkJCSAJXAotICAgICAgIHx8ICgoSCktPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCVwKLSAgICYmICgoSCktPmR5bmluZHggIT0gLTEJCQkJCQlcCi0gICAgICAgfHwgKChIKS0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgIT0gMCkpCi0KIC8qIFBlcmZvcm0gYSByZWxvY2F0aW9uIGFzIHBhcnQgb2YgYSBmaW5hbCBsaW5rLiAgKi8KIAogc3RhdGljIGJmZF9yZWxvY19zdGF0dXNfdHlwZQpAQCAtMTc0Myw2ICsxNzY3LDMzIEBACiAJcmV0dXJuIGJmZF9yZWxvY19vazsKICAgICAgIH0KIAorI2lmbmRlZiBPTERfQVJNX0FCSQorICAgIGNhc2UgUl9BUk1fQUxVX1BDUkVMN18wOgorICAgIGNhc2UgUl9BUk1fQUxVX1BDUkVMMTVfODoKKyAgICBjYXNlIFJfQVJNX0FMVV9QQ1JFTDIzXzE1OgorICAgICAgeworCWJmZF92bWEgaW5zbjsKKwliZmRfdm1hIHJlbG9jYXRpb247CisKKwlpbnNuID0gYmZkX2dldF8zMiAoaW5wdXRfYmZkLCBoaXRfZGF0YSk7CisjaWYgVVNFX1JFTAorCS8qIEV4dHJhY3QgdGhlIGFkZGVuZC4gICovCisJYWRkZW5kID0gKGluc24gJiAweGZmKSA8PCAoKGluc24gJiAweGYwMCkgPj4gNyk7CisJc2lnbmVkX2FkZGVuZCA9IGFkZGVuZDsKKyNlbmRpZgorCXJlbG9jYXRpb24gPSB2YWx1ZSArIHNpZ25lZF9hZGRlbmQ7CisKKwlyZWxvY2F0aW9uIC09IChpbnB1dF9zZWN0aW9uLT5vdXRwdXRfc2VjdGlvbi0+dm1hCisJCSAgICAgICArIGlucHV0X3NlY3Rpb24tPm91dHB1dF9vZmZzZXQKKwkJICAgICAgICsgcmVsLT5yX29mZnNldCk7CisJaW5zbiA9IChpbnNuICYgfjB4ZmZmKQorCSAgICAgICB8ICgoaG93dG8tPmJpdHBvcyA8PCA3KSAmIDB4ZjAwKQorCSAgICAgICB8ICgocmVsb2NhdGlvbiA+PiBob3d0by0+Yml0cG9zKSAmIDB4ZmYpOworCWJmZF9wdXRfMzIgKGlucHV0X2JmZCwgdmFsdWUsIGhpdF9kYXRhKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBiZmRfcmVsb2Nfb2s7CisjZW5kaWYKKwogICAgIGNhc2UgUl9BUk1fR05VX1ZUSU5IRVJJVDoKICAgICBjYXNlIFJfQVJNX0dOVV9WVEVOVFJZOgogICAgICAgcmV0dXJuIGJmZF9yZWxvY19vazsKQEAgLTIxMjQsMTAgKzIxNzUsMTAgQEAKIAkgIGJmZF9ib29sZWFuIHdhcm5lZDsKIAkgIGJmZF9ib29sZWFuIHVucmVzb2x2ZWRfcmVsb2M7CiAKLQkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChoLCBzeW1faGFzaGVzLCByX3N5bW5keCwKLQkJCQkgICBzeW10YWJfaGRyLCByZWxvY2F0aW9uLAotCQkJCSAgIHNlYywgdW5yZXNvbHZlZF9yZWxvYywgaW5mbywKLQkJCQkgICB3YXJuZWQpOworCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHNlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCSAgCiAJICBpZiAodW5yZXNvbHZlZF9yZWxvYyB8fCByZWxvY2F0aW9uICE9IDApCiAJICAgIHsKQEAgLTI0MzAsMTEgKzI0ODEsMTYgQEAKICAgICAgbm90LCBpdHMgZmxhZ3MgbWF5IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGlzZWQgZWl0aGVyLCBidXQgaXQKICAgICAgY2Fubm90IGFjdHVhbGx5IGNhdXNlIGFueSBpbmNvbXBhdGliaWxpdHkuICBEbyBub3Qgc2hvcnQtY2lyY3VpdAogICAgICBkeW5hbWljIG9iamVjdHM7IHRoZWlyIHNlY3Rpb24gbGlzdCBtYXkgYmUgZW1wdGllZCBieQotICAgICBlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMuICAqLworICAgIGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scy4KIAorICAgIEFsc28gY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBubyBjb2RlIHNlY3Rpb25zIGluIHRoZSBpbnB1dC4KKyAgICBJbiB0aGlzIGNhc2UgdGhlcmUgaXMgbm8gbmVlZCB0byBjaGVjayBmb3IgY29kZSBzcGVjaWZpYyBmbGFncy4KKyAgICBYWFggLSBkbyB3ZSBuZWVkIHRvIHdvcnJ5IGFib3V0IGZsb2F0aW5nLXBvaW50IGZvcm1hdCBjb21wYXRhYmlsaXR5CisgICAgaW4gZGF0YSBzZWN0aW9ucyA/ICAqLwogICBpZiAoIShpYmZkLT5mbGFncyAmIERZTkFNSUMpKQogICAgIHsKICAgICAgIGJmZF9ib29sZWFuIG51bGxfaW5wdXRfYmZkID0gVFJVRTsKKyAgICAgIGJmZF9ib29sZWFuIG9ubHlfZGF0YV9zZWN0aW9ucyA9IFRSVUU7CiAKICAgICAgIGZvciAoc2VjID0gaWJmZC0+c2VjdGlvbnM7IHNlYyAhPSBOVUxMOyBzZWMgPSBzZWMtPm5leHQpCiAJewpAQCAtMjQ0MiwxMSArMjQ5OCwxNyBAQAogCSAgaWYgKHN0cmNtcCAoc2VjLT5uYW1lLCAiLmdsdWVfNyIpCiAJICAgICAgJiYgc3RyY21wIChzZWMtPm5hbWUsICIuZ2x1ZV83dCIpKQogCSAgICB7CisJICAgICAgaWYgKChiZmRfZ2V0X3NlY3Rpb25fZmxhZ3MgKGliZmQsIHNlYykKKwkJICAgJiAoU0VDX0xPQUQgfCBTRUNfQ09ERSB8IFNFQ19IQVNfQ09OVEVOVFMpKQorCQkgID09IChTRUNfTE9BRCB8IFNFQ19DT0RFIHwgU0VDX0hBU19DT05URU5UUykpCisJICAgIAlvbmx5X2RhdGFfc2VjdGlvbnMgPSBGQUxTRTsKKwogCSAgICAgIG51bGxfaW5wdXRfYmZkID0gRkFMU0U7CiAJICAgICAgYnJlYWs7CiAJICAgIH0KIAl9Ci0gICAgICBpZiAobnVsbF9pbnB1dF9iZmQpCisKKyAgICAgIGlmIChudWxsX2lucHV0X2JmZCB8fCBvbmx5X2RhdGFfc2VjdGlvbnMpCiAJcmV0dXJuIFRSVUU7CiAgICAgfQogCkBAIC0yNjY3LDYgKzI3MjksMTggQEAKIAkJIHwgRUZfQVJNX01BUFNZTVNGSVJTVCk7CiAgICAgICBicmVhazsKIAorICAgIGNhc2UgRUZfQVJNX0VBQklfVkVSMzoKKyAgICAgIGZwcmludGYgKGZpbGUsIF8oIiBbVmVyc2lvbjMgRUFCSV0iKSk7CisKKyAgICAgIGlmIChmbGFncyAmIEVGX0FSTV9CRTgpCisJZnByaW50ZiAoZmlsZSwgXygiIFtCRThdIikpOworCisgICAgICBpZiAoZmxhZ3MgJiBFRl9BUk1fTEU4KQorCWZwcmludGYgKGZpbGUsIF8oIiBbTEU4XSIpKTsKKworICAgICAgZmxhZ3MgJj0gfihFRl9BUk1fTEU4IHwgRUZfQVJNX0JFOCk7CisgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICBmcHJpbnRmIChmaWxlLCBfKCIgPEVBQkkgdmVyc2lvbiB1bnJlY29nbmlzZWQ+IikpOwogICAgICAgYnJlYWs7CkBAIC0zMDU2LDE0ICszMTMwLDE0IEBACiAgICAgICAgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgdGhlIEMrKyBvYmplY3QgdnRhYmxlIGhpZXJhcmNoeS4KICAgICAgICAgICAgUmVjb25zdHJ1Y3QgaXQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogICAgICAgICBjYXNlIFJfQVJNX0dOVV9WVElOSEVSSVQ6Ci0gICAgICAgICAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisgICAgICAgICAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB3aGljaCBDKysgdnRhYmxlIGVudHJpZXMgYXJlIGFjdHVhbGx5CiAgICAgICAgICAgIHVzZWQuICBSZWNvcmQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogICAgICAgICBjYXNlIFJfQVJNX0dOVV9WVEVOVFJZOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTMzMTksNyArMzM5Myw3IEBACiAgICAgICBpZiAoaC0+ZHluaW5keCA9PSAtMQogCSAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJewotCSAgaWYgKCEgYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogCkBAIC0zMzc5LDcgKzM0NTMsNyBAQAogICAgICAgaWYgKGgtPmR5bmluZHggPT0gLTEKIAkgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQogCXsKLQkgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIApAQCAtMzQzMiw3ICszNTA2LDcgQEAKIAkgIGlmIChoLT5keW5pbmR4ID09IC0xCiAJICAgICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJICAgIHsKLQkgICAgICBpZiAoISBiZmRfZWxmMzJfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgICAgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCQlyZXR1cm4gRkFMU0U7CiAJICAgIH0KIApAQCAtMzY0MSw3ICszNzE1LDcgQEAKIAkgdGhlIC5keW5hbWljIHNlY3Rpb24uICBUaGUgRFRfREVCVUcgZW50cnkgaXMgZmlsbGVkIGluIGJ5IHRoZQogCSBkeW5hbWljIGxpbmtlciBhbmQgdXNlZCBieSB0aGUgZGVidWdnZXIuICAqLwogI2RlZmluZSBhZGRfZHluYW1pY19lbnRyeShUQUcsIFZBTCkgXAotICBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIChiZmRfdm1hKSAoVEFHKSwgKGJmZF92bWEpIChWQUwpKQorICBfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgVEFHLCBWQUwpCiAKICAgICAgIGlmICghaW5mby0+c2hhcmVkKQogCXsKQEAgLTQwMTIsMTEgKzQwODYsMTkgQEAKICAgICAgc3RydWN0IGJmZF9saW5rX2luZm8gKiBsaW5rX2luZm8gQVRUUklCVVRFX1VOVVNFRDsKIHsKICAgRWxmX0ludGVybmFsX0VoZHIgKiBpX2VoZHJwOwkvKiBFTEYgZmlsZSBoZWFkZXIsIGludGVybmFsIGZvcm0uICAqLworICBzdHJ1Y3QgZWxmMzJfYXJtX2xpbmtfaGFzaF90YWJsZSAqZ2xvYmFsczsKIAogICBpX2VoZHJwID0gZWxmX2VsZmhlYWRlciAoYWJmZCk7CiAKICAgaV9laGRycC0+ZV9pZGVudFtFSV9PU0FCSV0gICAgICA9IEFSTV9FTEZfT1NfQUJJX1ZFUlNJT047CiAgIGlfZWhkcnAtPmVfaWRlbnRbRUlfQUJJVkVSU0lPTl0gPSBBUk1fRUxGX0FCSV9WRVJTSU9OOworCisgIGlmIChsaW5rX2luZm8pCisgICAgeworICAgICAgZ2xvYmFscyA9IGVsZjMyX2FybV9oYXNoX3RhYmxlIChsaW5rX2luZm8pOworICAgICAgaWYgKGdsb2JhbHMtPmJ5dGVzd2FwX2NvZGUpCisJaV9laGRycC0+ZV9mbGFncyB8PSBFRl9BUk1fQkU4OworICAgIH0KIH0KIAogc3RhdGljIGVudW0gZWxmX3JlbG9jX3R5cGVfY2xhc3MKQEAgLTQwNTIsNyArNDEzNCw3IEBACiAgIHJldHVybiBUUlVFOwogfQogCi12b2lkCitzdGF0aWMgdm9pZAogZWxmMzJfYXJtX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcgKGFiZmQsIGxpbmtlcikKICAgICAgYmZkICphYmZkOwogICAgICBiZmRfYm9vbGVhbiBsaW5rZXIgQVRUUklCVVRFX1VOVVNFRDsKQEAgLTQwNjAsNiArNDE0MiwxNDggQEAKICAgYmZkX2FybV91cGRhdGVfbm90ZXMgKGFiZmQsIEFSTV9OT1RFX1NFQ1RJT04pOwogfQogCisKKy8qIENhbGxlZCBmb3IgZWFjaCBzeW1ib2wuICBCdWlsZHMgYSBzZWN0aW9uIG1hcCBiYXNlZCBvbiBtYXBwaW5nIHN5bWJvbHMuCisgICBEb2VzIG5vdCBhbHRlciBhbnkgb2YgdGhlIHN5bWJvbHMuICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZjMyX2FybV9vdXRwdXRfc3ltYm9sX2hvb2sgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAorCQkJICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCSAgICAgIEVsZl9JbnRlcm5hbF9TeW0gKmVsZnN5bSwKKwkJCSAgICAgIGFzZWN0aW9uICppbnB1dF9zZWMsCisJCQkgICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCBBVFRSSUJVVEVfVU5VU0VEKQoreworICBpbnQgbWFwY291bnQ7CisgIGVsZjMyX2FybV9zZWN0aW9uX21hcCAqbWFwOworICBzdHJ1Y3QgZWxmMzJfYXJtX2xpbmtfaGFzaF90YWJsZSAqZ2xvYmFsczsKKworICAvKiBPbmx5IGRvIHRoaXMgb24gZmluYWwgbGluay4gICovCisgIGlmIChpbmZvLT5yZWxvY2F0YWJsZSkKKyAgICByZXR1cm4gVFJVRTsKKworICAvKiBPbmx5IGJ1aWxkIGEgbWFwIGlmIHdlIG5lZWQgdG8gYnl0ZXN3YXAgY29kZS4gICovCisgIGdsb2JhbHMgPSBlbGYzMl9hcm1faGFzaF90YWJsZSAoaW5mbyk7CisgIGlmICghZ2xvYmFscy0+Ynl0ZXN3YXBfY29kZSkKKyAgICByZXR1cm4gVFJVRTsKKworICAvKiBXZSBvbmx5IHdhbnQgbWFwcGluZyBzeW1ib2xzLiAgKi8KKyAgaWYgKG5hbWUgPT0gTlVMTAorICAgICAgfHwgbmFtZVswXSAhPSAnJCcKKyAgICAgIHx8IChuYW1lWzFdICE9ICdhJworCSAgJiYgbmFtZVsxXSAhPSAndCcKKwkgICYmIG5hbWVbMV0gIT0gJ2QnKSkKKyAgICByZXR1cm4gVFJVRTsKKworICBtYXBjb3VudCA9ICsrKGVsZjMyX2FybV9zZWN0aW9uX2RhdGEgKGlucHV0X3NlYyktPm1hcGNvdW50KTsKKyAgbWFwID0gZWxmMzJfYXJtX3NlY3Rpb25fZGF0YSAoaW5wdXRfc2VjKS0+bWFwOworICAvKiBUT0RPOiBUaGlzIG1heSBiZSBpbmVmZmljaWVudCwgYnV0IHdlIHByb2JhYmx5IGRvbid0IHVzdWFsbHkgaGF2ZSBtYW55CisgICAgIG1hcHBpbmcgc3ltYm9scyBwZXIgc2VjdGlvbi4gICovCisgIG1hcCA9IGJmZF9yZWFsbG9jIChtYXAsIG1hcGNvdW50ICogc2l6ZW9mIChlbGYzMl9hcm1fc2VjdGlvbl9tYXApKTsKKyAgZWxmMzJfYXJtX3NlY3Rpb25fZGF0YSAoaW5wdXRfc2VjKS0+bWFwID0gbWFwOworICAKKyAgbWFwW21hcGNvdW50IC0gMV0udm1hID0gZWxmc3ltLT5zdF92YWx1ZTsKKyAgbWFwW21hcGNvdW50IC0gMV0udHlwZSA9IG5hbWVbMV07CisgIHJldHVybiBUUlVFOworfQorCisKKy8qIEFsbG9jYXRlIHRhcmdldCBzcGVjaWZpYyBzZWN0aW9uIGRhdGEuICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZjMyX2FybV9uZXdfc2VjdGlvbl9ob29rIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWMpCit7CisgIHN0cnVjdCBfYXJtX2VsZl9zZWN0aW9uX2RhdGEgKnNkYXRhOworICBiZmRfc2l6ZV90eXBlIGFtdCA9IHNpemVvZiAoKnNkYXRhKTsKKworICBzZGF0YSA9IGJmZF96YWxsb2MgKGFiZmQsIGFtdCk7CisgIGlmIChzZGF0YSA9PSBOVUxMKQorICAgIHJldHVybiBGQUxTRTsKKyAgc2VjLT51c2VkX2J5X2JmZCA9IHNkYXRhOworCisgIHJldHVybiBfYmZkX2VsZl9uZXdfc2VjdGlvbl9ob29rIChhYmZkLCBzZWMpOworfQorCisKKy8qIFVzZWQgdG8gb3JkZXIgYSBsaXN0IG9mIG1hcHBpbmcgc3ltYm9scyBieSBhZGRyZXNzLiAgKi8KKworc3RhdGljIGludAorZWxmMzJfYXJtX2NvbXBhcmVfbWFwcGluZyAoY29uc3Qgdm9pZCAqIGEsIGNvbnN0IHZvaWQgKiBiKQoreworICByZXR1cm4gKChjb25zdCBlbGYzMl9hcm1fc2VjdGlvbl9tYXAgKikgYSktPnZtYQorCSA+ICgoY29uc3QgZWxmMzJfYXJtX3NlY3Rpb25fbWFwICopIGIpLT52bWE7Cit9CisKKworLyogRG8gY29kZSBieXRlc3dhcHBpbmcuICBSZXR1cm4gRkFMU0UgYWZ0ZXJ3YXJkcyBzbyB0aGF0IHRoZSBzZWN0aW9uIGlzCisgICB3cml0dGVuIG91dCBhcyBub3JtYWwuICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZjMyX2FybV93cml0ZV9zZWN0aW9uIChiZmQgKm91dHB1dF9iZmQgQVRUUklCVVRFX1VOVVNFRCwgYXNlY3Rpb24gKnNlYywKKwkJCSBiZmRfYnl0ZSAqY29udGVudHMpCit7CisgIGludCBtYXBjb3VudDsKKyAgZWxmMzJfYXJtX3NlY3Rpb25fbWFwICptYXA7CisgIGJmZF92bWEgcHRyOworICBiZmRfdm1hIGVuZDsKKyAgYmZkX3ZtYSBvZmZzZXQ7CisgIGJmZF9ieXRlIHRtcDsKKyAgaW50IGk7CisgIAorICBtYXBjb3VudCA9IGVsZjMyX2FybV9zZWN0aW9uX2RhdGEgKHNlYyktPm1hcGNvdW50OworICBtYXAgPSBlbGYzMl9hcm1fc2VjdGlvbl9kYXRhIChzZWMpLT5tYXA7CisKKyAgaWYgKG1hcGNvdW50ID09IDApCisgICAgcmV0dXJuIEZBTFNFOworCisgIHFzb3J0IChtYXAsIG1hcGNvdW50LCBzaXplb2YgKGVsZjMyX2FybV9zZWN0aW9uX21hcCksCisJIGVsZjMyX2FybV9jb21wYXJlX21hcHBpbmcpOworCisgIG9mZnNldCA9IHNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYSArIHNlYy0+b3V0cHV0X29mZnNldDsKKyAgcHRyID0gbWFwWzBdLnZtYSAtIG9mZnNldDsKKyAgZm9yIChpID0gMDsgaSA8IG1hcGNvdW50OyBpKyspCisgICAgeworICAgICAgaWYgKGkgPT0gbWFwY291bnQgLSAxKQorCWVuZCA9IGJmZF9zZWN0aW9uX3NpemUgKG91dHB1dF9iZmQsIHNlYyk7CisgICAgICBlbHNlCisJZW5kID0gbWFwW2kgKyAxXS52bWEgLSBvZmZzZXQ7CisgICAgICAKKyAgICAgIHN3aXRjaCAobWFwW2ldLnR5cGUpCisJeworCWNhc2UgJ2EnOgorCSAgLyogQnl0ZSBzd2FwIGNvZGUgd29yZHMuICAqLworCSAgd2hpbGUgKHB0ciArIDMgPCBlbmQpCisJICAgIHsKKwkgICAgICB0bXAgPSBjb250ZW50c1twdHJdOworCSAgICAgIGNvbnRlbnRzW3B0cl0gPSBjb250ZW50c1twdHIgKyAzXTsKKwkgICAgICBjb250ZW50c1twdHIgKyAzXSA9IHRtcDsKKwkgICAgICB0bXAgPSBjb250ZW50c1twdHIgKyAxXTsKKwkgICAgICBjb250ZW50c1twdHIgKyAxXSA9IGNvbnRlbnRzW3B0ciArIDJdOworCSAgICAgIGNvbnRlbnRzW3B0ciArIDJdID0gdG1wOworCSAgICAgIHB0ciArPSA0OworCSAgICB9CisJICBicmVhazsKKworCWNhc2UgJ3QnOgorCSAgLyogQnl0ZSBzd2FwIGNvZGUgaGFsZndvcmRzLiAgKi8KKwkgIHdoaWxlIChwdHIgKyAxIDwgZW5kKQorCSAgICB7CisJICAgICAgdG1wID0gY29udGVudHNbcHRyXTsKKwkgICAgICBjb250ZW50c1twdHJdID0gY29udGVudHNbcHRyICsgMV07CisJICAgICAgY29udGVudHNbcHRyICsgMV0gPSB0bXA7CisJICAgICAgcHRyICs9IDI7CisJICAgIH0KKwkgIGJyZWFrOworCisJY2FzZSAnZCc6CisJICAvKiBMZWF2ZSBkYXRhIGFsb25lLiAgKi8KKwkgIGJyZWFrOworCX0KKyAgICAgIHB0ciA9IGVuZDsKKyAgICB9CisgIGZyZWUgKG1hcCk7CisgIHJldHVybiBGQUxTRTsKK30KKwogI2RlZmluZSBFTEZfQVJDSAkJCWJmZF9hcmNoX2FybQogI2RlZmluZSBFTEZfTUFDSElORV9DT0RFCQlFTV9BUk0KICNpZmRlZiBfX1FOWFRBUkdFVF9fCkBAIC00MDc1LDE2ICs0Mjk5LDE5IEBACiAjZGVmaW5lIGJmZF9lbGYzMl9iZmRfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSAgICBlbGYzMl9hcm1fbGlua19oYXNoX3RhYmxlX2NyZWF0ZQogI2RlZmluZSBiZmRfZWxmMzJfYmZkX3JlbG9jX3R5cGVfbG9va3VwCQllbGYzMl9hcm1fcmVsb2NfdHlwZV9sb29rdXAKICNkZWZpbmUgYmZkX2VsZjMyX2ZpbmRfbmVhcmVzdF9saW5lCSAgICAgICAgZWxmMzJfYXJtX2ZpbmRfbmVhcmVzdF9saW5lCisjZGVmaW5lIGJmZF9lbGYzMl9uZXdfc2VjdGlvbl9ob29rCQllbGYzMl9hcm1fbmV3X3NlY3Rpb25faG9vawogCiAjZGVmaW5lIGVsZl9iYWNrZW5kX2dldF9zeW1ib2xfdHlwZSAgICAgICAgICAgICBlbGYzMl9hcm1fZ2V0X3N5bWJvbF90eXBlCiAjZGVmaW5lIGVsZl9iYWNrZW5kX2djX21hcmtfaG9vayAgICAgICAgICAgICAgICBlbGYzMl9hcm1fZ2NfbWFya19ob29rCiAjZGVmaW5lIGVsZl9iYWNrZW5kX2djX3N3ZWVwX2hvb2sgICAgICAgICAgICAgICBlbGYzMl9hcm1fZ2Nfc3dlZXBfaG9vawogI2RlZmluZSBlbGZfYmFja2VuZF9jaGVja19yZWxvY3MgICAgICAgICAgICAgICAgZWxmMzJfYXJtX2NoZWNrX3JlbG9jcwogI2RlZmluZSBlbGZfYmFja2VuZF9yZWxvY2F0ZV9zZWN0aW9uCQllbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbgorI2RlZmluZSBlbGZfYmFja2VuZF93cml0ZV9zZWN0aW9uCQllbGYzMl9hcm1fd3JpdGVfc2VjdGlvbgogI2RlZmluZSBlbGZfYmFja2VuZF9hZGp1c3RfZHluYW1pY19zeW1ib2wJZWxmMzJfYXJtX2FkanVzdF9keW5hbWljX3N5bWJvbAogI2RlZmluZSBlbGZfYmFja2VuZF9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyAgICAgZWxmMzJfYXJtX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zCiAjZGVmaW5lIGVsZl9iYWNrZW5kX2ZpbmlzaF9keW5hbWljX3N5bWJvbAllbGYzMl9hcm1fZmluaXNoX2R5bmFtaWNfc3ltYm9sCiAjZGVmaW5lIGVsZl9iYWNrZW5kX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zCWVsZjMyX2FybV9maW5pc2hfZHluYW1pY19zZWN0aW9ucworI2RlZmluZSBlbGZfYmFja2VuZF9saW5rX291dHB1dF9zeW1ib2xfaG9vawllbGYzMl9hcm1fb3V0cHV0X3N5bWJvbF9ob29rCiAjZGVmaW5lIGVsZl9iYWNrZW5kX3NpemVfZHluYW1pY19zZWN0aW9ucwllbGYzMl9hcm1fc2l6ZV9keW5hbWljX3NlY3Rpb25zCiAjZGVmaW5lIGVsZl9iYWNrZW5kX3Bvc3RfcHJvY2Vzc19oZWFkZXJzCWVsZjMyX2FybV9wb3N0X3Byb2Nlc3NfaGVhZGVycwogI2RlZmluZSBlbGZfYmFja2VuZF9yZWxvY190eXBlX2NsYXNzCQllbGYzMl9hcm1fcmVsb2NfdHlwZV9jbGFzcwpkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLWF2ci5jIGIvYmZkL2VsZjMyLWF2ci5jCmluZGV4IDQ0ZjJiMzguLjA2ZTM5OGIgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1hdnIuYworKysgYi9iZmQvZWxmMzItYXZyLmMKQEAgLTEsNSArMSw2IEBACiAvKiBBVlItc3BlY2lmaWMgc3VwcG9ydCBmb3IgMzItYml0IEVMRgotICAgQ29weXJpZ2h0IDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb3B5cmlnaHQgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNAorICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBDb250cmlidXRlZCBieSBEZW5pcyBDaGVydHlrb3YgPGRlbmlzY0BvdmVydGEucnU+CiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEJGRCwgdGhlIEJpbmFyeSBGaWxlIERlc2NyaXB0b3IgbGlicmFyeS4KQEAgLTc1OCwzNCArNzU5LDEyIEBACiAJfQogICAgICAgZWxzZQogCXsKLQkgIGggPSBzeW1faGFzaGVzIFtyX3N5bW5keCAtIHN5bXRhYl9oZHItPnNoX2luZm9dOworCSAgYmZkX2Jvb2xlYW4gdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkOwogCi0JICB3aGlsZSAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKLQkJIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0JICAgIGggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKLQotCSAgbmFtZSA9IGgtPnJvb3Qucm9vdC5zdHJpbmc7Ci0KLQkgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaykKLQkgICAgewotCSAgICAgIHNlYyA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKLQkgICAgICByZWxvY2F0aW9uID0gKGgtPnJvb3QudS5kZWYudmFsdWUKLQkJCSAgICArIHNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYQotCQkJICAgICsgc2VjLT5vdXRwdXRfb2Zmc2V0KTsKLQkgICAgfQotCSAgZWxzZSBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQotCSAgICB7Ci0JICAgICAgcmVsb2NhdGlvbiA9IDA7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIGlmICghICgoKmluZm8tPmNhbGxiYWNrcy0+dW5kZWZpbmVkX3N5bWJvbCkKLQkJICAgICAoaW5mbywgaC0+cm9vdC5yb290LnN0cmluZywgaW5wdXRfYmZkLAotCQkgICAgICBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0LCBUUlVFKSkpCi0JCXJldHVybiBGQUxTRTsKLQkgICAgICByZWxvY2F0aW9uID0gMDsKLQkgICAgfQorCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHNlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCX0KIAogICAgICAgciA9IGF2cl9maW5hbF9saW5rX3JlbG9jYXRlIChob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLApkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLWNyMTZjLmMgYi9iZmQvZWxmMzItY3IxNmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzIyMzM1Ci0tLSAvZGV2L251bGwKKysrIGIvYmZkL2VsZjMyLWNyMTZjLmMKQEAgLTAsMCArMSwxMDAwIEBACisvKiBCRkQgYmFjay1lbmQgZm9yIE5hdGlvbmFsIFNlbWljb25kdWN0b3IncyBDUjE2QyBFTEYKKyAgIENvcHlyaWdodCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCisKKyNpbmNsdWRlICJiZmQuaCIKKyNpbmNsdWRlICJzeXNkZXAuaCIKKyNpbmNsdWRlICJsaWJiZmQuaCIKKyNpbmNsdWRlICJiZmRsaW5rLmgiCisjaW5jbHVkZSAiZWxmL2NyMTZjLmgiCisjaW5jbHVkZSAiZWxmLWJmZC5oIgorCisKKyNkZWZpbmUgVVNFX1JFTAkxCS8qIENSMTZDIHVzZXMgUkVMIHJlbG9jYXRpb25zIGluc3RlYWQgb2YgUkVMQS4gICovCisKKy8qIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbiBpcyBiYXNlZCBvbiBFTVBUWV9IT1dUTyBtYWNybywgCisgICBidXQgYWxzbyBpbml0aWF0ZXMgdGhlICJuYW1lIiBmaWVsZCBpbiBIT1dUTyBzdHJ1Y3QuICAqLworI2RlZmluZSBPTkxZX05BTUVfSE9XVE8oQykgXAorICBIT1dUTyAoKEMpLCAwLCAwLCAwLCBGQUxTRSwgMCwgY29tcGxhaW5fb3ZlcmZsb3dfZG9udCwgTlVMTCwgXAorCSAgU1RSSU5HWChDKSwgRkFMU0UsIDAsIDAsIEZBTFNFKQorCisvKiByZWxvY19tYXBfaW5kZXggYXJyYXkgbWFwcyBDUkFTTSByZWxvY2F0aW9uIHR5cGUgaW50byBhIEJGRAorICAgcmVsb2NhdGlvbiBlbnVtLiBUaGUgYXJyYXkncyBpbmRpY2VzIGFyZSBzeW5jaHJvbml6ZWQgd2l0aCAKKyAgIFJJTkRFWF8xNkNfKiBpbmRpY2VzLCBjcmVhdGVkIGluIGluY2x1ZGUvZWxmL2NyMTZjLmguCisgICBUaGUgYXJyYXkgaXMgdXNlZCBpbjoKKyAgIDEuIGVsZjMyLWNyMTZjLmMgOiBlbGZfY3IxNmNfcmVsb2NfdHlwZV9sb29rdXAoKS4KKyAgIDIuIGFzcmVsb2MuYyA6IGZpbmRfcmVsb2NfdHlwZSgpLiAqLworCitSRUxPQ19NQVAgcmVsb2NfbWFwX2luZGV4W1JJTkRFWF8xNkNfTUFYXSA9Cit7CisgIHtSXzE2Q19OVU0wOCwgICAgIEJGRF9SRUxPQ18xNkNfTlVNMDh9LAorICB7Ul8xNkNfTlVNMDhfQywgICBCRkRfUkVMT0NfMTZDX05VTTA4X0N9LAorICB7Ul8xNkNfTlVNMTYsICAgICBCRkRfUkVMT0NfMTZDX05VTTE2fSwKKyAge1JfMTZDX05VTTE2X0MsICAgQkZEX1JFTE9DXzE2Q19OVU0xNl9DfSwKKyAge1JfMTZDX05VTTMyLCAgICAgQkZEX1JFTE9DXzE2Q19OVU0zMn0sCisgIHtSXzE2Q19OVU0zMl9DLCAgIEJGRF9SRUxPQ18xNkNfTlVNMzJfQ30sCisgIHtSXzE2Q19ESVNQMDQsICAgIEJGRF9SRUxPQ18xNkNfRElTUDA0fSwKKyAge1JfMTZDX0RJU1AwNF9DLCAgQkZEX1JFTE9DXzE2Q19ESVNQMDRfQ30sCisgIHtSXzE2Q19ESVNQMDgsICAgIEJGRF9SRUxPQ18xNkNfRElTUDA4fSwKKyAge1JfMTZDX0RJU1AwOF9DLCAgQkZEX1JFTE9DXzE2Q19ESVNQMDhfQ30sCisgIHtSXzE2Q19ESVNQMTYsICAgIEJGRF9SRUxPQ18xNkNfRElTUDE2fSwKKyAge1JfMTZDX0RJU1AxNl9DLCAgQkZEX1JFTE9DXzE2Q19ESVNQMTZfQ30sCisgIHtSXzE2Q19ESVNQMjQsICAgIEJGRF9SRUxPQ18xNkNfRElTUDI0fSwKKyAge1JfMTZDX0RJU1AyNF9DLCAgQkZEX1JFTE9DXzE2Q19ESVNQMjRfQ30sCisgIHtSXzE2Q19ESVNQMjRhLCAgIEJGRF9SRUxPQ18xNkNfRElTUDI0YX0sCisgIHtSXzE2Q19ESVNQMjRhX0MsIEJGRF9SRUxPQ18xNkNfRElTUDI0YV9DfSwKKyAge1JfMTZDX1JFRzA0LCAgICAgQkZEX1JFTE9DXzE2Q19SRUcwNH0sCisgIHtSXzE2Q19SRUcwNF9DLCAgIEJGRF9SRUxPQ18xNkNfUkVHMDRfQ30sCisgIHtSXzE2Q19SRUcwNGEsICAgIEJGRF9SRUxPQ18xNkNfUkVHMDRhfSwKKyAge1JfMTZDX1JFRzA0YV9DLCAgQkZEX1JFTE9DXzE2Q19SRUcwNGFfQ30sCisgIHtSXzE2Q19SRUcxNCwgICAgIEJGRF9SRUxPQ18xNkNfUkVHMTR9LAorICB7Ul8xNkNfUkVHMTRfQywgICBCRkRfUkVMT0NfMTZDX1JFRzE0X0N9LAorICB7Ul8xNkNfUkVHMTYsICAgICBCRkRfUkVMT0NfMTZDX1JFRzE2fSwKKyAge1JfMTZDX1JFRzE2X0MsICAgQkZEX1JFTE9DXzE2Q19SRUcxNl9DfSwKKyAge1JfMTZDX1JFRzIwLCAgICAgQkZEX1JFTE9DXzE2Q19SRUcyMH0sCisgIHtSXzE2Q19SRUcyMF9DLCAgIEJGRF9SRUxPQ18xNkNfUkVHMjBfQ30sCisgIHtSXzE2Q19BQlMyMCwgICAgIEJGRF9SRUxPQ18xNkNfQUJTMjB9LAorICB7Ul8xNkNfQUJTMjBfQywgICBCRkRfUkVMT0NfMTZDX0FCUzIwX0N9LAorICB7Ul8xNkNfQUJTMjQsICAgICBCRkRfUkVMT0NfMTZDX0FCUzI0fSwKKyAge1JfMTZDX0FCUzI0X0MsICAgQkZEX1JFTE9DXzE2Q19BQlMyNF9DfSwKKyAge1JfMTZDX0lNTTA0LCAgICAgQkZEX1JFTE9DXzE2Q19JTU0wNH0sCisgIHtSXzE2Q19JTU0wNF9DLCAgIEJGRF9SRUxPQ18xNkNfSU1NMDRfQ30sCisgIHtSXzE2Q19JTU0xNiwgICAgIEJGRF9SRUxPQ18xNkNfSU1NMTZ9LAorICB7Ul8xNkNfSU1NMTZfQywgICBCRkRfUkVMT0NfMTZDX0lNTTE2X0N9LAorICB7Ul8xNkNfSU1NMjAsICAgICBCRkRfUkVMT0NfMTZDX0lNTTIwfSwKKyAge1JfMTZDX0lNTTIwX0MsICAgQkZEX1JFTE9DXzE2Q19JTU0yMF9DfSwKKyAge1JfMTZDX0lNTTI0LCAgICAgQkZEX1JFTE9DXzE2Q19JTU0yNH0sCisgIHtSXzE2Q19JTU0yNF9DLCAgIEJGRF9SRUxPQ18xNkNfSU1NMjRfQ30sCisgIHtSXzE2Q19JTU0zMiwgICAgIEJGRF9SRUxPQ18xNkNfSU1NMzJ9LAorICB7Ul8xNkNfSU1NMzJfQywgICBCRkRfUkVMT0NfMTZDX0lNTTMyX0N9Cit9OworCitzdGF0aWMgcmVsb2NfaG93dG9fdHlwZSBlbGZfaG93dG9fdGFibGVbXSA9Cit7CisgIC8qIDAwICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19OVU0wOCksCisgIC8qIDAxICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19OVU0wOF9DKSwKKyAgLyogMDIgKi8gT05MWV9OQU1FX0hPV1RPIChSSU5ERVhfMTZDX05VTTE2KSwKKyAgLyogMDMgKi8gT05MWV9OQU1FX0hPV1RPIChSSU5ERVhfMTZDX05VTTE2X0MpLAorICAvKiAwNCAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfTlVNMzIpLAorICAvKiAwNSAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfTlVNMzJfQyksCisgIC8qIDA2ICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19ESVNQMDQpLAorICAvKiAwNyAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfRElTUDA0X0MpLAorICAvKiAwOCAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfRElTUDA4KSwKKyAgLyogMDkgKi8gT05MWV9OQU1FX0hPV1RPIChSSU5ERVhfMTZDX0RJU1AwOF9DKSwKKyAgLyogMTAgKi8gT05MWV9OQU1FX0hPV1RPIChSSU5ERVhfMTZDX0RJU1AxNiksCisgIC8qIDExICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19ESVNQMTZfQyksCisgIC8qIDEyICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19ESVNQMjQpLAorICAvKiAxMyAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfRElTUDI0X0MpLAorICAvKiAxNCAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfRElTUDI0YSksCisgIC8qIDE1ICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19ESVNQMjRhX0MpLAorICAvKiAxNiAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfUkVHMDQpLAorICAvKiAxNyAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfUkVHMDRfQyksCisgIC8qIDE4ICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19SRUcwNGEpLAorICAvKiAxOSAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfUkVHMDRhX0MpLAorICAvKiAyMCAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfUkVHMTQpLAorICAvKiAyMSAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfUkVHMTRfQyksCisgIC8qIDIyICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19SRUcxNiksCisgIC8qIDIzICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19SRUcxNl9DKSwKKyAgLyogMjQgKi8gT05MWV9OQU1FX0hPV1RPIChSSU5ERVhfMTZDX1JFRzIwKSwKKyAgLyogMjUgKi8gT05MWV9OQU1FX0hPV1RPIChSSU5ERVhfMTZDX1JFRzIwX0MpLAorICAvKiAyNiAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfQUJTMjApLAorICAvKiAyNyAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfQUJTMjBfQyksCisgIC8qIDI4ICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19BQlMyNCksCisgIC8qIDI5ICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19BQlMyNF9DKSwKKyAgLyogMzAgKi8gT05MWV9OQU1FX0hPV1RPIChSSU5ERVhfMTZDX0lNTTA0KSwKKyAgLyogMzEgKi8gT05MWV9OQU1FX0hPV1RPIChSSU5ERVhfMTZDX0lNTTA0X0MpLAorICAvKiAzMiAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfSU1NMTYpLAorICAvKiAzMyAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfSU1NMTZfQyksCisgIC8qIDM0ICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19JTU0yMCksCisgIC8qIDM1ICovIE9OTFlfTkFNRV9IT1dUTyAoUklOREVYXzE2Q19JTU0yMF9DKSwKKyAgLyogMzYgKi8gT05MWV9OQU1FX0hPV1RPIChSSU5ERVhfMTZDX0lNTTI0KSwKKyAgLyogMzcgKi8gT05MWV9OQU1FX0hPV1RPIChSSU5ERVhfMTZDX0lNTTI0X0MpLAorICAvKiAzOCAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfSU1NMzIpLAorICAvKiAzOSAqLyBPTkxZX05BTUVfSE9XVE8gKFJJTkRFWF8xNkNfSU1NMzJfQykKK307CisKKworLyogQ29kZSB0byB0dXJuIGEgY29kZV90eXBlIGludG8gYSBob3d0byBwdHIsIHVzZXMgdGhlIGFib3ZlIGhvd3RvIHRhYmxlLiAgKi8KKworc3RhdGljIHJlbG9jX2hvd3RvX3R5cGUgKgorZWxmX2NyMTZjX3JlbG9jX3R5cGVfbG9va3VwIChiZmQgKmFiZmQgQVRUUklCVVRFX1VOVVNFRCwKKwkJCSAgICAgYmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlIGNvZGUpCit7CisgIHVuc2lnbmVkIGludCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBSSU5ERVhfMTZDX01BWDsgaSsrKQorICAgIHsKKyAgICAgIGlmIChjb2RlID09IHJlbG9jX21hcF9pbmRleFtpXS5iZmRfcmVsb2NfZW51bSkKKwl7CisJICAvKiBwcmludGYgKCJDUjE2QyBSZWxvY2F0aW9uIFR5cGUgaXMgLSAleFxuIiwgY29kZSk7ICovCisJICByZXR1cm4gJiBlbGZfaG93dG9fdGFibGVbaV07CisJfQorICAgIH0KKworICAvKiBwcmludGYgKCJUaGlzIHJlbG9jYXRpb24gVHlwZSBpcyBub3Qgc3VwcG9ydGVkIC0gJXhcbiIsIGNvZGUpOyAqLworICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2VsZl9jcjE2Y19pbmZvX3RvX2hvd3RvIChiZmQgKmFiZmQgQVRUUklCVVRFX1VOVVNFRCwKKwkJCSBhcmVsZW50ICpjYWNoZV9wdHIgQVRUUklCVVRFX1VOVVNFRCwKKwkJCSBFbGZfSW50ZXJuYWxfUmVsYSAqZHN0IEFUVFJJQlVURV9VTlVTRUQpCit7CisgIGFib3J0ICgpOworfQorCitzdGF0aWMgdm9pZAorZWxmX2NyMTZjX2luZm9fdG9faG93dG9fcmVsIChiZmQgKmFiZmQgQVRUUklCVVRFX1VOVVNFRCwKKwkJCSAgICAgYXJlbGVudCAqY2FjaGVfcHRyLAorCQkJICAgICBFbGZfSW50ZXJuYWxfUmVsYSAqZHN0KQoreworICB1bnNpZ25lZCBpbnQgcl90eXBlID0gRUxGMzJfUl9UWVBFIChkc3QtPnJfaW5mbyk7CisKKyAgQkZEX0FTU0VSVCAocl90eXBlIDwgKHVuc2lnbmVkIGludCkgUklOREVYXzE2Q19NQVgpOworICBjYWNoZV9wdHItPmhvd3RvID0gJmVsZl9ob3d0b190YWJsZVtyX3R5cGVdOworfQorCisvKiBQZXJmb3JtIGEgcmVsb2NhdGlvbiBhcyBwYXJ0IG9mIGEgZmluYWwgbGluay4gICovCisKK3N0YXRpYyBiZmRfcmVsb2Nfc3RhdHVzX3R5cGUKK2NyMTZjX2VsZl9maW5hbF9saW5rX3JlbG9jYXRlIChyZWxvY19ob3d0b190eXBlICpob3d0bywKKwkJCSAgICAgICBiZmQgKmFiZmQsCisJCQkgICAgICAgYmZkICpvdXRwdXRfYmZkIEFUVFJJQlVURV9VTlVTRUQsCisJCQkgICAgICAgYXNlY3Rpb24gKmlucHV0X3NlY3Rpb24sCisJCQkgICAgICAgYmZkX2J5dGUgKmRhdGEsCisJCQkgICAgICAgYmZkX3ZtYSBvY3RldHMsCisJCQkgICAgICAgYmZkX3ZtYSBSdmFsdWUsCisJCQkgICAgICAgYmZkX3ZtYSBhZGRlbmQgQVRUUklCVVRFX1VOVVNFRCwKKwkJCSAgICAgICBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbyBBVFRSSUJVVEVfVU5VU0VELAorCQkJICAgICAgIGFzZWN0aW9uICpzeW1fc2VjIEFUVFJJQlVURV9VTlVTRUQsCisJCQkgICAgICAgaW50IGlzX2xvY2FsIEFUVFJJQlVURV9VTlVTRUQpCit7CisgIGxvbmcgdmFsdWU7CisgIHNob3J0IHN3b3JkOwkJCS8qIEV4dHJhY3RlZCBmcm9tIHRoZSBob2xlIGFuZCBwdXQgYmFjay4gICovCisgIHVuc2lnbmVkIGxvbmcgZm9ybWF0LCBhZGRyX3R5cGUsIGNvZGVfZmFjdG9yOworICB1bnNpZ25lZCBzaG9ydCBzaXplOworICB1bnNpZ25lZCBzaG9ydCByX3R5cGU7CisgIGFzeW1ib2wgKnN5bWJvbCA9IE5VTEw7CisKKyAgdW5zaWduZWQgbG9uZyBkaXNwMjBfb3Bjb2Q7CisgIGNoYXIgbmVnID0gMDsKKyAgY2hhciBuZWcycG9zID0gMDsKKworICBsb25nIGxlZnRfdmFsID0gMDsKKyAgbG9uZyBwbHVzX2ZhY3RvciA9IDA7CQkvKiBUbyBiZSBhZGRlZCB0byB0aGUgaG9sZS4gICovCisKKyNkZWZpbmUgTUlOX0JZVEUJKChpbnQpIDB4RkZGRkZGODApCisjZGVmaW5lIE1JTl9XT1JECSgoaW50KSAweEZGRkY4MDAwKQorI2RlZmluZQlNQVhfVVdPUkQJKCh1bnNpZ25lZCkgMHgwMDAwRkZGRikKKyNkZWZpbmUJTUFYX1VCWVRFCSgodW5zaWduZWQpIDB4MDAwMDAwRkYpCisKKyAgcl90eXBlID0gcmVsb2NfbWFwX2luZGV4W2hvd3RvLT50eXBlXS5jcl9yZWxvY190eXBlOworICBmb3JtYXQgPSByX3R5cGUgJiBSX0ZPUk1BVDsKKyAgc2l6ZSA9IHJfdHlwZSAmIFJfU0laRVNQOworICBhZGRyX3R5cGUgPSByX3R5cGUgJiBSX0FERFJUWVBFOworICBjb2RlX2ZhY3RvciA9ICgoYWRkcl90eXBlID09IFJfQ09ERV9BRERSKSA/IDEgOiAwKTsKKworICBpZiAoc3ltX3NlYykKKyAgICBzeW1ib2wgPSBzeW1fc2VjLT5zeW1ib2w7CisKKyAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgIGNhc2UgUl9OVU1CRVI6CisgICAgICBzd2l0Y2ggKHNpemUpCisJeworCWNhc2UgUl9TXzE2Q18wODogCS8qIE9uZSBieXRlLiAgKi8KKwkgIHZhbHVlID0gYmZkX2dldF84IChhYmZkLCAoY2hhciAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIGJyZWFrOworCWNhc2UgUl9TXzE2Q18xNjogCS8qIFR3byBieXRlcy4gKi8KKwkgIHN3b3JkID0gYmZkX2dldF8xNiAoYWJmZCwgKGJmZF9ieXRlICopIGRhdGEgKyBvY3RldHMpOworCSAgdmFsdWUgPSBzd29yZDsKKwkgIGJyZWFrOworCWNhc2UgUl9TXzE2Q18zMjoJLyogRm91ciBieXRlcy4gICovCisJICB2YWx1ZSA9IGJmZF9nZXRfMzIgKGFiZmQsIChiZmRfYnl0ZSAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIGJyZWFrOworCWRlZmF1bHQ6CisJICByZXR1cm4gYmZkX3JlbG9jX25vdHN1cHBvcnRlZDsKKwl9CisgICAgICBicmVhazsKKworICAgIGNhc2UgUl8xNkNfRElTUEw6CisgICAgICBzd2l0Y2ggKHNpemUpCisJeworCWNhc2UgUl9TXzE2Q18wNDogICAgLyogd29yZDEoNC03KS4gICovCisJICB2YWx1ZSA9IGJmZF9nZXRfOCAoYWJmZCwgKGNoYXIgKikgZGF0YSArIG9jdGV0cyk7CisJICBsZWZ0X3ZhbCA9IHZhbHVlICYgMHhGOworCSAgdmFsdWUgPSAodmFsdWUgJiAweEYwKSA+PiA0OworCSAgdmFsdWUrKzsKKwkgIHZhbHVlIDw8PSAxOworCSAgYnJlYWs7CisJY2FzZSBSX1NfMTZDXzA4OiAgICAvKiB3b3JkMSgwLTMsOC0xMSkuICAqLworCSAgc3dvcmQgPSBiZmRfZ2V0XzE2IChhYmZkLCAoY2hhciAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIHZhbHVlID0gc3dvcmQgJiAweDAwMEY7CisJICB2YWx1ZSB8PSAoKHN3b3JkICYgMHgwRjAwKSA+PiA0KTsKKwkgIGxlZnRfdmFsID0gc3dvcmQgJiAweEYwRjA7CisJICB2YWx1ZSA8PD0gMTsKKwkgIGlmICh2YWx1ZSAmIDB4MTAwKQorCSAgICB2YWx1ZSB8PSAweEZGRkZGRjAwOworCSAgYnJlYWs7CisJY2FzZSBSX1NfMTZDXzE2OiAgICAvKiB3b3JkMi4gICovCisJICBzd29yZCA9IGJmZF9nZXRfMTYgKGFiZmQsIChiZmRfYnl0ZSAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIHZhbHVlID0gc3dvcmQ7CisJICB2YWx1ZSA9ICgodmFsdWUgJiAweEZGRkUpID4+IDEpIHwgKCh2YWx1ZSAmIDB4MSkgPDwgMTUpOworCSAgdmFsdWUgPDw9IDE7CisJICBpZiAodmFsdWUgJiAweDEwMDAwKQorCSAgICB2YWx1ZSB8PSAweEZGRkYwMDAwOworCSAgYnJlYWs7CisJY2FzZSBSX1NfMTZDXzI0X2E6CS8qIHdvcmQxKDAtNyksd29yZDIuICAqLworCSAgdmFsdWUgPSBiZmRfZ2V0XzMyIChhYmZkLCAoYmZkX2J5dGUgKikgZGF0YSArIG9jdGV0cyk7CisJICBsZWZ0X3ZhbCA9IHZhbHVlICYgMHgwMDAwRkYwMDsKKwkgIHZhbHVlID0gKCh2YWx1ZSAmIDB4RkZGRTAwMDApID4+IDE3KSB8CisJICAgICgodmFsdWUgJiAweDAwMDEwMDAwKSA8PCA3KSB8ICgodmFsdWUgJiAweDAwMDAwMEZGKSA8PCAxNSk7CisJICB2YWx1ZSA8PD0gMTsKKwkgIGlmICh2YWx1ZSAmIDB4MTAwMDAwMCkKKwkgICAgdmFsdWUgfD0gMHhGRTAwMDAwMDsKKwkgIGJyZWFrOworCWNhc2UgUl9TXzE2Q18yNDogICAgLyogd29yZDIoMC0zLDgtMTEpLHdvcmQzLiAgKi8KKwkgIHZhbHVlID0gYmZkX2dldF8zMiAoYWJmZCwgKGJmZF9ieXRlICopIGRhdGEgKyBvY3RldHMpOworCSAgbGVmdF92YWwgPSB2YWx1ZSAmIDB4MDAwMEYwRjA7CisJICB2YWx1ZSA9ICgodmFsdWUgPj4gMTYpICYgMHgwMDAwRkZGRikgfAorCSAgICAoKHZhbHVlICYgMHgwMDAwMEYwMCkgPDwgOCkgfCAoKHZhbHVlICYgMHgwMDAwMDAwRikgPDwgMjApOworCisJICB2YWx1ZSA9ICgodmFsdWUgJiAweDAwRkZGRkZFKSA+PiAxKSB8ICgodmFsdWUgJiAweDAwMDAwMDAxKSA8PCAyMyk7CisKKwkgIHZhbHVlIDw8PSAxOworCSAgaWYgKHZhbHVlICYgMHgxMDAwMDAwKQorCSAgICB2YWx1ZSB8PSAweEZFMDAwMDAwOworCSAgYnJlYWs7CisJZGVmYXVsdDoKKwkgIHJldHVybiBiZmRfcmVsb2Nfbm90c3VwcG9ydGVkOworCX0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBSXzE2Q19SRUdSRUw6CisgICAgICBzd2l0Y2ggKHNpemUpCisJeworCWNhc2UgUl9TXzE2Q18wNDogICAgLyogd29yZDEoMTItMTUpIG5vdCBzY2FsZWQuICAqLworCSAgdmFsdWUgPSBiZmRfZ2V0XzggKGFiZmQsIChjaGFyICopIGRhdGEgKyBvY3RldHMpOworCSAgbGVmdF92YWwgPSB2YWx1ZSAmIDB4RjA7CisJICB2YWx1ZSA9IHZhbHVlICYgMHhGOworCSAgYnJlYWs7CisJY2FzZSBSX1NfMTZDXzA0X2E6CS8qIHdvcmQxKDEyLTE1KSBzY2FsZWQgYnkgMi4gICovCisJICB2YWx1ZSA9IGJmZF9nZXRfOCAoYWJmZCwgKGNoYXIgKikgZGF0YSArIG9jdGV0cyk7CisJICBsZWZ0X3ZhbCA9IHZhbHVlICYgMHhGMDsKKwkgIHZhbHVlID0gdmFsdWUgJiAweEY7CisJICB2YWx1ZSA8PD0gMTsKKwkgIGJyZWFrOworCWNhc2UgUl9TXzE2Q18xNDogICAgLyogd29yZDEoNC01KSx3b3JkMigwLTMsOC0xNSkuICAqLworCSAgdmFsdWUgPSBiZmRfZ2V0XzMyIChhYmZkLCAoYmZkX2J5dGUgKikgZGF0YSArIG9jdGV0cyk7CisJICBsZWZ0X3ZhbCA9IHZhbHVlICYgMHgwMEYwRkZDRjsKKwkgIHZhbHVlID0gKCh2YWx1ZSAmIDB4YzAwMDAwMDApID4+IDI0KSB8CisJICAgICgodmFsdWUgJiAweDNGMDAwMDAwKSA+PiAxNikgfAorCSAgICAoKHZhbHVlICYgMHgwMDBGMDAwMCkgPj4gMTYpIHwgKHZhbHVlICYgMHgwMDAwMDAzMCk7CisJICBicmVhazsKKwljYXNlIFJfU18xNkNfMTY6ICAgIC8qIHdvcmQyLiAgKi8KKwkgIHN3b3JkID0gYmZkX2dldF8xNiAoYWJmZCwgKGJmZF9ieXRlICopIGRhdGEgKyBvY3RldHMpOworCSAgdmFsdWUgPSBzd29yZDsKKwkgIGJyZWFrOworCWNhc2UgUl9TXzE2Q18yMDogICAgLyogd29yZDIoOC0xMSksd29yZDMuICAqLworCSAgdmFsdWUgPSBiZmRfZ2V0XzMyIChhYmZkLCAoYmZkX2J5dGUgKikgZGF0YSArIG9jdGV0cyk7CisJICBsZWZ0X3ZhbCA9IHZhbHVlICYgMHhGMDsKKwkgIHZhbHVlID0gKHZhbHVlICYgMHhGKSA8PCAxNjsKKwkgIHN3b3JkID0gYmZkX2dldF8xNiAoYWJmZCwgKGJmZF9ieXRlICopIGRhdGEgKyBvY3RldHMgKyAxKTsKKwkgIHZhbHVlID0gdmFsdWUgfCAodW5zaWduZWQgc2hvcnQpIHN3b3JkOworCSAgZGlzcDIwX29wY29kID0gYmZkX2dldF8zMiAoYWJmZCwgKGJmZF9ieXRlICopIGRhdGEgKyBvY3RldHMgLSAzKTsKKwkgIGRpc3AyMF9vcGNvZCB8PSAweDBGRkYwMDAwOworCSAgaWYgKChkaXNwMjBfb3Bjb2QgPT0gMHg0RkZGMDAxOCkgfHwJLyogbG9hZGIgLWRpc3AyMChyZWcpICovCisJICAgICAgKGRpc3AyMF9vcGNvZCA9PSAweDVGRkYwMDE4KSB8fAkvKiBsb2FkYiAtZGlzcDIwKHJwKSAgKi8KKwkgICAgICAoZGlzcDIwX29wY29kID09IDB4OEZGRjAwMTgpIHx8CS8qIGxvYWRkIC1kaXNwMjAocmVnKSAqLworCSAgICAgIChkaXNwMjBfb3Bjb2QgPT0gMHg5RkZGMDAxOCkgfHwJLyogbG9hZGQgLWRpc3AyMChycCkgICovCisJICAgICAgKGRpc3AyMF9vcGNvZCA9PSAweENGRkYwMDE4KSB8fAkvKiBsb2FkdyAtZGlzcDIwKHJlZykgKi8KKwkgICAgICAoZGlzcDIwX29wY29kID09IDB4REZGRjAwMTgpIHx8CS8qIGxvYWR3IC1kaXNwMjAocnApICAqLworCSAgICAgIChkaXNwMjBfb3Bjb2QgPT0gMHg0RkZGMDAxOSkgfHwJLyogc3RvcmIgLWRpc3AyMChyZWcpICovCisJICAgICAgKGRpc3AyMF9vcGNvZCA9PSAweDVGRkYwMDE5KSB8fAkvKiBzdG9yYiAtZGlzcDIwKHJwKSAgKi8KKwkgICAgICAoZGlzcDIwX29wY29kID09IDB4OEZGRjAwMTkpIHx8CS8qIHN0b3JkIC1kaXNwMjAocmVnKSAqLworCSAgICAgIChkaXNwMjBfb3Bjb2QgPT0gMHg5RkZGMDAxOSkgfHwJLyogc3RvcmQgLWRpc3AyMChycCkgICovCisJICAgICAgKGRpc3AyMF9vcGNvZCA9PSAweENGRkYwMDE5KSB8fAkvKiBzdG9ydyAtZGlzcDIwKHJlZykgKi8KKwkgICAgICAoZGlzcDIwX29wY29kID09IDB4REZGRjAwMTkpKQorCSAgICB7CS8qIHN0b3J3IC1kaXNwMjAocnApLiAgKi8KKwkgICAgICBuZWcgPSAxOworCSAgICAgIHZhbHVlIHw9IDB4RkZGMDAwMDA7CisJICAgIH0KKworCSAgYnJlYWs7CisJZGVmYXVsdDoKKwkgIHJldHVybiBiZmRfcmVsb2Nfbm90c3VwcG9ydGVkOworCX0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBSXzE2Q19BQlM6CisgICAgICBzd2l0Y2ggKHNpemUpCisJeworCWNhc2UgUl9TXzE2Q18yMDogICAgLyogd29yZDEoMC0zKSx3b3JkMi4gICovCisJICB2YWx1ZSA9IGJmZF9nZXRfMzIgKGFiZmQsIChiZmRfYnl0ZSAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIGxlZnRfdmFsID0gdmFsdWUgJiAweDAwMDBGRkYwOworCSAgdmFsdWUgPSAoKHZhbHVlICYgMHhGRkZGMDAwMCkgPj4gMTYpIHwKKwkgICAgKCh2YWx1ZSAmIDB4MDAwMDAwMEYpIDw8IDE2KTsKKwkgIGJyZWFrOworCWNhc2UgUl9TXzE2Q18yNDogICAvKiB3b3JkMigwLTMsOC0xMSksd29yZDMuICAqLworCSAgdmFsdWUgPSBiZmRfZ2V0XzMyIChhYmZkLCAoYmZkX2J5dGUgKikgZGF0YSArIG9jdGV0cyk7CisJICBsZWZ0X3ZhbCA9IHZhbHVlICYgMHgwMDAwRjBGMDsKKwkgIHZhbHVlID0gKCh2YWx1ZSAmIDB4RkZGRjAwMDApID4+IDE2KSB8CisJICAgICgodmFsdWUgJiAweDAwMDAwRjAwKSA8PCA4KSB8ICgodmFsdWUgJiAweDAwMDAwMDBGKSA8PCAyMCk7CisJICBicmVhazsKKwlkZWZhdWx0OgorCSAgcmV0dXJuIGJmZF9yZWxvY19ub3RzdXBwb3J0ZWQ7CisJfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJfMTZDX0lNTUVEOgorICAgICAgc3dpdGNoIChzaXplKQorCXsKKwljYXNlIFJfU18xNkNfMDQ6ICAgIC8qIHdvcmQxLzIoNC03KS4gICovCisJICB2YWx1ZSA9IGJmZF9nZXRfOCAoYWJmZCwgKGNoYXIgKikgZGF0YSArIG9jdGV0cyk7CisJICBsZWZ0X3ZhbCA9IHZhbHVlICYgMHhGOworCSAgdmFsdWUgPSAodmFsdWUgJiAweEYwKSA+PiA0OworCSAgYnJlYWs7CisJY2FzZSBSX1NfMTZDXzE2OiAgICAvKiB3b3JkMi4gICovCisJICBzd29yZCA9IGJmZF9nZXRfMTYgKGFiZmQsIChiZmRfYnl0ZSAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIHZhbHVlID0gc3dvcmQ7CisJICBicmVhazsKKwljYXNlIFJfU18xNkNfMjA6ICAgIC8qIHdvcmQxKDAtMyksd29yZDIuICAqLworCSAgdmFsdWUgPSBiZmRfZ2V0XzMyIChhYmZkLCAoYmZkX2J5dGUgKikgZGF0YSArIG9jdGV0cyk7CisJICBsZWZ0X3ZhbCA9IHZhbHVlICYgMHgwMDAwRkZGMDsKKwkgIHZhbHVlID0gKCh2YWx1ZSAmIDB4RkZGRjAwMDApID4+IDE2KSB8CisJICAgICgodmFsdWUgJiAweDAwMDAwMDBGKSA8PCAxNik7CisJICBicmVhazsKKwljYXNlIFJfU18xNkNfMzI6ICAgIC8qIHdvcmQyLCB3b3JkMy4gICovCisJICB2YWx1ZSA9IGJmZF9nZXRfMzIgKGFiZmQsIChiZmRfYnl0ZSAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIHZhbHVlID0gKCh2YWx1ZSAmIDB4MDAwMEZGRkYpIDw8IDE2KSB8CisJICAgICgodmFsdWUgJiAweEZGRkYwMDAwKSA+PiAxNik7CisJICBicmVhazsKKwlkZWZhdWx0OgorCSAgcmV0dXJuIGJmZF9yZWxvY19ub3RzdXBwb3J0ZWQ7CisJfQorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBiZmRfcmVsb2Nfbm90c3VwcG9ydGVkOworICAgIH0KKworICBzd2l0Y2ggKChyX3R5cGUgJiBSX1JFTFRPKSA+PiA0KQorICAgIHsKKworICAgIGNhc2UgMDoJLyogUl9BQlMuICAqLworICAgICAgcGx1c19mYWN0b3IgPSBSdmFsdWU7CisgICAgICBicmVhazsKKyAgICBjYXNlIDE6CS8qIFJfUENSRUwuICAqLworICAgICAgcGx1c19mYWN0b3IgPSBSdmFsdWUgLQorCShpbnB1dF9zZWN0aW9uLT5vdXRwdXRfc2VjdGlvbi0+dm1hICsgaW5wdXRfc2VjdGlvbi0+b3V0cHV0X29mZnNldCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIGJmZF9yZWxvY19ub3RzdXBwb3J0ZWQ7CisgICAgfQorCisgIGlmIChuZWcpCisgICAgeworICAgICAgaWYgKHBsdXNfZmFjdG9yID49IC12YWx1ZSkKKwluZWcycG9zID0gMTsKKyAgICAgIC8qIFdlIG5lZWQgdG8gY2hhbmdlIGxvYWQvc3RvciB3aXRoIG5lZ2F0aXZlCisJIGRpc3BsIG9wY29kZSB0byBwb3NpdGl2ZSBkaXNwIG9wY29kZSAoQ1IxNkMpLiAgKi8KKyAgICB9CisKKyAgdmFsdWUgPSB2YWx1ZSArIChwbHVzX2ZhY3RvciA+PiBjb2RlX2ZhY3Rvcik7CisKKyAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgIGNhc2UgUl9OVU1CRVI6CisgICAgICBzd2l0Y2ggKHNpemUpCisJeworCWNhc2UgUl9TXzE2Q18wODogCS8qIE9uZSBieXRlLiAgKi8KKwkgIGlmICh2YWx1ZSA+IChpbnQpIE1BWF9VQllURSB8fCB2YWx1ZSA8IE1JTl9CWVRFKQorCSAgICByZXR1cm4gYmZkX3JlbG9jX292ZXJmbG93OworCSAgdmFsdWUgJj0gMHhGRjsKKwkgIGJmZF9wdXRfOCAoYWJmZCwgKGJmZF92bWEpIHZhbHVlLCAodW5zaWduZWQgY2hhciAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIHJldHVybiBiZmRfcmVsb2Nfb2s7CisJICBicmVhazsKKwljYXNlIFJfU18xNkNfMTY6CS8qIFR3byBieXRlcy4gICovCisJICBpZiAodmFsdWUgPiAoaW50KSBNQVhfVVdPUkQgfHwgdmFsdWUgPCBNSU5fV09SRCkKKwkgICAgcmV0dXJuIGJmZF9yZWxvY19vdmVyZmxvdzsKKwkgIHZhbHVlICY9IDB4RkZGRjsKKwkgIHN3b3JkID0gdmFsdWU7CisJICBiZmRfcHV0XzE2IChhYmZkLCAoYmZkX3ZtYSkgc3dvcmQsCisJCSAgICAgICh1bnNpZ25lZCBjaGFyICopIGRhdGEgKyBvY3RldHMpOworCSAgcmV0dXJuIGJmZF9yZWxvY19vazsKKwkgIGJyZWFrOworCWNhc2UgUl9TXzE2Q18zMjoJLyogRm91ciBieXRlcy4gICovCisJICB2YWx1ZSAmPSAweEZGRkZGRkZGOworCSAgYmZkX3B1dF8zMiAoYWJmZCwgKGJmZF92bWEpIHZhbHVlLCAoYmZkX2J5dGUgKikgZGF0YSArIG9jdGV0cyk7CisJICByZXR1cm4gYmZkX3JlbG9jX29rOworCSAgYnJlYWs7CisJZGVmYXVsdDoKKwkgIHJldHVybiBiZmRfcmVsb2Nfbm90c3VwcG9ydGVkOworCX0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBSXzE2Q19ESVNQTDoKKyAgICAgIHN3aXRjaCAoc2l6ZSkKKwl7CisJY2FzZSBSX1NfMTZDXzA0OgkvKiB3b3JkMSg0LTcpLiAgKi8KKwkgIGlmICgodmFsdWUgLSAzMikgPiAzMiB8fCB2YWx1ZSA8IDIpCisJICAgIHJldHVybiBiZmRfcmVsb2Nfb3ZlcmZsb3c7CisJICB2YWx1ZSA+Pj0gMTsKKwkgIHZhbHVlLS07CisJICB2YWx1ZSAmPSAweEY7CisJICB2YWx1ZSA8PD0gNDsKKwkgIHZhbHVlIHw9IGxlZnRfdmFsOworCSAgYmZkX3B1dF84IChhYmZkLCAoYmZkX3ZtYSkgdmFsdWUsICh1bnNpZ25lZCBjaGFyICopIGRhdGEgKyBvY3RldHMpOworCSAgcmV0dXJuIGJmZF9yZWxvY19vazsKKwkgIGJyZWFrOworCWNhc2UgUl9TXzE2Q18wODogICAgLyogd29yZDEoMC0zLDgtMTEpLiAgKi8KKwkgIGlmICh2YWx1ZSA+IDI1NSB8fCB2YWx1ZSA8IC0yNTYgfHwgdmFsdWUgPT0gMHg4MCkKKwkgICAgcmV0dXJuIGJmZF9yZWxvY19vdmVyZmxvdzsKKwkgIHZhbHVlICY9IDB4MUZGOworCSAgdmFsdWUgPj49IDE7CisJICBzd29yZCA9IHZhbHVlICYgMHgwMDBGOworCSAgc3dvcmQgfD0gKHZhbHVlICYgMHgwMEYwKSA8PCA0OworCSAgc3dvcmQgfD0gbGVmdF92YWw7CisJICBiZmRfcHV0XzE2IChhYmZkLCAoYmZkX3ZtYSkgc3dvcmQsCisJCSAgICAgICh1bnNpZ25lZCBjaGFyICopIGRhdGEgKyBvY3RldHMpOworCSAgcmV0dXJuIGJmZF9yZWxvY19vazsKKwkgIGJyZWFrOworCWNhc2UgUl9TXzE2Q18xNjogICAgLyogd29yZDIuICAqLworCSAgaWYgKHZhbHVlID4gNjU1MzUgfHwgdmFsdWUgPCAtNjU1MzYpCisJICAgIHJldHVybiBiZmRfcmVsb2Nfb3ZlcmZsb3c7CisJICB2YWx1ZSA+Pj0gMTsKKwkgIHZhbHVlICY9IDB4RkZGRjsKKwkgIHZhbHVlID0gKCh2YWx1ZSAmIDB4ODAwMCkgPj4gMTUpIHwgKCh2YWx1ZSAmIDB4N0ZGRikgPDwgMSk7CisJICBzd29yZCA9IHZhbHVlOworCSAgYmZkX3B1dF8xNiAoYWJmZCwgKGJmZF92bWEpIHN3b3JkLAorCQkgICAgICAodW5zaWduZWQgY2hhciAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIHJldHVybiBiZmRfcmVsb2Nfb2s7CisJICBicmVhazsKKwljYXNlIFJfU18xNkNfMjRfYToJLyogd29yZDEoMC03KSx3b3JkMi4gICovCisJICBpZiAodmFsdWUgPiAxNjc3NzIxNSB8fCB2YWx1ZSA8IC0xNjc3NzIxNikKKwkgICAgcmV0dXJuIGJmZF9yZWxvY19vdmVyZmxvdzsKKwkgIHZhbHVlICY9IDB4MUZGRkZGRjsKKwkgIHZhbHVlID4+PSAxOworCSAgdmFsdWUgPSAoKHZhbHVlICYgMHgwMDAwN0ZGRikgPDwgMTcpIHwKKwkgICAgKCh2YWx1ZSAmIDB4MDA4MDAwMDApID4+IDcpIHwgKCh2YWx1ZSAmIDB4MDA3RjgwMDApID4+IDE1KTsKKwkgIHZhbHVlIHw9IGxlZnRfdmFsOworCSAgYmZkX3B1dF8zMiAoYWJmZCwgKGJmZF92bWEpIHZhbHVlLCAoYmZkX2J5dGUgKikgZGF0YSArIG9jdGV0cyk7CisJICByZXR1cm4gYmZkX3JlbG9jX29rOworCSAgYnJlYWs7CisJY2FzZSBSX1NfMTZDXzI0OiAgICAvKiB3b3JkMigwLTMsOC0xMSksd29yZDMuICAqLworCSAgaWYgKHZhbHVlID4gMTY3NzcyMTUgfHwgdmFsdWUgPCAtMTY3NzcyMTYpCisJICAgIHJldHVybiBiZmRfcmVsb2Nfb3ZlcmZsb3c7CisJICB2YWx1ZSAmPSAweDFGRkZGRkY7CisJICB2YWx1ZSA+Pj0gMTsKKworCSAgdmFsdWUgPSAoKHZhbHVlICYgMHgwMDdGRkZGRikgPDwgMSkgfCAoKHZhbHVlICYgMHgwMDgwMDAwMCkgPj4gMjMpOworCisJICB2YWx1ZSA9ICgodmFsdWUgJiAweDAwMDBGRkZGKSA8PCAxNikgfAorCSAgICAoKHZhbHVlICYgMHgwMDBGMDAwMCkgPj4gOCkgfCAoKHZhbHVlICYgMHgwMEYwMDAwMCkgPj4gMjApOworCSAgdmFsdWUgfD0gbGVmdF92YWw7CisJICBiZmRfcHV0XzMyIChhYmZkLCAoYmZkX3ZtYSkgdmFsdWUsIChiZmRfYnl0ZSAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIHJldHVybiBiZmRfcmVsb2Nfb2s7CisJICBicmVhazsKKwlkZWZhdWx0OgorCSAgcmV0dXJuIGJmZF9yZWxvY19ub3RzdXBwb3J0ZWQ7CisJfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJfMTZDX1JFR1JFTDoKKyAgICAgIHN3aXRjaCAoc2l6ZSkKKwl7CisJY2FzZSBSX1NfMTZDXzA0OgkvKiB3b3JkMSgxMi0xNSkgbm90IHNjYWxlZC4gICovCisJICBpZiAodmFsdWUgPiAxMyB8fCB2YWx1ZSA8IDApCisJICAgIHJldHVybiBiZmRfcmVsb2Nfb3ZlcmZsb3c7CisJICB2YWx1ZSAmPSAweEY7CisJICB2YWx1ZSB8PSBsZWZ0X3ZhbDsKKwkgIGJmZF9wdXRfOCAoYWJmZCwgKGJmZF92bWEpIHZhbHVlLCAodW5zaWduZWQgY2hhciAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIHJldHVybiBiZmRfcmVsb2Nfb2s7CisJICBicmVhazsKKwljYXNlIFJfU18xNkNfMDRfYToJLyogd29yZDEoMTItMTUpIG5vdCBzY2FsZWQuICAqLworCSAgaWYgKHZhbHVlID4gMjYgfHwgdmFsdWUgPCAwKQorCSAgICByZXR1cm4gYmZkX3JlbG9jX292ZXJmbG93OworCSAgdmFsdWUgJj0gMHgxRjsKKwkgIHZhbHVlID4+PSAxOworCSAgdmFsdWUgfD0gbGVmdF92YWw7CisJICBiZmRfcHV0XzggKGFiZmQsIChiZmRfdm1hKSB2YWx1ZSwgKHVuc2lnbmVkIGNoYXIgKikgZGF0YSArIG9jdGV0cyk7CisJICByZXR1cm4gYmZkX3JlbG9jX29rOworCSAgYnJlYWs7CisJY2FzZSBSX1NfMTZDXzE0OgkvKiB3b3JkMSg0LTUpLHdvcmQyKDAtMyw4LTE1KS4gICovCisJICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gMTYzODMpCisJICAgIHJldHVybiBiZmRfcmVsb2Nfb3ZlcmZsb3c7CisJICB2YWx1ZSAmPSAweDNGRkY7CisJICB2YWx1ZSA9ICgodmFsdWUgJiAweDAwMDAwMGMwKSA8PCAyNCkgfAorCSAgICAoKHZhbHVlICYgMHgwMDAwM0YwMCkgPDwgMTYpIHwKKwkgICAgKCh2YWx1ZSAmIDB4MDAwMDAwMEYpIDw8IDE2KSB8ICh2YWx1ZSAmIDB4MDAwMDAwMzApOworCSAgdmFsdWUgfD0gbGVmdF92YWw7CisJICBiZmRfcHV0XzMyIChhYmZkLCAoYmZkX3ZtYSkgdmFsdWUsIChiZmRfYnl0ZSAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIHJldHVybiBiZmRfcmVsb2Nfb2s7CisJICBicmVhazsKKwljYXNlIFJfU18xNkNfMTY6CS8qIHdvcmQyLiAgKi8KKwkgIGlmICh2YWx1ZSA+IDY1NTM1IHx8IHZhbHVlIDwgMCkKKwkgICAgcmV0dXJuIGJmZF9yZWxvY19vdmVyZmxvdzsKKwkgIHZhbHVlICY9IDB4RkZGRjsKKwkgIHN3b3JkID0gdmFsdWU7CisJICBiZmRfcHV0XzE2IChhYmZkLCAoYmZkX3ZtYSkgc3dvcmQsCisJCSAgICAgICh1bnNpZ25lZCBjaGFyICopIGRhdGEgKyBvY3RldHMpOworCSAgcmV0dXJuIGJmZF9yZWxvY19vazsKKwkgIGJyZWFrOworCWNhc2UgUl9TXzE2Q18yMDoJLyogd29yZDIoOC0xMSksd29yZDMuICAqLworCSAgLyogaWYgKHZhbHVlID4gMTA0ODU3NSB8fCB2YWx1ZSA8IDApIFJFTE9DX0VSUk9SKDEpOyAqLworCSAgdmFsdWUgJj0gMHhGRkZGRjsKKwkgIHN3b3JkID0gdmFsdWUgJiAweDAwMDBGRkZGOworCSAgdmFsdWUgPSAodmFsdWUgJiAweDAwMEYwMDAwKSA+PiAxNjsKKwkgIHZhbHVlIHw9IGxlZnRfdmFsOworCSAgYmZkX3B1dF84IChhYmZkLCAoYmZkX3ZtYSkgdmFsdWUsICh1bnNpZ25lZCBjaGFyICopIGRhdGEgKyBvY3RldHMpOworCSAgYmZkX3B1dF8xNiAoYWJmZCwgKGJmZF92bWEpIHN3b3JkLAorCQkgICAgICAodW5zaWduZWQgY2hhciAqKSBkYXRhICsgb2N0ZXRzICsgMSk7CisJICBpZiAobmVnMnBvcykKKwkgICAgeworCSAgICAgIC8qIENoYW5nZSBsb2FkL3N0b3IgbmVnYXRpdmUgZGlzcGwgb3Bjb2RlCisJICAgICAgICAgdG8gbG9hZC9zdG9yIHBvc2l0aXZlIGRpc3BsIG9wY29kZS4gICovCisJICAgICAgdmFsdWUgPSBiZmRfZ2V0XzggKGFiZmQsIChjaGFyICopIGRhdGEgKyBvY3RldHMgLSAzKTsKKwkgICAgICB2YWx1ZSAmPSAweEY3OworCSAgICAgIHZhbHVlIHw9IDB4MjsKKwkgICAgICBiZmRfcHV0XzggKGFiZmQsIChiZmRfdm1hKSB2YWx1ZSwKKwkJCSAodW5zaWduZWQgY2hhciAqKSBkYXRhICsgb2N0ZXRzIC0gMyk7CisJICAgIH0KKwkgIHJldHVybiBiZmRfcmVsb2Nfb2s7CisJICBicmVhazsKKwlkZWZhdWx0OgorCSAgcmV0dXJuIGJmZF9yZWxvY19ub3RzdXBwb3J0ZWQ7CisJfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJfMTZDX0FCUzoKKyAgICAgIHN3aXRjaCAoc2l6ZSkKKwl7CisJY2FzZSBSX1NfMTZDXzIwOgkvKiB3b3JkMSgwLTMpLHdvcmQyLiAgKi8KKwkgIGlmICh2YWx1ZSA+IDEwNDg1NzUgfHwgdmFsdWUgPCAwKQorCSAgICByZXR1cm4gYmZkX3JlbG9jX292ZXJmbG93OworCSAgdmFsdWUgJj0gMHhGRkZGRjsKKwkgIHZhbHVlID0gKCh2YWx1ZSAmIDB4MDAwMEZGRkYpIDw8IDE2KSB8CisJICAgICgodmFsdWUgJiAweDAwMEYwMDAwKSA+PiAxNik7CisJICB2YWx1ZSB8PSBsZWZ0X3ZhbDsKKwkgIGJmZF9wdXRfMzIgKGFiZmQsIChiZmRfdm1hKSB2YWx1ZSwgKGJmZF9ieXRlICopIGRhdGEgKyBvY3RldHMpOworCSAgcmV0dXJuIGJmZF9yZWxvY19vazsKKwkgIGJyZWFrOworCWNhc2UgUl9TXzE2Q18yNDoJLyogd29yZDIoMC0zLDgtMTEpLHdvcmQzLiAgKi8KKwkgIC8qIGlmICh2YWx1ZSA+IDE2Nzc3MjE1IHx8IHZhbHVlIDwgMCkgUkVMT0NfRVJST1IoMSk7ICovCisJICB2YWx1ZSAmPSAweEZGRkZGRjsKKwkgIHZhbHVlID0gKCh2YWx1ZSAmIDB4MDAwMEZGRkYpIDw8IDE2KSB8CisJICAgICgodmFsdWUgJiAweDAwMEYwMDAwKSA+PiA4KSB8ICgodmFsdWUgJiAweDAwRjAwMDAwKSA+PiAyMCk7CisJICB2YWx1ZSB8PSBsZWZ0X3ZhbDsKKwkgIGJmZF9wdXRfMzIgKGFiZmQsIChiZmRfdm1hKSB2YWx1ZSwgKGJmZF9ieXRlICopIGRhdGEgKyBvY3RldHMpOworCSAgcmV0dXJuIGJmZF9yZWxvY19vazsKKwkgIGJyZWFrOworCWRlZmF1bHQ6CisJICByZXR1cm4gYmZkX3JlbG9jX25vdHN1cHBvcnRlZDsKKwl9CisgICAgICBicmVhazsKKworICAgIGNhc2UgUl8xNkNfSU1NRUQ6CisgICAgICBzd2l0Y2ggKHNpemUpCisJeworCWNhc2UgUl9TXzE2Q18wNDoJLyogd29yZDEvMig0LTcpLiAgKi8KKwkgIGlmICh2YWx1ZSA+IDE1IHx8IHZhbHVlIDwgLTEpCisJICAgIHJldHVybiBiZmRfcmVsb2Nfb3ZlcmZsb3c7CisJICB2YWx1ZSAmPSAweEY7CisJICB2YWx1ZSA8PD0gNDsKKwkgIHZhbHVlIHw9IGxlZnRfdmFsOworCSAgYmZkX3B1dF84IChhYmZkLCAoYmZkX3ZtYSkgdmFsdWUsICh1bnNpZ25lZCBjaGFyICopIGRhdGEgKyBvY3RldHMpOworCSAgcmV0dXJuIGJmZF9yZWxvY19vazsKKwkgIGJyZWFrOworCWNhc2UgUl9TXzE2Q18xNjoJLyogd29yZDIuICAqLworCSAgaWYgKHZhbHVlID4gMzI3NjcgfHwgdmFsdWUgPCAtMzI3NjgpCisJICAgIHJldHVybiBiZmRfcmVsb2Nfb3ZlcmZsb3c7CisJICB2YWx1ZSAmPSAweEZGRkY7CisJICBzd29yZCA9IHZhbHVlOworCSAgYmZkX3B1dF8xNiAoYWJmZCwgKGJmZF92bWEpIHN3b3JkLAorCQkgICAgICAodW5zaWduZWQgY2hhciAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIHJldHVybiBiZmRfcmVsb2Nfb2s7CisJICBicmVhazsKKwljYXNlIFJfU18xNkNfMjA6CS8qIHdvcmQxKDAtMyksd29yZDIuICAqLworCSAgaWYgKHZhbHVlID4gMTA0ODU3NSB8fCB2YWx1ZSA8IDApCisJICAgIHJldHVybiBiZmRfcmVsb2Nfb3ZlcmZsb3c7CisJICB2YWx1ZSAmPSAweEZGRkZGOworCSAgdmFsdWUgPSAoKHZhbHVlICYgMHgwMDAwRkZGRikgPDwgMTYpIHwKKwkgICAgKCh2YWx1ZSAmIDB4MDAwRjAwMDApID4+IDE2KTsKKwkgIHZhbHVlIHw9IGxlZnRfdmFsOworCSAgYmZkX3B1dF8zMiAoYWJmZCwgKGJmZF92bWEpIHZhbHVlLCAoYmZkX2J5dGUgKikgZGF0YSArIG9jdGV0cyk7CisJICByZXR1cm4gYmZkX3JlbG9jX29rOworCSAgYnJlYWs7CisJY2FzZSBSX1NfMTZDXzMyOgkvKiB3b3JkMiwgd29yZDMuICAqLworCSAgdmFsdWUgJj0gMHhGRkZGRkZGRjsKKwkgIHZhbHVlID0gKCh2YWx1ZSAmIDB4MDAwMEZGRkYpIDw8IDE2KSB8CisJICAgICgodmFsdWUgJiAweEZGRkYwMDAwKSA+PiAxNik7CisJICBiZmRfcHV0XzMyIChhYmZkLCAoYmZkX3ZtYSkgdmFsdWUsIChiZmRfYnl0ZSAqKSBkYXRhICsgb2N0ZXRzKTsKKwkgIHJldHVybiBiZmRfcmVsb2Nfb2s7CisJICBicmVhazsKKwlkZWZhdWx0OgorCSAgcmV0dXJuIGJmZF9yZWxvY19ub3RzdXBwb3J0ZWQ7CisJfQorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBiZmRfcmVsb2Nfbm90c3VwcG9ydGVkOworICAgIH0KK30KKworLyogUmVsb2NhdGUgYSBDUjE2QyBFTEYgc2VjdGlvbi4gICovCisKK3N0YXRpYyBiZmRfYm9vbGVhbgorZWxmMzJfY3IxNmNfcmVsb2NhdGVfc2VjdGlvbiAoYmZkICpvdXRwdXRfYmZkLAorCQkJICAgICAgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCisJCQkgICAgICBiZmQgKmlucHV0X2JmZCwKKwkJCSAgICAgIGFzZWN0aW9uICppbnB1dF9zZWN0aW9uLAorCQkJICAgICAgYmZkX2J5dGUgKmNvbnRlbnRzLAorCQkJICAgICAgRWxmX0ludGVybmFsX1JlbGEgKnJlbG9jcywKKwkJCSAgICAgIEVsZl9JbnRlcm5hbF9TeW0gKmxvY2FsX3N5bXMsCisJCQkgICAgICBhc2VjdGlvbiAqKmxvY2FsX3NlY3Rpb25zKQoreworICBFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFiX2hkcjsKKyAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipzeW1faGFzaGVzOworICBFbGZfSW50ZXJuYWxfUmVsYSAqcmVsLCAqcmVsZW5kOworCisgIHN5bXRhYl9oZHIgPSAmZWxmX3RkYXRhIChpbnB1dF9iZmQpLT5zeW10YWJfaGRyOworICBzeW1faGFzaGVzID0gZWxmX3N5bV9oYXNoZXMgKGlucHV0X2JmZCk7CisKKyAgcmVsID0gcmVsb2NzOworICByZWxlbmQgPSByZWxvY3MgKyBpbnB1dF9zZWN0aW9uLT5yZWxvY19jb3VudDsKKyAgZm9yICg7IHJlbCA8IHJlbGVuZDsgcmVsKyspCisgICAgeworICAgICAgaW50IHJfdHlwZTsKKyAgICAgIHJlbG9jX2hvd3RvX3R5cGUgKmhvd3RvOworICAgICAgdW5zaWduZWQgbG9uZyByX3N5bW5keDsKKyAgICAgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bTsKKyAgICAgIGFzZWN0aW9uICpzZWM7CisgICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaDsKKyAgICAgIGJmZF92bWEgcmVsb2NhdGlvbjsKKyAgICAgIGJmZF9yZWxvY19zdGF0dXNfdHlwZSByOworCisgICAgICByX3N5bW5keCA9IEVMRjMyX1JfU1lNIChyZWwtPnJfaW5mbyk7CisgICAgICByX3R5cGUgPSBFTEYzMl9SX1RZUEUgKHJlbC0+cl9pbmZvKTsKKyAgICAgIGhvd3RvID0gZWxmX2hvd3RvX3RhYmxlICsgcl90eXBlOworCisgICAgICBpZiAoaW5mby0+cmVsb2NhdGFibGUpCisJeworCSAgLyogVGhpcyBpcyBhIHJlbG9jYXRhYmxlIGxpbmsuICBXZSBkb24ndCBoYXZlIHRvIGNoYW5nZQorCSAgICAgYW55dGhpbmcsIHVubGVzcyB0aGUgcmVsb2MgaXMgYWdhaW5zdCBhIHNlY3Rpb24gc3ltYm9sLAorCSAgICAgaW4gd2hpY2ggY2FzZSB3ZSBoYXZlIHRvIGFkanVzdCBhY2NvcmRpbmcgdG8gd2hlcmUgdGhlCisJICAgICBzZWN0aW9uIHN5bWJvbCB3aW5kcyB1cCBpbiB0aGUgb3V0cHV0IHNlY3Rpb24uICAqLworCSAgaWYgKHJfc3ltbmR4IDwgc3ltdGFiX2hkci0+c2hfaW5mbykKKwkgICAgeworCSAgICAgIHN5bSA9IGxvY2FsX3N5bXMgKyByX3N5bW5keDsKKwkgICAgICBpZiAoRUxGX1NUX1RZUEUgKHN5bS0+c3RfaW5mbykgPT0gU1RUX1NFQ1RJT04pCisJCXsKKwkJICBzZWMgPSBsb2NhbF9zZWN0aW9uc1tyX3N5bW5keF07CisJCSAgcmVsLT5yX2FkZGVuZCArPSBzZWMtPm91dHB1dF9vZmZzZXQgKyBzeW0tPnN0X3ZhbHVlOworCQl9CisJICAgIH0KKworCSAgY29udGludWU7CisJfQorCisgICAgICAvKiBUaGlzIGlzIGEgZmluYWwgbGluay4gICovCisgICAgICBoID0gTlVMTDsKKyAgICAgIHN5bSA9IE5VTEw7CisgICAgICBzZWMgPSBOVUxMOworICAgICAgaWYgKHJfc3ltbmR4IDwgc3ltdGFiX2hkci0+c2hfaW5mbykKKwl7CisJICBzeW0gPSBsb2NhbF9zeW1zICsgcl9zeW1uZHg7CisJICBzZWMgPSBsb2NhbF9zZWN0aW9uc1tyX3N5bW5keF07CisJICByZWxvY2F0aW9uID0gX2JmZF9lbGZfcmVsYV9sb2NhbF9zeW0gKG91dHB1dF9iZmQsIHN5bSwgJnNlYywgcmVsKTsKKwl9CisgICAgICBlbHNlCisJeworCSAgYmZkX2Jvb2xlYW4gdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkOworCisJICBSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCAoaW5mbywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLCByZWwsCisJCQkJICAgcl9zeW1uZHgsIHN5bXRhYl9oZHIsIHN5bV9oYXNoZXMsCisJCQkJICAgaCwgc2VjLCByZWxvY2F0aW9uLAorCQkJCSAgIHVucmVzb2x2ZWRfcmVsb2MsIHdhcm5lZCk7CisJfQorCisgICAgICByID0gY3IxNmNfZWxmX2ZpbmFsX2xpbmtfcmVsb2NhdGUgKGhvd3RvLCBpbnB1dF9iZmQsIG91dHB1dF9iZmQsCisJCQkJCSBpbnB1dF9zZWN0aW9uLAorCQkJCQkgY29udGVudHMsIHJlbC0+cl9vZmZzZXQsCisJCQkJCSByZWxvY2F0aW9uLCByZWwtPnJfYWRkZW5kLAorCQkJCQkgaW5mbywgc2VjLCBoID09IE5VTEwpOworCisgICAgICBpZiAociAhPSBiZmRfcmVsb2Nfb2spCisJeworCSAgY29uc3QgY2hhciAqbmFtZTsKKwkgIGNvbnN0IGNoYXIgKm1zZyA9IChjb25zdCBjaGFyICopIDA7CisKKwkgIGlmIChoICE9IE5VTEwpCisJICAgIG5hbWUgPSBoLT5yb290LnJvb3Quc3RyaW5nOworCSAgZWxzZQorCSAgICB7CisJICAgICAgbmFtZSA9IChiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uCisJCSAgICAgIChpbnB1dF9iZmQsIHN5bXRhYl9oZHItPnNoX2xpbmssIHN5bS0+c3RfbmFtZSkpOworCSAgICAgIGlmIChuYW1lID09IE5VTEwgfHwgKm5hbWUgPT0gJ1wwJykKKwkJbmFtZSA9IGJmZF9zZWN0aW9uX25hbWUgKGlucHV0X2JmZCwgc2VjKTsKKwkgICAgfQorCisJICBzd2l0Y2ggKHIpCisJICAgIHsKKwkgICAgY2FzZSBiZmRfcmVsb2Nfb3ZlcmZsb3c6CisJICAgICAgaWYgKCEoKCppbmZvLT5jYWxsYmFja3MtPnJlbG9jX292ZXJmbG93KQorCQkgICAgKGluZm8sIG5hbWUsIGhvd3RvLT5uYW1lLCAoYmZkX3ZtYSkgMCwKKwkJICAgICBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbC0+cl9vZmZzZXQpKSkKKwkJcmV0dXJuIEZBTFNFOworCSAgICAgIGJyZWFrOworCisJICAgIGNhc2UgYmZkX3JlbG9jX3VuZGVmaW5lZDoKKwkgICAgICBpZiAoISgoKmluZm8tPmNhbGxiYWNrcy0+dW5kZWZpbmVkX3N5bWJvbCkKKwkJICAgIChpbmZvLCBuYW1lLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sCisJCSAgICAgcmVsLT5yX29mZnNldCwgVFJVRSkpKQorCQlyZXR1cm4gRkFMU0U7CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBiZmRfcmVsb2Nfb3V0b2ZyYW5nZToKKwkgICAgICBtc2cgPSBfKCJpbnRlcm5hbCBlcnJvcjogb3V0IG9mIHJhbmdlIGVycm9yIik7CisJICAgICAgZ290byBjb21tb25fZXJyb3I7CisKKwkgICAgY2FzZSBiZmRfcmVsb2Nfbm90c3VwcG9ydGVkOgorCSAgICAgIG1zZyA9IF8oImludGVybmFsIGVycm9yOiB1bnN1cHBvcnRlZCByZWxvY2F0aW9uIGVycm9yIik7CisJICAgICAgZ290byBjb21tb25fZXJyb3I7CisKKwkgICAgY2FzZSBiZmRfcmVsb2NfZGFuZ2Vyb3VzOgorCSAgICAgIG1zZyA9IF8oImludGVybmFsIGVycm9yOiBkYW5nZXJvdXMgZXJyb3IiKTsKKwkgICAgICBnb3RvIGNvbW1vbl9lcnJvcjsKKworCSAgICBkZWZhdWx0OgorCSAgICAgIG1zZyA9IF8oImludGVybmFsIGVycm9yOiB1bmtub3duIGVycm9yIik7CisJICAgICAgLyogZmFsbCB0aHJvdWdoICovCisKKwkgICAgY29tbW9uX2Vycm9yOgorCSAgICAgIGlmICghKCgqaW5mby0+Y2FsbGJhY2tzLT53YXJuaW5nKQorCQkgICAgKGluZm8sIG1zZywgbmFtZSwgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLAorCQkgICAgIHJlbC0+cl9vZmZzZXQpKSkKKwkJcmV0dXJuIEZBTFNFOworCSAgICAgIGJyZWFrOworCSAgICB9CisJfQorICAgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGFzZWN0aW9uICoKK2VsZjMyX2NyMTZjX2djX21hcmtfaG9vayAoYXNlY3Rpb24gKnNlYywKKwkJCSAgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8gQVRUUklCVVRFX1VOVVNFRCwKKwkJCSAgRWxmX0ludGVybmFsX1JlbGEgKnJlbCwKKwkJCSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgsCisJCQkgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bSkKK3sKKyAgaWYgKGggIT0gTlVMTCkKKyAgICB7CisgICAgICBzd2l0Y2ggKEVMRjMyX1JfVFlQRSAocmVsLT5yX2luZm8pKQorCXsKKworCWRlZmF1bHQ6CisJICBzd2l0Y2ggKGgtPnJvb3QudHlwZSkKKwkgICAgeworCSAgICBjYXNlIGJmZF9saW5rX2hhc2hfZGVmaW5lZDoKKwkgICAgY2FzZSBiZmRfbGlua19oYXNoX2RlZndlYWs6CisJICAgICAgcmV0dXJuIGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKKworCSAgICBjYXNlIGJmZF9saW5rX2hhc2hfY29tbW9uOgorCSAgICAgIHJldHVybiBoLT5yb290LnUuYy5wLT5zZWN0aW9uOworCisJICAgIGRlZmF1bHQ6CisJICAgICAgYnJlYWs7CisJICAgIH0KKwl9CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgcmV0dXJuIGJmZF9zZWN0aW9uX2Zyb21fZWxmX2luZGV4IChzZWMtPm93bmVyLCBzeW0tPnN0X3NobmR4KTsKKyAgICB9CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIFVwZGF0ZSB0aGUgZ290IGVudHJ5IHJlZmVyZW5jZSBjb3VudHMgZm9yIHRoZSBzZWN0aW9uIGJlaW5nIHJlbW92ZWQuICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZjMyX2NyMTZjX2djX3N3ZWVwX2hvb2sgKGJmZCAqYWJmZCBBVFRSSUJVVEVfVU5VU0VELAorCQkJICAgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8gQVRUUklCVVRFX1VOVVNFRCwKKwkJCSAgIGFzZWN0aW9uICpzZWMgQVRUUklCVVRFX1VOVVNFRCwKKwkJCSAgIGNvbnN0IEVsZl9JbnRlcm5hbF9SZWxhICpyZWxvY3MgQVRUUklCVVRFX1VOVVNFRCkKK3sKKyAgLyogV2UgZG9uJ3Qgc3VwcG9ydCBnYXJiYWdlIGNvbGxlY3Rpb24gb2YgR09UIGFuZCBQTFQgcmVsb2NzIHlldC4gICovCisgIHJldHVybiBUUlVFOworfQorCisvKiBDUjE2QyBFTEYgdXNlcyB0aHJlZSBjb21tb24gc2VjdGlvbnM6CisgICBPbmUgaXMgZm9yIGRlZmF1bHQgY29tbW9uIHN5bWJvbHMgKHBsYWNlZCBpbiB1c3VhbCBjb21tb24gc2VjdGlvbikuCisgICBTZWNvbmQgaXMgZm9yIG5lYXIgY29tbW9uIHN5bWJvbHMgKHBsYWNlZCBpbiAibmNvbW1vbiIgc2VjdGlvbikuCisgICBUaGlyZCBpcyBmb3IgZmFyIGNvbW1vbiBzeW1ib2xzIChwbGFjZWQgaW4gImZjb21tb24iIHNlY3Rpb24pLgorICAgVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBlbGYzMi1taXBzIGFyY2hpdGVjdHVyZSAqLworCitzdGF0aWMgYXNlY3Rpb24gIGNyMTZjX2VsZl9mY29tX3NlY3Rpb247CitzdGF0aWMgYXN5bWJvbCAgIGNyMTZjX2VsZl9mY29tX3N5bWJvbDsKK3N0YXRpYyBhc3ltYm9sICogY3IxNmNfZWxmX2Zjb21fc3ltYm9sX3B0cjsKK3N0YXRpYyBhc2VjdGlvbiAgY3IxNmNfZWxmX25jb21fc2VjdGlvbjsKK3N0YXRpYyBhc3ltYm9sICAgY3IxNmNfZWxmX25jb21fc3ltYm9sOworc3RhdGljIGFzeW1ib2wgKiBjcjE2Y19lbGZfbmNvbV9zeW1ib2xfcHRyOworCisvKiBHaXZlbiBhIEJGRCBzZWN0aW9uLCB0cnkgdG8gbG9jYXRlIHRoZQorICAgY29ycmVzcG9uZGluZyBFTEYgc2VjdGlvbiBpbmRleC4gICovCisKK3N0YXRpYyBiZmRfYm9vbGVhbgorZWxmMzJfY3IxNmNfc2VjdGlvbl9mcm9tX2JmZF9zZWN0aW9uIChiZmQgKmFiZmQgQVRUUklCVVRFX1VOVVNFRCwKKwkJCQkgICAgICBhc2VjdGlvbiAqc2VjLAorCQkJCSAgICAgIGludCAqcmV0dmFsKQoreworICBpZiAoc3RyY21wIChiZmRfZ2V0X3NlY3Rpb25fbmFtZSAoYWJmZCwgc2VjKSwgIi5mY29tbW9uIikgPT0gMCkKKyAgICAqcmV0dmFsID0gU0hOX0NSMTZDX0ZDT01NT047CisgIGVsc2UgaWYgKHN0cmNtcCAoYmZkX2dldF9zZWN0aW9uX25hbWUgKGFiZmQsIHNlYyksICIubmNvbW1vbiIpID09IDApCisgICAgKnJldHZhbCA9IFNITl9DUjE2Q19OQ09NTU9OOworICBlbHNlCisgICAgcmV0dXJuIEZBTFNFOworCisgIHJldHVybiBUUlVFOworfQorCisvKiBIYW5kbGUgdGhlIHNwZWNpYWwgQ1IxNkMgc2VjdGlvbiBudW1iZXJzIHRoYXQgYSBzeW1ib2wgbWF5IHVzZS4gICovCisKK3N0YXRpYyB2b2lkCitlbGYzMl9jcjE2Y19zeW1ib2xfcHJvY2Vzc2luZyAoYmZkICphYmZkIEFUVFJJQlVURV9VTlVTRUQsCisJCQkgICAgICAgYXN5bWJvbCAqYXN5bSkKK3sKKyAgZWxmX3N5bWJvbF90eXBlICplbGZzeW0gPSAoZWxmX3N5bWJvbF90eXBlICopIGFzeW07CisgIHVuc2lnbmVkIGludCBpbmR4OworCisgIGluZHggPSBlbGZzeW0tPmludGVybmFsX2VsZl9zeW0uc3Rfc2huZHg7CisKKyAgc3dpdGNoIChpbmR4KQorICAgIHsKKyAgICBjYXNlIFNITl9DUjE2Q19GQ09NTU9OOgorICAgICAgaWYgKGNyMTZjX2VsZl9mY29tX3NlY3Rpb24ubmFtZSA9PSBOVUxMKQorCXsKKwkgIC8qIEluaXRpYWxpemUgdGhlIGZhciBjb21tb24gc2VjdGlvbi4gICovCisJICBjcjE2Y19lbGZfZmNvbV9zZWN0aW9uLm5hbWUgPSAiLmZjb21tb24iOworCSAgY3IxNmNfZWxmX2Zjb21fc2VjdGlvbi5mbGFncyA9IFNFQ19JU19DT01NT04gfCBTRUNfQUxMT0M7CisJICBjcjE2Y19lbGZfZmNvbV9zZWN0aW9uLm91dHB1dF9zZWN0aW9uID0gJmNyMTZjX2VsZl9mY29tX3NlY3Rpb247CisJICBjcjE2Y19lbGZfZmNvbV9zZWN0aW9uLnN5bWJvbCA9ICZjcjE2Y19lbGZfZmNvbV9zeW1ib2w7CisJICBjcjE2Y19lbGZfZmNvbV9zZWN0aW9uLnN5bWJvbF9wdHJfcHRyID0gJmNyMTZjX2VsZl9mY29tX3N5bWJvbF9wdHI7CisJICBjcjE2Y19lbGZfZmNvbV9zeW1ib2wubmFtZSA9ICIuZmNvbW1vbiI7CisJICBjcjE2Y19lbGZfZmNvbV9zeW1ib2wuZmxhZ3MgPSBCU0ZfU0VDVElPTl9TWU07CisJICBjcjE2Y19lbGZfZmNvbV9zeW1ib2wuc2VjdGlvbiA9ICZjcjE2Y19lbGZfZmNvbV9zZWN0aW9uOworCSAgY3IxNmNfZWxmX2Zjb21fc3ltYm9sX3B0ciA9ICZjcjE2Y19lbGZfZmNvbV9zeW1ib2w7CisJfQorICAgICAgYXN5bS0+c2VjdGlvbiA9ICZjcjE2Y19lbGZfZmNvbV9zZWN0aW9uOworICAgICAgYXN5bS0+dmFsdWUgPSBlbGZzeW0tPmludGVybmFsX2VsZl9zeW0uc3Rfc2l6ZTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgU0hOX0NSMTZDX05DT01NT046CisgICAgICBpZiAoY3IxNmNfZWxmX25jb21fc2VjdGlvbi5uYW1lID09IE5VTEwpCisJeworCSAgLyogSW5pdGlhbGl6ZSB0aGUgZmFyIGNvbW1vbiBzZWN0aW9uLiAgKi8KKwkgIGNyMTZjX2VsZl9uY29tX3NlY3Rpb24ubmFtZSA9ICIubmNvbW1vbiI7CisJICBjcjE2Y19lbGZfbmNvbV9zZWN0aW9uLmZsYWdzID0gU0VDX0lTX0NPTU1PTiB8IFNFQ19BTExPQzsKKwkgIGNyMTZjX2VsZl9uY29tX3NlY3Rpb24ub3V0cHV0X3NlY3Rpb24gPSAmY3IxNmNfZWxmX25jb21fc2VjdGlvbjsKKwkgIGNyMTZjX2VsZl9uY29tX3NlY3Rpb24uc3ltYm9sID0gJmNyMTZjX2VsZl9uY29tX3N5bWJvbDsKKwkgIGNyMTZjX2VsZl9uY29tX3NlY3Rpb24uc3ltYm9sX3B0cl9wdHIgPSAmY3IxNmNfZWxmX25jb21fc3ltYm9sX3B0cjsKKwkgIGNyMTZjX2VsZl9uY29tX3N5bWJvbC5uYW1lID0gIi5uY29tbW9uIjsKKwkgIGNyMTZjX2VsZl9uY29tX3N5bWJvbC5mbGFncyA9IEJTRl9TRUNUSU9OX1NZTTsKKwkgIGNyMTZjX2VsZl9uY29tX3N5bWJvbC5zZWN0aW9uID0gJmNyMTZjX2VsZl9uY29tX3NlY3Rpb247CisJICBjcjE2Y19lbGZfbmNvbV9zeW1ib2xfcHRyID0gJmNyMTZjX2VsZl9uY29tX3N5bWJvbDsKKwl9CisgICAgICBhc3ltLT5zZWN0aW9uID0gJmNyMTZjX2VsZl9uY29tX3NlY3Rpb247CisgICAgICBhc3ltLT52YWx1ZSA9IGVsZnN5bS0+aW50ZXJuYWxfZWxmX3N5bS5zdF9zaXplOworICAgICAgYnJlYWs7CisgICAgfQorfQorCisvKiBIb29rIGNhbGxlZCBieSB0aGUgbGlua2VyIHJvdXRpbmUgd2hpY2ggYWRkcyBzeW1ib2xzIGZyb20gYW4gb2JqZWN0CisgICBmaWxlLiAgV2UgbXVzdCBoYW5kbGUgdGhlIHNwZWNpYWwgY3IxNmMgc2VjdGlvbiBudW1iZXJzIGhlcmUuICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZjMyX2NyMTZjX2FkZF9zeW1ib2xfaG9vayAoYmZkICphYmZkLAorCQkJICAgICBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbyBBVFRSSUJVVEVfVU5VU0VELAorCQkJICAgICBFbGZfSW50ZXJuYWxfU3ltICpzeW0sCisJCQkgICAgIGNvbnN0IGNoYXIgKipuYW1lcCBBVFRSSUJVVEVfVU5VU0VELAorCQkJICAgICBmbGFnd29yZCAqZmxhZ3NwIEFUVFJJQlVURV9VTlVTRUQsCisJCQkgICAgIGFzZWN0aW9uICoqc2VjcCwKKwkJCSAgICAgYmZkX3ZtYSAqdmFscCkKK3sKKyAgdW5zaWduZWQgaW50IGluZHggPSBzeW0tPnN0X3NobmR4OworCisgIHN3aXRjaCAoaW5keCkKKyAgICB7CisgICAgY2FzZSBTSE5fQ1IxNkNfRkNPTU1PTjoKKyAgICAgICpzZWNwID0gYmZkX21ha2Vfc2VjdGlvbl9vbGRfd2F5IChhYmZkLCAiLmZjb21tb24iKTsKKyAgICAgICgqc2VjcCktPmZsYWdzIHw9IFNFQ19JU19DT01NT047CisgICAgICAqdmFscCA9IHN5bS0+c3Rfc2l6ZTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgU0hOX0NSMTZDX05DT01NT046CisgICAgICAqc2VjcCA9IGJmZF9tYWtlX3NlY3Rpb25fb2xkX3dheSAoYWJmZCwgIi5uY29tbW9uIik7CisgICAgICAoKnNlY3ApLT5mbGFncyB8PSBTRUNfSVNfQ09NTU9OOworICAgICAgKnZhbHAgPSBzeW0tPnN0X3NpemU7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBiZmRfYm9vbGVhbgorZWxmMzJfY3IxNmNfbGlua19vdXRwdXRfc3ltYm9sX2hvb2sgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvIEFUVFJJQlVURV9VTlVTRUQsCisJCQkJICAgICBjb25zdCBjaGFyICpuYW1lIEFUVFJJQlVURV9VTlVTRUQsCisJCQkJICAgICBFbGZfSW50ZXJuYWxfU3ltICpzeW0sCisJCQkJICAgICBhc2VjdGlvbiAqaW5wdXRfc2VjLAorCQkJCSAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmggQVRUUklCVVRFX1VOVVNFRCkKK3sKKyAgLyogSWYgd2Ugc2VlIGEgY29tbW9uIHN5bWJvbCwgd2hpY2ggaW1wbGllcyBhIHJlbG9jYXRhYmxlIGxpbmssIHRoZW4KKyAgICAgaWYgYSBzeW1ib2wgd2FzIGluIGEgc3BlY2lhbCBjb21tb24gc2VjdGlvbiBpbiBhbiBpbnB1dCBmaWxlLCBtYXJrCisgICAgIGl0IGFzIGEgc3BlY2lhbCBjb21tb24gaW4gdGhlIG91dHB1dCBmaWxlLiAgKi8KKworICBpZiAoc3ltLT5zdF9zaG5keCA9PSBTSE5fQ09NTU9OKQorICAgIHsKKyAgICAgIGlmIChzdHJjbXAgKGlucHV0X3NlYy0+bmFtZSwgIi5mY29tbW9uIikgPT0gMCkKKwlzeW0tPnN0X3NobmR4ID0gU0hOX0NSMTZDX0ZDT01NT047CisgICAgICBlbHNlIGlmIChzdHJjbXAgKGlucHV0X3NlYy0+bmFtZSwgIi5uY29tbW9uIikgPT0gMCkKKwlzeW0tPnN0X3NobmR4ID0gU0hOX0NSMTZDX05DT01NT047CisgICAgfQorCisgIHJldHVybiBUUlVFOworfQorCisvKiBEZWZpbml0aW9ucyBmb3Igc2V0dGluZyBDUjE2QyB0YXJnZXQgdmVjdG9yLiAgKi8KKyNkZWZpbmUgVEFSR0VUX0xJVFRMRV9TWU0JCWJmZF9lbGYzMl9jcjE2Y192ZWMKKyNkZWZpbmUgVEFSR0VUX0xJVFRMRV9OQU1FCQkiZWxmMzItY3IxNmMiCisjZGVmaW5lIEVMRl9BUkNICQkJYmZkX2FyY2hfY3IxNmMKKyNkZWZpbmUgRUxGX01BQ0hJTkVfQ09ERQkJRU1fQ1IKKyNkZWZpbmUgRUxGX01BWFBBR0VTSVpFCQkJMHgxCisjZGVmaW5lIGVsZl9zeW1ib2xfbGVhZGluZ19jaGFyCQknXycKKworI2RlZmluZSBiZmRfZWxmMzJfYmZkX3JlbG9jX3R5cGVfbG9va3VwCQllbGZfY3IxNmNfcmVsb2NfdHlwZV9sb29rdXAKKyNkZWZpbmUgZWxmX2luZm9fdG9faG93dG8JCQllbGZfY3IxNmNfaW5mb190b19ob3d0bworI2RlZmluZSBlbGZfaW5mb190b19ob3d0b19yZWwJCQllbGZfY3IxNmNfaW5mb190b19ob3d0b19yZWwKKyNkZWZpbmUgZWxmX2JhY2tlbmRfcmVsb2NhdGVfc2VjdGlvbgkJZWxmMzJfY3IxNmNfcmVsb2NhdGVfc2VjdGlvbgorI2RlZmluZSBlbGZfYmFja2VuZF9nY19tYXJrX2hvb2sgICAgICAgIAllbGYzMl9jcjE2Y19nY19tYXJrX2hvb2sKKyNkZWZpbmUgZWxmX2JhY2tlbmRfZ2Nfc3dlZXBfaG9vayAgICAgICAJZWxmMzJfY3IxNmNfZ2Nfc3dlZXBfaG9vaworI2RlZmluZSBlbGZfYmFja2VuZF9zeW1ib2xfcHJvY2Vzc2luZwkJZWxmMzJfY3IxNmNfc3ltYm9sX3Byb2Nlc3NpbmcKKyNkZWZpbmUgZWxmX2JhY2tlbmRfc2VjdGlvbl9mcm9tX2JmZF9zZWN0aW9uIAllbGYzMl9jcjE2Y19zZWN0aW9uX2Zyb21fYmZkX3NlY3Rpb24KKyNkZWZpbmUgZWxmX2JhY2tlbmRfYWRkX3N5bWJvbF9ob29rCQllbGYzMl9jcjE2Y19hZGRfc3ltYm9sX2hvb2sKKyNkZWZpbmUgZWxmX2JhY2tlbmRfbGlua19vdXRwdXRfc3ltYm9sX2hvb2sgCWVsZjMyX2NyMTZjX2xpbmtfb3V0cHV0X3N5bWJvbF9ob29rCisKKyNkZWZpbmUgZWxmX2JhY2tlbmRfY2FuX2djX3NlY3Rpb25zICAgICAxCisKKyNpbmNsdWRlICJlbGYzMi10YXJnZXQuaCIKZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1jcmlzLmMgYi9iZmQvZWxmMzItY3Jpcy5jCmluZGV4IGUyYTUxZjYuLjc3NWZkMGUgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1jcmlzLmMKKysrIGIvYmZkL2VsZjMyLWNyaXMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIENSSVMtc3BlY2lmaWMgc3VwcG9ydCBmb3IgMzItYml0IEVMRi4KLSAgIENvcHlyaWdodCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBDb250cmlidXRlZCBieSBBeGlzIENvbW11bmljYXRpb25zIEFCLgogICAgV3JpdHRlbiBieSBIYW5zLVBldGVyIE5pbHNzb24sIGJhc2VkIG9uIGVsZjMyLWZyMzAuYwogICAgUElDIGFuZCBzaGxpYiBiaXRzIGJhc2VkIHByaW1hcmlseSBvbiBlbGYzMi1tNjhrLmMgYW5kIGVsZjMyLWkzODYuYy4KQEAgLTg1OSw3ICs4NTksMTAgQEAKIAkgIGJmZF9ib29sZWFuIHdhcm5lZDsKIAkgIGJmZF9ib29sZWFuIHVucmVzb2x2ZWRfcmVsb2M7CiAKLQkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChoLCBzeW1faGFzaGVzLCByX3N5bW5keCwgc3ltdGFiX2hkciwgcmVsb2NhdGlvbiwgc2VjLCB1bnJlc29sdmVkX3JlbG9jLCBpbmZvLCB3YXJuZWQpOworCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHNlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCiAJICBpZiAodW5yZXNvbHZlZF9yZWxvYwogCSAgICAgIC8qIFBlcmhhcHMgd2Ugc2hvdWxkIGRldGVjdCB0aGUgY2FzZXMgdGhhdApAQCAtOTU3LDExICs5NjAsMjUgQEAKIAkgICAgIHN0YXRpY2FsbHkgbGlua2luZyBQSUMgY29kZSwgb3Igd2hlbiB1c2luZyAtQnN5bWJvbGljLiAgQ2hlY2sKIAkgICAgIHRoYXQgd2UgaW5zdGVhZCBoYXZlIGEgR09UIGVudHJ5IGFzIGRvbmUgZm9yIHVzIGJ5CiAJICAgICBlbGZfY3Jpc19hZGp1c3RfZHluYW1pY19zeW1ib2wsIGFuZCBkcm9wIHRocm91Z2ggaW50byB0aGUKLQkgICAgIG9yZGluYXJ5IEdPVCBjYXNlcy4gICovCi0JICBpZiAoaCAhPSBOVUxMICYmIGgtPmdvdC5vZmZzZXQgPT0gKGJmZF92bWEpIC0xKQorCSAgICAgb3JkaW5hcnkgR09UIGNhc2VzLiAgVGhpcyBtdXN0IG5vdCBoYXBwZW4gZm9yIHRoZQorCSAgICAgZXhlY3V0YWJsZSwgYmVjYXVzZSBhbnkgcmVmZXJlbmNlIGl0IGRvZXMgdG8gYSBmdW5jdGlvbgorCSAgICAgdGhhdCBpcyBzYXRpc2ZpZWQgYnkgYSBEU08gbXVzdCBnZW5lcmF0ZSBhIFBMVC4gIFdlIGFzc3VtZQorCSAgICAgdGhlc2UgY2FsbC1zcGVjaWZpYyByZWxvY3MgZG9uJ3QgYWRkcmVzcyBub24tZnVuY3Rpb25zLiAgKi8KKwkgIGlmIChoICE9IE5VTEwKKwkgICAgICAmJiAoaC0+Z290Lm9mZnNldCA9PSAoYmZkX3ZtYSkgLTEKKwkJICB8fCAoIWluZm8tPnNoYXJlZAorCQkgICAgICAmJiAhKChoLT5lbGZfbGlua19oYXNoX2ZsYWdzCisJCQkgICAgJiBFTEZfTElOS19IQVNIX0RFRl9SRUdVTEFSKSAhPSAwCisJCQkgICB8fCAoKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MKKwkJCQkmIEVMRl9MSU5LX0hBU0hfREVGX0RZTkFNSUMpID09IDAKKwkJCSAgICAgICYmIGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmd2VhaykpKSkpCiAJICAgIHsKIAkgICAgICAoKl9iZmRfZXJyb3JfaGFuZGxlcikKLQkJKF8oIiVzOiBObyBQTFQgbm9yIEdPVCBmb3IgcmVsb2NhdGlvbiAlcyBhZ2FpbnN0IHN5bWJvbCBgJXMnIGZyb20gJXMgc2VjdGlvbiIpLAorCQkoKGgtPmdvdC5vZmZzZXQgPT0gKGJmZF92bWEpIC0xKQorCQkgPyBfKCIlczogTm8gUExUIG5vciBHT1QgZm9yIHJlbG9jYXRpb24gJXMgYWdhaW5zdFwKKyBzeW1ib2wgYCVzJyBmcm9tICVzIHNlY3Rpb24iKQorCQkgOiBfKCIlczogTm8gUExUIGZvciByZWxvY2F0aW9uICVzIGFnYWluc3RcCisgc3ltYm9sIGAlcycgZnJvbSAlcyBzZWN0aW9uIiksCiAJCSBiZmRfYXJjaGl2ZV9maWxlbmFtZSAoaW5wdXRfYmZkKSwKIAkJIGNyaXNfZWxmX2hvd3RvX3RhYmxlW3JfdHlwZV0ubmFtZSwKIAkJIHN5bW5hbWVbMF0gIT0gJ1wwJyA/IHN5bW5hbWUgOiBfKCJbd2hvc2UgbmFtZSBpcyBsb3N0XSIpLApAQCAtOTkzLDE4ICsxMDEwLDI1IEBACiAKIAkJaWYgKCFlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bmFtaWNfc2VjdGlvbnNfY3JlYXRlZAogCQkgICAgfHwgKCEgaW5mby0+c2hhcmVkCi0JCQkmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVIpKQorCQkJJiYgKChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfSEFTSF9ERUZfUkVHVUxBUikKKwkJCSAgICB8fCBoLT50eXBlID09IFNUVF9GVU5DCisJCQkgICAgfHwgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MKKwkJCQkmIEVMRl9MSU5LX0hBU0hfTkVFRFNfUExUKSkpCiAJCSAgICB8fCAoaW5mby0+c2hhcmVkCiAJCQkmJiAoaW5mby0+c3ltYm9saWMgfHwgaC0+ZHluaW5keCA9PSAtMSkKIAkJCSYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfSEFTSF9ERUZfUkVHVUxBUikpKQogCQkgIHsKIAkJICAgIC8qIFRoaXMgd2Fzbid0IGNoZWNrZWQgYWJvdmUgZm9yICEgaW5mby0+c2hhcmVkLCBidXQKLQkJICAgICAgIG11c3QgaG9sZCB0aGVyZSBpZiB3ZSBnZXQgaGVyZTsgdGhlIHN5bWJvbCBtdXN0IGJlCi0JCSAgICAgICBkZWZpbmVkIGluIHRoZSByZWd1bGFyIHByb2dyYW0sIG9yIGJlIHVuZGVmd2Vhay4gICovCisJCSAgICAgICBtdXN0IGhvbGQgdGhlcmUgaWYgd2UgZ2V0IGhlcmU7IHRoZSBzeW1ib2wgbXVzdAorCQkgICAgICAgYmUgZGVmaW5lZCBpbiB0aGUgcmVndWxhciBwcm9ncmFtIG9yIGJlIHVuZGVmd2VhaworCQkgICAgICAgb3IgYmUgYSBmdW5jdGlvbiBvciBvdGhlcndpc2UgbmVlZCBhIFBMVC4gICovCiAJCSAgICBCRkRfQVNTRVJUICghZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQKIAkJCQl8fCBpbmZvLT5zaGFyZWQKIAkJCQl8fCAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncwogCQkJCSAgICAmIEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVIpICE9IDAKKwkJCQl8fCBoLT50eXBlID09IFNUVF9GVU5DCisJCQkJfHwgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MKKwkJCQkgICAgJiBFTEZfTElOS19IQVNIX05FRURTX1BMVCkKIAkJCQl8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspOwogCiAJCSAgICAvKiBUaGlzIGlzIGFjdHVhbGx5IGEgc3RhdGljIGxpbmssIG9yIGl0IGlzIGEKQEAgLTE0MTgsNyArMTQ0Miw3IEBACiAJIHRvIHRoaXMgZnVuY3Rpb24uICBOb3RlIHRoYXQgd2UgZW1iZWQga25vd2xlZGdlIHRoYXQgImluY29taW5nIgogCSAuZ290IGdvZXMgYWZ0ZXIgLmdvdC5wbHQgaW4gdGhlIG91dHB1dCB3aXRob3V0IHBhZGRpbmcgKHBvaW50ZXIKIAkgYWxpZ25lZCkuICBIb3dldmVyLCB0aGF0IGtub3dsZWRnZSBpcyBwcmVzZW50IGluIHNldmVyYWwgb3RoZXIKLQkgcGxhY2VzIHRvbywgaGVyZSBhbmQgaW4gZWxmbGluay5oIGF0IGxlYXN0LiAgKi8KKwkgcGxhY2VzIHRvby4gICovCiAgICAgICBiZmRfdm1hIGdvdF9vZmZzZXQKIAk9IChoYXNfZ290cGx0CiAJICAgPyBnb3RwbHRfb2Zmc2V0CkBAIC0xNTA4LDEyICsxNTMyLDE1IEBACiAJfQogICAgIH0KIAotICAvKiBXZSBkb24ndCBlbWl0IC5nb3QgcmVsb2NzIGZvciBzeW1ib2xzIHRoYXQgYXJlbid0IGluIHRoZQotICAgICBkeW5hbWljLXN5bWJvbHMgdGFibGUgZm9yIGFuIG9yZGluYXJ5IHByb2dyYW0gYW5kIGFyZSBlaXRoZXIgZGVmaW5lZAotICAgICBieSB0aGUgcHJvZ3JhbSBvciBhcmUgdW5kZWZpbmVkIHdlYWsgc3ltYm9scy4gICovCisgIC8qIEZvciBhbiBvcmRpbmFyeSBwcm9ncmFtLCB3ZSBlbWl0IC5nb3QgcmVsb2NzIG9ubHkgZm9yIHN5bWJvbHMgdGhhdAorICAgICBhcmUgaW4gdGhlIGR5bmFtaWMtc3ltYm9scyB0YWJsZSBhbmQgYXJlIGVpdGhlciBkZWZpbmVkIGJ5IHRoZQorICAgICBwcm9ncmFtIG9yIGFyZSB1bmRlZmluZWQgd2VhayBzeW1ib2xzLCBvciBhcmUgZnVuY3Rpb24gc3ltYm9scworICAgICB3aGVyZSB3ZSBkbyBub3Qgb3V0cHV0IGEgUExUOiB0aGUgUExUIHJlbG9jIHdhcyBvdXRwdXQgYWJvdmUgYW5kIGFsbAorICAgICByZWZlcmVuY2VzIHRvIHRoZSBmdW5jdGlvbiBzeW1ib2wgYXJlIHJlZGlyZWN0ZWQgdG8gdGhlIFBMVC4gICovCiAgIGlmIChoLT5nb3Qub2Zmc2V0ICE9IChiZmRfdm1hKSAtMQogICAgICAgJiYgKGluZm8tPnNoYXJlZAogCSAgfHwgKGgtPmR5bmluZHggIT0gLTEKKwkgICAgICAmJiBoLT5wbHQub2Zmc2V0ID09IChiZmRfdm1hKSAtMQogCSAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfSEFTSF9ERUZfUkVHVUxBUikgPT0gMAogCSAgICAgICYmIGgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX3VuZGVmd2VhaykpKQogICAgIHsKQEAgLTE4MzUsMTMgKzE4NjIsMTIgQEAKIAkgIHJfc3ltbmR4ID0gRUxGMzJfUl9TWU0gKHJlbC0+cl9pbmZvKTsKIAkgIGlmIChyX3N5bW5keCA8IHN5bXRhYl9oZHItPnNoX2luZm8pCiAJICAgIGdvdG8gbG9jYWxfZ290X3JlbG9jOwotCisJICAvKiBGYWxsIHRocm91Z2guICAqLwogCWNhc2UgUl9DUklTXzMyX1BMVF9HT1RSRUw6CiAJICAvKiBGSVhNRTogV2UgZG9uJ3QgZ2FyYmFnZS1jb2xsZWN0IGF3YXkgdGhlIC5nb3Qgc2VjdGlvbi4gICovCiAJICBpZiAobG9jYWxfZ290X3JlZmNvdW50cyAhPSBOVUxMKQogCSAgICBsb2NhbF9nb3RfcmVmY291bnRzWy0xXS0tOwogCSAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLQogCWNhc2UgUl9DUklTXzhfUENSRUw6CiAJY2FzZSBSX0NSSVNfMTZfUENSRUw6CiAJY2FzZSBSX0NSSVNfMzJfUENSRUw6CkBAIC0xOTI2LDE2ICsxOTUyLDIyIEBACiAgICB3YW50IHRvIGRvIHRoaXM6CiAKICAgIC0gV2hlbiBhbGwgUExUIHJlZmVyZW5jZXMgYXJlIEdPVFBMVCByZWZlcmVuY2VzLCBhbmQgdGhlcmUgYXJlIEdPVAotICAgICByZWZlcmVuY2VzLiAgV2UgZG9uJ3QgaGF2ZSB0byBnZW5lcmF0ZSBhIFBMVCBhdCBhbGwuCisgICAgIHJlZmVyZW5jZXMsIGFuZCB0aGlzIGlzIG5vdCB0aGUgZXhlY3V0YWJsZS4gIFdlIGRvbid0IGhhdmUgdG8KKyAgICAgZ2VuZXJhdGUgYSBQTFQgYXQgYWxsLgogCi0gICAtIFdoZW4gdGhlcmUgYXJlIGJvdGggKG9yZGluYXJ5KSBQTFQgcmVmZXJlbmNlcyBhbmQgR09UIHJlZmVyZW5jZXMuCisgICAtIFdoZW4gdGhlcmUgYXJlIGJvdGggKG9yZGluYXJ5KSBQTFQgcmVmZXJlbmNlcyBhbmQgR09UIHJlZmVyZW5jZXMsCisgICAgIGFuZCB0aGlzIGlzbid0IHRoZSBleGVjdXRhYmxlLgogICAgICBXZSB3YW50IHRvIG1ha2UgdGhlIFBMVCByZWZlcmVuY2UgdXNlIHRoZSBvcmRpbmFyeSBHT1QgZW50cnkgcmF0aGVyCi0gICAgIHRoYW4gYSBydW4tdGltZSBkeW5hbWljYWxseSByZXNvbHZlZCBHT1RQTFQgZW50cnkgKHNpbmNlIHRoZSBHT1QKLSAgICAgZW50cnkgd2lsbCBoYXZlIHRvIGJlIHJlc29sdmVkIGF0IHN0YXJ0dXAgYW55d2F5KS4KKyAgICAgdGhhbiBSX0NSSVNfSlVNUF9TTE9ULCBhIHJ1bi10aW1lIGR5bmFtaWNhbGx5IHJlc29sdmVkIEdPVFBMVCBlbnRyeSwKKyAgICAgc2luY2UgdGhlIEdPVCBlbnRyeSB3aWxsIGhhdmUgdG8gYmUgcmVzb2x2ZWQgYXQgc3RhcnR1cCBhbnl3YXkuCiAKICAgIFRob3VnaCB0aGUgbGF0dGVyIGNhc2UgaXMgaGFuZGxlZCB3aGVuIHJvb20gZm9yIHRoZSBQTFQgaXMgYWxsb2NhdGVkLAogICAgbm90IGhlcmUuCiAKKyAgIEJ5IGZvbGRpbmcgaW50byB0aGUgR09ULCB3ZSBtYXkgbmVlZCBhIHJvdW5kLXRyaXAgdG8gYSBQTFQgaW4gdGhlCisgICBleGVjdXRhYmxlIGZvciBjYWxscywgYSBsb3NzIGluIHBlcmZvcm1hbmNlLiAgU3RpbGwsIGxvc2luZyBhCisgICByZWxvYyBpcyBhIHdpbiBpbiBzaXplIGFuZCBhdCBsZWFzdCBpbiBzdGFydC11cCB0aW1lLgorCiAgICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIHN5bWJvbHMgYXJlIGZvcmNlZCBsb2NhbCBieQogICAgdmVyc2lvbiBzY3JpcHRzLiAgVGhlIGRpZmZlcmluZyBjYXNlcyBhcmUgaGFuZGxlZCBieQogICAgZWxmX2NyaXNfaGlkZV9zeW1ib2wuICAqLwpAQCAtMjA0MiwxMCArMjA3NCwxNCBAQAogCQkJCQkgICBpbmZvKTsKIAl9CiAKLSAgICAgIC8qIElmIHRoZXJlIGFyZSBvbmx5IEdPVCByZWZlcmVuY2VzIGFuZCBHT1RQTFQgcmVmZXJlbmNlcyB0byB0aGlzCi0JIFBMVCBlbnRyeSwgZ2V0IHJpZCBvZiB0aGUgUExULiAgKi8KLSAgICAgIGlmICghIGVsZl9jcmlzX3RyeV9mb2xkX3BsdF90b19nb3QgKChzdHJ1Y3QgZWxmX2NyaXNfbGlua19oYXNoX2VudHJ5ICopCi0JCQkJCSAgaCwgaW5mbykpCisgICAgICAvKiBJZiB3ZSBoYWQgYSBSX0NSSVNfR0xPQl9EQVQgdGhhdCBkaWRuJ3QgaGF2ZSB0byBwb2ludCB0byBhIFBMVDsKKwkgd2hlcmUgYSBwb2ludGVyLWVxdWl2YWxlbnQgc3ltYm9sIHdhcyB1bmltcG9ydGFudCAoaS5lLiBtb3JlCisJIGxpa2UgUl9DUklTX0pVTVBfU0xPVCBhZnRlciBzeW1ib2wgZXZhbHVhdGlvbikgd2UgY291bGQgZ2V0IHJpZAorCSBvZiB0aGUgUExULiAgV2UgY2FuJ3QgZm9yIHRoZSBleGVjdXRhYmxlLCBiZWNhdXNlIHRoZSBHT1QKKwkgZW50cmllcyB3aWxsIHBvaW50IHRvIHRoZSBQTFQgdGhlcmUgKGFuZCBiZSBjb25zdGFudCkuICAqLworICAgICAgaWYgKGluZm8tPnNoYXJlZAorCSAgJiYgIWVsZl9jcmlzX3RyeV9mb2xkX3BsdF90b19nb3QgKChzdHJ1Y3QgZWxmX2NyaXNfbGlua19oYXNoX2VudHJ5KikKKwkJCQkJICAgIGgsIGluZm8pKQogCXJldHVybiBGQUxTRTsKIAogICAgICAgLyogR0Mgb3IgZm9sZGluZyBtYXkgaGF2ZSByZW5kZXJlZCB0aGlzIGVudHJ5IHVudXNlZC4gICovCkBAIC0yMDU5LDcgKzIwOTUsNyBAQAogICAgICAgLyogTWFrZSBzdXJlIHRoaXMgc3ltYm9sIGlzIG91dHB1dCBhcyBhIGR5bmFtaWMgc3ltYm9sLiAgKi8KICAgICAgIGlmIChoLT5keW5pbmR4ID09IC0xKQogCXsKLQkgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIApAQCAtMjA4Myw4ICsyMTE5LDExIEBACiAKICAgICAgIC8qIElmIHRoZXJlJ3MgYWxyZWFkeSBhIEdPVCBlbnRyeSwgdXNlIHRoYXQsIG5vdCBhIC5nb3QucGx0LiAgQQogCSBHT1QgZmllbGQgc3RpbGwgaGFzIGEgcmVmZXJlbmNlIGNvdW50IHdoZW4gd2UgZ2V0IGhlcmU7IGl0J3MKLQkgbm90IHlldCBjaGFuZ2VkIHRvIGFuIG9mZnNldC4gICovCi0gICAgICBpZiAoaC0+Z290LnJlZmNvdW50ID4gMCkKKwkgbm90IHlldCBjaGFuZ2VkIHRvIGFuIG9mZnNldC4gIFdlIGNhbid0IGRvIHRoaXMgZm9yIGFuCisJIGV4ZWN1dGFibGUsIGJlY2F1c2UgdGhlbiB0aGUgcmVsb2MgYXNzb2NpYXRlZCB3aXRoIHRoZSBQTFQKKwkgd291bGQgZ2V0IGEgbm9uLVBMVCByZWxvYyBwb2ludGluZyB0byB0aGUgUExULiAgRklYTUU6IE1vdmUKKwkgdGhpcyB0byBlbGZfY3Jpc190cnlfZm9sZF9wbHRfdG9fZ290LiAgKi8KKyAgICAgIGlmIChpbmZvLT5zaGFyZWQgJiYgaC0+Z290LnJlZmNvdW50ID4gMCkKIAl7CiAJICBoLT5nb3QucmVmY291bnQgKz0gaC0+cGx0LnJlZmNvdW50OwogCkBAIC0yMzgzLDcgKzI0MjIsNyBAQAogCQkgIC8qIE1ha2Ugc3VyZSB0aGlzIHN5bWJvbCBpcyBvdXRwdXQgYXMgYSBkeW5hbWljIHN5bWJvbC4gICovCiAJCSAgaWYgKGgtPmR5bmluZHggPT0gLTEpCiAJCSAgICB7Ci0JCSAgICAgIGlmICghYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkJICAgICAgaWYgKCFiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkJCXJldHVybiBGQUxTRTsKIAkJICAgIH0KIApAQCAtMjYwMCwxNCArMjYzOSwxNCBAQAogICAgICAgICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHRoZSBDKysgb2JqZWN0IHZ0YWJsZSBoaWVyYXJjaHkuCiAgICAgICAgICAgIFJlY29uc3RydWN0IGl0IGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KICAgICAgICAgY2FzZSBSX0NSSVNfR05VX1ZUSU5IRVJJVDoKLSAgICAgICAgICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHdoaWNoIEMrKyB2dGFibGUgZW50cmllcyBhcmUgYWN0dWFsbHkKICAgICAgICAgICAgdXNlZC4gIFJlY29yZCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAgICAgICAgIGNhc2UgUl9DUklTX0dOVV9WVEVOVFJZOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAKQEAgLTI3NzAsNyArMjgwOSw3IEBACiAJIHRoZSAuZHluYW1pYyBzZWN0aW9uLiAgVGhlIERUX0RFQlVHIGVudHJ5IGlzIGZpbGxlZCBpbiBieSB0aGUKIAkgZHluYW1pYyBsaW5rZXIgYW5kIHVzZWQgYnkgdGhlIGRlYnVnZ2VyLiAgKi8KICNkZWZpbmUgYWRkX2R5bmFtaWNfZW50cnkoVEFHLCBWQUwpIFwKLSAgYmZkX2VsZjMyX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCAoYmZkX3ZtYSkgKFRBRyksIChiZmRfdm1hKSAoVkFMKSkKKyAgX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIFRBRywgVkFMKQogCiAgICAgICBpZiAoIWluZm8tPnNoYXJlZCkKIAl7CkBAIC0yODU3LDkgKzI4OTYsMTEgQEAKIAogICAvKiBJZiB3ZSdyZSBub3QgY3JlYXRpbmcgYSBzaGFyZWQgbGlicmFyeSBhbmQgaGF2ZSBhIHN5bWJvbCB3aGljaCBpcwogICAgICByZWZlcnJlZCB0byBieSAuZ290IHJlZmVyZW5jZXMsIGJ1dCB0aGUgc3ltYm9sIGlzIGRlZmluZWQgbG9jYWxseSwKLSAgICAgKG9yIHJhdGhlciwgbm90IG5vdCBkZWZpbmVkIGJ5IGEgRFNPKSB0aGVuIGxvc2UgdGhlIHJlbG9jIGZvciB0aGUKLSAgICAgLmdvdCAoZG9uJ3QgYWxsb2NhdGUgcm9vbSBmb3IgaXQpLiAgKi8KLSAgaWYgKChoLT5yb290LmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX0RFRl9EWU5BTUlDKSA9PSAwKQorICAgICAob3IgcmF0aGVyLCBub3QgZGVmaW5lZCBieSBhIERTTykgdGhlbiBsb3NlIHRoZSByZWxvYyBmb3IgdGhlIC5nb3QKKyAgICAgKGRvbid0IGFsbG9jYXRlIHJvb20gZm9yIGl0KS4gIExpa2V3aXNlIGZvciByZWxvY3MgZm9yIHNvbWV0aGluZworICAgICBmb3Igd2hpY2ggd2UgY3JlYXRlIGEgUExULiAgKi8KKyAgaWYgKChoLT5yb290LmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX0RFRl9EWU5BTUlDKSA9PSAwCisgICAgICB8fCBoLT5yb290LnBsdC5yZWZjb3VudCA+IDApCiAgICAgewogICAgICAgaWYgKGgtPnJvb3QuZ290LnJlZmNvdW50ID4gMAogCSAgLyogVGhlIHNpemUgb2YgdGhpcyBzZWN0aW9uIGlzIG9ubHkgdmFsaWQgYW5kIGluIHN5bmMgd2l0aCB0aGUKQEAgLTI4ODUsNyArMjkyNiw4IEBACiAJIGludHJvZHVjZSBuZXcgcHJvYmxlbXMuICBPZiBjb3Vyc2Ugd2UgZG9uJ3QgZG8gdGhpcyBpZiB3ZSdyZQogCSBleHBvcnRpbmcgYWxsIGR5bmFtaWMgc3ltYm9scy4gICovCiAgICAgICBpZiAoISBpbmZvLT5leHBvcnRfZHluYW1pYwotCSAgJiYgKGgtPnJvb3QuZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfUkVGX0RZTkFNSUMpID09IDApCisJICAmJiAoaC0+cm9vdC5lbGZfbGlua19oYXNoX2ZsYWdzCisJICAgICAgJiAoRUxGX0xJTktfSEFTSF9ERUZfRFlOQU1JQ3xFTEZfTElOS19IQVNIX1JFRl9EWU5BTUlDKSkgPT0gMCkKIAl7CiAJICBoLT5yb290LmR5bmluZHggPSAtMTsKIAkgIF9iZmRfZWxmX3N0cnRhYl9kZWxyZWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyLApAQCAtMzA0OCw3ICszMDkwLDcgQEAKICNkZWZpbmUgZWxmX2JhY2tlbmRfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMgXAogCV9iZmRfZWxmX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zCiAjZGVmaW5lIGJmZF9lbGYzMl9iZmRfZmluYWxfbGluayBcCi0JX2JmZF9lbGYzMl9nY19jb21tb25fZmluYWxfbGluaworCWJmZF9lbGZfZ2NfY29tbW9uX2ZpbmFsX2xpbmsKICNkZWZpbmUgZWxmX2JhY2tlbmRfaGlkZV9zeW1ib2wJCQllbGZfY3Jpc19oaWRlX3N5bWJvbAogI2RlZmluZSBlbGZfYmFja2VuZF9yZWxvY190eXBlX2NsYXNzCQllbGZfY3Jpc19yZWxvY190eXBlX2NsYXNzCiAKZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1kMTB2LmMgYi9iZmQvZWxmMzItZDEwdi5jCmluZGV4IGY5NDU0ZmYuLmU4NDVhMjUgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1kMTB2LmMKKysrIGIvYmZkL2VsZjMyLWQxMHYuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIEQxMFYtc3BlY2lmaWMgc3VwcG9ydCBmb3IgMzItYml0IEVMRgotICAgQ29weXJpZ2h0IDE5OTYsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMKKyAgIENvcHlyaWdodCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0CiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgIENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBIdW50IChodW50QGN5Z251cy5jb20pLgogCkBAIC0zMzQsMTQgKzMzNCwxNCBAQAogICAgICAgICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHRoZSBDKysgb2JqZWN0IHZ0YWJsZSBoaWVyYXJjaHkuCiAgICAgICAgICAgIFJlY29uc3RydWN0IGl0IGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KICAgICAgICAgY2FzZSBSX0QxMFZfR05VX1ZUSU5IRVJJVDoKLSAgICAgICAgICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHdoaWNoIEMrKyB2dGFibGUgZW50cmllcyBhcmUgYWN0dWFsbHkKICAgICAgICAgICAgdXNlZC4gIFJlY29yZCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAgICAgICAgIGNhc2UgUl9EMTBWX0dOVV9WVEVOVFJZOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTUxNywyOCArNTE3LDEyIEBACiAJfQogICAgICAgZWxzZQogCXsKLQkgIGggPSBzeW1faGFzaGVzW3Jfc3ltbmR4IC0gc3ltdGFiX2hkci0+c2hfaW5mb107Ci0JICB3aGlsZSAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKLQkJIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0JICAgIGggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKLQkgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaykKLQkgICAgewotCSAgICAgIHNlYyA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKLQkgICAgICByZWxvY2F0aW9uID0gKGgtPnJvb3QudS5kZWYudmFsdWUKLQkJCSAgICArIHNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYQotCQkJICAgICsgc2VjLT5vdXRwdXRfb2Zmc2V0KTsKLQkgICAgfQotCSAgZWxzZSBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQotCSAgICByZWxvY2F0aW9uID0gMDsKLQkgIGVsc2UKLQkgICAgewotCSAgICAgIGlmICghKCgqaW5mby0+Y2FsbGJhY2tzLT51bmRlZmluZWRfc3ltYm9sKQotCQkgICAgKGluZm8sIGgtPnJvb3Qucm9vdC5zdHJpbmcsIGlucHV0X2JmZCwKLQkJICAgICBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0LCBUUlVFKSkpCi0JCXJldHVybiBGQUxTRTsKLQkgICAgICByZWxvY2F0aW9uID0gMDsKLQkgICAgfQorCSAgYmZkX2Jvb2xlYW4gdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkOworCisJICBSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCAoaW5mbywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLCByZWwsCisJCQkJICAgcl9zeW1uZHgsIHN5bXRhYl9oZHIsIHN5bV9oYXNoZXMsCisJCQkJICAgaCwgc2VjLCByZWxvY2F0aW9uLAorCQkJCSAgIHVucmVzb2x2ZWRfcmVsb2MsIHdhcm5lZCk7CiAJfQogCiAgICAgICBpZiAoaCAhPSBOVUxMKQpkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLWRseC5jIGIvYmZkL2VsZjMyLWRseC5jCmluZGV4IDZjY2I5ZjUuLjdmYjZkMGMgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1kbHguYworKysgYi9iZmQvZWxmMzItZGx4LmMKQEAgLTU1OCwxNCArNTU4LDE0IEBACiAgICAgICAgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgdGhlIEMrKyBvYmplY3QgdnRhYmxlIGhpZXJhcmNoeS4KICAgICAgICAgICAgUmVjb25zdHJ1Y3QgaXQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogICAgICAgICBjYXNlIFJfRExYX0dOVV9WVElOSEVSSVQ6Ci0gICAgICAgICAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisgICAgICAgICAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB3aGljaCBDKysgdnRhYmxlIGVudHJpZXMgYXJlIGFjdHVhbGx5CiAgICAgICAgICAgIHVzZWQuICBSZWNvcmQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogICAgICAgICBjYXNlIFJfRExYX0dOVV9WVEVOVFJZOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1mcjMwLmMgYi9iZmQvZWxmMzItZnIzMC5jCmluZGV4IDQ3MmEwN2EuLjVmNzBlM2YgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1mcjMwLmMKKysrIGIvYmZkL2VsZjMyLWZyMzAuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIEZSMzAtc3BlY2lmaWMgc3VwcG9ydCBmb3IgMzItYml0IEVMRi4KLSAgIENvcHlyaWdodCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzCisgICBDb3B5cmlnaHQgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNAogICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEJGRCwgdGhlIEJpbmFyeSBGaWxlIERlc2NyaXB0b3IgbGlicmFyeS4KQEAgLTU2Niw0NyArNTY2LDEyIEBACiAJfQogICAgICAgZWxzZQogCXsKLQkgIGggPSBzeW1faGFzaGVzIFtyX3N5bW5keCAtIHN5bXRhYl9oZHItPnNoX2luZm9dOworCSAgYmZkX2Jvb2xlYW4gdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkOwogCi0JICB3aGlsZSAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKLQkJIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0JICAgIGggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKLQotCSAgbmFtZSA9IGgtPnJvb3Qucm9vdC5zdHJpbmc7Ci0KLQkgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaykKLQkgICAgewotCSAgICAgIHNlYyA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKLQkgICAgICByZWxvY2F0aW9uID0gKGgtPnJvb3QudS5kZWYudmFsdWUKLQkJCSAgICArIHNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYQotCQkJICAgICsgc2VjLT5vdXRwdXRfb2Zmc2V0KTsKLSNpZiAwCi0JICAgICAgZnByaW50ZiAoc3RkZXJyLAotCQkgICAgICAgImRlZmluZWQ6IHNlYzogJXMsIG5hbWU6ICVzLCB2YWx1ZTogJXggKyAleCArICV4IGdpdmVzOiAleFxuIiwKLQkJICAgICAgIHNlYy0+bmFtZSwgbmFtZSwgaC0+cm9vdC51LmRlZi52YWx1ZSwKLQkJICAgICAgIHNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYSwgc2VjLT5vdXRwdXRfb2Zmc2V0LCByZWxvY2F0aW9uKTsKLSNlbmRpZgotCSAgICB9Ci0JICBlbHNlIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspCi0JICAgIHsKLSNpZiAwCi0JICAgICAgZnByaW50ZiAoc3RkZXJyLCAidW5kZWZpbmVkOiBzZWM6ICVzLCBuYW1lOiAlc1xuIiwKLQkJICAgICAgIHNlYy0+bmFtZSwgbmFtZSk7Ci0jZW5kaWYKLQkgICAgICByZWxvY2F0aW9uID0gMDsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgaWYgKCEgKCgqaW5mby0+Y2FsbGJhY2tzLT51bmRlZmluZWRfc3ltYm9sKQotCQkgICAgIChpbmZvLCBoLT5yb290LnJvb3Quc3RyaW5nLCBpbnB1dF9iZmQsCi0JCSAgICAgIGlucHV0X3NlY3Rpb24sIHJlbC0+cl9vZmZzZXQsIFRSVUUpKSkKLQkJcmV0dXJuIEZBTFNFOwotI2lmIDAKLQkgICAgICBmcHJpbnRmIChzdGRlcnIsICJ1bmtub3duOiBuYW1lOiAlc1xuIiwgbmFtZSk7Ci0jZW5kaWYKLQkgICAgICByZWxvY2F0aW9uID0gMDsKLQkgICAgfQorCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHNlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCX0KIAogICAgICAgciA9IGZyMzBfZmluYWxfbGlua19yZWxvY2F0ZSAoaG93dG8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwKQEAgLTc1MywxNCArNzE4LDE0IEBACiAgICAgICAgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgdGhlIEMrKyBvYmplY3QgdnRhYmxlIGhpZXJhcmNoeS4KICAgICAgICAgICAgUmVjb25zdHJ1Y3QgaXQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogICAgICAgICBjYXNlIFJfRlIzMF9HTlVfVlRJTkhFUklUOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQorICAgICAgICAgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgd2hpY2ggQysrIHZ0YWJsZSBlbnRyaWVzIGFyZSBhY3R1YWxseQogICAgICAgICAgICB1c2VkLiAgUmVjb3JkIGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KICAgICAgICAgY2FzZSBSX0ZSMzBfR05VX1ZURU5UUlk6Ci0gICAgICAgICAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9hZGRlbmQpKQorICAgICAgICAgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLWZydi5jIGIvYmZkL2VsZjMyLWZydi5jCmluZGV4IDQ4ODQzOGUuLjY0MTJhY2QgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1mcnYuYworKysgYi9iZmQvZWxmMzItZnJ2LmMKQEAgLTEsNSArMSw1IEBACiAvKiBGUlYtc3BlY2lmaWMgc3VwcG9ydCBmb3IgMzItYml0IEVMRi4KLSAgIENvcHlyaWdodCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEJGRCwgdGhlIEJpbmFyeSBGaWxlIERlc2NyaXB0b3IgbGlicmFyeS4KIApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImxpYmJmZC5oIgogI2luY2x1ZGUgImVsZi1iZmQuaCIKICNpbmNsdWRlICJlbGYvZnJ2LmgiCisjaW5jbHVkZSAiZWxmL2R3YXJmMi5oIgogI2luY2x1ZGUgImhhc2h0YWIuaCIKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMuICAqLwpAQCAtNTEsNyArNTIsNyBAQAogICBQQVJBTVMgKChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgYmZkICosIGFzZWN0aW9uICosIGJmZF9ieXRlICosCiAJICAgRWxmX0ludGVybmFsX1JlbGEgKiwgRWxmX0ludGVybmFsX1N5bSAqLCBhc2VjdGlvbiAqKikpOwogc3RhdGljIGJmZF9ib29sZWFuIGVsZjMyX2Zydl9hZGRfc3ltYm9sX2hvb2sKLSAgUEFSQU1TICgoIGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBjb25zdCBFbGZfSW50ZXJuYWxfU3ltICosCisgIFBBUkFNUyAoKCBiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgRWxmX0ludGVybmFsX1N5bSAqLAogCSAgICBjb25zdCBjaGFyICoqLCBmbGFnd29yZCAqLCBhc2VjdGlvbiAqKiwgYmZkX3ZtYSAqKSk7CiBzdGF0aWMgYmZkX3JlbG9jX3N0YXR1c190eXBlIGZydl9maW5hbF9saW5rX3JlbG9jYXRlCiAgIFBBUkFNUyAoKHJlbG9jX2hvd3RvX3R5cGUgKiwgYmZkICosIGFzZWN0aW9uICosIGJmZF9ieXRlICosCkBAIC0xMTcsNyArMTE4LDcgQEAKIAkgMTYsCQkJLyogYml0c2l6ZSAqLwogCSBUUlVFLAkJCS8qIHBjX3JlbGF0aXZlICovCiAJIDAsCQkJLyogYml0cG9zICovCi0JIGNvbXBsYWluX292ZXJmbG93X2JpdGZpZWxkLCAvKiBjb21wbGFpbl9vbl9vdmVyZmxvdyAqLworCSBjb21wbGFpbl9vdmVyZmxvd19zaWduZWQsIC8qIGNvbXBsYWluX29uX292ZXJmbG93ICovCiAJIGJmZF9lbGZfZ2VuZXJpY19yZWxvYywJLyogc3BlY2lhbF9mdW5jdGlvbiAqLwogCSAiUl9GUlZfTEFCRUwxNiIsCS8qIG5hbWUgKi8KIAkgRkFMU0UsCQkJLyogcGFydGlhbF9pbnBsYWNlICovCkBAIC02NTksNyArNjYwLDYgQEAKICNkZWZpbmUgRlJWX1NZTV9MT0NBTChJTkZPLCBIKSBcCiAgIChfYmZkX2VsZl9zeW1ib2xfcmVmc19sb2NhbF9wICgoSCksIChJTkZPKSwgMSkgXAogICAgfHwgISBlbGZfaGFzaF90YWJsZSAoSU5GTyktPmR5bmFtaWNfc2VjdGlvbnNfY3JlYXRlZCBcCi0gICB8fCAoSCktPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmd2VhayBcCiAgICB8fCAoLyogVGhlIGNvbmRpdGlvbiBiZWxvdyBpcyBhbiB1Z2x5IGhhY2sgdG8gZ2V0IC5zY29tbW9uIGRhdGEgdG8KIAkgIGJlIHJlZ2FyZGVkIGFzIGxvY2FsLiAgRm9yIHNvbWUgcmVhc29uIHRoZQogCSAgRUxGX0xJTktfSEFTSF9ERUZfUkVHVUxBUiBiaXQgaXMgbm90IHNldCBvbiBzdWNoIGNvbW1vbgpAQCAtNzQ4LDYgKzc0OCwxMCBAQAogICAgICByZWxvY2F0aW9ucyByZWZlcmVuY2luZyB0aGUgc3ltYm9sLiAgKi8KICAgdW5zaWduZWQgcmVsb2NzMzIsIHJlbG9jc2ZkLCByZWxvY3NmZHY7CiAKKyAgLyogVGhlIG51bWJlciBvZiAucm9maXh1cHMgZW50cmllcyBhbmQgZHluYW1pYyByZWxvY2F0aW9ucyBhbGxvY2F0ZWQKKyAgICAgZm9yIHRoaXMgc3ltYm9sLCBtaW51cyBhbnkgdGhhdCBtaWdodCBoYXZlIGFscmVhZHkgYmVlbiB1c2VkLiAgKi8KKyAgdW5zaWduZWQgZml4dXBzLCBkeW5yZWxvY3M7CisKICAgLyogVGhlIG9mZnNldHMgb2YgdGhlIEdPVCBlbnRyaWVzIGFzc2lnbmVkIHRvIHN5bWJvbCthZGRlbmQsIHRvIHRoZQogICAgICBmdW5jdGlvbiBkZXNjcmlwdG9yJ3MgYWRkcmVzcywgYW5kIHRvIGEgZnVuY3Rpb24gZGVzY3JpcHRvciwKICAgICAgcmVzcGVjdGl2ZWx5LiAgU2hvdWxkIGJlIHplcm8gaWYgdW5hc3NpZ25lZC4gIFRoZSBvZmZzZXRzIGFyZQpAQCAtNzg5LDEwICs3OTMsMTQgQEAKIHN0YXRpYyBzdHJ1Y3QgZnJ2X3BpY19yZWxvY3NfaW5mbyAqCiBmcnZfcGljX3JlbG9jc19pbmZvX2ZpbmQgKHN0cnVjdCBodGFiICpodCwKIAkJCSAgYmZkICphYmZkLAotCQkJICBjb25zdCBzdHJ1Y3QgZnJ2X3BpY19yZWxvY3NfaW5mbyAqZW50cnkpCisJCQkgIGNvbnN0IHN0cnVjdCBmcnZfcGljX3JlbG9jc19pbmZvICplbnRyeSwKKwkJCSAgZW51bSBpbnNlcnRfb3B0aW9uIGluc2VydCkKIHsKICAgc3RydWN0IGZydl9waWNfcmVsb2NzX2luZm8gKipsb2MgPQotICAgIChzdHJ1Y3QgZnJ2X3BpY19yZWxvY3NfaW5mbyAqKikgaHRhYl9maW5kX3Nsb3QgKGh0LCBlbnRyeSwgSU5TRVJUKTsKKyAgICAoc3RydWN0IGZydl9waWNfcmVsb2NzX2luZm8gKiopIGh0YWJfZmluZF9zbG90IChodCwgZW50cnksIGluc2VydCk7CisKKyAgaWYgKCEgbG9jKQorICAgIHJldHVybiBOVUxMOwogCiAgIGlmICgqbG9jKQogICAgIHJldHVybiAqbG9jOwpAQCAtODE4LDcgKzgyNiw4IEBACiBmcnZfcGljX3JlbG9jc19pbmZvX2Zvcl9nbG9iYWwgKHN0cnVjdCBodGFiICpodCwKIAkJCQliZmQgKmFiZmQsCiAJCQkJc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgsCi0JCQkJYmZkX3ZtYSBhZGRlbmQpCisJCQkJYmZkX3ZtYSBhZGRlbmQsCisJCQkJZW51bSBpbnNlcnRfb3B0aW9uIGluc2VydCkKIHsKICAgc3RydWN0IGZydl9waWNfcmVsb2NzX2luZm8gZW50cnk7CiAKQEAgLTgyNiw3ICs4MzUsNyBAQAogICBlbnRyeS5kLmggPSBoOwogICBlbnRyeS5hZGRlbmQgPSBhZGRlbmQ7CiAKLSAgcmV0dXJuIGZydl9waWNfcmVsb2NzX2luZm9fZmluZCAoaHQsIGFiZmQsICZlbnRyeSk7CisgIHJldHVybiBmcnZfcGljX3JlbG9jc19pbmZvX2ZpbmQgKGh0LCBhYmZkLCAmZW50cnksIGluc2VydCk7CiB9CiAKIC8qIE9idGFpbiB0aGUgYWRkcmVzcyBvZiB0aGUgZW50cnkgaW4gSFQgYXNzb2NpYXRlZCB3aXRoIHRoZSBTWU1ORFh0aApAQCAtODM2LDcgKzg0NSw4IEBACiBmcnZfcGljX3JlbG9jc19pbmZvX2Zvcl9sb2NhbCAoc3RydWN0IGh0YWIgKmh0LAogCQkJICAgICAgIGJmZCAqYWJmZCwKIAkJCSAgICAgICBsb25nIHN5bW5keCwKLQkJCSAgICAgICBiZmRfdm1hIGFkZGVuZCkKKwkJCSAgICAgICBiZmRfdm1hIGFkZGVuZCwKKwkJCSAgICAgICBlbnVtIGluc2VydF9vcHRpb24gaW5zZXJ0KQogewogICBzdHJ1Y3QgZnJ2X3BpY19yZWxvY3NfaW5mbyBlbnRyeTsKIApAQCAtODQ0LDcgKzg1NCw1OSBAQAogICBlbnRyeS5kLmFiZmQgPSBhYmZkOwogICBlbnRyeS5hZGRlbmQgPSBhZGRlbmQ7CiAKLSAgcmV0dXJuIGZydl9waWNfcmVsb2NzX2luZm9fZmluZCAoaHQsIGFiZmQsICZlbnRyeSk7CisgIHJldHVybiBmcnZfcGljX3JlbG9jc19pbmZvX2ZpbmQgKGh0LCBhYmZkLCAmZW50cnksIGluc2VydCk7Cit9CisKKy8qIE1lcmdlIGZpZWxkcyBzZXQgYnkgY2hlY2tfcmVsb2NzKCkgb2YgdHdvIGVudHJpZXMgdGhhdCBlbmQgdXAgYmVpbmcKKyAgIG1hcHBlZCB0byB0aGUgc2FtZSAocHJlc3VtYWJseSBnbG9iYWwpIHN5bWJvbC4gICovCisKK2lubGluZSBzdGF0aWMgdm9pZAorZnJ2X3BpY19tZXJnZV9lYXJseV9yZWxvY3NfaW5mbyAoc3RydWN0IGZydl9waWNfcmVsb2NzX2luZm8gKmUyLAorCQkJCSBzdHJ1Y3QgZnJ2X3BpY19yZWxvY3NfaW5mbyBjb25zdCAqZTEpCit7CisgIGUyLT5nb3QxMiB8PSBlMS0+Z290MTI7CisgIGUyLT5nb3Rsb3MgfD0gZTEtPmdvdGxvczsKKyAgZTItPmdvdGhpbG8gfD0gZTEtPmdvdGhpbG87CisgIGUyLT5mZCB8PSBlMS0+ZmQ7CisgIGUyLT5mZGdvdDEyIHw9IGUxLT5mZGdvdDEyOworICBlMi0+ZmRnb3Rsb3MgfD0gZTEtPmZkZ290bG9zOworICBlMi0+ZmRnb3RoaWxvIHw9IGUxLT5mZGdvdGhpbG87CisgIGUyLT5mZGdvZmYxMiB8PSBlMS0+ZmRnb2ZmMTI7CisgIGUyLT5mZGdvZmZsb3MgfD0gZTEtPmZkZ29mZmxvczsKKyAgZTItPmZkZ29mZmhpbG8gfD0gZTEtPmZkZ29mZmhpbG87CisgIGUyLT5nb3RvZmYgfD0gZTEtPmdvdG9mZjsKKyAgZTItPmNhbGwgfD0gZTEtPmNhbGw7CisgIGUyLT5zeW0gfD0gZTEtPnN5bTsKKworI2lmIDAKKyAgLyogVGhlc2UgYXJlIHNldCBpbiBfZnJ2X2NvdW50X2dvdF9wbHRfZW50cmllcygpIG9yIGxhdGVyLCBhbmQgdGhpcworICAgICBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBpbiBfZnJ2X3Jlc29sdmVfZmluYWxfcmVsb2NzX2luZm8oKSwgdGhhdAorICAgICBydW5zIGp1c3QgYmVmb3JlIGl0LCBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSBmaWVsZHMKKyAgICAgYmVsb3cuICAqLworCisgIGUyLT5wbHQgfD0gZTEtPnBsdDsKKyAgZTItPnByaXZmZCB8PSBlMS0+cHJpdmZkOworICBlMi0+bGF6eXBsdCB8PSBlMS0+bGF6eXBsdDsKKyAgZTItPmRvbmUgfD0gZTEtPmRvbmU7CisKKyAgZTItPnJlbG9jczMyICs9IGUxLT5yZWxvY3MzMjsKKyAgZTItPnJlbG9jc2ZkICs9IGUxLT5yZWxvY3NmZDsKKyAgZTItPnJlbG9jc2ZkdiArPSBlMS0+cmVsb2NzZmR2OworICBlMi0+Zml4dXBzICs9IGUxLT5maXh1cHM7CisgIGUyLT5keW5yZWxvY3MgKz0gZTEtPmR5bnJlbG9jczsKKworICBpZiAoYWJzIChlMS0+Z290X2VudHJ5KSA8IGFicyAoZTItPmdvdF9lbnRyeSkpCisgICAgZTItPmdvdF9lbnRyeSA9IGUxLT5nb3RfZW50cnk7CisgIGlmIChhYnMgKGUxLT5mZGdvdF9lbnRyeSkgPCBhYnMgKGUyLT5mZGdvdF9lbnRyeSkpCisgICAgZTItPmZkZ290X2VudHJ5ID0gZTEtPmZkZ290X2VudHJ5OworICBpZiAoYWJzIChlMS0+ZmRfZW50cnkpIDwgYWJzIChlMi0+ZmRfZW50cnkpKQorICAgIGUyLT5mZF9lbnRyeSA9IGUxLT5mZF9lbnRyeTsKKworICBpZiAoZTEtPnBsdF9lbnRyeSA8IGUyLT5wbHRfZW50cnkpCisgICAgZTItPnBsdF9lbnRyeSA9IGUxLT5wbHRfZW50cnk7CisgIGlmIChlMS0+bHpwbHRfZW50cnkgPCBlMi0+bHpwbHRfZW50cnkpCisgICAgZTItPmx6cGx0X2VudHJ5ID0gZTEtPmx6cGx0X2VudHJ5OworI2VuZGlmCiB9CiAKIC8qIEV2ZXJ5IGJsb2NrIG9mIDY1NTM1IGxhenkgUExUIGVudHJpZXMgc2hhcmVzIGEgc2luZ2xlIGNhbGwgdG8gdGhlCkBAIC04NTksNyArOTIxLDggQEAKIAogaW5saW5lIHN0YXRpYyBiZmRfdm1hCiBfZnJ2X2FkZF9keW5fcmVsb2MgKGJmZCAqb3V0cHV0X2JmZCwgYXNlY3Rpb24gKnNyZWxvYywgYmZkX3ZtYSBvZmZzZXQsCi0JCSAgICBpbnQgcmVsb2NfdHlwZSwgbG9uZyBkeW5pbmR4LCBiZmRfdm1hIGFkZGVuZCkKKwkJICAgIGludCByZWxvY190eXBlLCBsb25nIGR5bmluZHgsIGJmZF92bWEgYWRkZW5kLAorCQkgICAgc3RydWN0IGZydl9waWNfcmVsb2NzX2luZm8gKmVudHJ5KQogewogICBFbGZfSW50ZXJuYWxfUmVsYSBvdXRyZWw7CiAgIGJmZF92bWEgcmVsb2Nfb2Zmc2V0OwpAQCAtODc0LDEzICs5MzcsMTcgQEAKIAkJCSAgICBzcmVsb2MtPmNvbnRlbnRzICsgcmVsb2Nfb2Zmc2V0KTsKICAgc3JlbG9jLT5yZWxvY19jb3VudCsrOwogCisgIEJGRF9BU1NFUlQgKGVudHJ5LT5keW5yZWxvY3MgPiAwKTsKKyAgZW50cnktPmR5bnJlbG9jcy0tOworCiAgIHJldHVybiByZWxvY19vZmZzZXQ7CiB9CiAKIC8qIEFkZCBhIGZpeHVwIHRvIHRoZSBST0ZJWFVQIHNlY3Rpb24uICAqLwogCiBzdGF0aWMgYmZkX3ZtYQotX2Zydl9hZGRfcm9maXh1cCAoYmZkICpvdXRwdXRfYmZkLCBhc2VjdGlvbiAqcm9maXh1cCwgYmZkX3ZtYSBvZmZzZXQpCitfZnJ2X2FkZF9yb2ZpeHVwIChiZmQgKm91dHB1dF9iZmQsIGFzZWN0aW9uICpyb2ZpeHVwLCBiZmRfdm1hIG9mZnNldCwKKwkJICBzdHJ1Y3QgZnJ2X3BpY19yZWxvY3NfaW5mbyAqZW50cnkpCiB7CiAgIGJmZF92bWEgZml4dXBfb2Zmc2V0OwogCkBAIC04OTQsNyArOTYxLDEzIEBACiAgICAgICBiZmRfcHV0XzMyIChvdXRwdXRfYmZkLCBvZmZzZXQsIHJvZml4dXAtPmNvbnRlbnRzICsgZml4dXBfb2Zmc2V0KTsKICAgICB9CiAgIHJvZml4dXAtPnJlbG9jX2NvdW50Kys7Ci0JICAgICAgCisKKyAgaWYgKGVudHJ5KQorICAgIHsKKyAgICAgIEJGRF9BU1NFUlQgKGVudHJ5LT5maXh1cHMgPiAwKTsKKyAgICAgIGVudHJ5LT5maXh1cHMtLTsKKyAgICB9CisKICAgcmV0dXJuIGZpeHVwX29mZnNldDsKIH0KIApAQCAtOTk5LDEzICsxMDcyLDEzIEBACiAJewogCSAgaWYgKHNlYykKIAkgICAgYWQgKz0gc2VjLT5vdXRwdXRfc2VjdGlvbi0+dm1hOwotCSAgaWYgKGVudHJ5LT5zeW1uZHggIT0gLTEgfHwKLQkgICAgICBlbnRyeS0+ZC5oLT5yb290LnR5cGUgIT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspCisJICBpZiAoZW50cnktPnN5bW5keCAhPSAtMQorCSAgICAgIHx8IGVudHJ5LT5kLmgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX3VuZGVmd2VhaykKIAkgICAgX2Zydl9hZGRfcm9maXh1cCAob3V0cHV0X2JmZCwgZnJ2X2dvdGZpeHVwX3NlY3Rpb24gKGluZm8pLAogCQkJICAgICAgZnJ2X2dvdF9zZWN0aW9uIChpbmZvKS0+b3V0cHV0X3NlY3Rpb24tPnZtYQogCQkJICAgICAgKyBmcnZfZ290X3NlY3Rpb24gKGluZm8pLT5vdXRwdXRfb2Zmc2V0CiAJCQkgICAgICArIGZydl9nb3RfaW5pdGlhbF9vZmZzZXQgKGluZm8pCi0JCQkgICAgICArIGVudHJ5LT5nb3RfZW50cnkpOworCQkJICAgICAgKyBlbnRyeS0+Z290X2VudHJ5LCBlbnRyeSk7CiAJfQogICAgICAgZWxzZQogCV9mcnZfYWRkX2R5bl9yZWxvYyAob3V0cHV0X2JmZCwgZnJ2X2dvdHJlbF9zZWN0aW9uIChpbmZvKSwKQEAgLTEwMTYsNyArMTA4OSw3IEBACiAJCQkgICAgICsgZW50cnktPmdvdF9lbnRyeSkKIAkJCSAgICArIGZydl9nb3Rfc2VjdGlvbiAoaW5mbyktPm91dHB1dF9zZWN0aW9uLT52bWEKIAkJCSAgICArIGZydl9nb3Rfc2VjdGlvbiAoaW5mbyktPm91dHB1dF9vZmZzZXQsCi0JCQkgICAgUl9GUlZfMzIsIGlkeCwgYWQpOworCQkJICAgIFJfRlJWXzMyLCBpZHgsIGFkLCBlbnRyeSk7CiAJCiAgICAgICBiZmRfcHV0XzMyIChvdXRwdXRfYmZkLCBhZCwKIAkJICBmcnZfZ290X3NlY3Rpb24gKGluZm8pLT5jb250ZW50cwpAQCAtMTAyOSw2NSArMTEwMiw3OSBAQAogICBpZiAoZW50cnktPmZkZ290X2VudHJ5KQogICAgIHsKICAgICAgIGludCByZWxvYywgaWR4OwotICAgICAgYmZkX3ZtYSBhZDsKKyAgICAgIGJmZF92bWEgYWQgPSAwOwogICAgICAgCi0gICAgICAvKiBJZiB0aGUgc3ltYm9sIGlzIGR5bmFtaWMgYW5kIHRoZXJlIG1heSBiZSBkeW5hbWljIHN5bWJvbAotCSByZXNvbHV0aW9uIGJlY2F1c2Ugd2UgYXJlIG9yIGFyZSBsaW5rZWQgd2l0aCBhIHNoYXJlZAotCSBsaWJyYXJ5LCBlbWl0IGEgRlVOQ0RFU0MgcmVsb2NhdGlvbiBzdWNoIHRoYXQgdGhlIGR5bmFtaWMKLQkgbGlua2VyIHdpbGwgYWxsb2NhdGUgdGhlIGZ1bmN0aW9uIGRlc2NyaXB0b3IuICAqLwotICAgICAgaWYgKGVudHJ5LT5zeW1uZHggPT0gLTEgJiYgISBGUlZfRlVOQ0RFU0NfTE9DQUwgKGluZm8sIGVudHJ5LT5kLmgpKQorICAgICAgaWYgKCEgKGVudHJ5LT5zeW1uZHggPT0gLTEKKwkgICAgICYmIGVudHJ5LT5kLmgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmd2VhaworCSAgICAgJiYgRlJWX1NZTV9MT0NBTCAoaW5mbywgZW50cnktPmQuaCkpKQogCXsKLQkgIHJlbG9jID0gUl9GUlZfRlVOQ0RFU0M7Ci0JICBpZHggPSBkeW5pbmR4OwotCSAgYWQgPSBhZGRlbmQ7Ci0JICBpZiAoYWQpCi0JICAgIHJldHVybiBGQUxTRTsKLQl9Ci0gICAgICBlbHNlCi0JewotCSAgLyogT3RoZXJ3aXNlLCB3ZSBrbm93IHdlIGhhdmUgYSBwcml2YXRlIGZ1bmN0aW9uIGRlc2NyaXB0b3IsCi0JICAgICBzbyByZWZlcmVuY2UgaXQgZGlyZWN0bHkuICAqLwotCSAgaWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluYW1pY19zZWN0aW9uc19jcmVhdGVkKQotCSAgICBCRkRfQVNTRVJUIChlbnRyeS0+cHJpdmZkKTsKLQkgIHJlbG9jID0gUl9GUlZfMzI7Ci0JICBpZHggPSBlbGZfc2VjdGlvbl9kYXRhIChmcnZfZ290X3NlY3Rpb24gKGluZm8pLT5vdXRwdXRfc2VjdGlvbikKLQkgICAgLT5keW5pbmR4OwotCSAgYWQgPSBmcnZfZ290X3NlY3Rpb24gKGluZm8pLT5vdXRwdXRfb2Zmc2V0ICsKLQkgICAgZnJ2X2dvdF9pbml0aWFsX29mZnNldCAoaW5mbykgKyBlbnRyeS0+ZmRfZW50cnk7Ci0JfQotCi0gICAgICAvKiBJZiB0aGVyZSBpcyByb29tIGZvciBkeW5hbWljIHN5bWJvbCByZXNvbHV0aW9uLCBlbWl0IHRoZQotCSBkeW5hbWljIHJlbG9jYXRpb24uICBIb3dldmVyLCBpZiB3ZSdyZSBsaW5raW5nIGFuIGV4ZWN1dGFibGUKLQkgYXQgYSBmaXhlZCBsb2NhdGlvbiwgd2Ugd29uJ3QgaGF2ZSBlbWl0dGVkIGEgZHluYW1pYyBzeW1ib2wKLQkgZW50cnkgZm9yIHRoZSBnb3Qgc2VjdGlvbiwgc28gaWR4IHdpbGwgYmUgemVybywgd2hpY2ggbWVhbnMKLQkgd2UgY2FuIGFuZCBzaG91bGQgY29tcHV0ZSB0aGUgYWRkcmVzcyBvZiB0aGUgcHJpdmF0ZQotCSBkZXNjcmlwdG9yIG91cnNlbHZlcy4gICovCi0gICAgICBpZiAoaW5mby0+ZXhlY3V0YWJsZSAmJiAhaW5mby0+cGllCi0JICAmJiAoZW50cnktPnN5bW5keCAhPSAtMSB8fCBGUlZfRlVOQ0RFU0NfTE9DQUwgKGluZm8sIGVudHJ5LT5kLmgpKSkKLQl7Ci0JICBpZiAoZW50cnktPnN5bW5keCA9PSAtMQotCSAgICAgICYmIGVudHJ5LT5kLmgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmd2VhaykKLQkgICAgYWQgPSAwOworCSAgLyogSWYgdGhlIHN5bWJvbCBpcyBkeW5hbWljIGFuZCB0aGVyZSBtYXkgYmUgZHluYW1pYyBzeW1ib2wKKwkgICAgIHJlc29sdXRpb24gYmVjYXVzZSB3ZSBhcmUsIG9yIGFyZSBsaW5rZWQgd2l0aCwgYSBzaGFyZWQKKwkgICAgIGxpYnJhcnksIGVtaXQgYSBGVU5DREVTQyByZWxvY2F0aW9uIHN1Y2ggdGhhdCB0aGUgZHluYW1pYworCSAgICAgbGlua2VyIHdpbGwgYWxsb2NhdGUgdGhlIGZ1bmN0aW9uIGRlc2NyaXB0b3IuICBJZiB0aGUKKwkgICAgIHN5bWJvbCBuZWVkcyBhIG5vbi1sb2NhbCBmdW5jdGlvbiBkZXNjcmlwdG9yIGJ1dCBiaW5kcworCSAgICAgbG9jYWxseSAoZS5nLiwgaXRzIHZpc2liaWxpdHkgaXMgcHJvdGVjdGVkLCBlbWl0IGEKKwkgICAgIGR5bmFtaWMgcmVsb2NhdGlvbiBkZWNheWVkIHRvIHNlY3Rpb24rb2Zmc2V0LiAgKi8KKwkgIGlmIChlbnRyeS0+c3ltbmR4ID09IC0xICYmICEgRlJWX0ZVTkNERVNDX0xPQ0FMIChpbmZvLCBlbnRyeS0+ZC5oKQorCSAgICAgICYmIEZSVl9TWU1fTE9DQUwgKGluZm8sIGVudHJ5LT5kLmgpCisJICAgICAgJiYgIShpbmZvLT5leGVjdXRhYmxlICYmICFpbmZvLT5waWUpKQorCSAgICB7CisJICAgICAgcmVsb2MgPSBSX0ZSVl9GVU5DREVTQzsKKwkgICAgICBpZHggPSBlbGZfc2VjdGlvbl9kYXRhIChlbnRyeS0+ZC5oLT5yb290LnUuZGVmLnNlY3Rpb24KKwkJCQkgICAgICAtPm91dHB1dF9zZWN0aW9uKS0+ZHluaW5keDsKKwkgICAgICBhZCA9IGVudHJ5LT5kLmgtPnJvb3QudS5kZWYuc2VjdGlvbi0+b3V0cHV0X29mZnNldAorCQkrIGVudHJ5LT5kLmgtPnJvb3QudS5kZWYudmFsdWU7CisJICAgIH0KKwkgIGVsc2UgaWYgKGVudHJ5LT5zeW1uZHggPT0gLTEKKwkJICAgJiYgISBGUlZfRlVOQ0RFU0NfTE9DQUwgKGluZm8sIGVudHJ5LT5kLmgpKQorCSAgICB7CisJICAgICAgcmVsb2MgPSBSX0ZSVl9GVU5DREVTQzsKKwkgICAgICBpZHggPSBkeW5pbmR4OworCSAgICAgIGFkID0gYWRkZW5kOworCSAgICAgIGlmIChhZCkKKwkJcmV0dXJuIEZBTFNFOworCSAgICB9CiAJICBlbHNlCiAJICAgIHsKKwkgICAgICAvKiBPdGhlcndpc2UsIHdlIGtub3cgd2UgaGF2ZSBhIHByaXZhdGUgZnVuY3Rpb24gZGVzY3JpcHRvciwKKwkJIHNvIHJlZmVyZW5jZSBpdCBkaXJlY3RseS4gICovCisJICAgICAgaWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluYW1pY19zZWN0aW9uc19jcmVhdGVkKQorCQlCRkRfQVNTRVJUIChlbnRyeS0+cHJpdmZkKTsKKwkgICAgICByZWxvYyA9IFJfRlJWXzMyOworCSAgICAgIGlkeCA9IGVsZl9zZWN0aW9uX2RhdGEgKGZydl9nb3Rfc2VjdGlvbiAoaW5mbykKKwkJCQkgICAgICAtPm91dHB1dF9zZWN0aW9uKS0+ZHluaW5keDsKKwkgICAgICBhZCA9IGZydl9nb3Rfc2VjdGlvbiAoaW5mbyktPm91dHB1dF9vZmZzZXQKKwkJKyBmcnZfZ290X2luaXRpYWxfb2Zmc2V0IChpbmZvKSArIGVudHJ5LT5mZF9lbnRyeTsKKwkgICAgfQorCisJICAvKiBJZiB0aGVyZSBpcyByb29tIGZvciBkeW5hbWljIHN5bWJvbCByZXNvbHV0aW9uLCBlbWl0IHRoZQorCSAgICAgZHluYW1pYyByZWxvY2F0aW9uLiAgSG93ZXZlciwgaWYgd2UncmUgbGlua2luZyBhbgorCSAgICAgZXhlY3V0YWJsZSBhdCBhIGZpeGVkIGxvY2F0aW9uLCB3ZSB3b24ndCBoYXZlIGVtaXR0ZWQgYQorCSAgICAgZHluYW1pYyBzeW1ib2wgZW50cnkgZm9yIHRoZSBnb3Qgc2VjdGlvbiwgc28gaWR4IHdpbGwgYmUKKwkgICAgIHplcm8sIHdoaWNoIG1lYW5zIHdlIGNhbiBhbmQgc2hvdWxkIGNvbXB1dGUgdGhlIGFkZHJlc3MKKwkgICAgIG9mIHRoZSBwcml2YXRlIGRlc2NyaXB0b3Igb3Vyc2VsdmVzLiAgKi8KKwkgIGlmIChpbmZvLT5leGVjdXRhYmxlICYmICFpbmZvLT5waWUKKwkgICAgICAmJiAoZW50cnktPnN5bW5keCAhPSAtMQorCQkgIHx8IEZSVl9GVU5DREVTQ19MT0NBTCAoaW5mbywgZW50cnktPmQuaCkpKQorCSAgICB7CiAJICAgICAgYWQgKz0gZnJ2X2dvdF9zZWN0aW9uIChpbmZvKS0+b3V0cHV0X3NlY3Rpb24tPnZtYTsKIAkgICAgICBfZnJ2X2FkZF9yb2ZpeHVwIChvdXRwdXRfYmZkLCBmcnZfZ290Zml4dXBfc2VjdGlvbiAoaW5mbyksCiAJCQkJZnJ2X2dvdF9zZWN0aW9uIChpbmZvKS0+b3V0cHV0X3NlY3Rpb24tPnZtYQogCQkJCSsgZnJ2X2dvdF9zZWN0aW9uIChpbmZvKS0+b3V0cHV0X29mZnNldAogCQkJCSsgZnJ2X2dvdF9pbml0aWFsX29mZnNldCAoaW5mbykKLQkJCQkrIGVudHJ5LT5mZGdvdF9lbnRyeSk7CisJCQkJKyBlbnRyeS0+ZmRnb3RfZW50cnksIGVudHJ5KTsKIAkgICAgfQorCSAgZWxzZQorCSAgICBfZnJ2X2FkZF9keW5fcmVsb2MgKG91dHB1dF9iZmQsIGZydl9nb3RyZWxfc2VjdGlvbiAoaW5mbyksCisJCQkJX2JmZF9lbGZfc2VjdGlvbl9vZmZzZXQKKwkJCQkob3V0cHV0X2JmZCwgaW5mbywKKwkJCQkgZnJ2X2dvdF9zZWN0aW9uIChpbmZvKSwKKwkJCQkgZnJ2X2dvdF9pbml0aWFsX29mZnNldCAoaW5mbykKKwkJCQkgKyBlbnRyeS0+ZmRnb3RfZW50cnkpCisJCQkJKyBmcnZfZ290X3NlY3Rpb24gKGluZm8pLT5vdXRwdXRfc2VjdGlvbi0+dm1hCisJCQkJKyBmcnZfZ290X3NlY3Rpb24gKGluZm8pLT5vdXRwdXRfb2Zmc2V0LAorCQkJCXJlbG9jLCBpZHgsIGFkLCBlbnRyeSk7CiAJfQotICAgICAgZWxzZQotCV9mcnZfYWRkX2R5bl9yZWxvYyAob3V0cHV0X2JmZCwgZnJ2X2dvdHJlbF9zZWN0aW9uIChpbmZvKSwKLQkJCSAgICBfYmZkX2VsZl9zZWN0aW9uX29mZnNldAotCQkJICAgIChvdXRwdXRfYmZkLCBpbmZvLAotCQkJICAgICBmcnZfZ290X3NlY3Rpb24gKGluZm8pLAotCQkJICAgICBmcnZfZ290X2luaXRpYWxfb2Zmc2V0IChpbmZvKQotCQkJICAgICArIGVudHJ5LT5mZGdvdF9lbnRyeSkKLQkJCSAgICArIGZydl9nb3Rfc2VjdGlvbiAoaW5mbyktPm91dHB1dF9zZWN0aW9uLT52bWEKLQkJCSAgICArIGZydl9nb3Rfc2VjdGlvbiAoaW5mbyktPm91dHB1dF9vZmZzZXQsCi0JCQkgICAgcmVsb2MsIGlkeCwgYWQpOwogCiAgICAgICBiZmRfcHV0XzMyIChvdXRwdXRfYmZkLCBhZCwKIAkJICBmcnZfZ290X3NlY3Rpb24gKGluZm8pLT5jb250ZW50cwpAQCAtMTEyOCwxOSArMTIxNSwxOSBAQAogCSAgaWYgKHNlYykKIAkgICAgYWQgKz0gc2VjLT5vdXRwdXRfc2VjdGlvbi0+dm1hOwogCSAgb2ZzdCA9IDA7Ci0JICBpZiAoZW50cnktPnN5bW5keCAhPSAtMSB8fAotCSAgICAgIGVudHJ5LT5kLmgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX3VuZGVmd2VhaykKKwkgIGlmIChlbnRyeS0+c3ltbmR4ICE9IC0xCisJICAgICAgfHwgZW50cnktPmQuaC0+cm9vdC50eXBlICE9IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQogCSAgICB7CiAJICAgICAgX2Zydl9hZGRfcm9maXh1cCAob3V0cHV0X2JmZCwgZnJ2X2dvdGZpeHVwX3NlY3Rpb24gKGluZm8pLAogCQkJCWZydl9nb3Rfc2VjdGlvbiAoaW5mbyktPm91dHB1dF9zZWN0aW9uLT52bWEKIAkJCQkrIGZydl9nb3Rfc2VjdGlvbiAoaW5mbyktPm91dHB1dF9vZmZzZXQKIAkJCQkrIGZydl9nb3RfaW5pdGlhbF9vZmZzZXQgKGluZm8pCi0JCQkJKyBlbnRyeS0+ZmRfZW50cnkpOworCQkJCSsgZW50cnktPmZkX2VudHJ5LCBlbnRyeSk7CiAJICAgICAgX2Zydl9hZGRfcm9maXh1cCAob3V0cHV0X2JmZCwgZnJ2X2dvdGZpeHVwX3NlY3Rpb24gKGluZm8pLAogCQkJCWZydl9nb3Rfc2VjdGlvbiAoaW5mbyktPm91dHB1dF9zZWN0aW9uLT52bWEKIAkJCQkrIGZydl9nb3Rfc2VjdGlvbiAoaW5mbyktPm91dHB1dF9vZmZzZXQKIAkJCQkrIGZydl9nb3RfaW5pdGlhbF9vZmZzZXQgKGluZm8pCi0JCQkJKyBlbnRyeS0+ZmRfZW50cnkgKyA0KTsKKwkJCQkrIGVudHJ5LT5mZF9lbnRyeSArIDQsIGVudHJ5KTsKIAkgICAgfQogCX0KICAgICAgIGVsc2UKQEAgLTExNTYsNyArMTI0Myw3IEBACiAJCQkJICsgZW50cnktPmZkX2VudHJ5KQogCQkJCSsgZnJ2X2dvdF9zZWN0aW9uIChpbmZvKS0+b3V0cHV0X3NlY3Rpb24tPnZtYQogCQkJCSsgZnJ2X2dvdF9zZWN0aW9uIChpbmZvKS0+b3V0cHV0X29mZnNldCwKLQkJCQlSX0ZSVl9GVU5DREVTQ19WQUxVRSwgaWR4LCBhZCk7CisJCQkJUl9GUlZfRlVOQ0RFU0NfVkFMVUUsIGlkeCwgYWQsIGVudHJ5KTsKIAl9CiAKICAgICAgIC8qIElmIHdlJ3ZlIG9taXR0ZWQgdGhlIGR5bmFtaWMgcmVsb2NhdGlvbiwganVzdCBlbWl0IHRoZSBmaXhlZApAQCAtMTg3MSwxNiArMTk1OCwxNiBAQAogCSAgICB7CiAJICAgICAgcmVsb2NhdGlvbiA9IDA7CiAJICAgIH0KLQkgIGVsc2UgaWYgKCAgICEgaW5mby0+ZXhlY3V0YWJsZQotCQkgICAmJiAhIGluZm8tPnN5bWJvbGljCi0JCSAgICYmIGluZm8tPnVucmVzb2x2ZWRfc3ltc19pbl9vYmplY3RzID09IFJNX0lHTk9SRQorCSAgZWxzZSBpZiAoaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMgPT0gUk1fSUdOT1JFCiAJCSAgICYmIEVMRl9TVF9WSVNJQklMSVRZIChoLT5vdGhlcikgPT0gU1RWX0RFRkFVTFQpCiAJICAgIHJlbG9jYXRpb24gPSAwOwogCSAgZWxzZQogCSAgICB7CiAJICAgICAgaWYgKCEgKCgqaW5mby0+Y2FsbGJhY2tzLT51bmRlZmluZWRfc3ltYm9sKQogCQkgICAgIChpbmZvLCBoLT5yb290LnJvb3Quc3RyaW5nLCBpbnB1dF9iZmQsCi0JCSAgICAgIGlucHV0X3NlY3Rpb24sIHJlbC0+cl9vZmZzZXQsIFRSVUUpKSkKKwkJICAgICAgaW5wdXRfc2VjdGlvbiwgcmVsLT5yX29mZnNldCwKKwkJICAgICAgKGluZm8tPnVucmVzb2x2ZWRfc3ltc19pbl9vYmplY3RzID09IFJNX0dFTkVSQVRFX0VSUk9SCisJCSAgICAgICB8fCBFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpKSkpKQogCQlyZXR1cm4gRkFMU0U7CiAJICAgICAgcmVsb2NhdGlvbiA9IDA7CiAJICAgIH0KQEAgLTE5MDgsMTQgKzE5OTUsMTQgQEAKIAkgIGlmIChoICE9IE5VTEwpCiAJICAgIHBpY3JlbCA9IGZydl9waWNfcmVsb2NzX2luZm9fZm9yX2dsb2JhbCAoZnJ2X3JlbG9jc19pbmZvIChpbmZvKSwKIAkJCQkJCSAgICAgaW5wdXRfYmZkLCBoLAotCQkJCQkJICAgICBvcmlnX2FkZGVuZCk7CisJCQkJCQkgICAgIG9yaWdfYWRkZW5kLCBJTlNFUlQpOwogCSAgZWxzZQogCSAgICAvKiBJbiBvcmRlciB0byBmaW5kIHRoZSBlbnRyeSB3ZSBjcmVhdGVkIGJlZm9yZSwgd2UgbXVzdAogCSAgICAgICB1c2UgdGhlIG9yaWdpbmFsIGFkZGVuZCwgbm90IHRoZSBvbmUgdGhhdCBtYXkgaGF2ZSBiZWVuCiAJICAgICAgIG1vZGlmaWVkIGJ5IF9iZmRfZWxmX3JlbGFfbG9jYWxfc3ltKCkuICAqLwogCSAgICBwaWNyZWwgPSBmcnZfcGljX3JlbG9jc19pbmZvX2Zvcl9sb2NhbCAoZnJ2X3JlbG9jc19pbmZvIChpbmZvKSwKIAkJCQkJCSAgICBpbnB1dF9iZmQsIHJfc3ltbmR4LAotCQkJCQkJICAgIG9yaWdfYWRkZW5kKTsKKwkJCQkJCSAgICBvcmlnX2FkZGVuZCwgSU5TRVJUKTsKIAkgIGlmICghIHBpY3JlbCkKIAkgICAgcmV0dXJuIEZBTFNFOwogCkBAIC0yMDA1LDg5ICsyMDkyLDEwNSBAQAogCSAgICBpbnQgZHluaW5keDsKIAkgICAgYmZkX3ZtYSBhZGRlbmQgPSByZWwtPnJfYWRkZW5kOwogCi0JICAgIC8qIElmIHRoZSBzeW1ib2wgaXMgZHluYW1pYyBhbmQgdGhlcmUgbWF5IGJlIGR5bmFtaWMKLQkgICAgICAgc3ltYm9sIHJlc29sdXRpb24gYmVjYXVzZSB3ZSBhcmUgb3IgYXJlIGxpbmtlZCB3aXRoIGEKLQkgICAgICAgc2hhcmVkIGxpYnJhcnksIGVtaXQgYSBGVU5DREVTQyByZWxvY2F0aW9uIHN1Y2ggdGhhdAotCSAgICAgICB0aGUgZHluYW1pYyBsaW5rZXIgd2lsbCBhbGxvY2F0ZSB0aGUgZnVuY3Rpb24KLQkgICAgICAgZGVzY3JpcHRvci4gICovCi0JICAgIGlmIChoICYmICEgRlJWX0ZVTkNERVNDX0xPQ0FMIChpbmZvLCBoKSkKKwkgICAgaWYgKCEgKGggJiYgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrCisJCSAgICYmIEZSVl9TWU1fTE9DQUwgKGluZm8sIGgpKSkKIAkgICAgICB7Ci0JCWlmIChhZGRlbmQpCisJCS8qIElmIHRoZSBzeW1ib2wgaXMgZHluYW1pYyBhbmQgdGhlcmUgbWF5IGJlIGR5bmFtaWMKKwkJICAgc3ltYm9sIHJlc29sdXRpb24gYmVjYXVzZSB3ZSBhcmUgb3IgYXJlIGxpbmtlZCB3aXRoIGEKKwkJICAgc2hhcmVkIGxpYnJhcnksIGVtaXQgYSBGVU5DREVTQyByZWxvY2F0aW9uIHN1Y2ggdGhhdAorCQkgICB0aGUgZHluYW1pYyBsaW5rZXIgd2lsbCBhbGxvY2F0ZSB0aGUgZnVuY3Rpb24KKwkJICAgZGVzY3JpcHRvci4gIElmIHRoZSBzeW1ib2wgbmVlZHMgYSBub24tbG9jYWwgZnVuY3Rpb24KKwkJICAgZGVzY3JpcHRvciBidXQgYmluZHMgbG9jYWxseSAoZS5nLiwgaXRzIHZpc2liaWxpdHkgaXMKKwkJICAgcHJvdGVjdGVkLCBlbWl0IGEgZHluYW1pYyByZWxvY2F0aW9uIGRlY2F5ZWQgdG8KKwkJICAgc2VjdGlvbitvZmZzZXQuICAqLworCQlpZiAoaCAmJiAhIEZSVl9GVU5DREVTQ19MT0NBTCAoaW5mbywgaCkKKwkJICAgICYmIEZSVl9TWU1fTE9DQUwgKGluZm8sIGgpCisJCSAgICAmJiAhKGluZm8tPmV4ZWN1dGFibGUgJiYgIWluZm8tPnBpZSkpCiAJCSAgewotCQkgICAgaW5mby0+Y2FsbGJhY2tzLT53YXJuaW5nCi0JCSAgICAgIChpbmZvLCBfKCJSX0ZSVl9GVU5DREVTQyByZWZlcmVuY2VzIGR5bmFtaWMgc3ltYm9sIHdpdGggbm9uemVybyBhZGRlbmQiKSwKLQkJICAgICAgIG5hbWUsIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLT5yX29mZnNldCk7Ci0JCSAgICByZXR1cm4gRkFMU0U7CisJCSAgICBkeW5pbmR4ID0gZWxmX3NlY3Rpb25fZGF0YSAoaC0+cm9vdC51LmRlZi5zZWN0aW9uCisJCQkJCQktPm91dHB1dF9zZWN0aW9uKS0+ZHluaW5keDsKKwkJICAgIGFkZGVuZCArPSBoLT5yb290LnUuZGVmLnNlY3Rpb24tPm91dHB1dF9vZmZzZXQKKwkJICAgICAgKyBoLT5yb290LnUuZGVmLnZhbHVlOwogCQkgIH0KLQkJZHluaW5keCA9IGgtPmR5bmluZHg7Ci0JICAgICAgfQotCSAgICBlbHNlCi0JICAgICAgewotCQkvKiBPdGhlcndpc2UsIHdlIGtub3cgd2UgaGF2ZSBhIHByaXZhdGUgZnVuY3Rpb24KLQkJICAgZGVzY3JpcHRvciwgc28gcmVmZXJlbmNlIGl0IGRpcmVjdGx5LiAgKi8KLQkJQkZEX0FTU0VSVCAocGljcmVsLT5wcml2ZmQpOwotCQlyX3R5cGUgPSBSX0ZSVl8zMjsKLQkJZHluaW5keCA9IGVsZl9zZWN0aW9uX2RhdGEgKGZydl9nb3Rfc2VjdGlvbgotCQkJCQkgICAgKGluZm8pLT5vdXRwdXRfc2VjdGlvbiktPmR5bmluZHg7Ci0JCWFkZGVuZCA9IGZydl9nb3Rfc2VjdGlvbiAoaW5mbyktPm91dHB1dF9vZmZzZXQKLQkJICArIGZydl9nb3RfaW5pdGlhbF9vZmZzZXQgKGluZm8pCi0JCSAgKyBwaWNyZWwtPmZkX2VudHJ5OwotCSAgICAgIH0KKwkJZWxzZSBpZiAoaCAmJiAhIEZSVl9GVU5DREVTQ19MT0NBTCAoaW5mbywgaCkpCisJCSAgeworCQkgICAgaWYgKGFkZGVuZCkKKwkJICAgICAgeworCQkJaW5mby0+Y2FsbGJhY2tzLT53YXJuaW5nCisJCQkgIChpbmZvLCBfKCJSX0ZSVl9GVU5DREVTQyByZWZlcmVuY2VzIGR5bmFtaWMgc3ltYm9sIHdpdGggbm9uemVybyBhZGRlbmQiKSwKKwkJCSAgIG5hbWUsIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLT5yX29mZnNldCk7CisJCQlyZXR1cm4gRkFMU0U7CisJCSAgICAgIH0KKwkJICAgIGR5bmluZHggPSBoLT5keW5pbmR4OworCQkgIH0KKwkJZWxzZQorCQkgIHsKKwkJICAgIC8qIE90aGVyd2lzZSwgd2Uga25vdyB3ZSBoYXZlIGEgcHJpdmF0ZSBmdW5jdGlvbgorCQkgICAgICAgZGVzY3JpcHRvciwgc28gcmVmZXJlbmNlIGl0IGRpcmVjdGx5LiAgKi8KKwkJICAgIEJGRF9BU1NFUlQgKHBpY3JlbC0+cHJpdmZkKTsKKwkJICAgIHJfdHlwZSA9IFJfRlJWXzMyOworCQkgICAgZHluaW5keCA9IGVsZl9zZWN0aW9uX2RhdGEgKGZydl9nb3Rfc2VjdGlvbgkoaW5mbykKKwkJCQkJCS0+b3V0cHV0X3NlY3Rpb24pLT5keW5pbmR4OworCQkgICAgYWRkZW5kID0gZnJ2X2dvdF9zZWN0aW9uIChpbmZvKS0+b3V0cHV0X29mZnNldAorCQkgICAgICArIGZydl9nb3RfaW5pdGlhbF9vZmZzZXQgKGluZm8pCisJCSAgICAgICsgcGljcmVsLT5mZF9lbnRyeTsKKwkJICB9CiAKLQkgICAgLyogSWYgdGhlcmUgaXMgcm9vbSBmb3IgZHluYW1pYyBzeW1ib2wgcmVzb2x1dGlvbiwgZW1pdAotCSAgICAgICB0aGUgZHluYW1pYyByZWxvY2F0aW9uLiAgSG93ZXZlciwgaWYgd2UncmUgbGlua2luZyBhbgotCSAgICAgICBleGVjdXRhYmxlIGF0IGEgZml4ZWQgbG9jYXRpb24sIHdlIHdvbid0IGhhdmUgZW1pdHRlZCBhCi0JICAgICAgIGR5bmFtaWMgc3ltYm9sIGVudHJ5IGZvciB0aGUgZ290IHNlY3Rpb24sIHNvIGlkeCB3aWxsCi0JICAgICAgIGJlIHplcm8sIHdoaWNoIG1lYW5zIHdlIGNhbiBhbmQgc2hvdWxkIGNvbXB1dGUgdGhlCi0JICAgICAgIGFkZHJlc3Mgb2YgdGhlIHByaXZhdGUgZGVzY3JpcHRvciBvdXJzZWx2ZXMuICAqLwotCSAgICBpZiAoaW5mby0+ZXhlY3V0YWJsZSAmJiAhaW5mby0+cGllCi0JCSYmICghaCB8fCBGUlZfRlVOQ0RFU0NfTE9DQUwgKGluZm8sIGgpKSkKLQkgICAgICB7Ci0JCWFkZGVuZCArPSBmcnZfZ290X3NlY3Rpb24gKGluZm8pLT5vdXRwdXRfc2VjdGlvbi0+dm1hOwotCQlpZiAoKGJmZF9nZXRfc2VjdGlvbl9mbGFncyAob3V0cHV0X2JmZCwKLQkJCQkJICAgaW5wdXRfc2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24pCi0JCSAgICAgJiAoU0VDX0FMTE9DIHwgU0VDX0xPQUQpKSA9PSAoU0VDX0FMTE9DIHwgU0VDX0xPQUQpKQorCQkvKiBJZiB0aGVyZSBpcyByb29tIGZvciBkeW5hbWljIHN5bWJvbCByZXNvbHV0aW9uLCBlbWl0CisJCSAgIHRoZSBkeW5hbWljIHJlbG9jYXRpb24uICBIb3dldmVyLCBpZiB3ZSdyZSBsaW5raW5nIGFuCisJCSAgIGV4ZWN1dGFibGUgYXQgYSBmaXhlZCBsb2NhdGlvbiwgd2Ugd29uJ3QgaGF2ZSBlbWl0dGVkIGEKKwkJICAgZHluYW1pYyBzeW1ib2wgZW50cnkgZm9yIHRoZSBnb3Qgc2VjdGlvbiwgc28gaWR4IHdpbGwKKwkJICAgYmUgemVybywgd2hpY2ggbWVhbnMgd2UgY2FuIGFuZCBzaG91bGQgY29tcHV0ZSB0aGUKKwkJICAgYWRkcmVzcyBvZiB0aGUgcHJpdmF0ZSBkZXNjcmlwdG9yIG91cnNlbHZlcy4gICovCisJCWlmIChpbmZvLT5leGVjdXRhYmxlICYmICFpbmZvLT5waWUKKwkJICAgICYmICghaCB8fCBGUlZfRlVOQ0RFU0NfTE9DQUwgKGluZm8sIGgpKSkKKwkJICB7CisJCSAgICBhZGRlbmQgKz0gZnJ2X2dvdF9zZWN0aW9uIChpbmZvKS0+b3V0cHV0X3NlY3Rpb24tPnZtYTsKKwkJICAgIGlmICgoYmZkX2dldF9zZWN0aW9uX2ZsYWdzIChvdXRwdXRfYmZkLAorCQkJCQkJaW5wdXRfc2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24pCisJCQkgJiAoU0VDX0FMTE9DIHwgU0VDX0xPQUQpKSA9PSAoU0VDX0FMTE9DIHwgU0VDX0xPQUQpKQorCQkgICAgICB7CisJCQlpZiAoX2Zydl9vc2VjX3JlYWRvbmx5X3AgKG91dHB1dF9iZmQsCisJCQkJCQkgIGlucHV0X3NlY3Rpb24tPm91dHB1dF9zZWN0aW9uKSkKKwkJCSAgeworCQkJICAgIGluZm8tPmNhbGxiYWNrcy0+d2FybmluZworCQkJICAgICAgKGluZm8sCisJCQkgICAgICAgXygiY2Fubm90IGVtaXQgZml4dXBzIGluIHJlYWQtb25seSBzZWN0aW9uIiksCisJCQkgICAgICAgbmFtZSwgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0KTsKKwkJCSAgICByZXR1cm4gRkFMU0U7CisJCQkgIH0KKwkJCV9mcnZfYWRkX3JvZml4dXAgKG91dHB1dF9iZmQsCisJCQkJCSAgZnJ2X2dvdGZpeHVwX3NlY3Rpb24gKGluZm8pLAorCQkJCQkgIF9iZmRfZWxmX3NlY3Rpb25fb2Zmc2V0CisJCQkJCSAgKG91dHB1dF9iZmQsIGluZm8sCisJCQkJCSAgIGlucHV0X3NlY3Rpb24sIHJlbC0+cl9vZmZzZXQpCisJCQkJCSAgKyBpbnB1dF9zZWN0aW9uLT5vdXRwdXRfc2VjdGlvbi0+dm1hCisJCQkJCSAgKyBpbnB1dF9zZWN0aW9uLT5vdXRwdXRfb2Zmc2V0LAorCQkJCQkgIHBpY3JlbCk7CisJCSAgICAgIH0KKwkJICB9CisJCWVsc2UgaWYgKChiZmRfZ2V0X3NlY3Rpb25fZmxhZ3MgKG91dHB1dF9iZmQsCisJCQkJCQkgaW5wdXRfc2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24pCisJCQkgICYgKFNFQ19BTExPQyB8IFNFQ19MT0FEKSkgPT0gKFNFQ19BTExPQyB8IFNFQ19MT0FEKSkKIAkJICB7CiAJCSAgICBpZiAoX2Zydl9vc2VjX3JlYWRvbmx5X3AgKG91dHB1dF9iZmQsCiAJCQkJCSAgICAgIGlucHV0X3NlY3Rpb24tPm91dHB1dF9zZWN0aW9uKSkKIAkJICAgICAgewogCQkJaW5mby0+Y2FsbGJhY2tzLT53YXJuaW5nCiAJCQkgIChpbmZvLAotCQkJICAgXygiY2Fubm90IGVtaXQgZml4dXBzIGluIHJlYWQtb25seSBzZWN0aW9uIiksCisJCQkgICBfKCJjYW5ub3QgZW1pdCBkeW5hbWljIHJlbG9jYXRpb25zIGluIHJlYWQtb25seSBzZWN0aW9uIiksCiAJCQkgICBuYW1lLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbC0+cl9vZmZzZXQpOwogCQkJcmV0dXJuIEZBTFNFOwogCQkgICAgICB9Ci0JCSAgICBpZiAoISBoIHx8IGgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX3VuZGVmd2VhaykKLQkJICAgICAgX2Zydl9hZGRfcm9maXh1cCAob3V0cHV0X2JmZCwKLQkJCQkJZnJ2X2dvdGZpeHVwX3NlY3Rpb24gKGluZm8pLAorCQkgICAgX2Zydl9hZGRfZHluX3JlbG9jIChvdXRwdXRfYmZkLCBmcnZfZ290cmVsX3NlY3Rpb24gKGluZm8pLAogCQkJCQlfYmZkX2VsZl9zZWN0aW9uX29mZnNldAogCQkJCQkob3V0cHV0X2JmZCwgaW5mbywKIAkJCQkJIGlucHV0X3NlY3Rpb24sIHJlbC0+cl9vZmZzZXQpCiAJCQkJCSsgaW5wdXRfc2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24tPnZtYQotCQkJCQkrIGlucHV0X3NlY3Rpb24tPm91dHB1dF9vZmZzZXQpOworCQkJCQkrIGlucHV0X3NlY3Rpb24tPm91dHB1dF9vZmZzZXQsCisJCQkJCXJfdHlwZSwgZHluaW5keCwgYWRkZW5kLCBwaWNyZWwpOwogCQkgIH0KIAkgICAgICB9Ci0JICAgIGVsc2UgaWYgKChiZmRfZ2V0X3NlY3Rpb25fZmxhZ3MgKG91dHB1dF9iZmQsCi0JCQkJCSAgICAgaW5wdXRfc2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24pCi0JCSAgICAgICYgKFNFQ19BTExPQyB8IFNFQ19MT0FEKSkgPT0gKFNFQ19BTExPQyB8IFNFQ19MT0FEKSkKLQkgICAgICB7Ci0JCWlmIChfZnJ2X29zZWNfcmVhZG9ubHlfcCAob3V0cHV0X2JmZCwKLQkJCQkJICBpbnB1dF9zZWN0aW9uLT5vdXRwdXRfc2VjdGlvbikpCi0JCSAgewotCQkgICAgaW5mby0+Y2FsbGJhY2tzLT53YXJuaW5nCi0JCSAgICAgIChpbmZvLAotCQkgICAgICAgXygiY2Fubm90IGVtaXQgZHluYW1pYyByZWxvY2F0aW9ucyBpbiByZWFkLW9ubHkgc2VjdGlvbiIpLAotCQkgICAgICAgbmFtZSwgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0KTsKLQkJICAgIHJldHVybiBGQUxTRTsKLQkJICB9Ci0JCV9mcnZfYWRkX2R5bl9yZWxvYyAob3V0cHV0X2JmZCwgZnJ2X2dvdHJlbF9zZWN0aW9uIChpbmZvKSwKLQkJCQkgICAgX2JmZF9lbGZfc2VjdGlvbl9vZmZzZXQKLQkJCQkgICAgKG91dHB1dF9iZmQsIGluZm8sCi0JCQkJICAgICBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0KQotCQkJCSAgICArIGlucHV0X3NlY3Rpb24tPm91dHB1dF9zZWN0aW9uLT52bWEKLQkJCQkgICAgKyBpbnB1dF9zZWN0aW9uLT5vdXRwdXRfb2Zmc2V0LAotCQkJCSAgICByX3R5cGUsIGR5bmluZHgsIGFkZGVuZCk7Ci0JICAgICAgfQogCiAJICAgIC8qIFdlIHdhbnQgdGhlIGFkZGVuZCBpbi1wbGFjZSBiZWNhdXNlIGR5bmFtaWMKIAkgICAgICAgcmVsb2NhdGlvbnMgYXJlIFJFTC4gIFNldHRpbmcgcmVsb2NhdGlvbiB0byBpdCBzaG91bGQKQEAgLTIxNjMsNyArMjI2Niw4IEBACiAJCQkJCSAgKG91dHB1dF9iZmQsIGluZm8sCiAJCQkJCSAgIGlucHV0X3NlY3Rpb24sIHJlbC0+cl9vZmZzZXQpCiAJCQkJCSAgKyBpbnB1dF9zZWN0aW9uLT5vdXRwdXRfc2VjdGlvbi0+dm1hCi0JCQkJCSAgKyBpbnB1dF9zZWN0aW9uLT5vdXRwdXRfb2Zmc2V0KTsKKwkJCQkJICArIGlucHV0X3NlY3Rpb24tPm91dHB1dF9vZmZzZXQsCisJCQkJCSAgcGljcmVsKTsKIAkJCWlmIChyX3R5cGUgPT0gUl9GUlZfRlVOQ0RFU0NfVkFMVUUpCiAJCQkgIF9mcnZfYWRkX3JvZml4dXAKIAkJCSAgICAob3V0cHV0X2JmZCwKQEAgLTIxNzIsNyArMjI3Niw3IEBACiAJCQkgICAgIChvdXRwdXRfYmZkLCBpbmZvLAogCQkJICAgICAgaW5wdXRfc2VjdGlvbiwgcmVsLT5yX29mZnNldCkKIAkJCSAgICAgKyBpbnB1dF9zZWN0aW9uLT5vdXRwdXRfc2VjdGlvbi0+dm1hCi0JCQkgICAgICsgaW5wdXRfc2VjdGlvbi0+b3V0cHV0X29mZnNldCArIDQpOworCQkJICAgICArIGlucHV0X3NlY3Rpb24tPm91dHB1dF9vZmZzZXQgKyA0LCBwaWNyZWwpOwogCQkgICAgICB9CiAJCSAgfQogCSAgICAgIH0KQEAgLTIxOTcsNyArMjMwMSw3IEBACiAJCQkJCSBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0KQogCQkJCQkrIGlucHV0X3NlY3Rpb24tPm91dHB1dF9zZWN0aW9uLT52bWEKIAkJCQkJKyBpbnB1dF9zZWN0aW9uLT5vdXRwdXRfb2Zmc2V0LAotCQkJCQlyX3R5cGUsIGR5bmluZHgsIGFkZGVuZCk7CisJCQkJCXJfdHlwZSwgZHluaW5keCwgYWRkZW5kLCBwaWNyZWwpOwogCQkgIH0KIAkJLyogV2Ugd2FudCB0aGUgYWRkZW5kIGluLXBsYWNlIGJlY2F1c2UgZHluYW1pYwogCQkgICByZWxvY2F0aW9ucyBhcmUgUkVMLiAgU2V0dGluZyByZWxvY2F0aW9uIHRvIGl0CkBAIC0yNDgwLDcgKzI1ODQsNyBAQAogZWxmMzJfZnJ2X2FkZF9zeW1ib2xfaG9vayAoYWJmZCwgaW5mbywgc3ltLCBuYW1lcCwgZmxhZ3NwLCBzZWNwLCB2YWxwKQogICAgICBiZmQgKmFiZmQ7CiAgICAgIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvOwotICAgICBjb25zdCBFbGZfSW50ZXJuYWxfU3ltICpzeW07CisgICAgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bTsKICAgICAgY29uc3QgY2hhciAqKm5hbWVwIEFUVFJJQlVURV9VTlVTRUQ7CiAgICAgIGZsYWd3b3JkICpmbGFnc3AgQVRUUklCVVRFX1VOVVNFRDsKICAgICAgYXNlY3Rpb24gKipzZWNwOwpAQCAtMjU3Miw3ICsyNjc2LDcgQEAKIAogICAgICAgLyogTWFjaGluZS1zcGVjaWZpYzogd2Ugd2FudCB0aGUgc3ltYm9sIGZvciBleGVjdXRhYmxlcyBhcwogCSB3ZWxsLiAgKi8KLSAgICAgIGlmICghIF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKyAgICAgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCXJldHVybiBGQUxTRTsKIAogICAgICAgZWxmX2hhc2hfdGFibGUgKGluZm8pLT5oZ290ID0gaDsKQEAgLTI2MjAsNyArMjcyNCw3IEBACiAgIGgtPnR5cGUgPSBTVFRfT0JKRUNUOwogCiAgIC8qIE1hY2hpbmUtc3BlY2lmaWM6IHdlIHdhbnQgdGhlIHN5bWJvbCBmb3IgZXhlY3V0YWJsZXMgYXMgd2VsbC4gICovCi0gIGlmICghIF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKyAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAgICAgcmV0dXJuIEZBTFNFOwogICAKICAgcmV0dXJuIFRSVUU7CkBAIC0yNjc1LDcgKzI3NzksNyBAQAogICAgICAgaC0+dHlwZSA9IFNUVF9PQkpFQ1Q7CiAKICAgICAgIGlmICghIGluZm8tPmV4ZWN1dGFibGUKLQkgICYmICEgX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgJiYgISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAlyZXR1cm4gRkFMU0U7CiAgICAgfQogCkBAIC0yNzc3LDYgKzI4ODEsNyBAQAogewogICBzdHJ1Y3QgZnJ2X3BpY19yZWxvY3NfaW5mbyAqZW50cnkgPSAqZW50cnlwOwogICBzdHJ1Y3QgX2Zydl9keW5hbWljX2dvdF9pbmZvICpkaW5mbyA9IGRpbmZvXzsKKyAgdW5zaWduZWQgcmVsb2NzID0gMCwgZml4dXBzID0gMDsKIAogICAvKiBBbGxvY2F0ZSBzcGFjZSBmb3IgYSBHT1QgZW50cnkgcG9pbnRpbmcgdG8gdGhlIHN5bWJvbC4gICovCiAgIGlmIChlbnRyeS0+Z290MTIpCkBAIC0yODMzLDI3ICsyOTM4LDMzIEBACiAgICAgZGluZm8tPmx6cGx0ICs9IDg7CiAKICAgaWYgKCFkaW5mby0+aW5mby0+ZXhlY3V0YWJsZSB8fCBkaW5mby0+aW5mby0+cGllKQotICAgIGRpbmZvLT5yZWxvY3MgKz0gZW50cnktPnJlbG9jczMyICsgZW50cnktPnJlbG9jc2ZkICsgZW50cnktPnJlbG9jc2ZkdjsKKyAgICByZWxvY3MgPSBlbnRyeS0+cmVsb2NzMzIgKyBlbnRyeS0+cmVsb2NzZmQgKyBlbnRyeS0+cmVsb2NzZmR2OwogICBlbHNlCiAgICAgewogICAgICAgaWYgKGVudHJ5LT5zeW1uZHggIT0gLTEgfHwgRlJWX1NZTV9MT0NBTCAoZGluZm8tPmluZm8sIGVudHJ5LT5kLmgpKQogCXsKIAkgIGlmIChlbnRyeS0+c3ltbmR4ICE9IC0xCi0JICAgICAgfHwgZW50cnktPmQuaC0+cm9vdC50eXBlICE9IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQkgIAotCSAgICBkaW5mby0+Zml4dXBzICs9IGVudHJ5LT5yZWxvY3MzMiArIDIgKiBlbnRyeS0+cmVsb2NzZmR2OworCSAgICAgIHx8IGVudHJ5LT5kLmgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX3VuZGVmd2VhaykKKwkgICAgZml4dXBzICs9IGVudHJ5LT5yZWxvY3MzMiArIDIgKiBlbnRyeS0+cmVsb2NzZmR2OwogCX0KICAgICAgIGVsc2UKLQlkaW5mby0+cmVsb2NzICs9IGVudHJ5LT5yZWxvY3MzMiArIGVudHJ5LT5yZWxvY3NmZHY7CisJcmVsb2NzICs9IGVudHJ5LT5yZWxvY3MzMiArIGVudHJ5LT5yZWxvY3NmZHY7CisKICAgICAgIGlmIChlbnRyeS0+c3ltbmR4ICE9IC0xIHx8IEZSVl9GVU5DREVTQ19MT0NBTCAoZGluZm8tPmluZm8sIGVudHJ5LT5kLmgpKQogCXsKIAkgIGlmIChlbnRyeS0+c3ltbmR4ICE9IC0xCiAJICAgICAgfHwgZW50cnktPmQuaC0+cm9vdC50eXBlICE9IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQotCSAgICBkaW5mby0+Zml4dXBzICs9IGVudHJ5LT5yZWxvY3NmZDsKKwkgICAgZml4dXBzICs9IGVudHJ5LT5yZWxvY3NmZDsKIAl9CiAgICAgICBlbHNlCi0JZGluZm8tPnJlbG9jcyArPSBlbnRyeS0+cmVsb2NzZmQ7CisJcmVsb2NzICs9IGVudHJ5LT5yZWxvY3NmZDsKICAgICB9CiAKKyAgZW50cnktPmR5bnJlbG9jcyArPSByZWxvY3M7CisgIGVudHJ5LT5maXh1cHMgKz0gZml4dXBzOworICBkaW5mby0+cmVsb2NzICs9IHJlbG9jczsKKyAgZGluZm8tPmZpeHVwcyArPSBmaXh1cHM7CisKICAgcmV0dXJuIDE7CiB9CiAKQEAgLTMxODEsNiArMzI5Miw3IEBACiAgIGlmIChlbnRyeS0+c3ltbmR4ID09IC0xKQogICAgIHsKICAgICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoID0gZW50cnktPmQuaDsKKyAgICAgIHN0cnVjdCBmcnZfcGljX3JlbG9jc19pbmZvICpvZW50cnk7CiAKICAgICAgIHdoaWxlIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9pbmRpcmVjdAogCSAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfd2FybmluZykKQEAgLTMxODksNiArMzMwMSwxNyBAQAogICAgICAgaWYgKGVudHJ5LT5kLmggPT0gaCkKIAlyZXR1cm4gMTsKIAorICAgICAgb2VudHJ5ID0gZnJ2X3BpY19yZWxvY3NfaW5mb19mb3JfZ2xvYmFsICgqaHRhYiwgMCwgaCwgZW50cnktPmFkZGVuZCwKKwkJCQkJICAgICAgIE5PX0lOU0VSVCk7CisKKyAgICAgIGlmIChvZW50cnkpCisJeworCSAgLyogTWVyZ2UgdGhlIHR3byBlbnRyaWVzLiAgKi8KKwkgIGZydl9waWNfbWVyZ2VfZWFybHlfcmVsb2NzX2luZm8gKG9lbnRyeSwgZW50cnkpOworCSAgaHRhYl9jbGVhcl9zbG90ICgqaHRhYiwgZW50cnlwKTsKKwkgIHJldHVybiAxOworCX0KKwogICAgICAgZW50cnktPmQuaCA9IGg7CiAKICAgICAgIC8qIElmIHdlIGNhbid0IGZpbmQgdGhpcyBlbnRyeSB3aXRoIHRoZSBuZXcgYmZkIGhhc2gsIHJlLWluc2VydApAQCAtMzQxMywyMCArMzUzNiwyMCBAQAogICBpZiAoZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQpCiAgICAgewogICAgICAgaWYgKGZydl9nb3Rfc2VjdGlvbiAoaW5mbyktPl9yYXdfc2l6ZSkKLQlpZiAoISBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1BMVEdPVCwgMCkpCisJaWYgKCFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfUExUR09ULCAwKSkKIAkgIHJldHVybiBGQUxTRTsKIAogICAgICAgaWYgKGZydl9wbHRyZWxfc2VjdGlvbiAoaW5mbyktPl9yYXdfc2l6ZSkKLQlpZiAoISBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1BMVFJFTFNaLCAwKQotCSAgICB8fCAhIGJmZF9lbGYzMl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfUExUUkVMLCBEVF9SRUwpCi0JICAgIHx8ICEgYmZkX2VsZjMyX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9KTVBSRUwsIDApKQorCWlmICghX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1BMVFJFTFNaLCAwKQorCSAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1BMVFJFTCwgRFRfUkVMKQorCSAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0pNUFJFTCwgMCkpCiAJICByZXR1cm4gRkFMU0U7CiAKICAgICAgIGlmIChmcnZfZ290cmVsX3NlY3Rpb24gKGluZm8pLT5fcmF3X3NpemUpCi0JaWYgKCEgYmZkX2VsZjMyX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9SRUwsIDApCi0JICAgIHx8ICEgYmZkX2VsZjMyX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9SRUxTWiwgMCkKLQkgICAgfHwgISBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1JFTEVOVCwKLQkJCQkJICAgICAgc2l6ZW9mIChFbGYzMl9FeHRlcm5hbF9SZWwpKSkKKwlpZiAoIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9SRUwsIDApCisJICAgIHx8ICFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfUkVMU1osIDApCisJICAgIHx8ICFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfUkVMRU5ULAorCQkJCQkgICAgc2l6ZW9mIChFbGYzMl9FeHRlcm5hbF9SZWwpKSkKIAkgIHJldHVybiBGQUxTRTsKICAgICB9CiAKQEAgLTM1NTIsMTMgKzM2NzUsMjIgQEAKIAkJKyBoZ290LT5yb290LnUuZGVmLnNlY3Rpb24tPm91dHB1dF9vZmZzZXQ7CiAKIAkgICAgICBfZnJ2X2FkZF9yb2ZpeHVwIChvdXRwdXRfYmZkLCBmcnZfZ290Zml4dXBfc2VjdGlvbiAoaW5mbyksCi0JCQkJZ290X3ZhbHVlKTsKKwkJCQlnb3RfdmFsdWUsIDApOwogCSAgICB9CiAKIAkgIGlmIChmcnZfZ290Zml4dXBfc2VjdGlvbiAoaW5mbyktPl9yYXdfc2l6ZQogCSAgICAgICE9IChmcnZfZ290Zml4dXBfc2VjdGlvbiAoaW5mbyktPnJlbG9jX2NvdW50ICogNCkpCiAJICAgIHsKLQkgICAgICBpZiAoIWVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluYW1pY19zZWN0aW9uc19jcmVhdGVkKQorCSAgICAgIGlmIChmcnZfZ290Zml4dXBfc2VjdGlvbiAoaW5mbyktPl9yYXdfc2l6ZQorCQkgIDwgZnJ2X2dvdGZpeHVwX3NlY3Rpb24gKGluZm8pLT5yZWxvY19jb3VudCAqIDQpCisJCXsKKwkJICBpbmZvLT5jYWxsYmFja3MtPndhcm5pbmcKKwkJICAgIChpbmZvLCAiTElOS0VSIEJVRzogLnJvZml4dXAgc2VjdGlvbiBzaXplIG1pc21hdGNoIiwKKwkJICAgICAiLnJvZml4dXAiLCBOVUxMLCBOVUxMLCAwKTsKKwkJICBhYm9ydCAoKTsKKwkJICByZXR1cm4gRkFMU0U7CisJCX0KKwkgICAgICBlbHNlIGlmICghZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQpCiAJCXsKIAkJICBpbmZvLT5jYWxsYmFja3MtPndhcm5pbmcKIAkJICAgIChpbmZvLCAibm8gZHluYW1pYyBzZWN0aW9ucywgbWlzc2luZyAtbWVsZjMyZnJ2ZmQ/IiwKQEAgLTM2NzIsNiArMzgwNCw1NyBAQAogICByZXR1cm4gVFJVRTsKIH0KIAorLyogRGVjaWRlIHdoZXRoZXIgdG8gYXR0ZW1wdCB0byB0dXJuIGFic3B0ciBvciBsc2RhIGVuY29kaW5ncyBpbgorICAgc2hhcmVkIGxpYnJhcmllcyBpbnRvIHBjcmVsIHdpdGhpbiB0aGUgZ2l2ZW4gaW5wdXQgc2VjdGlvbi4gICovCisKK3N0YXRpYyBiZmRfYm9vbGVhbgorZnJ2X2VsZl91c2VfcmVsYXRpdmVfZWhfZnJhbWUgKGJmZCAqaW5wdXRfYmZkLAorCQkJICAgICAgIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvIEFUVFJJQlVURV9VTlVTRUQsCisJCQkgICAgICAgYXNlY3Rpb24gKmVoX2ZyYW1lX3NlY3Rpb24gQVRUUklCVVRFX1VOVVNFRCkKK3sKKyAgLyogV2UgY2FuJ3QgdXNlIFBDLXJlbGF0aXZlIGVuY29kaW5ncyBpbiBGRFBJQyBiaW5hcmllcywgaW4gZ2VuZXJhbC4gICovCisgIGlmIChlbGZfZWxmaGVhZGVyIChpbnB1dF9iZmQpLT5lX2ZsYWdzICYgRUZfRlJWX0ZEUElDKQorICAgIHJldHVybiBGQUxTRTsKKworICByZXR1cm4gVFJVRTsKK30KKworLyogQWRqdXN0IHRoZSBjb250ZW50cyBvZiBhbiBlaF9mcmFtZV9oZHIgc2VjdGlvbiBiZWZvcmUgdGhleSdyZSBvdXRwdXQuICAqLworCitzdGF0aWMgYmZkX2J5dGUKK2Zydl9lbGZfZW5jb2RlX2VoX2FkZHJlc3MgKGJmZCAqYWJmZCwKKwkJCSAgIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAorCQkJICAgYXNlY3Rpb24gKm9zZWMsIGJmZF92bWEgb2Zmc2V0LAorCQkJICAgYXNlY3Rpb24gKmxvY19zZWMsIGJmZF92bWEgbG9jX29mZnNldCwKKwkJCSAgIGJmZF92bWEgKmVuY29kZWQpCit7CisgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoOworCisgIC8qIE5vbi1GRFBJQyBiaW5hcmllcyBjYW4gdXNlIFBDLXJlbGF0aXZlIGVuY29kaW5ncy4gICovCisgIGlmICghIChlbGZfZWxmaGVhZGVyIChhYmZkKS0+ZV9mbGFncyAmIEVGX0ZSVl9GRFBJQykpCisgICAgcmV0dXJuIF9iZmRfZWxmX2VuY29kZV9laF9hZGRyZXNzIChhYmZkLCBpbmZvLCBvc2VjLCBvZmZzZXQsCisJCQkJICAgICAgIGxvY19zZWMsIGxvY19vZmZzZXQsIGVuY29kZWQpOworCisgIGggPSBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmhnb3Q7CisgIEJGRF9BU1NFUlQgKGggJiYgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmaW5lZCk7CisKKyAgaWYgKCEgaCB8fCAoX2Zydl9vc2VjX3RvX3NlZ21lbnQgKGFiZmQsIG9zZWMpCisJICAgICAgPT0gX2Zydl9vc2VjX3RvX3NlZ21lbnQgKGFiZmQsIGxvY19zZWMtPm91dHB1dF9zZWN0aW9uKSkpCisgICAgcmV0dXJuIF9iZmRfZWxmX2VuY29kZV9laF9hZGRyZXNzIChhYmZkLCBpbmZvLCBvc2VjLCBvZmZzZXQsCisJCQkJICAgICAgIGxvY19zZWMsIGxvY19vZmZzZXQsIGVuY29kZWQpOworCisgIEJGRF9BU1NFUlQgKF9mcnZfb3NlY190b19zZWdtZW50IChhYmZkLCBvc2VjKQorCSAgICAgID09IF9mcnZfb3NlY190b19zZWdtZW50IChhYmZkLAorCQkJCSAgICAgICBoLT5yb290LnUuZGVmLnNlY3Rpb24tPm91dHB1dF9zZWN0aW9uKSk7CisKKyAgKmVuY29kZWQgPSBvc2VjLT52bWEgKyBvZmZzZXQKKyAgICAtIChoLT5yb290LnUuZGVmLnZhbHVlCisgICAgICAgKyBoLT5yb290LnUuZGVmLnNlY3Rpb24tPm91dHB1dF9zZWN0aW9uLT52bWEKKyAgICAgICArIGgtPnJvb3QudS5kZWYuc2VjdGlvbi0+b3V0cHV0X29mZnNldCk7CisKKyAgcmV0dXJuIERXX0VIX1BFX2RhdGFyZWwgfCBEV19FSF9QRV9zZGF0YTQ7Cit9CisKIC8qIExvb2sgdGhyb3VnaCB0aGUgcmVsb2NzIGZvciBhIHNlY3Rpb24gZHVyaW5nIHRoZSBmaXJzdCBwaGFzZS4KIAogICAgQmVzaWRlcyBoYW5kbGluZyB2aXJ0dWFsIHRhYmxlIHJlbG9jcyBmb3IgZ2MsIHdlIGhhdmUgdG8gZGVhbCB3aXRoCkBAIC0zODQ1LDE4ICs0MDI4LDE4IEBACiAJCSAgY2FzZSBTVFZfSElEREVOOgogCQkgICAgYnJlYWs7CiAJCSAgZGVmYXVsdDoKLQkJICAgIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCk7CisJCSAgICBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKTsKIAkJICAgIGJyZWFrOwogCQkgIH0KIAkgICAgICBwaWNyZWwKIAkJPSBmcnZfcGljX3JlbG9jc19pbmZvX2Zvcl9nbG9iYWwgKGZydl9yZWxvY3NfaW5mbyAoaW5mbyksCiAJCQkJCQkgIGFiZmQsIGgsCi0JCQkJCQkgIHJlbC0+cl9hZGRlbmQpOworCQkJCQkJICByZWwtPnJfYWRkZW5kLCBJTlNFUlQpOwogCSAgICB9CiAJICBlbHNlCiAJICAgIHBpY3JlbCA9IGZydl9waWNfcmVsb2NzX2luZm9fZm9yX2xvY2FsIChmcnZfcmVsb2NzX2luZm8gKGluZm8pLAogCQkJCQkJICAgIGFiZmQsIHJfc3ltbmR4LAotCQkJCQkJICAgIHJlbC0+cl9hZGRlbmQpOworCQkJCQkJICAgIHJlbC0+cl9hZGRlbmQsIElOU0VSVCk7CiAJICBpZiAoISBwaWNyZWwpCiAJICAgIHJldHVybiBGQUxTRTsKIAkgIGJyZWFrOwpAQCAtMzkyNCwxNCArNDEwNywxNCBAQAogICAgICAgICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHRoZSBDKysgb2JqZWN0IHZ0YWJsZSBoaWVyYXJjaHkuCiAgICAgICAgICAgIFJlY29uc3RydWN0IGl0IGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KICAgICAgICAgY2FzZSBSX0ZSVl9HTlVfVlRJTkhFUklUOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQorICAgICAgICAgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgd2hpY2ggQysrIHZ0YWJsZSBlbnRyaWVzIGFyZSBhY3R1YWxseQogICAgICAgICAgICB1c2VkLiAgUmVjb3JkIGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KICAgICAgICAgY2FzZSBSX0ZSVl9HTlVfVlRFTlRSWToKLSAgICAgICAgICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCisgICAgICAgICAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9hZGRlbmQpKQogICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zOTUyLDYgKzQxMzUsOCBAQAogICAgIGRlZmF1bHQ6CQkgICAgYnJlYWs7CiAgICAgY2FzZSBFRl9GUlZfQ1BVX0ZSNTUwOiAgcmV0dXJuIGJmZF9tYWNoX2ZyNTUwOwogICAgIGNhc2UgRUZfRlJWX0NQVV9GUjUwMDogIHJldHVybiBiZmRfbWFjaF9mcjUwMDsKKyAgICBjYXNlIEVGX0ZSVl9DUFVfRlI0NTA6ICByZXR1cm4gYmZkX21hY2hfZnI0NTA7CisgICAgY2FzZSBFRl9GUlZfQ1BVX0ZSNDA1OiAgcmV0dXJuIGJmZF9tYWNoX2ZyNDAwOwogICAgIGNhc2UgRUZfRlJWX0NQVV9GUjQwMDogIHJldHVybiBiZmRfbWFjaF9mcjQwMDsKICAgICBjYXNlIEVGX0ZSVl9DUFVfRlIzMDA6ICByZXR1cm4gYmZkX21hY2hfZnIzMDA7CiAgICAgY2FzZSBFRl9GUlZfQ1BVX1NJTVBMRTogcmV0dXJuIGJmZF9tYWNoX2ZydnNpbXBsZTsKQEAgLTQwMDIsNiArNDE4NywzMyBAQAogICByZXR1cm4gVFJVRTsKIH0KIAorLyogUmV0dXJuIHRydWUgaWYgdGhlIGFyY2hpdGVjdHVyZSBkZXNjcmliZWQgYnkgZWxmIGhlYWRlciBmbGFnCisgICBFWFRFTlNJT04gaXMgYW4gZXh0ZW5zaW9uIG9mIHRoZSBhcmNoaXRlY3R1cmUgZGVzY3JpYmVkIGJ5IEJBU0UuICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2Zydl9lbGZfYXJjaF9leHRlbnNpb25fcCAoZmxhZ3dvcmQgYmFzZSwgZmxhZ3dvcmQgZXh0ZW5zaW9uKQoreworICBpZiAoYmFzZSA9PSBleHRlbnNpb24pCisgICAgcmV0dXJuIFRSVUU7CisKKyAgLyogQ1BVX0dFTkVSSUMgY29kZSBjYW4gYmUgbWVyZ2VkIHdpdGggY29kZSBmb3IgYSBzcGVjaWZpYworICAgICBhcmNoaXRlY3R1cmUsIGluIHdoaWNoIGNhc2UgdGhlIHJlc3VsdCBpcyBtYXJrZWQgYXMgYmVpbmcKKyAgICAgZm9yIHRoZSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUuICBFdmVyeXRoaW5nIGlzIHRoZXJlZm9yZQorICAgICBhbiBleHRlbnNpb24gb2YgQ1BVX0dFTkVSSUMuICAqLworICBpZiAoYmFzZSA9PSBFRl9GUlZfQ1BVX0dFTkVSSUMpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgaWYgKGV4dGVuc2lvbiA9PSBFRl9GUlZfQ1BVX0ZSNDUwKQorICAgIGlmIChiYXNlID09IEVGX0ZSVl9DUFVfRlI0MDAgfHwgYmFzZSA9PSBFRl9GUlZfQ1BVX0ZSNDA1KQorICAgICAgcmV0dXJuIFRSVUU7CisKKyAgaWYgKGV4dGVuc2lvbiA9PSBFRl9GUlZfQ1BVX0ZSNDA1KQorICAgIGlmIChiYXNlID09IEVGX0ZSVl9DUFVfRlI0MDApCisgICAgICByZXR1cm4gVFJVRTsKKworICByZXR1cm4gRkFMU0U7Cit9CisKIC8qIE1lcmdlIGJhY2tlbmQgc3BlY2lmaWMgZGF0YSBmcm9tIGFuIG9iamVjdCBmaWxlIHRvIHRoZSBvdXRwdXQKICAgIG9iamVjdCBmaWxlIHdoZW4gbGlua2luZy4gICovCiAKQEAgLTQxODYsMTMgKzQzOTgsMTAgQEAKIAkgdGhlIGdlbmVyaWMgY3B1KS4gICovCiAgICAgICBuZXdfcGFydGlhbCA9IChuZXdfZmxhZ3MgJiBFRl9GUlZfQ1BVX01BU0spOwogICAgICAgb2xkX3BhcnRpYWwgPSAob2xkX2ZsYWdzICYgRUZfRlJWX0NQVV9NQVNLKTsKLSAgICAgIGlmIChuZXdfcGFydGlhbCA9PSBvbGRfcGFydGlhbCkKKyAgICAgIGlmIChmcnZfZWxmX2FyY2hfZXh0ZW5zaW9uX3AgKG5ld19wYXJ0aWFsLCBvbGRfcGFydGlhbCkpCiAJOwogCi0gICAgICBlbHNlIGlmIChuZXdfcGFydGlhbCA9PSBFRl9GUlZfQ1BVX0dFTkVSSUMpCi0JOwotCi0gICAgICBlbHNlIGlmIChvbGRfcGFydGlhbCA9PSBFRl9GUlZfQ1BVX0dFTkVSSUMpCisgICAgICBlbHNlIGlmIChmcnZfZWxmX2FyY2hfZXh0ZW5zaW9uX3AgKG9sZF9wYXJ0aWFsLCBuZXdfcGFydGlhbCkpCiAJb2xkX2ZsYWdzID0gKG9sZF9mbGFncyAmIH5FRl9GUlZfQ1BVX01BU0spIHwgbmV3X3BhcnRpYWw7CiAKICAgICAgIGVsc2UKQEAgLTQyMDQsNiArNDQxMyw4IEBACiAJICAgIGNhc2UgRUZfRlJWX0NQVV9TSU1QTEU6ICBzdHJjYXQgKG5ld19vcHQsICIgLW1jcHU9c2ltcGxlIik7IGJyZWFrOwogCSAgICBjYXNlIEVGX0ZSVl9DUFVfRlI1NTA6ICAgc3RyY2F0IChuZXdfb3B0LCAiIC1tY3B1PWZyNTUwIik7ICBicmVhazsKIAkgICAgY2FzZSBFRl9GUlZfQ1BVX0ZSNTAwOiAgIHN0cmNhdCAobmV3X29wdCwgIiAtbWNwdT1mcjUwMCIpOyAgYnJlYWs7CisJICAgIGNhc2UgRUZfRlJWX0NQVV9GUjQ1MDogICBzdHJjYXQgKG5ld19vcHQsICIgLW1jcHU9ZnI0NTAiKTsgIGJyZWFrOworCSAgICBjYXNlIEVGX0ZSVl9DUFVfRlI0MDU6ICAgc3RyY2F0IChuZXdfb3B0LCAiIC1tY3B1PWZyNDA1Iik7ICBicmVhazsKIAkgICAgY2FzZSBFRl9GUlZfQ1BVX0ZSNDAwOiAgIHN0cmNhdCAobmV3X29wdCwgIiAtbWNwdT1mcjQwMCIpOyAgYnJlYWs7CiAJICAgIGNhc2UgRUZfRlJWX0NQVV9GUjMwMDogICBzdHJjYXQgKG5ld19vcHQsICIgLW1jcHU9ZnIzMDAiKTsgIGJyZWFrOwogCSAgICBjYXNlIEVGX0ZSVl9DUFVfVE9NQ0FUOiAgc3RyY2F0IChuZXdfb3B0LCAiIC1tY3B1PXRvbWNhdCIpOyBicmVhazsKQEAgLTQyMTYsNiArNDQyNyw4IEBACiAJICAgIGNhc2UgRUZfRlJWX0NQVV9TSU1QTEU6ICBzdHJjYXQgKG9sZF9vcHQsICIgLW1jcHU9c2ltcGxlIik7IGJyZWFrOwogCSAgICBjYXNlIEVGX0ZSVl9DUFVfRlI1NTA6ICAgc3RyY2F0IChvbGRfb3B0LCAiIC1tY3B1PWZyNTUwIik7ICBicmVhazsKIAkgICAgY2FzZSBFRl9GUlZfQ1BVX0ZSNTAwOiAgIHN0cmNhdCAob2xkX29wdCwgIiAtbWNwdT1mcjUwMCIpOyAgYnJlYWs7CisJICAgIGNhc2UgRUZfRlJWX0NQVV9GUjQ1MDogICBzdHJjYXQgKG9sZF9vcHQsICIgLW1jcHU9ZnI0NTAiKTsgIGJyZWFrOworCSAgICBjYXNlIEVGX0ZSVl9DUFVfRlI0MDU6ICAgc3RyY2F0IChvbGRfb3B0LCAiIC1tY3B1PWZyNDA1Iik7ICBicmVhazsKIAkgICAgY2FzZSBFRl9GUlZfQ1BVX0ZSNDAwOiAgIHN0cmNhdCAob2xkX29wdCwgIiAtbWNwdT1mcjQwMCIpOyAgYnJlYWs7CiAJICAgIGNhc2UgRUZfRlJWX0NQVV9GUjMwMDogICBzdHJjYXQgKG9sZF9vcHQsICIgLW1jcHU9ZnIzMDAiKTsgIGJyZWFrOwogCSAgICBjYXNlIEVGX0ZSVl9DUFVfVE9NQ0FUOiAgc3RyY2F0IChvbGRfb3B0LCAiIC1tY3B1PXRvbWNhdCIpOyBicmVhazsKQEAgLTQyODMsNiArNDQ5Niw4IEBACiAgICAgY2FzZSBFRl9GUlZfQ1BVX1NJTVBMRTogZnByaW50ZiAoZmlsZSwgIiAtbWNwdT1zaW1wbGUiKTsJYnJlYWs7CiAgICAgY2FzZSBFRl9GUlZfQ1BVX0ZSNTUwOiAgZnByaW50ZiAoZmlsZSwgIiAtbWNwdT1mcjU1MCIpOwlicmVhazsKICAgICBjYXNlIEVGX0ZSVl9DUFVfRlI1MDA6ICBmcHJpbnRmIChmaWxlLCAiIC1tY3B1PWZyNTAwIik7CWJyZWFrOworICAgIGNhc2UgRUZfRlJWX0NQVV9GUjQ1MDogIGZwcmludGYgKGZpbGUsICIgLW1jcHU9ZnI0NTAiKTsJYnJlYWs7CisgICAgY2FzZSBFRl9GUlZfQ1BVX0ZSNDA1OiAgZnByaW50ZiAoZmlsZSwgIiAtbWNwdT1mcjQwNSIpOwlicmVhazsKICAgICBjYXNlIEVGX0ZSVl9DUFVfRlI0MDA6ICBmcHJpbnRmIChmaWxlLCAiIC1tY3B1PWZyNDAwIik7CWJyZWFrOwogICAgIGNhc2UgRUZfRlJWX0NQVV9GUjMwMDogIGZwcmludGYgKGZpbGUsICIgLW1jcHU9ZnIzMDAiKTsJYnJlYWs7CiAgICAgY2FzZSBFRl9GUlZfQ1BVX1RPTUNBVDogZnByaW50ZiAoZmlsZSwgIiAtbWNwdT10b21jYXQiKTsJYnJlYWs7CkBAIC00MzkxLDYgKzQ2MDYsMTIgQEAKICNkZWZpbmUgZWxmX2JhY2tlbmRfd2FudF9wbHRfc3ltCTAKICNkZWZpbmUgZWxmX2JhY2tlbmRfcGx0X2hlYWRlcl9zaXplCTAKIAorI2RlZmluZSBlbGZfYmFja2VuZF9jYW5fbWFrZV9yZWxhdGl2ZV9laF9mcmFtZSBcCisJCWZydl9lbGZfdXNlX3JlbGF0aXZlX2VoX2ZyYW1lCisjZGVmaW5lIGVsZl9iYWNrZW5kX2Nhbl9tYWtlX2xzZGFfcmVsYXRpdmVfZWhfZnJhbWUgXAorCQlmcnZfZWxmX3VzZV9yZWxhdGl2ZV9laF9mcmFtZQorI2RlZmluZSBlbGZfYmFja2VuZF9lbmNvZGVfZWhfYWRkcmVzcwlmcnZfZWxmX2VuY29kZV9laF9hZGRyZXNzCisKICNkZWZpbmUgZWxmX2JhY2tlbmRfbWF5X3VzZV9yZWxfcCAgICAgICAxCiAjZGVmaW5lIGVsZl9iYWNrZW5kX21heV91c2VfcmVsYV9wICAgICAgMQogLyogV2UgdXNlIFJFTCBmb3IgZHluYW1pYyByZWxvY2F0aW9ucyBvbmx5LiAgKi8KZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1nZW4uYyBiL2JmZC9lbGYzMi1nZW4uYwppbmRleCBiMWFkNzQ0Li5mMmVkZjY5IDEwMDY0NAotLS0gYS9iZmQvZWxmMzItZ2VuLmMKKysrIGIvYmZkL2VsZjMyLWdlbi5jCkBAIC0xLDUgKzEsNSBAQAogLyogR2VuZXJpYyBzdXBwb3J0IGZvciAzMi1iaXQgRUxGCi0gICBDb3B5cmlnaHQgMTk5MywgMTk5NSwgMTk5OCwgMTk5OSwgMjAwMSwgMjAwMgorICAgQ29weXJpZ2h0IDE5OTMsIDE5OTUsIDE5OTgsIDE5OTksIDIwMDEsIDIwMDIsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCkBAIC04OCw3ICs4OCw3IEBACiAJcmV0dXJuIEZBTFNFOwogICAgICAgfQogCi0gIHJldHVybiBiZmRfZWxmMzJfYmZkX2xpbmtfYWRkX3N5bWJvbHMgKGFiZmQsIGluZm8pOworICByZXR1cm4gYmZkX2VsZl9saW5rX2FkZF9zeW1ib2xzIChhYmZkLCBpbmZvKTsKIH0KIAogI2RlZmluZSBUQVJHRVRfTElUVExFX1NZTQkJYmZkX2VsZjMyX2xpdHRsZV9nZW5lcmljX3ZlYwpkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLWg4MzAwLmMgYi9iZmQvZWxmMzItaDgzMDAuYwppbmRleCA1NDdhZGZhLi44NzdkYThhIDEwMDY0NAotLS0gYS9iZmQvZWxmMzItaDgzMDAuYworKysgYi9iZmQvZWxmMzItaDgzMDAuYwpAQCAtNDM5LDI4ICs0MzksMTIgQEAKIAl9CiAgICAgICBlbHNlCiAJewotCSAgaCA9IHN5bV9oYXNoZXNbcl9zeW1uZHggLSBzeW10YWJfaGRyLT5zaF9pbmZvXTsKLQkgIHdoaWxlIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9pbmRpcmVjdAotCQkgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfd2FybmluZykKLQkgICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOwotCSAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZmluZWQKLQkgICAgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKQotCSAgICB7Ci0JICAgICAgc2VjID0gaC0+cm9vdC51LmRlZi5zZWN0aW9uOwotCSAgICAgIHJlbG9jYXRpb24gPSAoaC0+cm9vdC51LmRlZi52YWx1ZQotCQkJICAgICsgc2VjLT5vdXRwdXRfc2VjdGlvbi0+dm1hCi0JCQkgICAgKyBzZWMtPm91dHB1dF9vZmZzZXQpOwotCSAgICB9Ci0JICBlbHNlIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspCi0JICAgIHJlbG9jYXRpb24gPSAwOwotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgaWYgKCEgKCgqaW5mby0+Y2FsbGJhY2tzLT51bmRlZmluZWRfc3ltYm9sKQotCQkgICAgIChpbmZvLCBoLT5yb290LnJvb3Quc3RyaW5nLCBpbnB1dF9iZmQsCi0JCSAgICAgIGlucHV0X3NlY3Rpb24sIHJlbC0+cl9vZmZzZXQsIFRSVUUpKSkKLQkJcmV0dXJuIEZBTFNFOwotCSAgICAgIHJlbG9jYXRpb24gPSAwOwotCSAgICB9CisJICBiZmRfYm9vbGVhbiB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQ7CisKKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoLCBzZWMsIHJlbG9jYXRpb24sCisJCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkKTsKIAl9CiAKICAgICAgIHIgPSBlbGYzMl9oOF9maW5hbF9saW5rX3JlbG9jYXRlIChyX3R5cGUsIGlucHV0X2JmZCwgb3V0cHV0X2JmZCwKQEAgLTE1NzQsNyArMTU1OCw3IEBACiAKIC8qID8/PyB3aGVuIGVsZl9iYWNrZW5kX3JlbG9jYXRlX3NlY3Rpb24gaXMgbm90IGRlZmluZWQsIGVsZjMyLXRhcmdldC5oCiAgICBkZWZhdWx0cyB0byB1c2luZyBfYmZkX2dlbmVyaWNfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSwgYnV0Ci0gICBlbGZsaW5rLmg6YmZkX2VsZjMyX3NpemVfZHluYW1pY19zZWN0aW9ucyB1c2VzCisgICBiZmRfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyB1c2VzCiAgICBkeW5vYmogPSBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bm9iajsKICAgIGFuZCB0aHVzIHJlcXVpcmVzIGFuIGVsZiBoYXNoIHRhYmxlLiAgKi8KICNkZWZpbmUgYmZkX2VsZjMyX2JmZF9saW5rX2hhc2hfdGFibGVfY3JlYXRlIF9iZmRfZWxmX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUKZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1ocHBhLmMgYi9iZmQvZWxmMzItaHBwYS5jCmluZGV4IGNmNmM2MzAuLjU0ZGJiOWEgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1ocHBhLmMKKysrIGIvYmZkL2VsZjMyLWhwcGEuYwpAQCAtMSw2ICsxLDYgQEAKIC8qIEJGRCBiYWNrLWVuZCBmb3IgSFAgUEEtUklTQyBFTEYgZmlsZXMuCiAgICBDb3B5cmlnaHQgMTk5MCwgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OSwgMjAwMCwgMjAwMSwKLSAgIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBPcmlnaW5hbCBjb2RlIGJ5CiAJQ2VudGVyIGZvciBTb2Z0d2FyZSBTY2llbmNlCkBAIC0xMTQ3LDEyICsxMTQ3LDEzIEBACiAJICAgIH0KIAkgIGJyZWFrOwogCi0JY2FzZSBSX1BBUklTQ19TRUdCQVNFOiAvKiBVc2VkIHRvIHNldCBzZWdtZW50IGJhc2UuICAqLworCWNhc2UgUl9QQVJJU0NfU0VHQkFTRTogIC8qIFVzZWQgdG8gc2V0IHNlZ21lbnQgYmFzZS4gICovCiAJY2FzZSBSX1BBUklTQ19TRUdSRUwzMjogLyogUmVsYXRpdmUgcmVsb2MsIHVzZWQgZm9yIHVud2luZC4gICovCiAJY2FzZSBSX1BBUklTQ19QQ1JFTDE0RjogLyogUEMgcmVsYXRpdmUgbG9hZC9zdG9yZS4gICovCiAJY2FzZSBSX1BBUklTQ19QQ1JFTDE0UjoKIAljYXNlIFJfUEFSSVNDX1BDUkVMMTdSOiAvKiBFeHRlcm5hbCBicmFuY2hlcy4gICovCiAJY2FzZSBSX1BBUklTQ19QQ1JFTDIxTDogLyogQXMgYWJvdmUsIGFuZCBmb3IgbG9hZC9zdG9yZSB0b28uICAqLworCWNhc2UgUl9QQVJJU0NfUENSRUwzMjoKIAkgIC8qIFdlIGRvbid0IG5lZWQgdG8gcHJvcGFnYXRlIHRoZSByZWxvY2F0aW9uIGlmIGxpbmtpbmcgYQogCSAgICAgc2hhcmVkIG9iamVjdCBzaW5jZSB0aGVzZSBhcmUgc2VjdGlvbiByZWxhdGl2ZS4gICovCiAJICBjb250aW51ZTsKQEAgLTExOTgsMTYgKzExOTksMTQgQEAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgdGhlIEMrKyBvYmplY3QgdnRhYmxlIGhpZXJhcmNoeS4KIAkgICAgIFJlY29uc3RydWN0IGl0IGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KIAljYXNlIFJfUEFSSVNDX0dOVV9WVElOSEVSSVQ6Ci0JICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLAotCQkJCQkgICAgICAgJmgtPmVsZiwgcmVsLT5yX29mZnNldCkpCisJICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCAmaC0+ZWxmLCByZWwtPnJfb2Zmc2V0KSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgY29udGludWU7CiAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgd2hpY2ggQysrIHZ0YWJsZSBlbnRyaWVzIGFyZSBhY3R1YWxseQogCSAgICAgdXNlZC4gIFJlY29yZCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSX1BBUklTQ19HTlVfVlRFTlRSWToKLQkgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLAotCQkJCQkgICAgICZoLT5lbGYsIHJlbC0+cl9hZGRlbmQpKQorCSAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsICZoLT5lbGYsIHJlbC0+cl9hZGRlbmQpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJICBjb250aW51ZTsKIApAQCAtMTYyMCwxNyArMTYxOSw2IEBACiAgICAgfQogfQogCi0vKiBUaGlzIGlzIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zeW1ib2wKLSAgIHdpbGwgYmUgY2FsbGVkIGZyb20gZWxmbGluay5oLiAgSWYgZWxmbGluay5oIGRvZXNuJ3QgY2FsbCBvdXIKLSAgIGZpbmlzaF9keW5hbWljX3N5bWJvbCByb3V0aW5lLCB3ZSdsbCBuZWVkIHRvIGRvIHNvbWV0aGluZyBhYm91dAotICAgaW5pdGlhbGl6aW5nIGFueSAucGx0IGFuZCAuZ290IGVudHJpZXMgaW4gZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uLiAgKi8KLSNkZWZpbmUgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTChEWU4sIElORk8sIEgpIFwKLSAgKChEWU4pCQkJCQkJCQlcCi0gICAmJiAoKElORk8pLT5zaGFyZWQJCQkJCQkJXAotICAgICAgIHx8ICgoSCktPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCVwKLSAgICYmICgoSCktPmR5bmluZHggIT0gLTEJCQkJCQlcCi0gICAgICAgfHwgKChIKS0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgIT0gMCkpCi0KIC8qIEFkanVzdCBhIHN5bWJvbCBkZWZpbmVkIGJ5IGEgZHluYW1pYyBvYmplY3QgYW5kIHJlZmVyZW5jZWQgYnkgYQogICAgcmVndWxhciBvYmplY3QuICBUaGUgY3VycmVudCBkZWZpbml0aW9uIGlzIGluIHNvbWUgc2VjdGlvbiBvZiB0aGUKICAgIGR5bmFtaWMgb2JqZWN0LCBidXQgd2UncmUgbm90IGluY2x1ZGluZyB0aG9zZSBzZWN0aW9ucy4gIFdlIGhhdmUgdG8KQEAgLTE4MDIsMTEgKzE3OTAsMTEgQEAKIAkgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwCiAJICAmJiBoLT50eXBlICE9IFNUVF9QQVJJU0NfTUlMTEkpCiAJewotCSAgaWYgKCEgYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogCi0gICAgICBpZiAoV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTCAoMSwgaW5mbywgaCkpCisgICAgICBpZiAoV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTCAoMSwgaW5mby0+c2hhcmVkLCBoKSkKIAl7CiAJICAvKiBBbGxvY2F0ZSB0aGVzZSBsYXRlci4gIEZyb20gdGhpcyBwb2ludCBvbiwgaC0+cGxhYmVsCiAJICAgICBtZWFucyB0aGF0IHRoZSBwbHQgZW50cnkgaXMgb25seSB1c2VkIGJ5IGEgcGxhYmVsLgpAQCAtMTg4MCw3ICsxODY4LDcgQEAKIAkgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwCiAJICAmJiBoLT50eXBlICE9IFNUVF9QQVJJU0NfTUlMTEkpCiAJewotCSAgaWYgKCEgYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogCkBAIC0xOTUxLDcgKzE5MzksNyBAQAogCSAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwCiAJICAgICAgJiYgaC0+dHlwZSAhPSBTVFRfUEFSSVNDX01JTExJKQogCSAgICB7Ci0JICAgICAgaWYgKCEgYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgICAgICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkJcmV0dXJuIEZBTFNFOwogCSAgICB9CiAKQEAgLTIyNDAsNyArMjIyOCw3IEBACiAJIGNvbW11bmljYXRlIHRoZSBMVFAgdmFsdWUgb2YgYSBsb2FkIG1vZHVsZSB0byB0aGUgZHluYW1pYwogCSBsaW5rZXIuICAqLwogI2RlZmluZSBhZGRfZHluYW1pY19lbnRyeShUQUcsIFZBTCkgXAotICBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIChiZmRfdm1hKSAoVEFHKSwgKGJmZF92bWEpIChWQUwpKQorICBfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgVEFHLCBWQUwpCiAKICAgICAgIGlmICghYWRkX2R5bmFtaWNfZW50cnkgKERUX1BMVEdPVCwgMCkpCiAJcmV0dXJuIEZBTFNFOwpAQCAtMjc5Miw4ICsyNzgwLDcgQEAKIAkJCX0KIAkJICAgICAgZWxzZSBpZiAoaGFzaC0+ZWxmLnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmaW5lZCkKIAkJCXsKLQkJCSAgaWYgKCEgKGluZm8tPnNoYXJlZAotCQkJCSAmJiBpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9JR05PUkUKKwkJCSAgaWYgKCEgKGluZm8tPnVucmVzb2x2ZWRfc3ltc19pbl9vYmplY3RzID09IFJNX0lHTk9SRQogCQkJCSAmJiAoRUxGX1NUX1ZJU0lCSUxJVFkgKGhhc2gtPmVsZi5vdGhlcikKIAkJCQkgICAgID09IFNUVl9ERUZBVUxUKQogCQkJCSAmJiBoYXNoLT5lbGYudHlwZSAhPSBTVFRfUEFSSVNDX01JTExJKSkKQEAgLTMwMDUsNyArMjk5Miw3IEBACiBlbGYzMl9ocHBhX2ZpbmFsX2xpbmsgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCiB7CiAgIC8qIEludm9rZSB0aGUgcmVndWxhciBFTEYgbGlua2VyIHRvIGRvIGFsbCB0aGUgd29yay4gICovCi0gIGlmICghYmZkX2VsZjMyX2JmZF9maW5hbF9saW5rIChhYmZkLCBpbmZvKSkKKyAgaWYgKCFiZmRfZWxmX2ZpbmFsX2xpbmsgKGFiZmQsIGluZm8pKQogICAgIHJldHVybiBGQUxTRTsKIAogICAvKiBJZiB3ZSdyZSBwcm9kdWNpbmcgYSBmaW5hbCBleGVjdXRhYmxlLCBzb3J0IHRoZSBjb250ZW50cyBvZiB0aGUKQEAgLTMxNDUsNiArMzEzMiw3IEBACiAgICAgY2FzZSBSX1BBUklTQ19QQ1JFTDE3UjoKICAgICBjYXNlIFJfUEFSSVNDX1BDUkVMMTRSOgogICAgIGNhc2UgUl9QQVJJU0NfUENSRUwxNEY6CisgICAgY2FzZSBSX1BBUklTQ19QQ1JFTDMyOgogICAgICAgLyogTWFrZSBpdCBhIHBjIHJlbGF0aXZlIG9mZnNldC4gICovCiAgICAgICB2YWx1ZSAtPSBsb2NhdGlvbjsKICAgICAgIGFkZGVuZCAtPSA4OwpAQCAtMzIzOCw2ICszMjI2LDcgQEAKICAgICBjYXNlIFJfUEFSSVNDX0RJUjE3RjoKICAgICBjYXNlIFJfUEFSSVNDX1BDUkVMMTdDOgogICAgIGNhc2UgUl9QQVJJU0NfUENSRUwxNEY6CisgICAgY2FzZSBSX1BBUklTQ19QQ1JFTDMyOgogICAgIGNhc2UgUl9QQVJJU0NfRFBSRUwxNEY6CiAgICAgY2FzZSBSX1BBUklTQ19QTEFCRUwzMjoKICAgICBjYXNlIFJfUEFSSVNDX0RMVElORDE0RjoKQEAgLTM0MzAsMjYgKzM0MTksMjUgQEAKIAl7CiAJICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaGg7CiAJICBiZmRfYm9vbGVhbiB1bnJlc29sdmVkX3JlbG9jOworCSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipzeW1faGFzaGVzID0gZWxmX3N5bV9oYXNoZXMgKGlucHV0X2JmZCk7CiAKLQkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChoaCwgZWxmX3N5bV9oYXNoZXMgKGlucHV0X2JmZCksIHJfc3ltbmR4LCBzeW10YWJfaGRyLAotCQkJCSAgIHJlbG9jYXRpb24sIHN5bV9zZWMsIHVucmVzb2x2ZWRfcmVsb2MsIGluZm8sCi0JCQkJICAgd2FybmVkX3VuZGVmKTsKKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoaCwgc3ltX3NlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWRfdW5kZWYpOwogCiAJICBpZiAocmVsb2NhdGlvbiA9PSAwCiAJICAgICAgJiYgaGgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX2RlZmluZWQKIAkgICAgICAmJiBoaC0+cm9vdC50eXBlICE9IGJmZF9saW5rX2hhc2hfZGVmd2VhawogCSAgICAgICYmIGhoLT5yb290LnR5cGUgIT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspCiAJICAgIHsKLQkgICAgICBpZiAoIWluZm8tPmV4ZWN1dGFibGUKLQkJICAmJiBpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9JR05PUkUKKwkgICAgICBpZiAoaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMgPT0gUk1fSUdOT1JFCiAJCSAgJiYgRUxGX1NUX1ZJU0lCSUxJVFkgKGhoLT5vdGhlcikgPT0gU1RWX0RFRkFVTFQKIAkJICAmJiBoaC0+dHlwZSA9PSBTVFRfUEFSSVNDX01JTExJKQogCQl7CiAJCSAgaWYgKCEgaW5mby0+Y2FsbGJhY2tzLT51bmRlZmluZWRfc3ltYm9sCiAJCSAgICAgIChpbmZvLCBoaC0+cm9vdC5yb290LnN0cmluZywgaW5wdXRfYmZkLAotCQkgICAgICAgaW5wdXRfc2VjdGlvbiwgcmVsLT5yX29mZnNldCwKLQkJICAgICAgICgoaW5mby0+c2hhcmVkICYmIGluZm8tPnVucmVzb2x2ZWRfc3ltc19pbl9zaGFyZWRfbGlicyA9PSBSTV9HRU5FUkFURV9FUlJPUikKLQkJCXx8ICghaW5mby0+c2hhcmVkICYmIGluZm8tPnVucmVzb2x2ZWRfc3ltc19pbl9vYmplY3RzID09IFJNX0dFTkVSQVRFX0VSUk9SKSkpKQorCQkgICAgICAgaW5wdXRfc2VjdGlvbiwgcmVsLT5yX29mZnNldCwgRkFMU0UpKQogCQkgICAgcmV0dXJuIEZBTFNFOwogCQkgIHdhcm5lZF91bmRlZiA9IFRSVUU7CiAJCX0KQEAgLTM0NzgsNyArMzQ2Niw4IEBACiAKIAkJb2ZmID0gaC0+ZWxmLmdvdC5vZmZzZXQ7CiAJCWR5biA9IGh0YWItPmVsZi5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQ7Ci0JCWlmICghIFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wgKGR5biwgaW5mbywgJmgtPmVsZikpCisJCWlmICghIFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wgKGR5biwgaW5mby0+c2hhcmVkLAorCQkJCQkJICAgICAgICZoLT5lbGYpKQogCQkgIHsKIAkJICAgIC8qIElmIHdlIGFyZW4ndCBnb2luZyB0byBjYWxsIGZpbmlzaF9keW5hbWljX3N5bWJvbCwKIAkJICAgICAgIHRoZW4gd2UgbmVlZCB0byBoYW5kbGUgaW5pdGlhbGlzYXRpb24gb2YgdGhlIC5nb3QKQEAgLTM1NzAsNyArMzU1OSw4IEBACiAJICAgICAgaWYgKGggIT0gTlVMTCkKIAkJewogCQkgIG9mZiA9IGgtPmVsZi5wbHQub2Zmc2V0OwotCQkgIGlmICghIFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wgKDEsIGluZm8sICZoLT5lbGYpKQorCQkgIGlmICghIFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wgKDEsIGluZm8tPnNoYXJlZCwKKwkJCQkJCQkgJmgtPmVsZikpCiAJCSAgICB7CiAJCSAgICAgIC8qIEluIGEgbm9uLXNoYXJlZCBsaW5rLCBhZGp1c3RfZHluYW1pY19zeW1ib2xzCiAJCQkgaXNuJ3QgY2FsbGVkIGZvciBzeW1ib2xzIGZvcmNlZCBsb2NhbC4gIFdlCmRpZmYgLS1naXQgYS9iZmQvZWxmMzItaTM3MC5jIGIvYmZkL2VsZjMyLWkzNzAuYwppbmRleCA4MGM0NWY2Li5mNzgyOTI1IDEwMDY0NAotLS0gYS9iZmQvZWxmMzItaTM3MC5jCisrKyBiL2JmZC9lbGYzMi1pMzcwLmMKQEAgLTEsNSArMSw1IEBACiAvKiBpMzcwLXNwZWNpZmljIHN1cHBvcnQgZm9yIDMyLWJpdCBFTEYKLSAgIENvcHlyaWdodCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzCisgICBDb3B5cmlnaHQgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNAogICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBXcml0dGVuIGJ5IElhbiBMYW5jZSBUYXlsb3IsIEN5Z251cyBTdXBwb3J0LgogICAgSGFja2VkIGJ5IExpbmFzIFZlcHN0YXMgZm9yIGkzNzAgbGluYXNAbGluYXMub3JnCkBAIC03OTEsNyArNzkxLDcgQEAKIAkgdGhlIC5keW5hbWljIHNlY3Rpb24uICBUaGUgRFRfREVCVUcgZW50cnkgaXMgZmlsbGVkIGluIGJ5IHRoZQogCSBkeW5hbWljIGxpbmtlciBhbmQgdXNlZCBieSB0aGUgZGVidWdnZXIuICAqLwogI2RlZmluZSBhZGRfZHluYW1pY19lbnRyeShUQUcsIFZBTCkgXAotICBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIChiZmRfdm1hKSAoVEFHKSwgKGJmZF92bWEpIChWQUwpKQorICBfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgVEFHLCBWQUwpCiAKICAgICAgIGlmICghaW5mby0+c2hhcmVkKQogCXsKQEAgLTEyNDYsMTkgKzEyNDYsMjEgQEAKIAkgICAgfQogCSAgZWxzZSBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQogCSAgICByZWxvY2F0aW9uID0gMDsKLQkgIGVsc2UgaWYgKGluZm8tPnNoYXJlZAorCSAgZWxzZSBpZiAoaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMgPT0gUk1fSUdOT1JFCiAJCSAgICYmIEVMRl9TVF9WSVNJQklMSVRZIChoLT5vdGhlcikgPT0gU1RWX0RFRkFVTFQpCiAJICAgIHJlbG9jYXRpb24gPSAwOwogCSAgZWxzZQogCSAgICB7Ci0JICAgICAgKCppbmZvLT5jYWxsYmFja3MtPnVuZGVmaW5lZF9zeW1ib2wpIChpbmZvLAotCQkJCQkJICAgIGgtPnJvb3Qucm9vdC5zdHJpbmcsCi0JCQkJCQkgICAgaW5wdXRfYmZkLAotCQkJCQkJICAgIGlucHV0X3NlY3Rpb24sCi0JCQkJCQkgICAgcmVsLT5yX29mZnNldCwKLQkJCQkJCSAgICBUUlVFKTsKLQkgICAgICByZXQgPSBGQUxTRTsKLQkgICAgICBjb250aW51ZTsKKwkgICAgICBpZiAoKCppbmZvLT5jYWxsYmFja3MtPnVuZGVmaW5lZF9zeW1ib2wpCisJCSAgKGluZm8sIGgtPnJvb3Qucm9vdC5zdHJpbmcsIGlucHV0X2JmZCwKKwkJICAgaW5wdXRfc2VjdGlvbiwgcmVsLT5yX29mZnNldCwKKwkJICAgKGluZm8tPnVucmVzb2x2ZWRfc3ltc19pbl9vYmplY3RzID09IFJNX0dFTkVSQVRFX0VSUk9SCisJCSAgICB8fCBFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpKSkpCisJCXsKKwkJICByZXQgPSBGQUxTRTsKKwkJICBjb250aW51ZTsKKwkJfQorCSAgICAgIHJlbG9jYXRpb24gPSAwOwogCSAgICB9CiAJfQogCkBAIC0xNTQ2LDcgKzE1NDgsNyBAQAogCiAjZGVmaW5lIGVsZl9iYWNrZW5kX2FkZF9zeW1ib2xfaG9vayBcCiAgIChiZmRfYm9vbGVhbiAoKikgXAotICAgICBQQVJBTVMgKChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgY29uc3QgRWxmX0ludGVybmFsX1N5bSAqLCBcCisgICAgIFBBUkFNUyAoKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBFbGZfSW50ZXJuYWxfU3ltICosIFwKIAkgICAgICBjb25zdCBjaGFyICoqLCBmbGFnd29yZCAqLCBhc2VjdGlvbiAqKiwgYmZkX3ZtYSAqKSkpIGkzNzBfbm9vcAogI2RlZmluZSBlbGZfYmFja2VuZF9maW5pc2hfZHluYW1pY19zeW1ib2wgXAogICAoYmZkX2Jvb2xlYW4gKCopIFwKZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1pMzg2LmMgYi9iZmQvZWxmMzItaTM4Ni5jCmluZGV4IDBhM2Q4M2YuLjdiMTczZTQgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1pMzg2LmMKKysrIGIvYmZkL2VsZjMyLWkzODYuYwpAQCAtMSw2ICsxLDYgQEAKIC8qIEludGVsIDgwMzg2LzgwNDg2LXNwZWNpZmljIHN1cHBvcnQgZm9yIDMyLWJpdCBFTEYKLSAgIENvcHlyaWdodCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0Ci0gICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAorICAgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgQkZELCB0aGUgQmluYXJ5IEZpbGUgRGVzY3JpcHRvciBsaWJyYXJ5LgogCkBAIC0xMTU3LDE0ICsxMTU3LDE0IEBACiAJICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHRoZSBDKysgb2JqZWN0IHZ0YWJsZSBoaWVyYXJjaHkuCiAJICAgICBSZWNvbnN0cnVjdCBpdCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSXzM4Nl9HTlVfVlRJTkhFUklUOgotCSAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisJICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgd2hpY2ggQysrIHZ0YWJsZSBlbnRyaWVzIGFyZSBhY3R1YWxseQogCSAgICAgdXNlZC4gIFJlY29yZCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSXzM4Nl9HTlVfVlRFTlRSWToKLQkgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKKwkgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKQEAgLTE0NTgsMTcgKzE0NTgsNiBAQAogICByZXR1cm4gVFJVRTsKIH0KIAotLyogVGhpcyBpcyB0aGUgY29uZGl0aW9uIHVuZGVyIHdoaWNoIGVsZl9pMzg2X2ZpbmlzaF9keW5hbWljX3N5bWJvbAotICAgd2lsbCBiZSBjYWxsZWQgZnJvbSBlbGZsaW5rLmguICBJZiBlbGZsaW5rLmggZG9lc24ndCBjYWxsIG91cgotICAgZmluaXNoX2R5bmFtaWNfc3ltYm9sIHJvdXRpbmUsIHdlJ2xsIG5lZWQgdG8gZG8gc29tZXRoaW5nIGFib3V0Ci0gICBpbml0aWFsaXppbmcgYW55IC5wbHQgYW5kIC5nb3QgZW50cmllcyBpbiBlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uLiAgKi8KLSNkZWZpbmUgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTChEWU4sIFNIQVJFRCwgSCkgXAotICAoKERZTikJCQkJCQkJCVwKLSAgICYmICgoU0hBUkVEKQkJCQkJCQkJXAotICAgICAgIHx8ICgoSCktPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCVwKLSAgICYmICgoSCktPmR5bmluZHggIT0gLTEJCQkJCQlcCi0gICAgICAgfHwgKChIKS0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgIT0gMCkpCi0KIC8qIEFsbG9jYXRlIHNwYWNlIGluIC5wbHQsIC5nb3QgYW5kIGFzc29jaWF0ZWQgcmVsb2Mgc2VjdGlvbnMgZm9yCiAgICBkeW5hbWljIHJlbG9jcy4gICovCiAKQEAgLTE1MDAsNyArMTQ4OSw3IEBACiAgICAgICBpZiAoaC0+ZHluaW5keCA9PSAtMQogCSAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJewotCSAgaWYgKCEgYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogCkBAIC0xNTY4LDcgKzE1NTcsNyBAQAogICAgICAgaWYgKGgtPmR5bmluZHggPT0gLTEKIAkgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQogCXsKLQkgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIApAQCAtMTY1Nyw3ICsxNjQ2LDcgQEAKIAkgIGlmIChoLT5keW5pbmR4ID09IC0xCiAJICAgICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJICAgIHsKLQkgICAgICBpZiAoISBiZmRfZWxmMzJfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgICAgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCQlyZXR1cm4gRkFMU0U7CiAJICAgIH0KIApAQCAtMTg5NSw3ICsxODg0LDcgQEAKIAkgdGhlIC5keW5hbWljIHNlY3Rpb24uICBUaGUgRFRfREVCVUcgZW50cnkgaXMgZmlsbGVkIGluIGJ5IHRoZQogCSBkeW5hbWljIGxpbmtlciBhbmQgdXNlZCBieSB0aGUgZGVidWdnZXIuICAqLwogI2RlZmluZSBhZGRfZHluYW1pY19lbnRyeShUQUcsIFZBTCkgXAotICBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIChUQUcpLCAoVkFMKSkKKyAgX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIFRBRywgVkFMKQogCiAgICAgICBpZiAoaW5mby0+ZXhlY3V0YWJsZSkKIAl7CkBAIC0yMTc5LDcgKzIxNjgsMTAgQEAKIAl7CiAJICBiZmRfYm9vbGVhbiB3YXJuZWQ7CiAKLQkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChoLCBzeW1faGFzaGVzLCByX3N5bW5keCwgc3ltdGFiX2hkciwgcmVsb2NhdGlvbiwgc2VjLCB1bnJlc29sdmVkX3JlbG9jLCBpbmZvLCB3YXJuZWQpOworCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHNlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCX0KIAogICAgICAgc3dpdGNoIChyX3R5cGUpCmRpZmYgLS1naXQgYS9iZmQvZWxmMzItaTg2MC5jIGIvYmZkL2VsZjMyLWk4NjAuYwppbmRleCA4YWIzYzkyLi5mMTU2YmM1IDEwMDY0NAotLS0gYS9iZmQvZWxmMzItaTg2MC5jCisrKyBiL2JmZC9lbGYzMi1pODYwLmMKQEAgLTEsNSArMSw1IEBACiAvKiBJbnRlbCBpODYwIHNwZWNpZmljIHN1cHBvcnQgZm9yIDMyLWJpdCBFTEYuCi0gICBDb3B5cmlnaHQgMTk5MywgMTk5NSwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMworICAgQ29weXJpZ2h0IDE5OTMsIDE5OTUsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBGdWxsIGk4NjAgc3VwcG9ydCBjb250cmlidXRlZCBieSBKYXNvbiBFY2toYXJkdCA8amxlQGN5Z251cy5jb20+LgpAQCAtMTExMiwzNCArMTExMiwxMiBAQAogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBoID0gc3ltX2hhc2hlcyBbcl9zeW1uZHggLSBzeW10YWJfaGRyLT5zaF9pbmZvXTsKKwkgIGJmZF9ib29sZWFuIHVucmVzb2x2ZWRfcmVsb2MsIHdhcm5lZDsKIAotCSAgd2hpbGUgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2luZGlyZWN0Ci0JCSB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQotCSAgICBoID0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIGgtPnJvb3QudS5pLmxpbms7Ci0KLQkgIG5hbWUgPSBoLT5yb290LnJvb3Quc3RyaW5nOwotCi0JICBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmaW5lZAotCSAgICAgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZndlYWspCi0JICAgIHsKLQkgICAgICBzZWMgPSBoLT5yb290LnUuZGVmLnNlY3Rpb247Ci0JICAgICAgcmVsb2NhdGlvbiA9IChoLT5yb290LnUuZGVmLnZhbHVlCi0JCQkgICAgKyBzZWMtPm91dHB1dF9zZWN0aW9uLT52bWEKLQkJCSAgICArIHNlYy0+b3V0cHV0X29mZnNldCk7Ci0JICAgIH0KLQkgIGVsc2UgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmd2VhaykKLQkgICAgewotCSAgICAgIHJlbG9jYXRpb24gPSAwOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICBpZiAoISAoKCppbmZvLT5jYWxsYmFja3MtPnVuZGVmaW5lZF9zeW1ib2wpCi0JCSAgICAgKGluZm8sIGgtPnJvb3Qucm9vdC5zdHJpbmcsIGlucHV0X2JmZCwKLQkJICAgICAgaW5wdXRfc2VjdGlvbiwgcmVsLT5yX29mZnNldCwgVFJVRSkpKQotCQlyZXR1cm4gRkFMU0U7Ci0JICAgICAgcmVsb2NhdGlvbiA9IDA7Ci0JICAgIH0KKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoLCBzZWMsIHJlbG9jYXRpb24sCisJCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkKTsKIAl9CiAKICAgICAgIHN3aXRjaCAocl90eXBlKQpkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLWlwMmsuYyBiL2JmZC9lbGYzMi1pcDJrLmMKaW5kZXggNzYwNmUwZC4uNjQ5M2JlNiAxMDA2NDQKLS0tIGEvYmZkL2VsZjMyLWlwMmsuYworKysgYi9iZmQvZWxmMzItaXAyay5jCkBAIC0xLDUgKzEsNSBAQAogLyogVWJpY29tIElQMnh4eCBzcGVjaWZpYyBzdXBwb3J0IGZvciAzMi1iaXQgRUxGCi0gICBDb3B5cmlnaHQgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCiAKQEAgLTE1MzUsNyArMTUzNSwxMCBAQAogCSAgYmZkX2Jvb2xlYW4gd2FybmVkOwogCSAgYmZkX2Jvb2xlYW4gdW5yZXNvbHZlZF9yZWxvYzsKIAotCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGgsIHN5bV9oYXNoZXMsIHJfc3ltbmR4LCBzeW10YWJfaGRyLCByZWxvY2F0aW9uLCBzZWMsIHVucmVzb2x2ZWRfcmVsb2MsIGluZm8sIHdhcm5lZCk7CisJICBSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCAoaW5mbywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLCByZWwsCisJCQkJICAgcl9zeW1uZHgsIHN5bXRhYl9oZHIsIHN5bV9oYXNoZXMsCisJCQkJICAgaCwgc2VjLCByZWxvY2F0aW9uLAorCQkJCSAgIHVucmVzb2x2ZWRfcmVsb2MsIHdhcm5lZCk7CiAKIAkgIG5hbWUgPSBoLT5yb290LnJvb3Quc3RyaW5nOwogCX0KZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1pcTIwMDAuYyBiL2JmZC9lbGYzMi1pcTIwMDAuYwppbmRleCBmODVmZmFjLi42MGRhYjM0IDEwMDY0NAotLS0gYS9iZmQvZWxmMzItaXEyMDAwLmMKKysrIGIvYmZkL2VsZjMyLWlxMjAwMC5jCkBAIC0xLDUgKzEsNSBAQAogLyogSVEyMDAwLXNwZWNpZmljIHN1cHBvcnQgZm9yIDMyLWJpdCBFTEYuCi0gICBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEJGRCwgdGhlIEJpbmFyeSBGaWxlIERlc2NyaXB0b3IgbGlicmFyeS4KIApAQCAtNDg0LDE0ICs0ODQsMTQgQEAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgdGhlIEMrKyBvYmplY3QgdnRhYmxlIGhpZXJhcmNoeS4KIAkgICAgIFJlY29uc3RydWN0IGl0IGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KIAljYXNlIFJfSVEyMDAwX0dOVV9WVElOSEVSSVQ6Ci0JICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKKwkgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJICBicmVhazsKIAkgIAogCSAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB3aGljaCBDKysgdnRhYmxlIGVudHJpZXMgYXJlIGFjdHVhbGx5CiAJICAgICB1c2VkLiAgUmVjb3JkIGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KIAljYXNlIFJfSVEyMDAwX0dOVV9WVEVOVFJZOgotCSAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9hZGRlbmQpKQorCSAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9hZGRlbmQpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJICBicmVhazsKIApAQCAtNjIxLDkgKzYyMSwxMCBAQAogCSAgYmZkX2Jvb2xlYW4gdW5yZXNvbHZlZF9yZWxvYzsKIAkgIGJmZF9ib29sZWFuIHdhcm5lZDsKIAotCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGgsIHN5bV9oYXNoZXMsIHJfc3ltbmR4LAotCQkJCSAgIHN5bXRhYl9oZHIsIHJlbG9jYXRpb24sCi0JCQkJICAgc2VjLCB1bnJlc29sdmVkX3JlbG9jLCBpbmZvLCB3YXJuZWQpOworCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHNlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCiAJICBuYW1lID0gaC0+cm9vdC5yb290LnN0cmluZzsKIAl9CmRpZmYgLS1naXQgYS9iZmQvZWxmMzItbTMyci5jIGIvYmZkL2VsZjMyLW0zMnIuYwppbmRleCAzZjVmYmNhLi4yMWQzN2IxIDEwMDY0NAotLS0gYS9iZmQvZWxmMzItbTMyci5jCisrKyBiL2JmZC9lbGYzMi1tMzJyLmMKQEAgLTUxLDcgKzUxLDcgQEAKIHZvaWQgX2JmZF9tMzJyX2VsZl9zeW1ib2xfcHJvY2Vzc2luZwogICBQQVJBTVMgKChiZmQgKiwgYXN5bWJvbCAqKSk7CiBzdGF0aWMgYmZkX2Jvb2xlYW4gbTMycl9lbGZfYWRkX3N5bWJvbF9ob29rCi0gIFBBUkFNUyAoKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBjb25zdCBFbGZfSW50ZXJuYWxfU3ltICosCisgIFBBUkFNUyAoKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBFbGZfSW50ZXJuYWxfU3ltICosCiAJICAgY29uc3QgY2hhciAqKiwgZmxhZ3dvcmQgKiwgYXNlY3Rpb24gKiosIGJmZF92bWEgKikpOwogc3RhdGljIGJmZF9ib29sZWFuIG0zMnJfZWxmX3JlbG9jYXRlX3NlY3Rpb24KICAgUEFSQU1TICgoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGJmZCAqLCBhc2VjdGlvbiAqLCBiZmRfYnl0ZSAqLApAQCAtMTM5MSw3ICsxMzkxLDcgQEAKIG0zMnJfZWxmX2FkZF9zeW1ib2xfaG9vayAoYWJmZCwgaW5mbywgc3ltLCBuYW1lcCwgZmxhZ3NwLCBzZWNwLCB2YWxwKQogICAgICBiZmQgKmFiZmQ7CiAgICAgIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvOwotICAgICBjb25zdCBFbGZfSW50ZXJuYWxfU3ltICpzeW07CisgICAgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bTsKICAgICAgY29uc3QgY2hhciAqKm5hbWVwOwogICAgICBmbGFnd29yZCAqZmxhZ3NwIEFUVFJJQlVURV9VTlVTRUQ7CiAgICAgIGFzZWN0aW9uICoqc2VjcDsKQEAgLTE3NDIsNyArMTc0Miw3IEBACiAgICAgICBoLT50eXBlID0gU1RUX09CSkVDVDsKIAogICAgICAgaWYgKGluZm8tPnNoYXJlZAotICAgICAgICAgICYmICEgX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorICAgICAgICAgICYmICEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKQEAgLTIwNDksMTcgKzIwNDksNiBAQAogICByZXR1cm4gVFJVRTsKIH0KIAotLyogVGhpcyBpcyB0aGUgY29uZGl0aW9uIHVuZGVyIHdoaWNoIGZpbmlzaF9keW5hbWljX3N5bWJvbCB3aWxsIGJlIGNhbGxlZAotICAgZnJvbSBlbGZsaW5rLmguICBJZiBlbGZsaW5rLmggZG9lc24ndCBjYWxsIG91ciBmaW5pc2hfZHluYW1pY19zeW1ib2wKLSAgIHJvdXRpbmUsIHdlJ2xsIG5lZWQgdG8gZG8gc29tZXRoaW5nIGFib3V0IGluaXRpYWxpemluZyBhbnkgLnBsdCBhbmQgLmdvdAotICAgZW50cmllcyBpbiByZWxvY2F0ZV9zZWN0aW9uLiAgKi8KLSNkZWZpbmUgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTChEWU4sIElORk8sIEgpCQkJXAotICAoKERZTikJCQkJCQkJCVwKLSAgICYmICgoSU5GTyktPnNoYXJlZAkJCQkJCQlcCi0gICAgICAgfHwgKChIKS0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkJXAotICAgJiYgKChIKS0+ZHluaW5keCAhPSAtMQkJCQkJCVwKLSAgICAgICB8fCAoKEgpLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSAhPSAwKSkKLQogLyogQWxsb2NhdGUgc3BhY2UgaW4gLnBsdCwgLmdvdCBhbmQgYXNzb2NpYXRlZCByZWxvYyBzZWN0aW9ucyBmb3IKICAgIGR5bmFtaWMgcmVsb2NzLiAgKi8KIApAQCAtMjEwNSwxMSArMjA5NCwxMSBAQAogICAgICAgaWYgKGgtPmR5bmluZHggPT0gLTEKICAgICAgICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkKICAgICAgICAgewotICAgICAgICAgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisgICAgICAgICAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgIH0KIAotICAgICAgaWYgKFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wgKDEsIGluZm8sIGgpKQorICAgICAgaWYgKFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wgKDEsIGluZm8tPnNoYXJlZCwgaCkpCiAgICAgICAgIHsKICAgICAgICAgICBhc2VjdGlvbiAqcyA9IGh0YWItPnNwbHQ7CiAKQEAgLTIxNjQsNyArMjE1Myw3IEBACiAgICAgICBpZiAoaC0+ZHluaW5keCA9PSAtMQogICAgICAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQogICAgICAgICB7Ci0gICAgICAgICAgaWYgKCEgYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKyAgICAgICAgICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgfQogCkBAIC0yMTczLDcgKzIxNjIsNyBAQAogICAgICAgaC0+Z290Lm9mZnNldCA9IHMtPl9yYXdfc2l6ZTsKICAgICAgIHMtPl9yYXdfc2l6ZSArPSA0OwogICAgICAgZHluID0gaHRhYi0+cm9vdC5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQ7Ci0gICAgICBpZiAoV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTCAoZHluLCBpbmZvLCBoKSkKKyAgICAgIGlmIChXSUxMX0NBTExfRklOSVNIX0RZTkFNSUNfU1lNQk9MIChkeW4sIGluZm8tPnNoYXJlZCwgaCkpCiAgICAgICAgIGh0YWItPnNyZWxnb3QtPl9yYXdfc2l6ZSArPSBzaXplb2YgKEVsZjMyX0V4dGVybmFsX1JlbGEpOwogICAgIH0KICAgZWxzZQpAQCAtMjIyNCw3ICsyMjEzLDcgQEAKICAgICAgICAgICBpZiAoaC0+ZHluaW5keCA9PSAtMQogICAgICAgICAgICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKCEgYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKyAgICAgICAgICAgICAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgfQogCkBAIC0yNDQyLDcgKzI0MzEsNyBAQAogCSB0aGUgLmR5bmFtaWMgc2VjdGlvbi4gIFRoZSBEVF9ERUJVRyBlbnRyeSBpcyBmaWxsZWQgaW4gYnkgdGhlCiAJIGR5bmFtaWMgbGlua2VyIGFuZCB1c2VkIGJ5IHRoZSBkZWJ1Z2dlci4gICovCiAjZGVmaW5lIGFkZF9keW5hbWljX2VudHJ5KFRBRywgVkFMKSBcCi0gIGJmZF9lbGYzMl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgKGJmZF92bWEpIChUQUcpLCAoYmZkX3ZtYSkgKFZBTCkpCisgIF9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBUQUcsIFZBTCkKIAogICAgICAgaWYgKCEgaW5mby0+c2hhcmVkKQogCXsKQEAgLTI3MjMsNyArMjcxMiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByX3R5cGUgPT0gUl9NMzJSX0dPVDE2X0hJX1VMTwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgcl90eXBlID09IFJfTTMyUl9HT1QxNl9ISV9TTE8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHJfdHlwZSA9PSBSX00zMlJfR09UMTZfTE8pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICYmIFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wgKGR5biwgaW5mbywgaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTCAoZHluLAorCQkJCQkJCSAgICAgIGluZm8tPnNoYXJlZCwgaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCEgaW5mby0+c2hhcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoISBpbmZvLT5zeW1ib2xpYyAmJiBoLT5keW5pbmR4ICE9IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MKQEAgLTI3NzMsOCArMjc2Myw3IEBACiAJCX0KIAkgICAgICBlbHNlIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspCiAJCXJlbG9jYXRpb24gPSAwOwotICAgICAgICAgICAgICBlbHNlIGlmIChpbmZvLT5zaGFyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgKCFpbmZvLT5zeW1ib2xpYykKKyAgICAgICAgICAgICAgZWxzZSBpZiAoaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMgPT0gUk1fSUdOT1JFCiAgICAgICAgICAgICAgICAgICAgICAgICYmIEVMRl9TVF9WSVNJQklMSVRZIChoLT5vdGhlcikgPT0gU1RWX0RFRkFVTFQpCiAgICAgICAgICAgICAgICAgcmVsb2NhdGlvbiA9IDA7CiAJICAgICAgZWxzZQpAQCAtMjc4Miw3ICsyNzcxLDcgQEAKIAkJICBpZiAoISAoKCppbmZvLT5jYWxsYmFja3MtPnVuZGVmaW5lZF9zeW1ib2wpCiAJCQkgKGluZm8sIGgtPnJvb3Qucm9vdC5zdHJpbmcsIGlucHV0X2JmZCwKIAkJCSAgaW5wdXRfc2VjdGlvbiwgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAoIWluZm8tPnNoYXJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMgPT0gUk1fR0VORVJBVEVfRVJST1IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IEVMRl9TVF9WSVNJQklMSVRZIChoLT5vdGhlcikpKSkpCiAJCSAgICByZXR1cm4gRkFMU0U7CiAJCSAgcmVsb2NhdGlvbiA9IDA7CkBAIC0yODQ2LDcgKzI4MzUsNyBAQAogICAgICAgICAgICAgICAgICAgQkZEX0FTU0VSVCAob2ZmICE9IChiZmRfdm1hKSAtMSk7CiAKICAgICAgICAgICAgICAgICAgIGR5biA9IGh0YWItPnJvb3QuZHluYW1pY19zZWN0aW9uc19jcmVhdGVkOwotICAgICAgICAgICAgICAgICAgaWYgKCEgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTCAoZHluLCBpbmZvLCBoKQorICAgICAgICAgICAgICAgICAgaWYgKCEgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTCAoZHluLCBpbmZvLT5zaGFyZWQsIGgpCiAgICAgICAgICAgICAgICAgICAgICAgfHwgKGluZm8tPnNoYXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoaW5mby0+c3ltYm9saWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGgtPmR5bmluZHggPT0gLTEKQEAgLTQ2NTcsMTggKzQ2NDYsMTggQEAKICAgICAgICAgICAgUmVjb25zdHJ1Y3QgaXQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogICAgICAgICBjYXNlIFJfTTMyUl9SRUxBX0dOVV9WVElOSEVSSVQ6CiAgICAgICAgIGNhc2UgUl9NMzJSX0dOVV9WVElOSEVSSVQ6Ci0gICAgICAgICAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisgICAgICAgICAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB3aGljaCBDKysgdnRhYmxlIGVudHJpZXMgYXJlIGFjdHVhbGx5CiAgICAgICAgICAgIHVzZWQuICBSZWNvcmQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogICAgICAgICBjYXNlIFJfTTMyUl9HTlVfVlRFTlRSWToKLSAgICAgICAgICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisgICAgICAgICAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJfTTMyUl9SRUxBX0dOVV9WVEVOVFJZOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1tNjhoYzF4LmMgYi9iZmQvZWxmMzItbTY4aGMxeC5jCmluZGV4IDcwOWI4ZjQuLjJhMTM5YTQgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1tNjhoYzF4LmMKKysrIGIvYmZkL2VsZjMyLW02OGhjMXguYwpAQCAtMSw1ICsxLDYgQEAKIC8qIE1vdG9yb2xhIDY4SEMxMS9IQzEyLXNwZWNpZmljIHN1cHBvcnQgZm9yIDMyLWJpdCBFTEYKLSAgIENvcHlyaWdodCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgQ29udHJpYnV0ZWQgYnkgU3RlcGhhbmUgQ2FycmV6IChzdGNhcnJlekBuZXJpbS5mcikKIAogVGhpcyBmaWxlIGlzIHBhcnQgb2YgQkZELCB0aGUgQmluYXJ5IEZpbGUgRGVzY3JpcHRvciBsaWJyYXJ5LgpAQCAtNDcsMTYgKzQ4LDYgQEAKIHN0YXRpYyBiZmRfYm9vbGVhbiBtNjhoYzExX2VsZl9leHBvcnRfb25lX3N0dWIKICAgKHN0cnVjdCBiZmRfaGFzaF9lbnRyeSAqZ2VuX2VudHJ5LCB2b2lkICppbl9hcmcpOwogCi1zdGF0aWMgYmZkX2Jvb2xlYW4gbTY4aGMxMV9nZXRfcmVsb2NhdGlvbl92YWx1ZQotICAoYmZkKiBhYmZkLAotICAgc3RydWN0IGJmZF9saW5rX2luZm8qIGluZm8sCi0gICBhc2VjdGlvbiAqKmxvY2FsX3NlY3Rpb25zLAotICAgRWxmX0ludGVybmFsX1N5bSogbG9jYWxfc3ltcywKLSAgIEVsZl9JbnRlcm5hbF9SZWxhKiByZWwsCi0gICBjb25zdCBjaGFyKiogbmFtZSwKLSAgIGJmZF92bWEqIHJlbG9jYXRpb24sCi0gICBiZmRfYm9vbGVhbiogaXNfZmFyKTsKLQogc3RhdGljIHZvaWQgc2Nhbl9zZWN0aW9uc19mb3JfYWJpIChiZmQqLCBhc2VjdGlvbiosIFBUUik7CiAKIHN0cnVjdCBtNjhoYzExX3NjYW5fcGFyYW0KQEAgLTE5MCw3ICsxODEsNyBAQAogCiBiZmRfYm9vbGVhbgogZWxmMzJfbTY4aGMxMV9hZGRfc3ltYm9sX2hvb2sgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRWxmX0ludGVybmFsX1N5bSAqc3ltLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqbmFtZXAgQVRUUklCVVRFX1VOVVNFRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnd29yZCAqZmxhZ3NwIEFUVFJJQlVURV9VTlVTRUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNlY3Rpb24gKipzZWNwIEFUVFJJQlVURV9VTlVTRUQsCkBAIC05MDIsMTQgKzg5MywxNCBAQAogICAgICAgICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHRoZSBDKysgb2JqZWN0IHZ0YWJsZSBoaWVyYXJjaHkuCiAgICAgICAgICAgIFJlY29uc3RydWN0IGl0IGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KICAgICAgICAgY2FzZSBSX002OEhDMTFfR05VX1ZUSU5IRVJJVDoKLSAgICAgICAgICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHdoaWNoIEMrKyB2dGFibGUgZW50cmllcyBhcmUgYWN0dWFsbHkKICAgICAgICAgICAgdXNlZC4gIFJlY29yZCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAgICAgICAgIGNhc2UgUl9NNjhIQzExX0dOVV9WVEVOVFJZOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTkxOSw3ICs5MTAsOCBAQAogfQogCiBzdGF0aWMgYmZkX2Jvb2xlYW4KLW02OGhjMTFfZ2V0X3JlbG9jYXRpb25fdmFsdWUgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCittNjhoYzExX2dldF9yZWxvY2F0aW9uX3ZhbHVlIChiZmQgKmlucHV0X2JmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCisJCQkgICAgICBhc2VjdGlvbiAqaW5wdXRfc2VjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZWN0aW9uICoqbG9jYWxfc2VjdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfSW50ZXJuYWxfU3ltICpsb2NhbF9zeW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxmX0ludGVybmFsX1JlbGEgKnJlbCwKQEAgLTkzNCw4ICs5MjYsOCBAQAogICBFbGZfSW50ZXJuYWxfU3ltICpzeW07CiAgIGNvbnN0IGNoYXIqIHN0dWJfbmFtZSA9IDA7CiAKLSAgc3ltdGFiX2hkciA9ICZlbGZfdGRhdGEgKGFiZmQpLT5zeW10YWJfaGRyOwotICBzeW1faGFzaGVzID0gZWxmX3N5bV9oYXNoZXMgKGFiZmQpOworICBzeW10YWJfaGRyID0gJmVsZl90ZGF0YSAoaW5wdXRfYmZkKS0+c3ltdGFiX2hkcjsKKyAgc3ltX2hhc2hlcyA9IGVsZl9zeW1faGFzaGVzIChpbnB1dF9iZmQpOwogCiAgIHJfc3ltbmR4ID0gRUxGMzJfUl9TWU0gKHJlbC0+cl9pbmZvKTsKIApAQCAtOTUzLDMzICs5NDUsMTcgQEAKICAgICAgICppc19mYXIgPSAoc3ltICYmIChzeW0tPnN0X290aGVyICYgU1RPX002OEhDMTJfRkFSKSk7CiAgICAgICBpZiAoKmlzX2ZhcikKICAgICAgICAgc3R1Yl9uYW1lID0gKGJmZF9lbGZfc3RyaW5nX2Zyb21fZWxmX3NlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgIChhYmZkLCBzeW10YWJfaGRyLT5zaF9saW5rLAorICAgICAgICAgICAgICAgICAgICAgKGlucHV0X2JmZCwgc3ltdGFiX2hkci0+c2hfbGluaywKICAgICAgICAgICAgICAgICAgICAgICBzeW0tPnN0X25hbWUpKTsKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBoID0gc3ltX2hhc2hlc1tyX3N5bW5keCAtIHN5bXRhYl9oZHItPnNoX2luZm9dOwotICAgICAgd2hpbGUgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2luZGlyZWN0Ci0gICAgICAgICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfd2FybmluZykKLSAgICAgICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOwotICAgICAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZmluZWQKLSAgICAgICAgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKQotICAgICAgICB7Ci0gICAgICAgICAgc2VjID0gaC0+cm9vdC51LmRlZi5zZWN0aW9uOwotICAgICAgICAgICpyZWxvY2F0aW9uID0gKGgtPnJvb3QudS5kZWYudmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICArIHNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYQotICAgICAgICAgICAgICAgICAgICAgICAgICsgc2VjLT5vdXRwdXRfb2Zmc2V0KTsKLSAgICAgICAgfQotICAgICAgZWxzZSBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQotICAgICAgICAqcmVsb2NhdGlvbiA9IDA7Ci0gICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoISgoKmluZm8tPmNhbGxiYWNrcy0+dW5kZWZpbmVkX3N5bWJvbCkKLSAgICAgICAgICAgICAgICAoaW5mbywgaC0+cm9vdC5yb290LnN0cmluZywgYWJmZCwKLSAgICAgICAgICAgICAgICAgc2VjLCByZWwtPnJfb2Zmc2V0LCBUUlVFKSkpCi0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgICAgKnJlbG9jYXRpb24gPSAwOwotICAgICAgICB9CisgICAgICBiZmRfYm9vbGVhbiB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQ7CisKKyAgICAgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCSAgICAgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCSAgICAgICBoLCBzZWMsICpyZWxvY2F0aW9uLCB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOworCiAgICAgICAqaXNfZmFyID0gKGggJiYgKGgtPm90aGVyICYgU1RPX002OEhDMTJfRkFSKSk7CiAgICAgICBzdHViX25hbWUgPSBoLT5yb290LnJvb3Quc3RyaW5nOwogICAgIH0KQEAgLTk4OSw3ICs5NjUsNyBAQAogICBlbHNlCiAgICAgewogICAgICAgKm5hbWUgPSAoYmZkX2VsZl9zdHJpbmdfZnJvbV9lbGZfc2VjdGlvbgotICAgICAgICAgICAgICAgKGFiZmQsIHN5bXRhYl9oZHItPnNoX2xpbmssIHN5bS0+c3RfbmFtZSkpOworICAgICAgICAgICAgICAgKGlucHV0X2JmZCwgc3ltdGFiX2hkci0+c2hfbGluaywgc3ltLT5zdF9uYW1lKSk7CiAgICAgICBpZiAoKm5hbWUgPT0gTlVMTCB8fCAqKm5hbWUgPT0gJ1wwJykKICAgICAgICAgKm5hbWUgPSBiZmRfc2VjdGlvbl9uYW1lIChpbnB1dF9iZmQsIHNlYyk7CiAgICAgfQpAQCAtMTA4Miw4ICsxMDU4LDggQEAKICAgICAgICgqZWJkLT5lbGZfaW5mb190b19ob3d0b19yZWwpIChpbnB1dF9iZmQsICZhcmVsLCByZWwpOwogICAgICAgaG93dG8gPSBhcmVsLmhvd3RvOwogCi0gICAgICBtNjhoYzExX2dldF9yZWxvY2F0aW9uX3ZhbHVlIChpbnB1dF9iZmQsIGluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9zZWN0aW9ucywgbG9jYWxfc3ltcywKKyAgICAgIG02OGhjMTFfZ2V0X3JlbG9jYXRpb25fdmFsdWUgKGlucHV0X2JmZCwgaW5mbywgaW5wdXRfc2VjdGlvbiwgCisJCQkJICAgIGxvY2FsX3NlY3Rpb25zLCBsb2NhbF9zeW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsLCAmbmFtZSwgJnJlbG9jYXRpb24sICZpc19mYXIpOwogCiAgICAgICAvKiBEbyB0aGUgbWVtb3J5IGJhbmsgbWFwcGluZy4gICovCmRpZmYgLS1naXQgYS9iZmQvZWxmMzItbTY4aGMxeC5oIGIvYmZkL2VsZjMyLW02OGhjMXguaAppbmRleCA1OTY0MDIzLi5mNmIyMDAxIDEwMDY0NAotLS0gYS9iZmQvZWxmMzItbTY4aGMxeC5oCisrKyBiL2JmZC9lbGYzMi1tNjhoYzF4LmgKQEAgLTEsNSArMSw1IEBACiAvKiBNb3Rvcm9sYSA2OEhDMTEvNjhIQzEyLXNwZWNpZmljIHN1cHBvcnQgZm9yIDMyLWJpdCBFTEYKLSAgIENvcHlyaWdodCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBDb250cmlidXRlZCBieSBTdGVwaGFuZSBDYXJyZXogKHN0Y2FycmV6QG5lcmltLmZyKQogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCkBAIC0xNzgsNyArMTc4LDcgQEAKIAogYmZkX2Jvb2xlYW4gZWxmMzJfbTY4aGMxMV9hZGRfc3ltYm9sX2hvb2sKICAgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCi0gICBjb25zdCBFbGZfSW50ZXJuYWxfU3ltICpzeW0sIGNvbnN0IGNoYXIgKipuYW1lcCwKKyAgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bSwgY29uc3QgY2hhciAqKm5hbWVwLAogICAgZmxhZ3dvcmQgKmZsYWdzcCwgYXNlY3Rpb24gKipzZWNwLAogICAgYmZkX3ZtYSAqdmFscCk7CiAKZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1tNjhrLmMgYi9iZmQvZWxmMzItbTY4ay5jCmluZGV4IDFjN2ZlZDkuLjM5ODMyYmUgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1tNjhrLmMKKysrIGIvYmZkL2VsZjMyLW02OGsuYwpAQCAtMSw2ICsxLDYgQEAKIC8qIE1vdG9yb2xhIDY4ayBzZXJpZXMgc3VwcG9ydCBmb3IgMzItYml0IEVMRgotICAgQ29weXJpZ2h0IDE5OTMsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMKLSAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDE5OTMsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsCisgICAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCiAKQEAgLTUwOCw3ICs1MDgsNyBAQAogCQkgIGlmIChoLT5keW5pbmR4ID09IC0xCiAJCSAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQogCQkgICAgewotCQkgICAgICBpZiAoIWJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJCSAgICAgIGlmICghYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJCQlyZXR1cm4gRkFMU0U7CiAJCSAgICB9CiAKQEAgLTU4Niw3ICs1ODYsNyBAQAogCSAgaWYgKGgtPmR5bmluZHggPT0gLTEKIAkgICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkKIAkgICAgewotCSAgICAgIGlmICghYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgICAgICBpZiAoIWJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCQlyZXR1cm4gRkFMU0U7CiAJICAgIH0KIApAQCAtNzQ1LDE0ICs3NDUsMTQgQEAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgdGhlIEMrKyBvYmplY3QgdnRhYmxlIGhpZXJhcmNoeS4KIAkgICAgIFJlY29uc3RydWN0IGl0IGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KIAljYXNlIFJfNjhLX0dOVV9WVElOSEVSSVQ6Ci0JICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKKwkgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJICBicmVhazsKIAogCSAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB3aGljaCBDKysgdnRhYmxlIGVudHJpZXMgYXJlIGFjdHVhbGx5CiAJICAgICB1c2VkLiAgUmVjb3JkIGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KIAljYXNlIFJfNjhLX0dOVV9WVEVOVFJZOgotCSAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9hZGRlbmQpKQorCSAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9hZGRlbmQpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJICBicmVhazsKIApAQCAtOTcwLDcgKzk3MCw3IEBACiAgICAgICBpZiAoaC0+ZHluaW5keCA9PSAtMQogCSAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJewotCSAgaWYgKCEgYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogCkBAIC0xMDk5LDE3ICsxMDk5LDYgQEAKICAgcmV0dXJuIFRSVUU7CiB9CiAKLS8qIFRoaXMgaXMgdGhlIGNvbmRpdGlvbiB1bmRlciB3aGljaCBlbGZfbTY4a19maW5pc2hfZHluYW1pY19zeW1ib2wKLSAgIHdpbGwgYmUgY2FsbGVkIGZyb20gZWxmbGluay5oLiAgSWYgZWxmbGluay5oIGRvZXNuJ3QgY2FsbCBvdXIKLSAgIGZpbmlzaF9keW5hbWljX3N5bWJvbCByb3V0aW5lLCB3ZSdsbCBuZWVkIHRvIGRvIHNvbWV0aGluZyBhYm91dAotICAgaW5pdGlhbGl6aW5nIGFueSAucGx0IGFuZCAuZ290IGVudHJpZXMgaW4gZWxmX202OGtfcmVsb2NhdGVfc2VjdGlvbi4gICovCi0jZGVmaW5lIFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0woRFlOLCBTSEFSRUQsIEgpIFwKLSAgKChEWU4pCQkJCQkJCQlcCi0gICAmJiAoKFNIQVJFRCkJCQkJCQkJCVwKLSAgICAgICB8fCAoKEgpLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQlcCi0gICAmJiAoKEgpLT5keW5pbmR4ICE9IC0xCQkJCQkJXAotICAgICAgIHx8ICgoSCktPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpICE9IDApKQotCiAvKiBTZXQgdGhlIHNpemVzIG9mIHRoZSBkeW5hbWljIHNlY3Rpb25zLiAgKi8KIAogc3RhdGljIGJmZF9ib29sZWFuCkBAIC0xMjQ3LDcgKzEyMzYsNyBAQAogCSB0aGUgLmR5bmFtaWMgc2VjdGlvbi4gIFRoZSBEVF9ERUJVRyBlbnRyeSBpcyBmaWxsZWQgaW4gYnkgdGhlCiAJIGR5bmFtaWMgbGlua2VyIGFuZCB1c2VkIGJ5IHRoZSBkZWJ1Z2dlci4gICovCiAjZGVmaW5lIGFkZF9keW5hbWljX2VudHJ5KFRBRywgVkFMKSBcCi0gIGJmZF9lbGYzMl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgKGJmZF92bWEpIChUQUcpLCAoYmZkX3ZtYSkgKFZBTCkpCisgIF9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBUQUcsIFZBTCkKIAogICAgICAgaWYgKCFpbmZvLT5zaGFyZWQpCiAJewpAQCAtMTQxMCw3ICsxMzk5LDEwIEBACiAJewogCSAgYmZkX2Jvb2xlYW4gd2FybmVkOwogCi0JICBSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCAoaCwgc3ltX2hhc2hlcywgcl9zeW1uZHgsIHN5bXRhYl9oZHIsIHJlbG9jYXRpb24sIHNlYywgdW5yZXNvbHZlZF9yZWxvYywgaW5mbywgd2FybmVkKTsKKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoLCBzZWMsIHJlbG9jYXRpb24sCisJCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkKTsKIAl9CiAKICAgICAgIHN3aXRjaCAocl90eXBlKQpAQCAtMjIzOSw3ICsyMjMxLDcgQEAKIAkJCQkJX2JmZF9lbGZfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMKICNkZWZpbmUgYmZkX2VsZjMyX2JmZF9saW5rX2hhc2hfdGFibGVfY3JlYXRlIFwKIAkJCQkJZWxmX202OGtfbGlua19oYXNoX3RhYmxlX2NyZWF0ZQotI2RlZmluZSBiZmRfZWxmMzJfYmZkX2ZpbmFsX2xpbmsJX2JmZF9lbGYzMl9nY19jb21tb25fZmluYWxfbGluaworI2RlZmluZSBiZmRfZWxmMzJfYmZkX2ZpbmFsX2xpbmsJYmZkX2VsZl9nY19jb21tb25fZmluYWxfbGluawogCiAjZGVmaW5lIGVsZl9iYWNrZW5kX2NoZWNrX3JlbG9jcwllbGZfbTY4a19jaGVja19yZWxvY3MKICNkZWZpbmUgZWxmX2JhY2tlbmRfYWRqdXN0X2R5bmFtaWNfc3ltYm9sIFwKZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1tY29yZS5jIGIvYmZkL2VsZjMyLW1jb3JlLmMKaW5kZXggMGZjOTc2OC4uZTZhYTY2NiAxMDA2NDQKLS0tIGEvYmZkL2VsZjMyLW1jb3JlLmMKKysrIGIvYmZkL2VsZjMyLW1jb3JlLmMKQEAgLTEsNSArMSw1IEBACiAvKiBNb3Rvcm9sYSBNQ29yZSBzcGVjaWZpYyBzdXBwb3J0IGZvciAzMi1iaXQgRUxGCi0gICBDb3B5cmlnaHQgMTk5NCwgMTk5NSwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMworICAgQ29weXJpZ2h0IDE5OTQsIDE5OTUsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCkBAIC00NzIsMzAgKzQ3MiwxMiBAQAogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBoID0gc3ltX2hhc2hlcyBbcl9zeW1uZHggLSBzeW10YWJfaGRyLT5zaF9pbmZvXTsKLQkgIGlmICggICBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaykKLQkgICAgewotCSAgICAgIHNlYyA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKLQkgICAgICByZWxvY2F0aW9uID0gKGgtPnJvb3QudS5kZWYudmFsdWUKLQkJCSAgICArIHNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYQotCQkJICAgICsgc2VjLT5vdXRwdXRfb2Zmc2V0KTsKLQkgICAgfQotCSAgZWxzZSBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQotCSAgICByZWxvY2F0aW9uID0gMDsKLQkgIGVsc2UgaWYgKGluZm8tPnNoYXJlZAotCQkgICAmJiBFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpID09IFNUVl9ERUZBVUxUKQotCSAgICByZWxvY2F0aW9uID0gMDsKLQkgIGVsc2UKLQkgICAgewotCSAgICAgIGlmICghICgoKmluZm8tPmNhbGxiYWNrcy0+dW5kZWZpbmVkX3N5bWJvbCkKLQkJCShpbmZvLCBoLT5yb290LnJvb3Quc3RyaW5nLCBpbnB1dF9iZmQsCi0JCSAJIGlucHV0X3NlY3Rpb24sIHJlbC0+cl9vZmZzZXQsIFRSVUUpKSkKLQkJcmV0dXJuIEZBTFNFOworCSAgYmZkX2Jvb2xlYW4gdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkOwogCi0JICAgICAgcmV0ID0gRkFMU0U7Ci0JICAgICAgY29udGludWU7Ci0JICAgIH0KKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoLCBzZWMsIHJlbG9jYXRpb24sCisJCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkKTsKIAl9CiAKICAgICAgIHN3aXRjaCAocl90eXBlKQpAQCAtNjY1LDE0ICs2NDcsMTQgQEAKICAgICAgICAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB0aGUgQysrIG9iamVjdCB2dGFibGUgaGllcmFyY2h5LgogICAgICAgICAgICBSZWNvbnN0cnVjdCBpdCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAgICAgICAgIGNhc2UgUl9NQ09SRV9HTlVfVlRJTkhFUklUOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQorICAgICAgICAgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgd2hpY2ggQysrIHZ0YWJsZSBlbnRyaWVzIGFyZSBhY3R1YWxseQogICAgICAgICAgICB1c2VkLiAgUmVjb3JkIGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KICAgICAgICAgY2FzZSBSX01DT1JFX0dOVV9WVEVOVFJZOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1tc3A0MzAuYyBiL2JmZC9lbGYzMi1tc3A0MzAuYwppbmRleCAzMDZhNzk4Li5kZmUzM2JkIDEwMDY0NAotLS0gYS9iZmQvZWxmMzItbXNwNDMwLmMKKysrIGIvYmZkL2VsZjMyLW1zcDQzMC5jCkBAIC0xLDUgKzEsNSBAQAogLyogIE1TUDQzMC1zcGVjaWZpYyBzdXBwb3J0IGZvciAzMi1iaXQgRUxGCi0gICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgICBDb250cmlidXRlZCBieSBEbWl0cnkgRGlreSA8ZGl3aWxAbWFpbC5ydT4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEJGRCwgdGhlIEJpbmFyeSBGaWxlIERlc2NyaXB0b3IgbGlicmFyeS4KQEAgLTQ1NywzMyArNDU3LDEyIEBACiAJfQogICAgICAgZWxzZQogCXsKLQkgIGggPSBzeW1faGFzaGVzW3Jfc3ltbmR4IC0gc3ltdGFiX2hkci0+c2hfaW5mb107CisJICBiZmRfYm9vbGVhbiB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQ7CiAKLQkgIHdoaWxlIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9pbmRpcmVjdAotCQkgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfd2FybmluZykKLQkgICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOwotCi0JICBuYW1lID0gaC0+cm9vdC5yb290LnN0cmluZzsKLQotCSAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZmluZWQKLQkgICAgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKQotCSAgICB7Ci0JICAgICAgc2VjID0gaC0+cm9vdC51LmRlZi5zZWN0aW9uOwotCSAgICAgIHJlbG9jYXRpb24gPSAoaC0+cm9vdC51LmRlZi52YWx1ZQotCQkJICAgICsgc2VjLT5vdXRwdXRfc2VjdGlvbi0+dm1hICsgc2VjLT5vdXRwdXRfb2Zmc2V0KTsKLQkgICAgfQotCSAgZWxzZSBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQotCSAgICB7Ci0JICAgICAgcmVsb2NhdGlvbiA9IDA7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIGlmICghKCgqaW5mby0+Y2FsbGJhY2tzLT51bmRlZmluZWRfc3ltYm9sKQotCQkgICAgKGluZm8sIGgtPnJvb3Qucm9vdC5zdHJpbmcsIGlucHV0X2JmZCwKLQkJICAgICBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0LCBUUlVFKSkpCi0JCXJldHVybiBGQUxTRTsKLQkgICAgICByZWxvY2F0aW9uID0gMDsKLQkgICAgfQorCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHNlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCX0KIAogICAgICAgciA9IG1zcDQzMF9maW5hbF9saW5rX3JlbG9jYXRlIChob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLApkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLW9wZW5yaXNjLmMgYi9iZmQvZWxmMzItb3BlbnJpc2MuYwppbmRleCA2MmY4NmQ0Li5hZjFjMjIyIDEwMDY0NAotLS0gYS9iZmQvZWxmMzItb3BlbnJpc2MuYworKysgYi9iZmQvZWxmMzItb3BlbnJpc2MuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIE9wZW5SSVNDLXNwZWNpZmljIHN1cHBvcnQgZm9yIDMyLWJpdCBFTEYuCi0gICBDb3B5cmlnaHQgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgQ29udHJpYnV0ZWQgYnkgSm9oYW4gUnlkYmVyZywganJ5ZGJlcmdAb3BlbmNvcmVzLm9yZwogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCkBAIC0zODMsMzMgKzM4MywxMiBAQAogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBoID0gc3ltX2hhc2hlc1tyX3N5bW5keCAtIHN5bXRhYl9oZHItPnNoX2luZm9dOworCSAgYmZkX2Jvb2xlYW4gdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkOwogCi0JICB3aGlsZSAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKLQkJIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0JICAgIGggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKLQotCSAgbmFtZSA9IGgtPnJvb3Qucm9vdC5zdHJpbmc7Ci0KLQkgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaykKLQkgICAgewotCSAgICAgIHNlYyA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKLQkgICAgICByZWxvY2F0aW9uID0gKGgtPnJvb3QudS5kZWYudmFsdWUKLQkJCSAgICArIHNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYSArIHNlYy0+b3V0cHV0X29mZnNldCk7Ci0JICAgIH0KLQkgIGVsc2UgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmd2VhaykKLQkgICAgewotCSAgICAgIHJlbG9jYXRpb24gPSAwOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICBpZiAoISgoKmluZm8tPmNhbGxiYWNrcy0+dW5kZWZpbmVkX3N5bWJvbCkKLQkJICAgIChpbmZvLCBoLT5yb290LnJvb3Quc3RyaW5nLCBpbnB1dF9iZmQsCi0JCSAgICAgaW5wdXRfc2VjdGlvbiwgcmVsLT5yX29mZnNldCwgVFJVRSkpKQotCQlyZXR1cm4gRkFMU0U7Ci0JICAgICAgcmVsb2NhdGlvbiA9IDA7Ci0JICAgIH0KKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoLCBzZWMsIHJlbG9jYXRpb24sCisJCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkKTsKIAl9CiAKICAgICAgIHIgPSBvcGVucmlzY19maW5hbF9saW5rX3JlbG9jYXRlIChob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLApAQCAtNTU2LDE0ICs1MzUsMTQgQEAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgdGhlIEMrKyBvYmplY3QgdnRhYmxlIGhpZXJhcmNoeS4KIAkgICAgIFJlY29uc3RydWN0IGl0IGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KIAljYXNlIFJfT1BFTlJJU0NfR05VX1ZUSU5IRVJJVDoKLQkgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQorCSAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAkgIGJyZWFrOwogCiAJICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHdoaWNoIEMrKyB2dGFibGUgZW50cmllcyBhcmUgYWN0dWFsbHkKIAkgICAgIHVzZWQuICBSZWNvcmQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogCWNhc2UgUl9PUEVOUklTQ19HTlVfVlRFTlRSWToKLQkgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKwkgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLXBwYy5jIGIvYmZkL2VsZjMyLXBwYy5jCmluZGV4IDY4NDlkYTguLjRlYjA4YWQgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1wcGMuYworKysgYi9iZmQvZWxmMzItcHBjLmMKQEAgLTIzOTIsNyArMjM5Miw3IEBACiAgICAgICAvKiBNYWtlIHN1cmUgdGhpcyBzeW1ib2wgaXMgb3V0cHV0IGFzIGEgZHluYW1pYyBzeW1ib2wuICAqLwogICAgICAgaWYgKGgtPmR5bmluZHggPT0gLTEpCiAJewotCSAgaWYgKCEgX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAKQEAgLTI2ODUsNyArMjY4NSw3IEBACiAgICAgICBsc2VjdC0+c3ltX2hhc2ggPSBoOwogCiAgICAgICBpZiAoaW5mby0+c2hhcmVkCi0JICAmJiAhIF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgICYmICEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0yOTkzLDE3ICsyOTkzLDYgQEAKICAgcmV0dXJuIFRSVUU7CiB9CiAMCi0vKiBUaGlzIGlzIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggZmluaXNoX2R5bmFtaWNfc3ltYm9sIHdpbGwgYmUKLSAgIGNhbGxlZCBmcm9tIGVsZmxpbmsuaC4gIElmIGVsZmxpbmsuaCBkb2Vzbid0IGNhbGwgb3VyCi0gICBmaW5pc2hfZHluYW1pY19zeW1ib2wgcm91dGluZSwgd2UnbGwgbmVlZCB0byBkbyBzb21ldGhpbmcgYWJvdXQKLSAgIGluaXRpYWxpemluZyBhbnkgLnBsdCBhbmQgLmdvdCBlbnRyaWVzIGluIHJlbG9jYXRlX3NlY3Rpb24uICAqLwotI2RlZmluZSBXSUxMX0NBTExfRklOSVNIX0RZTkFNSUNfU1lNQk9MKERZTiwgU0hBUkVELCBIKSBcCi0gICgoRFlOKQkJCQkJCQkJXAotICAgJiYgKChTSEFSRUQpCQkJCQkJCQlcCi0gICAgICAgfHwgKChIKS0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkJXAotICAgJiYgKChIKS0+ZHluaW5keCAhPSAtMQkJCQkJCVwKLSAgICAgICB8fCAoKEgpLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSAhPSAwKSkKLQogLyogT2YgdGhvc2UgcmVsb2NzIHRoYXQgbWlnaHQgYmUgY29waWVkIGFzIGR5bmFtaWMgcmVsb2NzLCB0aGlzIG1hY3JvCiAgICBzZWxlY3RzIHRob3NlIHRoYXQgbXVzdCBiZSBjb3BpZWQgd2hlbiBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnksCiAgICBldmVuIHdoZW4gdGhlIHN5bWJvbCBpcyBsb2NhbC4gICovCkBAIC0zMDQyLDcgKzMwMzEsNyBAQAogICAgICAgaWYgKGgtPmR5bmluZHggPT0gLTEKIAkgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQogCXsKLQkgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIApAQCAtMzEwNSw3ICszMDk0LDcgQEAKICAgICAgIGlmIChlaC0+ZWxmLmR5bmluZHggPT0gLTEKIAkgICYmIChlaC0+ZWxmLmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJewotCSAgaWYgKCFiZmRfZWxmMzJfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sICZlaC0+ZWxmKSkKKwkgIGlmICghYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgJmVoLT5lbGYpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogCkBAIC0zMTk1LDcgKzMxODQsNyBAQAogCSAgJiYgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrCiAJICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkKIAl7Ci0JICBpZiAoISBiZmRfZWxmMzJfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAgICAgfQpAQCAtMzIxNCw3ICszMjAzLDcgQEAKIAkgIGlmIChoLT5keW5pbmR4ID09IC0xCiAJICAgICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJICAgIHsKLQkgICAgICBpZiAoISBiZmRfZWxmNjRfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgICAgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCQlyZXR1cm4gRkFMU0U7CiAJICAgIH0KIApAQCAtMzQ3MCw3ICszNDU5LDcgQEAKIAkgdGhlIC5keW5hbWljIHNlY3Rpb24uICBUaGUgRFRfREVCVUcgZW50cnkgaXMgZmlsbGVkIGluIGJ5IHRoZQogCSBkeW5hbWljIGxpbmtlciBhbmQgdXNlZCBieSB0aGUgZGVidWdnZXIuICAqLwogI2RlZmluZSBhZGRfZHluYW1pY19lbnRyeShUQUcsIFZBTCkgXAotICBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIChUQUcpLCAoVkFMKSkKKyAgX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIFRBRywgVkFMKQogCiAgICAgICBpZiAoaW5mby0+ZXhlY3V0YWJsZSkKIAl7CkBAIC0zODA2LDE0ICszNzk1LDE0IEBACiAJICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHRoZSBDKysgb2JqZWN0IHZ0YWJsZSBoaWVyYXJjaHkuCiAJICAgICBSZWNvbnN0cnVjdCBpdCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSX1BQQ19HTlVfVlRJTkhFUklUOgotCSAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisJICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgd2hpY2ggQysrIHZ0YWJsZSBlbnRyaWVzIGFyZSBhY3R1YWxseQogCSAgICAgdXNlZC4gIFJlY29yZCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSX1BQQ19HTlVfVlRFTlRSWToKLQkgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKwkgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKQEAgLTQzNzYsNyArNDM2NSw3IEBACiBzdGF0aWMgYmZkX2Jvb2xlYW4KIHBwY19lbGZfYWRkX3N5bWJvbF9ob29rIChiZmQgKmFiZmQsCiAJCQkgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCi0JCQkgY29uc3QgRWxmX0ludGVybmFsX1N5bSAqc3ltLAorCQkJIEVsZl9JbnRlcm5hbF9TeW0gKnN5bSwKIAkJCSBjb25zdCBjaGFyICoqbmFtZXAgQVRUUklCVVRFX1VOVVNFRCwKIAkJCSBmbGFnd29yZCAqZmxhZ3NwIEFUVFJJQlVURV9VTlVTRUQsCiAJCQkgYXNlY3Rpb24gKipzZWNwLApAQCAtNDcwMSwxMCArNDY5MCwxMCBAQAogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCAoaCwgc3ltX2hhc2hlcywgcl9zeW1uZHgsCi0JCQkJICAgc3ltdGFiX2hkciwgcmVsb2NhdGlvbiwgc2VjLAotCQkJCSAgIHVucmVzb2x2ZWRfcmVsb2MsIGluZm8sCi0JCQkJICAgd2FybmVkKTsKKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoLCBzZWMsIHJlbG9jYXRpb24sCisJCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkKTsKIAogCSAgc3ltX25hbWUgPSBoLT5yb290LnJvb3Quc3RyaW5nOwogCX0KZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1zMzkwLmMgYi9iZmQvZWxmMzItczM5MC5jCmluZGV4IDA3YmEyM2MuLjA3NGMxMDggMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1zMzkwLmMKKysrIGIvYmZkL2VsZjMyLXMzOTAuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIElCTSBTLzM5MC1zcGVjaWZpYyBzdXBwb3J0IGZvciAzMi1iaXQgRUxGCi0gICBDb3B5cmlnaHQgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgQ29udHJpYnV0ZWQgYnkgQ2FybCBCLiBQZWRlcnNlbiBhbmQgTWFydGluIFNjaHdpZGVmc2t5LgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCkBAIC0xMzQ1LDE0ICsxMzQ1LDE0IEBACiAJICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHRoZSBDKysgb2JqZWN0IHZ0YWJsZSBoaWVyYXJjaHkuCiAJICAgICBSZWNvbnN0cnVjdCBpdCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSXzM5MF9HTlVfVlRJTkhFUklUOgotCSAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisJICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgd2hpY2ggQysrIHZ0YWJsZSBlbnRyaWVzIGFyZSBhY3R1YWxseQogCSAgICAgdXNlZC4gIFJlY29yZCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSXzM5MF9HTlVfVlRFTlRSWToKLQkgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKwkgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKQEAgLTE3MTYsMTcgKzE3MTYsNiBAQAogICByZXR1cm4gVFJVRTsKIH0KIAotLyogVGhpcyBpcyB0aGUgY29uZGl0aW9uIHVuZGVyIHdoaWNoIGVsZl9zMzkwX2ZpbmlzaF9keW5hbWljX3N5bWJvbAotICAgd2lsbCBiZSBjYWxsZWQgZnJvbSBlbGZsaW5rLmguICBJZiBlbGZsaW5rLmggZG9lc24ndCBjYWxsIG91cgotICAgZmluaXNoX2R5bmFtaWNfc3ltYm9sIHJvdXRpbmUsIHdlJ2xsIG5lZWQgdG8gZG8gc29tZXRoaW5nIGFib3V0Ci0gICBpbml0aWFsaXppbmcgYW55IC5wbHQgYW5kIC5nb3QgZW50cmllcyBpbiBlbGZfczM5MF9yZWxvY2F0ZV9zZWN0aW9uLiAgKi8KLSNkZWZpbmUgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTChEWU4sIFNIQVJFRCwgSCkgXAotICAoKERZTikJCQkJCQkJCVwKLSAgICYmICgoU0hBUkVEKQkJCQkJCQkJXAotICAgICAgIHx8ICgoSCktPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCVwKLSAgICYmICgoSCktPmR5bmluZHggIT0gLTEJCQkJCQlcCi0gICAgICAgfHwgKChIKS0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgIT0gMCkpCi0KIC8qIEFsbG9jYXRlIHNwYWNlIGluIC5wbHQsIC5nb3QgYW5kIGFzc29jaWF0ZWQgcmVsb2Mgc2VjdGlvbnMgZm9yCiAgICBkeW5hbWljIHJlbG9jcy4gICovCiAKQEAgLTE3NjIsNyArMTc1MSw3IEBACiAgICAgICBpZiAoaC0+ZHluaW5keCA9PSAtMQogCSAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJewotCSAgaWYgKCEgYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogCkBAIC0xODQ1LDcgKzE4MzQsNyBAQAogICAgICAgaWYgKGgtPmR5bmluZHggPT0gLTEKIAkgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQogCXsKLQkgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIApAQCAtMTg4NCw5ICsxODczLDcgQEAKIAogICBpZiAoaW5mby0+c2hhcmVkKQogICAgIHsKLSAgICAgIGlmICgoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVIpICE9IDAKLQkgICYmICgoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgIT0gMAotCSAgICAgIHx8IGluZm8tPnN5bWJvbGljKSkKKyAgICAgIGlmIChTWU1CT0xfUkVGRVJFTkNFU19MT0NBTCAoaW5mbywgaCkpCiAJewogCSAgc3RydWN0IGVsZl9zMzkwX2R5bl9yZWxvY3MgKipwcDsKIApAQCAtMTkyNSw3ICsxOTEyLDcgQEAKIAkgIGlmIChoLT5keW5pbmR4ID09IC0xCiAJICAgICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJICAgIHsKLQkgICAgICBpZiAoISBiZmRfZWxmMzJfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgICAgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCQlyZXR1cm4gRkFMU0U7CiAJICAgIH0KIApAQCAtMjE1OSw3ICsyMTQ2LDcgQEAKIAkgdGhlIC5keW5hbWljIHNlY3Rpb24uICBUaGUgRFRfREVCVUcgZW50cnkgaXMgZmlsbGVkIGluIGJ5IHRoZQogCSBkeW5hbWljIGxpbmtlciBhbmQgdXNlZCBieSB0aGUgZGVidWdnZXIuICAqLwogI2RlZmluZSBhZGRfZHluYW1pY19lbnRyeShUQUcsIFZBTCkgXAotICBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIChiZmRfdm1hKSAoVEFHKSwgKGJmZF92bWEpIChWQUwpKQorICBfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgVEFHLCBWQUwpCiAKICAgICAgIGlmIChpbmZvLT5leGVjdXRhYmxlKQogCXsKQEAgLTIzMjQsMTAgKzIzMTEsMTAgQEAKIAl7CiAJICBiZmRfYm9vbGVhbiB3YXJuZWQgQVRUUklCVVRFX1VOVVNFRDsKIAotCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGgsIHN5bV9oYXNoZXMsIHJfc3ltbmR4LAotCQkJCSAgIHN5bXRhYl9oZHIsIHJlbG9jYXRpb24sIHNlYywKLQkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCBpbmZvLAotCQkJCSAgIHdhcm5lZCk7CisJICBSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCAoaW5mbywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLCByZWwsCisJCQkJICAgcl9zeW1uZHgsIHN5bXRhYl9oZHIsIHN5bV9oYXNoZXMsCisJCQkJICAgaCwgc2VjLCByZWxvY2F0aW9uLAorCQkJCSAgIHVucmVzb2x2ZWRfcmVsb2MsIHdhcm5lZCk7CiAJfQogCiAgICAgICBzd2l0Y2ggKHJfdHlwZSkKQEAgLTI1NjIsMTAgKzI1NDksNyBAQAogCQkgICAgJiYgcl90eXBlICE9IFJfMzkwX1BDMzJEQkwKIAkJICAgICYmIHJfdHlwZSAhPSBSXzM5MF9QQzMyKQogCQkgICB8fCAoaCAhPSBOVUxMCi0JCSAgICAgICAmJiBoLT5keW5pbmR4ICE9IC0xCi0JCSAgICAgICAmJiAoISBpbmZvLT5zeW1ib2xpYwotCQkJICAgfHwgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MKLQkJCSAgICAgICAmIEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVIpID09IDApKSkpCisJCSAgICAgICAmJiAhU1lNQk9MX1JFRkVSRU5DRVNfTE9DQUwgKGluZm8sIGgpKSkpCiAJICAgICAgfHwgKEVMSU1JTkFURV9DT1BZX1JFTE9DUwogCQkgICYmICFpbmZvLT5zaGFyZWQKIAkJICAmJiBoICE9IE5VTEwKZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1zaC5jIGIvYmZkL2VsZjMyLXNoLmMKaW5kZXggYzhhMDkxZC4uMTA3MDk1NyAxMDA2NDQKLS0tIGEvYmZkL2VsZjMyLXNoLmMKKysrIGIvYmZkL2VsZjMyLXNoLmMKQEAgLTEsNSArMSw1IEBACiAvKiBSZW5lc2FzIC8gU3VwZXJIIFNIIHNwZWNpZmljIHN1cHBvcnQgZm9yIDMyLWJpdCBFTEYKLSAgIENvcHlyaWdodCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzCisgICBDb3B5cmlnaHQgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNAogICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBDb250cmlidXRlZCBieSBJYW4gTGFuY2UgVGF5bG9yLCBDeWdudXMgU3VwcG9ydC4KIApAQCAtMzkyNCw3ICszOTI0LDcgQEAKICAgICAgIGgtPnR5cGUgPSBTVFRfT0JKRUNUOwogCiAgICAgICBpZiAoaW5mby0+c2hhcmVkCi0JICAmJiAhIF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgICYmICEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJcmV0dXJuIEZBTFNFOwogICAgIH0KIApAQCAtNDE2NywxNyArNDE2Nyw2IEBACiAgIHJldHVybiBUUlVFOwogfQogCi0vKiBUaGlzIGlzIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggc2hfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbAotICAgd2lsbCBiZSBjYWxsZWQgZnJvbSBlbGZsaW5rLmguICBJZiBlbGZsaW5rLmggZG9lc24ndCBjYWxsIG91cgotICAgZmluaXNoX2R5bmFtaWNfc3ltYm9sIHJvdXRpbmUsIHdlJ2xsIG5lZWQgdG8gZG8gc29tZXRoaW5nIGFib3V0Ci0gICBpbml0aWFsaXppbmcgYW55IC5wbHQgYW5kIC5nb3QgZW50cmllcyBpbiBzaF9lbGZfcmVsb2NhdGVfc2VjdGlvbi4gICovCi0jZGVmaW5lIFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0woRFlOLCBTSEFSRUQsIEgpIFwKLSAgKChEWU4pCQkJCQkJCQlcCi0gICAmJiAoKFNIQVJFRCkJCQkJCQkJCVwKLSAgICAgICB8fCAoKEgpLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQlcCi0gICAmJiAoKEgpLT5keW5pbmR4ICE9IC0xCQkJCQkJXAotICAgICAgIHx8ICgoSCktPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpICE9IDApKQotCiAvKiBBbGxvY2F0ZSBzcGFjZSBpbiAucGx0LCAuZ290IGFuZCBhc3NvY2lhdGVkIHJlbG9jIHNlY3Rpb25zIGZvcgogICAgZHluYW1pYyByZWxvY3MuICAqLwogCkBAIC00MjIzLDcgKzQyMTIsNyBAQAogICAgICAgaWYgKGgtPmR5bmluZHggPT0gLTEKIAkgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQogCXsKLQkgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIApAQCAtNDI4NCw3ICs0MjczLDcgQEAKICAgICAgIGlmIChoLT5keW5pbmR4ID09IC0xCiAJICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkKIAl7Ci0JICBpZiAoISBiZmRfZWxmMzJfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAKQEAgLTQzMjIsNyArNDMxMSw3IEBACiAgICAgICBpZiAoaC0+ZHluaW5keCA9PSAtMQogCSAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJewotCSAgaWYgKCEgYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogCkBAIC00Mzg3LDcgKzQzNzYsNyBAQAogCSAgaWYgKGgtPmR5bmluZHggPT0gLTEKIAkgICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkKIAkgICAgewotCSAgICAgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICAgICAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJCXJldHVybiBGQUxTRTsKIAkgICAgfQogCkBAIC00NjIwLDcgKzQ2MDksNyBAQAogCSB0aGUgLmR5bmFtaWMgc2VjdGlvbi4gIFRoZSBEVF9ERUJVRyBlbnRyeSBpcyBmaWxsZWQgaW4gYnkgdGhlCiAJIGR5bmFtaWMgbGlua2VyIGFuZCB1c2VkIGJ5IHRoZSBkZWJ1Z2dlci4gICovCiAjZGVmaW5lIGFkZF9keW5hbWljX2VudHJ5KFRBRywgVkFMKSBcCi0gIGJmZF9lbGYzMl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgKGJmZF92bWEpIChUQUcpLCAoYmZkX3ZtYSkgKFZBTCkpCisgIF9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBUQUcsIFZBTCkKIAogICAgICAgaWYgKGluZm8tPmV4ZWN1dGFibGUpCiAJewpAQCAtNDkzOCw4ICs0OTI3LDcgQEAKIAkgICAgfQogCSAgZWxzZSBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQogCSAgICByZWxvY2F0aW9uID0gMDsKLQkgIGVsc2UgaWYgKCEgaW5mby0+ZXhlY3V0YWJsZQotCQkgICAmJiBpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9JR05PUkUKKwkgIGVsc2UgaWYgKGluZm8tPnVucmVzb2x2ZWRfc3ltc19pbl9vYmplY3RzID09IFJNX0lHTk9SRQogCQkgICAmJiBFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpID09IFNUVl9ERUZBVUxUKQogCSAgICByZWxvY2F0aW9uID0gMDsKIAkgIGVsc2UKQEAgLTQ5NDcsOCArNDkzNSw3IEBACiAJICAgICAgaWYgKCEgaW5mby0+Y2FsbGJhY2tzLT51bmRlZmluZWRfc3ltYm9sCiAJCSAgKGluZm8sIGgtPnJvb3Qucm9vdC5zdHJpbmcsIGlucHV0X2JmZCwKIAkJICAgaW5wdXRfc2VjdGlvbiwgcmVsLT5yX29mZnNldCwKLQkJICAgKChpbmZvLT5zaGFyZWQgJiYgaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX3NoYXJlZF9saWJzID09IFJNX0dFTkVSQVRFX0VSUk9SKQotCQkgICAgfHwgKCFpbmZvLT5zaGFyZWQgJiYgaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMgPT0gUk1fR0VORVJBVEVfRVJST1IpCisJCSAgIChpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9HRU5FUkFURV9FUlJPUgogCQkgICAgfHwgRUxGX1NUX1ZJU0lCSUxJVFkgKGgtPm90aGVyKSkpKQogCQlyZXR1cm4gRkFMU0U7CiAJICAgICAgcmVsb2NhdGlvbiA9IDA7CkBAIC02NDkyLDE0ICs2NDc5LDE0IEBACiAJICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHRoZSBDKysgb2JqZWN0IHZ0YWJsZSBoaWVyYXJjaHkuCiAJICAgICBSZWNvbnN0cnVjdCBpdCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSX1NIX0dOVV9WVElOSEVSSVQ6Ci0JICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKKwkgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJICBicmVhazsKIAogCSAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB3aGljaCBDKysgdnRhYmxlIGVudHJpZXMgYXJlIGFjdHVhbGx5CiAJICAgICB1c2VkLiAgUmVjb3JkIGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KIAljYXNlIFJfU0hfR05VX1ZURU5UUlk6Ci0JICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCisJICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAkgIGJyZWFrOwogCkBAIC02ODc2LDYgKzY4NjMsOSBAQAogICAgIGNhc2UgRUZfU0g0QUxfRFNQOgogICAgICAgYmZkX2RlZmF1bHRfc2V0X2FyY2hfbWFjaCAoYWJmZCwgYmZkX2FyY2hfc2gsIGJmZF9tYWNoX3NoNGFsX2RzcCk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIEVGX1NINF9OT01NVV9OT0ZQVToKKyAgICAgIGJmZF9kZWZhdWx0X3NldF9hcmNoX21hY2ggKGFiZmQsIGJmZF9hcmNoX3NoLCBiZmRfbWFjaF9zaDRfbm9tbXVfbm9mcHUpOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CmRpZmYgLS1naXQgYS9iZmQvZWxmMzItc2g2NC5jIGIvYmZkL2VsZjMyLXNoNjQuYwppbmRleCBlYWM0NDRhLi5mMDEzZTZmIDEwMDY0NAotLS0gYS9iZmQvZWxmMzItc2g2NC5jCisrKyBiL2JmZC9lbGYzMi1zaDY0LmMKQEAgLTEsNSArMSw1IEBACiAvKiBTdXBlckggU0g2NC1zcGVjaWZpYyBzdXBwb3J0IGZvciAzMi1iaXQgRUxGCi0gICBDb3B5cmlnaHQgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCiAKQEAgLTU2LDcgKzU2LDcgQEAKIHN0YXRpYyBpbnQgc2g2NF9lbGZfZ2V0X3N5bWJvbF90eXBlCiAgIChFbGZfSW50ZXJuYWxfU3ltICosIGludCk7CiBzdGF0aWMgYmZkX2Jvb2xlYW4gc2g2NF9lbGZfYWRkX3N5bWJvbF9ob29rCi0gIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgY29uc3QgRWxmX0ludGVybmFsX1N5bSAqLCBjb25zdCBjaGFyICoqLAorICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIEVsZl9JbnRlcm5hbF9TeW0gKiwgY29uc3QgY2hhciAqKiwKICAgIGZsYWd3b3JkICosIGFzZWN0aW9uICoqLCBiZmRfdm1hICopOwogc3RhdGljIGJmZF9ib29sZWFuIHNoNjRfZWxmX2xpbmtfb3V0cHV0X3N5bWJvbF9ob29rCiAgIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBjb25zdCBjaGFyICosIEVsZl9JbnRlcm5hbF9TeW0gKiwgYXNlY3Rpb24gKiwKQEAgLTM3NCw3ICszNzQsNyBAQAogCiBzdGF0aWMgYmZkX2Jvb2xlYW4KIHNoNjRfZWxmX2FkZF9zeW1ib2xfaG9vayAoYmZkICphYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKLQkJCSAgY29uc3QgRWxmX0ludGVybmFsX1N5bSAqc3ltLCBjb25zdCBjaGFyICoqbmFtZXAsCisJCQkgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bSwgY29uc3QgY2hhciAqKm5hbWVwLAogCQkJICBmbGFnd29yZCAqZmxhZ3NwIEFUVFJJQlVURV9VTlVTRUQsCiAJCQkgIGFzZWN0aW9uICoqc2VjcCwgYmZkX3ZtYSAqdmFscCkKIHsKZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1zcGFyYy5jIGIvYmZkL2VsZjMyLXNwYXJjLmMKaW5kZXggYzIwZTQwMy4uMzAxNjY1MiAxMDA2NDQKLS0tIGEvYmZkL2VsZjMyLXNwYXJjLmMKKysrIGIvYmZkL2VsZjMyLXNwYXJjLmMKQEAgLTEsNiArMSw2IEBACiAvKiBTUEFSQy1zcGVjaWZpYyBzdXBwb3J0IGZvciAzMi1iaXQgRUxGCiAgICBDb3B5cmlnaHQgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKLSAgIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCiAKQEAgLTEyNjcsMTIgKzEyNjcsMTIgQEAKIAkgIGJyZWFrOwogCiAJY2FzZSBSX1NQQVJDX0dOVV9WVElOSEVSSVQ6Ci0JICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKKwkgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJICBicmVhazsKIAogCWNhc2UgUl9TUEFSQ19HTlVfVlRFTlRSWToKLQkgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKwkgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKQEAgLTE1OTIsMTcgKzE1OTIsNiBAQAogICByZXR1cm4gVFJVRTsKIH0KIAotLyogVGhpcyBpcyB0aGUgY29uZGl0aW9uIHVuZGVyIHdoaWNoIGZpbmlzaF9keW5hbWljX3N5bWJvbCB3aWxsIGJlIGNhbGxlZAotICAgZnJvbSBlbGZsaW5rLmguICBJZiBlbGZsaW5rLmggZG9lc24ndCBjYWxsIG91ciBmaW5pc2hfZHluYW1pY19zeW1ib2wKLSAgIHJvdXRpbmUsIHdlJ2xsIG5lZWQgdG8gZG8gc29tZXRoaW5nIGFib3V0IGluaXRpYWxpemluZyBhbnkgLnBsdCBhbmQgLmdvdAotICAgZW50cmllcyBpbiByZWxvY2F0ZV9zZWN0aW9uLiAgKi8KLSNkZWZpbmUgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTChEWU4sIElORk8sIEgpCQkJXAotICAoKERZTikJCQkJCQkJCVwKLSAgICYmICgoSU5GTyktPnNoYXJlZAkJCQkJCQlcCi0gICAgICAgfHwgKChIKS0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkJXAotICAgJiYgKChIKS0+ZHluaW5keCAhPSAtMQkJCQkJCVwKLSAgICAgICB8fCAoKEgpLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSAhPSAwKSkKLQogLyogQWxsb2NhdGUgc3BhY2UgaW4gLnBsdCwgLmdvdCBhbmQgYXNzb2NpYXRlZCByZWxvYyBzZWN0aW9ucyBmb3IKICAgIGR5bmFtaWMgcmVsb2NzLiAgKi8KIApAQCAtMTYzNiwxMSArMTYyNSwxMSBAQAogICAgICAgaWYgKGgtPmR5bmluZHggPT0gLTEKIAkgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQogCXsKLQkgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIAotICAgICAgaWYgKFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wgKDEsIGluZm8sIGgpKQorICAgICAgaWYgKFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wgKDEsIGluZm8tPnNoYXJlZCwgaCkpCiAJewogCSAgYXNlY3Rpb24gKnMgPSBodGFiLT5zcGx0OwogCkBAIC0xNzA1LDcgKzE2OTQsNyBAQAogICAgICAgaWYgKGgtPmR5bmluZHggPT0gLTEKIAkgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQogCXsKLQkgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIApAQCAtMTcyNCw3ICsxNzEzLDcgQEAKIAlodGFiLT5zcmVsZ290LT5fcmF3X3NpemUgKz0gc2l6ZW9mIChFbGYzMl9FeHRlcm5hbF9SZWxhKTsKICAgICAgIGVsc2UgaWYgKHRsc190eXBlID09IEdPVF9UTFNfR0QpCiAJaHRhYi0+c3JlbGdvdC0+X3Jhd19zaXplICs9IDIgKiBzaXplb2YgKEVsZjMyX0V4dGVybmFsX1JlbGEpOwotICAgICAgZWxzZSBpZiAoV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTCAoZHluLCBpbmZvLCBoKSkKKyAgICAgIGVsc2UgaWYgKFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wgKGR5biwgaW5mby0+c2hhcmVkLCBoKSkKIAlodGFiLT5zcmVsZ290LT5fcmF3X3NpemUgKz0gc2l6ZW9mIChFbGYzMl9FeHRlcm5hbF9SZWxhKTsKICAgICB9CiAgIGVsc2UKQEAgLTE3NzcsNyArMTc2Niw3IEBACiAJICBpZiAoaC0+ZHluaW5keCA9PSAtMQogCSAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQogCSAgICB7Ci0JICAgICAgaWYgKCEgYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgICAgICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkJcmV0dXJuIEZBTFNFOwogCSAgICB9CiAKQEAgLTIwMjcsNyArMjAxNiw3IEBACiAJIHRoZSAuZHluYW1pYyBzZWN0aW9uLiAgVGhlIERUX0RFQlVHIGVudHJ5IGlzIGZpbGxlZCBpbiBieSB0aGUKIAkgZHluYW1pYyBsaW5rZXIgYW5kIHVzZWQgYnkgdGhlIGRlYnVnZ2VyLiAgKi8KICNkZWZpbmUgYWRkX2R5bmFtaWNfZW50cnkoVEFHLCBWQUwpIFwKLSAgYmZkX2VsZjMyX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCAoYmZkX3ZtYSkgKFRBRyksIChiZmRfdm1hKSAoVkFMKSkKKyAgX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIFRBRywgVkFMKQogCiAgICAgICBpZiAoaW5mby0+ZXhlY3V0YWJsZSkKIAl7CkBAIC0yMjE1LDEwICsyMjA0LDEwIEBACiAJewogCSAgYmZkX2Jvb2xlYW4gd2FybmVkIEFUVFJJQlVURV9VTlVTRUQ7CiAKLQkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChoLCBzeW1faGFzaGVzLCByX3N5bW5keCwKLQkJCQkgICBzeW10YWJfaGRyLCByZWxvY2F0aW9uLCBzZWMsCi0JCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgaW5mbywKLQkJCQkgICB3YXJuZWQpOworCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHNlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCX0KIAogICAgICAgc3dpdGNoIChyX3R5cGUpCkBAIC0yMjM5LDcgKzIyMjgsNyBAQAogCSAgICAgIEJGRF9BU1NFUlQgKG9mZiAhPSAoYmZkX3ZtYSkgLTEpOwogCSAgICAgIGR5biA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluYW1pY19zZWN0aW9uc19jcmVhdGVkOwogCi0JICAgICAgaWYgKCEgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTCAoZHluLCBpbmZvLCBoKQorCSAgICAgIGlmICghIFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wgKGR5biwgaW5mby0+c2hhcmVkLCBoKQogCQkgIHx8IChpbmZvLT5zaGFyZWQKIAkJICAgICAgJiYgKGluZm8tPnN5bWJvbGljCiAJCQkgIHx8IGgtPmR5bmluZHggPT0gLTEKQEAgLTMyODMsOCArMzI3Miw3IEBACiAJCSAgICAgIHNwbHQtPmNvbnRlbnRzICsgc3BsdC0+X3Jhd19zaXplIC0gNCk7CiAJfQogCi0gICAgICBlbGZfc2VjdGlvbl9kYXRhIChzcGx0LT5vdXRwdXRfc2VjdGlvbiktPnRoaXNfaGRyLnNoX2VudHNpemUgPQotCVBMVF9FTlRSWV9TSVpFOworICAgICAgZWxmX3NlY3Rpb25fZGF0YSAoc3BsdC0+b3V0cHV0X3NlY3Rpb24pLT50aGlzX2hkci5zaF9lbnRzaXplID0gMDsKICAgICB9CiAKICAgLyogU2V0IHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgZ2xvYmFsIG9mZnNldCB0YWJsZSB0byB0aGUgYWRkcmVzcyBvZgpkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLXY4NTAuYyBiL2JmZC9lbGYzMi12ODUwLmMKaW5kZXggNDViYjRmNi4uYjlkY2YzYyAxMDA2NDQKLS0tIGEvYmZkL2VsZjMyLXY4NTAuYworKysgYi9iZmQvZWxmMzItdjg1MC5jCkBAIC0xLDUgKzEsNSBAQAogLyogVjg1MC1zcGVjaWZpYyBzdXBwb3J0IGZvciAzMi1iaXQgRUxGCi0gICBDb3B5cmlnaHQgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMworICAgQ29weXJpZ2h0IDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCkBAIC03Myw3ICs3Myw3IEBACiBzdGF0aWMgdm9pZCB2ODUwX2VsZl9zeW1ib2xfcHJvY2Vzc2luZwogICBQQVJBTVMgKChiZmQgKiwgYXN5bWJvbCAqKSk7CiBzdGF0aWMgYmZkX2Jvb2xlYW4gdjg1MF9lbGZfYWRkX3N5bWJvbF9ob29rCi0gIFBBUkFNUyAoKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBjb25zdCBFbGZfSW50ZXJuYWxfU3ltICosCisgIFBBUkFNUyAoKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBFbGZfSW50ZXJuYWxfU3ltICosCiAJICAgY29uc3QgY2hhciAqKiwgZmxhZ3dvcmQgKiwgYXNlY3Rpb24gKiosIGJmZF92bWEgKikpOwogc3RhdGljIGJmZF9ib29sZWFuIHY4NTBfZWxmX2xpbmtfb3V0cHV0X3N5bWJvbF9ob29rCiAgIFBBUkFNUyAoKHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNvbnN0IGNoYXIgKiwgRWxmX0ludGVybmFsX1N5bSAqLApAQCAtNjk5LDE0ICs2OTksMTQgQEAKICAgICAgICAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB0aGUgQysrIG9iamVjdCB2dGFibGUgaGllcmFyY2h5LgogICAgICAgICAgICBSZWNvbnN0cnVjdCBpdCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAgICAgICAgIGNhc2UgUl9WODUwX0dOVV9WVElOSEVSSVQ6Ci0gICAgICAgICAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisgICAgICAgICAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB3aGljaCBDKysgdnRhYmxlIGVudHJpZXMKIAkgICBhcmUgYWN0dWFsbHkgdXNlZC4gIFJlY29yZCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAgICAgICAgIGNhc2UgUl9WODUwX0dOVV9WVEVOVFJZOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAKQEAgLTE2OTYsNDMgKzE2OTYsMTIgQEAKIAl9CiAgICAgICBlbHNlCiAJewotCSAgaCA9IHN5bV9oYXNoZXNbcl9zeW1uZHggLSBzeW10YWJfaGRyLT5zaF9pbmZvXTsKKwkgIGJmZF9ib29sZWFuIHVucmVzb2x2ZWRfcmVsb2MsIHdhcm5lZDsKIAotCSAgd2hpbGUgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2luZGlyZWN0Ci0JCSB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQotCSAgICBoID0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIGgtPnJvb3QudS5pLmxpbms7Ci0KLQkgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaykKLQkgICAgewotCSAgICAgIHNlYyA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKLQkgICAgICByZWxvY2F0aW9uID0gKGgtPnJvb3QudS5kZWYudmFsdWUKLQkJCSAgICArIHNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYQotCQkJICAgICsgc2VjLT5vdXRwdXRfb2Zmc2V0KTsKLSNpZiAwCi0JICAgICAgZnByaW50ZiAoc3RkZXJyLCAiZGVmaW5lZDogc2VjOiAlcywgbmFtZTogJXMsIHZhbHVlOiAleCArICV4ICsgJXggZ2l2ZXM6ICV4XG4iLAotCQkgICAgICAgc2VjLT5uYW1lLCBoLT5yb290LnJvb3Quc3RyaW5nLCBoLT5yb290LnUuZGVmLnZhbHVlLCBzZWMtPm91dHB1dF9zZWN0aW9uLT52bWEsIHNlYy0+b3V0cHV0X29mZnNldCwgcmVsb2NhdGlvbik7Ci0jZW5kaWYKLQkgICAgfQotCSAgZWxzZSBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQotCSAgICB7Ci0jaWYgMAotCSAgICAgIGZwcmludGYgKHN0ZGVyciwgInVuZGVmaW5lZDogc2VjOiAlcywgbmFtZTogJXNcbiIsCi0JCSAgICAgICBzZWMtPm5hbWUsIGgtPnJvb3Qucm9vdC5zdHJpbmcpOwotI2VuZGlmCi0JICAgICAgcmVsb2NhdGlvbiA9IDA7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIGlmICghICgoKmluZm8tPmNhbGxiYWNrcy0+dW5kZWZpbmVkX3N5bWJvbCkKLQkJICAgICAoaW5mbywgaC0+cm9vdC5yb290LnN0cmluZywgaW5wdXRfYmZkLAotCQkgICAgICBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0LCBUUlVFKSkpCi0JCXJldHVybiBGQUxTRTsKLSNpZiAwCi0JICAgICAgZnByaW50ZiAoc3RkZXJyLCAidW5rbm93bjogbmFtZTogJXNcbiIsIGgtPnJvb3Qucm9vdC5zdHJpbmcpOwotI2VuZGlmCi0JICAgICAgcmVsb2NhdGlvbiA9IDA7Ci0JICAgIH0KKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoLCBzZWMsIHJlbG9jYXRpb24sCisJCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkKTsKIAl9CiAKICAgICAgIC8qIEZJWE1FOiBXZSBzaG91bGQgdXNlIHRoZSBhZGRlbmQsIGJ1dCB0aGUgQ09GRiByZWxvY2F0aW9ucyBkb24ndC4gICovCkBAIC0yMTU1LDcgKzIxMjQsNyBAQAogdjg1MF9lbGZfYWRkX3N5bWJvbF9ob29rIChhYmZkLCBpbmZvLCBzeW0sIG5hbWVwLCBmbGFnc3AsIHNlY3AsIHZhbHApCiAgICAgIGJmZCAqYWJmZDsKICAgICAgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8gQVRUUklCVVRFX1VOVVNFRDsKLSAgICAgY29uc3QgRWxmX0ludGVybmFsX1N5bSAqc3ltOworICAgICBFbGZfSW50ZXJuYWxfU3ltICpzeW07CiAgICAgIGNvbnN0IGNoYXIgKipuYW1lcCBBVFRSSUJVVEVfVU5VU0VEOwogICAgICBmbGFnd29yZCAqZmxhZ3NwIEFUVFJJQlVURV9VTlVTRUQ7CiAgICAgIGFzZWN0aW9uICoqc2VjcDsKZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi12YXguYyBiL2JmZC9lbGYzMi12YXguYwppbmRleCBlMDg1ZTM1Li44Y2U0Njc4IDEwMDY0NAotLS0gYS9iZmQvZWxmMzItdmF4LmMKKysrIGIvYmZkL2VsZjMyLXZheC5jCkBAIC0xLDYgKzEsNiBAQAogLyogVkFYIHNlcmllcyBzdXBwb3J0IGZvciAzMi1iaXQgRUxGCi0gICBDb3B5cmlnaHQgMTk5MywgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMwotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb3B5cmlnaHQgMTk5MywgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywKKyAgIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBDb250cmlidXRlZCBieSBNYXR0IFRob21hcyA8bWF0dEAzYW0tc29mdHdhcmUuY29tPi4KIAogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgQkZELCB0aGUgQmluYXJ5IEZpbGUgRGVzY3JpcHRvciBsaWJyYXJ5LgpAQCAtODIxLDE0ICs4MjEsMTQgQEAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgdGhlIEMrKyBvYmplY3QgdnRhYmxlIGhpZXJhcmNoeS4KIAkgICAgIFJlY29uc3RydWN0IGl0IGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KIAljYXNlIFJfVkFYX0dOVV9WVElOSEVSSVQ6Ci0JICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKKwkgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJICBicmVhazsKIAogCSAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB3aGljaCBDKysgdnRhYmxlIGVudHJpZXMgYXJlIGFjdHVhbGx5CiAJICAgICB1c2VkLiAgUmVjb3JkIGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KIAljYXNlIFJfVkFYX0dOVV9WVEVOVFJZOgotCSAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9hZGRlbmQpKQorCSAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9hZGRlbmQpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJICBicmVhazsKIApAQCAtMTAwNiw3ICsxMDA2LDcgQEAKICAgICAgIC8qIE1ha2Ugc3VyZSB0aGlzIHN5bWJvbCBpcyBvdXRwdXQgYXMgYSBkeW5hbWljIHN5bWJvbC4gICovCiAgICAgICBpZiAoaC0+ZHluaW5keCA9PSAtMSkKIAl7Ci0JICBpZiAoISBiZmRfZWxmMzJfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAKQEAgLTEyOTcsNyArMTI5Nyw3IEBACiAJIHRoZSAuZHluYW1pYyBzZWN0aW9uLiAgVGhlIERUX0RFQlVHIGVudHJ5IGlzIGZpbGxlZCBpbiBieSB0aGUKIAkgZHluYW1pYyBsaW5rZXIgYW5kIHVzZWQgYnkgdGhlIGRlYnVnZ2VyLiAgKi8KICNkZWZpbmUgYWRkX2R5bmFtaWNfZW50cnkoVEFHLCBWQUwpIFwKLSAgYmZkX2VsZjMyX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCAoYmZkX3ZtYSkgKFRBRyksIChiZmRfdm1hKSAoVkFMKSkKKyAgX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIFRBRywgVkFMKQogCiAgICAgICBpZiAoIWluZm8tPnNoYXJlZCkKIAl7CkBAIC0xNDAwLDcgKzE0MDAsNyBAQAogICAgICAgLyogTWFrZSBzdXJlIHRoaXMgc3ltYm9sIGlzIG91dHB1dCBhcyBhIGR5bmFtaWMgc3ltYm9sLiAgKi8KICAgICAgIGlmIChoLT5keW5pbmR4ID09IC0xKQogCXsKLQkgIGlmICghYmZkX2VsZjMyX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgIGlmICghYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAKQEAgLTE0ODksMTAgKzE0ODksMTAgQEAKIAkgIGJmZF9ib29sZWFuIHVucmVzb2x2ZWRfcmVsb2M7CiAJICBiZmRfYm9vbGVhbiB3YXJuZWQ7CiAKLQkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChoLCBzeW1faGFzaGVzLCByX3N5bW5keCwKLQkJCQkgICBzeW10YWJfaGRyLCByZWxvY2F0aW9uLCBzZWMsCi0JCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgaW5mbywKLQkJCQkgICB3YXJuZWQpOworCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHNlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCSAgIAogCSAgaWYgKChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCiAJICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaykKQEAgLTIxMzMsNyArMjEzMyw3IEBACiAJCQkJCV9iZmRfZWxmX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zCiAjZGVmaW5lIGJmZF9lbGYzMl9iZmRfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSBcCiAJCQkJCWVsZl92YXhfbGlua19oYXNoX3RhYmxlX2NyZWF0ZQotI2RlZmluZSBiZmRfZWxmMzJfYmZkX2ZpbmFsX2xpbmsJX2JmZF9lbGYzMl9nY19jb21tb25fZmluYWxfbGluaworI2RlZmluZSBiZmRfZWxmMzJfYmZkX2ZpbmFsX2xpbmsJYmZkX2VsZl9nY19jb21tb25fZmluYWxfbGluawogCiAjZGVmaW5lIGVsZl9iYWNrZW5kX2NoZWNrX3JlbG9jcwllbGZfdmF4X2NoZWNrX3JlbG9jcwogI2RlZmluZSBlbGZfYmFja2VuZF9hZGp1c3RfZHluYW1pY19zeW1ib2wgXApkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLXhzdG9ybXkxNi5jIGIvYmZkL2VsZjMyLXhzdG9ybXkxNi5jCmluZGV4IDEzNzdmZjIuLmJiZjZlZTAgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi14c3Rvcm15MTYuYworKysgYi9iZmQvZWxmMzIteHN0b3JteTE2LmMKQEAgLTEsNSArMSw1IEBACiAvKiBYU1RPUk1ZMTYtc3BlY2lmaWMgc3VwcG9ydCBmb3IgMzItYml0IEVMRi4KLSAgIENvcHlyaWdodCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEJGRCwgdGhlIEJpbmFyeSBGaWxlIERlc2NyaXB0b3IgbGlicmFyeS4KIApAQCAtNTE2LDE0ICs1MTYsMTQgQEAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgdGhlIEMrKyBvYmplY3QgdnRhYmxlIGhpZXJhcmNoeS4KIAkgICAgIFJlY29uc3RydWN0IGl0IGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KICAgICAgICAgY2FzZSBSX1hTVE9STVkxNl9HTlVfVlRJTkhFUklUOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQorICAgICAgICAgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgIGJyZWFrOwogCiAJICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHdoaWNoIEMrKyB2dGFibGUgZW50cmllcyBhcmUgYWN0dWFsbHkKIAkgICAgIHVzZWQuICBSZWNvcmQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogICAgICAgICBjYXNlIFJfWFNUT1JNWTE2X0dOVV9WVEVOVFJZOgotICAgICAgICAgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAJfQpAQCAtODUzLDM0ICs4NTMsMTIgQEAKIAl9CiAgICAgICBlbHNlCiAJewotCSAgaCA9IHN5bV9oYXNoZXMgW3Jfc3ltbmR4IC0gc3ltdGFiX2hkci0+c2hfaW5mb107CisJICBiZmRfYm9vbGVhbiB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQ7CiAKLQkgIHdoaWxlIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9pbmRpcmVjdAotCQkgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfd2FybmluZykKLQkgICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOwotCi0JICBuYW1lID0gaC0+cm9vdC5yb290LnN0cmluZzsKLQotCSAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZmluZWQKLQkgICAgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKQotCSAgICB7Ci0JICAgICAgc2VjID0gaC0+cm9vdC51LmRlZi5zZWN0aW9uOwotCSAgICAgIHJlbG9jYXRpb24gPSAoaC0+cm9vdC51LmRlZi52YWx1ZQotCQkJICAgICsgc2VjLT5vdXRwdXRfc2VjdGlvbi0+dm1hCi0JCQkgICAgKyBzZWMtPm91dHB1dF9vZmZzZXQpOwotCSAgICB9Ci0JICBlbHNlIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspCi0JICAgIHsKLQkgICAgICByZWxvY2F0aW9uID0gMDsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgaWYgKCEgKCgqaW5mby0+Y2FsbGJhY2tzLT51bmRlZmluZWRfc3ltYm9sKQotCQkgICAgIChpbmZvLCBoLT5yb290LnJvb3Quc3RyaW5nLCBpbnB1dF9iZmQsCi0JCSAgICAgIGlucHV0X3NlY3Rpb24sIHJlbC0+cl9vZmZzZXQsIFRSVUUpKSkKLQkJcmV0dXJuIEZBTFNFOwotCSAgICAgIHJlbG9jYXRpb24gPSAwOwotCSAgICB9CisJICBSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCAoaW5mbywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLCByZWwsCisJCQkJICAgcl9zeW1uZHgsIHN5bXRhYl9oZHIsIHN5bV9oYXNoZXMsCisJCQkJICAgaCwgc2VjLCByZWxvY2F0aW9uLAorCQkJCSAgIHVucmVzb2x2ZWRfcmVsb2MsIHdhcm5lZCk7CiAJfQogCiAgICAgICBzd2l0Y2ggKEVMRjMyX1JfVFlQRSAocmVsLT5yX2luZm8pKQpkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLXh0ZW5zYS5jIGIvYmZkL2VsZjMyLXh0ZW5zYS5jCmluZGV4IDQ0NDUwYzUuLmU4OTc3NzcgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi14dGVuc2EuYworKysgYi9iZmQvZWxmMzIteHRlbnNhLmMKQEAgLTEsNSArMSw1IEBACiAvKiBYdGVuc2Etc3BlY2lmaWMgc3VwcG9ydCBmb3IgMzItYml0IEVMRi4KLSAgIENvcHlyaWdodCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEJGRCwgdGhlIEJpbmFyeSBGaWxlIERlc2NyaXB0b3IgbGlicmFyeS4KIApAQCAtNjE5LDggKzYxOSw2IEBACiAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqc3ltX2hhc2hlczsKICAgY29uc3QgRWxmX0ludGVybmFsX1JlbGEgKnJlbDsKICAgY29uc3QgRWxmX0ludGVybmFsX1JlbGEgKnJlbF9lbmQ7Ci0gIHByb3BlcnR5X3RhYmxlX2VudHJ5ICpsaXRfdGFibGU7Ci0gIGludCBsdGJsc2l6ZTsKIAogICBpZiAoaW5mby0+cmVsb2NhdGFibGUpCiAgICAgcmV0dXJuIFRSVUU7CkBAIC02MjgsMTEgKzYyNiw2IEBACiAgIHN5bXRhYl9oZHIgPSAmZWxmX3RkYXRhIChhYmZkKS0+c3ltdGFiX2hkcjsKICAgc3ltX2hhc2hlcyA9IGVsZl9zeW1faGFzaGVzIChhYmZkKTsKIAotICBsdGJsc2l6ZSA9IHh0ZW5zYV9yZWFkX3RhYmxlX2VudHJpZXMgKGFiZmQsIHNlYywgJmxpdF90YWJsZSwKLQkJCQkJWFRFTlNBX0xJVF9TRUNfTkFNRSk7Ci0gIGlmIChsdGJsc2l6ZSA8IDApCi0gICAgcmV0dXJuIEZBTFNFOwotCiAgIHJlbF9lbmQgPSByZWxvY3MgKyBzZWMtPnJlbG9jX2NvdW50OwogICBmb3IgKHJlbCA9IHJlbG9jczsgcmVsIDwgcmVsX2VuZDsgcmVsKyspCiAgICAgewpAQCAtNjY5LDExICs2NjIsNiBAQAogCiAJICBpZiAoKHNlYy0+ZmxhZ3MgJiBTRUNfQUxMT0MpICE9IDApCiAJICAgIHsKLQkgICAgICBpZiAoKHNlYy0+ZmxhZ3MgJiBTRUNfUkVBRE9OTFkpICE9IDAKLQkJICAmJiAhZWxmX3h0ZW5zYV9pbl9saXRlcmFsX3Bvb2wgKGxpdF90YWJsZSwgbHRibHNpemUsCi0JCQkJCQkgIHNlYy0+dm1hICsgcmVsLT5yX29mZnNldCkpCi0JCWgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgfD0gRUxGX0xJTktfTk9OX0dPVF9SRUY7Ci0KIAkgICAgICBpZiAoaC0+Z290LnJlZmNvdW50IDw9IDApCiAJCWgtPmdvdC5yZWZjb3VudCA9IDE7CiAJICAgICAgZWxzZQpAQCAtNjg5LDExICs2NzcsNiBAQAogCiAJICBpZiAoKHNlYy0+ZmxhZ3MgJiBTRUNfQUxMT0MpICE9IDApCiAJICAgIHsKLQkgICAgICBpZiAoKHNlYy0+ZmxhZ3MgJiBTRUNfUkVBRE9OTFkpICE9IDAKLQkJICAmJiAhZWxmX3h0ZW5zYV9pbl9saXRlcmFsX3Bvb2wgKGxpdF90YWJsZSwgbHRibHNpemUsCi0JCQkJCQkgIHNlYy0+dm1hICsgcmVsLT5yX29mZnNldCkpCi0JCWgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgfD0gRUxGX0xJTktfTk9OX0dPVF9SRUY7Ci0KIAkgICAgICBpZiAoaC0+cGx0LnJlZmNvdW50IDw9IDApCiAJCXsKIAkJICBoLT5lbGZfbGlua19oYXNoX2ZsYWdzIHw9IEVMRl9MSU5LX0hBU0hfTkVFRFNfUExUOwpAQCAtNzM2LDE0ICs3MTksNiBAQAogCQkgIGVsZl9sb2NhbF9nb3RfcmVmY291bnRzIChhYmZkKSA9IGxvY2FsX2dvdF9yZWZjb3VudHM7CiAJCX0KIAkgICAgICBsb2NhbF9nb3RfcmVmY291bnRzW3Jfc3ltbmR4XSArPSAxOwotCi0JICAgICAgLyogSWYgdGhlIHJlbG9jYXRpb24gaXMgbm90IGluc2lkZSB0aGUgR09ULCB0aGUgREZfVEVYVFJFTAotCQkgZmxhZyBuZWVkcyB0byBiZSBzZXQuICAqLwotCSAgICAgIGlmIChpbmZvLT5zaGFyZWQKLQkJICAmJiAoc2VjLT5mbGFncyAmIFNFQ19SRUFET05MWSkgIT0gMAotCQkgICYmICFlbGZfeHRlbnNhX2luX2xpdGVyYWxfcG9vbCAobGl0X3RhYmxlLCBsdGJsc2l6ZSwKLQkJCQkJCSAgc2VjLT52bWEgKyByZWwtPnJfb2Zmc2V0KSkKLQkJaW5mby0+ZmxhZ3MgfD0gREZfVEVYVFJFTDsKIAkgICAgfQogCSAgYnJlYWs7CiAKQEAgLTc1OCwxNCArNzMzLDE0IEBACiAJY2FzZSBSX1hURU5TQV9HTlVfVlRJTkhFUklUOgogCSAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB0aGUgQysrIG9iamVjdCB2dGFibGUgaGllcmFyY2h5LgogCSAgICAgUmVjb25zdHJ1Y3QgaXQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwotCSAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisJICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKIAljYXNlIFJfWFRFTlNBX0dOVV9WVEVOVFJZOgogCSAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB3aGljaCBDKysgdnRhYmxlIGVudHJpZXMgYXJlIGFjdHVhbGx5CiAJICAgICB1c2VkLiAgUmVjb3JkIGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KLQkgIGlmICghX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKwkgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKQEAgLTc3NCw3ICs3NDksNiBAQAogCX0KICAgICB9CiAKLSAgZnJlZSAobGl0X3RhYmxlKTsKICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTEwNDQsNyArMTAxOCw2IEBACiAgIGVsc2UKICAgICB7CiAgICAgICAvKiBEb24ndCBuZWVkIGFueSBkeW5hbWljIHJlbG9jYXRpb25zIGF0IGFsbC4gICovCi0gICAgICBoLT5lbGZfbGlua19oYXNoX2ZsYWdzICY9IH5FTEZfTElOS19OT05fR09UX1JFRjsKICAgICAgIGgtPnBsdC5yZWZjb3VudCA9IDA7CiAgICAgICBoLT5nb3QucmVmY291bnQgPSAwOwogICAgIH0KQEAgLTEwNjQsMTEgKzEwMzcsNiBAQAogICBpZiAoISB4dGVuc2FfZWxmX2R5bmFtaWNfc3ltYm9sX3AgKGgsIGluZm8pKQogICAgIGVsZl94dGVuc2FfbWFrZV9zeW1fbG9jYWwgKGluZm8sIGgpOwogCi0gIC8qIElmIHRoZSBzeW1ib2wgaGFzIGEgcmVsb2NhdGlvbiBvdXRzaWRlIHRoZSBHT1QsIHNldCB0aGUKLSAgICAgREZfVEVYVFJFTCBmbGFnLiAgKi8KLSAgaWYgKChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfTk9OX0dPVF9SRUYpICE9IDApCi0gICAgaW5mby0+ZmxhZ3MgfD0gREZfVEVYVFJFTDsKLQogICByZXR1cm4gVFJVRTsKIH0KIApAQCAtMTM2Niw3ICsxMzM0LDcgQEAKIAkgdGhlIC5keW5hbWljIHNlY3Rpb24uICBUaGUgRFRfREVCVUcgZW50cnkgaXMgZmlsbGVkIGluIGJ5IHRoZQogCSBkeW5hbWljIGxpbmtlciBhbmQgdXNlZCBieSB0aGUgZGVidWdnZXIuICAqLwogI2RlZmluZSBhZGRfZHluYW1pY19lbnRyeShUQUcsIFZBTCkgXAotICBiZmRfZWxmMzJfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIChiZmRfdm1hKSAoVEFHKSwgKGJmZF92bWEpIChWQUwpKQorICBfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgVEFHLCBWQUwpCiAKICAgICAgIGlmICghIGluZm8tPnNoYXJlZCkKIAl7CkBAIC0xMzkxLDEyICsxMzU5LDYgQEAKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIAotICAgICAgaWYgKChpbmZvLT5mbGFncyAmIERGX1RFWFRSRUwpICE9IDApCi0JewotCSAgaWYgKCFhZGRfZHluYW1pY19lbnRyeSAoRFRfVEVYVFJFTCwgMCkpCi0JICAgIHJldHVybiBGQUxTRTsKLQl9Ci0KICAgICAgIGlmICghYWRkX2R5bmFtaWNfZW50cnkgKERUX1hURU5TQV9HT1RfTE9DX09GRiwgMCkKIAkgIHx8ICFhZGRfZHluYW1pY19lbnRyeSAoRFRfWFRFTlNBX0dPVF9MT0NfU1osIDApKQogCXJldHVybiBGQUxTRTsKQEAgLTE4NTEsNiArMTgxMyw4IEBACiAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqc3ltX2hhc2hlczsKICAgYXNlY3Rpb24gKnNyZWxnb3QsICpzcmVscGx0OwogICBiZmQgKmR5bm9iajsKKyAgcHJvcGVydHlfdGFibGVfZW50cnkgKmxpdF90YWJsZSA9IDA7CisgIGludCBsdGJsc2l6ZSA9IDA7CiAgIGNoYXIgKmVycm9yX21lc3NhZ2UgPSBOVUxMOwogCiAgIGlmICh4dGVuc2FfZGVmYXVsdF9pc2EgPT0gTlVMTCkKQEAgLTE4NjgsNiArMTgzMiwxNCBAQAogICAgICAgc3JlbHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChkeW5vYmosICIucmVsYS5wbHQiKTsKICAgICB9CiAKKyAgaWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluYW1pY19zZWN0aW9uc19jcmVhdGVkKQorICAgIHsKKyAgICAgIGx0YmxzaXplID0geHRlbnNhX3JlYWRfdGFibGVfZW50cmllcyAoaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLAorCQkJCQkgICAgJmxpdF90YWJsZSwgWFRFTlNBX0xJVF9TRUNfTkFNRSk7CisgICAgICBpZiAobHRibHNpemUgPCAwKQorCXJldHVybiBGQUxTRTsKKyAgICB9CisKICAgcmVsID0gcmVsb2NzOwogICByZWxlbmQgPSByZWxvY3MgKyBpbnB1dF9zZWN0aW9uLT5yZWxvY19jb3VudDsKICAgZm9yICg7IHJlbCA8IHJlbGVuZDsgcmVsKyspCkBAIC0xOTkzLDEwICsxOTY1LDEwIEBACiAJfQogICAgICAgZWxzZQogCXsKLQkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChoLCBzeW1faGFzaGVzLCByX3N5bW5keCwKLQkJCQkgICBzeW10YWJfaGRyLCByZWxvY2F0aW9uLCBzZWMsCi0JCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgaW5mbywKLQkJCQkgICB3YXJuZWQpOworCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHNlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCiAJICBpZiAocmVsb2NhdGlvbiA9PSAwCiAJICAgICAgJiYgIXVucmVzb2x2ZWRfcmVsb2MKQEAgLTIwNjgsNiArMjA0MCwyMSBAQAogCQkgIG91dHJlbC5yX29mZnNldCArPSAoaW5wdXRfc2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24tPnZtYQogCQkJCSAgICAgICsgaW5wdXRfc2VjdGlvbi0+b3V0cHV0X29mZnNldCk7CiAKKwkJICAvKiBDb21wbGFpbiBpZiB0aGUgcmVsb2NhdGlvbiBpcyBpbiBhIHJlYWQtb25seSBzZWN0aW9uCisJCSAgICAgYW5kIG5vdCBpbiBhIGxpdGVyYWwgcG9vbC4gICovCisJCSAgaWYgKChpbnB1dF9zZWN0aW9uLT5mbGFncyAmIFNFQ19SRUFET05MWSkgIT0gMAorCQkgICAgICAmJiAhZWxmX3h0ZW5zYV9pbl9saXRlcmFsX3Bvb2wgKGxpdF90YWJsZSwgbHRibHNpemUsCisJCQkJCQkgICAgICBpbnB1dF9zZWN0aW9uLT52bWEKKwkJCQkJCSAgICAgICsgcmVsLT5yX29mZnNldCkpCisJCSAgICB7CisJCSAgICAgIGVycm9yX21lc3NhZ2UgPQorCQkJXygiZHluYW1pYyByZWxvY2F0aW9uIGluIHJlYWQtb25seSBzZWN0aW9uIik7CisJCSAgICAgIGlmICghKCgqaW5mby0+Y2FsbGJhY2tzLT5yZWxvY19kYW5nZXJvdXMpCisJCQkgICAgKGluZm8sIGVycm9yX21lc3NhZ2UsIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwKKwkJCSAgICAgcmVsLT5yX29mZnNldCkpKQorCQkJcmV0dXJuIEZBTFNFOworCQkgICAgfQorCiAJCSAgaWYgKGR5bmFtaWNfc3ltYm9sKQogCQkgICAgewogCQkgICAgICBvdXRyZWwucl9hZGRlbmQgPSByZWwtPnJfYWRkZW5kOwpAQCAtMjE1NSw2ICsyMTQyLDkgQEAKIAl9CiAgICAgfQogCisgIGlmIChsaXRfdGFibGUpCisgICAgZnJlZSAobGl0X3RhYmxlKTsKKwogICByZXR1cm4gVFJVRTsKIH0KIApAQCAtMjczMCw3ICsyNzIwLDcgQEAKICAgICAgIHdoaWxlIChjb29raWUtPnJlbCA8IGNvb2tpZS0+cmVsZW5kCiAJICAgICAmJiBjb29raWUtPnJlbC0+cl9vZmZzZXQgPT0gb2Zmc2V0KQogCXsKLQkgIGlmIChfYmZkX2VsZjMyX3JlbG9jX3N5bWJvbF9kZWxldGVkX3AgKG9mZnNldCwgY29va2llKSkKKwkgIGlmIChiZmRfZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3AgKG9mZnNldCwgY29va2llKSkKIAkgICAgewogCSAgICAgIC8qIFJlbW92ZSB0aGUgdGFibGUgZW50cnkuICAoSWYgdGhlIHJlbG9jIHR5cGUgaXMgTk9ORSwgdGhlbgogCQkgdGhlIGVudHJ5IGhhcyBhbHJlYWR5IGJlZW4gbWVyZ2VkIHdpdGggYW5vdGhlciBhbmQgZGVsZXRlZApAQCAtNTgyNSw3ICs1ODE1LDYgQEAKIAogI2RlZmluZSBlbGZfaW5mb190b19ob3d0bwkJICAgICBlbGZfeHRlbnNhX2luZm9fdG9faG93dG9fcmVsYQogCi0jZGVmaW5lIGJmZF9lbGYzMl9iZmRfZmluYWxfbGluawkgICAgIGJmZF9lbGYzMl9iZmRfZmluYWxfbGluawogI2RlZmluZSBiZmRfZWxmMzJfYmZkX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEgZWxmX3h0ZW5zYV9tZXJnZV9wcml2YXRlX2JmZF9kYXRhCiAjZGVmaW5lIGJmZF9lbGYzMl9uZXdfc2VjdGlvbl9ob29rCSAgICAgZWxmX3h0ZW5zYV9uZXdfc2VjdGlvbl9ob29rCiAjZGVmaW5lIGJmZF9lbGYzMl9iZmRfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSBlbGZfeHRlbnNhX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEKZGlmZiAtLWdpdCBhL2JmZC9lbGY2NC1hbHBoYS5jIGIvYmZkL2VsZjY0LWFscGhhLmMKaW5kZXggOGJkMDNjMi4uMmQ0NzE1YiAxMDA2NDQKLS0tIGEvYmZkL2VsZjY0LWFscGhhLmMKKysrIGIvYmZkL2VsZjY0LWFscGhhLmMKQEAgLTEsNSArMSw1IEBACiAvKiBBbHBoYSBzcGVjaWZpYyBzdXBwb3J0IGZvciA2NC1iaXQgRUxGCi0gICBDb3B5cmlnaHQgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMworICAgQ29weXJpZ2h0IDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBIZW5kZXJzb24gPHJ0aEB0YW11LmVkdT4uCiAKQEAgLTEyMyw3ICsxMjMsNyBAQAogc3RhdGljIGJmZF9ib29sZWFuIGVsZjY0X2FscGhhX3NpemVfcmVsYV9nb3RfMQogICBQQVJBTVMgKChzdHJ1Y3QgYWxwaGFfZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKSk7CiBzdGF0aWMgYmZkX2Jvb2xlYW4gZWxmNjRfYWxwaGFfYWRkX3N5bWJvbF9ob29rCi0gIFBBUkFNUyAoKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBjb25zdCBFbGZfSW50ZXJuYWxfU3ltICosCisgIFBBUkFNUyAoKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBFbGZfSW50ZXJuYWxfU3ltICosCiAJICAgY29uc3QgY2hhciAqKiwgZmxhZ3dvcmQgKiwgYXNlY3Rpb24gKiosIGJmZF92bWEgKikpOwogc3RhdGljIHN0cnVjdCBhbHBoYV9lbGZfZ290X2VudHJ5ICpnZXRfZ290X2VudHJ5CiAgIFBBUkFNUyAoKGJmZCAqLCBzdHJ1Y3QgYWxwaGFfZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCB1bnNpZ25lZCBsb25nLApAQCAtMjM2Myw3ICsyMzYzLDcgQEAKIGVsZjY0X2FscGhhX2FkZF9zeW1ib2xfaG9vayAoYWJmZCwgaW5mbywgc3ltLCBuYW1lcCwgZmxhZ3NwLCBzZWNwLCB2YWxwKQogICAgICBiZmQgKmFiZmQ7CiAgICAgIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvOwotICAgICBjb25zdCBFbGZfSW50ZXJuYWxfU3ltICpzeW07CisgICAgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bTsKICAgICAgY29uc3QgY2hhciAqKm5hbWVwIEFUVFJJQlVURV9VTlVTRUQ7CiAgICAgIGZsYWd3b3JkICpmbGFnc3AgQVRUUklCVVRFX1VOVVNFRDsKICAgICAgYXNlY3Rpb24gKipzZWNwOwpAQCAtMjQ2Miw3ICsyNDYyLDcgQEAKICAgaC0+dHlwZSA9IFNUVF9PQkpFQ1Q7CiAKICAgaWYgKGluZm8tPnNoYXJlZAotICAgICAgJiYgISBfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisgICAgICAmJiAhIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogICAgIHJldHVybiBGQUxTRTsKIAogICBzID0gYmZkX21ha2Vfc2VjdGlvbiAoYWJmZCwgIi5yZWxhLnBsdCIpOwpAQCAtMjUwNiw3ICsyNTA2LDcgQEAKICAgaC0+dHlwZSA9IFNUVF9PQkpFQ1Q7CiAKICAgaWYgKGluZm8tPnNoYXJlZAotICAgICAgJiYgISBfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisgICAgICAmJiAhIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogICAgIHJldHVybiBGQUxTRTsKIAogICBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmhnb3QgPSBoOwpAQCAtNDA5NCw3ICs0MDk0LDcgQEAKIAkgdGhlIC5keW5hbWljIHNlY3Rpb24uICBUaGUgRFRfREVCVUcgZW50cnkgaXMgZmlsbGVkIGluIGJ5IHRoZQogCSBkeW5hbWljIGxpbmtlciBhbmQgdXNlZCBieSB0aGUgZGVidWdnZXIuICAqLwogI2RlZmluZSBhZGRfZHluYW1pY19lbnRyeShUQUcsIFZBTCkgXAotICBiZmRfZWxmNjRfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIChiZmRfdm1hKSAoVEFHKSwgKGJmZF92bWEpIChWQUwpKQorICBfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgVEFHLCBWQUwpCiAKICAgICAgIGlmIChpbmZvLT5leGVjdXRhYmxlKQogCXsKQEAgLTQzOTksMTIgKzQzOTksMTIgQEAKIAkgIGJmZF9ib29sZWFuIHdhcm5lZDsKIAkgIGJmZF9ib29sZWFuIHVucmVzb2x2ZWRfcmVsb2M7CiAJICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaGg7Ci0JICAKLQkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChoaCwKLQkJCQkgICAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgYWxwaGFfZWxmX3N5bV9oYXNoZXMgKGlucHV0X2JmZCksCi0JCQkJICAgcl9zeW1uZHgsIHN5bXRhYl9oZHIsIHZhbHVlLAotCQkJCSAgIHNlYywgdW5yZXNvbHZlZF9yZWxvYywgaW5mbywKLQkJCQkgICB3YXJuZWQpOworCSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipzeW1faGFzaGVzID0gZWxmX3N5bV9oYXNoZXMgKGlucHV0X2JmZCk7CisKKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoaCwgc2VjLCB2YWx1ZSwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCiAJICBpZiAod2FybmVkKQogCSAgICBjb250aW51ZTsKQEAgLTUzMzUsNyArNTMzNSw3IEBACiAgICAgfQogCiAgIC8qIEludm9rZSB0aGUgcmVndWxhciBFTEYgYmFja2VuZCBsaW5rZXIgdG8gZG8gYWxsIHRoZSB3b3JrLiAgKi8KLSAgaWYgKCEgYmZkX2VsZjY0X2JmZF9maW5hbF9saW5rIChhYmZkLCBpbmZvKSkKKyAgaWYgKCEgYmZkX2VsZl9maW5hbF9saW5rIChhYmZkLCBpbmZvKSkKICAgICByZXR1cm4gRkFMU0U7CiAKICAgLyogTm93IHdyaXRlIG91dCB0aGUgY29tcHV0ZWQgc2VjdGlvbnMuICAqLwpkaWZmIC0tZ2l0IGEvYmZkL2VsZjY0LWdlbi5jIGIvYmZkL2VsZjY0LWdlbi5jCmluZGV4IDU5MDQ1NmMuLmJlMWRjM2UgMTAwNjQ0Ci0tLSBhL2JmZC9lbGY2NC1nZW4uYworKysgYi9iZmQvZWxmNjQtZ2VuLmMKQEAgLTEsNSArMSw2IEBACiAvKiBHZW5lcmljIHN1cHBvcnQgZm9yIDY0LWJpdCBFTEYKLSAgIENvcHlyaWdodCAxOTkzLCAxOTk1LCAxOTk4LCAxOTk5LCAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDE5OTMsIDE5OTUsIDE5OTgsIDE5OTksIDIwMDEsIDIwMDIsIDIwMDQKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCiAKQEAgLTg3LDcgKzg4LDcgQEAKIAlyZXR1cm4gRkFMU0U7CiAgICAgICB9CiAKLSAgcmV0dXJuIGJmZF9lbGY2NF9iZmRfbGlua19hZGRfc3ltYm9scyAoYWJmZCwgaW5mbyk7CisgIHJldHVybiBiZmRfZWxmX2xpbmtfYWRkX3N5bWJvbHMgKGFiZmQsIGluZm8pOwogfQogCiAjZGVmaW5lIFRBUkdFVF9MSVRUTEVfU1lNCQliZmRfZWxmNjRfbGl0dGxlX2dlbmVyaWNfdmVjCmRpZmYgLS1naXQgYS9iZmQvZWxmNjQtaHBwYS5jIGIvYmZkL2VsZjY0LWhwcGEuYwppbmRleCA1YmM5MzA5Li43NmRjYzE4IDEwMDY0NAotLS0gYS9iZmQvZWxmNjQtaHBwYS5jCisrKyBiL2JmZC9lbGY2NC1ocHBhLmMKQEAgLTEsNSArMSw2IEBACiAvKiBTdXBwb3J0IGZvciBIUFBBIDY0LWJpdCBFTEYKLSAgIENvcHlyaWdodCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCiAKQEAgLTkzMiw3ICs5MzMsNyBAQAogCSAgICAgc2VjdGlvbiBzeW1ib2wgZm9yIHRoaXMgc2VjdGlvbiBlbmRzIHVwIGluIHRoZSBkeW5hbWljCiAJICAgICBzeW1ib2wgdGFibGUuICAqLwogCSAgaWYgKGluZm8tPnNoYXJlZCAmJiBkeW5yZWxfdHlwZSA9PSBSX1BBUklTQ19GUFRSNjQKLQkgICAgICAmJiAhIChfYmZkX2VsZjY0X2xpbmtfcmVjb3JkX2xvY2FsX2R5bmFtaWNfc3ltYm9sCisJICAgICAgJiYgISAoYmZkX2VsZl9saW5rX3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbAogCQkgICAgKGluZm8sIGFiZmQsIHNlY19zeW1uZHgpKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KQEAgLTEwNDMsNyArMTA0NCw3IEBACiAJICAgICAgYmZkICpvd25lcjsKIAkgICAgICBvd25lciA9IChoID8gaC0+cm9vdC51LmRlZi5zZWN0aW9uLT5vd25lciA6IGR5bl9oLT5vd25lcik7CiAKLQkgICAgICBpZiAoISAoX2JmZF9lbGY2NF9saW5rX3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbAorCSAgICAgIGlmICghIChiZmRfZWxmX2xpbmtfcmVjb3JkX2xvY2FsX2R5bmFtaWNfc3ltYm9sCiAJCSAgICAgKHgtPmluZm8sIG93bmVyLCBkeW5faC0+c3ltX2luZHgpKSkKIAkJcmV0dXJuIEZBTFNFOwogCSAgICB9CkBAIC0xMTQ3LDcgKzExNDgsNyBAQAogCSAgICAgIGJmZCAqb3duZXI7CiAJICAgICAgb3duZXIgPSAoaCA/IGgtPnJvb3QudS5kZWYuc2VjdGlvbi0+b3duZXIgOiBkeW5faC0+b3duZXIpOwogCi0JICAgICAgaWYgKCFfYmZkX2VsZjY0X2xpbmtfcmVjb3JkX2xvY2FsX2R5bmFtaWNfc3ltYm9sCisJICAgICAgaWYgKCFiZmRfZWxmX2xpbmtfcmVjb3JkX2xvY2FsX2R5bmFtaWNfc3ltYm9sCiAJCSAgICAoeC0+aW5mbywgb3duZXIsIGR5bl9oLT5zeW1faW5keCkpCiAJCXJldHVybiBGQUxTRTsKIAkgICAgfQpAQCAtMTE3Myw3ICsxMTc0LDcgQEAKIAkgICAgICBuaC0+cm9vdC51LmRlZi52YWx1ZSA9IGgtPnJvb3QudS5kZWYudmFsdWU7CiAJICAgICAgbmgtPnJvb3QudS5kZWYuc2VjdGlvbiA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKIAotCSAgICAgIGlmICghIGJmZF9lbGY2NF9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoeC0+aW5mbywgbmgpKQorCSAgICAgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKHgtPmluZm8sIG5oKSkKIAkJcmV0dXJuIEZBTFNFOwogCiAJICAgICB9CkBAIC0xNTA5LDcgKzE1MTAsNyBAQAogCSB0aGUgc3ltYm9sIG5lZWQgb25seSBiZSBhZGRlZCBvbmNlLiAgKi8KICAgICAgIGlmIChkeW5faC0+aCA9PSAwCiAJICB8fCAoZHluX2gtPmgtPmR5bmluZHggPT0gLTEgJiYgZHluX2gtPmgtPnR5cGUgIT0gU1RUX1BBUklTQ19NSUxMSSkpCi0JaWYgKCFfYmZkX2VsZjY0X2xpbmtfcmVjb3JkX2xvY2FsX2R5bmFtaWNfc3ltYm9sCisJaWYgKCFiZmRfZWxmX2xpbmtfcmVjb3JkX2xvY2FsX2R5bmFtaWNfc3ltYm9sCiAJICAgICh4LT5pbmZvLCByZW50LT5zZWMtPm93bmVyLCBkeW5faC0+c3ltX2luZHgpKQogCSAgcmV0dXJuIEZBTFNFOwogICAgIH0KQEAgLTE4MzIsNyArMTgzMyw3IEBACiAJIHRoZSBQTFQsIGl0IGlzIGhvdyB3ZSBjb21tdW5pY2F0ZSB0aGUgX19ncCB2YWx1ZSBvZiBhIGxvYWQKIAkgbW9kdWxlIHRvIHRoZSBkeW5hbWljIGxpbmtlci4gICovCiAjZGVmaW5lIGFkZF9keW5hbWljX2VudHJ5KFRBRywgVkFMKSBcCi0gIGJmZF9lbGY2NF9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgKGJmZF92bWEpIChUQUcpLCAoYmZkX3ZtYSkgKFZBTCkpCisgIF9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBUQUcsIFZBTCkKIAogICAgICAgaWYgKCFhZGRfZHluYW1pY19lbnRyeSAoRFRfSFBfRExEX0ZMQUdTLCAwKQogCSAgfHwgIWFkZF9keW5hbWljX2VudHJ5IChEVF9QTFRHT1QsIDApKQpkaWZmIC0tZ2l0IGEvYmZkL2VsZjY0LW1taXguYyBiL2JmZC9lbGY2NC1tbWl4LmMKaW5kZXggY2E2MjdlZi4uNGI3ODY4MSAxMDA2NDQKLS0tIGEvYmZkL2VsZjY0LW1taXguYworKysgYi9iZmQvZWxmNjQtbW1peC5jCkBAIC0xLDUgKzEsNSBAQAogLyogTU1JWC1zcGVjaWZpYyBzdXBwb3J0IGZvciA2NC1iaXQgRUxGLgotICAgQ29weXJpZ2h0IDIwMDEsIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb3B5cmlnaHQgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgIENvbnRyaWJ1dGVkIGJ5IEhhbnMtUGV0ZXIgTmlsc3NvbiA8aHBAYml0cmFuZ2UuY29tPgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCkBAIC0yMDUsNyArMjA1LDcgQEAKICAgUEFSQU1TICgoYmZkICosIGFzZWN0aW9uICosIGludCAqKSk7CiAKIHN0YXRpYyBiZmRfYm9vbGVhbiBtbWl4X2VsZl9hZGRfc3ltYm9sX2hvb2sKLSAgUEFSQU1TICgoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNvbnN0IEVsZl9JbnRlcm5hbF9TeW0gKiwKKyAgUEFSQU1TICgoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIEVsZl9JbnRlcm5hbF9TeW0gKiwKIAkgICBjb25zdCBjaGFyICoqLCBmbGFnd29yZCAqLCBhc2VjdGlvbiAqKiwgYmZkX3ZtYSAqKSk7CiAKIHN0YXRpYyBiZmRfYm9vbGVhbiBtbWl4X2VsZl9pc19sb2NhbF9sYWJlbF9uYW1lCkBAIC0xNDc0LDQ1ICsxNDc0LDIxIEBACiAJICBzZWMgPSBsb2NhbF9zZWN0aW9ucyBbcl9zeW1uZHhdOwogCSAgcmVsb2NhdGlvbiA9IF9iZmRfZWxmX3JlbGFfbG9jYWxfc3ltIChvdXRwdXRfYmZkLCBzeW0sICZzZWMsIHJlbCk7CiAKLQkgIG5hbWUgPSBiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uCi0JICAgIChpbnB1dF9iZmQsIHN5bXRhYl9oZHItPnNoX2xpbmssIHN5bS0+c3RfbmFtZSk7Ci0JICBuYW1lID0gKG5hbWUgPT0gTlVMTCkgPyBiZmRfc2VjdGlvbl9uYW1lIChpbnB1dF9iZmQsIHNlYykgOiBuYW1lOworCSAgbmFtZSA9IGJmZF9lbGZfc3RyaW5nX2Zyb21fZWxmX3NlY3Rpb24gKGlucHV0X2JmZCwKKwkJCQkJCSAgc3ltdGFiX2hkci0+c2hfbGluaywKKwkJCQkJCSAgc3ltLT5zdF9uYW1lKTsKKwkgIGlmIChuYW1lID09IE5VTEwpCisJICAgIG5hbWUgPSBiZmRfc2VjdGlvbl9uYW1lIChpbnB1dF9iZmQsIHNlYyk7CiAJfQogICAgICAgZWxzZQogCXsKLQkgIGggPSBzeW1faGFzaGVzIFtyX3N5bW5keCAtIHN5bXRhYl9oZHItPnNoX2luZm9dOworCSAgYmZkX2Jvb2xlYW4gdW5yZXNvbHZlZF9yZWxvYzsKIAotCSAgd2hpbGUgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2luZGlyZWN0Ci0JCSB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQotCSAgICBoID0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIGgtPnJvb3QudS5pLmxpbms7Ci0KKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoLCBzZWMsIHJlbG9jYXRpb24sCisJCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgdW5kZWZpbmVkX3NpZ25hbGxlZCk7CiAJICBuYW1lID0gaC0+cm9vdC5yb290LnN0cmluZzsKLQotCSAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZmluZWQKLQkgICAgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKQotCSAgICB7Ci0JICAgICAgc2VjID0gaC0+cm9vdC51LmRlZi5zZWN0aW9uOwotCSAgICAgIHJlbG9jYXRpb24gPSAoaC0+cm9vdC51LmRlZi52YWx1ZQotCQkJICAgICsgc2VjLT5vdXRwdXRfc2VjdGlvbi0+dm1hCi0JCQkgICAgKyBzZWMtPm91dHB1dF9vZmZzZXQpOwotCSAgICB9Ci0JICBlbHNlIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspCi0JICAgIHJlbG9jYXRpb24gPSAwOwotCSAgZWxzZSBpZiAoaW5mby0+c2hhcmVkCi0JCSAgICYmIEVMRl9TVF9WSVNJQklMSVRZIChoLT5vdGhlcikgPT0gU1RWX0RFRkFVTFQpCi0JICAgIHJlbG9jYXRpb24gPSAwOwotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgLyogVGhlIHRlc3Qgb24gdW5kZWZpbmVkX3NpZ25hbGxlZCBpcyByZWR1bmRhbnQgYXQgdGhlCi0JCSBtb21lbnQsIGJ1dCBrZXB0IGZvciBzeW1tZXRyeS4gICovCi0JICAgICAgaWYgKCEgdW5kZWZpbmVkX3NpZ25hbGxlZAotCQkgICYmICEgKCgqaW5mby0+Y2FsbGJhY2tzLT51bmRlZmluZWRfc3ltYm9sKQotCQkJKGluZm8sIGgtPnJvb3Qucm9vdC5zdHJpbmcsIGlucHV0X2JmZCwKLQkJCSBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0LCBUUlVFKSkpCi0JCXJldHVybiBGQUxTRTsKLQkgICAgICB1bmRlZmluZWRfc2lnbmFsbGVkID0gVFJVRTsKLQkgICAgICByZWxvY2F0aW9uID0gMDsKLQkgICAgfQogCX0KIAogICAgICAgciA9IG1taXhfZmluYWxfbGlua19yZWxvY2F0ZSAoaG93dG8sIGlucHV0X3NlY3Rpb24sCkBAIC0yMDUxLDE0ICsyMDI3LDE0IEBACiAgICAgICAgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgdGhlIEMrKyBvYmplY3QgdnRhYmxlIGhpZXJhcmNoeS4KICAgICAgICAgICAgUmVjb25zdHJ1Y3QgaXQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogICAgICAgICBjYXNlIFJfTU1JWF9HTlVfVlRJTkhFUklUOgotICAgICAgICAgIGlmICghX2JmZF9lbGY2NF9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQorICAgICAgICAgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgd2hpY2ggQysrIHZ0YWJsZSBlbnRyaWVzIGFyZSBhY3R1YWxseQogICAgICAgICAgICB1c2VkLiAgUmVjb3JkIGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KICAgICAgICAgY2FzZSBSX01NSVhfR05VX1ZURU5UUlk6Ci0gICAgICAgICAgaWYgKCFfYmZkX2VsZjY0X2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9hZGRlbmQpKQorICAgICAgICAgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICBicmVhazsKIAl9CkBAIC0yMjAyLDcgKzIxNzgsNyBAQAogbW1peF9lbGZfYWRkX3N5bWJvbF9ob29rIChhYmZkLCBpbmZvLCBzeW0sIG5hbWVwLCBmbGFnc3AsIHNlY3AsIHZhbHApCiAgICAgIGJmZCAqYWJmZDsKICAgICAgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8gQVRUUklCVVRFX1VOVVNFRDsKLSAgICAgY29uc3QgRWxmX0ludGVybmFsX1N5bSAqc3ltOworICAgICBFbGZfSW50ZXJuYWxfU3ltICpzeW07CiAgICAgIGNvbnN0IGNoYXIgKipuYW1lcCBBVFRSSUJVVEVfVU5VU0VEOwogICAgICBmbGFnd29yZCAqZmxhZ3NwIEFUVFJJQlVURV9VTlVTRUQ7CiAgICAgIGFzZWN0aW9uICoqc2VjcDsKQEAgLTIyOTYsNyArMjI3Miw3IEBACiAgICAgICAtLWFiZmQtPnNlY3Rpb25fY291bnQ7CiAgICAgfQogCi0gIGlmICghIGJmZF9lbGY2NF9iZmRfZmluYWxfbGluayAoYWJmZCwgaW5mbykpCisgIGlmICghIGJmZF9lbGZfZmluYWxfbGluayAoYWJmZCwgaW5mbykpCiAgICAgcmV0dXJuIEZBTFNFOwogCiAgIC8qIFNpbmNlIHRoaXMgc2VjdGlvbiBpcyBtYXJrZWQgU0VDX0xJTktFUl9DUkVBVEVELCBpdCBpc24ndCBvdXRwdXQgYnkKZGlmZiAtLWdpdCBhL2JmZC9lbGY2NC1wcGMuYyBiL2JmZC9lbGY2NC1wcGMuYwppbmRleCAzMDRhNjM1Li5hMGQ4MWQwIDEwMDY0NAotLS0gYS9iZmQvZWxmNjQtcHBjLmMKKysrIGIvYmZkL2VsZjY0LXBwYy5jCkBAIC0xLDUgKzEsNiBAQAogLyogUG93ZXJQQzY0LXNwZWNpZmljIHN1cHBvcnQgZm9yIDY0LWJpdCBFTEYuCi0gICBDb3B5cmlnaHQgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0CisgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgIFdyaXR0ZW4gYnkgTGludXMgTm9yZGJlcmcsIFN3b3ggQUIgPGluZm9Ac3dveC5jb20+LAogICAgYmFzZWQgb24gZWxmMzItcHBjLmMgYnkgSWFuIExhbmNlIFRheWxvci4KICAgIExhcmdlbHkgcmV3cml0dGVuIGJ5IEFsYW4gTW9kcmEgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KQEAgLTgxLDYgKzgyLDcgQEAKICNkZWZpbmUgZWxmX2JhY2tlbmRfZ3Jva19wc2luZm8JCSAgICAgIHBwYzY0X2VsZl9ncm9rX3BzaW5mbwogI2RlZmluZSBlbGZfYmFja2VuZF9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyAgIHBwYzY0X2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucwogI2RlZmluZSBlbGZfYmFja2VuZF9jb3B5X2luZGlyZWN0X3N5bWJvbCAgICAgIHBwYzY0X2VsZl9jb3B5X2luZGlyZWN0X3N5bWJvbAorI2RlZmluZSBlbGZfYmFja2VuZF9hZGRfc3ltYm9sX2hvb2sJICAgICAgcHBjNjRfZWxmX2FkZF9zeW1ib2xfaG9vawogI2RlZmluZSBlbGZfYmFja2VuZF9jaGVja19yZWxvY3MJICAgICAgcHBjNjRfZWxmX2NoZWNrX3JlbG9jcwogI2RlZmluZSBlbGZfYmFja2VuZF9nY19tYXJrX2hvb2sJICAgICAgcHBjNjRfZWxmX2djX21hcmtfaG9vawogI2RlZmluZSBlbGZfYmFja2VuZF9nY19zd2VlcF9ob29rCSAgICAgIHBwYzY0X2VsZl9nY19zd2VlcF9ob29rCkBAIC0zNDczLDYgKzM0NzUsMjIgQEAKICAgcmV0dXJuIFRSVUU7CiB9CiAKKy8qIEhhY2sgc3ltYm9scyBkZWZpbmVkIGluIC5vcGQgc2VjdGlvbnMgdG8gYmUgZnVuY3Rpb24gdHlwZS4gICovCisKK3N0YXRpYyBiZmRfYm9vbGVhbgorcHBjNjRfZWxmX2FkZF9zeW1ib2xfaG9vayAoYmZkICppYmZkIEFUVFJJQlVURV9VTlVTRUQsCisJCQkgICBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbyBBVFRSSUJVVEVfVU5VU0VELAorCQkJICAgRWxmX0ludGVybmFsX1N5bSAqaXN5bSwKKwkJCSAgIGNvbnN0IGNoYXIgKipuYW1lIEFUVFJJQlVURV9VTlVTRUQsCisJCQkgICBmbGFnd29yZCAqZmxhZ3MgQVRUUklCVVRFX1VOVVNFRCwKKwkJCSAgIGFzZWN0aW9uICoqc2VjLAorCQkJICAgYmZkX3ZtYSAqdmFsdWUgQVRUUklCVVRFX1VOVVNFRCkKK3sKKyAgaWYgKHN0cmNtcCAoYmZkX2dldF9zZWN0aW9uX25hbWUgKGliZmQsICpzZWMpLCAiLm9wZCIpID09IDApCisgICAgaXN5bS0+c3RfaW5mbyA9IEVMRl9TVF9JTkZPIChFTEZfU1RfQklORCAoaXN5bS0+c3RfaW5mbyksIFNUVF9GVU5DKTsKKyAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyBiZmRfYm9vbGVhbgogdXBkYXRlX2xvY2FsX3N5bV9pbmZvIChiZmQgKmFiZmQsIEVsZl9JbnRlcm5hbF9TaGRyICpzeW10YWJfaGRyLAogCQkgICAgICAgdW5zaWduZWQgbG9uZyByX3N5bW5keCwgYmZkX3ZtYSByX2FkZGVuZCwgaW50IHRsc190eXBlKQpAQCAtMzc5MCwxNCArMzgwOCwxNCBAQAogCSAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB0aGUgQysrIG9iamVjdCB2dGFibGUgaGllcmFyY2h5LgogCSAgICAgUmVjb25zdHJ1Y3QgaXQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogCWNhc2UgUl9QUEM2NF9HTlVfVlRJTkhFUklUOgotCSAgaWYgKCFfYmZkX2VsZjY0X2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisJICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgd2hpY2ggQysrIHZ0YWJsZSBlbnRyaWVzIGFyZSBhY3R1YWxseQogCSAgICAgdXNlZC4gIFJlY29yZCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSX1BQQzY0X0dOVV9WVEVOVFJZOgotCSAgaWYgKCFfYmZkX2VsZjY0X2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9hZGRlbmQpKQorCSAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGVudHJ5IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9hZGRlbmQpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJICBicmVhazsKIApAQCAtNDM4Niw3ICs0NDA0LDcgQEAKIAkgICAgICAmJiBFTEZfU1RfVklTSUJJTElUWSAoZmRoLT5lbGYub3RoZXIpID09IFNUVl9ERUZBVUxUKSkpCiAgICAgewogICAgICAgaWYgKGZkaC0+ZWxmLmR5bmluZHggPT0gLTEpCi0JaWYgKCEgYmZkX2VsZjY0X2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCAmZmRoLT5lbGYpKQorCWlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sICZmZGgtPmVsZikpCiAJICByZXR1cm4gRkFMU0U7CiAgICAgICBmZGgtPmVsZi5lbGZfbGlua19oYXNoX2ZsYWdzCiAJfD0gKGZoLT5lbGYuZWxmX2xpbmtfaGFzaF9mbGFncyAmIChFTEZfTElOS19IQVNIX1JFRl9SRUdVTEFSCkBAIC01NTU2LDE3ICs1NTc0LDYgQEAKICAgcmV0dXJuIFRSVUU7CiB9CiAKLS8qIFRoaXMgaXMgdGhlIGNvbmRpdGlvbiB1bmRlciB3aGljaCBwcGM2NF9lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sCi0gICB3aWxsIGJlIGNhbGxlZCBmcm9tIGVsZmxpbmsuaC4gIElmIGVsZmxpbmsuaCBkb2Vzbid0IGNhbGwgb3VyCi0gICBmaW5pc2hfZHluYW1pY19zeW1ib2wgcm91dGluZSwgd2UnbGwgbmVlZCB0byBkbyBzb21ldGhpbmcgYWJvdXQKLSAgIGluaXRpYWxpemluZyBhbnkgLnBsdCBhbmQgLmdvdCBlbnRyaWVzIGluIHBwYzY0X2VsZl9yZWxvY2F0ZV9zZWN0aW9uLiAgKi8KLSNkZWZpbmUgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTChEWU4sIFNIQVJFRCwgSCkgXAotICAoKERZTikJCQkJCQkJCVwKLSAgICYmICgoU0hBUkVEKQkJCQkJCQkJXAotICAgICAgIHx8ICgoSCktPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCVwKLSAgICYmICgoSCktPmR5bmluZHggIT0gLTEJCQkJCQlcCi0gICAgICAgfHwgKChIKS0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgIT0gMCkpCi0KIC8qIEFsbG9jYXRlIHNwYWNlIGluIC5wbHQsIC5nb3QgYW5kIGFzc29jaWF0ZWQgcmVsb2Mgc2VjdGlvbnMgZm9yCiAgICBkeW5hbWljIHJlbG9jcy4gICovCiAKQEAgLTU2NzYsNyArNTY4Myw3IEBACiAJaWYgKGgtPmR5bmluZHggPT0gLTEKIAkgICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJICB7Ci0JICAgIGlmICghIGJmZF9lbGY2NF9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICAgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCSAgICAgIHJldHVybiBGQUxTRTsKIAkgIH0KIApAQCAtNTc1Nyw3ICs1NzY0LDcgQEAKIAkgIGlmIChoLT5keW5pbmR4ID09IC0xCiAJICAgICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJICAgIHsKLQkgICAgICBpZiAoISBiZmRfZWxmNjRfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgICAgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCQlyZXR1cm4gRkFMU0U7CiAJICAgIH0KIApAQCAtNjA2NCw3ICs2MDcxLDcgQEAKIAkgdGhlIC5keW5hbWljIHNlY3Rpb24uICBUaGUgRFRfREVCVUcgZW50cnkgaXMgZmlsbGVkIGluIGJ5IHRoZQogCSBkeW5hbWljIGxpbmtlciBhbmQgdXNlZCBieSB0aGUgZGVidWdnZXIuICAqLwogI2RlZmluZSBhZGRfZHluYW1pY19lbnRyeShUQUcsIFZBTCkgXAotICBiZmRfZWxmNjRfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIChUQUcpLCAoVkFMKSkKKyAgX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIFRBRywgVkFMKQogCiAgICAgICBpZiAoaW5mby0+ZXhlY3V0YWJsZSkKIAl7CkBAIC03NDgwLDEwICs3NDg3LDEwIEBACiAJfQogICAgICAgZWxzZQogCXsKLQkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChoLCBzeW1faGFzaGVzLCByX3N5bW5keCwKLQkJCQkgICBzeW10YWJfaGRyLCByZWxvY2F0aW9uLCBzZWMsCi0JCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgaW5mbywKLQkJCQkgICB3YXJuZWQpOworCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHNlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCSAgc3ltX25hbWUgPSBoLT5yb290LnJvb3Quc3RyaW5nOwogCSAgc3ltX3R5cGUgPSBoLT50eXBlOwogCX0KZGlmZiAtLWdpdCBhL2JmZC9lbGY2NC1zMzkwLmMgYi9iZmQvZWxmNjQtczM5MC5jCmluZGV4IDIyNjAyNDguLjYzYTI2MWEgMTAwNjQ0Ci0tLSBhL2JmZC9lbGY2NC1zMzkwLmMKKysrIGIvYmZkL2VsZjY0LXMzOTAuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIElCTSBTLzM5MC1zcGVjaWZpYyBzdXBwb3J0IGZvciA2NC1iaXQgRUxGCi0gICBDb3B5cmlnaHQgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgQ29udHJpYnV0ZWQgTWFydGluIFNjaHdpZGVmc2t5IChzY2h3aWRlZnNreUBkZS5pYm0uY29tKS4KIAogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgQkZELCB0aGUgQmluYXJ5IEZpbGUgRGVzY3JpcHRvciBsaWJyYXJ5LgpAQCAtMTMwOSwxNCArMTMwOSwxNCBAQAogCSAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB0aGUgQysrIG9iamVjdCB2dGFibGUgaGllcmFyY2h5LgogCSAgICAgUmVjb25zdHJ1Y3QgaXQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogCWNhc2UgUl8zOTBfR05VX1ZUSU5IRVJJVDoKLQkgIGlmICghX2JmZF9lbGY2NF9nY19yZWNvcmRfdnRpbmhlcml0IChhYmZkLCBzZWMsIGgsIHJlbC0+cl9vZmZzZXQpKQorCSAgaWYgKCFiZmRfZWxmX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAkgIGJyZWFrOwogCiAJICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHdoaWNoIEMrKyB2dGFibGUgZW50cmllcyBhcmUgYWN0dWFsbHkKIAkgICAgIHVzZWQuICBSZWNvcmQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogCWNhc2UgUl8zOTBfR05VX1ZURU5UUlk6Ci0JICBpZiAoIV9iZmRfZWxmNjRfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCisJICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAkgIGJyZWFrOwogCkBAIC0xNjg3LDE3ICsxNjg3LDYgQEAKICAgcmV0dXJuIFRSVUU7CiB9CiAKLS8qIFRoaXMgaXMgdGhlIGNvbmRpdGlvbiB1bmRlciB3aGljaCBlbGZfczM5MF9maW5pc2hfZHluYW1pY19zeW1ib2wKLSAgIHdpbGwgYmUgY2FsbGVkIGZyb20gZWxmbGluay5oLiAgSWYgZWxmbGluay5oIGRvZXNuJ3QgY2FsbCBvdXIKLSAgIGZpbmlzaF9keW5hbWljX3N5bWJvbCByb3V0aW5lLCB3ZSdsbCBuZWVkIHRvIGRvIHNvbWV0aGluZyBhYm91dAotICAgaW5pdGlhbGl6aW5nIGFueSAucGx0IGFuZCAuZ290IGVudHJpZXMgaW4gZWxmX3MzOTBfcmVsb2NhdGVfc2VjdGlvbi4gICovCi0jZGVmaW5lIFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0woRFlOLCBTSEFSRUQsIEgpIFwKLSAgKChEWU4pCQkJCQkJCQlcCi0gICAmJiAoKFNIQVJFRCkJCQkJCQkJCVwKLSAgICAgICB8fCAoKEgpLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQlcCi0gICAmJiAoKEgpLT5keW5pbmR4ICE9IC0xCQkJCQkJXAotICAgICAgIHx8ICgoSCktPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpICE9IDApKQotCiAvKiBBbGxvY2F0ZSBzcGFjZSBpbiAucGx0LCAuZ290IGFuZCBhc3NvY2lhdGVkIHJlbG9jIHNlY3Rpb25zIGZvcgogICAgZHluYW1pYyByZWxvY3MuICAqLwogCkBAIC0xNzMzLDcgKzE3MjIsNyBAQAogICAgICAgaWYgKGgtPmR5bmluZHggPT0gLTEKIAkgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQogCXsKLQkgIGlmICghIGJmZF9lbGY2NF9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIApAQCAtMTgxNiw3ICsxODA1LDcgQEAKICAgICAgIGlmIChoLT5keW5pbmR4ID09IC0xCiAJICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkKIAl7Ci0JICBpZiAoISBiZmRfZWxmNjRfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAKQEAgLTE4NTUsOSArMTg0NCw3IEBACiAKICAgaWYgKGluZm8tPnNoYXJlZCkKICAgICB7Ci0gICAgICBpZiAoKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX0RFRl9SRUdVTEFSKSAhPSAwCi0JICAmJiAoKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpICE9IDAKLQkgICAgICB8fCBpbmZvLT5zeW1ib2xpYykpCisgICAgICBpZiAoU1lNQk9MX1JFRkVSRU5DRVNfTE9DQUwgKGluZm8sIGgpKQogCXsKIAkgIHN0cnVjdCBlbGZfczM5MF9keW5fcmVsb2NzICoqcHA7CiAKQEAgLTE4OTYsNyArMTg4Myw3IEBACiAJICBpZiAoaC0+ZHluaW5keCA9PSAtMQogCSAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQogCSAgICB7Ci0JICAgICAgaWYgKCEgYmZkX2VsZjY0X2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgICAgICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkJcmV0dXJuIEZBTFNFOwogCSAgICB9CiAKQEAgLTIxMjksNyArMjExNiw3IEBACiAJIHRoZSAuZHluYW1pYyBzZWN0aW9uLiAgVGhlIERUX0RFQlVHIGVudHJ5IGlzIGZpbGxlZCBpbiBieSB0aGUKIAkgZHluYW1pYyBsaW5rZXIgYW5kIHVzZWQgYnkgdGhlIGRlYnVnZ2VyLiAgKi8KICNkZWZpbmUgYWRkX2R5bmFtaWNfZW50cnkoVEFHLCBWQUwpIFwKLSAgYmZkX2VsZjY0X2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCAoYmZkX3ZtYSkgKFRBRyksIChiZmRfdm1hKSAoVkFMKSkKKyAgX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIFRBRywgVkFMKQogCiAgICAgICBpZiAoaW5mby0+ZXhlY3V0YWJsZSkKIAl7CkBAIC0yMjk0LDEwICsyMjgxLDEwIEBACiAJewogCSAgYmZkX2Jvb2xlYW4gd2FybmVkIEFUVFJJQlVURV9VTlVTRUQ7CiAKLQkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChoLCBzeW1faGFzaGVzLCByX3N5bW5keCwKLQkJCQkgICBzeW10YWJfaGRyLCByZWxvY2F0aW9uLCBzZWMsCi0JCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgaW5mbywKLQkJCQkgICB3YXJuZWQpOworCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHNlYywgcmVsb2NhdGlvbiwKKwkJCQkgICB1bnJlc29sdmVkX3JlbG9jLCB3YXJuZWQpOwogCX0KIAogICAgICAgc3dpdGNoIChyX3R5cGUpCkBAIC0yNTQwLDEwICsyNTI3LDcgQEAKIAkJICAgICYmIHJfdHlwZSAhPSBSXzM5MF9QQzMyREJMCiAJCSAgICAmJiByX3R5cGUgIT0gUl8zOTBfUEM2NCkKIAkJICAgfHwgKGggIT0gTlVMTAotCQkgICAgICAgJiYgaC0+ZHluaW5keCAhPSAtMQotCQkgICAgICAgJiYgKCEgaW5mby0+c3ltYm9saWMKLQkJCSAgIHx8IChoLT5lbGZfbGlua19oYXNoX2ZsYWdzCi0JCQkgICAgICAgJiBFTEZfTElOS19IQVNIX0RFRl9SRUdVTEFSKSA9PSAwKSkpKQorCQkgICAgICAgJiYgIVNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMIChpbmZvLCBoKSkpKQogCSAgICAgIHx8IChFTElNSU5BVEVfQ09QWV9SRUxPQ1MKIAkJICAmJiAhaW5mby0+c2hhcmVkCiAJCSAgJiYgaCAhPSBOVUxMCmRpZmYgLS1naXQgYS9iZmQvZWxmNjQtc2g2NC5jIGIvYmZkL2VsZjY0LXNoNjQuYwppbmRleCAxNWMyOTkyLi5hZDZjYTFjIDEwMDY0NAotLS0gYS9iZmQvZWxmNjQtc2g2NC5jCisrKyBiL2JmZC9lbGY2NC1zaDY0LmMKQEAgLTEsNSArMSw1IEBACiAvKiBTdXBlckggU0g2NC1zcGVjaWZpYyBzdXBwb3J0IGZvciA2NC1iaXQgRUxGCi0gICBDb3B5cmlnaHQgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCiAKQEAgLTE0MSw3ICsxNDEsNyBAQAogc3RhdGljIGludCBzaDY0X2VsZjY0X2dldF9zeW1ib2xfdHlwZQogICAoRWxmX0ludGVybmFsX1N5bSAqLCBpbnQpOwogc3RhdGljIGJmZF9ib29sZWFuIHNoNjRfZWxmNjRfYWRkX3N5bWJvbF9ob29rCi0gIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgY29uc3QgRWxmX0ludGVybmFsX1N5bSAqLCBjb25zdCBjaGFyICoqLAorICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIEVsZl9JbnRlcm5hbF9TeW0gKiwgY29uc3QgY2hhciAqKiwKICAgIGZsYWd3b3JkICosIGFzZWN0aW9uICoqLCBiZmRfdm1hICopOwogc3RhdGljIGJmZF9ib29sZWFuIHNoNjRfZWxmNjRfbGlua19vdXRwdXRfc3ltYm9sX2hvb2sKICAgKHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNvbnN0IGNoYXIgKiwgRWxmX0ludGVybmFsX1N5bSAqLCBhc2VjdGlvbiAqLApAQCAtMTcwMywxNSArMTcwMywxNiBAQAogCSAgICB9CiAJICBlbHNlIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspCiAJICAgIHJlbG9jYXRpb24gPSAwOwotCSAgZWxzZSBpZiAoaW5mby0+c2hhcmVkCi0JCSAgICYmICFpbmZvLT5zeW1ib2xpYwotCQkgICAmJiBpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9JR05PUkUpCisJICBlbHNlIGlmIChpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9JR05PUkUKKwkJICAgJiYgRUxGX1NUX1ZJU0lCSUxJVFkgKGgtPm90aGVyKSA9PSBTVFZfREVGQVVMVCkKIAkgICAgcmVsb2NhdGlvbiA9IDA7CiAJICBlbHNlCiAJICAgIHsKIAkgICAgICBpZiAoISAoKCppbmZvLT5jYWxsYmFja3MtPnVuZGVmaW5lZF9zeW1ib2wpCiAJCSAgICAgKGluZm8sIGgtPnJvb3Qucm9vdC5zdHJpbmcsIGlucHV0X2JmZCwKLQkJICAgICAgaW5wdXRfc2VjdGlvbiwgcmVsLT5yX29mZnNldCwgVFJVRSkpKQorCQkgICAgICBpbnB1dF9zZWN0aW9uLCByZWwtPnJfb2Zmc2V0LAorCQkgICAgICAoaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMgPT0gUk1fR0VORVJBVEVfRVJST1IKKwkJICAgICAgIHx8IEVMRl9TVF9WSVNJQklMSVRZIChoLT5vdGhlcikpKSkpCiAJCXJldHVybiBGQUxTRTsKIAkgICAgICByZWxvY2F0aW9uID0gMDsKIAkgICAgfQpAQCAtMjU2MSwxNCArMjU2MiwxNCBAQAogCSAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB0aGUgQysrIG9iamVjdCB2dGFibGUgaGllcmFyY2h5LgogCSAgICAgUmVjb25zdHJ1Y3QgaXQgZm9yIGxhdGVyIHVzZSBkdXJpbmcgR0MuICAqLwogICAgICAgICBjYXNlIFJfU0hfR05VX1ZUSU5IRVJJVDoKLSAgICAgICAgICBpZiAoIV9iZmRfZWxmNjRfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICBicmVhazsKIAogCSAgLyogVGhpcyByZWxvY2F0aW9uIGRlc2NyaWJlcyB3aGljaCBDKysgdnRhYmxlIGVudHJpZXMgYXJlIGFjdHVhbGx5CiAJICAgICB1c2VkLiAgUmVjb3JkIGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KICAgICAgICAgY2FzZSBSX1NIX0dOVV9WVEVOVFJZOgotICAgICAgICAgIGlmICghX2JmZF9lbGY2NF9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKyAgICAgICAgICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX2FkZGVuZCkpCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAKQEAgLTI2MzMsNyArMjYzNCw3IEBACiAJICAgICAgLyogTWFrZSBzdXJlIHRoaXMgc3ltYm9sIGlzIG91dHB1dCBhcyBhIGR5bmFtaWMgc3ltYm9sLiAgKi8KIAkgICAgICBpZiAoaC0+ZHluaW5keCA9PSAtMSkKIAkJewotCQkgIGlmICghIGJmZF9lbGY2NF9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJCSAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJCSAgICByZXR1cm4gRkFMU0U7CiAJCX0KIApAQCAtMjcxNiw3ICsyNzE3LDcgQEAKIAkgIC8qIE1ha2Ugc3VyZSB0aGlzIHN5bWJvbCBpcyBvdXRwdXQgYXMgYSBkeW5hbWljIHN5bWJvbC4gICovCiAJICBpZiAoaC0+ZHluaW5keCA9PSAtMSkKIAkgICAgewotCSAgICAgIGlmICghIGJmZF9lbGY2NF9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICAgICAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJCXJldHVybiBGQUxTRTsKIAkgICAgfQogCkBAIC0yODg2LDcgKzI4ODcsNyBAQAogCiBzdGF0aWMgYmZkX2Jvb2xlYW4KIHNoNjRfZWxmNjRfYWRkX3N5bWJvbF9ob29rIChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAotCQkJICAgIGNvbnN0IEVsZl9JbnRlcm5hbF9TeW0gKnN5bSwgY29uc3QgY2hhciAqKm5hbWVwLAorCQkJICAgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bSwgY29uc3QgY2hhciAqKm5hbWVwLAogCQkJICAgIGZsYWd3b3JkICpmbGFnc3AgQVRUUklCVVRFX1VOVVNFRCwKIAkJCSAgICBhc2VjdGlvbiAqKnNlY3AsIGJmZF92bWEgKnZhbHApCiB7CkBAIC0zMjk4LDcgKzMyOTksNyBAQAogICAgICAgaC0+dHlwZSA9IFNUVF9PQkpFQ1Q7CiAKICAgICAgIGlmIChpbmZvLT5zaGFyZWQKLQkgICYmICEgX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgJiYgISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAlyZXR1cm4gRkFMU0U7CiAgICAgfQogCkBAIC0zNDI0LDcgKzM0MjUsNyBAQAogICAgICAgLyogTWFrZSBzdXJlIHRoaXMgc3ltYm9sIGlzIG91dHB1dCBhcyBhIGR5bmFtaWMgc3ltYm9sLiAgKi8KICAgICAgIGlmIChoLT5keW5pbmR4ID09IC0xKQogCXsKLQkgIGlmICghIGJmZF9lbGY2NF9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIApAQCAtMzcyNywzMSArMzcyOCwzMSBAQAogCSBkeW5hbWljIGxpbmtlciBhbmQgdXNlZCBieSB0aGUgZGVidWdnZXIuICAqLwogICAgICAgaWYgKGluZm8tPmV4ZWN1dGFibGUpCiAJewotCSAgaWYgKCEgYmZkX2VsZjY0X2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9ERUJVRywgMCkpCisJICBpZiAoIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9ERUJVRywgMCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAKICAgICAgIGlmIChwbHQpCiAJewotCSAgaWYgKCEgYmZkX2VsZjY0X2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9QTFRHT1QsIDApCi0JICAgICAgfHwgISBiZmRfZWxmNjRfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1BMVFJFTFNaLCAwKQotCSAgICAgIHx8ICEgYmZkX2VsZjY0X2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9QTFRSRUwsIERUX1JFTEEpCi0JICAgICAgfHwgISBiZmRfZWxmNjRfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0pNUFJFTCwgMCkpCisJICBpZiAoIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9QTFRHT1QsIDApCisJICAgICAgfHwgIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9QTFRSRUxTWiwgMCkKKwkgICAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1BMVFJFTCwgRFRfUkVMQSkKKwkgICAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0pNUFJFTCwgMCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAKICAgICAgIGlmIChyZWxvY3MpCiAJewotCSAgaWYgKCEgYmZkX2VsZjY0X2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9SRUxBLCAwKQotCSAgICAgIHx8ICEgYmZkX2VsZjY0X2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9SRUxBU1osIDApCi0JICAgICAgfHwgISBiZmRfZWxmNjRfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1JFTEFFTlQsCi0JCQkJCQlzaXplb2YgKEVsZjY0X0V4dGVybmFsX1JlbGEpKSkKKwkgIGlmICghX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1JFTEEsIDApCisJICAgICAgfHwgIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9SRUxBU1osIDApCisJICAgICAgfHwgIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9SRUxBRU5ULAorCQkJCQkgICAgICBzaXplb2YgKEVsZjY0X0V4dGVybmFsX1JlbGEpKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCX0KIAogICAgICAgaWYgKHJlbHRleHQpCiAJewotCSAgaWYgKCEgYmZkX2VsZjY0X2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9URVhUUkVMLCAwKSkKKwkgIGlmICghX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1RFWFRSRUwsIDApKQogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogICAgIH0KZGlmZiAtLWdpdCBhL2JmZC9lbGY2NC1zcGFyYy5jIGIvYmZkL2VsZjY0LXNwYXJjLmMKaW5kZXggNDIyNDMxMC4uZGQzZTQ5NiAxMDA2NDQKLS0tIGEvYmZkL2VsZjY0LXNwYXJjLmMKKysrIGIvYmZkL2VsZjY0LXNwYXJjLmMKQEAgLTEsNiArMSw2IEBACiAvKiBTUEFSQy1zcGVjaWZpYyBzdXBwb3J0IGZvciA2NC1iaXQgRUxGCiAgICBDb3B5cmlnaHQgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKLSAgIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCiAKQEAgLTYxLDcgKzYxLDcgQEAKIHN0YXRpYyBpbnQgc3BhcmM2NF9lbGZfZ2V0X3N5bWJvbF90eXBlCiAgIFBBUkFNUyAoKCBFbGZfSW50ZXJuYWxfU3ltICosIGludCkpOwogc3RhdGljIGJmZF9ib29sZWFuIHNwYXJjNjRfZWxmX2FkZF9zeW1ib2xfaG9vawotICBQQVJBTVMgKChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgY29uc3QgRWxmX0ludGVybmFsX1N5bSAqLAorICBQQVJBTVMgKChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgRWxmX0ludGVybmFsX1N5bSAqLAogCSAgIGNvbnN0IGNoYXIgKiosIGZsYWd3b3JkICosIGFzZWN0aW9uICoqLCBiZmRfdm1hICopKTsKIHN0YXRpYyBiZmRfYm9vbGVhbiBzcGFyYzY0X2VsZl9vdXRwdXRfYXJjaF9zeW1zCiAgIFBBUkFNUyAoKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBQVFIsCkBAIC0xMTc4LDcgKzExNzgsNyBAQAogCSAgICAgIC8qIE1ha2Ugc3VyZSB0aGlzIHN5bWJvbCBpcyBvdXRwdXQgYXMgYSBkeW5hbWljIHN5bWJvbC4gICovCiAJICAgICAgaWYgKGgtPmR5bmluZHggPT0gLTEpCiAJCXsKLQkJICBpZiAoISBiZmRfZWxmNjRfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCQkgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCQkgICAgcmV0dXJuIEZBTFNFOwogCQl9CiAKQEAgLTEyNjEsNyArMTI2MSw3IEBACiAJICAvKiBNYWtlIHN1cmUgdGhpcyBzeW1ib2wgaXMgb3V0cHV0IGFzIGEgZHluYW1pYyBzeW1ib2wuICAqLwogCSAgaWYgKGgtPmR5bmluZHggPT0gLTEpCiAJICAgIHsKLQkgICAgICBpZiAoISBiZmRfZWxmNjRfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgICAgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCQlyZXR1cm4gRkFMU0U7CiAJICAgIH0KIApAQCAtMTM4NSw3ICsxMzg1LDcgQEAKIHNwYXJjNjRfZWxmX2FkZF9zeW1ib2xfaG9vayAoYWJmZCwgaW5mbywgc3ltLCBuYW1lcCwgZmxhZ3NwLCBzZWNwLCB2YWxwKQogICAgICBiZmQgKmFiZmQ7CiAgICAgIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvOwotICAgICBjb25zdCBFbGZfSW50ZXJuYWxfU3ltICpzeW07CisgICAgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bTsKICAgICAgY29uc3QgY2hhciAqKm5hbWVwOwogICAgICBmbGFnd29yZCAqZmxhZ3NwIEFUVFJJQlVURV9VTlVTRUQ7CiAgICAgIGFzZWN0aW9uICoqc2VjcCBBVFRSSUJVVEVfVU5VU0VEOwpAQCAtMTg3Niw3ICsxODc2LDcgQEAKIAkgdGhlIC5keW5hbWljIHNlY3Rpb24uICBUaGUgRFRfREVCVUcgZW50cnkgaXMgZmlsbGVkIGluIGJ5IHRoZQogCSBkeW5hbWljIGxpbmtlciBhbmQgdXNlZCBieSB0aGUgZGVidWdnZXIuICAqLwogI2RlZmluZSBhZGRfZHluYW1pY19lbnRyeShUQUcsIFZBTCkgXAotICBiZmRfZWxmNjRfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIChiZmRfdm1hKSAoVEFHKSwgKGJmZF92bWEpIChWQUwpKQorICBfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgVEFHLCBWQUwpCiAKICAgICAgIGludCByZWc7CiAgICAgICBzdHJ1Y3Qgc3BhcmM2NF9lbGZfYXBwX3JlZyAqIGFwcF9yZWdzOwpAQCAtMTk4OSwxNyArMTk4OSw2IEBACiAgIHJldHVybiBUUlVFOwogfQogDAotLyogVGhpcyBpcyB0aGUgY29uZGl0aW9uIHVuZGVyIHdoaWNoIGZpbmlzaF9keW5hbWljX3N5bWJvbCB3aWxsIGJlIGNhbGxlZAotICAgZnJvbSBlbGZsaW5rLmguICBJZiBlbGZsaW5rLmggZG9lc24ndCBjYWxsIG91ciBmaW5pc2hfZHluYW1pY19zeW1ib2wKLSAgIHJvdXRpbmUsIHdlJ2xsIG5lZWQgdG8gZG8gc29tZXRoaW5nIGFib3V0IGluaXRpYWxpemluZyBhbnkgLnBsdCBhbmQKLSAgIC5nb3QgZW50cmllcyBpbiByZWxvY2F0ZV9zZWN0aW9uLiAgKi8KLSNkZWZpbmUgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTChEWU4sIElORk8sIEgpCQkJXAotICAoKERZTikJCQkJCQkJCVwKLSAgICYmICgoSU5GTyktPnNoYXJlZAkJCQkJCQlcCi0gICAgICAgfHwgKChIKS0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkJXAotICAgJiYgKChIKS0+ZHluaW5keCAhPSAtMQkJCQkJCVwKLSAgICAgICB8fCAoKEgpLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSAhPSAwKSkKLQogLyogUmVsb2NhdGUgYSBTUEFSQzY0IEVMRiBzZWN0aW9uLiAgKi8KIAogc3RhdGljIGJmZF9ib29sZWFuCkBAIC0yMDc5LDEwICsyMDY4LDEwIEBACiAJewogCSAgYmZkX2Jvb2xlYW4gd2FybmVkOwogCi0JICBSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCAoaCwgc3ltX2hhc2hlcywgcl9zeW1uZHgsCi0JCQkJICAgc3ltdGFiX2hkciwgcmVsb2NhdGlvbiwgc2VjLAotCQkJCSAgIHVucmVzb2x2ZWRfcmVsb2MsIGluZm8sCi0JCQkJICAgd2FybmVkKTsKKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoLCBzZWMsIHJlbG9jYXRpb24sCisJCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkKTsKIAkgIGlmICh3YXJuZWQpCiAJICAgIHsKIAkgICAgICAvKiBUbyBhdm9pZCBnZW5lcmF0aW5nIHdhcm5pbmcgbWVzc2FnZXMgYWJvdXQgdHJ1bmNhdGVkCkBAIC0yMzI3LDcgKzIzMTYsNyBAQAogCSAgICAgIEJGRF9BU1NFUlQgKG9mZiAhPSAoYmZkX3ZtYSkgLTEpOwogCSAgICAgIGR5biA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluYW1pY19zZWN0aW9uc19jcmVhdGVkOwogCi0JICAgICAgaWYgKCEgV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTCAoZHluLCBpbmZvLCBoKQorCSAgICAgIGlmICghIFdJTExfQ0FMTF9GSU5JU0hfRFlOQU1JQ19TWU1CT0wgKGR5biwgaW5mby0+c2hhcmVkLCBoKQogCQkgIHx8IChpbmZvLT5zaGFyZWQKIAkJICAgICAgJiYgKGluZm8tPnN5bWJvbGljCiAJCQkgIHx8IGgtPmR5bmluZHggPT0gLTEKZGlmZiAtLWdpdCBhL2JmZC9lbGY2NC14ODYtNjQuYyBiL2JmZC9lbGY2NC14ODYtNjQuYwppbmRleCBhNjg4NjIwLi5hMWQ2MjUwIDEwMDY0NAotLS0gYS9iZmQvZWxmNjQteDg2LTY0LmMKKysrIGIvYmZkL2VsZjY0LXg4Ni02NC5jCkBAIC0xLDUgKzEsNSBAQAogLyogWDg2LTY0IHNwZWNpZmljIHN1cHBvcnQgZm9yIDY0LWJpdCBFTEYKLSAgIENvcHlyaWdodCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBDb250cmlidXRlZCBieSBKYW4gSHViaWNrYSA8amhAc3VzZS5jej4uCiAKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEJGRCwgdGhlIEJpbmFyeSBGaWxlIERlc2NyaXB0b3IgbGlicmFyeS4KQEAgLTk1MSwxNCArOTUxLDE0IEBACiAJICAvKiBUaGlzIHJlbG9jYXRpb24gZGVzY3JpYmVzIHRoZSBDKysgb2JqZWN0IHZ0YWJsZSBoaWVyYXJjaHkuCiAJICAgICBSZWNvbnN0cnVjdCBpdCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSX1g4Nl82NF9HTlVfVlRJTkhFUklUOgotCSAgaWYgKCFfYmZkX2VsZjY0X2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisJICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgd2hpY2ggQysrIHZ0YWJsZSBlbnRyaWVzIGFyZSBhY3R1YWxseQogCSAgICAgdXNlZC4gIFJlY29yZCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSX1g4Nl82NF9HTlVfVlRFTlRSWToKLQkgIGlmICghX2JmZF9lbGY2NF9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKKwkgIGlmICghYmZkX2VsZl9nY19yZWNvcmRfdnRlbnRyeSAoYWJmZCwgc2VjLCBoLCByZWwtPnJfYWRkZW5kKSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKQEAgLTEyNTgsMTcgKzEyNTgsNiBAQAogICByZXR1cm4gVFJVRTsKIH0KIAotLyogVGhpcyBpcyB0aGUgY29uZGl0aW9uIHVuZGVyIHdoaWNoIGVsZjY0X3g4Nl82NF9maW5pc2hfZHluYW1pY19zeW1ib2wKLSAgIHdpbGwgYmUgY2FsbGVkIGZyb20gZWxmbGluay5oLiAgSWYgZWxmbGluay5oIGRvZXNuJ3QgY2FsbCBvdXIKLSAgIGZpbmlzaF9keW5hbWljX3N5bWJvbCByb3V0aW5lLCB3ZSdsbCBuZWVkIHRvIGRvIHNvbWV0aGluZyBhYm91dAotICAgaW5pdGlhbGl6aW5nIGFueSAucGx0IGFuZCAuZ290IGVudHJpZXMgaW4gZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24uICAqLwotI2RlZmluZSBXSUxMX0NBTExfRklOSVNIX0RZTkFNSUNfU1lNQk9MKERZTiwgU0hBUkVELCBIKSBcCi0gICgoRFlOKQkJCQkJCQkJXAotICAgJiYgKChTSEFSRUQpCQkJCQkJCQlcCi0gICAgICAgfHwgKChIKS0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkJXAotICAgJiYgKChIKS0+ZHluaW5keCAhPSAtMQkJCQkJCVwKLSAgICAgICB8fCAoKEgpLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSAhPSAwKSkKLQogLyogQWxsb2NhdGUgc3BhY2UgaW4gLnBsdCwgLmdvdCBhbmQgYXNzb2NpYXRlZCByZWxvYyBzZWN0aW9ucyBmb3IKICAgIGR5bmFtaWMgcmVsb2NzLiAgKi8KIApAQCAtMTI5Nyw3ICsxMjg2LDcgQEAKICAgICAgIGlmIChoLT5keW5pbmR4ID09IC0xCiAJICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkKIAl7Ci0JICBpZiAoISBiZmRfZWxmNjRfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAKQEAgLTEzNjUsNyArMTM1NCw3IEBACiAgICAgICBpZiAoaC0+ZHluaW5keCA9PSAtMQogCSAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCiAJewotCSAgaWYgKCEgYmZkX2VsZjY0X2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogCkBAIC0xNDUwLDcgKzE0MzksNyBAQAogCSAgaWYgKGgtPmR5bmluZHggPT0gLTEKIAkgICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgPT0gMCkKIAkgICAgewotCSAgICAgIGlmICghIGJmZF9lbGY2NF9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICAgICAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJCXJldHVybiBGQUxTRTsKIAkgICAgfQogCkBAIC0xNjgzLDcgKzE2NzIsNyBAQAogCSB0aGUgLmR5bmFtaWMgc2VjdGlvbi4JVGhlIERUX0RFQlVHIGVudHJ5IGlzIGZpbGxlZCBpbiBieSB0aGUKIAkgZHluYW1pYyBsaW5rZXIgYW5kIHVzZWQgYnkgdGhlIGRlYnVnZ2VyLiAgKi8KICNkZWZpbmUgYWRkX2R5bmFtaWNfZW50cnkoVEFHLCBWQUwpIFwKLSAgYmZkX2VsZjY0X2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCAoYmZkX3ZtYSkgKFRBRyksIChiZmRfdm1hKSAoVkFMKSkKKyAgX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIFRBRywgVkFMKQogCiAgICAgICBpZiAoaW5mby0+ZXhlY3V0YWJsZSkKIAl7CkBAIC0xODIwLDEwICsxODA5LDEwIEBACiAJewogCSAgYmZkX2Jvb2xlYW4gd2FybmVkOwogCi0JICBSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCAoaCwgc3ltX2hhc2hlcywgcl9zeW1uZHgsCi0JCQkJICAgc3ltdGFiX2hkciwgcmVsb2NhdGlvbiwgc2VjLAotCQkJCSAgIHVucmVzb2x2ZWRfcmVsb2MsIGluZm8sCi0JCQkJICAgd2FybmVkKTsKKwkgIFJFTE9DX0ZPUl9HTE9CQUxfU1lNQk9MIChpbmZvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sIHJlbCwKKwkJCQkgICByX3N5bW5keCwgc3ltdGFiX2hkciwgc3ltX2hhc2hlcywKKwkJCQkgICBoLCBzZWMsIHJlbG9jYXRpb24sCisJCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgd2FybmVkKTsKIAl9CiAgICAgICAvKiBXaGVuIGdlbmVyYXRpbmcgYSBzaGFyZWQgb2JqZWN0LCB0aGUgcmVsb2NhdGlvbnMgaGFuZGxlZCBoZXJlIGFyZQogCSBjb3BpZWQgaW50byB0aGUgb3V0cHV0IGZpbGUgdG8gYmUgcmVzb2x2ZWQgYXQgcnVuIHRpbWUuICAqLwpkaWZmIC0tZ2l0IGEvYmZkL2VsZmFybS1uYWJpLmMgYi9iZmQvZWxmYXJtLW5hYmkuYwppbmRleCA1ZWNiZThlLi45NjFhNTJhIDEwMDY0NAotLS0gYS9iZmQvZWxmYXJtLW5hYmkuYworKysgYi9iZmQvZWxmYXJtLW5hYmkuYwpAQCAtNTE2LDYgKzUxNiw0NyBAQAogCSAwLAkJCS8qIGRzdF9tYXNrICovCiAJIEZBTFNFKSwJCS8qIHBjcmVsX29mZnNldCAqLwogCisgIEhPV1RPIChSX0FSTV9BTFVfUENSRUw3XzAsCS8qIHR5cGUgKi8KKwkgMCwJCQkvKiByaWdodHNoaWZ0ICovCisJIDIsCQkJLyogc2l6ZSAoMCA9IGJ5dGUsIDEgPSBzaG9ydCwgMiA9IGxvbmcpICovCisJIDEyLAkJCS8qIGJpdHNpemUgKi8KKwkgVFJVRSwJCQkvKiBwY19yZWxhdGl2ZSAqLworCSAwLAkJCS8qIGJpdHBvcyAqLworCSBjb21wbGFpbl9vdmVyZmxvd19kb250LC8qIGNvbXBsYWluX29uX292ZXJmbG93ICovCisJIGJmZF9lbGZfZ2VuZXJpY19yZWxvYywJLyogc3BlY2lhbF9mdW5jdGlvbiAqLworCSAiUl9BUk1fQUxVX1BDUkVMXzdfMCIsCS8qIG5hbWUgKi8KKwkgRkFMU0UsCQkJLyogcGFydGlhbF9pbnBsYWNlICovCisJIDB4MDAwMDBmZmYsCQkvKiBzcmNfbWFzayAqLworCSAweDAwMDAwZmZmLAkJLyogZHN0X21hc2sgKi8KKwkgVFJVRSksCQkJLyogcGNyZWxfb2Zmc2V0ICovCisKKyAgSE9XVE8gKFJfQVJNX0FMVV9QQ1JFTDE1XzgsCS8qIHR5cGUgKi8KKwkgMCwJCQkvKiByaWdodHNoaWZ0ICovCisJIDIsCQkJLyogc2l6ZSAoMCA9IGJ5dGUsIDEgPSBzaG9ydCwgMiA9IGxvbmcpICovCisJIDEyLAkJCS8qIGJpdHNpemUgKi8KKwkgVFJVRSwJCQkvKiBwY19yZWxhdGl2ZSAqLworCSA4LAkJCS8qIGJpdHBvcyAqLworCSBjb21wbGFpbl9vdmVyZmxvd19kb250LC8qIGNvbXBsYWluX29uX292ZXJmbG93ICovCisJIGJmZF9lbGZfZ2VuZXJpY19yZWxvYywJLyogc3BlY2lhbF9mdW5jdGlvbiAqLworCSAiUl9BUk1fQUxVX1BDUkVMXzE1XzgiLC8qIG5hbWUgKi8KKwkgRkFMU0UsCQkJLyogcGFydGlhbF9pbnBsYWNlICovCisJIDB4MDAwMDBmZmYsCQkvKiBzcmNfbWFzayAqLworCSAweDAwMDAwZmZmLAkJLyogZHN0X21hc2sgKi8KKwkgVFJVRSksCQkJLyogcGNyZWxfb2Zmc2V0ICovCisKKyAgSE9XVE8gKFJfQVJNX0FMVV9QQ1JFTDIzXzE1LAkvKiB0eXBlICovCisJIDAsCQkJLyogcmlnaHRzaGlmdCAqLworCSAyLAkJCS8qIHNpemUgKDAgPSBieXRlLCAxID0gc2hvcnQsIDIgPSBsb25nKSAqLworCSAxMiwJCQkvKiBiaXRzaXplICovCisJIFRSVUUsCQkJLyogcGNfcmVsYXRpdmUgKi8KKwkgMTYsCQkJLyogYml0cG9zICovCisJIGNvbXBsYWluX292ZXJmbG93X2RvbnQsLyogY29tcGxhaW5fb25fb3ZlcmZsb3cgKi8KKwkgYmZkX2VsZl9nZW5lcmljX3JlbG9jLAkvKiBzcGVjaWFsX2Z1bmN0aW9uICovCisJICJSX0FSTV9BTFVfUENSRUxfMjNfMTUiLC8qIG5hbWUgKi8KKwkgRkFMU0UsCQkJLyogcGFydGlhbF9pbnBsYWNlICovCisJIDB4MDAwMDBmZmYsCQkvKiBzcmNfbWFzayAqLworCSAweDAwMDAwZmZmLAkJLyogZHN0X21hc2sgKi8KKwkgVFJVRSksCQkJLyogcGNyZWxfb2Zmc2V0ICovCiB9OwogCiAgIC8qIEdOVSBleHRlbnNpb24gdG8gcmVjb3JkIEMrKyB2dGFibGUgaGllcmFyY2h5ICovCmRpZmYgLS1naXQgYS9iZmQvZWxmY29kZS5oIGIvYmZkL2VsZmNvZGUuaAppbmRleCA4N2Q5NmZhLi5iYzY5ZDQ4IDEwMDY0NAotLS0gYS9iZmQvZWxmY29kZS5oCisrKyBiL2JmZC9lbGZjb2RlLmgKQEAgLTExNSwyNCArMTE1LDEwIEBACiAjZGVmaW5lIGVsZl9ub19pbmZvX3RvX2hvd3RvCQlOQU1FKGJmZF9lbGYsbm9faW5mb190b19ob3d0bykKICNkZWZpbmUgZWxmX25vX2luZm9fdG9faG93dG9fcmVsCU5BTUUoYmZkX2VsZixub19pbmZvX3RvX2hvd3RvX3JlbCkKICNkZWZpbmUgZWxmX2ZpbmRfc2VjdGlvbgkJTkFNRShiZmRfZWxmLGZpbmRfc2VjdGlvbikKLSNkZWZpbmUgZWxmX2JmZF9saW5rX2FkZF9zeW1ib2xzCU5BTUUoYmZkX2VsZixiZmRfbGlua19hZGRfc3ltYm9scykKLSNkZWZpbmUgZWxmX2FkZF9keW5hbWljX2VudHJ5CQlOQU1FKGJmZF9lbGYsYWRkX2R5bmFtaWNfZW50cnkpCiAjZGVmaW5lIGVsZl93cml0ZV9zaGRyc19hbmRfZWhkcglOQU1FKGJmZF9lbGYsd3JpdGVfc2hkcnNfYW5kX2VoZHIpCiAjZGVmaW5lIGVsZl93cml0ZV9vdXRfcGhkcnMJCU5BTUUoYmZkX2VsZix3cml0ZV9vdXRfcGhkcnMpCiAjZGVmaW5lIGVsZl93cml0ZV9yZWxvY3MJCU5BTUUoYmZkX2VsZix3cml0ZV9yZWxvY3MpCiAjZGVmaW5lIGVsZl9zbHVycF9yZWxvY190YWJsZQkJTkFNRShiZmRfZWxmLHNsdXJwX3JlbG9jX3RhYmxlKQotI2RlZmluZSBlbGZfYmZkX2Rpc2NhcmRfaW5mbwkJTkFNRShiZmRfZWxmLGRpc2NhcmRfaW5mbykKLSNkZWZpbmUgZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3AJTkFNRShfYmZkX2VsZixyZWxvY19zeW1ib2xfZGVsZXRlZF9wKQotI2RlZmluZSBlbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgIF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sCi0jZGVmaW5lIGVsZl9iZmRfZmluYWxfbGluawkJTkFNRShiZmRfZWxmLGJmZF9maW5hbF9saW5rKQotI2RlZmluZSBlbGZfZ2Nfc2VjdGlvbnMJCQlOQU1FKF9iZmRfZWxmLGdjX3NlY3Rpb25zKQotI2RlZmluZSBlbGZfZ2NfY29tbW9uX2ZpbmFsaXplX2dvdF9vZmZzZXRzIFwKLSAgTkFNRShfYmZkX2VsZixnY19jb21tb25fZmluYWxpemVfZ290X29mZnNldHMpCi0jZGVmaW5lIGVsZl9nY19jb21tb25fZmluYWxfbGluawlOQU1FKF9iZmRfZWxmLGdjX2NvbW1vbl9maW5hbF9saW5rKQotI2RlZmluZSBlbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdAkJTkFNRShfYmZkX2VsZixnY19yZWNvcmRfdnRpbmhlcml0KQotI2RlZmluZSBlbGZfZ2NfcmVjb3JkX3Z0ZW50cnkJCU5BTUUoX2JmZF9lbGYsZ2NfcmVjb3JkX3Z0ZW50cnkpCi0jZGVmaW5lIGVsZl9saW5rX3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbCBcCi0gIE5BTUUoX2JmZF9lbGYsbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wpCiAKICNpZiBBUkNIX1NJWkUgPT0gNjQKICNkZWZpbmUgRUxGX1JfSU5GTyhYLFkpCUVMRjY0X1JfSU5GTyhYLFkpCkBAIC0xNTEsMTAgKzEzNyw2IEBACiAjZGVmaW5lIExPR19GSUxFX0FMSUdOCTIKICNlbmRpZgogCi0jZGVmaW5lIGVsZl9zdHJpbmd0YWJfaW5pdCBfYmZkX2VsZl9zdHJpbmd0YWJfaW5pdAotCi0jZGVmaW5lIHNlY3Rpb25fZnJvbV9lbGZfaW5kZXggYmZkX3NlY3Rpb25fZnJvbV9lbGZfaW5kZXgKLQogI2lmZGVmIERFQlVHCiBzdGF0aWMgdm9pZCBlbGZfZGVidWdfc2VjdGlvbiAoaW50LCBFbGZfSW50ZXJuYWxfU2hkciAqKTsKIHN0YXRpYyB2b2lkIGVsZl9kZWJ1Z19maWxlIChFbGZfSW50ZXJuYWxfRWhkciAqKTsKQEAgLTExMTEsOCArMTA5Myw4IEBACiAJICBlbHNlIGlmIChpc3ltLT5zdF9zaG5keCA8IFNITl9MT1JFU0VSVkUKIAkJICAgfHwgaXN5bS0+c3Rfc2huZHggPiBTSE5fSElSRVNFUlZFKQogCSAgICB7Ci0JICAgICAgc3ltLT5zeW1ib2wuc2VjdGlvbiA9IHNlY3Rpb25fZnJvbV9lbGZfaW5kZXggKGFiZmQsCi0JCQkJCQkJICAgIGlzeW0tPnN0X3NobmR4KTsKKwkgICAgICBzeW0tPnN5bWJvbC5zZWN0aW9uID0gYmZkX3NlY3Rpb25fZnJvbV9lbGZfaW5kZXggKGFiZmQsCisJCQkJCQkJCWlzeW0tPnN0X3NobmR4KTsKIAkgICAgICBpZiAoc3ltLT5zeW1ib2wuc2VjdGlvbiA9PSBOVUxMKQogCQl7CiAJCSAgLyogVGhpcyBzeW1ib2wgaXMgaW4gYSBzZWN0aW9uIGZvciB3aGljaCB3ZSBkaWQgbm90CkBAIC0xNzM3LDcgKzE3MTksNiBAQAogfQogDAogI2luY2x1ZGUgImVsZmNvcmUuaCIKLSNpbmNsdWRlICJlbGZsaW5rLmgiCiAMCiAvKiBTaXplLWRlcGVuZGVudCBkYXRhIGFuZCBmdW5jdGlvbnMuICAqLwogY29uc3Qgc3RydWN0IGVsZl9zaXplX2luZm8gTkFNRShfYmZkX2VsZixzaXplX2luZm8pID0gewpkaWZmIC0tZ2l0IGEvYmZkL2VsZmxpbmsuYyBiL2JmZC9lbGZsaW5rLmMKaW5kZXggNTc3MGIyNS4uNGMyN2Y4OCAxMDA2NDQKLS0tIGEvYmZkL2VsZmxpbmsuYworKysgYi9iZmQvZWxmbGluay5jCkBAIC0yNCw2ICsyNCw4IEBACiAjaW5jbHVkZSAibGliYmZkLmgiCiAjZGVmaW5lIEFSQ0hfU0laRSAwCiAjaW5jbHVkZSAiZWxmLWJmZC5oIgorI2luY2x1ZGUgInNhZmUtY3R5cGUuaCIKKyNpbmNsdWRlICJsaWJpYmVydHkuaCIKIAogYmZkX2Jvb2xlYW4KIF9iZmRfZWxmX2NyZWF0ZV9nb3Rfc2VjdGlvbiAoYmZkICphYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbykKQEAgLTg5LDcgKzkxLDcgQEAKICAgICAgIGgtPnR5cGUgPSBTVFRfT0JKRUNUOwogCiAgICAgICBpZiAoISBpbmZvLT5leGVjdXRhYmxlCi0JICAmJiAhIF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkgICYmICEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJcmV0dXJuIEZBTFNFOwogCiAgICAgICBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmhnb3QgPSBoOwpAQCAtMjE5LDcgKzIyMSw3IEBACiAgIGgtPnR5cGUgPSBTVFRfT0JKRUNUOwogCiAgIGlmICghIGluZm8tPmV4ZWN1dGFibGUKLSAgICAgICYmICEgX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorICAgICAgJiYgISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKICAgICByZXR1cm4gRkFMU0U7CiAKICAgcyA9IGJmZF9tYWtlX3NlY3Rpb24gKGFiZmQsICIuaGFzaCIpOwpAQCAtMjg0LDcgKzI4Niw3IEBACiAgICAgICBoLT50eXBlID0gU1RUX09CSkVDVDsKIAogICAgICAgaWYgKCEgaW5mby0+ZXhlY3V0YWJsZQotCSAgJiYgISBfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisJICAmJiAhIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogCXJldHVybiBGQUxTRTsKICAgICB9CiAKQEAgLTM0Niw4ICszNDgsOCBAQAogICAgb25lLiAgKi8KIAogYmZkX2Jvb2xlYW4KLV9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKLQkJCQkgICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoKQorYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCisJCQkJICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoKQogewogICBpZiAoaC0+ZHluaW5keCA9PSAtMSkKICAgICB7CkBAIC00MzAsNiArNDMyLDEzIEBACiAgIGlmIChoID09IE5VTEwpCiAgICAgcmV0dXJuIEZBTFNFOwogCisgIC8qIFNpbmNlIHdlJ3JlIGRlZmluaW5nIHRoZSBzeW1ib2wsIGRvbid0IGxldCBpdCBzZWVtIHRvIGhhdmUgbm90CisgICAgIGJlZW4gZGVmaW5lZC4gIHJlY29yZF9keW5hbWljX3N5bWJvbCBhbmQgc2l6ZV9keW5hbWljX3NlY3Rpb25zCisgICAgIG1heSBkZXBlbmQgb24gdGhpcy4gICovCisgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWsKKyAgICAgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmaW5lZCkKKyAgICBoLT5yb290LnR5cGUgPSBiZmRfbGlua19oYXNoX25ldzsKKwogICBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfbmV3KQogICAgIGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJj0gfkVMRl9MSU5LX05PTl9FTEY7CiAKQEAgLTQ1OCw3ICs0NjcsNyBAQAogICAgICAgIHx8IGluZm8tPnNoYXJlZCkKICAgICAgICYmIGgtPmR5bmluZHggPT0gLTEpCiAgICAgewotICAgICAgaWYgKCEgX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorICAgICAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJcmV0dXJuIEZBTFNFOwogCiAgICAgICAvKiBJZiB0aGlzIGlzIGEgd2VhayBkZWZpbmVkIHN5bWJvbCwgYW5kIHdlIGtub3cgYSBjb3JyZXNwb25kaW5nCkBAIC00NjcsNyArNDc2LDcgQEAKICAgICAgIGlmIChoLT53ZWFrZGVmICE9IE5VTEwKIAkgICYmIGgtPndlYWtkZWYtPmR5bmluZHggPT0gLTEpCiAJewotCSAgaWYgKCEgX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgtPndlYWtkZWYpKQorCSAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaC0+d2Vha2RlZikpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAgICAgfQpAQCAtNDgwLDkgKzQ4OSw5IEBACiAgICBpbiBhIGRpc2NhcmRlZCBzZWN0aW9uLCBlZy4gYSBkaXNjYXJkZWQgbGluay1vbmNlIHNlY3Rpb24gc3ltYm9sLiAgKi8KIAogaW50Ci1lbGZfbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAotCQkJCSAgICAgIGJmZCAqaW5wdXRfYmZkLAotCQkJCSAgICAgIGxvbmcgaW5wdXRfaW5keCkKK2JmZF9lbGZfbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAorCQkJCQkgIGJmZCAqaW5wdXRfYmZkLAorCQkJCQkgIGxvbmcgaW5wdXRfaW5keCkKIHsKICAgYmZkX3NpemVfdHlwZSBhbXQ7CiAgIHN0cnVjdCBlbGZfbGlua19sb2NhbF9keW5hbWljX2VudHJ5ICplbnRyeTsKQEAgLTY0Niw4ICs2NTUsNyBAQAogICAgVFlQRV9DSEFOR0VfT0sgaWYgaXQgaXMgT0sgZm9yIHRoZSB0eXBlIHRvIGNoYW5nZS4gIFdlIHNldAogICAgU0laRV9DSEFOR0VfT0sgaWYgaXQgaXMgT0sgZm9yIHRoZSBzaXplIHRvIGNoYW5nZS4gIEJ5IE9LIHRvCiAgICBjaGFuZ2UsIHdlIG1lYW4gdGhhdCB3ZSBzaG91bGRuJ3Qgd2FybiBpZiB0aGUgdHlwZSBvciBzaXplIGRvZXMKLSAgIGNoYW5nZS4gRFRfTkVFREVEIGluZGljYXRlcyBpZiBpdCBjb21lcyBmcm9tIGEgRFRfTkVFREVEIGVudHJ5IG9mCi0gICBhIHNoYXJlZCBvYmplY3QuICAqLworICAgY2hhbmdlLiAgKi8KIAogYmZkX2Jvb2xlYW4KIF9iZmRfZWxmX21lcmdlX3N5bWJvbCAoYmZkICphYmZkLApAQCAtNjYwLDggKzY2OCw3IEBACiAJCSAgICAgICBiZmRfYm9vbGVhbiAqc2tpcCwKIAkJICAgICAgIGJmZF9ib29sZWFuICpvdmVycmlkZSwKIAkJICAgICAgIGJmZF9ib29sZWFuICp0eXBlX2NoYW5nZV9vaywKLQkJICAgICAgIGJmZF9ib29sZWFuICpzaXplX2NoYW5nZV9vaywKLQkJICAgICAgIGJmZF9ib29sZWFuIGR0X25lZWRlZCkKKwkJICAgICAgIGJmZF9ib29sZWFuICpzaXplX2NoYW5nZV9vaykKIHsKICAgYXNlY3Rpb24gKnNlYzsKICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmg7CkBAIC02NjksNyArNjc2LDcgQEAKICAgaW50IGJpbmQ7CiAgIGJmZCAqb2xkYmZkOwogICBiZmRfYm9vbGVhbiBuZXdkeW4sIG9sZGR5biwgb2xkZGVmLCBuZXdkZWYsIG5ld2R5bmNvbW1vbiwgb2xkZHluY29tbW9uOwotICBiZmRfYm9vbGVhbiBuZXd3ZWFrZGVmLCBvbGR3ZWFrZGVmLCBuZXd3ZWFrdW5kZWYsIG9sZHdlYWt1bmRlZjsKKyAgYmZkX2Jvb2xlYW4gbmV3d2Vhaywgb2xkd2VhazsKIAogICAqc2tpcCA9IEZBTFNFOwogICAqb3ZlcnJpZGUgPSBGQUxTRTsKQEAgLTgwNyw3ICs4MTQsNyBAQAogCSAgICAgaXMgdGhlIGZpcnN0IHRpbWUgd2Ugc2VlIGl0IGluIGEgZHluYW1pYyBvYmplY3QsIHdlIG1hcmsKIAkgICAgIGlmIGl0IGlzIHdlYWsuIE90aGVyd2lzZSwgd2UgY2xlYXIgaXQuICAqLwogCSAgaWYgKChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfSEFTSF9SRUZfRFlOQU1JQykgPT0gMCkKLQkgICAgeyAKKwkgICAgewogCSAgICAgIGlmIChiaW5kID09IFNUQl9XRUFLKQogCQloLT5lbGZfbGlua19oYXNoX2ZsYWdzIHw9IEVMRl9MSU5LX0RZTkFNSUNfV0VBSzsKIAkgICAgfQpAQCAtODMwLDcgKzgzNyw3IEBACiAKIAkgRklYTUU6IFNob3VsZCB3ZSBjaGVjayB0eXBlIGFuZCBzaXplIGZvciBwcm90ZWN0ZWQgc3ltYm9sPyAgKi8KICAgICAgIGlmIChFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpID09IFNUVl9QUk9URUNURUQpCi0JcmV0dXJuIF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKTsKKwlyZXR1cm4gYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCk7CiAgICAgICBlbHNlCiAJcmV0dXJuIFRSVUU7CiAgICAgfQpAQCAtODQzLDggKzg1MCwyNiBAQAogCSBvYmplY3QsIHdlIHJlbW92ZSB0aGUgb2xkIGRlZmluaXRpb24uICAqLwogICAgICAgaWYgKCgqc3ltX2hhc2gpLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9pbmRpcmVjdCkKIAloID0gKnN5bV9oYXNoOwotICAgICAgaC0+cm9vdC50eXBlID0gYmZkX2xpbmtfaGFzaF9uZXc7Ci0gICAgICBoLT5yb290LnUudW5kZWYuYWJmZCA9IE5VTEw7CisKKyAgICAgIGlmICgoaC0+cm9vdC51bmRfbmV4dCB8fCBpbmZvLT5oYXNoLT51bmRlZnNfdGFpbCA9PSAmaC0+cm9vdCkKKwkgICYmIGJmZF9pc191bmRfc2VjdGlvbiAoc2VjKSkKKwl7CisJICAvKiBJZiB0aGUgbmV3IHN5bWJvbCBpcyB1bmRlZmluZWQgYW5kIHRoZSBvbGQgc3ltYm9sIHdhcworCSAgICAgYWxzbyB1bmRlZmluZWQgYmVmb3JlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQorCSAgICAgX2JmZF9nZW5lcmljX2xpbmtfYWRkX29uZV9zeW1ib2wgZG9lc24ndCBtZXNzCisJICAgICB1cCB0aGUgbGlua2VyIGhhc2ggdGFibGUgdW5kZWZzIGxpc3QuIFNpbmNlIHRoZSBvbGQKKwkgICAgIGRlZmluaXRpb24gY2FtZSBmcm9tIGEgZHluYW1pYyBvYmplY3QsIGl0IGlzIHN0aWxsIG9uIHRoZQorCSAgICAgdW5kZWZzIGxpc3QuICAqLworCSAgaC0+cm9vdC50eXBlID0gYmZkX2xpbmtfaGFzaF91bmRlZmluZWQ7CisJICAvKiBGSVhNRTogV2hhdCBpZiB0aGUgbmV3IHN5bWJvbCBpcyB3ZWFrIHVuZGVmaW5lZD8gICovCisJICBoLT5yb290LnUudW5kZWYuYWJmZCA9IGFiZmQ7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGgtPnJvb3QudHlwZSA9IGJmZF9saW5rX2hhc2hfbmV3OworCSAgaC0+cm9vdC51LnVuZGVmLmFiZmQgPSBOVUxMOworCX0KKwogICAgICAgaWYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX0RFRl9EWU5BTUlDKQogCXsKIAkgIGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJj0gfkVMRl9MSU5LX0hBU0hfREVGX0RZTkFNSUM7CkBAIC04NTcsNDggKzg4MiwzOSBAQAogICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQogCi0gIC8qIFdlIG5lZWQgdG8gdHJlYXQgd2VhayBkZWZpbml0aW9uIHJpZ2h0LCBkZXBlbmRpbmcgb24gaWYgdGhlcmUgaXMgYQotICAgICBkZWZpbml0aW9uIGZyb20gYSBkeW5hbWljIG9iamVjdC4gICovCi0gIGlmIChiaW5kID09IFNUQl9XRUFLKQotICAgIHsKLSAgICAgIGlmIChvbGRkZWYpCi0JewotCSAgIG5ld3dlYWtkZWYgPSBUUlVFOwotCSAgIG5ld3dlYWt1bmRlZiA9IEZBTFNFOwotCX0KLSAgICAgIGVsc2UKLQl7Ci0JICAgbmV3d2Vha2RlZiA9IEZBTFNFOwotCSAgIG5ld3dlYWt1bmRlZiA9IFRSVUU7Ci0JfQotICAgIH0KLSAgZWxzZQotICAgIG5ld3dlYWtkZWYgPSBuZXd3ZWFrdW5kZWYgPSBGQUxTRTsKKyAgLyogRGlmZmVyZW50aWF0ZSBzdHJvbmcgYW5kIHdlYWsgc3ltYm9scy4gICovCisgIG5ld3dlYWsgPSBiaW5kID09IFNUQl9XRUFLOworICBvbGR3ZWFrID0gKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZndlYWsKKwkgICAgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmd2Vhayk7CiAKLSAgLyogSWYgdGhlIG5ldyB3ZWFrIGRlZmluaXRpb24gY29tZXMgZnJvbSBhIHJlbG9jYXRhYmxlIGZpbGUgYW5kIHRoZQotICAgICBvbGQgc3ltYm9sIGNvbWVzIGZyb20gYSBkeW5hbWljIG9iamVjdCwgd2UgdHJlYXQgdGhlIG5ldyBvbmUgYXMKLSAgICAgc3Ryb25nLiAgKi8KLSAgaWYgKG5ld3dlYWtkZWYgJiYgIW5ld2R5biAmJiBvbGRkeW4pCi0gICAgbmV3d2Vha2RlZiA9IEZBTFNFOworICAvKiBJZiBhIG5ldyB3ZWFrIHN5bWJvbCBjb21lcyBmcm9tIGEgcmVndWxhciBmaWxlIGFuZCB0aGUgb2xkIHN5bWJvbAorICAgICBjb21lcyBmcm9tIGEgZHluYW1pYyBsaWJyYXJ5LCB3ZSB0cmVhdCB0aGUgbmV3IG9uZSBhcyBzdHJvbmcuCisgICAgIFNpbWlsYXJseSwgYW4gb2xkIHdlYWsgc3ltYm9sIGZyb20gYSByZWd1bGFyIGZpbGUgaXMgdHJlYXRlZCBhcworICAgICBzdHJvbmcgd2hlbiB0aGUgbmV3IHN5bWJvbCBjb21lcyBmcm9tIGEgZHluYW1pYyBsaWJyYXJ5LiAgRnVydGhlciwKKyAgICAgYW4gb2xkIHdlYWsgc3ltYm9sIGZyb20gYSBkeW5hbWljIGxpYnJhcnkgaXMgdHJlYXRlZCBhcyBzdHJvbmcgaWYKKyAgICAgdGhlIG5ldyBzeW1ib2wgaXMgZnJvbSBhIGR5bmFtaWMgbGlicmFyeS4gIFRoaXMgcmVmbGVjdHMgdGhlIHdheQorICAgICBnbGliYydzIGxkLnNvIHdvcmtzLiAgKi8KKyAgaWYgKCFuZXdkeW4gJiYgb2xkZHluKQorICAgIG5ld3dlYWsgPSBGQUxTRTsKKyAgaWYgKG5ld2R5bikKKyAgICBvbGR3ZWFrID0gRkFMU0U7CiAKLSAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZndlYWspCi0gICAgewotICAgICAgb2xkd2Vha2RlZiA9IFRSVUU7Ci0gICAgICBvbGR3ZWFrdW5kZWYgPSBGQUxTRTsKLSAgICB9Ci0gIGVsc2UgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmd2VhaykKLSAgICB7Ci0gICAgICBvbGR3ZWFrZGVmID0gRkFMU0U7Ci0gICAgICBvbGR3ZWFrdW5kZWYgPSBUUlVFOwotICAgIH0KLSAgZWxzZQotICAgIG9sZHdlYWtkZWYgPSBvbGR3ZWFrdW5kZWYgPSBGQUxTRTsKKyAgLyogSXQncyBPSyB0byBjaGFuZ2UgdGhlIHR5cGUgaWYgZWl0aGVyIHRoZSBleGlzdGluZyBzeW1ib2wgb3IgdGhlCisgICAgIG5ldyBzeW1ib2wgaXMgd2Vhay4gIEEgdHlwZSBjaGFuZ2UgaXMgYWxzbyBPSyBpZiB0aGUgb2xkIHN5bWJvbAorICAgICBpcyB1bmRlZmluZWQgYW5kIHRoZSBuZXcgc3ltYm9sIGlzIGRlZmluZWQuICAqLwogCi0gIC8qIElmIHRoZSBvbGQgd2VhayBkZWZpbml0aW9uIGNvbWVzIGZyb20gYSByZWxvY2F0YWJsZSBmaWxlIGFuZCB0aGUKLSAgICAgbmV3IHN5bWJvbCBjb21lcyBmcm9tIGEgZHluYW1pYyBvYmplY3QsIHdlIHRyZWF0IHRoZSBvbGQgb25lIGFzCi0gICAgIHN0cm9uZy4gICovCi0gIGlmIChvbGR3ZWFrZGVmICYmICFvbGRkeW4gJiYgbmV3ZHluKQotICAgIG9sZHdlYWtkZWYgPSBGQUxTRTsKKyAgaWYgKG9sZHdlYWsKKyAgICAgIHx8IG5ld3dlYWsKKyAgICAgIHx8IChuZXdkZWYKKwkgICYmIGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmaW5lZCkpCisgICAgKnR5cGVfY2hhbmdlX29rID0gVFJVRTsKKworICAvKiBJdCdzIE9LIHRvIGNoYW5nZSB0aGUgc2l6ZSBpZiBlaXRoZXIgdGhlIGV4aXN0aW5nIHN5bWJvbCBvciB0aGUKKyAgICAgbmV3IHN5bWJvbCBpcyB3ZWFrLCBvciBpZiB0aGUgb2xkIHN5bWJvbCBpcyB1bmRlZmluZWQuICAqLworCisgIGlmICgqdHlwZV9jaGFuZ2Vfb2sKKyAgICAgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmaW5lZCkKKyAgICAqc2l6ZV9jaGFuZ2Vfb2sgPSBUUlVFOwogCiAgIC8qIE5FV0RZTkNPTU1PTiBhbmQgT0xERFlOQ09NTU9OIGluZGljYXRlIHdoZXRoZXIgdGhlIG5ldyBvciBvbGQKICAgICAgc3ltYm9sLCByZXNwZWN0aXZlbHksIGFwcGVhcnMgdG8gYmUgYSBjb21tb24gc3ltYm9sIGluIGEgZHluYW1pYwpAQCAtOTI1LDExICs5NDEsMTAgQEAKIAogICBpZiAobmV3ZHluCiAgICAgICAmJiBuZXdkZWYKKyAgICAgICYmICFuZXd3ZWFrCiAgICAgICAmJiAoc2VjLT5mbGFncyAmIFNFQ19BTExPQykgIT0gMAogICAgICAgJiYgKHNlYy0+ZmxhZ3MgJiBTRUNfTE9BRCkgPT0gMAogICAgICAgJiYgc3ltLT5zdF9zaXplID4gMAotICAgICAgJiYgIW5ld3dlYWtkZWYKLSAgICAgICYmICFuZXd3ZWFrdW5kZWYKICAgICAgICYmIEVMRl9TVF9UWVBFIChzeW0tPnN0X2luZm8pICE9IFNUVF9GVU5DKQogICAgIG5ld2R5bmNvbW1vbiA9IFRSVUU7CiAgIGVsc2UKQEAgLTk0NywyOCArOTYyLDYgQEAKICAgZWxzZQogICAgIG9sZGR5bmNvbW1vbiA9IEZBTFNFOwogCi0gIC8qIEl0J3MgT0sgdG8gY2hhbmdlIHRoZSB0eXBlIGlmIGVpdGhlciB0aGUgZXhpc3Rpbmcgc3ltYm9sIG9yIHRoZQotICAgICBuZXcgc3ltYm9sIGlzIHdlYWsgdW5sZXNzIGl0IGNvbWVzIGZyb20gYSBEVF9ORUVERUQgZW50cnkgb2YKLSAgICAgYSBzaGFyZWQgb2JqZWN0LCBpbiB3aGljaCBjYXNlLCB0aGUgRFRfTkVFREVEIGVudHJ5IG1heSBub3QgYmUKLSAgICAgcmVxdWlyZWQgYXQgdGhlIHJ1biB0aW1lLiBUaGUgdHlwZSBjaGFuZ2UgaXMgYWxzbyBPSyBpZiB0aGUKLSAgICAgb2xkIHN5bWJvbCBpcyB1bmRlZmluZWQgYW5kIHRoZSBuZXcgc3ltYm9sIGlzIGRlZmluZWQuICAqLwotCi0gIGlmICgoISBkdF9uZWVkZWQgJiYgb2xkd2Vha2RlZikKLSAgICAgIHx8IG9sZHdlYWt1bmRlZgotICAgICAgfHwgbmV3d2Vha2RlZgotICAgICAgfHwgbmV3d2Vha3VuZGVmCi0gICAgICB8fCAobmV3ZGVmCi0JICAmJiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZpbmVkCi0JICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKSkpCi0gICAgKnR5cGVfY2hhbmdlX29rID0gVFJVRTsKLQotICAvKiBJdCdzIE9LIHRvIGNoYW5nZSB0aGUgc2l6ZSBpZiBlaXRoZXIgdGhlIGV4aXN0aW5nIHN5bWJvbCBvciB0aGUKLSAgICAgbmV3IHN5bWJvbCBpcyB3ZWFrLCBvciBpZiB0aGUgb2xkIHN5bWJvbCBpcyB1bmRlZmluZWQuICAqLwotCi0gIGlmICgqdHlwZV9jaGFuZ2Vfb2sKLSAgICAgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmaW5lZCkKLSAgICAqc2l6ZV9jaGFuZ2Vfb2sgPSBUUlVFOwotCiAgIC8qIElmIGJvdGggdGhlIG9sZCBhbmQgdGhlIG5ldyBzeW1ib2xzIGxvb2sgbGlrZSBjb21tb24gc3ltYm9scyBpbiBhCiAgICAgIGR5bmFtaWMgb2JqZWN0LCBzZXQgdGhlIHNpemUgb2YgdGhlIHN5bWJvbCB0byB0aGUgbGFyZ2VyIG9mIHRoZQogICAgICB0d28uICAqLwpAQCAtMTAwNiwyNCArOTk5LDE0IEBACiAgICAgIHJlcHJlc2VudCB2YXJpYWJsZXM7IHRoaXMgY2FuIGNhdXNlIGNvbmZ1c2lvbiBpbiBwcmluY2lwbGUsIGJ1dAogICAgICBhbnkgc3VjaCBjb25mdXNpb24gd291bGQgc2VlbSB0byBpbmRpY2F0ZSBhbiBlcnJvbmVvdXMgcHJvZ3JhbSBvcgogICAgICBzaGFyZWQgbGlicmFyeS4gIFdlIGFsc28gcGVybWl0IGEgY29tbW9uIHN5bWJvbCBpbiBhIHJlZ3VsYXIKLSAgICAgb2JqZWN0IHRvIG92ZXJyaWRlIGEgd2VhayBzeW1ib2wgaW4gYSBzaGFyZWQgb2JqZWN0LgotCi0gICAgIFdlIHByZWZlciBhIG5vbi13ZWFrIGRlZmluaXRpb24gaW4gYSBzaGFyZWQgbGlicmFyeSB0byBhIHdlYWsKLSAgICAgZGVmaW5pdGlvbiBpbiB0aGUgZXhlY3V0YWJsZSB1bmxlc3MgaXQgY29tZXMgZnJvbSBhIERUX05FRURFRAotICAgICBlbnRyeSBvZiBhIHNoYXJlZCBvYmplY3QsIGluIHdoaWNoIGNhc2UsIHRoZSBEVF9ORUVERUQgZW50cnkKLSAgICAgbWF5IG5vdCBiZSByZXF1aXJlZCBhdCB0aGUgcnVuIHRpbWUuICAqLworICAgICBvYmplY3QgdG8gb3ZlcnJpZGUgYSB3ZWFrIHN5bWJvbCBpbiBhIHNoYXJlZCBvYmplY3QuICAqLwogCiAgIGlmIChuZXdkeW4KICAgICAgICYmIG5ld2RlZgogICAgICAgJiYgKG9sZGRlZgogCSAgfHwgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2NvbW1vbgotCSAgICAgICYmIChuZXd3ZWFrZGVmCi0JCSAgfHwgbmV3d2Vha3VuZGVmCi0JCSAgfHwgRUxGX1NUX1RZUEUgKHN5bS0+c3RfaW5mbykgPT0gU1RUX0ZVTkMpKSkKLSAgICAgICYmICghb2xkd2Vha2RlZgotCSAgfHwgZHRfbmVlZGVkCi0JICB8fCBuZXd3ZWFrZGVmCi0JICB8fCBuZXd3ZWFrdW5kZWYpKQorCSAgICAgICYmIChuZXd3ZWFrCisJCSAgfHwgRUxGX1NUX1RZUEUgKHN5bS0+c3RfaW5mbykgPT0gU1RUX0ZVTkMpKSkpCiAgICAgewogICAgICAgKm92ZXJyaWRlID0gVFJVRTsKICAgICAgIG5ld2RlZiA9IEZBTFNFOwpAQCAtMTA2NywyMCArMTA1MCwxNyBAQAogCiAgICAgIEFzIGFib3ZlLCB3ZSBhZ2FpbiBwZXJtaXQgYSBjb21tb24gc3ltYm9sIGluIGEgcmVndWxhciBvYmplY3QgdG8KICAgICAgb3ZlcnJpZGUgYSBkZWZpbml0aW9uIGluIGEgc2hhcmVkIG9iamVjdCBpZiB0aGUgc2hhcmVkIG9iamVjdAotICAgICBzeW1ib2wgaXMgYSBmdW5jdGlvbiBvciBpcyB3ZWFrLgotCi0gICAgIEFzIGFib3ZlLCB3ZSBwZXJtaXQgYSBub24td2VhayBkZWZpbml0aW9uIGluIGEgc2hhcmVkIG9iamVjdCB0bwotICAgICBvdmVycmlkZSBhIHdlYWsgZGVmaW5pdGlvbiBpbiBhIHJlZ3VsYXIgb2JqZWN0LiAgKi8KKyAgICAgc3ltYm9sIGlzIGEgZnVuY3Rpb24gb3IgaXMgd2Vhay4gICovCiAKICAgZmxpcCA9IE5VTEw7CiAgIGlmICghIG5ld2R5bgogICAgICAgJiYgKG5ld2RlZgogCSAgfHwgKGJmZF9pc19jb21fc2VjdGlvbiAoc2VjKQotCSAgICAgICYmIChvbGR3ZWFrZGVmIHx8IGgtPnR5cGUgPT0gU1RUX0ZVTkMpKSkKKwkgICAgICAmJiAob2xkd2VhaworCQkgIHx8IGgtPnR5cGUgPT0gU1RUX0ZVTkMpKSkKICAgICAgICYmIG9sZGR5bgogICAgICAgJiYgb2xkZGVmCi0gICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfREVGX0RZTkFNSUMpICE9IDAKLSAgICAgICYmICgoIW5ld3dlYWtkZWYgJiYgIW5ld3dlYWt1bmRlZikgfHwgb2xkd2Vha2RlZikpCisgICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfREVGX0RZTkFNSUMpICE9IDApCiAgICAgewogICAgICAgLyogQ2hhbmdlIHRoZSBoYXNoIHRhYmxlIGVudHJ5IHRvIHVuZGVmaW5lZCwgYW5kIGxldAogCSBfYmZkX2dlbmVyaWNfbGlua19hZGRfb25lX3N5bWJvbCBkbyB0aGUgcmlnaHQgdGhpbmcgd2l0aCB0aGUKQEAgLTExNjksNTcgKzExNDksMTMgQEAKIAl9CiAgICAgfQogCi0gIC8qIEhhbmRsZSB0aGUgc3BlY2lhbCBjYXNlIG9mIGEgd2VhayBkZWZpbml0aW9uIGluIGEgcmVndWxhciBvYmplY3QKLSAgICAgZm9sbG93ZWQgYnkgYSBub24td2VhayBkZWZpbml0aW9uIGluIGEgc2hhcmVkIG9iamVjdC4gIEluIHRoaXMKLSAgICAgY2FzZSwgd2UgcHJlZmVyIHRoZSBkZWZpbml0aW9uIGluIHRoZSBzaGFyZWQgb2JqZWN0IHVubGVzcyBpdAotICAgICBjb21lcyBmcm9tIGEgRFRfTkVFREVEIGVudHJ5IG9mIGEgc2hhcmVkIG9iamVjdCwgaW4gd2hpY2ggY2FzZSwKLSAgICAgdGhlIERUX05FRURFRCBlbnRyeSBtYXkgbm90IGJlIHJlcXVpcmVkIGF0IHRoZSBydW4gdGltZS4gICovCi0gIGlmIChvbGRkZWYKLSAgICAgICYmICEgZHRfbmVlZGVkCi0gICAgICAmJiBvbGR3ZWFrZGVmCi0gICAgICAmJiBuZXdkZWYKLSAgICAgICYmIG5ld2R5bgotICAgICAgJiYgIW5ld3dlYWtkZWYKLSAgICAgICYmICFuZXd3ZWFrdW5kZWYpCi0gICAgewotICAgICAgLyogVG8gbWFrZSB0aGlzIHdvcmsgd2UgaGF2ZSB0byBmcm9iIHRoZSBmbGFncyBzbyB0aGF0IHRoZSByZXN0Ci0JIG9mIHRoZSBjb2RlIGRvZXMgbm90IHRoaW5rIHdlIGFyZSB1c2luZyB0aGUgcmVndWxhcgotCSBkZWZpbml0aW9uLiAgKi8KLSAgICAgIGlmICgoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVIpICE9IDApCi0JaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyB8PSBFTEZfTElOS19IQVNIX1JFRl9SRUdVTEFSOwotICAgICAgZWxzZSBpZiAoKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX0RFRl9EWU5BTUlDKSAhPSAwKQotCWgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgfD0gRUxGX0xJTktfSEFTSF9SRUZfRFlOQU1JQzsKLSAgICAgIGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJj0gfiAoRUxGX0xJTktfSEFTSF9ERUZfUkVHVUxBUgotCQkJCSAgIHwgRUxGX0xJTktfSEFTSF9ERUZfRFlOQU1JQyk7Ci0KLSAgICAgIC8qIElmIEggaXMgdGhlIHRhcmdldCBvZiBhbiBpbmRpcmVjdGlvbiwgd2Ugd2FudCB0aGUgY2FsbGVyIHRvCi0JIHVzZSBIIHJhdGhlciB0aGFuIHRoZSBpbmRpcmVjdCBzeW1ib2wuICBPdGhlcndpc2UgaWYgd2UgYXJlCi0JIGRlZmluaW5nIGEgbmV3IGluZGlyZWN0IHN5bWJvbCB3ZSB3aWxsIHdpbmQgdXAgYXR0YWNoaW5nIGl0Ci0JIHRvIHRoZSBlbnRyeSB3ZSBhcmUgb3ZlcnJpZGluZy4gICovCi0gICAgICAqc3ltX2hhc2ggPSBoOwotICAgIH0KLQotICAvKiBIYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSBvZiBhIG5vbi13ZWFrIGRlZmluaXRpb24gaW4gYSBzaGFyZWQKLSAgICAgb2JqZWN0IGZvbGxvd2VkIGJ5IGEgd2VhayBkZWZpbml0aW9uIGluIGEgcmVndWxhciBvYmplY3QuICBJbgotICAgICB0aGlzIGNhc2Ugd2UgcHJlZmVyIHRoZSBkZWZpbml0aW9uIGluIHRoZSBzaGFyZWQgb2JqZWN0LiAgVG8gbWFrZQotICAgICB0aGlzIHdvcmsgd2UgaGF2ZSB0byB0ZWxsIHRoZSBjYWxsZXIgdG8gbm90IHRyZWF0IHRoZSBuZXcgc3ltYm9sCi0gICAgIGFzIGEgZGVmaW5pdGlvbi4gICovCi0gIGlmIChvbGRkZWYKLSAgICAgICYmIG9sZGR5bgotICAgICAgJiYgIW9sZHdlYWtkZWYKLSAgICAgICYmIG5ld2RlZgotICAgICAgJiYgISBuZXdkeW4KLSAgICAgICYmIChuZXd3ZWFrZGVmIHx8IG5ld3dlYWt1bmRlZikpCi0gICAgKm92ZXJyaWRlID0gVFJVRTsKLQogICByZXR1cm4gVFJVRTsKIH0KIAogLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gY3JlYXRlIGFuIGluZGlyZWN0IHN5bWJvbCBmcm9tIHRoZQogICAgZGVmYXVsdCBmb3IgdGhlIHN5bWJvbCB3aXRoIHRoZSBkZWZhdWx0IHZlcnNpb24gaWYgbmVlZGVkLiBUaGUKICAgIHN5bWJvbCBpcyBkZXNjcmliZWQgYnkgSCwgTkFNRSwgU1lNLCBQU0VDLCBWQUxVRSwgYW5kIE9WRVJSSURFLiAgV2UKLSAgIHNldCBEWU5TWU0gaWYgdGhlIG5ldyBpbmRpcmVjdCBzeW1ib2wgaXMgZHluYW1pYy4gRFRfTkVFREVECi0gICBpbmRpY2F0ZXMgaWYgaXQgY29tZXMgZnJvbSBhIERUX05FRURFRCBlbnRyeSBvZiBhIHNoYXJlZCBvYmplY3QuICAqLworICAgc2V0IERZTlNZTSBpZiB0aGUgbmV3IGluZGlyZWN0IHN5bWJvbCBpcyBkeW5hbWljLiAgKi8KIAogYmZkX2Jvb2xlYW4KIF9iZmRfZWxmX2FkZF9kZWZhdWx0X3N5bWJvbCAoYmZkICphYmZkLApAQCAtMTIzMCw4ICsxMTY2LDcgQEAKIAkJCSAgICAgYXNlY3Rpb24gKipwc2VjLAogCQkJICAgICBiZmRfdm1hICp2YWx1ZSwKIAkJCSAgICAgYmZkX2Jvb2xlYW4gKmR5bnN5bSwKLQkJCSAgICAgYmZkX2Jvb2xlYW4gb3ZlcnJpZGUsCi0JCQkgICAgIGJmZF9ib29sZWFuIGR0X25lZWRlZCkKKwkJCSAgICAgYmZkX2Jvb2xlYW4gb3ZlcnJpZGUpCiB7CiAgIGJmZF9ib29sZWFuIHR5cGVfY2hhbmdlX29rOwogICBiZmRfYm9vbGVhbiBzaXplX2NoYW5nZV9vazsKQEAgLTEyOTIsNyArMTIyNyw3IEBACiAgIHNlYyA9ICpwc2VjOwogICBpZiAoIV9iZmRfZWxmX21lcmdlX3N5bWJvbCAoYWJmZCwgaW5mbywgc2hvcnRuYW1lLCBzeW0sICZzZWMsIHZhbHVlLAogCQkJICAgICAgJmhpLCAmc2tpcCwgJm92ZXJyaWRlLCAmdHlwZV9jaGFuZ2Vfb2ssCi0JCQkgICAgICAmc2l6ZV9jaGFuZ2Vfb2ssIGR0X25lZWRlZCkpCisJCQkgICAgICAmc2l6ZV9jaGFuZ2Vfb2spKQogICAgIHJldHVybiBGQUxTRTsKIAogICBpZiAoc2tpcCkKQEAgLTEzNDEsNyArMTI3Niw3IEBACiAJICAgICAgJiAoRUxGX0xJTktfSEFTSF9SRUZfUkVHVUxBUgogCQkgfCBFTEZfTElOS19IQVNIX0RFRl9SRUdVTEFSKSkKIAkgICAgewotCSAgICAgIGlmICghIF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoaSkpCisJICAgICAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaGkpKQogCQlyZXR1cm4gRkFMU0U7CiAJICAgIH0KIAl9CkBAIC0xMzU5LDEyICsxMjk0LDYgQEAKICAgICB7CiAgICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaHQ7CiAKLSAgICAgIC8qIElmIHRoZSBzeW1ib2wgYmVjYW1lIGluZGlyZWN0LCB0aGVuIHdlIGFzc3VtZSB0aGF0IHdlIGhhdmUKLQkgbm90IHNlZW4gYSBkZWZpbml0aW9uIGJlZm9yZS4gICovCi0gICAgICBCRkRfQVNTRVJUICgoaGktPmVsZl9saW5rX2hhc2hfZmxhZ3MKLQkJICAgJiAoRUxGX0xJTktfSEFTSF9ERUZfRFlOQU1JQwotCQkgICAgICB8IEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVIpKSA9PSAwKTsKLQogICAgICAgaHQgPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaGktPnJvb3QudS5pLmxpbms7CiAgICAgICAoKmJlZC0+ZWxmX2JhY2tlbmRfY29weV9pbmRpcmVjdF9zeW1ib2wpIChiZWQsIGh0LCBoaSk7CiAKQEAgLTE0MDUsNyArMTMzNCw3IEBACiAgIHNlYyA9ICpwc2VjOwogICBpZiAoIV9iZmRfZWxmX21lcmdlX3N5bWJvbCAoYWJmZCwgaW5mbywgc2hvcnRuYW1lLCBzeW0sICZzZWMsIHZhbHVlLAogCQkJICAgICAgJmhpLCAmc2tpcCwgJm92ZXJyaWRlLCAmdHlwZV9jaGFuZ2Vfb2ssCi0JCQkgICAgICAmc2l6ZV9jaGFuZ2Vfb2ssIGR0X25lZWRlZCkpCisJCQkgICAgICAmc2l6ZV9jaGFuZ2Vfb2spKQogICAgIHJldHVybiBGQUxTRTsKIAogICBpZiAoc2tpcCkKQEAgLTE0MzcsMTIgKzEzNjYsNiBAQAogCiAgICAgICBpZiAoaGktPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2luZGlyZWN0KQogCXsKLQkgIC8qIElmIHRoZSBzeW1ib2wgYmVjYW1lIGluZGlyZWN0LCB0aGVuIHdlIGFzc3VtZSB0aGF0IHdlIGhhdmUKLQkgICAgIG5vdCBzZWVuIGEgZGVmaW5pdGlvbiBiZWZvcmUuICAqLwotCSAgQkZEX0FTU0VSVCAoKGhpLT5lbGZfbGlua19oYXNoX2ZsYWdzCi0JCSAgICAgICAmIChFTEZfTElOS19IQVNIX0RFRl9EWU5BTUlDCi0JCQkgIHwgRUxGX0xJTktfSEFTSF9ERUZfUkVHVUxBUikpID09IDApOwotCiAJICAoKmJlZC0+ZWxmX2JhY2tlbmRfY29weV9pbmRpcmVjdF9zeW1ib2wpIChiZWQsIGgsIGhpKTsKIAogCSAgLyogU2VlIGlmIHRoZSBuZXcgZmxhZ3MgbGVhZCB1cyB0byByZWFsaXplIHRoYXQgdGhlIHN5bWJvbApAQCAtMTUxMSw3ICsxNDM0LDcgQEAKICAgICAgIGlmICghZWlmLT52ZXJkZWZzKQogCXsKIAlkb2l0OgotCSAgaWYgKCEgX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGVpZi0+aW5mbywgaCkpCisJICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChlaWYtPmluZm8sIGgpKQogCSAgICB7CiAJICAgICAgZWlmLT5mYWlsZWQgPSBUUlVFOwogCSAgICAgIHJldHVybiBGQUxTRTsKQEAgLTIxNTUsNyArMjA3OCw3IEBACiAJICAmJiAoKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX0RFRl9EWU5BTUlDKSAhPSAwCiAJICAgICAgfHwgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX1JFRl9EWU5BTUlDKSAhPSAwKSkKIAl7Ci0JICBpZiAoISBfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoZWlmLT5pbmZvLCBoKSkKKwkgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGVpZi0+aW5mbywgaCkpCiAJICAgIHsKIAkgICAgICBlaWYtPmZhaWxlZCA9IFRSVUU7CiAJICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMjU0MywzICsyNDY2LDY0MzkgQEAKIAogICByZXR1cm4gdGxzOwogfQorCisvKiBSZXR1cm4gVFJVRSBpZmYgdGhpcyBpcyBhIG5vbi1jb21tb24sIGRlZmluaXRpb24gb2YgYSBub24tZnVuY3Rpb24gc3ltYm9sLiAgKi8KK3N0YXRpYyBiZmRfYm9vbGVhbgoraXNfZ2xvYmFsX2RhdGFfc3ltYm9sX2RlZmluaXRpb24gKGJmZCAqYWJmZCBBVFRSSUJVVEVfVU5VU0VELAorCQkJCSAgRWxmX0ludGVybmFsX1N5bSAqc3ltKQoreworICAvKiBMb2NhbCBzeW1ib2xzIGRvIG5vdCBjb3VudCwgYnV0IHRhcmdldCBzcGVjaWZpYyBvbmVzIG1pZ2h0LiAgKi8KKyAgaWYgKEVMRl9TVF9CSU5EIChzeW0tPnN0X2luZm8pICE9IFNUQl9HTE9CQUwKKyAgICAgICYmIEVMRl9TVF9CSU5EIChzeW0tPnN0X2luZm8pIDwgU1RCX0xPT1MpCisgICAgcmV0dXJuIEZBTFNFOworCisgIC8qIEZ1bmN0aW9uIHN5bWJvbHMgZG8gbm90IGNvdW50LiAgKi8KKyAgaWYgKEVMRl9TVF9UWVBFIChzeW0tPnN0X2luZm8pID09IFNUVF9GVU5DKQorICAgIHJldHVybiBGQUxTRTsKKworICAvKiBJZiB0aGUgc2VjdGlvbiBpcyB1bmRlZmluZWQsIHRoZW4gc28gaXMgdGhlIHN5bWJvbC4gICovCisgIGlmIChzeW0tPnN0X3NobmR4ID09IFNITl9VTkRFRikKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogSWYgdGhlIHN5bWJvbCBpcyBkZWZpbmVkIGluIHRoZSBjb21tb24gc2VjdGlvbiwgdGhlbgorICAgICBpdCBpcyBhIGNvbW1vbiBkZWZpbml0aW9uIGFuZCBzbyBkb2VzIG5vdCBjb3VudC4gICovCisgIGlmIChzeW0tPnN0X3NobmR4ID09IFNITl9DT01NT04pCisgICAgcmV0dXJuIEZBTFNFOworCisgIC8qIElmIHRoZSBzeW1ib2wgaXMgaW4gYSB0YXJnZXQgc3BlY2lmaWMgc2VjdGlvbiB0aGVuIHdlCisgICAgIG11c3QgcmVseSB1cG9uIHRoZSBiYWNrZW5kIHRvIHRlbGwgdXMgd2hhdCBpdCBpcy4gICovCisgIGlmIChzeW0tPnN0X3NobmR4ID49IFNITl9MT1JFU0VSVkUgJiYgc3ltLT5zdF9zaG5keCA8IFNITl9BQlMpCisgICAgLyogRklYTUUgLSB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBjb2RlZCB5ZXQ6CisKKyAgICAgICByZXR1cm4gX2JmZF9pc19nbG9iYWxfc3ltYm9sX2RlZmluaXRpb24gKGFiZmQsIHN5bSk7CisKKyAgICAgICBJbnN0ZWFkIGZvciBub3cgYXNzdW1lIHRoYXQgdGhlIGRlZmluaXRpb24gaXMgbm90IGdsb2JhbCwKKyAgICAgICBFdmVuIGlmIHRoaXMgaXMgd3JvbmcsIGF0IGxlYXN0IHRoZSBsaW5rZXIgd2lsbCBiZWhhdmUKKyAgICAgICBpbiB0aGUgc2FtZSB3YXkgdGhhdCBpdCB1c2VkIHRvIGRvLiAgKi8KKyAgICByZXR1cm4gRkFMU0U7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qIFNlYXJjaCB0aGUgc3ltYm9sIHRhYmxlIG9mIHRoZSBhcmNoaXZlIGVsZW1lbnQgb2YgdGhlIGFyY2hpdmUgQUJGRAorICAgd2hvc2UgYXJjaGl2ZSBtYXAgY29udGFpbnMgYSBtZW50aW9uIG9mIFNZTURFRiwgYW5kIGRldGVybWluZSBpZgorICAgdGhlIHN5bWJvbCBpcyBkZWZpbmVkIGluIHRoaXMgZWxlbWVudC4gICovCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZl9saW5rX2lzX2RlZmluZWRfYXJjaGl2ZV9zeW1ib2wgKGJmZCAqIGFiZmQsIGNhcnN5bSAqIHN5bWRlZikKK3sKKyAgRWxmX0ludGVybmFsX1NoZHIgKiBoZHI7CisgIGJmZF9zaXplX3R5cGUgc3ltY291bnQ7CisgIGJmZF9zaXplX3R5cGUgZXh0c3ltY291bnQ7CisgIGJmZF9zaXplX3R5cGUgZXh0c3ltb2ZmOworICBFbGZfSW50ZXJuYWxfU3ltICppc3ltYnVmOworICBFbGZfSW50ZXJuYWxfU3ltICppc3ltOworICBFbGZfSW50ZXJuYWxfU3ltICppc3ltZW5kOworICBiZmRfYm9vbGVhbiByZXN1bHQ7CisKKyAgYWJmZCA9IF9iZmRfZ2V0X2VsdF9hdF9maWxlcG9zIChhYmZkLCBzeW1kZWYtPmZpbGVfb2Zmc2V0KTsKKyAgaWYgKGFiZmQgPT0gTlVMTCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKCEgYmZkX2NoZWNrX2Zvcm1hdCAoYWJmZCwgYmZkX29iamVjdCkpCisgICAgcmV0dXJuIEZBTFNFOworCisgIC8qIElmIHdlIGhhdmUgYWxyZWFkeSBpbmNsdWRlZCB0aGUgZWxlbWVudCBjb250YWluaW5nIHRoaXMgc3ltYm9sIGluIHRoZQorICAgICBsaW5rIHRoZW4gd2UgZG8gbm90IG5lZWQgdG8gaW5jbHVkZSBpdCBhZ2Fpbi4gIEp1c3QgY2xhaW0gdGhhdCBhbnkgc3ltYm9sCisgICAgIGl0IGNvbnRhaW5zIGlzIG5vdCBhIGRlZmluaXRpb24sIHNvIHRoYXQgb3VyIGNhbGxlciB3aWxsIG5vdCBkZWNpZGUgdG8KKyAgICAgKHJlKWluY2x1ZGUgdGhpcyBlbGVtZW50LiAgKi8KKyAgaWYgKGFiZmQtPmFyY2hpdmVfcGFzcykKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogU2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBzeW1ib2wgdGFibGUuICAqLworICBpZiAoKGFiZmQtPmZsYWdzICYgRFlOQU1JQykgPT0gMCB8fCBlbGZfZHluc3ltdGFiIChhYmZkKSA9PSAwKQorICAgIGhkciA9ICZlbGZfdGRhdGEgKGFiZmQpLT5zeW10YWJfaGRyOworICBlbHNlCisgICAgaGRyID0gJmVsZl90ZGF0YSAoYWJmZCktPmR5bnN5bXRhYl9oZHI7CisKKyAgc3ltY291bnQgPSBoZHItPnNoX3NpemUgLyBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCktPnMtPnNpemVvZl9zeW07CisKKyAgLyogVGhlIHNoX2luZm8gZmllbGQgb2YgdGhlIHN5bXRhYiBoZWFkZXIgdGVsbHMgdXMgd2hlcmUgdGhlCisgICAgIGV4dGVybmFsIHN5bWJvbHMgc3RhcnQuICBXZSBkb24ndCBjYXJlIGFib3V0IHRoZSBsb2NhbCBzeW1ib2xzLiAgKi8KKyAgaWYgKGVsZl9iYWRfc3ltdGFiIChhYmZkKSkKKyAgICB7CisgICAgICBleHRzeW1jb3VudCA9IHN5bWNvdW50OworICAgICAgZXh0c3ltb2ZmID0gMDsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBleHRzeW1jb3VudCA9IHN5bWNvdW50IC0gaGRyLT5zaF9pbmZvOworICAgICAgZXh0c3ltb2ZmID0gaGRyLT5zaF9pbmZvOworICAgIH0KKworICBpZiAoZXh0c3ltY291bnQgPT0gMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogUmVhZCBpbiB0aGUgc3ltYm9sIHRhYmxlLiAgKi8KKyAgaXN5bWJ1ZiA9IGJmZF9lbGZfZ2V0X2VsZl9zeW1zIChhYmZkLCBoZHIsIGV4dHN5bWNvdW50LCBleHRzeW1vZmYsCisJCQkJICBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgaWYgKGlzeW1idWYgPT0gTlVMTCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogU2NhbiB0aGUgc3ltYm9sIHRhYmxlIGxvb2tpbmcgZm9yIFNZTURFRi4gICovCisgIHJlc3VsdCA9IEZBTFNFOworICBmb3IgKGlzeW0gPSBpc3ltYnVmLCBpc3ltZW5kID0gaXN5bWJ1ZiArIGV4dHN5bWNvdW50OyBpc3ltIDwgaXN5bWVuZDsgaXN5bSsrKQorICAgIHsKKyAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CisKKyAgICAgIG5hbWUgPSBiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uIChhYmZkLCBoZHItPnNoX2xpbmssCisJCQkJCSAgICAgIGlzeW0tPnN0X25hbWUpOworICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKKwlicmVhazsKKworICAgICAgaWYgKHN0cmNtcCAobmFtZSwgc3ltZGVmLT5uYW1lKSA9PSAwKQorCXsKKwkgIHJlc3VsdCA9IGlzX2dsb2JhbF9kYXRhX3N5bWJvbF9kZWZpbml0aW9uIChhYmZkLCBpc3ltKTsKKwkgIGJyZWFrOworCX0KKyAgICB9CisKKyAgZnJlZSAoaXN5bWJ1Zik7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwwKKy8qIEFkZCBhbiBlbnRyeSB0byB0aGUgLmR5bmFtaWMgdGFibGUuICAqLworCitiZmRfYm9vbGVhbgorX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAorCQkJICAgIGJmZF92bWEgdGFnLAorCQkJICAgIGJmZF92bWEgdmFsKQoreworICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF90YWJsZSAqaGFzaF90YWJsZTsKKyAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKKyAgYXNlY3Rpb24gKnM7CisgIGJmZF9zaXplX3R5cGUgbmV3c2l6ZTsKKyAgYmZkX2J5dGUgKm5ld2NvbnRlbnRzOworICBFbGZfSW50ZXJuYWxfRHluIGR5bjsKKworICBoYXNoX3RhYmxlID0gZWxmX2hhc2hfdGFibGUgKGluZm8pOworICBpZiAoISBpc19lbGZfaGFzaF90YWJsZSAoaGFzaF90YWJsZSkpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChoYXNoX3RhYmxlLT5keW5vYmopOworICBzID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGhhc2hfdGFibGUtPmR5bm9iaiwgIi5keW5hbWljIik7CisgIEJGRF9BU1NFUlQgKHMgIT0gTlVMTCk7CisKKyAgbmV3c2l6ZSA9IHMtPl9yYXdfc2l6ZSArIGJlZC0+cy0+c2l6ZW9mX2R5bjsKKyAgbmV3Y29udGVudHMgPSBiZmRfcmVhbGxvYyAocy0+Y29udGVudHMsIG5ld3NpemUpOworICBpZiAobmV3Y29udGVudHMgPT0gTlVMTCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgZHluLmRfdGFnID0gdGFnOworICBkeW4uZF91bi5kX3ZhbCA9IHZhbDsKKyAgYmVkLT5zLT5zd2FwX2R5bl9vdXQgKGhhc2hfdGFibGUtPmR5bm9iaiwgJmR5biwgbmV3Y29udGVudHMgKyBzLT5fcmF3X3NpemUpOworCisgIHMtPl9yYXdfc2l6ZSA9IG5ld3NpemU7CisgIHMtPmNvbnRlbnRzID0gbmV3Y29udGVudHM7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qIEFkZCBhIERUX05FRURFRCBlbnRyeSBmb3IgdGhpcyBkeW5hbWljIG9iamVjdCBpZiBET19JVCBpcyB0cnVlLAorICAgb3RoZXJ3aXNlIGp1c3QgY2hlY2sgd2hldGhlciBvbmUgYWxyZWFkeSBleGlzdHMuICBSZXR1cm5zIC0xIG9uIGVycm9yLAorICAgMSBpZiBhIERUX05FRURFRCB0YWcgYWxyZWFkeSBleGlzdHMsIGFuZCAwIG9uIHN1Y2Nlc3MuICAqLworCitzdGF0aWMgaW50CitlbGZfYWRkX2R0X25lZWRlZF90YWcgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAorCQkgICAgICAgY29uc3QgY2hhciAqc29uYW1lLAorCQkgICAgICAgYmZkX2Jvb2xlYW4gZG9faXQpCit7CisgIHN0cnVjdCBlbGZfbGlua19oYXNoX3RhYmxlICpoYXNoX3RhYmxlOworICBiZmRfc2l6ZV90eXBlIG9sZHNpemU7CisgIGJmZF9zaXplX3R5cGUgc3RyaW5kZXg7CisKKyAgaGFzaF90YWJsZSA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKTsKKyAgb2xkc2l6ZSA9IF9iZmRfZWxmX3N0cnRhYl9zaXplIChoYXNoX3RhYmxlLT5keW5zdHIpOworICBzdHJpbmRleCA9IF9iZmRfZWxmX3N0cnRhYl9hZGQgKGhhc2hfdGFibGUtPmR5bnN0ciwgc29uYW1lLCBGQUxTRSk7CisgIGlmIChzdHJpbmRleCA9PSAoYmZkX3NpemVfdHlwZSkgLTEpCisgICAgcmV0dXJuIC0xOworCisgIGlmIChvbGRzaXplID09IF9iZmRfZWxmX3N0cnRhYl9zaXplIChoYXNoX3RhYmxlLT5keW5zdHIpKQorICAgIHsKKyAgICAgIGFzZWN0aW9uICpzZHluOworICAgICAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKKyAgICAgIGJmZF9ieXRlICpleHRkeW47CisKKyAgICAgIGJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChoYXNoX3RhYmxlLT5keW5vYmopOworICAgICAgc2R5biA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChoYXNoX3RhYmxlLT5keW5vYmosICIuZHluYW1pYyIpOworICAgICAgQkZEX0FTU0VSVCAoc2R5biAhPSBOVUxMKTsKKworICAgICAgZm9yIChleHRkeW4gPSBzZHluLT5jb250ZW50czsKKwkgICBleHRkeW4gPCBzZHluLT5jb250ZW50cyArIHNkeW4tPl9yYXdfc2l6ZTsKKwkgICBleHRkeW4gKz0gYmVkLT5zLT5zaXplb2ZfZHluKQorCXsKKwkgIEVsZl9JbnRlcm5hbF9EeW4gZHluOworCisJICBiZWQtPnMtPnN3YXBfZHluX2luIChoYXNoX3RhYmxlLT5keW5vYmosIGV4dGR5biwgJmR5bik7CisJICBpZiAoZHluLmRfdGFnID09IERUX05FRURFRAorCSAgICAgICYmIGR5bi5kX3VuLmRfdmFsID09IHN0cmluZGV4KQorCSAgICB7CisJICAgICAgX2JmZF9lbGZfc3RydGFiX2RlbHJlZiAoaGFzaF90YWJsZS0+ZHluc3RyLCBzdHJpbmRleCk7CisJICAgICAgcmV0dXJuIDE7CisJICAgIH0KKwl9CisgICAgfQorCisgIGlmIChkb19pdCkKKyAgICB7CisgICAgICBpZiAoIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9ORUVERUQsIHN0cmluZGV4KSkKKwlyZXR1cm4gLTE7CisgICAgfQorICBlbHNlCisgICAgLyogV2Ugd2VyZSBqdXN0IGNoZWNraW5nIGZvciBleGlzdGVuY2Ugb2YgdGhlIHRhZy4gICovCisgICAgX2JmZF9lbGZfc3RydGFiX2RlbHJlZiAoaGFzaF90YWJsZS0+ZHluc3RyLCBzdHJpbmRleCk7CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIFNvcnQgc3ltYm9sIGJ5IHZhbHVlIGFuZCBzZWN0aW9uLiAgKi8KK3N0YXRpYyBpbnQKK2VsZl9zb3J0X3N5bWJvbCAoY29uc3Qgdm9pZCAqYXJnMSwgY29uc3Qgdm9pZCAqYXJnMikKK3sKKyAgY29uc3Qgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgxOworICBjb25zdCBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaDI7CisgIGJmZF9zaWduZWRfdm1hIHZkaWZmOworCisgIGgxID0gKihjb25zdCBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKikgYXJnMTsKKyAgaDIgPSAqKGNvbnN0IHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqKSBhcmcyOworICB2ZGlmZiA9IGgxLT5yb290LnUuZGVmLnZhbHVlIC0gaDItPnJvb3QudS5kZWYudmFsdWU7CisgIGlmICh2ZGlmZiAhPSAwKQorICAgIHJldHVybiB2ZGlmZiA+IDAgPyAxIDogLTE7CisgIGVsc2UKKyAgICB7CisgICAgICBsb25nIHNkaWZmID0gaDEtPnJvb3QudS5kZWYuc2VjdGlvbiAtIGgyLT5yb290LnUuZGVmLnNlY3Rpb247CisgICAgICBpZiAoc2RpZmYgIT0gMCkKKwlyZXR1cm4gc2RpZmYgPiAwID8gMSA6IC0xOworICAgIH0KKyAgcmV0dXJuIDA7Cit9CisKKy8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBhZGp1c3Qgb2Zmc2V0cyBpbnRvIC5keW5zdHIgZm9yCisgICBkeW5hbWljIHN5bWJvbHMuICBUaGlzIGlzIGNhbGxlZCB2aWEgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZS4gICovCisKK3N0YXRpYyBiZmRfYm9vbGVhbgorZWxmX2FkanVzdF9keW5zdHJfb2Zmc2V0cyAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgsIHZvaWQgKmRhdGEpCit7CisgIHN0cnVjdCBlbGZfc3RydGFiX2hhc2ggKmR5bnN0ciA9IGRhdGE7CisKKyAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCisgICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOworCisgIGlmIChoLT5keW5pbmR4ICE9IC0xKQorICAgIGgtPmR5bnN0cl9pbmRleCA9IF9iZmRfZWxmX3N0cnRhYl9vZmZzZXQgKGR5bnN0ciwgaC0+ZHluc3RyX2luZGV4KTsKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qIEFzc2lnbiBzdHJpbmcgb2Zmc2V0cyBpbiAuZHluc3RyLCB1cGRhdGUgYWxsIHN0cnVjdHVyZXMgcmVmZXJlbmNpbmcKKyAgIHRoZW0uICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZl9maW5hbGl6ZV9keW5zdHIgKGJmZCAqb3V0cHV0X2JmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCit7CisgIHN0cnVjdCBlbGZfbGlua19oYXNoX3RhYmxlICpoYXNoX3RhYmxlID0gZWxmX2hhc2hfdGFibGUgKGluZm8pOworICBzdHJ1Y3QgZWxmX2xpbmtfbG9jYWxfZHluYW1pY19lbnRyeSAqZW50cnk7CisgIHN0cnVjdCBlbGZfc3RydGFiX2hhc2ggKmR5bnN0ciA9IGhhc2hfdGFibGUtPmR5bnN0cjsKKyAgYmZkICpkeW5vYmogPSBoYXNoX3RhYmxlLT5keW5vYmo7CisgIGFzZWN0aW9uICpzZHluOworICBiZmRfc2l6ZV90eXBlIHNpemU7CisgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQ7CisgIGJmZF9ieXRlICpleHRkeW47CisKKyAgX2JmZF9lbGZfc3RydGFiX2ZpbmFsaXplIChkeW5zdHIpOworICBzaXplID0gX2JmZF9lbGZfc3RydGFiX3NpemUgKGR5bnN0cik7CisKKyAgYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGR5bm9iaik7CisgIHNkeW4gPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoZHlub2JqLCAiLmR5bmFtaWMiKTsKKyAgQkZEX0FTU0VSVCAoc2R5biAhPSBOVUxMKTsKKworICAvKiBVcGRhdGUgYWxsIC5keW5hbWljIGVudHJpZXMgcmVmZXJlbmNpbmcgLmR5bnN0ciBzdHJpbmdzLiAgKi8KKyAgZm9yIChleHRkeW4gPSBzZHluLT5jb250ZW50czsKKyAgICAgICBleHRkeW4gPCBzZHluLT5jb250ZW50cyArIHNkeW4tPl9yYXdfc2l6ZTsKKyAgICAgICBleHRkeW4gKz0gYmVkLT5zLT5zaXplb2ZfZHluKQorICAgIHsKKyAgICAgIEVsZl9JbnRlcm5hbF9EeW4gZHluOworCisgICAgICBiZWQtPnMtPnN3YXBfZHluX2luIChkeW5vYmosIGV4dGR5biwgJmR5bik7CisgICAgICBzd2l0Y2ggKGR5bi5kX3RhZykKKwl7CisJY2FzZSBEVF9TVFJTWjoKKwkgIGR5bi5kX3VuLmRfdmFsID0gc2l6ZTsKKwkgIGJyZWFrOworCWNhc2UgRFRfTkVFREVEOgorCWNhc2UgRFRfU09OQU1FOgorCWNhc2UgRFRfUlBBVEg6CisJY2FzZSBEVF9SVU5QQVRIOgorCWNhc2UgRFRfRklMVEVSOgorCWNhc2UgRFRfQVVYSUxJQVJZOgorCSAgZHluLmRfdW4uZF92YWwgPSBfYmZkX2VsZl9zdHJ0YWJfb2Zmc2V0IChkeW5zdHIsIGR5bi5kX3VuLmRfdmFsKTsKKwkgIGJyZWFrOworCWRlZmF1bHQ6CisJICBjb250aW51ZTsKKwl9CisgICAgICBiZWQtPnMtPnN3YXBfZHluX291dCAoZHlub2JqLCAmZHluLCBleHRkeW4pOworICAgIH0KKworICAvKiBOb3cgdXBkYXRlIGxvY2FsIGR5bmFtaWMgc3ltYm9scy4gICovCisgIGZvciAoZW50cnkgPSBoYXNoX3RhYmxlLT5keW5sb2NhbDsgZW50cnkgOyBlbnRyeSA9IGVudHJ5LT5uZXh0KQorICAgIGVudHJ5LT5pc3ltLnN0X25hbWUgPSBfYmZkX2VsZl9zdHJ0YWJfb2Zmc2V0IChkeW5zdHIsCisJCQkJCQkgIGVudHJ5LT5pc3ltLnN0X25hbWUpOworCisgIC8qIEFuZCB0aGUgcmVzdCBvZiBkeW5hbWljIHN5bWJvbHMuICAqLworICBlbGZfbGlua19oYXNoX3RyYXZlcnNlIChoYXNoX3RhYmxlLCBlbGZfYWRqdXN0X2R5bnN0cl9vZmZzZXRzLCBkeW5zdHIpOworCisgIC8qIEFkanVzdCB2ZXJzaW9uIGRlZmluaXRpb25zLiAgKi8KKyAgaWYgKGVsZl90ZGF0YSAob3V0cHV0X2JmZCktPmN2ZXJkZWZzKQorICAgIHsKKyAgICAgIGFzZWN0aW9uICpzOworICAgICAgYmZkX2J5dGUgKnA7CisgICAgICBiZmRfc2l6ZV90eXBlIGk7CisgICAgICBFbGZfSW50ZXJuYWxfVmVyZGVmIGRlZjsKKyAgICAgIEVsZl9JbnRlcm5hbF9WZXJkYXV4IGRlZmF1eDsKKworICAgICAgcyA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChkeW5vYmosICIuZ251LnZlcnNpb25fZCIpOworICAgICAgcCA9IHMtPmNvbnRlbnRzOworICAgICAgZG8KKwl7CisJICBfYmZkX2VsZl9zd2FwX3ZlcmRlZl9pbiAob3V0cHV0X2JmZCwgKEVsZl9FeHRlcm5hbF9WZXJkZWYgKikgcCwKKwkJCQkgICAmZGVmKTsKKwkgIHAgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGVmKTsKKwkgIGZvciAoaSA9IDA7IGkgPCBkZWYudmRfY250OyArK2kpCisJICAgIHsKKwkgICAgICBfYmZkX2VsZl9zd2FwX3ZlcmRhdXhfaW4gKG91dHB1dF9iZmQsCisJCQkJCShFbGZfRXh0ZXJuYWxfVmVyZGF1eCAqKSBwLCAmZGVmYXV4KTsKKwkgICAgICBkZWZhdXgudmRhX25hbWUgPSBfYmZkX2VsZl9zdHJ0YWJfb2Zmc2V0IChkeW5zdHIsCisJCQkJCQkJZGVmYXV4LnZkYV9uYW1lKTsKKwkgICAgICBfYmZkX2VsZl9zd2FwX3ZlcmRhdXhfb3V0IChvdXRwdXRfYmZkLAorCQkJCQkgJmRlZmF1eCwgKEVsZl9FeHRlcm5hbF9WZXJkYXV4ICopIHApOworCSAgICAgIHAgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGF1eCk7CisJICAgIH0KKwl9CisgICAgICB3aGlsZSAoZGVmLnZkX25leHQpOworICAgIH0KKworICAvKiBBZGp1c3QgdmVyc2lvbiByZWZlcmVuY2VzLiAgKi8KKyAgaWYgKGVsZl90ZGF0YSAob3V0cHV0X2JmZCktPnZlcnJlZikKKyAgICB7CisgICAgICBhc2VjdGlvbiAqczsKKyAgICAgIGJmZF9ieXRlICpwOworICAgICAgYmZkX3NpemVfdHlwZSBpOworICAgICAgRWxmX0ludGVybmFsX1Zlcm5lZWQgbmVlZDsKKyAgICAgIEVsZl9JbnRlcm5hbF9WZXJuYXV4IG5lZWRhdXg7CisKKyAgICAgIHMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoZHlub2JqLCAiLmdudS52ZXJzaW9uX3IiKTsKKyAgICAgIHAgPSBzLT5jb250ZW50czsKKyAgICAgIGRvCisJeworCSAgX2JmZF9lbGZfc3dhcF92ZXJuZWVkX2luIChvdXRwdXRfYmZkLCAoRWxmX0V4dGVybmFsX1Zlcm5lZWQgKikgcCwKKwkJCQkgICAgJm5lZWQpOworCSAgbmVlZC52bl9maWxlID0gX2JmZF9lbGZfc3RydGFiX29mZnNldCAoZHluc3RyLCBuZWVkLnZuX2ZpbGUpOworCSAgX2JmZF9lbGZfc3dhcF92ZXJuZWVkX291dCAob3V0cHV0X2JmZCwgJm5lZWQsCisJCQkJICAgICAoRWxmX0V4dGVybmFsX1Zlcm5lZWQgKikgcCk7CisJICBwICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1Zlcm5lZWQpOworCSAgZm9yIChpID0gMDsgaSA8IG5lZWQudm5fY250OyArK2kpCisJICAgIHsKKwkgICAgICBfYmZkX2VsZl9zd2FwX3Zlcm5hdXhfaW4gKG91dHB1dF9iZmQsCisJCQkJCShFbGZfRXh0ZXJuYWxfVmVybmF1eCAqKSBwLCAmbmVlZGF1eCk7CisJICAgICAgbmVlZGF1eC52bmFfbmFtZSA9IF9iZmRfZWxmX3N0cnRhYl9vZmZzZXQgKGR5bnN0ciwKKwkJCQkJCQkgbmVlZGF1eC52bmFfbmFtZSk7CisJICAgICAgX2JmZF9lbGZfc3dhcF92ZXJuYXV4X291dCAob3V0cHV0X2JmZCwKKwkJCQkJICZuZWVkYXV4LAorCQkJCQkgKEVsZl9FeHRlcm5hbF9WZXJuYXV4ICopIHApOworCSAgICAgIHAgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVybmF1eCk7CisJICAgIH0KKwl9CisgICAgICB3aGlsZSAobmVlZC52bl9uZXh0KTsKKyAgICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisMCisvKiBBZGQgc3ltYm9scyBmcm9tIGFuIEVMRiBvYmplY3QgZmlsZSB0byB0aGUgbGlua2VyIGhhc2ggdGFibGUuICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyAoYmZkICphYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbykKK3sKKyAgYmZkX2Jvb2xlYW4gKCphZGRfc3ltYm9sX2hvb2spCisgICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBFbGZfSW50ZXJuYWxfU3ltICosCisgICAgIGNvbnN0IGNoYXIgKiosIGZsYWd3b3JkICosIGFzZWN0aW9uICoqLCBiZmRfdm1hICopOworICBiZmRfYm9vbGVhbiAoKmNoZWNrX3JlbG9jcykKKyAgICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGFzZWN0aW9uICosIGNvbnN0IEVsZl9JbnRlcm5hbF9SZWxhICopOworICBiZmRfYm9vbGVhbiBjb2xsZWN0OworICBFbGZfSW50ZXJuYWxfU2hkciAqaGRyOworICBiZmRfc2l6ZV90eXBlIHN5bWNvdW50OworICBiZmRfc2l6ZV90eXBlIGV4dHN5bWNvdW50OworICBiZmRfc2l6ZV90eXBlIGV4dHN5bW9mZjsKKyAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipzeW1faGFzaDsKKyAgYmZkX2Jvb2xlYW4gZHluYW1pYzsKKyAgRWxmX0V4dGVybmFsX1ZlcnN5bSAqZXh0dmVyc3ltID0gTlVMTDsKKyAgRWxmX0V4dGVybmFsX1ZlcnN5bSAqZXZlcjsKKyAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKndlYWtzOworICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKm5vbmRlZmx0X3ZlcnMgPSBOVUxMOworICBiZmRfc2l6ZV90eXBlIG5vbmRlZmx0X3ZlcnNfY250ID0gMDsKKyAgRWxmX0ludGVybmFsX1N5bSAqaXN5bWJ1ZiA9IE5VTEw7CisgIEVsZl9JbnRlcm5hbF9TeW0gKmlzeW07CisgIEVsZl9JbnRlcm5hbF9TeW0gKmlzeW1lbmQ7CisgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQ7CisgIGJmZF9ib29sZWFuIGFkZF9uZWVkZWQ7CisgIHN0cnVjdCBlbGZfbGlua19oYXNoX3RhYmxlICogaGFzaF90YWJsZTsKKyAgYmZkX3NpemVfdHlwZSBhbXQ7CisKKyAgaGFzaF90YWJsZSA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKTsKKworICBiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCk7CisgIGFkZF9zeW1ib2xfaG9vayA9IGJlZC0+ZWxmX2FkZF9zeW1ib2xfaG9vazsKKyAgY29sbGVjdCA9IGJlZC0+Y29sbGVjdDsKKworICBpZiAoKGFiZmQtPmZsYWdzICYgRFlOQU1JQykgPT0gMCkKKyAgICBkeW5hbWljID0gRkFMU0U7CisgIGVsc2UKKyAgICB7CisgICAgICBkeW5hbWljID0gVFJVRTsKKworICAgICAgLyogWW91IGNhbid0IHVzZSAtciBhZ2FpbnN0IGEgZHluYW1pYyBvYmplY3QuICBBbHNvLCB0aGVyZSdzIG5vCisJIGhvcGUgb2YgdXNpbmcgYSBkeW5hbWljIG9iamVjdCB3aGljaCBkb2VzIG5vdCBleGFjdGx5IG1hdGNoCisJIHRoZSBmb3JtYXQgb2YgdGhlIG91dHB1dCBmaWxlLiAgKi8KKyAgICAgIGlmIChpbmZvLT5yZWxvY2F0YWJsZQorCSAgfHwgIWlzX2VsZl9oYXNoX3RhYmxlIChoYXNoX3RhYmxlKQorCSAgfHwgaGFzaF90YWJsZS0+cm9vdC5jcmVhdG9yICE9IGFiZmQtPnh2ZWMpCisJeworCSAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2ludmFsaWRfb3BlcmF0aW9uKTsKKwkgIGdvdG8gZXJyb3JfcmV0dXJuOworCX0KKyAgICB9CisKKyAgLyogQXMgYSBHTlUgZXh0ZW5zaW9uLCBhbnkgaW5wdXQgc2VjdGlvbnMgd2hpY2ggYXJlIG5hbWVkCisgICAgIC5nbnUud2FybmluZy5TWU1CT0wgYXJlIHRyZWF0ZWQgYXMgd2FybmluZyBzeW1ib2xzIGZvciB0aGUgZ2l2ZW4KKyAgICAgc3ltYm9sLiAgVGhpcyBkaWZmZXJzIGZyb20gLmdudS53YXJuaW5nIHNlY3Rpb25zLCB3aGljaCBnZW5lcmF0ZQorICAgICB3YXJuaW5ncyB3aGVuIHRoZXkgYXJlIGluY2x1ZGVkIGluIGFuIG91dHB1dCBmaWxlLiAgKi8KKyAgaWYgKGluZm8tPmV4ZWN1dGFibGUpCisgICAgeworICAgICAgYXNlY3Rpb24gKnM7CisKKyAgICAgIGZvciAocyA9IGFiZmQtPnNlY3Rpb25zOyBzICE9IE5VTEw7IHMgPSBzLT5uZXh0KQorCXsKKwkgIGNvbnN0IGNoYXIgKm5hbWU7CisKKwkgIG5hbWUgPSBiZmRfZ2V0X3NlY3Rpb25fbmFtZSAoYWJmZCwgcyk7CisJICBpZiAoc3RybmNtcCAobmFtZSwgIi5nbnUud2FybmluZy4iLCBzaXplb2YgIi5nbnUud2FybmluZy4iIC0gMSkgPT0gMCkKKwkgICAgeworCSAgICAgIGNoYXIgKm1zZzsKKwkgICAgICBiZmRfc2l6ZV90eXBlIHN6OworCSAgICAgIGJmZF9zaXplX3R5cGUgcHJlZml4X2xlbjsKKwkgICAgICBjb25zdCBjaGFyICogZ251X3dhcm5pbmdfcHJlZml4ID0gXygid2FybmluZzogIik7CisKKwkgICAgICBuYW1lICs9IHNpemVvZiAiLmdudS53YXJuaW5nLiIgLSAxOworCisJICAgICAgLyogSWYgdGhpcyBpcyBhIHNoYXJlZCBvYmplY3QsIHRoZW4gbG9vayB1cCB0aGUgc3ltYm9sCisJCSBpbiB0aGUgaGFzaCB0YWJsZS4gIElmIGl0IGlzIHRoZXJlLCBhbmQgaXQgaXMgYWxyZWFkeQorCQkgYmVlbiBkZWZpbmVkLCB0aGVuIHdlIHdpbGwgbm90IGJlIHVzaW5nIHRoZSBlbnRyeQorCQkgZnJvbSB0aGlzIHNoYXJlZCBvYmplY3QsIHNvIHdlIGRvbid0IG5lZWQgdG8gd2Fybi4KKwkJIEZJWE1FOiBJZiB3ZSBzZWUgdGhlIGRlZmluaXRpb24gaW4gYSByZWd1bGFyIG9iamVjdAorCQkgbGF0ZXIgb24sIHdlIHdpbGwgd2FybiwgYnV0IHdlIHNob3VsZG4ndC4gIFRoZSBvbmx5CisJCSBmaXggaXMgdG8ga2VlcCB0cmFjayBvZiB3aGF0IHdhcm5pbmdzIHdlIGFyZSBzdXBwb3NlZAorCQkgdG8gZW1pdCwgYW5kIHRoZW4gaGFuZGxlIHRoZW0gYWxsIGF0IHRoZSBlbmQgb2YgdGhlCisJCSBsaW5rLiAgKi8KKwkgICAgICBpZiAoZHluYW1pYykKKwkJeworCQkgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoOworCisJCSAgaCA9IGVsZl9saW5rX2hhc2hfbG9va3VwIChoYXNoX3RhYmxlLCBuYW1lLAorCQkJCQkgICAgRkFMU0UsIEZBTFNFLCBUUlVFKTsKKworCQkgIC8qIEZJWE1FOiBXaGF0IGFib3V0IGJmZF9saW5rX2hhc2hfY29tbW9uPyAgKi8KKwkJICBpZiAoaCAhPSBOVUxMCisJCSAgICAgICYmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCisJCQkgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZndlYWspKQorCQkgICAgeworCQkgICAgICAvKiBXZSBkb24ndCB3YW50IHRvIGlzc3VlIHRoaXMgd2FybmluZy4gIENsb2JiZXIKKwkJCSB0aGUgc2VjdGlvbiBzaXplIHNvIHRoYXQgdGhlIHdhcm5pbmcgZG9lcyBub3QKKwkJCSBnZXQgY29waWVkIGludG8gdGhlIG91dHB1dCBmaWxlLiAgKi8KKwkJICAgICAgcy0+X3Jhd19zaXplID0gMDsKKwkJICAgICAgY29udGludWU7CisJCSAgICB9CisJCX0KKworCSAgICAgIHN6ID0gYmZkX3NlY3Rpb25fc2l6ZSAoYWJmZCwgcyk7CisJICAgICAgcHJlZml4X2xlbiA9IHN0cmxlbiAoZ251X3dhcm5pbmdfcHJlZml4KTsKKwkgICAgICBtc2cgPSBiZmRfYWxsb2MgKGFiZmQsIHByZWZpeF9sZW4gKyBzeiArIDEpOworCSAgICAgIGlmIChtc2cgPT0gTlVMTCkKKwkJZ290byBlcnJvcl9yZXR1cm47CisKKwkgICAgICBzdHJjcHkgKG1zZywgZ251X3dhcm5pbmdfcHJlZml4KTsKKwkgICAgICBpZiAoISBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGFiZmQsIHMsIG1zZyArIHByZWZpeF9sZW4sIDAsIHN6KSkKKwkJZ290byBlcnJvcl9yZXR1cm47CisKKwkgICAgICBtc2dbcHJlZml4X2xlbiArIHN6XSA9ICdcMCc7CisKKwkgICAgICBpZiAoISAoX2JmZF9nZW5lcmljX2xpbmtfYWRkX29uZV9zeW1ib2wKKwkJICAgICAoaW5mbywgYWJmZCwgbmFtZSwgQlNGX1dBUk5JTkcsIHMsIDAsIG1zZywKKwkJICAgICAgRkFMU0UsIGNvbGxlY3QsIE5VTEwpKSkKKwkJZ290byBlcnJvcl9yZXR1cm47CisKKwkgICAgICBpZiAoISBpbmZvLT5yZWxvY2F0YWJsZSkKKwkJeworCQkgIC8qIENsb2JiZXIgdGhlIHNlY3Rpb24gc2l6ZSBzbyB0aGF0IHRoZSB3YXJuaW5nIGRvZXMKKwkJICAgICBub3QgZ2V0IGNvcGllZCBpbnRvIHRoZSBvdXRwdXQgZmlsZS4gICovCisJCSAgcy0+X3Jhd19zaXplID0gMDsKKwkJfQorCSAgICB9CisJfQorICAgIH0KKworICBhZGRfbmVlZGVkID0gVFJVRTsKKyAgaWYgKCEgZHluYW1pYykKKyAgICB7CisgICAgICAvKiBJZiB3ZSBhcmUgY3JlYXRpbmcgYSBzaGFyZWQgbGlicmFyeSwgY3JlYXRlIGFsbCB0aGUgZHluYW1pYworCSBzZWN0aW9ucyBpbW1lZGlhdGVseS4gIFdlIG5lZWQgdG8gYXR0YWNoIHRoZW0gdG8gc29tZXRoaW5nLAorCSBzbyB3ZSBhdHRhY2ggdGhlbSB0byB0aGlzIEJGRCwgcHJvdmlkZWQgaXQgaXMgdGhlIHJpZ2h0CisJIGZvcm1hdC4gIEZJWE1FOiBJZiB0aGVyZSBhcmUgbm8gaW5wdXQgQkZEJ3Mgb2YgdGhlIHNhbWUKKwkgZm9ybWF0IGFzIHRoZSBvdXRwdXQsIHdlIGNhbid0IG1ha2UgYSBzaGFyZWQgbGlicmFyeS4gICovCisgICAgICBpZiAoaW5mby0+c2hhcmVkCisJICAmJiBpc19lbGZfaGFzaF90YWJsZSAoaGFzaF90YWJsZSkKKwkgICYmIGhhc2hfdGFibGUtPnJvb3QuY3JlYXRvciA9PSBhYmZkLT54dmVjCisJICAmJiAhIGhhc2hfdGFibGUtPmR5bmFtaWNfc2VjdGlvbnNfY3JlYXRlZCkKKwl7CisJICBpZiAoISBfYmZkX2VsZl9saW5rX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zIChhYmZkLCBpbmZvKSkKKwkgICAgZ290byBlcnJvcl9yZXR1cm47CisJfQorICAgIH0KKyAgZWxzZSBpZiAoIWlzX2VsZl9oYXNoX3RhYmxlIChoYXNoX3RhYmxlKSkKKyAgICBnb3RvIGVycm9yX3JldHVybjsKKyAgZWxzZQorICAgIHsKKyAgICAgIGFzZWN0aW9uICpzOworICAgICAgY29uc3QgY2hhciAqc29uYW1lID0gTlVMTDsKKyAgICAgIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqcnBhdGggPSBOVUxMLCAqcnVucGF0aCA9IE5VTEw7CisgICAgICBpbnQgcmV0OworCisgICAgICAvKiBsZCAtLWp1c3Qtc3ltYm9scyBhbmQgZHluYW1pYyBvYmplY3RzIGRvbid0IG1peCB2ZXJ5IHdlbGwuCisJIFRlc3QgZm9yIC0tanVzdC1zeW1ib2xzIGJ5IGxvb2tpbmcgYXQgaW5mbyBzZXQgdXAgYnkKKwkgX2JmZF9lbGZfbGlua19qdXN0X3N5bXMuICAqLworICAgICAgaWYgKChzID0gYWJmZC0+c2VjdGlvbnMpICE9IE5VTEwKKwkgICYmIHMtPnNlY19pbmZvX3R5cGUgPT0gRUxGX0lORk9fVFlQRV9KVVNUX1NZTVMpCisJZ290byBlcnJvcl9yZXR1cm47CisKKyAgICAgIC8qIElmIHRoaXMgZHluYW1pYyBsaWIgd2FzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lIHdpdGgKKwkgLS1hcy1uZWVkZWQgaW4gZWZmZWN0LCB0aGVuIHdlIGRvbid0IHdhbnQgdG8gYWRkIGEgRFRfTkVFREVECisJIHRhZyB1bmxlc3MgdGhlIGxpYiBpcyBhY3R1YWxseSB1c2VkLiAgU2ltaWxhcnkgZm9yIGxpYnMgYnJvdWdodAorCSBpbiBieSBhbm90aGVyIGxpYidzIERUX05FRURFRC4gICovCisgICAgICBhZGRfbmVlZGVkID0gZWxmX2R5bl9saWJfY2xhc3MgKGFiZmQpID09IERZTl9OT1JNQUw7CisKKyAgICAgIHMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgIi5keW5hbWljIik7CisgICAgICBpZiAocyAhPSBOVUxMKQorCXsKKwkgIGJmZF9ieXRlICpkeW5idWY7CisJICBiZmRfYnl0ZSAqZXh0ZHluOworCSAgaW50IGVsZnNlYzsKKwkgIHVuc2lnbmVkIGxvbmcgc2hsaW5rOworCisJICBkeW5idWYgPSBiZmRfbWFsbG9jIChzLT5fcmF3X3NpemUpOworCSAgaWYgKGR5bmJ1ZiA9PSBOVUxMKQorCSAgICBnb3RvIGVycm9yX3JldHVybjsKKworCSAgaWYgKCEgYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIChhYmZkLCBzLCBkeW5idWYsIDAsIHMtPl9yYXdfc2l6ZSkpCisJICAgIGdvdG8gZXJyb3JfZnJlZV9keW47CisKKwkgIGVsZnNlYyA9IF9iZmRfZWxmX3NlY3Rpb25fZnJvbV9iZmRfc2VjdGlvbiAoYWJmZCwgcyk7CisJICBpZiAoZWxmc2VjID09IC0xKQorCSAgICBnb3RvIGVycm9yX2ZyZWVfZHluOworCSAgc2hsaW5rID0gZWxmX2VsZnNlY3Rpb25zIChhYmZkKVtlbGZzZWNdLT5zaF9saW5rOworCisJICBmb3IgKGV4dGR5biA9IGR5bmJ1ZjsKKwkgICAgICAgZXh0ZHluIDwgZHluYnVmICsgcy0+X3Jhd19zaXplOworCSAgICAgICBleHRkeW4gKz0gYmVkLT5zLT5zaXplb2ZfZHluKQorCSAgICB7CisJICAgICAgRWxmX0ludGVybmFsX0R5biBkeW47CisKKwkgICAgICBiZWQtPnMtPnN3YXBfZHluX2luIChhYmZkLCBleHRkeW4sICZkeW4pOworCSAgICAgIGlmIChkeW4uZF90YWcgPT0gRFRfU09OQU1FKQorCQl7CisJCSAgdW5zaWduZWQgaW50IHRhZ3YgPSBkeW4uZF91bi5kX3ZhbDsKKwkJICBzb25hbWUgPSBiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uIChhYmZkLCBzaGxpbmssIHRhZ3YpOworCQkgIGlmIChzb25hbWUgPT0gTlVMTCkKKwkJICAgIGdvdG8gZXJyb3JfZnJlZV9keW47CisJCX0KKwkgICAgICBpZiAoZHluLmRfdGFnID09IERUX05FRURFRCkKKwkJeworCQkgIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqbiwgKipwbjsKKwkJICBjaGFyICpmbm0sICphbm07CisJCSAgdW5zaWduZWQgaW50IHRhZ3YgPSBkeW4uZF91bi5kX3ZhbDsKKworCQkgIGFtdCA9IHNpemVvZiAoc3RydWN0IGJmZF9saW5rX25lZWRlZF9saXN0KTsKKwkJICBuID0gYmZkX2FsbG9jIChhYmZkLCBhbXQpOworCQkgIGZubSA9IGJmZF9lbGZfc3RyaW5nX2Zyb21fZWxmX3NlY3Rpb24gKGFiZmQsIHNobGluaywgdGFndik7CisJCSAgaWYgKG4gPT0gTlVMTCB8fCBmbm0gPT0gTlVMTCkKKwkJICAgIGdvdG8gZXJyb3JfZnJlZV9keW47CisJCSAgYW10ID0gc3RybGVuIChmbm0pICsgMTsKKwkJICBhbm0gPSBiZmRfYWxsb2MgKGFiZmQsIGFtdCk7CisJCSAgaWYgKGFubSA9PSBOVUxMKQorCQkgICAgZ290byBlcnJvcl9mcmVlX2R5bjsKKwkJICBtZW1jcHkgKGFubSwgZm5tLCBhbXQpOworCQkgIG4tPm5hbWUgPSBhbm07CisJCSAgbi0+YnkgPSBhYmZkOworCQkgIG4tPm5leHQgPSBOVUxMOworCQkgIGZvciAocG4gPSAmIGhhc2hfdGFibGUtPm5lZWRlZDsKKwkJICAgICAgICpwbiAhPSBOVUxMOworCQkgICAgICAgcG4gPSAmKCpwbiktPm5leHQpCisJCSAgICA7CisJCSAgKnBuID0gbjsKKwkJfQorCSAgICAgIGlmIChkeW4uZF90YWcgPT0gRFRfUlVOUEFUSCkKKwkJeworCQkgIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqbiwgKipwbjsKKwkJICBjaGFyICpmbm0sICphbm07CisJCSAgdW5zaWduZWQgaW50IHRhZ3YgPSBkeW4uZF91bi5kX3ZhbDsKKworCQkgIGFtdCA9IHNpemVvZiAoc3RydWN0IGJmZF9saW5rX25lZWRlZF9saXN0KTsKKwkJICBuID0gYmZkX2FsbG9jIChhYmZkLCBhbXQpOworCQkgIGZubSA9IGJmZF9lbGZfc3RyaW5nX2Zyb21fZWxmX3NlY3Rpb24gKGFiZmQsIHNobGluaywgdGFndik7CisJCSAgaWYgKG4gPT0gTlVMTCB8fCBmbm0gPT0gTlVMTCkKKwkJICAgIGdvdG8gZXJyb3JfZnJlZV9keW47CisJCSAgYW10ID0gc3RybGVuIChmbm0pICsgMTsKKwkJICBhbm0gPSBiZmRfYWxsb2MgKGFiZmQsIGFtdCk7CisJCSAgaWYgKGFubSA9PSBOVUxMKQorCQkgICAgZ290byBlcnJvcl9mcmVlX2R5bjsKKwkJICBtZW1jcHkgKGFubSwgZm5tLCBhbXQpOworCQkgIG4tPm5hbWUgPSBhbm07CisJCSAgbi0+YnkgPSBhYmZkOworCQkgIG4tPm5leHQgPSBOVUxMOworCQkgIGZvciAocG4gPSAmIHJ1bnBhdGg7CisJCSAgICAgICAqcG4gIT0gTlVMTDsKKwkJICAgICAgIHBuID0gJigqcG4pLT5uZXh0KQorCQkgICAgOworCQkgICpwbiA9IG47CisJCX0KKwkgICAgICAvKiBJZ25vcmUgRFRfUlBBVEggaWYgd2UgaGF2ZSBzZWVuIERUX1JVTlBBVEguICAqLworCSAgICAgIGlmICghcnVucGF0aCAmJiBkeW4uZF90YWcgPT0gRFRfUlBBVEgpCisJCXsKKwkJICBzdHJ1Y3QgYmZkX2xpbmtfbmVlZGVkX2xpc3QgKm4sICoqcG47CisJCSAgY2hhciAqZm5tLCAqYW5tOworCQkgIHVuc2lnbmVkIGludCB0YWd2ID0gZHluLmRfdW4uZF92YWw7CisKKwkJICBhbXQgPSBzaXplb2YgKHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCk7CisJCSAgbiA9IGJmZF9hbGxvYyAoYWJmZCwgYW10KTsKKwkJICBmbm0gPSBiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uIChhYmZkLCBzaGxpbmssIHRhZ3YpOworCQkgIGlmIChuID09IE5VTEwgfHwgZm5tID09IE5VTEwpCisJCSAgICBnb3RvIGVycm9yX2ZyZWVfZHluOworCQkgIGFtdCA9IHN0cmxlbiAoZm5tKSArIDE7CisJCSAgYW5tID0gYmZkX2FsbG9jIChhYmZkLCBhbXQpOworCQkgIGlmIChhbm0gPT0gTlVMTCkKKwkJICAgIHsKKwkJICAgIGVycm9yX2ZyZWVfZHluOgorCQkgICAgICBmcmVlIChkeW5idWYpOworCQkgICAgICBnb3RvIGVycm9yX3JldHVybjsKKwkJICAgIH0KKwkJICBtZW1jcHkgKGFubSwgZm5tLCBhbXQpOworCQkgIG4tPm5hbWUgPSBhbm07CisJCSAgbi0+YnkgPSBhYmZkOworCQkgIG4tPm5leHQgPSBOVUxMOworCQkgIGZvciAocG4gPSAmIHJwYXRoOworCQkgICAgICAgKnBuICE9IE5VTEw7CisJCSAgICAgICBwbiA9ICYoKnBuKS0+bmV4dCkKKwkJICAgIDsKKwkJICAqcG4gPSBuOworCQl9CisJICAgIH0KKworCSAgZnJlZSAoZHluYnVmKTsKKwl9CisKKyAgICAgIC8qIERUX1JVTlBBVEggb3ZlcnJpZGVzIERUX1JQQVRILiAgRG8gX05PVF8gYmZkX3JlbGVhc2UsIGFzIHRoYXQKKwkgZnJlZXMgYWxsIG1vcmUgcmVjZW50bHkgYmZkX2FsbG9jJ2QgYmxvY2tzIGFzIHdlbGwuICAqLworICAgICAgaWYgKHJ1bnBhdGgpCisJcnBhdGggPSBydW5wYXRoOworCisgICAgICBpZiAocnBhdGgpCisJeworCSAgc3RydWN0IGJmZF9saW5rX25lZWRlZF9saXN0ICoqcG47CisJICBmb3IgKHBuID0gJiBoYXNoX3RhYmxlLT5ydW5wYXRoOworCSAgICAgICAqcG4gIT0gTlVMTDsKKwkgICAgICAgcG4gPSAmKCpwbiktPm5leHQpCisJICAgIDsKKwkgICpwbiA9IHJwYXRoOworCX0KKworICAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gaW5jbHVkZSBhbnkgb2YgdGhlIHNlY3Rpb25zIGluIGEgZHluYW1pYworCSBvYmplY3QgaW4gdGhlIG91dHB1dCBmaWxlLiAgV2UgaGFjayBieSBzaW1wbHkgY2xvYmJlcmluZyB0aGUKKwkgbGlzdCBvZiBzZWN0aW9ucyBpbiB0aGUgQkZELiAgVGhpcyBjb3VsZCBiZSBoYW5kbGVkIG1vcmUKKwkgY2xlYW5seSBieSwgc2F5LCBhIG5ldyBzZWN0aW9uIGZsYWc7IHRoZSBleGlzdGluZworCSBTRUNfTkVWRVJfTE9BRCBmbGFnIGlzIG5vdCB0aGUgb25lIHdlIHdhbnQsIGJlY2F1c2UgdGhhdCBvbmUKKwkgc3RpbGwgaW1wbGllcyB0aGF0IHRoZSBzZWN0aW9uIHRha2VzIHVwIHNwYWNlIGluIHRoZSBvdXRwdXQKKwkgZmlsZS4gICovCisgICAgICBiZmRfc2VjdGlvbl9saXN0X2NsZWFyIChhYmZkKTsKKworICAgICAgLyogSWYgdGhpcyBpcyB0aGUgZmlyc3QgZHluYW1pYyBvYmplY3QgZm91bmQgaW4gdGhlIGxpbmssIGNyZWF0ZQorCSB0aGUgc3BlY2lhbCBzZWN0aW9ucyByZXF1aXJlZCBmb3IgZHluYW1pYyBsaW5raW5nLiAgKi8KKyAgICAgIGlmICghIF9iZmRfZWxmX2xpbmtfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMgKGFiZmQsIGluZm8pKQorCWdvdG8gZXJyb3JfcmV0dXJuOworCisgICAgICAvKiBGaW5kIHRoZSBuYW1lIHRvIHVzZSBpbiBhIERUX05FRURFRCBlbnRyeSB0aGF0IHJlZmVycyB0byB0aGlzCisJIG9iamVjdC4gIElmIHRoZSBvYmplY3QgaGFzIGEgRFRfU09OQU1FIGVudHJ5LCB3ZSB1c2UgaXQuCisJIE90aGVyd2lzZSwgaWYgdGhlIGdlbmVyaWMgbGlua2VyIHN0dWNrIHNvbWV0aGluZyBpbgorCSBlbGZfZHRfbmFtZSwgd2UgdXNlIHRoYXQuICBPdGhlcndpc2UsIHdlIGp1c3QgdXNlIHRoZSBmaWxlCisJIG5hbWUuICAqLworICAgICAgaWYgKHNvbmFtZSA9PSBOVUxMIHx8ICpzb25hbWUgPT0gJ1wwJykKKwl7CisJICBzb25hbWUgPSBlbGZfZHRfbmFtZSAoYWJmZCk7CisJICBpZiAoc29uYW1lID09IE5VTEwgfHwgKnNvbmFtZSA9PSAnXDAnKQorCSAgICBzb25hbWUgPSBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKTsKKwl9CisKKyAgICAgIC8qIFNhdmUgdGhlIFNPTkFNRSBiZWNhdXNlIHNvbWV0aW1lcyB0aGUgbGlua2VyIGVtdWxhdGlvbiBjb2RlCisJIHdpbGwgbmVlZCB0byBrbm93IGl0LiAgKi8KKyAgICAgIGVsZl9kdF9uYW1lIChhYmZkKSA9IHNvbmFtZTsKKworICAgICAgcmV0ID0gZWxmX2FkZF9kdF9uZWVkZWRfdGFnIChpbmZvLCBzb25hbWUsIGFkZF9uZWVkZWQpOworICAgICAgaWYgKHJldCA8IDApCisJZ290byBlcnJvcl9yZXR1cm47CisKKyAgICAgIC8qIElmIHdlIGhhdmUgYWxyZWFkeSBpbmNsdWRlZCB0aGlzIGR5bmFtaWMgb2JqZWN0IGluIHRoZQorCSBsaW5rLCBqdXN0IGlnbm9yZSBpdC4gIFRoZXJlIGlzIG5vIHJlYXNvbiB0byBpbmNsdWRlIGEKKwkgcGFydGljdWxhciBkeW5hbWljIG9iamVjdCBtb3JlIHRoYW4gb25jZS4gICovCisgICAgICBpZiAocmV0ID4gMCkKKwlyZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgLyogSWYgdGhpcyBpcyBhIGR5bmFtaWMgb2JqZWN0LCB3ZSBhbHdheXMgbGluayBhZ2FpbnN0IHRoZSAuZHluc3ltCisgICAgIHN5bWJvbCB0YWJsZSwgbm90IHRoZSAuc3ltdGFiIHN5bWJvbCB0YWJsZS4gIFRoZSBkeW5hbWljIGxpbmtlcgorICAgICB3aWxsIG9ubHkgc2VlIHRoZSAuZHluc3ltIHN5bWJvbCB0YWJsZSwgc28gdGhlcmUgaXMgbm8gcmVhc29uIHRvCisgICAgIGxvb2sgYXQgLnN5bXRhYiBmb3IgYSBkeW5hbWljIG9iamVjdC4gICovCisKKyAgaWYgKCEgZHluYW1pYyB8fCBlbGZfZHluc3ltdGFiIChhYmZkKSA9PSAwKQorICAgIGhkciA9ICZlbGZfdGRhdGEgKGFiZmQpLT5zeW10YWJfaGRyOworICBlbHNlCisgICAgaGRyID0gJmVsZl90ZGF0YSAoYWJmZCktPmR5bnN5bXRhYl9oZHI7CisKKyAgc3ltY291bnQgPSBoZHItPnNoX3NpemUgLyBiZWQtPnMtPnNpemVvZl9zeW07CisKKyAgLyogVGhlIHNoX2luZm8gZmllbGQgb2YgdGhlIHN5bXRhYiBoZWFkZXIgdGVsbHMgdXMgd2hlcmUgdGhlCisgICAgIGV4dGVybmFsIHN5bWJvbHMgc3RhcnQuICBXZSBkb24ndCBjYXJlIGFib3V0IHRoZSBsb2NhbCBzeW1ib2xzIGF0CisgICAgIHRoaXMgcG9pbnQuICAqLworICBpZiAoZWxmX2JhZF9zeW10YWIgKGFiZmQpKQorICAgIHsKKyAgICAgIGV4dHN5bWNvdW50ID0gc3ltY291bnQ7CisgICAgICBleHRzeW1vZmYgPSAwOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGV4dHN5bWNvdW50ID0gc3ltY291bnQgLSBoZHItPnNoX2luZm87CisgICAgICBleHRzeW1vZmYgPSBoZHItPnNoX2luZm87CisgICAgfQorCisgIHN5bV9oYXNoID0gTlVMTDsKKyAgaWYgKGV4dHN5bWNvdW50ICE9IDApCisgICAgeworICAgICAgaXN5bWJ1ZiA9IGJmZF9lbGZfZ2V0X2VsZl9zeW1zIChhYmZkLCBoZHIsIGV4dHN5bWNvdW50LCBleHRzeW1vZmYsCisJCQkJICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICBpZiAoaXN5bWJ1ZiA9PSBOVUxMKQorCWdvdG8gZXJyb3JfcmV0dXJuOworCisgICAgICAvKiBXZSBzdG9yZSBhIHBvaW50ZXIgdG8gdGhlIGhhc2ggdGFibGUgZW50cnkgZm9yIGVhY2ggZXh0ZXJuYWwKKwkgc3ltYm9sLiAgKi8KKyAgICAgIGFtdCA9IGV4dHN5bWNvdW50ICogc2l6ZW9mIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKTsKKyAgICAgIHN5bV9oYXNoID0gYmZkX2FsbG9jIChhYmZkLCBhbXQpOworICAgICAgaWYgKHN5bV9oYXNoID09IE5VTEwpCisJZ290byBlcnJvcl9mcmVlX3N5bTsKKyAgICAgIGVsZl9zeW1faGFzaGVzIChhYmZkKSA9IHN5bV9oYXNoOworICAgIH0KKworICBpZiAoZHluYW1pYykKKyAgICB7CisgICAgICAvKiBSZWFkIGluIGFueSB2ZXJzaW9uIGRlZmluaXRpb25zLiAgKi8KKyAgICAgIGlmICghIF9iZmRfZWxmX3NsdXJwX3ZlcnNpb25fdGFibGVzIChhYmZkKSkKKwlnb3RvIGVycm9yX2ZyZWVfc3ltOworCisgICAgICAvKiBSZWFkIGluIHRoZSBzeW1ib2wgdmVyc2lvbnMsIGJ1dCBkb24ndCBib3RoZXIgdG8gY29udmVydCB0aGVtCisJIHRvIGludGVybmFsIGZvcm1hdC4gICovCisgICAgICBpZiAoZWxmX2R5bnZlcnN5bSAoYWJmZCkgIT0gMCkKKwl7CisJICBFbGZfSW50ZXJuYWxfU2hkciAqdmVyc3ltaGRyOworCisJICB2ZXJzeW1oZHIgPSAmZWxmX3RkYXRhIChhYmZkKS0+ZHludmVyc3ltX2hkcjsKKwkgIGV4dHZlcnN5bSA9IGJmZF9tYWxsb2MgKHZlcnN5bWhkci0+c2hfc2l6ZSk7CisJICBpZiAoZXh0dmVyc3ltID09IE5VTEwpCisJICAgIGdvdG8gZXJyb3JfZnJlZV9zeW07CisJICBhbXQgPSB2ZXJzeW1oZHItPnNoX3NpemU7CisJICBpZiAoYmZkX3NlZWsgKGFiZmQsIHZlcnN5bWhkci0+c2hfb2Zmc2V0LCBTRUVLX1NFVCkgIT0gMAorCSAgICAgIHx8IGJmZF9icmVhZCAoZXh0dmVyc3ltLCBhbXQsIGFiZmQpICE9IGFtdCkKKwkgICAgZ290byBlcnJvcl9mcmVlX3ZlcnM7CisJfQorICAgIH0KKworICB3ZWFrcyA9IE5VTEw7CisKKyAgZXZlciA9IGV4dHZlcnN5bSAhPSBOVUxMID8gZXh0dmVyc3ltICsgZXh0c3ltb2ZmIDogTlVMTDsKKyAgZm9yIChpc3ltID0gaXN5bWJ1ZiwgaXN5bWVuZCA9IGlzeW1idWYgKyBleHRzeW1jb3VudDsKKyAgICAgICBpc3ltIDwgaXN5bWVuZDsKKyAgICAgICBpc3ltKyssIHN5bV9oYXNoKyssIGV2ZXIgPSAoZXZlciAhPSBOVUxMID8gZXZlciArIDEgOiBOVUxMKSkKKyAgICB7CisgICAgICBpbnQgYmluZDsKKyAgICAgIGJmZF92bWEgdmFsdWU7CisgICAgICBhc2VjdGlvbiAqc2VjOworICAgICAgZmxhZ3dvcmQgZmxhZ3M7CisgICAgICBjb25zdCBjaGFyICpuYW1lOworICAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmg7CisgICAgICBiZmRfYm9vbGVhbiBkZWZpbml0aW9uOworICAgICAgYmZkX2Jvb2xlYW4gc2l6ZV9jaGFuZ2Vfb2s7CisgICAgICBiZmRfYm9vbGVhbiB0eXBlX2NoYW5nZV9vazsKKyAgICAgIGJmZF9ib29sZWFuIG5ld193ZWFrZGVmOworICAgICAgYmZkX2Jvb2xlYW4gb3ZlcnJpZGU7CisgICAgICB1bnNpZ25lZCBpbnQgb2xkX2FsaWdubWVudDsKKyAgICAgIGJmZCAqb2xkX2JmZDsKKworICAgICAgb3ZlcnJpZGUgPSBGQUxTRTsKKworICAgICAgZmxhZ3MgPSBCU0ZfTk9fRkxBR1M7CisgICAgICBzZWMgPSBOVUxMOworICAgICAgdmFsdWUgPSBpc3ltLT5zdF92YWx1ZTsKKyAgICAgICpzeW1faGFzaCA9IE5VTEw7CisKKyAgICAgIGJpbmQgPSBFTEZfU1RfQklORCAoaXN5bS0+c3RfaW5mbyk7CisgICAgICBpZiAoYmluZCA9PSBTVEJfTE9DQUwpCisJeworCSAgLyogVGhpcyBzaG91bGQgYmUgaW1wb3NzaWJsZSwgc2luY2UgRUxGIHJlcXVpcmVzIHRoYXQgYWxsCisJICAgICBnbG9iYWwgc3ltYm9scyBmb2xsb3cgYWxsIGxvY2FsIHN5bWJvbHMsIGFuZCB0aGF0IHNoX2luZm8KKwkgICAgIHBvaW50IHRvIHRoZSBmaXJzdCBnbG9iYWwgc3ltYm9sLiAgVW5mb3J0dW5hdGVseSwgSXJpeCA1CisJICAgICBzY3Jld3MgdGhpcyB1cC4gICovCisJICBjb250aW51ZTsKKwl9CisgICAgICBlbHNlIGlmIChiaW5kID09IFNUQl9HTE9CQUwpCisJeworCSAgaWYgKGlzeW0tPnN0X3NobmR4ICE9IFNITl9VTkRFRgorCSAgICAgICYmIGlzeW0tPnN0X3NobmR4ICE9IFNITl9DT01NT04pCisJICAgIGZsYWdzID0gQlNGX0dMT0JBTDsKKwl9CisgICAgICBlbHNlIGlmIChiaW5kID09IFNUQl9XRUFLKQorCWZsYWdzID0gQlNGX1dFQUs7CisgICAgICBlbHNlCisJeworCSAgLyogTGVhdmUgaXQgdXAgdG8gdGhlIHByb2Nlc3NvciBiYWNrZW5kLiAgKi8KKwl9CisKKyAgICAgIGlmIChpc3ltLT5zdF9zaG5keCA9PSBTSE5fVU5ERUYpCisJc2VjID0gYmZkX3VuZF9zZWN0aW9uX3B0cjsKKyAgICAgIGVsc2UgaWYgKGlzeW0tPnN0X3NobmR4IDwgU0hOX0xPUkVTRVJWRSB8fCBpc3ltLT5zdF9zaG5keCA+IFNITl9ISVJFU0VSVkUpCisJeworCSAgc2VjID0gYmZkX3NlY3Rpb25fZnJvbV9lbGZfaW5kZXggKGFiZmQsIGlzeW0tPnN0X3NobmR4KTsKKwkgIGlmIChzZWMgPT0gTlVMTCkKKwkgICAgc2VjID0gYmZkX2Fic19zZWN0aW9uX3B0cjsKKwkgIGVsc2UgaWYgKChhYmZkLT5mbGFncyAmIChFWEVDX1AgfCBEWU5BTUlDKSkgIT0gMCkKKwkgICAgdmFsdWUgLT0gc2VjLT52bWE7CisJfQorICAgICAgZWxzZSBpZiAoaXN5bS0+c3Rfc2huZHggPT0gU0hOX0FCUykKKwlzZWMgPSBiZmRfYWJzX3NlY3Rpb25fcHRyOworICAgICAgZWxzZSBpZiAoaXN5bS0+c3Rfc2huZHggPT0gU0hOX0NPTU1PTikKKwl7CisJICBzZWMgPSBiZmRfY29tX3NlY3Rpb25fcHRyOworCSAgLyogV2hhdCBFTEYgY2FsbHMgdGhlIHNpemUgd2UgY2FsbCB0aGUgdmFsdWUuICBXaGF0IEVMRgorCSAgICAgY2FsbHMgdGhlIHZhbHVlIHdlIGNhbGwgdGhlIGFsaWdubWVudC4gICovCisJICB2YWx1ZSA9IGlzeW0tPnN0X3NpemU7CisJfQorICAgICAgZWxzZQorCXsKKwkgIC8qIExlYXZlIGl0IHVwIHRvIHRoZSBwcm9jZXNzb3IgYmFja2VuZC4gICovCisJfQorCisgICAgICBuYW1lID0gYmZkX2VsZl9zdHJpbmdfZnJvbV9lbGZfc2VjdGlvbiAoYWJmZCwgaGRyLT5zaF9saW5rLAorCQkJCQkgICAgICBpc3ltLT5zdF9uYW1lKTsKKyAgICAgIGlmIChuYW1lID09IE5VTEwpCisJZ290byBlcnJvcl9mcmVlX3ZlcnM7CisKKyAgICAgIGlmIChpc3ltLT5zdF9zaG5keCA9PSBTSE5fQ09NTU9OCisJICAmJiBFTEZfU1RfVFlQRSAoaXN5bS0+c3RfaW5mbykgPT0gU1RUX1RMUykKKwl7CisJICBhc2VjdGlvbiAqdGNvbW0gPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgIi50Y29tbW9uIik7CisKKwkgIGlmICh0Y29tbSA9PSBOVUxMKQorCSAgICB7CisJICAgICAgdGNvbW0gPSBiZmRfbWFrZV9zZWN0aW9uIChhYmZkLCAiLnRjb21tb24iKTsKKwkgICAgICBpZiAodGNvbW0gPT0gTlVMTAorCQkgIHx8ICFiZmRfc2V0X3NlY3Rpb25fZmxhZ3MgKGFiZmQsIHRjb21tLCAoU0VDX0FMTE9DCisJCQkJCQkJICAgfCBTRUNfSVNfQ09NTU9OCisJCQkJCQkJICAgfCBTRUNfTElOS0VSX0NSRUFURUQKKwkJCQkJCQkgICB8IFNFQ19USFJFQURfTE9DQUwpKSkKKwkJZ290byBlcnJvcl9mcmVlX3ZlcnM7CisJICAgIH0KKwkgIHNlYyA9IHRjb21tOworCX0KKyAgICAgIGVsc2UgaWYgKGFkZF9zeW1ib2xfaG9vaykKKwl7CisJICBpZiAoISAoKmFkZF9zeW1ib2xfaG9vaykgKGFiZmQsIGluZm8sIGlzeW0sICZuYW1lLCAmZmxhZ3MsICZzZWMsCisJCQkJICAgICZ2YWx1ZSkpCisJICAgIGdvdG8gZXJyb3JfZnJlZV92ZXJzOworCisJICAvKiBUaGUgaG9vayBmdW5jdGlvbiBzZXRzIHRoZSBuYW1lIHRvIE5VTEwgaWYgdGhpcyBzeW1ib2wKKwkgICAgIHNob3VsZCBiZSBza2lwcGVkIGZvciBzb21lIHJlYXNvbi4gICovCisJICBpZiAobmFtZSA9PSBOVUxMKQorCSAgICBjb250aW51ZTsKKwl9CisKKyAgICAgIC8qIFNhbml0eSBjaGVjayB0aGF0IGFsbCBwb3NzaWJpbGl0aWVzIHdlcmUgaGFuZGxlZC4gICovCisgICAgICBpZiAoc2VjID09IE5VTEwpCisJeworCSAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2JhZF92YWx1ZSk7CisJICBnb3RvIGVycm9yX2ZyZWVfdmVyczsKKwl9CisKKyAgICAgIGlmIChiZmRfaXNfdW5kX3NlY3Rpb24gKHNlYykKKwkgIHx8IGJmZF9pc19jb21fc2VjdGlvbiAoc2VjKSkKKwlkZWZpbml0aW9uID0gRkFMU0U7CisgICAgICBlbHNlCisJZGVmaW5pdGlvbiA9IFRSVUU7CisKKyAgICAgIHNpemVfY2hhbmdlX29rID0gRkFMU0U7CisgICAgICB0eXBlX2NoYW5nZV9vayA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChhYmZkKS0+dHlwZV9jaGFuZ2Vfb2s7CisgICAgICBvbGRfYWxpZ25tZW50ID0gMDsKKyAgICAgIG9sZF9iZmQgPSBOVUxMOworCisgICAgICBpZiAoaXNfZWxmX2hhc2hfdGFibGUgKGhhc2hfdGFibGUpKQorCXsKKwkgIEVsZl9JbnRlcm5hbF9WZXJzeW0gaXZlcjsKKwkgIHVuc2lnbmVkIGludCB2ZXJudW0gPSAwOworCSAgYmZkX2Jvb2xlYW4gc2tpcDsKKworCSAgaWYgKGV2ZXIgIT0gTlVMTCkKKwkgICAgeworCSAgICAgIF9iZmRfZWxmX3N3YXBfdmVyc3ltX2luIChhYmZkLCBldmVyLCAmaXZlcik7CisJICAgICAgdmVybnVtID0gaXZlci52c192ZXJzICYgVkVSU1lNX1ZFUlNJT047CisKKwkgICAgICAvKiBJZiB0aGlzIGlzIGEgaGlkZGVuIHN5bWJvbCwgb3IgaWYgaXQgaXMgbm90IHZlcnNpb24KKwkJIDEsIHdlIGFwcGVuZCB0aGUgdmVyc2lvbiBuYW1lIHRvIHRoZSBzeW1ib2wgbmFtZS4KKwkJIEhvd2V2ZXIsIHdlIGRvIG5vdCBtb2RpZnkgYSBub24taGlkZGVuIGFic29sdXRlCisJCSBzeW1ib2wsIGJlY2F1c2UgaXQgbWlnaHQgYmUgdGhlIHZlcnNpb24gc3ltYm9sCisJCSBpdHNlbGYuICBGSVhNRTogV2hhdCBpZiBpdCBpc24ndD8gICovCisJICAgICAgaWYgKChpdmVyLnZzX3ZlcnMgJiBWRVJTWU1fSElEREVOKSAhPSAwCisJCSAgfHwgKHZlcm51bSA+IDEgJiYgISBiZmRfaXNfYWJzX3NlY3Rpb24gKHNlYykpKQorCQl7CisJCSAgY29uc3QgY2hhciAqdmVyc3RyOworCQkgIHNpemVfdCBuYW1lbGVuLCB2ZXJsZW4sIG5ld2xlbjsKKwkJICBjaGFyICpuZXduYW1lLCAqcDsKKworCQkgIGlmIChpc3ltLT5zdF9zaG5keCAhPSBTSE5fVU5ERUYpCisJCSAgICB7CisJCSAgICAgIGlmICh2ZXJudW0gPiBlbGZfdGRhdGEgKGFiZmQpLT5keW52ZXJkZWZfaGRyLnNoX2luZm8pCisJCQl7CisJCQkgICgqX2JmZF9lcnJvcl9oYW5kbGVyKQorCQkJICAgIChfKCIlczogJXM6IGludmFsaWQgdmVyc2lvbiAldSAobWF4ICVkKSIpLAorCQkJICAgICBiZmRfYXJjaGl2ZV9maWxlbmFtZSAoYWJmZCksIG5hbWUsIHZlcm51bSwKKwkJCSAgICAgZWxmX3RkYXRhIChhYmZkKS0+ZHludmVyZGVmX2hkci5zaF9pbmZvKTsKKwkJCSAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2JhZF92YWx1ZSk7CisJCQkgIGdvdG8gZXJyb3JfZnJlZV92ZXJzOworCQkJfQorCQkgICAgICBlbHNlIGlmICh2ZXJudW0gPiAxKQorCQkJdmVyc3RyID0KKwkJCSAgZWxmX3RkYXRhIChhYmZkKS0+dmVyZGVmW3Zlcm51bSAtIDFdLnZkX25vZGVuYW1lOworCQkgICAgICBlbHNlCisJCQl2ZXJzdHIgPSAiIjsKKwkJICAgIH0KKwkJICBlbHNlCisJCSAgICB7CisJCSAgICAgIC8qIFdlIGNhbm5vdCBzaW1wbHkgdGVzdCBmb3IgdGhlIG51bWJlciBvZgorCQkJIGVudHJpZXMgaW4gdGhlIFZFUk5FRUQgc2VjdGlvbiBzaW5jZSB0aGUKKwkJCSBudW1iZXJzIGZvciB0aGUgbmVlZGVkIHZlcnNpb25zIGRvIG5vdCBzdGFydAorCQkJIGF0IDAuICAqLworCQkgICAgICBFbGZfSW50ZXJuYWxfVmVybmVlZCAqdDsKKworCQkgICAgICB2ZXJzdHIgPSBOVUxMOworCQkgICAgICBmb3IgKHQgPSBlbGZfdGRhdGEgKGFiZmQpLT52ZXJyZWY7CisJCQkgICB0ICE9IE5VTEw7CisJCQkgICB0ID0gdC0+dm5fbmV4dHJlZikKKwkJCXsKKwkJCSAgRWxmX0ludGVybmFsX1Zlcm5hdXggKmE7CisKKwkJCSAgZm9yIChhID0gdC0+dm5fYXV4cHRyOyBhICE9IE5VTEw7IGEgPSBhLT52bmFfbmV4dHB0cikKKwkJCSAgICB7CisJCQkgICAgICBpZiAoYS0+dm5hX290aGVyID09IHZlcm51bSkKKwkJCQl7CisJCQkJICB2ZXJzdHIgPSBhLT52bmFfbm9kZW5hbWU7CisJCQkJICBicmVhazsKKwkJCQl9CisJCQkgICAgfQorCQkJICBpZiAoYSAhPSBOVUxMKQorCQkJICAgIGJyZWFrOworCQkJfQorCQkgICAgICBpZiAodmVyc3RyID09IE5VTEwpCisJCQl7CisJCQkgICgqX2JmZF9lcnJvcl9oYW5kbGVyKQorCQkJICAgIChfKCIlczogJXM6IGludmFsaWQgbmVlZGVkIHZlcnNpb24gJWQiKSwKKwkJCSAgICAgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKGFiZmQpLCBuYW1lLCB2ZXJudW0pOworCQkJICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKKwkJCSAgZ290byBlcnJvcl9mcmVlX3ZlcnM7CisJCQl9CisJCSAgICB9CisKKwkJICBuYW1lbGVuID0gc3RybGVuIChuYW1lKTsKKwkJICB2ZXJsZW4gPSBzdHJsZW4gKHZlcnN0cik7CisJCSAgbmV3bGVuID0gbmFtZWxlbiArIHZlcmxlbiArIDI7CisJCSAgaWYgKChpdmVyLnZzX3ZlcnMgJiBWRVJTWU1fSElEREVOKSA9PSAwCisJCSAgICAgICYmIGlzeW0tPnN0X3NobmR4ICE9IFNITl9VTkRFRikKKwkJICAgICsrbmV3bGVuOworCisJCSAgbmV3bmFtZSA9IGJmZF9hbGxvYyAoYWJmZCwgbmV3bGVuKTsKKwkJICBpZiAobmV3bmFtZSA9PSBOVUxMKQorCQkgICAgZ290byBlcnJvcl9mcmVlX3ZlcnM7CisJCSAgbWVtY3B5IChuZXduYW1lLCBuYW1lLCBuYW1lbGVuKTsKKwkJICBwID0gbmV3bmFtZSArIG5hbWVsZW47CisJCSAgKnArKyA9IEVMRl9WRVJfQ0hSOworCQkgIC8qIElmIHRoaXMgaXMgYSBkZWZpbmVkIG5vbi1oaWRkZW4gdmVyc2lvbiBzeW1ib2wsCisJCSAgICAgd2UgYWRkIGFub3RoZXIgQCB0byB0aGUgbmFtZS4gIFRoaXMgaW5kaWNhdGVzIHRoZQorCQkgICAgIGRlZmF1bHQgdmVyc2lvbiBvZiB0aGUgc3ltYm9sLiAgKi8KKwkJICBpZiAoKGl2ZXIudnNfdmVycyAmIFZFUlNZTV9ISURERU4pID09IDAKKwkJICAgICAgJiYgaXN5bS0+c3Rfc2huZHggIT0gU0hOX1VOREVGKQorCQkgICAgKnArKyA9IEVMRl9WRVJfQ0hSOworCQkgIG1lbWNweSAocCwgdmVyc3RyLCB2ZXJsZW4gKyAxKTsKKworCQkgIG5hbWUgPSBuZXduYW1lOworCQl9CisJICAgIH0KKworCSAgaWYgKCFfYmZkX2VsZl9tZXJnZV9zeW1ib2wgKGFiZmQsIGluZm8sIG5hbWUsIGlzeW0sICZzZWMsICZ2YWx1ZSwKKwkJCQkgICAgICBzeW1faGFzaCwgJnNraXAsICZvdmVycmlkZSwKKwkJCQkgICAgICAmdHlwZV9jaGFuZ2Vfb2ssICZzaXplX2NoYW5nZV9vaykpCisJICAgIGdvdG8gZXJyb3JfZnJlZV92ZXJzOworCisJICBpZiAoc2tpcCkKKwkgICAgY29udGludWU7CisKKwkgIGlmIChvdmVycmlkZSkKKwkgICAgZGVmaW5pdGlvbiA9IEZBTFNFOworCisJICBoID0gKnN5bV9oYXNoOworCSAgd2hpbGUgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2luZGlyZWN0CisJCSB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQorCSAgICBoID0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIGgtPnJvb3QudS5pLmxpbms7CisKKwkgIC8qIFJlbWVtYmVyIHRoZSBvbGQgYWxpZ25tZW50IGlmIHRoaXMgaXMgYSBjb21tb24gc3ltYm9sLCBzbworCSAgICAgdGhhdCB3ZSBkb24ndCByZWR1Y2UgdGhlIGFsaWdubWVudCBsYXRlciBvbi4gIFdlIGNhbid0CisJICAgICBjaGVjayBsYXRlciwgYmVjYXVzZSBfYmZkX2dlbmVyaWNfbGlua19hZGRfb25lX3N5bWJvbAorCSAgICAgd2lsbCBzZXQgYSBkZWZhdWx0IGZvciB0aGUgYWxpZ25tZW50IHdoaWNoIHdlIHdhbnQgdG8KKwkgICAgIG92ZXJyaWRlLiBXZSBhbHNvIHJlbWVtYmVyIHRoZSBvbGQgYmZkIHdoZXJlIHRoZSBleGlzdGluZworCSAgICAgZGVmaW5pdGlvbiBjb21lcyBmcm9tLiAgKi8KKwkgIHN3aXRjaCAoaC0+cm9vdC50eXBlKQorCSAgICB7CisJICAgIGRlZmF1bHQ6CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBiZmRfbGlua19oYXNoX2RlZmluZWQ6CisJICAgIGNhc2UgYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrOgorCSAgICAgIG9sZF9iZmQgPSBoLT5yb290LnUuZGVmLnNlY3Rpb24tPm93bmVyOworCSAgICAgIGJyZWFrOworCisJICAgIGNhc2UgYmZkX2xpbmtfaGFzaF9jb21tb246CisJICAgICAgb2xkX2JmZCA9IGgtPnJvb3QudS5jLnAtPnNlY3Rpb24tPm93bmVyOworCSAgICAgIG9sZF9hbGlnbm1lbnQgPSBoLT5yb290LnUuYy5wLT5hbGlnbm1lbnRfcG93ZXI7CisJICAgICAgYnJlYWs7CisJICAgIH0KKworCSAgaWYgKGVsZl90ZGF0YSAoYWJmZCktPnZlcmRlZiAhPSBOVUxMCisJICAgICAgJiYgISBvdmVycmlkZQorCSAgICAgICYmIHZlcm51bSA+IDEKKwkgICAgICAmJiBkZWZpbml0aW9uKQorCSAgICBoLT52ZXJpbmZvLnZlcmRlZiA9ICZlbGZfdGRhdGEgKGFiZmQpLT52ZXJkZWZbdmVybnVtIC0gMV07CisJfQorCisgICAgICBpZiAoISAoX2JmZF9nZW5lcmljX2xpbmtfYWRkX29uZV9zeW1ib2wKKwkgICAgIChpbmZvLCBhYmZkLCBuYW1lLCBmbGFncywgc2VjLCB2YWx1ZSwgTlVMTCwgRkFMU0UsIGNvbGxlY3QsCisJICAgICAgKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5ICoqKSBzeW1faGFzaCkpKQorCWdvdG8gZXJyb3JfZnJlZV92ZXJzOworCisgICAgICBoID0gKnN5bV9oYXNoOworICAgICAgd2hpbGUgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2luZGlyZWN0CisJICAgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQorCWggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKKyAgICAgICpzeW1faGFzaCA9IGg7CisKKyAgICAgIG5ld193ZWFrZGVmID0gRkFMU0U7CisgICAgICBpZiAoZHluYW1pYworCSAgJiYgZGVmaW5pdGlvbgorCSAgJiYgKGZsYWdzICYgQlNGX1dFQUspICE9IDAKKwkgICYmIEVMRl9TVF9UWVBFIChpc3ltLT5zdF9pbmZvKSAhPSBTVFRfRlVOQworCSAgJiYgaXNfZWxmX2hhc2hfdGFibGUgKGhhc2hfdGFibGUpCisJICAmJiBoLT53ZWFrZGVmID09IE5VTEwpCisJeworCSAgLyogS2VlcCBhIGxpc3Qgb2YgYWxsIHdlYWsgZGVmaW5lZCBub24gZnVuY3Rpb24gc3ltYm9scyBmcm9tCisJICAgICBhIGR5bmFtaWMgb2JqZWN0LCB1c2luZyB0aGUgd2Vha2RlZiBmaWVsZC4gIExhdGVyIGluIHRoaXMKKwkgICAgIGZ1bmN0aW9uIHdlIHdpbGwgc2V0IHRoZSB3ZWFrZGVmIGZpZWxkIHRvIHRoZSBjb3JyZWN0CisJICAgICB2YWx1ZS4gIFdlIG9ubHkgcHV0IG5vbi1mdW5jdGlvbiBzeW1ib2xzIGZyb20gZHluYW1pYworCSAgICAgb2JqZWN0cyBvbiB0aGlzIGxpc3QsIGJlY2F1c2UgdGhhdCBoYXBwZW5zIHRvIGJlIHRoZSBvbmx5CisJICAgICB0aW1lIHdlIG5lZWQgdG8ga25vdyB0aGUgbm9ybWFsIHN5bWJvbCBjb3JyZXNwb25kaW5nIHRvIGEKKwkgICAgIHdlYWsgc3ltYm9sLCBhbmQgdGhlIGluZm9ybWF0aW9uIGlzIHRpbWUgY29uc3VtaW5nIHRvCisJICAgICBmaWd1cmUgb3V0LiAgSWYgdGhlIHdlYWtkZWYgZmllbGQgaXMgbm90IGFscmVhZHkgTlVMTCwKKwkgICAgIHRoZW4gdGhpcyBzeW1ib2wgd2FzIGFscmVhZHkgZGVmaW5lZCBieSBzb21lIHByZXZpb3VzCisJICAgICBkeW5hbWljIG9iamVjdCwgYW5kIHdlIHdpbGwgYmUgdXNpbmcgdGhhdCBwcmV2aW91cworCSAgICAgZGVmaW5pdGlvbiBhbnlob3cuICAqLworCisJICBoLT53ZWFrZGVmID0gd2Vha3M7CisJICB3ZWFrcyA9IGg7CisJICBuZXdfd2Vha2RlZiA9IFRSVUU7CisJfQorCisgICAgICAvKiBTZXQgdGhlIGFsaWdubWVudCBvZiBhIGNvbW1vbiBzeW1ib2wuICAqLworICAgICAgaWYgKGlzeW0tPnN0X3NobmR4ID09IFNITl9DT01NT04KKwkgICYmIGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2NvbW1vbikKKwl7CisJICB1bnNpZ25lZCBpbnQgYWxpZ247CisKKwkgIGFsaWduID0gYmZkX2xvZzIgKGlzeW0tPnN0X3ZhbHVlKTsKKwkgIGlmIChhbGlnbiA+IG9sZF9hbGlnbm1lbnQKKwkgICAgICAvKiBQZXJtaXQgYW4gYWxpZ25tZW50IHBvd2VyIG9mIHplcm8gaWYgYW4gYWxpZ25tZW50IG9mIG9uZQorCQkgaXMgc3BlY2lmaWVkIGFuZCBubyBvdGhlciBhbGlnbm1lbnRzIGhhdmUgYmVlbiBzcGVjaWZpZWQuICAqLworCSAgICAgIHx8IChpc3ltLT5zdF92YWx1ZSA9PSAxICYmIG9sZF9hbGlnbm1lbnQgPT0gMCkpCisJICAgIGgtPnJvb3QudS5jLnAtPmFsaWdubWVudF9wb3dlciA9IGFsaWduOworCSAgZWxzZQorCSAgICBoLT5yb290LnUuYy5wLT5hbGlnbm1lbnRfcG93ZXIgPSBvbGRfYWxpZ25tZW50OworCX0KKworICAgICAgaWYgKGlzX2VsZl9oYXNoX3RhYmxlIChoYXNoX3RhYmxlKSkKKwl7CisJICBpbnQgb2xkX2ZsYWdzOworCSAgYmZkX2Jvb2xlYW4gZHluc3ltOworCSAgaW50IG5ld19mbGFnOworCisJICAvKiBDaGVjayB0aGUgYWxpZ25tZW50IHdoZW4gYSBjb21tb24gc3ltYm9sIGlzIGludm9sdmVkLiBUaGlzCisJICAgICBjYW4gY2hhbmdlIHdoZW4gYSBjb21tb24gc3ltYm9sIGlzIG92ZXJyaWRkZW4gYnkgYSBub3JtYWwKKwkgICAgIGRlZmluaXRpb24gb3IgYSBjb21tb24gc3ltYm9sIGlzIGlnbm9yZWQgZHVlIHRvIHRoZSBvbGQKKwkgICAgIG5vcm1hbCBkZWZpbml0aW9uLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgbWF4aW11bQorCSAgICAgYWxpZ25tZW50IGlzIG1haW50YWluZWQuICAqLworCSAgaWYgKChvbGRfYWxpZ25tZW50IHx8IGlzeW0tPnN0X3NobmR4ID09IFNITl9DT01NT04pCisJICAgICAgJiYgaC0+cm9vdC50eXBlICE9IGJmZF9saW5rX2hhc2hfY29tbW9uKQorCSAgICB7CisJICAgICAgdW5zaWduZWQgaW50IGNvbW1vbl9hbGlnbjsKKwkgICAgICB1bnNpZ25lZCBpbnQgbm9ybWFsX2FsaWduOworCSAgICAgIHVuc2lnbmVkIGludCBzeW1ib2xfYWxpZ247CisJICAgICAgYmZkICpub3JtYWxfYmZkOworCSAgICAgIGJmZCAqY29tbW9uX2JmZDsKKworCSAgICAgIHN5bWJvbF9hbGlnbiA9IGZmcyAoaC0+cm9vdC51LmRlZi52YWx1ZSkgLSAxOworCSAgICAgIGlmIChoLT5yb290LnUuZGVmLnNlY3Rpb24tPm93bmVyICE9IE5VTEwKKwkJICAmJiAoaC0+cm9vdC51LmRlZi5zZWN0aW9uLT5vd25lci0+ZmxhZ3MgJiBEWU5BTUlDKSA9PSAwKQorCQl7CisJCSAgbm9ybWFsX2FsaWduID0gaC0+cm9vdC51LmRlZi5zZWN0aW9uLT5hbGlnbm1lbnRfcG93ZXI7CisJCSAgaWYgKG5vcm1hbF9hbGlnbiA+IHN5bWJvbF9hbGlnbikKKwkJICAgIG5vcm1hbF9hbGlnbiA9IHN5bWJvbF9hbGlnbjsKKwkJfQorCSAgICAgIGVsc2UKKwkJbm9ybWFsX2FsaWduID0gc3ltYm9sX2FsaWduOworCisJICAgICAgaWYgKG9sZF9hbGlnbm1lbnQpCisJCXsKKwkJICBjb21tb25fYWxpZ24gPSBvbGRfYWxpZ25tZW50OworCQkgIGNvbW1vbl9iZmQgPSBvbGRfYmZkOworCQkgIG5vcm1hbF9iZmQgPSBhYmZkOworCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgY29tbW9uX2FsaWduID0gYmZkX2xvZzIgKGlzeW0tPnN0X3ZhbHVlKTsKKwkJICBjb21tb25fYmZkID0gYWJmZDsKKwkJICBub3JtYWxfYmZkID0gb2xkX2JmZDsKKwkJfQorCisJICAgICAgaWYgKG5vcm1hbF9hbGlnbiA8IGNvbW1vbl9hbGlnbikKKwkJKCpfYmZkX2Vycm9yX2hhbmRsZXIpCisJCSAgKF8oIldhcm5pbmc6IGFsaWdubWVudCAldSBvZiBzeW1ib2wgYCVzJyBpbiAlcyBpcyBzbWFsbGVyIHRoYW4gJXUgaW4gJXMiKSwKKwkJICAgMSA8PCBub3JtYWxfYWxpZ24sCisJCSAgIG5hbWUsCisJCSAgIGJmZF9hcmNoaXZlX2ZpbGVuYW1lIChub3JtYWxfYmZkKSwKKwkJICAgMSA8PCBjb21tb25fYWxpZ24sCisJCSAgIGJmZF9hcmNoaXZlX2ZpbGVuYW1lIChjb21tb25fYmZkKSk7CisJICAgIH0KKworCSAgLyogUmVtZW1iZXIgdGhlIHN5bWJvbCBzaXplIGFuZCB0eXBlLiAgKi8KKwkgIGlmIChpc3ltLT5zdF9zaXplICE9IDAKKwkgICAgICAmJiAoZGVmaW5pdGlvbiB8fCBoLT5zaXplID09IDApKQorCSAgICB7CisJICAgICAgaWYgKGgtPnNpemUgIT0gMCAmJiBoLT5zaXplICE9IGlzeW0tPnN0X3NpemUgJiYgISBzaXplX2NoYW5nZV9vaykKKwkJKCpfYmZkX2Vycm9yX2hhbmRsZXIpCisJCSAgKF8oIldhcm5pbmc6IHNpemUgb2Ygc3ltYm9sIGAlcycgY2hhbmdlZCBmcm9tICVsdSBpbiAlcyB0byAlbHUgaW4gJXMiKSwKKwkJICAgbmFtZSwgKHVuc2lnbmVkIGxvbmcpIGgtPnNpemUsCisJCSAgIGJmZF9hcmNoaXZlX2ZpbGVuYW1lIChvbGRfYmZkKSwKKwkJICAgKHVuc2lnbmVkIGxvbmcpIGlzeW0tPnN0X3NpemUsCisJCSAgIGJmZF9hcmNoaXZlX2ZpbGVuYW1lIChhYmZkKSk7CisKKwkgICAgICBoLT5zaXplID0gaXN5bS0+c3Rfc2l6ZTsKKwkgICAgfQorCisJICAvKiBJZiB0aGlzIGlzIGEgY29tbW9uIHN5bWJvbCwgdGhlbiB3ZSBhbHdheXMgd2FudCBILT5TSVpFCisJICAgICB0byBiZSB0aGUgc2l6ZSBvZiB0aGUgY29tbW9uIHN5bWJvbC4gIFRoZSBjb2RlIGp1c3QgYWJvdmUKKwkgICAgIHdvbid0IGZpeCB0aGUgc2l6ZSBpZiBhIGNvbW1vbiBzeW1ib2wgYmVjb21lcyBsYXJnZXIuICBXZQorCSAgICAgZG9uJ3Qgd2FybiBhYm91dCBhIHNpemUgY2hhbmdlIGhlcmUsIGJlY2F1c2UgdGhhdCBpcworCSAgICAgY292ZXJlZCBieSAtLXdhcm4tY29tbW9uLiAgKi8KKwkgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9jb21tb24pCisJICAgIGgtPnNpemUgPSBoLT5yb290LnUuYy5zaXplOworCisJICBpZiAoRUxGX1NUX1RZUEUgKGlzeW0tPnN0X2luZm8pICE9IFNUVF9OT1RZUEUKKwkgICAgICAmJiAoZGVmaW5pdGlvbiB8fCBoLT50eXBlID09IFNUVF9OT1RZUEUpKQorCSAgICB7CisJICAgICAgaWYgKGgtPnR5cGUgIT0gU1RUX05PVFlQRQorCQkgICYmIGgtPnR5cGUgIT0gRUxGX1NUX1RZUEUgKGlzeW0tPnN0X2luZm8pCisJCSAgJiYgISB0eXBlX2NoYW5nZV9vaykKKwkJKCpfYmZkX2Vycm9yX2hhbmRsZXIpCisJCSAgKF8oIldhcm5pbmc6IHR5cGUgb2Ygc3ltYm9sIGAlcycgY2hhbmdlZCBmcm9tICVkIHRvICVkIGluICVzIiksCisJCSAgIG5hbWUsIGgtPnR5cGUsIEVMRl9TVF9UWVBFIChpc3ltLT5zdF9pbmZvKSwKKwkJICAgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKGFiZmQpKTsKKworCSAgICAgIGgtPnR5cGUgPSBFTEZfU1RfVFlQRSAoaXN5bS0+c3RfaW5mbyk7CisJICAgIH0KKworCSAgLyogSWYgc3Rfb3RoZXIgaGFzIGEgcHJvY2Vzc29yLXNwZWNpZmljIG1lYW5pbmcsIHNwZWNpZmljCisJICAgICBjb2RlIG1pZ2h0IGJlIG5lZWRlZCBoZXJlLiBXZSBuZXZlciBtZXJnZSB0aGUgdmlzaWJpbGl0eQorCSAgICAgYXR0cmlidXRlIHdpdGggdGhlIG9uZSBmcm9tIGEgZHluYW1pYyBvYmplY3QuICAqLworCSAgaWYgKGJlZC0+ZWxmX2JhY2tlbmRfbWVyZ2Vfc3ltYm9sX2F0dHJpYnV0ZSkKKwkgICAgKCpiZWQtPmVsZl9iYWNrZW5kX21lcmdlX3N5bWJvbF9hdHRyaWJ1dGUpIChoLCBpc3ltLCBkZWZpbml0aW9uLAorCQkJCQkJCWR5bmFtaWMpOworCisJICBpZiAoaXN5bS0+c3Rfb3RoZXIgIT0gMCAmJiAhZHluYW1pYykKKwkgICAgeworCSAgICAgIHVuc2lnbmVkIGNoYXIgaHZpcywgc3ltdmlzLCBvdGhlciwgbnZpczsKKworCSAgICAgIC8qIFRha2UgdGhlIGJhbGFuY2Ugb2YgT1RIRVIgZnJvbSB0aGUgZGVmaW5pdGlvbi4gICovCisJICAgICAgb3RoZXIgPSAoZGVmaW5pdGlvbiA/IGlzeW0tPnN0X290aGVyIDogaC0+b3RoZXIpOworCSAgICAgIG90aGVyICY9IH4gRUxGX1NUX1ZJU0lCSUxJVFkgKC0xKTsKKworCSAgICAgIC8qIENvbWJpbmUgdmlzaWJpbGl0aWVzLCB1c2luZyB0aGUgbW9zdCBjb25zdHJhaW5pbmcgb25lLiAgKi8KKwkgICAgICBodmlzICAgPSBFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpOworCSAgICAgIHN5bXZpcyA9IEVMRl9TVF9WSVNJQklMSVRZIChpc3ltLT5zdF9vdGhlcik7CisJICAgICAgaWYgKCEgaHZpcykKKwkJbnZpcyA9IHN5bXZpczsKKwkgICAgICBlbHNlIGlmICghIHN5bXZpcykKKwkJbnZpcyA9IGh2aXM7CisJICAgICAgZWxzZQorCQludmlzID0gaHZpcyA8IHN5bXZpcyA/IGh2aXMgOiBzeW12aXM7CisKKwkgICAgICBoLT5vdGhlciA9IG90aGVyIHwgbnZpczsKKwkgICAgfQorCisJICAvKiBTZXQgYSBmbGFnIGluIHRoZSBoYXNoIHRhYmxlIGVudHJ5IGluZGljYXRpbmcgdGhlIHR5cGUgb2YKKwkgICAgIHJlZmVyZW5jZSBvciBkZWZpbml0aW9uIHdlIGp1c3QgZm91bmQuICBLZWVwIGEgY291bnQgb2YKKwkgICAgIHRoZSBudW1iZXIgb2YgZHluYW1pYyBzeW1ib2xzIHdlIGZpbmQuICBBIGR5bmFtaWMgc3ltYm9sCisJICAgICBpcyBvbmUgd2hpY2ggaXMgcmVmZXJlbmNlZCBvciBkZWZpbmVkIGJ5IGJvdGggYSByZWd1bGFyCisJICAgICBvYmplY3QgYW5kIGEgc2hhcmVkIG9iamVjdC4gICovCisJICBvbGRfZmxhZ3MgPSBoLT5lbGZfbGlua19oYXNoX2ZsYWdzOworCSAgZHluc3ltID0gRkFMU0U7CisJICBpZiAoISBkeW5hbWljKQorCSAgICB7CisJICAgICAgaWYgKCEgZGVmaW5pdGlvbikKKwkJeworCQkgIG5ld19mbGFnID0gRUxGX0xJTktfSEFTSF9SRUZfUkVHVUxBUjsKKwkJICBpZiAoYmluZCAhPSBTVEJfV0VBSykKKwkJICAgIG5ld19mbGFnIHw9IEVMRl9MSU5LX0hBU0hfUkVGX1JFR1VMQVJfTk9OV0VBSzsKKwkJfQorCSAgICAgIGVsc2UKKwkJbmV3X2ZsYWcgPSBFTEZfTElOS19IQVNIX0RFRl9SRUdVTEFSOworCSAgICAgIGlmICghIGluZm8tPmV4ZWN1dGFibGUKKwkJICB8fCAob2xkX2ZsYWdzICYgKEVMRl9MSU5LX0hBU0hfREVGX0RZTkFNSUMKKwkJCQkgICB8IEVMRl9MSU5LX0hBU0hfUkVGX0RZTkFNSUMpKSAhPSAwKQorCQlkeW5zeW0gPSBUUlVFOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICBpZiAoISBkZWZpbml0aW9uKQorCQluZXdfZmxhZyA9IEVMRl9MSU5LX0hBU0hfUkVGX0RZTkFNSUM7CisJICAgICAgZWxzZQorCQluZXdfZmxhZyA9IEVMRl9MSU5LX0hBU0hfREVGX0RZTkFNSUM7CisJICAgICAgaWYgKChvbGRfZmxhZ3MgJiAoRUxGX0xJTktfSEFTSF9ERUZfUkVHVUxBUgorCQkJCXwgRUxGX0xJTktfSEFTSF9SRUZfUkVHVUxBUikpICE9IDAKKwkJICB8fCAoaC0+d2Vha2RlZiAhPSBOVUxMCisJCSAgICAgICYmICEgbmV3X3dlYWtkZWYKKwkJICAgICAgJiYgaC0+d2Vha2RlZi0+ZHluaW5keCAhPSAtMSkpCisJCWR5bnN5bSA9IFRSVUU7CisJICAgIH0KKworCSAgaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyB8PSBuZXdfZmxhZzsKKworCSAgLyogQ2hlY2sgdG8gc2VlIGlmIHdlIG5lZWQgdG8gYWRkIGFuIGluZGlyZWN0IHN5bWJvbCBmb3IKKwkgICAgIHRoZSBkZWZhdWx0IG5hbWUuICAqLworCSAgaWYgKGRlZmluaXRpb24gfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfY29tbW9uKQorCSAgICBpZiAoIV9iZmRfZWxmX2FkZF9kZWZhdWx0X3N5bWJvbCAoYWJmZCwgaW5mbywgaCwgbmFtZSwgaXN5bSwKKwkJCQkJICAgICAgJnNlYywgJnZhbHVlLCAmZHluc3ltLAorCQkJCQkgICAgICBvdmVycmlkZSkpCisJICAgICAgZ290byBlcnJvcl9mcmVlX3ZlcnM7CisKKwkgIGlmIChkZWZpbml0aW9uICYmICFkeW5hbWljKQorCSAgICB7CisJICAgICAgY2hhciAqcCA9IHN0cmNociAobmFtZSwgRUxGX1ZFUl9DSFIpOworCSAgICAgIGlmIChwICE9IE5VTEwgJiYgcFsxXSAhPSBFTEZfVkVSX0NIUikKKwkJeworCQkgIC8qIFF1ZXVlIG5vbi1kZWZhdWx0IHZlcnNpb25zIHNvIHRoYXQgLnN5bXZlciB4LCB4QEZPTworCQkgICAgIGFsaWFzZXMgY2FuIGJlIGNoZWNrZWQuICAqLworCQkgIGlmICghIG5vbmRlZmx0X3ZlcnMpCisJCSAgICB7CisJCSAgICAgIGFtdCA9IChpc3ltZW5kIC0gaXN5bSArIDEpCisJCQkgICAgKiBzaXplb2YgKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopOworCQkgICAgICBub25kZWZsdF92ZXJzID0gYmZkX21hbGxvYyAoYW10KTsKKwkJICAgIH0KKwkJICBub25kZWZsdF92ZXJzIFtub25kZWZsdF92ZXJzX2NudCsrXSA9IGg7CisJCX0KKwkgICAgfQorCisJICBpZiAoZHluc3ltICYmIGgtPmR5bmluZHggPT0gLTEpCisJICAgIHsKKwkgICAgICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkJZ290byBlcnJvcl9mcmVlX3ZlcnM7CisJICAgICAgaWYgKGgtPndlYWtkZWYgIT0gTlVMTAorCQkgICYmICEgbmV3X3dlYWtkZWYKKwkJICAmJiBoLT53ZWFrZGVmLT5keW5pbmR4ID09IC0xKQorCQl7CisJCSAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaC0+d2Vha2RlZikpCisJCSAgICBnb3RvIGVycm9yX2ZyZWVfdmVyczsKKwkJfQorCSAgICB9CisJICBlbHNlIGlmIChkeW5zeW0gJiYgaC0+ZHluaW5keCAhPSAtMSkKKwkgICAgLyogSWYgdGhlIHN5bWJvbCBhbHJlYWR5IGhhcyBhIGR5bmFtaWMgaW5kZXgsIGJ1dAorCSAgICAgICB2aXNpYmlsaXR5IHNheXMgaXQgc2hvdWxkIG5vdCBiZSB2aXNpYmxlLCB0dXJuIGl0IGludG8KKwkgICAgICAgYSBsb2NhbCBzeW1ib2wuICAqLworCSAgICBzd2l0Y2ggKEVMRl9TVF9WSVNJQklMSVRZIChoLT5vdGhlcikpCisJICAgICAgeworCSAgICAgIGNhc2UgU1RWX0lOVEVSTkFMOgorCSAgICAgIGNhc2UgU1RWX0hJRERFTjoKKwkJKCpiZWQtPmVsZl9iYWNrZW5kX2hpZGVfc3ltYm9sKSAoaW5mbywgaCwgVFJVRSk7CisJCWR5bnN5bSA9IEZBTFNFOworCQlicmVhazsKKwkgICAgICB9CisKKwkgIGlmICghYWRkX25lZWRlZAorCSAgICAgICYmIGRlZmluaXRpb24KKwkgICAgICAmJiBkeW5zeW0KKwkgICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncworCQkgICYgRUxGX0xJTktfSEFTSF9SRUZfUkVHVUxBUikgIT0gMCkKKwkgICAgeworCSAgICAgIGludCByZXQ7CisJICAgICAgY29uc3QgY2hhciAqc29uYW1lID0gZWxmX2R0X25hbWUgKGFiZmQpOworCisJICAgICAgLyogQSBzeW1ib2wgZnJvbSBhIGxpYnJhcnkgbG9hZGVkIHZpYSBEVF9ORUVERUQgb2Ygc29tZQorCQkgb3RoZXIgbGlicmFyeSBpcyByZWZlcmVuY2VkIGJ5IGEgcmVndWxhciBvYmplY3QuCisJCSBBZGQgYSBEVF9ORUVERUQgZW50cnkgZm9yIGl0LiAgKi8KKwkgICAgICBhZGRfbmVlZGVkID0gVFJVRTsKKwkgICAgICByZXQgPSBlbGZfYWRkX2R0X25lZWRlZF90YWcgKGluZm8sIHNvbmFtZSwgYWRkX25lZWRlZCk7CisJICAgICAgaWYgKHJldCA8IDApCisJCWdvdG8gZXJyb3JfZnJlZV92ZXJzOworCisJICAgICAgQkZEX0FTU0VSVCAocmV0ID09IDApOworCSAgICB9CisJfQorICAgIH0KKworICAvKiBOb3cgdGhhdCBhbGwgdGhlIHN5bWJvbHMgZnJvbSB0aGlzIGlucHV0IGZpbGUgYXJlIGNyZWF0ZWQsIGhhbmRsZQorICAgICAuc3ltdmVyIGZvbywgZm9vQEJBUiBzdWNoIHRoYXQgYW55IHJlbG9jcyBhZ2FpbnN0IGZvbyBiZWNvbWUgZm9vQEJBUi4gICovCisgIGlmIChub25kZWZsdF92ZXJzICE9IE5VTEwpCisgICAgeworICAgICAgYmZkX3NpemVfdHlwZSBjbnQsIHN5bWlkeDsKKworICAgICAgZm9yIChjbnQgPSAwOyBjbnQgPCBub25kZWZsdF92ZXJzX2NudDsgKytjbnQpCisJeworCSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmggPSBub25kZWZsdF92ZXJzW2NudF0sICpoaTsKKwkgIGNoYXIgKnNob3J0bmFtZSwgKnA7CisKKwkgIHAgPSBzdHJjaHIgKGgtPnJvb3Qucm9vdC5zdHJpbmcsIEVMRl9WRVJfQ0hSKTsKKwkgIGlmIChwID09IE5VTEwKKwkgICAgICB8fCAoaC0+cm9vdC50eXBlICE9IGJmZF9saW5rX2hhc2hfZGVmaW5lZAorCQkgICYmIGgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX2RlZndlYWspKQorCSAgICBjb250aW51ZTsKKworCSAgYW10ID0gcCAtIGgtPnJvb3Qucm9vdC5zdHJpbmc7CisJICBzaG9ydG5hbWUgPSBiZmRfbWFsbG9jIChhbXQgKyAxKTsKKwkgIG1lbWNweSAoc2hvcnRuYW1lLCBoLT5yb290LnJvb3Quc3RyaW5nLCBhbXQpOworCSAgc2hvcnRuYW1lW2FtdF0gPSAnXDAnOworCisJICBoaSA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKQorCSAgICAgICBiZmRfbGlua19oYXNoX2xvb2t1cCAoJmhhc2hfdGFibGUtPnJvb3QsIHNob3J0bmFtZSwKKwkJCQkgICAgIEZBTFNFLCBGQUxTRSwgRkFMU0UpOworCSAgaWYgKGhpICE9IE5VTEwKKwkgICAgICAmJiBoaS0+cm9vdC50eXBlID09IGgtPnJvb3QudHlwZQorCSAgICAgICYmIGhpLT5yb290LnUuZGVmLnZhbHVlID09IGgtPnJvb3QudS5kZWYudmFsdWUKKwkgICAgICAmJiBoaS0+cm9vdC51LmRlZi5zZWN0aW9uID09IGgtPnJvb3QudS5kZWYuc2VjdGlvbikKKwkgICAgeworCSAgICAgICgqYmVkLT5lbGZfYmFja2VuZF9oaWRlX3N5bWJvbCkgKGluZm8sIGhpLCBUUlVFKTsKKwkgICAgICBoaS0+cm9vdC50eXBlID0gYmZkX2xpbmtfaGFzaF9pbmRpcmVjdDsKKwkgICAgICBoaS0+cm9vdC51LmkubGluayA9IChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSAqKSBoOworCSAgICAgICgqYmVkLT5lbGZfYmFja2VuZF9jb3B5X2luZGlyZWN0X3N5bWJvbCkgKGJlZCwgaCwgaGkpOworCSAgICAgIHN5bV9oYXNoID0gZWxmX3N5bV9oYXNoZXMgKGFiZmQpOworCSAgICAgIGlmIChzeW1faGFzaCkKKwkJZm9yIChzeW1pZHggPSAwOyBzeW1pZHggPCBleHRzeW1jb3VudDsgKytzeW1pZHgpCisJCSAgaWYgKHN5bV9oYXNoW3N5bWlkeF0gPT0gaGkpCisJCSAgICB7CisJCSAgICAgIHN5bV9oYXNoW3N5bWlkeF0gPSBoOworCQkgICAgICBicmVhazsKKwkJICAgIH0KKwkgICAgfQorCSAgZnJlZSAoc2hvcnRuYW1lKTsKKwl9CisgICAgICBmcmVlIChub25kZWZsdF92ZXJzKTsKKyAgICAgIG5vbmRlZmx0X3ZlcnMgPSBOVUxMOworICAgIH0KKworICBpZiAoZXh0dmVyc3ltICE9IE5VTEwpCisgICAgeworICAgICAgZnJlZSAoZXh0dmVyc3ltKTsKKyAgICAgIGV4dHZlcnN5bSA9IE5VTEw7CisgICAgfQorCisgIGlmIChpc3ltYnVmICE9IE5VTEwpCisgICAgZnJlZSAoaXN5bWJ1Zik7CisgIGlzeW1idWYgPSBOVUxMOworCisgIC8qIE5vdyBzZXQgdGhlIHdlYWtkZWZzIGZpZWxkIGNvcnJlY3RseSBmb3IgYWxsIHRoZSB3ZWFrIGRlZmluZWQKKyAgICAgc3ltYm9scyB3ZSBmb3VuZC4gIFRoZSBvbmx5IHdheSB0byBkbyB0aGlzIGlzIHRvIHNlYXJjaCBhbGwgdGhlCisgICAgIHN5bWJvbHMuICBTaW5jZSB3ZSBvbmx5IG5lZWQgdGhlIGluZm9ybWF0aW9uIGZvciBub24gZnVuY3Rpb25zIGluCisgICAgIGR5bmFtaWMgb2JqZWN0cywgdGhhdCdzIHRoZSBvbmx5IHRpbWUgd2UgYWN0dWFsbHkgcHV0IGFueXRoaW5nIG9uCisgICAgIHRoZSBsaXN0IFdFQUtTLiAgV2UgbmVlZCB0aGlzIGluZm9ybWF0aW9uIHNvIHRoYXQgaWYgYSByZWd1bGFyCisgICAgIG9iamVjdCByZWZlcnMgdG8gYSBzeW1ib2wgZGVmaW5lZCB3ZWFrbHkgaW4gYSBkeW5hbWljIG9iamVjdCwgdGhlCisgICAgIHJlYWwgc3ltYm9sIGluIHRoZSBkeW5hbWljIG9iamVjdCBpcyBhbHNvIHB1dCBpbiB0aGUgZHluYW1pYworICAgICBzeW1ib2xzOyB3ZSBhbHNvIG11c3QgYXJyYW5nZSBmb3IgYm90aCBzeW1ib2xzIHRvIHBvaW50IHRvIHRoZQorICAgICBzYW1lIG1lbW9yeSBsb2NhdGlvbi4gIFdlIGNvdWxkIGhhbmRsZSB0aGUgZ2VuZXJhbCBjYXNlIG9mIHN5bWJvbAorICAgICBhbGlhc2luZywgYnV0IGEgZ2VuZXJhbCBzeW1ib2wgYWxpYXMgY2FuIG9ubHkgYmUgZ2VuZXJhdGVkIGluCisgICAgIGFzc2VtYmxlciBjb2RlLCBoYW5kbGluZyBpdCBjb3JyZWN0bHkgd291bGQgYmUgdmVyeSB0aW1lCisgICAgIGNvbnN1bWluZywgYW5kIG90aGVyIEVMRiBsaW5rZXJzIGRvbid0IGhhbmRsZSBnZW5lcmFsIGFsaWFzaW5nCisgICAgIGVpdGhlci4gICovCisgIGlmICh3ZWFrcyAhPSBOVUxMKQorICAgIHsKKyAgICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqaHBwOworICAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipocHBlbmQ7CisgICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKnNvcnRlZF9zeW1faGFzaDsKKyAgICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoOworICAgICAgc2l6ZV90IHN5bV9jb3VudDsKKworICAgICAgLyogU2luY2Ugd2UgaGF2ZSB0byBzZWFyY2ggdGhlIHdob2xlIHN5bWJvbCBsaXN0IGZvciBlYWNoIHdlYWsKKwkgZGVmaW5lZCBzeW1ib2wsIHNlYXJjaCB0aW1lIGZvciBOIHdlYWsgZGVmaW5lZCBzeW1ib2xzIHdpbGwgYmUKKwkgTyhOXjIpLiBCaW5hcnkgc2VhcmNoIHdpbGwgY3V0IGl0IGRvd24gdG8gTyhObG9nTikuICAqLworICAgICAgYW10ID0gZXh0c3ltY291bnQgKiBzaXplb2YgKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopOworICAgICAgc29ydGVkX3N5bV9oYXNoID0gYmZkX21hbGxvYyAoYW10KTsKKyAgICAgIGlmIChzb3J0ZWRfc3ltX2hhc2ggPT0gTlVMTCkKKwlnb3RvIGVycm9yX3JldHVybjsKKyAgICAgIHN5bV9oYXNoID0gc29ydGVkX3N5bV9oYXNoOworICAgICAgaHBwID0gZWxmX3N5bV9oYXNoZXMgKGFiZmQpOworICAgICAgaHBwZW5kID0gaHBwICsgZXh0c3ltY291bnQ7CisgICAgICBzeW1fY291bnQgPSAwOworICAgICAgZm9yICg7IGhwcCA8IGhwcGVuZDsgaHBwKyspCisJeworCSAgaCA9ICpocHA7CisJICBpZiAoaCAhPSBOVUxMCisJICAgICAgJiYgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmaW5lZAorCSAgICAgICYmIGgtPnR5cGUgIT0gU1RUX0ZVTkMpCisJICAgIHsKKwkgICAgICAqc3ltX2hhc2ggPSBoOworCSAgICAgIHN5bV9oYXNoKys7CisJICAgICAgc3ltX2NvdW50Kys7CisJICAgIH0KKwl9CisKKyAgICAgIHFzb3J0IChzb3J0ZWRfc3ltX2hhc2gsIHN5bV9jb3VudCwKKwkgICAgIHNpemVvZiAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKiksCisJICAgICBlbGZfc29ydF9zeW1ib2wpOworCisgICAgICB3aGlsZSAod2Vha3MgIT0gTlVMTCkKKwl7CisJICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaGxvb2s7CisJICBhc2VjdGlvbiAqc2xvb2s7CisJICBiZmRfdm1hIHZsb29rOworCSAgbG9uZyBpbG9vazsKKwkgIHNpemVfdCBpLCBqLCBpZHg7CisKKwkgIGhsb29rID0gd2Vha3M7CisJICB3ZWFrcyA9IGhsb29rLT53ZWFrZGVmOworCSAgaGxvb2stPndlYWtkZWYgPSBOVUxMOworCisJICBCRkRfQVNTRVJUIChobG9vay0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmaW5lZAorCQkgICAgICB8fCBobG9vay0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaworCQkgICAgICB8fCBobG9vay0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfY29tbW9uCisJCSAgICAgIHx8IGhsb29rLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9pbmRpcmVjdCk7CisJICBzbG9vayA9IGhsb29rLT5yb290LnUuZGVmLnNlY3Rpb247CisJICB2bG9vayA9IGhsb29rLT5yb290LnUuZGVmLnZhbHVlOworCisJICBpbG9vayA9IC0xOworCSAgaSA9IDA7CisJICBqID0gc3ltX2NvdW50OworCSAgd2hpbGUgKGkgPCBqKQorCSAgICB7CisJICAgICAgYmZkX3NpZ25lZF92bWEgdmRpZmY7CisJICAgICAgaWR4ID0gKGkgKyBqKSAvIDI7CisJICAgICAgaCA9IHNvcnRlZF9zeW1faGFzaCBbaWR4XTsKKwkgICAgICB2ZGlmZiA9IHZsb29rIC0gaC0+cm9vdC51LmRlZi52YWx1ZTsKKwkgICAgICBpZiAodmRpZmYgPCAwKQorCQlqID0gaWR4OworCSAgICAgIGVsc2UgaWYgKHZkaWZmID4gMCkKKwkJaSA9IGlkeCArIDE7CisJICAgICAgZWxzZQorCQl7CisJCSAgbG9uZyBzZGlmZiA9IHNsb29rIC0gaC0+cm9vdC51LmRlZi5zZWN0aW9uOworCQkgIGlmIChzZGlmZiA8IDApCisJCSAgICBqID0gaWR4OworCQkgIGVsc2UgaWYgKHNkaWZmID4gMCkKKwkJICAgIGkgPSBpZHggKyAxOworCQkgIGVsc2UKKwkJICAgIHsKKwkJICAgICAgaWxvb2sgPSBpZHg7CisJCSAgICAgIGJyZWFrOworCQkgICAgfQorCQl9CisJICAgIH0KKworCSAgLyogV2UgZGlkbid0IGZpbmQgYSB2YWx1ZS9zZWN0aW9uIG1hdGNoLiAgKi8KKwkgIGlmIChpbG9vayA9PSAtMSkKKwkgICAgY29udGludWU7CisKKwkgIGZvciAoaSA9IGlsb29rOyBpIDwgc3ltX2NvdW50OyBpKyspCisJICAgIHsKKwkgICAgICBoID0gc29ydGVkX3N5bV9oYXNoIFtpXTsKKworCSAgICAgIC8qIFN0b3AgaWYgdmFsdWUgb3Igc2VjdGlvbiBkb2Vzbid0IG1hdGNoLiAgKi8KKwkgICAgICBpZiAoaC0+cm9vdC51LmRlZi52YWx1ZSAhPSB2bG9vaworCQkgIHx8IGgtPnJvb3QudS5kZWYuc2VjdGlvbiAhPSBzbG9vaykKKwkJYnJlYWs7CisJICAgICAgZWxzZSBpZiAoaCAhPSBobG9vaykKKwkJeworCQkgIGhsb29rLT53ZWFrZGVmID0gaDsKKworCQkgIC8qIElmIHRoZSB3ZWFrIGRlZmluaXRpb24gaXMgaW4gdGhlIGxpc3Qgb2YgZHluYW1pYworCQkgICAgIHN5bWJvbHMsIG1ha2Ugc3VyZSB0aGUgcmVhbCBkZWZpbml0aW9uIGlzIHB1dAorCQkgICAgIHRoZXJlIGFzIHdlbGwuICAqLworCQkgIGlmIChobG9vay0+ZHluaW5keCAhPSAtMSAmJiBoLT5keW5pbmR4ID09IC0xKQorCQkgICAgeworCQkgICAgICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKKwkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkgICAgfQorCisJCSAgLyogSWYgdGhlIHJlYWwgZGVmaW5pdGlvbiBpcyBpbiB0aGUgbGlzdCBvZiBkeW5hbWljCisJCSAgICAgc3ltYm9scywgbWFrZSBzdXJlIHRoZSB3ZWFrIGRlZmluaXRpb24gaXMgcHV0CisJCSAgICAgdGhlcmUgYXMgd2VsbC4gIElmIHdlIGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlCisJCSAgICAgZHluYW1pYyBsb2FkZXIgbWlnaHQgbm90IG1lcmdlIHRoZSBlbnRyaWVzIGZvciB0aGUKKwkJICAgICByZWFsIGRlZmluaXRpb24gYW5kIHRoZSB3ZWFrIGRlZmluaXRpb24uICAqLworCQkgIGlmIChoLT5keW5pbmR4ICE9IC0xICYmIGhsb29rLT5keW5pbmR4ID09IC0xKQorCQkgICAgeworCQkgICAgICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBobG9vaykpCisJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJICAgIH0KKwkJICBicmVhazsKKwkJfQorCSAgICB9CisJfQorCisgICAgICBmcmVlIChzb3J0ZWRfc3ltX2hhc2gpOworICAgIH0KKworICAvKiBJZiB0aGlzIG9iamVjdCBpcyB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIG91dHB1dCBvYmplY3QsIGFuZCBpdCBpcworICAgICBub3QgYSBzaGFyZWQgbGlicmFyeSwgdGhlbiBsZXQgdGhlIGJhY2tlbmQgbG9vayB0aHJvdWdoIHRoZQorICAgICByZWxvY3MuCisKKyAgICAgVGhpcyBpcyByZXF1aXJlZCB0byBidWlsZCBnbG9iYWwgb2Zmc2V0IHRhYmxlIGVudHJpZXMgYW5kIHRvCisgICAgIGFycmFuZ2UgZm9yIGR5bmFtaWMgcmVsb2NzLiAgSXQgaXMgbm90IHJlcXVpcmVkIGZvciB0aGUKKyAgICAgcGFydGljdWxhciBjb21tb24gY2FzZSBvZiBsaW5raW5nIG5vbiBQSUMgY29kZSwgZXZlbiB3aGVuIGxpbmtpbmcKKyAgICAgYWdhaW5zdCBzaGFyZWQgbGlicmFyaWVzLCBidXQgdW5mb3J0dW5hdGVseSB0aGVyZSBpcyBubyB3YXkgb2YKKyAgICAga25vd2luZyB3aGV0aGVyIGFuIG9iamVjdCBmaWxlIGhhcyBiZWVuIGNvbXBpbGVkIFBJQyBvciBub3QuCisgICAgIExvb2tpbmcgdGhyb3VnaCB0aGUgcmVsb2NzIGlzIG5vdCBwYXJ0aWN1bGFybHkgdGltZSBjb25zdW1pbmcuCisgICAgIFRoZSBwcm9ibGVtIGlzIHRoYXQgd2UgbXVzdCBlaXRoZXIgKDEpIGtlZXAgdGhlIHJlbG9jcyBpbiBtZW1vcnksCisgICAgIHdoaWNoIGNhdXNlcyB0aGUgbGlua2VyIHRvIHJlcXVpcmUgYWRkaXRpb25hbCBydW50aW1lIG1lbW9yeSBvcgorICAgICAoMikgcmVhZCB0aGUgcmVsb2NzIHR3aWNlIGZyb20gdGhlIGlucHV0IGZpbGUsIHdoaWNoIHdhc3RlcyB0aW1lLgorICAgICBUaGlzIHdvdWxkIGJlIGEgZ29vZCBjYXNlIGZvciB1c2luZyBtbWFwLgorCisgICAgIEkgaGF2ZSBubyBpZGVhIGhvdyB0byBoYW5kbGUgbGlua2luZyBQSUMgY29kZSBpbnRvIGEgZmlsZSBvZiBhCisgICAgIGRpZmZlcmVudCBmb3JtYXQuICBJdCBwcm9iYWJseSBjYW4ndCBiZSBkb25lLiAgKi8KKyAgY2hlY2tfcmVsb2NzID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpLT5jaGVja19yZWxvY3M7CisgIGlmICghIGR5bmFtaWMKKyAgICAgICYmIGlzX2VsZl9oYXNoX3RhYmxlIChoYXNoX3RhYmxlKQorICAgICAgJiYgaGFzaF90YWJsZS0+cm9vdC5jcmVhdG9yID09IGFiZmQtPnh2ZWMKKyAgICAgICYmIGNoZWNrX3JlbG9jcyAhPSBOVUxMKQorICAgIHsKKyAgICAgIGFzZWN0aW9uICpvOworCisgICAgICBmb3IgKG8gPSBhYmZkLT5zZWN0aW9uczsgbyAhPSBOVUxMOyBvID0gby0+bmV4dCkKKwl7CisJICBFbGZfSW50ZXJuYWxfUmVsYSAqaW50ZXJuYWxfcmVsb2NzOworCSAgYmZkX2Jvb2xlYW4gb2s7CisKKwkgIGlmICgoby0+ZmxhZ3MgJiBTRUNfUkVMT0MpID09IDAKKwkgICAgICB8fCBvLT5yZWxvY19jb3VudCA9PSAwCisJICAgICAgfHwgKChpbmZvLT5zdHJpcCA9PSBzdHJpcF9hbGwgfHwgaW5mby0+c3RyaXAgPT0gc3RyaXBfZGVidWdnZXIpCisJCSAgJiYgKG8tPmZsYWdzICYgU0VDX0RFQlVHR0lORykgIT0gMCkKKwkgICAgICB8fCBiZmRfaXNfYWJzX3NlY3Rpb24gKG8tPm91dHB1dF9zZWN0aW9uKSkKKwkgICAgY29udGludWU7CisKKwkgIGludGVybmFsX3JlbG9jcyA9IF9iZmRfZWxmX2xpbmtfcmVhZF9yZWxvY3MgKGFiZmQsIG8sIE5VTEwsIE5VTEwsCisJCQkJCQkgICAgICAgaW5mby0+a2VlcF9tZW1vcnkpOworCSAgaWYgKGludGVybmFsX3JlbG9jcyA9PSBOVUxMKQorCSAgICBnb3RvIGVycm9yX3JldHVybjsKKworCSAgb2sgPSAoKmNoZWNrX3JlbG9jcykgKGFiZmQsIGluZm8sIG8sIGludGVybmFsX3JlbG9jcyk7CisKKwkgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsb2NzICE9IGludGVybmFsX3JlbG9jcykKKwkgICAgZnJlZSAoaW50ZXJuYWxfcmVsb2NzKTsKKworCSAgaWYgKCEgb2spCisJICAgIGdvdG8gZXJyb3JfcmV0dXJuOworCX0KKyAgICB9CisKKyAgLyogSWYgdGhpcyBpcyBhIG5vbi10cmFkaXRpb25hbCBsaW5rLCB0cnkgdG8gb3B0aW1pemUgdGhlIGhhbmRsaW5nCisgICAgIG9mIHRoZSAuc3RhYi8uc3RhYnN0ciBzZWN0aW9ucy4gICovCisgIGlmICghIGR5bmFtaWMKKyAgICAgICYmICEgaW5mby0+dHJhZGl0aW9uYWxfZm9ybWF0CisgICAgICAmJiBpc19lbGZfaGFzaF90YWJsZSAoaGFzaF90YWJsZSkKKyAgICAgICYmIChpbmZvLT5zdHJpcCAhPSBzdHJpcF9hbGwgJiYgaW5mby0+c3RyaXAgIT0gc3RyaXBfZGVidWdnZXIpKQorICAgIHsKKyAgICAgIGFzZWN0aW9uICpzdGFic3RyOworCisgICAgICBzdGFic3RyID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsICIuc3RhYnN0ciIpOworICAgICAgaWYgKHN0YWJzdHIgIT0gTlVMTCkKKwl7CisJICBiZmRfc2l6ZV90eXBlIHN0cmluZ19vZmZzZXQgPSAwOworCSAgYXNlY3Rpb24gKnN0YWI7CisKKwkgIGZvciAoc3RhYiA9IGFiZmQtPnNlY3Rpb25zOyBzdGFiOyBzdGFiID0gc3RhYi0+bmV4dCkKKwkgICAgaWYgKHN0cm5jbXAgKCIuc3RhYiIsIHN0YWItPm5hbWUsIDUpID09IDAKKwkJJiYgKCFzdGFiLT5uYW1lWzVdIHx8CisJCSAgICAoc3RhYi0+bmFtZVs1XSA9PSAnLicgJiYgSVNESUdJVCAoc3RhYi0+bmFtZVs2XSkpKQorCQkmJiAoc3RhYi0+ZmxhZ3MgJiBTRUNfTUVSR0UpID09IDAKKwkJJiYgIWJmZF9pc19hYnNfc2VjdGlvbiAoc3RhYi0+b3V0cHV0X3NlY3Rpb24pKQorCSAgICAgIHsKKwkJc3RydWN0IGJmZF9lbGZfc2VjdGlvbl9kYXRhICpzZWNkYXRhOworCisJCXNlY2RhdGEgPSBlbGZfc2VjdGlvbl9kYXRhIChzdGFiKTsKKwkJaWYgKCEgX2JmZF9saW5rX3NlY3Rpb25fc3RhYnMgKGFiZmQsCisJCQkJCSAgICAgICAmIGhhc2hfdGFibGUtPnN0YWJfaW5mbywKKwkJCQkJICAgICAgIHN0YWIsIHN0YWJzdHIsCisJCQkJCSAgICAgICAmc2VjZGF0YS0+c2VjX2luZm8sCisJCQkJCSAgICAgICAmc3RyaW5nX29mZnNldCkpCisJCSAgZ290byBlcnJvcl9yZXR1cm47CisJCWlmIChzZWNkYXRhLT5zZWNfaW5mbykKKwkJICBzdGFiLT5zZWNfaW5mb190eXBlID0gRUxGX0lORk9fVFlQRV9TVEFCUzsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgaWYgKCEgaW5mby0+cmVsb2NhdGFibGUKKyAgICAgICYmICEgZHluYW1pYworICAgICAgJiYgaXNfZWxmX2hhc2hfdGFibGUgKGhhc2hfdGFibGUpKQorICAgIHsKKyAgICAgIGFzZWN0aW9uICpzOworCisgICAgICBmb3IgKHMgPSBhYmZkLT5zZWN0aW9uczsgcyAhPSBOVUxMOyBzID0gcy0+bmV4dCkKKwlpZiAoKHMtPmZsYWdzICYgU0VDX01FUkdFKSAhPSAwCisJICAgICYmICFiZmRfaXNfYWJzX3NlY3Rpb24gKHMtPm91dHB1dF9zZWN0aW9uKSkKKwkgIHsKKwkgICAgc3RydWN0IGJmZF9lbGZfc2VjdGlvbl9kYXRhICpzZWNkYXRhOworCisJICAgIHNlY2RhdGEgPSBlbGZfc2VjdGlvbl9kYXRhIChzKTsKKwkgICAgaWYgKCEgX2JmZF9tZXJnZV9zZWN0aW9uIChhYmZkLAorCQkJCSAgICAgICYgaGFzaF90YWJsZS0+bWVyZ2VfaW5mbywKKwkJCQkgICAgICBzLCAmc2VjZGF0YS0+c2VjX2luZm8pKQorCSAgICAgIGdvdG8gZXJyb3JfcmV0dXJuOworCSAgICBlbHNlIGlmIChzZWNkYXRhLT5zZWNfaW5mbykKKwkgICAgICBzLT5zZWNfaW5mb190eXBlID0gRUxGX0lORk9fVFlQRV9NRVJHRTsKKwkgIH0KKyAgICB9CisKKyAgaWYgKGlzX2VsZl9oYXNoX3RhYmxlIChoYXNoX3RhYmxlKSkKKyAgICB7CisgICAgICAvKiBBZGQgdGhpcyBiZmQgdG8gdGhlIGxvYWRlZCBsaXN0LiAgKi8KKyAgICAgIHN0cnVjdCBlbGZfbGlua19sb2FkZWRfbGlzdCAqbjsKKworICAgICAgbiA9IGJmZF9hbGxvYyAoYWJmZCwgc2l6ZW9mIChzdHJ1Y3QgZWxmX2xpbmtfbG9hZGVkX2xpc3QpKTsKKyAgICAgIGlmIChuID09IE5VTEwpCisJZ290byBlcnJvcl9yZXR1cm47CisgICAgICBuLT5hYmZkID0gYWJmZDsKKyAgICAgIG4tPm5leHQgPSBoYXNoX3RhYmxlLT5sb2FkZWQ7CisgICAgICBoYXNoX3RhYmxlLT5sb2FkZWQgPSBuOworICAgIH0KKworICByZXR1cm4gVFJVRTsKKworIGVycm9yX2ZyZWVfdmVyczoKKyAgaWYgKG5vbmRlZmx0X3ZlcnMgIT0gTlVMTCkKKyAgICBmcmVlIChub25kZWZsdF92ZXJzKTsKKyAgaWYgKGV4dHZlcnN5bSAhPSBOVUxMKQorICAgIGZyZWUgKGV4dHZlcnN5bSk7CisgZXJyb3JfZnJlZV9zeW06CisgIGlmIChpc3ltYnVmICE9IE5VTEwpCisgICAgZnJlZSAoaXN5bWJ1Zik7CisgZXJyb3JfcmV0dXJuOgorICByZXR1cm4gRkFMU0U7Cit9CisKKy8qIEFkZCBzeW1ib2xzIGZyb20gYW4gRUxGIGFyY2hpdmUgZmlsZSB0byB0aGUgbGlua2VyIGhhc2ggdGFibGUuICBXZQorICAgZG9uJ3QgdXNlIF9iZmRfZ2VuZXJpY19saW5rX2FkZF9hcmNoaXZlX3N5bWJvbHMgYmVjYXVzZSBvZiBhCisgICBwcm9ibGVtIHdoaWNoIGFyaXNlcyBvbiBVbml4V2FyZS4gIFRoZSBVbml4V2FyZSBsaWJjLnNvIGlzIGFuCisgICBhcmNoaXZlIHdoaWNoIGluY2x1ZGVzIGFuIGVudHJ5IGxpYmMuc28uMSB3aGljaCBkZWZpbmVzIGEgYnVuY2ggb2YKKyAgIHN5bWJvbHMuICBUaGUgbGliYy5zbyBhcmNoaXZlIGFsc28gaW5jbHVkZXMgYSBudW1iZXIgb2Ygb3RoZXIKKyAgIG9iamVjdCBmaWxlcywgd2hpY2ggYWxzbyBkZWZpbmUgc3ltYm9scywgc29tZSBvZiB3aGljaCBhcmUgdGhlIHNhbWUKKyAgIGFzIHRob3NlIGRlZmluZWQgaW4gbGliYy5zby4xLiAgQ29ycmVjdCBsaW5raW5nIHJlcXVpcmVzIHRoYXQgd2UKKyAgIGNvbnNpZGVyIGVhY2ggb2JqZWN0IGZpbGUgaW4gdHVybiwgYW5kIGluY2x1ZGUgaXQgaWYgaXQgZGVmaW5lcyBhbnkKKyAgIHN5bWJvbHMgd2UgbmVlZC4gIF9iZmRfZ2VuZXJpY19saW5rX2FkZF9hcmNoaXZlX3N5bWJvbHMgZG9lcyBub3QgZG8KKyAgIHRoaXM7IGl0IGxvb2tzIHRocm91Z2ggdGhlIGxpc3Qgb2YgdW5kZWZpbmVkIHN5bWJvbHMsIGFuZCBpbmNsdWRlcworICAgYW55IG9iamVjdCBmaWxlIHdoaWNoIGRlZmluZXMgdGhlbS4gIFdoZW4gdGhpcyBhbGdvcml0aG0gaXMgdXNlZCBvbgorICAgVW5peFdhcmUsIGl0IHdpbmRzIHVwIHB1bGxpbmcgaW4gbGliYy5zby4xIGVhcmx5IGFuZCBkZWZpbmluZyBhCisgICBidW5jaCBvZiBzeW1ib2xzLiAgVGhpcyBtZWFucyB0aGF0IHNvbWUgb2YgdGhlIG90aGVyIG9iamVjdHMgaW4gdGhlCisgICBhcmNoaXZlIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGxpbmssIHdoaWNoIGlzIGluY29ycmVjdCBzaW5jZSB0aGV5CisgICBwcmVjZWRlIGxpYmMuc28uMSBpbiB0aGUgYXJjaGl2ZS4KKworICAgRm9ydHVuYXRlbHksIEVMRiBhcmNoaXZlIGhhbmRsaW5nIGlzIHNpbXBsZXIgdGhhbiB0aGF0IGRvbmUgYnkKKyAgIF9iZmRfZ2VuZXJpY19saW5rX2FkZF9hcmNoaXZlX3N5bWJvbHMsIHdoaWNoIGhhcyB0byBhbGxvdyBmb3IgYS5vdXQKKyAgIG9kZGl0aWVzLiAgSW4gRUxGLCBpZiB3ZSBmaW5kIGEgc3ltYm9sIGluIHRoZSBhcmNoaXZlIG1hcCwgYW5kIHRoZQorICAgc3ltYm9sIGlzIGN1cnJlbnRseSB1bmRlZmluZWQsIHdlIGtub3cgdGhhdCB3ZSBtdXN0IHB1bGwgaW4gdGhhdAorICAgb2JqZWN0IGZpbGUuCisKKyAgIFVuZm9ydHVuYXRlbHksIHdlIGRvIGhhdmUgdG8gbWFrZSBtdWx0aXBsZSBwYXNzZXMgb3ZlciB0aGUgc3ltYm9sCisgICB0YWJsZSB1bnRpbCBub3RoaW5nIGZ1cnRoZXIgaXMgcmVzb2x2ZWQuICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZl9saW5rX2FkZF9hcmNoaXZlX3N5bWJvbHMgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCit7CisgIHN5bWluZGV4IGM7CisgIGJmZF9ib29sZWFuICpkZWZpbmVkID0gTlVMTDsKKyAgYmZkX2Jvb2xlYW4gKmluY2x1ZGVkID0gTlVMTDsKKyAgY2Fyc3ltICpzeW1kZWZzOworICBiZmRfYm9vbGVhbiBsb29wOworICBiZmRfc2l6ZV90eXBlIGFtdDsKKworICBpZiAoISBiZmRfaGFzX21hcCAoYWJmZCkpCisgICAgeworICAgICAgLyogQW4gZW1wdHkgYXJjaGl2ZSBpcyBhIHNwZWNpYWwgY2FzZS4gICovCisgICAgICBpZiAoYmZkX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZSAoYWJmZCwgTlVMTCkgPT0gTlVMTCkKKwlyZXR1cm4gVFJVRTsKKyAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9ub19hcm1hcCk7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgIC8qIEtlZXAgdHJhY2sgb2YgYWxsIHN5bWJvbHMgd2Uga25vdyB0byBiZSBhbHJlYWR5IGRlZmluZWQsIGFuZCBhbGwKKyAgICAgZmlsZXMgd2Uga25vdyB0byBiZSBhbHJlYWR5IGluY2x1ZGVkLiAgVGhpcyBpcyB0byBzcGVlZCB1cCB0aGUKKyAgICAgc2Vjb25kIGFuZCBzdWJzZXF1ZW50IHBhc3Nlcy4gICovCisgIGMgPSBiZmRfYXJkYXRhIChhYmZkKS0+c3ltZGVmX2NvdW50OworICBpZiAoYyA9PSAwKQorICAgIHJldHVybiBUUlVFOworICBhbXQgPSBjOworICBhbXQgKj0gc2l6ZW9mIChiZmRfYm9vbGVhbik7CisgIGRlZmluZWQgPSBiZmRfem1hbGxvYyAoYW10KTsKKyAgaW5jbHVkZWQgPSBiZmRfem1hbGxvYyAoYW10KTsKKyAgaWYgKGRlZmluZWQgPT0gTlVMTCB8fCBpbmNsdWRlZCA9PSBOVUxMKQorICAgIGdvdG8gZXJyb3JfcmV0dXJuOworCisgIHN5bWRlZnMgPSBiZmRfYXJkYXRhIChhYmZkKS0+c3ltZGVmczsKKworICBkbworICAgIHsKKyAgICAgIGZpbGVfcHRyIGxhc3Q7CisgICAgICBzeW1pbmRleCBpOworICAgICAgY2Fyc3ltICpzeW1kZWY7CisgICAgICBjYXJzeW0gKnN5bWRlZmVuZDsKKworICAgICAgbG9vcCA9IEZBTFNFOworICAgICAgbGFzdCA9IC0xOworCisgICAgICBzeW1kZWYgPSBzeW1kZWZzOworICAgICAgc3ltZGVmZW5kID0gc3ltZGVmICsgYzsKKyAgICAgIGZvciAoaSA9IDA7IHN5bWRlZiA8IHN5bWRlZmVuZDsgc3ltZGVmKyssIGkrKykKKwl7CisJICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaDsKKwkgIGJmZCAqZWxlbWVudDsKKwkgIHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5ICp1bmRlZnNfdGFpbDsKKwkgIHN5bWluZGV4IG1hcms7CisKKwkgIGlmIChkZWZpbmVkW2ldIHx8IGluY2x1ZGVkW2ldKQorCSAgICBjb250aW51ZTsKKwkgIGlmIChzeW1kZWYtPmZpbGVfb2Zmc2V0ID09IGxhc3QpCisJICAgIHsKKwkgICAgICBpbmNsdWRlZFtpXSA9IFRSVUU7CisJICAgICAgY29udGludWU7CisJICAgIH0KKworCSAgaCA9IGVsZl9saW5rX2hhc2hfbG9va3VwIChlbGZfaGFzaF90YWJsZSAoaW5mbyksIHN5bWRlZi0+bmFtZSwKKwkJCQkgICAgRkFMU0UsIEZBTFNFLCBGQUxTRSk7CisKKwkgIGlmIChoID09IE5VTEwpCisJICAgIHsKKwkgICAgICBjaGFyICpwLCAqY29weTsKKwkgICAgICBzaXplX3QgbGVuLCBmaXJzdDsKKworCSAgICAgIC8qIElmIHRoaXMgaXMgYSBkZWZhdWx0IHZlcnNpb24gKHRoZSBuYW1lIGNvbnRhaW5zIEBAKSwKKwkJIGxvb2sgdXAgdGhlIHN5bWJvbCBhZ2FpbiB3aXRoIG9ubHkgb25lIGBAJyBhcyB3ZWxsCisJCSBhcyB3aXRob3V0IHRoZSB2ZXJzaW9uLiAgVGhlIGVmZmVjdCBpcyB0aGF0IHJlZmVyZW5jZXMKKwkJIHRvIHRoZSBzeW1ib2wgd2l0aCBhbmQgd2l0aG91dCB0aGUgdmVyc2lvbiB3aWxsIGJlCisJCSBtYXRjaGVkIGJ5IHRoZSBkZWZhdWx0IHN5bWJvbCBpbiB0aGUgYXJjaGl2ZS4gICovCisKKwkgICAgICBwID0gc3RyY2hyIChzeW1kZWYtPm5hbWUsIEVMRl9WRVJfQ0hSKTsKKwkgICAgICBpZiAocCA9PSBOVUxMIHx8IHBbMV0gIT0gRUxGX1ZFUl9DSFIpCisJCWNvbnRpbnVlOworCisJICAgICAgLyogRmlyc3QgY2hlY2sgd2l0aCBvbmx5IG9uZSBgQCcuICAqLworCSAgICAgIGxlbiA9IHN0cmxlbiAoc3ltZGVmLT5uYW1lKTsKKwkgICAgICBjb3B5ID0gYmZkX2FsbG9jIChhYmZkLCBsZW4pOworCSAgICAgIGlmIChjb3B5ID09IE5VTEwpCisJCWdvdG8gZXJyb3JfcmV0dXJuOworCSAgICAgIGZpcnN0ID0gcCAtIHN5bWRlZi0+bmFtZSArIDE7CisJICAgICAgbWVtY3B5IChjb3B5LCBzeW1kZWYtPm5hbWUsIGZpcnN0KTsKKwkgICAgICBtZW1jcHkgKGNvcHkgKyBmaXJzdCwgc3ltZGVmLT5uYW1lICsgZmlyc3QgKyAxLCBsZW4gLSBmaXJzdCk7CisKKwkgICAgICBoID0gZWxmX2xpbmtfaGFzaF9sb29rdXAgKGVsZl9oYXNoX3RhYmxlIChpbmZvKSwgY29weSwKKwkJCQkJRkFMU0UsIEZBTFNFLCBGQUxTRSk7CisKKwkgICAgICBpZiAoaCA9PSBOVUxMKQorCQl7CisJCSAgLyogV2UgYWxzbyBuZWVkIHRvIGNoZWNrIHJlZmVyZW5jZXMgdG8gdGhlIHN5bWJvbAorCQkgICAgIHdpdGhvdXQgdGhlIHZlcnNpb24uICAqLworCisJCSAgY29weVtmaXJzdCAtIDFdID0gJ1wwJzsKKwkJICBoID0gZWxmX2xpbmtfaGFzaF9sb29rdXAgKGVsZl9oYXNoX3RhYmxlIChpbmZvKSwKKwkJCQkJICAgIGNvcHksIEZBTFNFLCBGQUxTRSwgRkFMU0UpOworCQl9CisKKwkgICAgICBiZmRfcmVsZWFzZSAoYWJmZCwgY29weSk7CisJICAgIH0KKworCSAgaWYgKGggPT0gTlVMTCkKKwkgICAgY29udGludWU7CisKKwkgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9jb21tb24pCisJICAgIHsKKwkgICAgICAvKiBXZSBjdXJyZW50bHkgaGF2ZSBhIGNvbW1vbiBzeW1ib2wuICBUaGUgYXJjaGl2ZSBtYXAgY29udGFpbnMKKwkJIGEgcmVmZXJlbmNlIHRvIHRoaXMgc3ltYm9sLCBzbyB3ZSBtYXkgd2FudCB0byBpbmNsdWRlIGl0LiAgV2UKKwkJIG9ubHkgd2FudCB0byBpbmNsdWRlIGl0IGhvd2V2ZXIsIGlmIHRoaXMgYXJjaGl2ZSBlbGVtZW50CisJCSBjb250YWlucyBhIGRlZmluaXRpb24gb2YgdGhlIHN5bWJvbCwgbm90IGp1c3QgYW5vdGhlciBjb21tb24KKwkJIGRlY2xhcmF0aW9uIG9mIGl0LgorCisJCSBVbmZvcnR1bmF0ZWx5IHNvbWUgYXJjaGl2ZXJzIChpbmNsdWRpbmcgR05VIGFyKSB3aWxsIHB1dAorCQkgZGVjbGFyYXRpb25zIG9mIGNvbW1vbiBzeW1ib2xzIGludG8gdGhlaXIgYXJjaGl2ZSBtYXBzLCBhcworCQkgd2VsbCBhcyByZWFsIGRlZmluaXRpb25zLCBzbyB3ZSBjYW5ub3QganVzdCBnbyBieSB0aGUgYXJjaGl2ZQorCQkgbWFwIGFsb25lLiAgSW5zdGVhZCB3ZSBtdXN0IHJlYWQgaW4gdGhlIGVsZW1lbnQncyBzeW1ib2wKKwkJIHRhYmxlIGFuZCBjaGVjayB0aGF0IHRvIHNlZSB3aGF0IGtpbmQgb2Ygc3ltYm9sIGRlZmluaXRpb24KKwkJIHRoaXMgaXMuICAqLworCSAgICAgIGlmICghIGVsZl9saW5rX2lzX2RlZmluZWRfYXJjaGl2ZV9zeW1ib2wgKGFiZmQsIHN5bWRlZikpCisJCWNvbnRpbnVlOworCSAgICB9CisJICBlbHNlIGlmIChoLT5yb290LnR5cGUgIT0gYmZkX2xpbmtfaGFzaF91bmRlZmluZWQpCisJICAgIHsKKwkgICAgICBpZiAoaC0+cm9vdC50eXBlICE9IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKQorCQlkZWZpbmVkW2ldID0gVFJVRTsKKwkgICAgICBjb250aW51ZTsKKwkgICAgfQorCisJICAvKiBXZSBuZWVkIHRvIGluY2x1ZGUgdGhpcyBhcmNoaXZlIG1lbWJlci4gICovCisJICBlbGVtZW50ID0gX2JmZF9nZXRfZWx0X2F0X2ZpbGVwb3MgKGFiZmQsIHN5bWRlZi0+ZmlsZV9vZmZzZXQpOworCSAgaWYgKGVsZW1lbnQgPT0gTlVMTCkKKwkgICAgZ290byBlcnJvcl9yZXR1cm47CisKKwkgIGlmICghIGJmZF9jaGVja19mb3JtYXQgKGVsZW1lbnQsIGJmZF9vYmplY3QpKQorCSAgICBnb3RvIGVycm9yX3JldHVybjsKKworCSAgLyogRG91YmxlY2hlY2sgdGhhdCB3ZSBoYXZlIG5vdCBpbmNsdWRlZCB0aGlzIG9iamVjdAorCSAgICAgYWxyZWFkeS0taXQgc2hvdWxkIGJlIGltcG9zc2libGUsIGJ1dCB0aGVyZSBtYXkgYmUKKwkgICAgIHNvbWV0aGluZyB3cm9uZyB3aXRoIHRoZSBhcmNoaXZlLiAgKi8KKwkgIGlmIChlbGVtZW50LT5hcmNoaXZlX3Bhc3MgIT0gMCkKKwkgICAgeworCSAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9iYWRfdmFsdWUpOworCSAgICAgIGdvdG8gZXJyb3JfcmV0dXJuOworCSAgICB9CisJICBlbGVtZW50LT5hcmNoaXZlX3Bhc3MgPSAxOworCisJICB1bmRlZnNfdGFpbCA9IGluZm8tPmhhc2gtPnVuZGVmc190YWlsOworCisJICBpZiAoISAoKmluZm8tPmNhbGxiYWNrcy0+YWRkX2FyY2hpdmVfZWxlbWVudCkgKGluZm8sIGVsZW1lbnQsCisJCQkJCQkJIHN5bWRlZi0+bmFtZSkpCisJICAgIGdvdG8gZXJyb3JfcmV0dXJuOworCSAgaWYgKCEgYmZkX2xpbmtfYWRkX3N5bWJvbHMgKGVsZW1lbnQsIGluZm8pKQorCSAgICBnb3RvIGVycm9yX3JldHVybjsKKworCSAgLyogSWYgdGhlcmUgYXJlIGFueSBuZXcgdW5kZWZpbmVkIHN5bWJvbHMsIHdlIG5lZWQgdG8gbWFrZQorCSAgICAgYW5vdGhlciBwYXNzIHRocm91Z2ggdGhlIGFyY2hpdmUgaW4gb3JkZXIgdG8gc2VlIHdoZXRoZXIKKwkgICAgIHRoZXkgY2FuIGJlIGRlZmluZWQuICBGSVhNRTogVGhpcyBpc24ndCBwZXJmZWN0LCBiZWNhdXNlCisJICAgICBjb21tb24gc3ltYm9scyB3aW5kIHVwIG9uIHVuZGVmc190YWlsIGFuZCBiZWNhdXNlIGFuCisJICAgICB1bmRlZmluZWQgc3ltYm9sIHdoaWNoIGlzIGRlZmluZWQgbGF0ZXIgb24gaW4gdGhpcyBwYXNzCisJICAgICBkb2VzIG5vdCByZXF1aXJlIGFub3RoZXIgcGFzcy4gIFRoaXMgaXNuJ3QgYSBidWcsIGJ1dCBpdAorCSAgICAgZG9lcyBtYWtlIHRoZSBjb2RlIGxlc3MgZWZmaWNpZW50IHRoYW4gaXQgY291bGQgYmUuICAqLworCSAgaWYgKHVuZGVmc190YWlsICE9IGluZm8tPmhhc2gtPnVuZGVmc190YWlsKQorCSAgICBsb29wID0gVFJVRTsKKworCSAgLyogTG9vayBiYWNrd2FyZCB0byBtYXJrIGFsbCBzeW1ib2xzIGZyb20gdGhpcyBvYmplY3QgZmlsZQorCSAgICAgd2hpY2ggd2UgaGF2ZSBhbHJlYWR5IHNlZW4gaW4gdGhpcyBwYXNzLiAgKi8KKwkgIG1hcmsgPSBpOworCSAgZG8KKwkgICAgeworCSAgICAgIGluY2x1ZGVkW21hcmtdID0gVFJVRTsKKwkgICAgICBpZiAobWFyayA9PSAwKQorCQlicmVhazsKKwkgICAgICAtLW1hcms7CisJICAgIH0KKwkgIHdoaWxlIChzeW1kZWZzW21hcmtdLmZpbGVfb2Zmc2V0ID09IHN5bWRlZi0+ZmlsZV9vZmZzZXQpOworCisJICAvKiBXZSBtYXJrIHN1YnNlcXVlbnQgc3ltYm9scyBmcm9tIHRoaXMgb2JqZWN0IGZpbGUgYXMgd2UgZ28KKwkgICAgIG9uIHRocm91Z2ggdGhlIGxvb3AuICAqLworCSAgbGFzdCA9IHN5bWRlZi0+ZmlsZV9vZmZzZXQ7CisJfQorICAgIH0KKyAgd2hpbGUgKGxvb3ApOworCisgIGZyZWUgKGRlZmluZWQpOworICBmcmVlIChpbmNsdWRlZCk7CisKKyAgcmV0dXJuIFRSVUU7CisKKyBlcnJvcl9yZXR1cm46CisgIGlmIChkZWZpbmVkICE9IE5VTEwpCisgICAgZnJlZSAoZGVmaW5lZCk7CisgIGlmIChpbmNsdWRlZCAhPSBOVUxMKQorICAgIGZyZWUgKGluY2x1ZGVkKTsKKyAgcmV0dXJuIEZBTFNFOworfQorCisvKiBHaXZlbiBhbiBFTEYgQkZELCBhZGQgc3ltYm9scyB0byB0aGUgZ2xvYmFsIGhhc2ggdGFibGUgYXMKKyAgIGFwcHJvcHJpYXRlLiAgKi8KKworYmZkX2Jvb2xlYW4KK2JmZF9lbGZfbGlua19hZGRfc3ltYm9scyAoYmZkICphYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbykKK3sKKyAgc3dpdGNoIChiZmRfZ2V0X2Zvcm1hdCAoYWJmZCkpCisgICAgeworICAgIGNhc2UgYmZkX29iamVjdDoKKyAgICAgIHJldHVybiBlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMgKGFiZmQsIGluZm8pOworICAgIGNhc2UgYmZkX2FyY2hpdmU6CisgICAgICByZXR1cm4gZWxmX2xpbmtfYWRkX2FyY2hpdmVfc3ltYm9scyAoYWJmZCwgaW5mbyk7CisgICAgZGVmYXVsdDoKKyAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl93cm9uZ19mb3JtYXQpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KK30KKwwKKy8qIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgdGhvdWdoIGVsZl9saW5rX2hhc2hfdHJhdmVyc2UgdG8gc3RvcmUKKyAgIGFsbCBoYXNoIHZhbHVlIG9mIHRoZSBleHBvcnRlZCBzeW1ib2xzIGluIGFuIGFycmF5LiAgKi8KKworc3RhdGljIGJmZF9ib29sZWFuCitlbGZfY29sbGVjdF9oYXNoX2NvZGVzIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwgdm9pZCAqZGF0YSkKK3sKKyAgdW5zaWduZWQgbG9uZyAqKnZhbHVlcCA9IGRhdGE7CisgIGNvbnN0IGNoYXIgKm5hbWU7CisgIGNoYXIgKnA7CisgIHVuc2lnbmVkIGxvbmcgaGE7CisgIGNoYXIgKmFsYyA9IE5VTEw7CisKKyAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCisgICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOworCisgIC8qIElnbm9yZSBpbmRpcmVjdCBzeW1ib2xzLiAgVGhlc2UgYXJlIGFkZGVkIGJ5IHRoZSB2ZXJzaW9uaW5nIGNvZGUuICAqLworICBpZiAoaC0+ZHluaW5keCA9PSAtMSkKKyAgICByZXR1cm4gVFJVRTsKKworICBuYW1lID0gaC0+cm9vdC5yb290LnN0cmluZzsKKyAgcCA9IHN0cmNociAobmFtZSwgRUxGX1ZFUl9DSFIpOworICBpZiAocCAhPSBOVUxMKQorICAgIHsKKyAgICAgIGFsYyA9IGJmZF9tYWxsb2MgKHAgLSBuYW1lICsgMSk7CisgICAgICBtZW1jcHkgKGFsYywgbmFtZSwgcCAtIG5hbWUpOworICAgICAgYWxjW3AgLSBuYW1lXSA9ICdcMCc7CisgICAgICBuYW1lID0gYWxjOworICAgIH0KKworICAvKiBDb21wdXRlIHRoZSBoYXNoIHZhbHVlLiAgKi8KKyAgaGEgPSBiZmRfZWxmX2hhc2ggKG5hbWUpOworCisgIC8qIFN0b3JlIHRoZSBmb3VuZCBoYXNoIHZhbHVlIGluIHRoZSBhcnJheSBnaXZlbiBhcyB0aGUgYXJndW1lbnQuICAqLworICAqKCp2YWx1ZXApKysgPSBoYTsKKworICAvKiBBbmQgc3RvcmUgaXQgaW4gdGhlIHN0cnVjdCBzbyB0aGF0IHdlIGNhbiBwdXQgaXQgaW4gdGhlIGhhc2ggdGFibGUKKyAgICAgbGF0ZXIuICAqLworICBoLT5lbGZfaGFzaF92YWx1ZSA9IGhhOworCisgIGlmIChhbGMgIT0gTlVMTCkKKyAgICBmcmVlIChhbGMpOworCisgIHJldHVybiBUUlVFOworfQorCisvKiBBcnJheSB1c2VkIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGhhc2ggdGFibGUgYnVja2V0cyB0byB1c2UKKyAgIGJhc2VkIG9uIHRoZSBudW1iZXIgb2Ygc3ltYm9scyB0aGVyZSBhcmUuICBJZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbgorICAgMyBzeW1ib2xzIHdlIHVzZSAxIGJ1Y2tldCwgZmV3ZXIgdGhhbiAxNyBzeW1ib2xzIHdlIHVzZSAzIGJ1Y2tldHMsCisgICBmZXdlciB0aGFuIDM3IHdlIHVzZSAxNyBidWNrZXRzLCBhbmQgc28gZm9ydGguICBXZSBuZXZlciB1c2UgbW9yZQorICAgdGhhbiAzMjc3MSBidWNrZXRzLiAgKi8KKworc3RhdGljIGNvbnN0IHNpemVfdCBlbGZfYnVja2V0c1tdID0KK3sKKyAgMSwgMywgMTcsIDM3LCA2NywgOTcsIDEzMSwgMTk3LCAyNjMsIDUyMSwgMTAzMSwgMjA1MywgNDA5OSwgODIwOSwKKyAgMTY0MTEsIDMyNzcxLCAwCit9OworCisvKiBDb21wdXRlIGJ1Y2tldCBjb3VudCBmb3IgaGFzaGluZyB0YWJsZS4gIFdlIGRvIG5vdCB1c2UgYSBzdGF0aWMgc2V0CisgICBvZiBwb3NzaWJsZSB0YWJsZXMgc2l6ZXMgYW55bW9yZS4gIEluc3RlYWQgd2UgZGV0ZXJtaW5lIGZvciBhbGwKKyAgIHBvc3NpYmxlIHJlYXNvbmFibGUgc2l6ZXMgb2YgdGhlIHRhYmxlIHRoZSBvdXRjb21lIChpLmUuLCB0aGUKKyAgIG51bWJlciBvZiBjb2xsaXNpb25zIGV0YykgYW5kIGNob29zZSB0aGUgYmVzdCBzb2x1dGlvbi4gIFRoZQorICAgd2VpZ2h0aW5nIGZ1bmN0aW9ucyBhcmUgbm90IHRvbyBzaW1wbGUgdG8gYWxsb3cgdGhlIHRhYmxlIHRvIGdyb3cKKyAgIHdpdGhvdXQgYm91bmRzLiAgSW5zdGVhZCBvbmUgb2YgdGhlIHdlaWdodGluZyBmYWN0b3JzIGlzIHRoZSBzaXplLgorICAgVGhlcmVmb3JlIHRoZSByZXN1bHQgaXMgYWx3YXlzIGEgZ29vZCBwYXlvZmYgYmV0d2VlbiBmZXcgY29sbGlzaW9ucworICAgKD0gc2hvcnQgY2hhaW4gbGVuZ3RocykgYW5kIHRhYmxlIHNpemUuICAqLworc3RhdGljIHNpemVfdAorY29tcHV0ZV9idWNrZXRfY291bnQgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvKQoreworICBzaXplX3QgZHluc3ltY291bnQgPSBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bnN5bWNvdW50OworICBzaXplX3QgYmVzdF9zaXplID0gMDsKKyAgdW5zaWduZWQgbG9uZyBpbnQgKmhhc2hjb2RlczsKKyAgdW5zaWduZWQgbG9uZyBpbnQgKmhhc2hjb2Rlc3A7CisgIHVuc2lnbmVkIGxvbmcgaW50IGk7CisgIGJmZF9zaXplX3R5cGUgYW10OworCisgIC8qIENvbXB1dGUgdGhlIGhhc2ggdmFsdWVzIGZvciBhbGwgZXhwb3J0ZWQgc3ltYm9scy4gIEF0IHRoZSBzYW1lCisgICAgIHRpbWUgc3RvcmUgdGhlIHZhbHVlcyBpbiBhbiBhcnJheSBzbyB0aGF0IHdlIGNvdWxkIHVzZSB0aGVtIGZvcgorICAgICBvcHRpbWl6YXRpb25zLiAgKi8KKyAgYW10ID0gZHluc3ltY291bnQ7CisgIGFtdCAqPSBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KTsKKyAgaGFzaGNvZGVzID0gYmZkX21hbGxvYyAoYW10KTsKKyAgaWYgKGhhc2hjb2RlcyA9PSBOVUxMKQorICAgIHJldHVybiAwOworICBoYXNoY29kZXNwID0gaGFzaGNvZGVzOworCisgIC8qIFB1dCBhbGwgaGFzaCB2YWx1ZXMgaW4gSEFTSENPREVTLiAgKi8KKyAgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZSAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAorCQkJICBlbGZfY29sbGVjdF9oYXNoX2NvZGVzLCAmaGFzaGNvZGVzcCk7CisKKyAgLyogV2UgaGF2ZSBhIHByb2JsZW0gaGVyZS4gIFRoZSBmb2xsb3dpbmcgY29kZSB0byBvcHRpbWl6ZSB0aGUgdGFibGUKKyAgICAgc2l6ZSByZXF1aXJlcyBhbiBpbnRlZ2VyIHR5cGUgd2l0aCBtb3JlIHRoZSAzMiBiaXRzLiAgSWYKKyAgICAgQkZEX0hPU1RfVV82NF9CSVQgaXMgc2V0IHdlIGtub3cgYWJvdXQgc3VjaCBhIHR5cGUuICAqLworI2lmZGVmIEJGRF9IT1NUX1VfNjRfQklUCisgIGlmIChpbmZvLT5vcHRpbWl6ZSkKKyAgICB7CisgICAgICB1bnNpZ25lZCBsb25nIGludCBuc3ltcyA9IGhhc2hjb2Rlc3AgLSBoYXNoY29kZXM7CisgICAgICBzaXplX3QgbWluc2l6ZTsKKyAgICAgIHNpemVfdCBtYXhzaXplOworICAgICAgQkZEX0hPU1RfVV82NF9CSVQgYmVzdF9jaGxlbiA9IH4oKEJGRF9IT1NUX1VfNjRfQklUKSAwKTsKKyAgICAgIHVuc2lnbmVkIGxvbmcgaW50ICpjb3VudHMgOworICAgICAgYmZkICpkeW5vYmogPSBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bm9iajsKKyAgICAgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoZHlub2JqKTsKKworICAgICAgLyogUG9zc2libGUgb3B0aW1pemF0aW9uIHBhcmFtZXRlcnM6IGlmIHdlIGhhdmUgTlNZTVMgc3ltYm9scyB3ZSBzYXkKKwkgdGhhdCB0aGUgaGFzaGluZyB0YWJsZSBtdXN0IGF0IGxlYXN0IGhhdmUgTlNZTVMvNCBhbmQgYXQgbW9zdAorCSAyKk5TWU1TIGJ1Y2tldHMuICAqLworICAgICAgbWluc2l6ZSA9IG5zeW1zIC8gNDsKKyAgICAgIGlmIChtaW5zaXplID09IDApCisJbWluc2l6ZSA9IDE7CisgICAgICBiZXN0X3NpemUgPSBtYXhzaXplID0gbnN5bXMgKiAyOworCisgICAgICAvKiBDcmVhdGUgYXJyYXkgd2hlcmUgd2UgY291bnQgdGhlIGNvbGxpc2lvbnMgaW4uICBXZSBtdXN0IHVzZSBiZmRfbWFsbG9jCisJIHNpbmNlIHRoZSBzaXplIGNvdWxkIGJlIGxhcmdlLiAgKi8KKyAgICAgIGFtdCA9IG1heHNpemU7CisgICAgICBhbXQgKj0gc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCk7CisgICAgICBjb3VudHMgPSBiZmRfbWFsbG9jIChhbXQpOworICAgICAgaWYgKGNvdW50cyA9PSBOVUxMKQorCXsKKwkgIGZyZWUgKGhhc2hjb2Rlcyk7CisJICByZXR1cm4gMDsKKwl9CisKKyAgICAgIC8qIENvbXB1dGUgdGhlICJvcHRpbWFsIiBzaXplIGZvciB0aGUgaGFzaCB0YWJsZS4gIFRoZSBjcml0ZXJpYSBpcyBhCisJIG1pbmltYWwgY2hhaW4gbGVuZ3RoLiAgVGhlIG1pbm9yIGNyaXRlcmlhIGlzIChvZiBjb3Vyc2UpIHRoZSBzaXplCisJIG9mIHRoZSB0YWJsZS4gICovCisgICAgICBmb3IgKGkgPSBtaW5zaXplOyBpIDwgbWF4c2l6ZTsgKytpKQorCXsKKwkgIC8qIFdhbGsgdGhyb3VnaCB0aGUgYXJyYXkgb2YgaGFzaGNvZGVzIGFuZCBjb3VudCB0aGUgY29sbGlzaW9ucy4gICovCisJICBCRkRfSE9TVF9VXzY0X0JJVCBtYXg7CisJICB1bnNpZ25lZCBsb25nIGludCBqOworCSAgdW5zaWduZWQgbG9uZyBpbnQgZmFjdDsKKworCSAgbWVtc2V0IChjb3VudHMsICdcMCcsIGkgKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSk7CisKKwkgIC8qIERldGVybWluZSBob3cgb2Z0ZW4gZWFjaCBoYXNoIGJ1Y2tldCBpcyB1c2VkLiAgKi8KKwkgIGZvciAoaiA9IDA7IGogPCBuc3ltczsgKytqKQorCSAgICArK2NvdW50c1toYXNoY29kZXNbal0gJSBpXTsKKworCSAgLyogRm9yIHRoZSB3ZWlnaHQgZnVuY3Rpb24gd2UgbmVlZCBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZQorCSAgICAgcGFnZXNpemUgb24gdGhlIHRhcmdldC4gIFRoaXMgaXMgaW5mb3JtYXRpb24gbmVlZCBub3QgYmUgMTAwJQorCSAgICAgYWNjdXJhdGUuICBTaW5jZSB0aGlzIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgKHNvIGZhcikgd2UKKwkgICAgIGRlZmluZSBpdCBoZXJlIHRvIGEgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlLiAgSWYgaXQgaXMgY3J1Y2lhbAorCSAgICAgdG8gaGF2ZSBhIGJldHRlciB2YWx1ZSBzb21lIGRheSBzaW1wbHkgZGVmaW5lIHRoaXMgdmFsdWUuICAqLworIyBpZm5kZWYgQkZEX1RBUkdFVF9QQUdFU0laRQorIyAgZGVmaW5lIEJGRF9UQVJHRVRfUEFHRVNJWkUJKDQwOTYpCisjIGVuZGlmCisKKwkgIC8qIFdlIGluIGFueSBjYXNlIG5lZWQgMiArIE5TWU1TIGVudHJpZXMgZm9yIHRoZSBzaXplIHZhbHVlcyBhbmQKKwkgICAgIHRoZSBjaGFpbnMuICAqLworCSAgbWF4ID0gKDIgKyBuc3ltcykgKiAoYmVkLT5zLT5hcmNoX3NpemUgLyA4KTsKKworIyBpZiAxCisJICAvKiBWYXJpYW50IDE6IG9wdGltaXplIGZvciBzaG9ydCBjaGFpbnMuICBXZSBhZGQgdGhlIHNxdWFyZXMKKwkgICAgIG9mIGFsbCB0aGUgY2hhaW4gbGVuZ3RocyAod2hpY2ggZmF2b3JzIG1hbnkgc21hbGwgY2hhaW4KKwkgICAgIG92ZXIgYSBmZXcgbG9uZyBjaGFpbnMpLiAgKi8KKwkgIGZvciAoaiA9IDA7IGogPCBpOyArK2opCisJICAgIG1heCArPSBjb3VudHNbal0gKiBjb3VudHNbal07CisKKwkgIC8qIFRoaXMgYWRkcyBwZW5hbHRpZXMgZm9yIHRoZSBvdmVyYWxsIHNpemUgb2YgdGhlIHRhYmxlLiAgKi8KKwkgIGZhY3QgPSBpIC8gKEJGRF9UQVJHRVRfUEFHRVNJWkUgLyAoYmVkLT5zLT5hcmNoX3NpemUgLyA4KSkgKyAxOworCSAgbWF4ICo9IGZhY3QgKiBmYWN0OworIyBlbHNlCisJICAvKiBWYXJpYW50IDI6IE9wdGltaXplIGEgbG90IG1vcmUgZm9yIHNtYWxsIHRhYmxlLiAgSGVyZSB3ZQorCSAgICAgYWxzbyBhZGQgc3F1YXJlcyBvZiB0aGUgc2l6ZSBidXQgd2UgYWxzbyBhZGQgcGVuYWx0aWVzIGZvcgorCSAgICAgZW1wdHkgc2xvdHMgKHRoZSArMSB0ZXJtKS4gICovCisJICBmb3IgKGogPSAwOyBqIDwgaTsgKytqKQorCSAgICBtYXggKz0gKDEgKyBjb3VudHNbal0pICogKDEgKyBjb3VudHNbal0pOworCisJICAvKiBUaGUgb3ZlcmFsbCBzaXplIG9mIHRoZSB0YWJsZSBpcyBjb25zaWRlcmVkLCBidXQgbm90IGFzCisJICAgICBzdHJvbmcgYXMgaW4gdmFyaWFudCAxLCB3aGVyZSBpdCBpcyBzcXVhcmVkLiAgKi8KKwkgIGZhY3QgPSBpIC8gKEJGRF9UQVJHRVRfUEFHRVNJWkUgLyAoYmVkLT5zLT5hcmNoX3NpemUgLyA4KSkgKyAxOworCSAgbWF4ICo9IGZhY3Q7CisjIGVuZGlmCisKKwkgIC8qIENvbXBhcmUgd2l0aCBjdXJyZW50IGJlc3QgcmVzdWx0cy4gICovCisJICBpZiAobWF4IDwgYmVzdF9jaGxlbikKKwkgICAgeworCSAgICAgIGJlc3RfY2hsZW4gPSBtYXg7CisJICAgICAgYmVzdF9zaXplID0gaTsKKwkgICAgfQorCX0KKworICAgICAgZnJlZSAoY291bnRzKTsKKyAgICB9CisgIGVsc2UKKyNlbmRpZiAvKiBkZWZpbmVkIChCRkRfSE9TVF9VXzY0X0JJVCkgKi8KKyAgICB7CisgICAgICAvKiBUaGlzIGlzIHRoZSBmYWxsYmFjayBzb2x1dGlvbiBpZiBubyA2NGJpdCB0eXBlIGlzIGF2YWlsYWJsZSBvciBpZiB3ZQorCSBhcmUgbm90IHN1cHBvc2VkIHRvIHNwZW5kIG11Y2ggdGltZSBvbiBvcHRpbWl6YXRpb25zLiAgV2Ugc2VsZWN0IHRoZQorCSBidWNrZXQgY291bnQgdXNpbmcgYSBmaXhlZCBzZXQgb2YgbnVtYmVycy4gICovCisgICAgICBmb3IgKGkgPSAwOyBlbGZfYnVja2V0c1tpXSAhPSAwOyBpKyspCisJeworCSAgYmVzdF9zaXplID0gZWxmX2J1Y2tldHNbaV07CisJICBpZiAoZHluc3ltY291bnQgPCBlbGZfYnVja2V0c1tpICsgMV0pCisJICAgIGJyZWFrOworCX0KKyAgICB9CisKKyAgLyogRnJlZSB0aGUgYXJyYXlzIHdlIG5lZWRlZC4gICovCisgIGZyZWUgKGhhc2hjb2Rlcyk7CisKKyAgcmV0dXJuIGJlc3Rfc2l6ZTsKK30KKworLyogU2V0IHVwIHRoZSBzaXplcyBhbmQgY29udGVudHMgb2YgdGhlIEVMRiBkeW5hbWljIHNlY3Rpb25zLiAgVGhpcyBpcworICAgY2FsbGVkIGJ5IHRoZSBFTEYgbGlua2VyIGVtdWxhdGlvbiBiZWZvcmVfYWxsb2NhdGlvbiByb3V0aW5lLiAgV2UKKyAgIG11c3Qgc2V0IHRoZSBzaXplcyBvZiB0aGUgc2VjdGlvbnMgYmVmb3JlIHRoZSBsaW5rZXIgc2V0cyB0aGUKKyAgIGFkZHJlc3NlcyBvZiB0aGUgdmFyaW91cyBzZWN0aW9ucy4gICovCisKK2JmZF9ib29sZWFuCitiZmRfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyAoYmZkICpvdXRwdXRfYmZkLAorCQkJICAgICAgIGNvbnN0IGNoYXIgKnNvbmFtZSwKKwkJCSAgICAgICBjb25zdCBjaGFyICpycGF0aCwKKwkJCSAgICAgICBjb25zdCBjaGFyICpmaWx0ZXJfc2hsaWIsCisJCQkgICAgICAgY29uc3QgY2hhciAqIGNvbnN0ICphdXhpbGlhcnlfZmlsdGVycywKKwkJCSAgICAgICBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKKwkJCSAgICAgICBhc2VjdGlvbiAqKnNpbnRlcnBwdHIsCisJCQkgICAgICAgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90cmVlICp2ZXJkZWZzKQoreworICBiZmRfc2l6ZV90eXBlIHNvbmFtZV9pbmR4OworICBiZmQgKmR5bm9iajsKKyAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKKyAgc3RydWN0IGVsZl9hc3NpZ25fc3ltX3ZlcnNpb25faW5mbyBhc3ZpbmZvOworCisgICpzaW50ZXJwcHRyID0gTlVMTDsKKworICBzb25hbWVfaW5keCA9IChiZmRfc2l6ZV90eXBlKSAtMTsKKworICBpZiAoIWlzX2VsZl9oYXNoX3RhYmxlIChpbmZvLT5oYXNoKSkKKyAgICByZXR1cm4gVFJVRTsKKworICBpZiAoaW5mby0+ZXhlY3N0YWNrKQorICAgIGVsZl90ZGF0YSAob3V0cHV0X2JmZCktPnN0YWNrX2ZsYWdzID0gUEZfUiB8IFBGX1cgfCBQRl9YOworICBlbHNlIGlmIChpbmZvLT5ub2V4ZWNzdGFjaykKKyAgICBlbGZfdGRhdGEgKG91dHB1dF9iZmQpLT5zdGFja19mbGFncyA9IFBGX1IgfCBQRl9XOworICBlbHNlCisgICAgeworICAgICAgYmZkICppbnB1dG9iajsKKyAgICAgIGFzZWN0aW9uICpub3Rlc2VjID0gTlVMTDsKKyAgICAgIGludCBleGVjID0gMDsKKworICAgICAgZm9yIChpbnB1dG9iaiA9IGluZm8tPmlucHV0X2JmZHM7CisJICAgaW5wdXRvYmo7CisJICAgaW5wdXRvYmogPSBpbnB1dG9iai0+bGlua19uZXh0KQorCXsKKwkgIGFzZWN0aW9uICpzOworCisJICBpZiAoaW5wdXRvYmotPmZsYWdzICYgRFlOQU1JQykKKwkgICAgY29udGludWU7CisJICBzID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGlucHV0b2JqLCAiLm5vdGUuR05VLXN0YWNrIik7CisJICBpZiAocykKKwkgICAgeworCSAgICAgIGlmIChzLT5mbGFncyAmIFNFQ19DT0RFKQorCQlleGVjID0gUEZfWDsKKwkgICAgICBub3Rlc2VjID0gczsKKwkgICAgfQorCSAgZWxzZQorCSAgICBleGVjID0gUEZfWDsKKwl9CisgICAgICBpZiAobm90ZXNlYykKKwl7CisJICBlbGZfdGRhdGEgKG91dHB1dF9iZmQpLT5zdGFja19mbGFncyA9IFBGX1IgfCBQRl9XIHwgZXhlYzsKKwkgIGlmIChleGVjICYmIGluZm8tPnJlbG9jYXRhYmxlCisJICAgICAgJiYgbm90ZXNlYy0+b3V0cHV0X3NlY3Rpb24gIT0gYmZkX2Fic19zZWN0aW9uX3B0cikKKwkgICAgbm90ZXNlYy0+b3V0cHV0X3NlY3Rpb24tPmZsYWdzIHw9IFNFQ19DT0RFOworCX0KKyAgICB9CisKKyAgLyogQW55IHN5bXMgY3JlYXRlZCBmcm9tIG5vdyBvbiBzdGFydCB3aXRoIC0xIGluCisgICAgIGdvdC5yZWZjb3VudC9vZmZzZXQgYW5kIHBsdC5yZWZjb3VudC9vZmZzZXQuICAqLworICBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmluaXRfcmVmY291bnQgPSBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmluaXRfb2Zmc2V0OworCisgIC8qIFRoZSBiYWNrZW5kIG1heSBoYXZlIHRvIGNyZWF0ZSBzb21lIHNlY3Rpb25zIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgorICAgICB3ZSdyZSBkeW5hbWljIG9yIG5vdC4gICovCisgIGJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChvdXRwdXRfYmZkKTsKKyAgaWYgKGJlZC0+ZWxmX2JhY2tlbmRfYWx3YXlzX3NpemVfc2VjdGlvbnMKKyAgICAgICYmICEgKCpiZWQtPmVsZl9iYWNrZW5kX2Fsd2F5c19zaXplX3NlY3Rpb25zKSAob3V0cHV0X2JmZCwgaW5mbykpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGR5bm9iaiA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHlub2JqOworCisgIC8qIElmIHRoZXJlIHdlcmUgbm8gZHluYW1pYyBvYmplY3RzIGluIHRoZSBsaW5rLCB0aGVyZSBpcyBub3RoaW5nIHRvCisgICAgIGRvIGhlcmUuICAqLworICBpZiAoZHlub2JqID09IE5VTEwpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgaWYgKCEgX2JmZF9lbGZfbWF5YmVfc3RyaXBfZWhfZnJhbWVfaGRyIChpbmZvKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluYW1pY19zZWN0aW9uc19jcmVhdGVkKQorICAgIHsKKyAgICAgIHN0cnVjdCBlbGZfaW5mb19mYWlsZWQgZWlmOworICAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmg7CisgICAgICBhc2VjdGlvbiAqZHluc3RyOworICAgICAgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90cmVlICp0OworICAgICAgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl9leHByICpkOworICAgICAgYmZkX2Jvb2xlYW4gYWxsX2RlZmluZWQ7CisKKyAgICAgICpzaW50ZXJwcHRyID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5pbnRlcnAiKTsKKyAgICAgIEJGRF9BU1NFUlQgKCpzaW50ZXJwcHRyICE9IE5VTEwgfHwgIWluZm8tPmV4ZWN1dGFibGUpOworCisgICAgICBpZiAoc29uYW1lICE9IE5VTEwpCisJeworCSAgc29uYW1lX2luZHggPSBfYmZkX2VsZl9zdHJ0YWJfYWRkIChlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bnN0ciwKKwkJCQkJICAgICBzb25hbWUsIFRSVUUpOworCSAgaWYgKHNvbmFtZV9pbmR4ID09IChiZmRfc2l6ZV90eXBlKSAtMQorCSAgICAgIHx8ICFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfU09OQU1FLCBzb25hbWVfaW5keCkpCisJICAgIHJldHVybiBGQUxTRTsKKwl9CisKKyAgICAgIGlmIChpbmZvLT5zeW1ib2xpYykKKwl7CisJICBpZiAoIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9TWU1CT0xJQywgMCkpCisJICAgIHJldHVybiBGQUxTRTsKKwkgIGluZm8tPmZsYWdzIHw9IERGX1NZTUJPTElDOworCX0KKworICAgICAgaWYgKHJwYXRoICE9IE5VTEwpCisJeworCSAgYmZkX3NpemVfdHlwZSBpbmR4OworCisJICBpbmR4ID0gX2JmZF9lbGZfc3RydGFiX2FkZCAoZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5zdHIsIHJwYXRoLAorCQkJCSAgICAgIFRSVUUpOworCSAgaWYgKGluZHggPT0gKGJmZF9zaXplX3R5cGUpIC0xCisJICAgICAgfHwgIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9SUEFUSCwgaW5keCkpCisJICAgIHJldHVybiBGQUxTRTsKKworCSAgaWYgIChpbmZvLT5uZXdfZHRhZ3MpCisJICAgIHsKKwkgICAgICBfYmZkX2VsZl9zdHJ0YWJfYWRkcmVmIChlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bnN0ciwgaW5keCk7CisJICAgICAgaWYgKCFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfUlVOUEFUSCwgaW5keCkpCisJCXJldHVybiBGQUxTRTsKKwkgICAgfQorCX0KKworICAgICAgaWYgKGZpbHRlcl9zaGxpYiAhPSBOVUxMKQorCXsKKwkgIGJmZF9zaXplX3R5cGUgaW5keDsKKworCSAgaW5keCA9IF9iZmRfZWxmX3N0cnRhYl9hZGQgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyLAorCQkJCSAgICAgIGZpbHRlcl9zaGxpYiwgVFJVRSk7CisJICBpZiAoaW5keCA9PSAoYmZkX3NpemVfdHlwZSkgLTEKKwkgICAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0ZJTFRFUiwgaW5keCkpCisJICAgIHJldHVybiBGQUxTRTsKKwl9CisKKyAgICAgIGlmIChhdXhpbGlhcnlfZmlsdGVycyAhPSBOVUxMKQorCXsKKwkgIGNvbnN0IGNoYXIgKiBjb25zdCAqcDsKKworCSAgZm9yIChwID0gYXV4aWxpYXJ5X2ZpbHRlcnM7ICpwICE9IE5VTEw7IHArKykKKwkgICAgeworCSAgICAgIGJmZF9zaXplX3R5cGUgaW5keDsKKworCSAgICAgIGluZHggPSBfYmZkX2VsZl9zdHJ0YWJfYWRkIChlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bnN0ciwKKwkJCQkJICAqcCwgVFJVRSk7CisJICAgICAgaWYgKGluZHggPT0gKGJmZF9zaXplX3R5cGUpIC0xCisJCSAgfHwgIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9BVVhJTElBUlksIGluZHgpKQorCQlyZXR1cm4gRkFMU0U7CisJICAgIH0KKwl9CisKKyAgICAgIGVpZi5pbmZvID0gaW5mbzsKKyAgICAgIGVpZi52ZXJkZWZzID0gdmVyZGVmczsKKyAgICAgIGVpZi5mYWlsZWQgPSBGQUxTRTsKKworICAgICAgLyogSWYgd2UgYXJlIHN1cHBvc2VkIHRvIGV4cG9ydCBhbGwgc3ltYm9scyBpbnRvIHRoZSBkeW5hbWljIHN5bWJvbAorCSB0YWJsZSAodGhpcyBpcyBub3QgdGhlIG5vcm1hbCBjYXNlKSwgdGhlbiBkbyBzby4gICovCisgICAgICBpZiAoaW5mby0+ZXhwb3J0X2R5bmFtaWMpCisJeworCSAgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZSAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAorCQkJCSAgX2JmZF9lbGZfZXhwb3J0X3N5bWJvbCwKKwkJCQkgICZlaWYpOworCSAgaWYgKGVpZi5mYWlsZWQpCisJICAgIHJldHVybiBGQUxTRTsKKwl9CisKKyAgICAgIC8qIE1ha2UgYWxsIGdsb2JhbCB2ZXJzaW9ucyB3aXRoIGRlZmluaXRpb24uICAqLworICAgICAgZm9yICh0ID0gdmVyZGVmczsgdCAhPSBOVUxMOyB0ID0gdC0+bmV4dCkKKwlmb3IgKGQgPSB0LT5nbG9iYWxzLmxpc3Q7IGQgIT0gTlVMTDsgZCA9IGQtPm5leHQpCisJICBpZiAoIWQtPnN5bXZlciAmJiBkLT5zeW1ib2wpCisJICAgIHsKKwkgICAgICBjb25zdCBjaGFyICp2ZXJzdHIsICpuYW1lOworCSAgICAgIHNpemVfdCBuYW1lbGVuLCB2ZXJsZW4sIG5ld2xlbjsKKwkgICAgICBjaGFyICpuZXduYW1lLCAqcDsKKwkgICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqbmV3aDsKKworCSAgICAgIG5hbWUgPSBkLT5zeW1ib2w7CisJICAgICAgbmFtZWxlbiA9IHN0cmxlbiAobmFtZSk7CisJICAgICAgdmVyc3RyID0gdC0+bmFtZTsKKwkgICAgICB2ZXJsZW4gPSBzdHJsZW4gKHZlcnN0cik7CisJICAgICAgbmV3bGVuID0gbmFtZWxlbiArIHZlcmxlbiArIDM7CisKKwkgICAgICBuZXduYW1lID0gYmZkX21hbGxvYyAobmV3bGVuKTsKKwkgICAgICBpZiAobmV3bmFtZSA9PSBOVUxMKQorCQlyZXR1cm4gRkFMU0U7CisJICAgICAgbWVtY3B5IChuZXduYW1lLCBuYW1lLCBuYW1lbGVuKTsKKworCSAgICAgIC8qIENoZWNrIHRoZSBoaWRkZW4gdmVyc2lvbmVkIGRlZmluaXRpb24uICAqLworCSAgICAgIHAgPSBuZXduYW1lICsgbmFtZWxlbjsKKwkgICAgICAqcCsrID0gRUxGX1ZFUl9DSFI7CisJICAgICAgbWVtY3B5IChwLCB2ZXJzdHIsIHZlcmxlbiArIDEpOworCSAgICAgIG5ld2ggPSBlbGZfbGlua19oYXNoX2xvb2t1cCAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAorCQkJCQkgICBuZXduYW1lLCBGQUxTRSwgRkFMU0UsCisJCQkJCSAgIEZBTFNFKTsKKwkgICAgICBpZiAobmV3aCA9PSBOVUxMCisJCSAgfHwgKG5ld2gtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX2RlZmluZWQKKwkJICAgICAgJiYgbmV3aC0+cm9vdC50eXBlICE9IGJmZF9saW5rX2hhc2hfZGVmd2VhaykpCisJCXsKKwkJICAvKiBDaGVjayB0aGUgZGVmYXVsdCB2ZXJzaW9uZWQgZGVmaW5pdGlvbi4gICovCisJCSAgKnArKyA9IEVMRl9WRVJfQ0hSOworCQkgIG1lbWNweSAocCwgdmVyc3RyLCB2ZXJsZW4gKyAxKTsKKwkJICBuZXdoID0gZWxmX2xpbmtfaGFzaF9sb29rdXAgKGVsZl9oYXNoX3RhYmxlIChpbmZvKSwKKwkJCQkJICAgICAgIG5ld25hbWUsIEZBTFNFLCBGQUxTRSwKKwkJCQkJICAgICAgIEZBTFNFKTsKKwkJfQorCSAgICAgIGZyZWUgKG5ld25hbWUpOworCisJICAgICAgLyogTWFyayB0aGlzIHZlcnNpb24gaWYgdGhlcmUgaXMgYSBkZWZpbml0aW9uIGFuZCBpdCBpcworCQkgbm90IGRlZmluZWQgaW4gYSBzaGFyZWQgb2JqZWN0LiAgKi8KKwkgICAgICBpZiAobmV3aCAhPSBOVUxMCisJCSAgJiYgKChuZXdoLT5lbGZfbGlua19oYXNoX2ZsYWdzCisJCSAgICAgICAmIEVMRl9MSU5LX0hBU0hfREVGX0RZTkFNSUMpID09IDApCisJCSAgJiYgKG5ld2gtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZmluZWQKKwkJICAgICAgfHwgbmV3aC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaykpCisJCWQtPnN5bXZlciA9IDE7CisJICAgIH0KKworICAgICAgLyogQXR0YWNoIGFsbCB0aGUgc3ltYm9scyB0byB0aGVpciB2ZXJzaW9uIGluZm9ybWF0aW9uLiAgKi8KKyAgICAgIGFzdmluZm8ub3V0cHV0X2JmZCA9IG91dHB1dF9iZmQ7CisgICAgICBhc3ZpbmZvLmluZm8gPSBpbmZvOworICAgICAgYXN2aW5mby52ZXJkZWZzID0gdmVyZGVmczsKKyAgICAgIGFzdmluZm8uZmFpbGVkID0gRkFMU0U7CisKKyAgICAgIGVsZl9saW5rX2hhc2hfdHJhdmVyc2UgKGVsZl9oYXNoX3RhYmxlIChpbmZvKSwKKwkJCSAgICAgIF9iZmRfZWxmX2xpbmtfYXNzaWduX3N5bV92ZXJzaW9uLAorCQkJICAgICAgJmFzdmluZm8pOworICAgICAgaWYgKGFzdmluZm8uZmFpbGVkKQorCXJldHVybiBGQUxTRTsKKworICAgICAgaWYgKCFpbmZvLT5hbGxvd191bmRlZmluZWRfdmVyc2lvbikKKwl7CisJICAvKiBDaGVjayBpZiBhbGwgZ2xvYmFsIHZlcnNpb25zIGhhdmUgYSBkZWZpbml0aW9uLiAgKi8KKwkgIGFsbF9kZWZpbmVkID0gVFJVRTsKKwkgIGZvciAodCA9IHZlcmRlZnM7IHQgIT0gTlVMTDsgdCA9IHQtPm5leHQpCisJICAgIGZvciAoZCA9IHQtPmdsb2JhbHMubGlzdDsgZCAhPSBOVUxMOyBkID0gZC0+bmV4dCkKKwkgICAgICBpZiAoIWQtPnN5bXZlciAmJiAhZC0+c2NyaXB0KQorCQl7CisJCSAgKCpfYmZkX2Vycm9yX2hhbmRsZXIpCisJCSAgICAoXygiJXM6IHVuZGVmaW5lZCB2ZXJzaW9uOiAlcyIpLAorCQkgICAgIGQtPnBhdHRlcm4sIHQtPm5hbWUpOworCQkgIGFsbF9kZWZpbmVkID0gRkFMU0U7CisJCX0KKworCSAgaWYgKCFhbGxfZGVmaW5lZCkKKwkgICAgeworCSAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9iYWRfdmFsdWUpOworCSAgICAgIHJldHVybiBGQUxTRTsKKwkgICAgfQorCX0KKworICAgICAgLyogRmluZCBhbGwgc3ltYm9scyB3aGljaCB3ZXJlIGRlZmluZWQgaW4gYSBkeW5hbWljIG9iamVjdCBhbmQgbWFrZQorCSB0aGUgYmFja2VuZCBwaWNrIGEgcmVhc29uYWJsZSB2YWx1ZSBmb3IgdGhlbS4gICovCisgICAgICBlbGZfbGlua19oYXNoX3RyYXZlcnNlIChlbGZfaGFzaF90YWJsZSAoaW5mbyksCisJCQkgICAgICBfYmZkX2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wsCisJCQkgICAgICAmZWlmKTsKKyAgICAgIGlmIChlaWYuZmFpbGVkKQorCXJldHVybiBGQUxTRTsKKworICAgICAgLyogQWRkIHNvbWUgZW50cmllcyB0byB0aGUgLmR5bmFtaWMgc2VjdGlvbi4gIFdlIGZpbGwgaW4gc29tZSBvZiB0aGUKKwkgdmFsdWVzIGxhdGVyLCBpbiBlbGZfYmZkX2ZpbmFsX2xpbmssIGJ1dCB3ZSBtdXN0IGFkZCB0aGUgZW50cmllcworCSBub3cgc28gdGhhdCB3ZSBrbm93IHRoZSBmaW5hbCBzaXplIG9mIHRoZSAuZHluYW1pYyBzZWN0aW9uLiAgKi8KKworICAgICAgLyogSWYgdGhlcmUgYXJlIGluaXRpYWxpemF0aW9uIGFuZC9vciBmaW5hbGl6YXRpb24gZnVuY3Rpb25zIHRvCisJIGNhbGwgdGhlbiBhZGQgdGhlIGNvcnJlc3BvbmRpbmcgRFRfSU5JVC9EVF9GSU5JIGVudHJpZXMuICAqLworICAgICAgaCA9IChpbmZvLT5pbml0X2Z1bmN0aW9uCisJICAgPyBlbGZfbGlua19oYXNoX2xvb2t1cCAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAorCQkJCSAgIGluZm8tPmluaXRfZnVuY3Rpb24sIEZBTFNFLAorCQkJCSAgIEZBTFNFLCBGQUxTRSkKKwkgICA6IE5VTEwpOworICAgICAgaWYgKGggIT0gTlVMTAorCSAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiAoRUxGX0xJTktfSEFTSF9SRUZfUkVHVUxBUgorCQkJCQl8IEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVIpKSAhPSAwKQorCXsKKwkgIGlmICghX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0lOSVQsIDApKQorCSAgICByZXR1cm4gRkFMU0U7CisJfQorICAgICAgaCA9IChpbmZvLT5maW5pX2Z1bmN0aW9uCisJICAgPyBlbGZfbGlua19oYXNoX2xvb2t1cCAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAorCQkJCSAgIGluZm8tPmZpbmlfZnVuY3Rpb24sIEZBTFNFLAorCQkJCSAgIEZBTFNFLCBGQUxTRSkKKwkgICA6IE5VTEwpOworICAgICAgaWYgKGggIT0gTlVMTAorCSAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiAoRUxGX0xJTktfSEFTSF9SRUZfUkVHVUxBUgorCQkJCQl8IEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVIpKSAhPSAwKQorCXsKKwkgIGlmICghX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0ZJTkksIDApKQorCSAgICByZXR1cm4gRkFMU0U7CisJfQorCisgICAgICBpZiAoYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG91dHB1dF9iZmQsICIucHJlaW5pdF9hcnJheSIpICE9IE5VTEwpCisJeworCSAgLyogRFRfUFJFSU5JVF9BUlJBWSBpcyBub3QgYWxsb3dlZCBpbiBzaGFyZWQgbGlicmFyeS4gICovCisJICBpZiAoISBpbmZvLT5leGVjdXRhYmxlKQorCSAgICB7CisJICAgICAgYmZkICpzdWI7CisJICAgICAgYXNlY3Rpb24gKm87CisKKwkgICAgICBmb3IgKHN1YiA9IGluZm8tPmlucHV0X2JmZHM7IHN1YiAhPSBOVUxMOworCQkgICBzdWIgPSBzdWItPmxpbmtfbmV4dCkKKwkJZm9yIChvID0gc3ViLT5zZWN0aW9uczsgbyAhPSBOVUxMOyBvID0gby0+bmV4dCkKKwkJICBpZiAoZWxmX3NlY3Rpb25fZGF0YSAobyktPnRoaXNfaGRyLnNoX3R5cGUKKwkJICAgICAgPT0gU0hUX1BSRUlOSVRfQVJSQVkpCisJCSAgICB7CisJCSAgICAgICgqX2JmZF9lcnJvcl9oYW5kbGVyKQorCQkJKF8oIiVzOiAucHJlaW5pdF9hcnJheSBzZWN0aW9uIGlzIG5vdCBhbGxvd2VkIGluIERTTyIpLAorCQkJIGJmZF9hcmNoaXZlX2ZpbGVuYW1lIChzdWIpKTsKKwkJICAgICAgYnJlYWs7CisJCSAgICB9CisKKwkgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3Jfbm9ucmVwcmVzZW50YWJsZV9zZWN0aW9uKTsKKwkgICAgICByZXR1cm4gRkFMU0U7CisJICAgIH0KKworCSAgaWYgKCFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfUFJFSU5JVF9BUlJBWSwgMCkKKwkgICAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1BSRUlOSVRfQVJSQVlTWiwgMCkpCisJICAgIHJldHVybiBGQUxTRTsKKwl9CisgICAgICBpZiAoYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG91dHB1dF9iZmQsICIuaW5pdF9hcnJheSIpICE9IE5VTEwpCisJeworCSAgaWYgKCFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfSU5JVF9BUlJBWSwgMCkKKwkgICAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0lOSVRfQVJSQVlTWiwgMCkpCisJICAgIHJldHVybiBGQUxTRTsKKwl9CisgICAgICBpZiAoYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG91dHB1dF9iZmQsICIuZmluaV9hcnJheSIpICE9IE5VTEwpCisJeworCSAgaWYgKCFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfRklOSV9BUlJBWSwgMCkKKwkgICAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0ZJTklfQVJSQVlTWiwgMCkpCisJICAgIHJldHVybiBGQUxTRTsKKwl9CisKKyAgICAgIGR5bnN0ciA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChkeW5vYmosICIuZHluc3RyIik7CisgICAgICAvKiBJZiAuZHluc3RyIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIGxpbmssIHdlIGRvbid0IHdhbnQgYW55IG9mCisJIHRoZXNlIHRhZ3MuICBTdHJpY3RseSwgd2Ugc2hvdWxkIGJlIGNoZWNraW5nIGVhY2ggc2VjdGlvbgorCSBpbmRpdmlkdWFsbHk7ICBUaGlzIHF1aWNrIGNoZWNrIGNvdmVycyBmb3IgdGhlIGNhc2Ugd2hlcmUKKwkgc29tZW9uZSBkb2VzIGEgL0RJU0NBUkQvIDogeyAqKCopIH0uICAqLworICAgICAgaWYgKGR5bnN0ciAhPSBOVUxMICYmIGR5bnN0ci0+b3V0cHV0X3NlY3Rpb24gIT0gYmZkX2Fic19zZWN0aW9uX3B0cikKKwl7CisJICBiZmRfc2l6ZV90eXBlIHN0cnNpemU7CisKKwkgIHN0cnNpemUgPSBfYmZkX2VsZl9zdHJ0YWJfc2l6ZSAoZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5zdHIpOworCSAgaWYgKCFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfSEFTSCwgMCkKKwkgICAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1NUUlRBQiwgMCkKKwkgICAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1NZTVRBQiwgMCkKKwkgICAgICB8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1NUUlNaLCBzdHJzaXplKQorCSAgICAgIHx8ICFfYmZkX2VsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfU1lNRU5ULAorCQkJCQkgICAgICBiZWQtPnMtPnNpemVvZl9zeW0pKQorCSAgICByZXR1cm4gRkFMU0U7CisJfQorICAgIH0KKworICAvKiBUaGUgYmFja2VuZCBtdXN0IHdvcmsgb3V0IHRoZSBzaXplcyBvZiBhbGwgdGhlIG90aGVyIGR5bmFtaWMKKyAgICAgc2VjdGlvbnMuICAqLworICBpZiAoYmVkLT5lbGZfYmFja2VuZF9zaXplX2R5bmFtaWNfc2VjdGlvbnMKKyAgICAgICYmICEgKCpiZWQtPmVsZl9iYWNrZW5kX3NpemVfZHluYW1pY19zZWN0aW9ucykgKG91dHB1dF9iZmQsIGluZm8pKQorICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQpCisgICAgeworICAgICAgYmZkX3NpemVfdHlwZSBkeW5zeW1jb3VudDsKKyAgICAgIGFzZWN0aW9uICpzOworICAgICAgc2l6ZV90IGJ1Y2tldGNvdW50ID0gMDsKKyAgICAgIHNpemVfdCBoYXNoX2VudHJ5X3NpemU7CisgICAgICB1bnNpZ25lZCBpbnQgZHRhZ2NvdW50OworCisgICAgICAvKiBTZXQgdXAgdGhlIHZlcnNpb24gZGVmaW5pdGlvbiBzZWN0aW9uLiAgKi8KKyAgICAgIHMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoZHlub2JqLCAiLmdudS52ZXJzaW9uX2QiKTsKKyAgICAgIEJGRF9BU1NFUlQgKHMgIT0gTlVMTCk7CisKKyAgICAgIC8qIFdlIG1heSBoYXZlIGNyZWF0ZWQgYWRkaXRpb25hbCB2ZXJzaW9uIGRlZmluaXRpb25zIGlmIHdlIGFyZQorCSBqdXN0IGxpbmtpbmcgYSByZWd1bGFyIGFwcGxpY2F0aW9uLiAgKi8KKyAgICAgIHZlcmRlZnMgPSBhc3ZpbmZvLnZlcmRlZnM7CisKKyAgICAgIC8qIFNraXAgYW5vbnltb3VzIHZlcnNpb24gdGFnLiAgKi8KKyAgICAgIGlmICh2ZXJkZWZzICE9IE5VTEwgJiYgdmVyZGVmcy0+dmVybnVtID09IDApCisJdmVyZGVmcyA9IHZlcmRlZnMtPm5leHQ7CisKKyAgICAgIGlmICh2ZXJkZWZzID09IE5VTEwpCisJX2JmZF9zdHJpcF9zZWN0aW9uX2Zyb21fb3V0cHV0IChpbmZvLCBzKTsKKyAgICAgIGVsc2UKKwl7CisJICB1bnNpZ25lZCBpbnQgY2RlZnM7CisJICBiZmRfc2l6ZV90eXBlIHNpemU7CisJICBzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX3RyZWUgKnQ7CisJICBiZmRfYnl0ZSAqcDsKKwkgIEVsZl9JbnRlcm5hbF9WZXJkZWYgZGVmOworCSAgRWxmX0ludGVybmFsX1ZlcmRhdXggZGVmYXV4OworCisJICBjZGVmcyA9IDA7CisJICBzaXplID0gMDsKKworCSAgLyogTWFrZSBzcGFjZSBmb3IgdGhlIGJhc2UgdmVyc2lvbi4gICovCisJICBzaXplICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRlZik7CisJICBzaXplICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRhdXgpOworCSAgKytjZGVmczsKKworCSAgZm9yICh0ID0gdmVyZGVmczsgdCAhPSBOVUxMOyB0ID0gdC0+bmV4dCkKKwkgICAgeworCSAgICAgIHN0cnVjdCBiZmRfZWxmX3ZlcnNpb25fZGVwcyAqbjsKKworCSAgICAgIHNpemUgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGVmKTsKKwkgICAgICBzaXplICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRhdXgpOworCSAgICAgICsrY2RlZnM7CisKKwkgICAgICBmb3IgKG4gPSB0LT5kZXBzOyBuICE9IE5VTEw7IG4gPSBuLT5uZXh0KQorCQlzaXplICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRhdXgpOworCSAgICB9CisKKwkgIHMtPl9yYXdfc2l6ZSA9IHNpemU7CisJICBzLT5jb250ZW50cyA9IGJmZF9hbGxvYyAob3V0cHV0X2JmZCwgcy0+X3Jhd19zaXplKTsKKwkgIGlmIChzLT5jb250ZW50cyA9PSBOVUxMICYmIHMtPl9yYXdfc2l6ZSAhPSAwKQorCSAgICByZXR1cm4gRkFMU0U7CisKKwkgIC8qIEZpbGwgaW4gdGhlIHZlcnNpb24gZGVmaW5pdGlvbiBzZWN0aW9uLiAgKi8KKworCSAgcCA9IHMtPmNvbnRlbnRzOworCisJICBkZWYudmRfdmVyc2lvbiA9IFZFUl9ERUZfQ1VSUkVOVDsKKwkgIGRlZi52ZF9mbGFncyA9IFZFUl9GTEdfQkFTRTsKKwkgIGRlZi52ZF9uZHggPSAxOworCSAgZGVmLnZkX2NudCA9IDE7CisJICBkZWYudmRfYXV4ID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGVmKTsKKwkgIGRlZi52ZF9uZXh0ID0gKHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRlZikKKwkJCSArIHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRhdXgpKTsKKworCSAgaWYgKHNvbmFtZV9pbmR4ICE9IChiZmRfc2l6ZV90eXBlKSAtMSkKKwkgICAgeworCSAgICAgIF9iZmRfZWxmX3N0cnRhYl9hZGRyZWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyLAorCQkJCSAgICAgIHNvbmFtZV9pbmR4KTsKKwkgICAgICBkZWYudmRfaGFzaCA9IGJmZF9lbGZfaGFzaCAoc29uYW1lKTsKKwkgICAgICBkZWZhdXgudmRhX25hbWUgPSBzb25hbWVfaW5keDsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgY29uc3QgY2hhciAqbmFtZTsKKwkgICAgICBiZmRfc2l6ZV90eXBlIGluZHg7CisKKwkgICAgICBuYW1lID0gYmFzZW5hbWUgKG91dHB1dF9iZmQtPmZpbGVuYW1lKTsKKwkgICAgICBkZWYudmRfaGFzaCA9IGJmZF9lbGZfaGFzaCAobmFtZSk7CisJICAgICAgaW5keCA9IF9iZmRfZWxmX3N0cnRhYl9hZGQgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyLAorCQkJCQkgIG5hbWUsIEZBTFNFKTsKKwkgICAgICBpZiAoaW5keCA9PSAoYmZkX3NpemVfdHlwZSkgLTEpCisJCXJldHVybiBGQUxTRTsKKwkgICAgICBkZWZhdXgudmRhX25hbWUgPSBpbmR4OworCSAgICB9CisJICBkZWZhdXgudmRhX25leHQgPSAwOworCisJICBfYmZkX2VsZl9zd2FwX3ZlcmRlZl9vdXQgKG91dHB1dF9iZmQsICZkZWYsCisJCQkJICAgIChFbGZfRXh0ZXJuYWxfVmVyZGVmICopIHApOworCSAgcCArPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJkZWYpOworCSAgX2JmZF9lbGZfc3dhcF92ZXJkYXV4X291dCAob3V0cHV0X2JmZCwgJmRlZmF1eCwKKwkJCQkgICAgIChFbGZfRXh0ZXJuYWxfVmVyZGF1eCAqKSBwKTsKKwkgIHAgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGF1eCk7CisKKwkgIGZvciAodCA9IHZlcmRlZnM7IHQgIT0gTlVMTDsgdCA9IHQtPm5leHQpCisJICAgIHsKKwkgICAgICB1bnNpZ25lZCBpbnQgY2RlcHM7CisJICAgICAgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl9kZXBzICpuOworCSAgICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoOworCSAgICAgIHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5ICpiaDsKKworCSAgICAgIGNkZXBzID0gMDsKKwkgICAgICBmb3IgKG4gPSB0LT5kZXBzOyBuICE9IE5VTEw7IG4gPSBuLT5uZXh0KQorCQkrK2NkZXBzOworCisJICAgICAgLyogQWRkIGEgc3ltYm9sIHJlcHJlc2VudGluZyB0aGlzIHZlcnNpb24uICAqLworCSAgICAgIGJoID0gTlVMTDsKKwkgICAgICBpZiAoISAoX2JmZF9nZW5lcmljX2xpbmtfYWRkX29uZV9zeW1ib2wKKwkJICAgICAoaW5mbywgZHlub2JqLCB0LT5uYW1lLCBCU0ZfR0xPQkFMLCBiZmRfYWJzX3NlY3Rpb25fcHRyLAorCQkgICAgICAwLCBOVUxMLCBGQUxTRSwKKwkJICAgICAgZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGR5bm9iaiktPmNvbGxlY3QsICZiaCkpKQorCQlyZXR1cm4gRkFMU0U7CisJICAgICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBiaDsKKwkgICAgICBoLT5lbGZfbGlua19oYXNoX2ZsYWdzICY9IH4gRUxGX0xJTktfTk9OX0VMRjsKKwkgICAgICBoLT5lbGZfbGlua19oYXNoX2ZsYWdzIHw9IEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVI7CisJICAgICAgaC0+dHlwZSA9IFNUVF9PQkpFQ1Q7CisJICAgICAgaC0+dmVyaW5mby52ZXJ0cmVlID0gdDsKKworCSAgICAgIGlmICghIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCQlyZXR1cm4gRkFMU0U7CisKKwkgICAgICBkZWYudmRfdmVyc2lvbiA9IFZFUl9ERUZfQ1VSUkVOVDsKKwkgICAgICBkZWYudmRfZmxhZ3MgPSAwOworCSAgICAgIGlmICh0LT5nbG9iYWxzLmxpc3QgPT0gTlVMTAorCQkgICYmIHQtPmxvY2Fscy5saXN0ID09IE5VTEwKKwkJICAmJiAhIHQtPnVzZWQpCisJCWRlZi52ZF9mbGFncyB8PSBWRVJfRkxHX1dFQUs7CisJICAgICAgZGVmLnZkX25keCA9IHQtPnZlcm51bSArIDE7CisJICAgICAgZGVmLnZkX2NudCA9IGNkZXBzICsgMTsKKwkgICAgICBkZWYudmRfaGFzaCA9IGJmZF9lbGZfaGFzaCAodC0+bmFtZSk7CisJICAgICAgZGVmLnZkX2F1eCA9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRlZik7CisJICAgICAgZGVmLnZkX25leHQgPSAwOworCSAgICAgIGlmICh0LT5uZXh0ICE9IE5VTEwpCisJCWRlZi52ZF9uZXh0ID0gKHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRlZikKKwkJCSAgICAgICArIChjZGVwcyArIDEpICogc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGF1eCkpOworCisJICAgICAgX2JmZF9lbGZfc3dhcF92ZXJkZWZfb3V0IChvdXRwdXRfYmZkLCAmZGVmLAorCQkJCQkoRWxmX0V4dGVybmFsX1ZlcmRlZiAqKSBwKTsKKwkgICAgICBwICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRlZik7CisKKwkgICAgICBkZWZhdXgudmRhX25hbWUgPSBoLT5keW5zdHJfaW5kZXg7CisJICAgICAgX2JmZF9lbGZfc3RydGFiX2FkZHJlZiAoZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5zdHIsCisJCQkJICAgICAgaC0+ZHluc3RyX2luZGV4KTsKKwkgICAgICBkZWZhdXgudmRhX25leHQgPSAwOworCSAgICAgIGlmICh0LT5kZXBzICE9IE5VTEwpCisJCWRlZmF1eC52ZGFfbmV4dCA9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRhdXgpOworCSAgICAgIHQtPm5hbWVfaW5keCA9IGRlZmF1eC52ZGFfbmFtZTsKKworCSAgICAgIF9iZmRfZWxmX3N3YXBfdmVyZGF1eF9vdXQgKG91dHB1dF9iZmQsICZkZWZhdXgsCisJCQkJCSAoRWxmX0V4dGVybmFsX1ZlcmRhdXggKikgcCk7CisJICAgICAgcCArPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJkYXV4KTsKKworCSAgICAgIGZvciAobiA9IHQtPmRlcHM7IG4gIT0gTlVMTDsgbiA9IG4tPm5leHQpCisJCXsKKwkJICBpZiAobi0+dmVyc2lvbl9uZWVkZWQgPT0gTlVMTCkKKwkJICAgIHsKKwkJICAgICAgLyogVGhpcyBjYW4gaGFwcGVuIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBpbiB0aGUKKwkJCSB2ZXJzaW9uIHNjcmlwdC4gICovCisJCSAgICAgIGRlZmF1eC52ZGFfbmFtZSA9IDA7CisJCSAgICB9CisJCSAgZWxzZQorCQkgICAgeworCQkgICAgICBkZWZhdXgudmRhX25hbWUgPSBuLT52ZXJzaW9uX25lZWRlZC0+bmFtZV9pbmR4OworCQkgICAgICBfYmZkX2VsZl9zdHJ0YWJfYWRkcmVmIChlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bnN0ciwKKwkJCQkJICAgICAgZGVmYXV4LnZkYV9uYW1lKTsKKwkJICAgIH0KKwkJICBpZiAobi0+bmV4dCA9PSBOVUxMKQorCQkgICAgZGVmYXV4LnZkYV9uZXh0ID0gMDsKKwkJICBlbHNlCisJCSAgICBkZWZhdXgudmRhX25leHQgPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJkYXV4KTsKKworCQkgIF9iZmRfZWxmX3N3YXBfdmVyZGF1eF9vdXQgKG91dHB1dF9iZmQsICZkZWZhdXgsCisJCQkJCSAgICAgKEVsZl9FeHRlcm5hbF9WZXJkYXV4ICopIHApOworCQkgIHAgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGF1eCk7CisJCX0KKwkgICAgfQorCisJICBpZiAoIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9WRVJERUYsIDApCisJICAgICAgfHwgIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9WRVJERUZOVU0sIGNkZWZzKSkKKwkgICAgcmV0dXJuIEZBTFNFOworCisJICBlbGZfdGRhdGEgKG91dHB1dF9iZmQpLT5jdmVyZGVmcyA9IGNkZWZzOworCX0KKworICAgICAgaWYgKChpbmZvLT5uZXdfZHRhZ3MgJiYgaW5mby0+ZmxhZ3MpIHx8IChpbmZvLT5mbGFncyAmIERGX1NUQVRJQ19UTFMpKQorCXsKKwkgIGlmICghX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0ZMQUdTLCBpbmZvLT5mbGFncykpCisJICAgIHJldHVybiBGQUxTRTsKKwl9CisgICAgICBlbHNlIGlmIChpbmZvLT5mbGFncyAmIERGX0JJTkRfTk9XKQorCXsKKwkgIGlmICghX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0JJTkRfTk9XLCAwKSkKKwkgICAgcmV0dXJuIEZBTFNFOworCX0KKworICAgICAgaWYgKGluZm8tPmZsYWdzXzEpCisJeworCSAgaWYgKGluZm8tPmV4ZWN1dGFibGUpCisJICAgIGluZm8tPmZsYWdzXzEgJj0gfiAoREZfMV9JTklURklSU1QKKwkJCQl8IERGXzFfTk9ERUxFVEUKKwkJCQl8IERGXzFfTk9PUEVOKTsKKwkgIGlmICghX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0ZMQUdTXzEsIGluZm8tPmZsYWdzXzEpKQorCSAgICByZXR1cm4gRkFMU0U7CisJfQorCisgICAgICAvKiBXb3JrIG91dCB0aGUgc2l6ZSBvZiB0aGUgdmVyc2lvbiByZWZlcmVuY2Ugc2VjdGlvbi4gICovCisKKyAgICAgIHMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoZHlub2JqLCAiLmdudS52ZXJzaW9uX3IiKTsKKyAgICAgIEJGRF9BU1NFUlQgKHMgIT0gTlVMTCk7CisgICAgICB7CisJc3RydWN0IGVsZl9maW5kX3ZlcmRlcF9pbmZvIHNpbmZvOworCisJc2luZm8ub3V0cHV0X2JmZCA9IG91dHB1dF9iZmQ7CisJc2luZm8uaW5mbyA9IGluZm87CisJc2luZm8udmVycyA9IGVsZl90ZGF0YSAob3V0cHV0X2JmZCktPmN2ZXJkZWZzOworCWlmIChzaW5mby52ZXJzID09IDApCisJICBzaW5mby52ZXJzID0gMTsKKwlzaW5mby5mYWlsZWQgPSBGQUxTRTsKKworCWVsZl9saW5rX2hhc2hfdHJhdmVyc2UgKGVsZl9oYXNoX3RhYmxlIChpbmZvKSwKKwkJCQlfYmZkX2VsZl9saW5rX2ZpbmRfdmVyc2lvbl9kZXBlbmRlbmNpZXMsCisJCQkJJnNpbmZvKTsKKworCWlmIChlbGZfdGRhdGEgKG91dHB1dF9iZmQpLT52ZXJyZWYgPT0gTlVMTCkKKwkgIF9iZmRfc3RyaXBfc2VjdGlvbl9mcm9tX291dHB1dCAoaW5mbywgcyk7CisJZWxzZQorCSAgeworCSAgICBFbGZfSW50ZXJuYWxfVmVybmVlZCAqdDsKKwkgICAgdW5zaWduZWQgaW50IHNpemU7CisJICAgIHVuc2lnbmVkIGludCBjcmVmczsKKwkgICAgYmZkX2J5dGUgKnA7CisKKwkgICAgLyogQnVpbGQgdGhlIHZlcnNpb24gZGVmaW5pdGlvbiBzZWN0aW9uLiAgKi8KKwkgICAgc2l6ZSA9IDA7CisJICAgIGNyZWZzID0gMDsKKwkgICAgZm9yICh0ID0gZWxmX3RkYXRhIChvdXRwdXRfYmZkKS0+dmVycmVmOworCQkgdCAhPSBOVUxMOworCQkgdCA9IHQtPnZuX25leHRyZWYpCisJICAgICAgeworCQlFbGZfSW50ZXJuYWxfVmVybmF1eCAqYTsKKworCQlzaXplICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1Zlcm5lZWQpOworCQkrK2NyZWZzOworCQlmb3IgKGEgPSB0LT52bl9hdXhwdHI7IGEgIT0gTlVMTDsgYSA9IGEtPnZuYV9uZXh0cHRyKQorCQkgIHNpemUgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVybmF1eCk7CisJICAgICAgfQorCisJICAgIHMtPl9yYXdfc2l6ZSA9IHNpemU7CisJICAgIHMtPmNvbnRlbnRzID0gYmZkX2FsbG9jIChvdXRwdXRfYmZkLCBzLT5fcmF3X3NpemUpOworCSAgICBpZiAocy0+Y29udGVudHMgPT0gTlVMTCkKKwkgICAgICByZXR1cm4gRkFMU0U7CisKKwkgICAgcCA9IHMtPmNvbnRlbnRzOworCSAgICBmb3IgKHQgPSBlbGZfdGRhdGEgKG91dHB1dF9iZmQpLT52ZXJyZWY7CisJCSB0ICE9IE5VTEw7CisJCSB0ID0gdC0+dm5fbmV4dHJlZikKKwkgICAgICB7CisJCXVuc2lnbmVkIGludCBjYXV4OworCQlFbGZfSW50ZXJuYWxfVmVybmF1eCAqYTsKKwkJYmZkX3NpemVfdHlwZSBpbmR4OworCisJCWNhdXggPSAwOworCQlmb3IgKGEgPSB0LT52bl9hdXhwdHI7IGEgIT0gTlVMTDsgYSA9IGEtPnZuYV9uZXh0cHRyKQorCQkgICsrY2F1eDsKKworCQl0LT52bl92ZXJzaW9uID0gVkVSX05FRURfQ1VSUkVOVDsKKwkJdC0+dm5fY250ID0gY2F1eDsKKwkJaW5keCA9IF9iZmRfZWxmX3N0cnRhYl9hZGQgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyLAorCQkJCQkgICAgZWxmX2R0X25hbWUgKHQtPnZuX2JmZCkgIT0gTlVMTAorCQkJCQkgICAgPyBlbGZfZHRfbmFtZSAodC0+dm5fYmZkKQorCQkJCQkgICAgOiBiYXNlbmFtZSAodC0+dm5fYmZkLT5maWxlbmFtZSksCisJCQkJCSAgICBGQUxTRSk7CisJCWlmIChpbmR4ID09IChiZmRfc2l6ZV90eXBlKSAtMSkKKwkJICByZXR1cm4gRkFMU0U7CisJCXQtPnZuX2ZpbGUgPSBpbmR4OworCQl0LT52bl9hdXggPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJuZWVkKTsKKwkJaWYgKHQtPnZuX25leHRyZWYgPT0gTlVMTCkKKwkJICB0LT52bl9uZXh0ID0gMDsKKwkJZWxzZQorCQkgIHQtPnZuX25leHQgPSAoc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVybmVlZCkKKwkJCQkrIGNhdXggKiBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJuYXV4KSk7CisKKwkJX2JmZF9lbGZfc3dhcF92ZXJuZWVkX291dCAob3V0cHV0X2JmZCwgdCwKKwkJCQkJICAgKEVsZl9FeHRlcm5hbF9WZXJuZWVkICopIHApOworCQlwICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1Zlcm5lZWQpOworCisJCWZvciAoYSA9IHQtPnZuX2F1eHB0cjsgYSAhPSBOVUxMOyBhID0gYS0+dm5hX25leHRwdHIpCisJCSAgeworCQkgICAgYS0+dm5hX2hhc2ggPSBiZmRfZWxmX2hhc2ggKGEtPnZuYV9ub2RlbmFtZSk7CisJCSAgICBpbmR4ID0gX2JmZF9lbGZfc3RydGFiX2FkZCAoZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5zdHIsCisJCQkJCQlhLT52bmFfbm9kZW5hbWUsIEZBTFNFKTsKKwkJICAgIGlmIChpbmR4ID09IChiZmRfc2l6ZV90eXBlKSAtMSkKKwkJICAgICAgcmV0dXJuIEZBTFNFOworCQkgICAgYS0+dm5hX25hbWUgPSBpbmR4OworCQkgICAgaWYgKGEtPnZuYV9uZXh0cHRyID09IE5VTEwpCisJCSAgICAgIGEtPnZuYV9uZXh0ID0gMDsKKwkJICAgIGVsc2UKKwkJICAgICAgYS0+dm5hX25leHQgPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJuYXV4KTsKKworCQkgICAgX2JmZF9lbGZfc3dhcF92ZXJuYXV4X291dCAob3V0cHV0X2JmZCwgYSwKKwkJCQkJICAgICAgIChFbGZfRXh0ZXJuYWxfVmVybmF1eCAqKSBwKTsKKwkJICAgIHAgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVybmF1eCk7CisJCSAgfQorCSAgICAgIH0KKworCSAgICBpZiAoIV9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9WRVJORUVELCAwKQorCQl8fCAhX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1ZFUk5FRUROVU0sIGNyZWZzKSkKKwkgICAgICByZXR1cm4gRkFMU0U7CisKKwkgICAgZWxmX3RkYXRhIChvdXRwdXRfYmZkKS0+Y3ZlcnJlZnMgPSBjcmVmczsKKwkgIH0KKyAgICAgIH0KKworICAgICAgLyogQXNzaWduIGR5bnN5bSBpbmRpY2llcy4gIEluIGEgc2hhcmVkIGxpYnJhcnkgd2UgZ2VuZXJhdGUgYQorCSBzZWN0aW9uIHN5bWJvbCBmb3IgZWFjaCBvdXRwdXQgc2VjdGlvbiwgd2hpY2ggY29tZSBmaXJzdC4KKwkgTmV4dCBjb21lIGFsbCBvZiB0aGUgYmFjay1lbmQgYWxsb2NhdGVkIGxvY2FsIGR5bmFtaWMgc3ltcywKKwkgZm9sbG93ZWQgYnkgdGhlIHJlc3Qgb2YgdGhlIGdsb2JhbCBzeW1ib2xzLiAgKi8KKworICAgICAgZHluc3ltY291bnQgPSBfYmZkX2VsZl9saW5rX3JlbnVtYmVyX2R5bnN5bXMgKG91dHB1dF9iZmQsIGluZm8pOworCisgICAgICAvKiBXb3JrIG91dCB0aGUgc2l6ZSBvZiB0aGUgc3ltYm9sIHZlcnNpb24gc2VjdGlvbi4gICovCisgICAgICBzID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5nbnUudmVyc2lvbiIpOworICAgICAgQkZEX0FTU0VSVCAocyAhPSBOVUxMKTsKKyAgICAgIGlmIChkeW5zeW1jb3VudCA9PSAwCisJICB8fCAodmVyZGVmcyA9PSBOVUxMICYmIGVsZl90ZGF0YSAob3V0cHV0X2JmZCktPnZlcnJlZiA9PSBOVUxMKSkKKwl7CisJICBfYmZkX3N0cmlwX3NlY3Rpb25fZnJvbV9vdXRwdXQgKGluZm8sIHMpOworCSAgLyogVGhlIERZTlNZTUNPVU5UIG1pZ2h0IGhhdmUgY2hhbmdlZCBpZiB3ZSB3ZXJlIGdvaW5nIHRvCisJICAgICBvdXRwdXQgYSBkeW5hbWljIHN5bWJvbCB0YWJsZSBlbnRyeSBmb3IgUy4gICovCisJICBkeW5zeW1jb3VudCA9IF9iZmRfZWxmX2xpbmtfcmVudW1iZXJfZHluc3ltcyAob3V0cHV0X2JmZCwgaW5mbyk7CisJfQorICAgICAgZWxzZQorCXsKKwkgIHMtPl9yYXdfc2l6ZSA9IGR5bnN5bWNvdW50ICogc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyc3ltKTsKKwkgIHMtPmNvbnRlbnRzID0gYmZkX3phbGxvYyAob3V0cHV0X2JmZCwgcy0+X3Jhd19zaXplKTsKKwkgIGlmIChzLT5jb250ZW50cyA9PSBOVUxMKQorCSAgICByZXR1cm4gRkFMU0U7CisKKwkgIGlmICghX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1ZFUlNZTSwgMCkpCisJICAgIHJldHVybiBGQUxTRTsKKwl9CisKKyAgICAgIC8qIFNldCB0aGUgc2l6ZSBvZiB0aGUgLmR5bnN5bSBhbmQgLmhhc2ggc2VjdGlvbnMuICBXZSBjb3VudGVkCisJIHRoZSBudW1iZXIgb2YgZHluYW1pYyBzeW1ib2xzIGluIGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scy4KKwkgV2Ugd2lsbCBidWlsZCB0aGUgY29udGVudHMgb2YgLmR5bnN5bSBhbmQgLmhhc2ggd2hlbiB3ZSBidWlsZAorCSB0aGUgZmluYWwgc3ltYm9sIHRhYmxlLCBiZWNhdXNlIHVudGlsIHRoZW4gd2UgZG8gbm90IGtub3cgdGhlCisJIGNvcnJlY3QgdmFsdWUgdG8gZ2l2ZSB0aGUgc3ltYm9scy4gIFdlIGJ1aWx0IHRoZSAuZHluc3RyCisJIHNlY3Rpb24gYXMgd2Ugd2VudCBhbG9uZyBpbiBlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMuICAqLworICAgICAgcyA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChkeW5vYmosICIuZHluc3ltIik7CisgICAgICBCRkRfQVNTRVJUIChzICE9IE5VTEwpOworICAgICAgcy0+X3Jhd19zaXplID0gZHluc3ltY291bnQgKiBiZWQtPnMtPnNpemVvZl9zeW07CisgICAgICBzLT5jb250ZW50cyA9IGJmZF9hbGxvYyAob3V0cHV0X2JmZCwgcy0+X3Jhd19zaXplKTsKKyAgICAgIGlmIChzLT5jb250ZW50cyA9PSBOVUxMICYmIHMtPl9yYXdfc2l6ZSAhPSAwKQorCXJldHVybiBGQUxTRTsKKworICAgICAgaWYgKGR5bnN5bWNvdW50ICE9IDApCisJeworCSAgRWxmX0ludGVybmFsX1N5bSBpc3ltOworCisJICAvKiBUaGUgZmlyc3QgZW50cnkgaW4gLmR5bnN5bSBpcyBhIGR1bW15IHN5bWJvbC4gICovCisJICBpc3ltLnN0X3ZhbHVlID0gMDsKKwkgIGlzeW0uc3Rfc2l6ZSA9IDA7CisJICBpc3ltLnN0X25hbWUgPSAwOworCSAgaXN5bS5zdF9pbmZvID0gMDsKKwkgIGlzeW0uc3Rfb3RoZXIgPSAwOworCSAgaXN5bS5zdF9zaG5keCA9IDA7CisJICBiZWQtPnMtPnN3YXBfc3ltYm9sX291dCAob3V0cHV0X2JmZCwgJmlzeW0sIHMtPmNvbnRlbnRzLCAwKTsKKwl9CisKKyAgICAgIC8qIENvbXB1dGUgdGhlIHNpemUgb2YgdGhlIGhhc2hpbmcgdGFibGUuICBBcyBhIHNpZGUgZWZmZWN0IHRoaXMKKwkgY29tcHV0ZXMgdGhlIGhhc2ggdmFsdWVzIGZvciBhbGwgdGhlIG5hbWVzIHdlIGV4cG9ydC4gICovCisgICAgICBidWNrZXRjb3VudCA9IGNvbXB1dGVfYnVja2V0X2NvdW50IChpbmZvKTsKKworICAgICAgcyA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChkeW5vYmosICIuaGFzaCIpOworICAgICAgQkZEX0FTU0VSVCAocyAhPSBOVUxMKTsKKyAgICAgIGhhc2hfZW50cnlfc2l6ZSA9IGVsZl9zZWN0aW9uX2RhdGEgKHMpLT50aGlzX2hkci5zaF9lbnRzaXplOworICAgICAgcy0+X3Jhd19zaXplID0gKCgyICsgYnVja2V0Y291bnQgKyBkeW5zeW1jb3VudCkgKiBoYXNoX2VudHJ5X3NpemUpOworICAgICAgcy0+Y29udGVudHMgPSBiZmRfemFsbG9jIChvdXRwdXRfYmZkLCBzLT5fcmF3X3NpemUpOworICAgICAgaWYgKHMtPmNvbnRlbnRzID09IE5VTEwpCisJcmV0dXJuIEZBTFNFOworCisgICAgICBiZmRfcHV0ICg4ICogaGFzaF9lbnRyeV9zaXplLCBvdXRwdXRfYmZkLCBidWNrZXRjb3VudCwgcy0+Y29udGVudHMpOworICAgICAgYmZkX3B1dCAoOCAqIGhhc2hfZW50cnlfc2l6ZSwgb3V0cHV0X2JmZCwgZHluc3ltY291bnQsCisJICAgICAgIHMtPmNvbnRlbnRzICsgaGFzaF9lbnRyeV9zaXplKTsKKworICAgICAgZWxmX2hhc2hfdGFibGUgKGluZm8pLT5idWNrZXRjb3VudCA9IGJ1Y2tldGNvdW50OworCisgICAgICBzID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5keW5zdHIiKTsKKyAgICAgIEJGRF9BU1NFUlQgKHMgIT0gTlVMTCk7CisKKyAgICAgIGVsZl9maW5hbGl6ZV9keW5zdHIgKG91dHB1dF9iZmQsIGluZm8pOworCisgICAgICBzLT5fcmF3X3NpemUgPSBfYmZkX2VsZl9zdHJ0YWJfc2l6ZSAoZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5zdHIpOworCisgICAgICBmb3IgKGR0YWdjb3VudCA9IDA7IGR0YWdjb3VudCA8PSBpbmZvLT5zcGFyZV9keW5hbWljX3RhZ3M7ICsrZHRhZ2NvdW50KQorCWlmICghX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX05VTEwsIDApKQorCSAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworLyogRmluYWwgcGhhc2Ugb2YgRUxGIGxpbmtlci4gICovCisKKy8qIEEgc3RydWN0dXJlIHdlIHVzZSB0byBhdm9pZCBwYXNzaW5nIGxhcmdlIG51bWJlcnMgb2YgYXJndW1lbnRzLiAgKi8KKworc3RydWN0IGVsZl9maW5hbF9saW5rX2luZm8KK3sKKyAgLyogR2VuZXJhbCBsaW5rIGluZm9ybWF0aW9uLiAgKi8KKyAgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm87CisgIC8qIE91dHB1dCBCRkQuICAqLworICBiZmQgKm91dHB1dF9iZmQ7CisgIC8qIFN5bWJvbCBzdHJpbmcgdGFibGUuICAqLworICBzdHJ1Y3QgYmZkX3N0cnRhYl9oYXNoICpzeW1zdHJ0YWI7CisgIC8qIC5keW5zeW0gc2VjdGlvbi4gICovCisgIGFzZWN0aW9uICpkeW5zeW1fc2VjOworICAvKiAuaGFzaCBzZWN0aW9uLiAgKi8KKyAgYXNlY3Rpb24gKmhhc2hfc2VjOworICAvKiBzeW1ib2wgdmVyc2lvbiBzZWN0aW9uICguZ251LnZlcnNpb24pLiAgKi8KKyAgYXNlY3Rpb24gKnN5bXZlcl9zZWM7CisgIC8qIEJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8gaG9sZCBjb250ZW50cyBvZiBhbnkgc2VjdGlvbi4gICovCisgIGJmZF9ieXRlICpjb250ZW50czsKKyAgLyogQnVmZmVyIGxhcmdlIGVub3VnaCB0byBob2xkIGV4dGVybmFsIHJlbG9jcyBvZiBhbnkgc2VjdGlvbi4gICovCisgIHZvaWQgKmV4dGVybmFsX3JlbG9jczsKKyAgLyogQnVmZmVyIGxhcmdlIGVub3VnaCB0byBob2xkIGludGVybmFsIHJlbG9jcyBvZiBhbnkgc2VjdGlvbi4gICovCisgIEVsZl9JbnRlcm5hbF9SZWxhICppbnRlcm5hbF9yZWxvY3M7CisgIC8qIEJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8gaG9sZCBleHRlcm5hbCBsb2NhbCBzeW1ib2xzIG9mIGFueSBpbnB1dAorICAgICBCRkQuICAqLworICBiZmRfYnl0ZSAqZXh0ZXJuYWxfc3ltczsKKyAgLyogQW5kIGEgYnVmZmVyIGZvciBzeW1ib2wgc2VjdGlvbiBpbmRpY2VzLiAgKi8KKyAgRWxmX0V4dGVybmFsX1N5bV9TaG5keCAqbG9jc3ltX3NobmR4OworICAvKiBCdWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgaW50ZXJuYWwgbG9jYWwgc3ltYm9scyBvZiBhbnkgaW5wdXQKKyAgICAgQkZELiAgKi8KKyAgRWxmX0ludGVybmFsX1N5bSAqaW50ZXJuYWxfc3ltczsKKyAgLyogQXJyYXkgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSBzeW1ib2wgaW5kZXggZm9yIGVhY2ggbG9jYWwgc3ltYm9sCisgICAgIG9mIGFueSBpbnB1dCBCRkQuICAqLworICBsb25nICppbmRpY2VzOworICAvKiBBcnJheSBsYXJnZSBlbm91Z2ggdG8gaG9sZCBhIHNlY3Rpb24gcG9pbnRlciBmb3IgZWFjaCBsb2NhbAorICAgICBzeW1ib2wgb2YgYW55IGlucHV0IEJGRC4gICovCisgIGFzZWN0aW9uICoqc2VjdGlvbnM7CisgIC8qIEJ1ZmZlciB0byBob2xkIHN3YXBwZWQgb3V0IHN5bWJvbHMuICAqLworICBiZmRfYnl0ZSAqc3ltYnVmOworICAvKiBBbmQgb25lIGZvciBzeW1ib2wgc2VjdGlvbiBpbmRpY2VzLiAgKi8KKyAgRWxmX0V4dGVybmFsX1N5bV9TaG5keCAqc3ltc2huZHhidWY7CisgIC8qIE51bWJlciBvZiBzd2FwcGVkIG91dCBzeW1ib2xzIGluIGJ1ZmZlci4gICovCisgIHNpemVfdCBzeW1idWZfY291bnQ7CisgIC8qIE51bWJlciBvZiBzeW1ib2xzIHdoaWNoIGZpdCBpbiBzeW1idWYuICAqLworICBzaXplX3Qgc3ltYnVmX3NpemU7CisgIC8qIEFuZCBzYW1lIGZvciBzeW1zaG5keGJ1Zi4gICovCisgIHNpemVfdCBzaG5keGJ1Zl9zaXplOworfTsKKworLyogVGhpcyBzdHJ1Y3QgaXMgdXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRvIGVsZl9saW5rX291dHB1dF9leHRzeW0uICAqLworCitzdHJ1Y3QgZWxmX291dGV4dF9pbmZvCit7CisgIGJmZF9ib29sZWFuIGZhaWxlZDsKKyAgYmZkX2Jvb2xlYW4gbG9jYWxzeW1zOworICBzdHJ1Y3QgZWxmX2ZpbmFsX2xpbmtfaW5mbyAqZmluZm87Cit9OworCisvKiBXaGVuIHBlcmZvcm1pbmcgYSByZWxvY2F0YWJsZSBsaW5rLCB0aGUgaW5wdXQgcmVsb2NhdGlvbnMgYXJlCisgICBwcmVzZXJ2ZWQuICBCdXQsIGlmIHRoZXkgcmVmZXJlbmNlIGdsb2JhbCBzeW1ib2xzLCB0aGUgaW5kaWNlcworICAgcmVmZXJlbmNlZCBtdXN0IGJlIHVwZGF0ZWQuICBVcGRhdGUgYWxsIHRoZSByZWxvY2F0aW9ucyBpbgorICAgUkVMX0hEUiAodGhlcmUgYXJlIENPVU5UIG9mIHRoZW0pLCB1c2luZyB0aGUgZGF0YSBpbiBSRUxfSEFTSC4gICovCisKK3N0YXRpYyB2b2lkCitlbGZfbGlua19hZGp1c3RfcmVsb2NzIChiZmQgKmFiZmQsCisJCQlFbGZfSW50ZXJuYWxfU2hkciAqcmVsX2hkciwKKwkJCXVuc2lnbmVkIGludCBjb3VudCwKKwkJCXN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqcmVsX2hhc2gpCit7CisgIHVuc2lnbmVkIGludCBpOworICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOworICBiZmRfYnl0ZSAqZXJlbGE7CisgIHZvaWQgKCpzd2FwX2luKSAoYmZkICosIGNvbnN0IGJmZF9ieXRlICosIEVsZl9JbnRlcm5hbF9SZWxhICopOworICB2b2lkICgqc3dhcF9vdXQpIChiZmQgKiwgY29uc3QgRWxmX0ludGVybmFsX1JlbGEgKiwgYmZkX2J5dGUgKik7CisgIGJmZF92bWEgcl90eXBlX21hc2s7CisgIGludCByX3N5bV9zaGlmdDsKKworICBpZiAocmVsX2hkci0+c2hfZW50c2l6ZSA9PSBiZWQtPnMtPnNpemVvZl9yZWwpCisgICAgeworICAgICAgc3dhcF9pbiA9IGJlZC0+cy0+c3dhcF9yZWxvY19pbjsKKyAgICAgIHN3YXBfb3V0ID0gYmVkLT5zLT5zd2FwX3JlbG9jX291dDsKKyAgICB9CisgIGVsc2UgaWYgKHJlbF9oZHItPnNoX2VudHNpemUgPT0gYmVkLT5zLT5zaXplb2ZfcmVsYSkKKyAgICB7CisgICAgICBzd2FwX2luID0gYmVkLT5zLT5zd2FwX3JlbG9jYV9pbjsKKyAgICAgIHN3YXBfb3V0ID0gYmVkLT5zLT5zd2FwX3JlbG9jYV9vdXQ7CisgICAgfQorICBlbHNlCisgICAgYWJvcnQgKCk7CisKKyAgaWYgKGJlZC0+cy0+aW50X3JlbHNfcGVyX2V4dF9yZWwgPiBNQVhfSU5UX1JFTFNfUEVSX0VYVF9SRUwpCisgICAgYWJvcnQgKCk7CisKKyAgaWYgKGJlZC0+cy0+YXJjaF9zaXplID09IDMyKQorICAgIHsKKyAgICAgIHJfdHlwZV9tYXNrID0gMHhmZjsKKyAgICAgIHJfc3ltX3NoaWZ0ID0gODsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICByX3R5cGVfbWFzayA9IDB4ZmZmZmZmZmY7CisgICAgICByX3N5bV9zaGlmdCA9IDMyOworICAgIH0KKworICBlcmVsYSA9IHJlbF9oZHItPmNvbnRlbnRzOworICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKywgcmVsX2hhc2grKywgZXJlbGEgKz0gcmVsX2hkci0+c2hfZW50c2l6ZSkKKyAgICB7CisgICAgICBFbGZfSW50ZXJuYWxfUmVsYSBpcmVsYVtNQVhfSU5UX1JFTFNfUEVSX0VYVF9SRUxdOworICAgICAgdW5zaWduZWQgaW50IGo7CisKKyAgICAgIGlmICgqcmVsX2hhc2ggPT0gTlVMTCkKKwljb250aW51ZTsKKworICAgICAgQkZEX0FTU0VSVCAoKCpyZWxfaGFzaCktPmluZHggPj0gMCk7CisKKyAgICAgICgqc3dhcF9pbikgKGFiZmQsIGVyZWxhLCBpcmVsYSk7CisgICAgICBmb3IgKGogPSAwOyBqIDwgYmVkLT5zLT5pbnRfcmVsc19wZXJfZXh0X3JlbDsgaisrKQorCWlyZWxhW2pdLnJfaW5mbyA9ICgoYmZkX3ZtYSkgKCpyZWxfaGFzaCktPmluZHggPDwgcl9zeW1fc2hpZnQKKwkJCSAgIHwgKGlyZWxhW2pdLnJfaW5mbyAmIHJfdHlwZV9tYXNrKSk7CisgICAgICAoKnN3YXBfb3V0KSAoYWJmZCwgaXJlbGEsIGVyZWxhKTsKKyAgICB9Cit9CisKK3N0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEKK3sKKyAgdW5pb24geworICAgIGJmZF92bWEgb2Zmc2V0OworICAgIGJmZF92bWEgc3ltX21hc2s7CisgIH0gdTsKKyAgZW51bSBlbGZfcmVsb2NfdHlwZV9jbGFzcyB0eXBlOworICAvKiBXZSB1c2UgdGhpcyBhcyBhbiBhcnJheSBvZiBzaXplIGludF9yZWxzX3Blcl9leHRfcmVsLiAgKi8KKyAgRWxmX0ludGVybmFsX1JlbGEgcmVsYVsxXTsKK307CisKK3N0YXRpYyBpbnQKK2VsZl9saW5rX3NvcnRfY21wMSAoY29uc3Qgdm9pZCAqQSwgY29uc3Qgdm9pZCAqQikKK3sKKyAgY29uc3Qgc3RydWN0IGVsZl9saW5rX3NvcnRfcmVsYSAqYSA9IEE7CisgIGNvbnN0IHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKmIgPSBCOworICBpbnQgcmVsYXRpdmVhLCByZWxhdGl2ZWI7CisKKyAgcmVsYXRpdmVhID0gYS0+dHlwZSA9PSByZWxvY19jbGFzc19yZWxhdGl2ZTsKKyAgcmVsYXRpdmViID0gYi0+dHlwZSA9PSByZWxvY19jbGFzc19yZWxhdGl2ZTsKKworICBpZiAocmVsYXRpdmVhIDwgcmVsYXRpdmViKQorICAgIHJldHVybiAxOworICBpZiAocmVsYXRpdmVhID4gcmVsYXRpdmViKQorICAgIHJldHVybiAtMTsKKyAgaWYgKChhLT5yZWxhLT5yX2luZm8gJiBhLT51LnN5bV9tYXNrKSA8IChiLT5yZWxhLT5yX2luZm8gJiBiLT51LnN5bV9tYXNrKSkKKyAgICByZXR1cm4gLTE7CisgIGlmICgoYS0+cmVsYS0+cl9pbmZvICYgYS0+dS5zeW1fbWFzaykgPiAoYi0+cmVsYS0+cl9pbmZvICYgYi0+dS5zeW1fbWFzaykpCisgICAgcmV0dXJuIDE7CisgIGlmIChhLT5yZWxhLT5yX29mZnNldCA8IGItPnJlbGEtPnJfb2Zmc2V0KQorICAgIHJldHVybiAtMTsKKyAgaWYgKGEtPnJlbGEtPnJfb2Zmc2V0ID4gYi0+cmVsYS0+cl9vZmZzZXQpCisgICAgcmV0dXJuIDE7CisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitlbGZfbGlua19zb3J0X2NtcDIgKGNvbnN0IHZvaWQgKkEsIGNvbnN0IHZvaWQgKkIpCit7CisgIGNvbnN0IHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKmEgPSBBOworICBjb25zdCBzdHJ1Y3QgZWxmX2xpbmtfc29ydF9yZWxhICpiID0gQjsKKyAgaW50IGNvcHlhLCBjb3B5YjsKKworICBpZiAoYS0+dS5vZmZzZXQgPCBiLT51Lm9mZnNldCkKKyAgICByZXR1cm4gLTE7CisgIGlmIChhLT51Lm9mZnNldCA+IGItPnUub2Zmc2V0KQorICAgIHJldHVybiAxOworICBjb3B5YSA9IChhLT50eXBlID09IHJlbG9jX2NsYXNzX2NvcHkpICogMiArIChhLT50eXBlID09IHJlbG9jX2NsYXNzX3BsdCk7CisgIGNvcHliID0gKGItPnR5cGUgPT0gcmVsb2NfY2xhc3NfY29weSkgKiAyICsgKGItPnR5cGUgPT0gcmVsb2NfY2xhc3NfcGx0KTsKKyAgaWYgKGNvcHlhIDwgY29weWIpCisgICAgcmV0dXJuIC0xOworICBpZiAoY29weWEgPiBjb3B5YikKKyAgICByZXR1cm4gMTsKKyAgaWYgKGEtPnJlbGEtPnJfb2Zmc2V0IDwgYi0+cmVsYS0+cl9vZmZzZXQpCisgICAgcmV0dXJuIC0xOworICBpZiAoYS0+cmVsYS0+cl9vZmZzZXQgPiBiLT5yZWxhLT5yX29mZnNldCkKKyAgICByZXR1cm4gMTsKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzaXplX3QKK2VsZl9saW5rX3NvcnRfcmVsb2NzIChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLCBhc2VjdGlvbiAqKnBzZWMpCit7CisgIGFzZWN0aW9uICpyZWxkeW47CisgIGJmZF9zaXplX3R5cGUgY291bnQsIHNpemU7CisgIHNpemVfdCBpLCByZXQsIHNvcnRfZWx0LCBleHRfc2l6ZTsKKyAgYmZkX2J5dGUgKnNvcnQsICpzX25vbl9yZWxhdGl2ZSwgKnA7CisgIHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKnNxOworICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOworICBpbnQgaTJlID0gYmVkLT5zLT5pbnRfcmVsc19wZXJfZXh0X3JlbDsKKyAgdm9pZCAoKnN3YXBfaW4pIChiZmQgKiwgY29uc3QgYmZkX2J5dGUgKiwgRWxmX0ludGVybmFsX1JlbGEgKik7CisgIHZvaWQgKCpzd2FwX291dCkgKGJmZCAqLCBjb25zdCBFbGZfSW50ZXJuYWxfUmVsYSAqLCBiZmRfYnl0ZSAqKTsKKyAgc3RydWN0IGJmZF9saW5rX29yZGVyICpsbzsKKyAgYmZkX3ZtYSByX3N5bV9tYXNrOworCisgIHJlbGR5biA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLnJlbGEuZHluIik7CisgIGlmIChyZWxkeW4gPT0gTlVMTCB8fCByZWxkeW4tPl9yYXdfc2l6ZSA9PSAwKQorICAgIHsKKyAgICAgIHJlbGR5biA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLnJlbC5keW4iKTsKKyAgICAgIGlmIChyZWxkeW4gPT0gTlVMTCB8fCByZWxkeW4tPl9yYXdfc2l6ZSA9PSAwKQorCXJldHVybiAwOworICAgICAgZXh0X3NpemUgPSBiZWQtPnMtPnNpemVvZl9yZWw7CisgICAgICBzd2FwX2luID0gYmVkLT5zLT5zd2FwX3JlbG9jX2luOworICAgICAgc3dhcF9vdXQgPSBiZWQtPnMtPnN3YXBfcmVsb2Nfb3V0OworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGV4dF9zaXplID0gYmVkLT5zLT5zaXplb2ZfcmVsYTsKKyAgICAgIHN3YXBfaW4gPSBiZWQtPnMtPnN3YXBfcmVsb2NhX2luOworICAgICAgc3dhcF9vdXQgPSBiZWQtPnMtPnN3YXBfcmVsb2NhX291dDsKKyAgICB9CisgIGNvdW50ID0gcmVsZHluLT5fcmF3X3NpemUgLyBleHRfc2l6ZTsKKworICBzaXplID0gMDsKKyAgZm9yIChsbyA9IHJlbGR5bi0+bGlua19vcmRlcl9oZWFkOyBsbyAhPSBOVUxMOyBsbyA9IGxvLT5uZXh0KQorICAgIGlmIChsby0+dHlwZSA9PSBiZmRfaW5kaXJlY3RfbGlua19vcmRlcikKKyAgICAgIHsKKwlhc2VjdGlvbiAqbyA9IGxvLT51LmluZGlyZWN0LnNlY3Rpb247CisJc2l6ZSArPSBvLT5fcmF3X3NpemU7CisgICAgICB9CisKKyAgaWYgKHNpemUgIT0gcmVsZHluLT5fcmF3X3NpemUpCisgICAgcmV0dXJuIDA7CisKKyAgc29ydF9lbHQgPSAoc2l6ZW9mIChzdHJ1Y3QgZWxmX2xpbmtfc29ydF9yZWxhKQorCSAgICAgICsgKGkyZSAtIDEpICogc2l6ZW9mIChFbGZfSW50ZXJuYWxfUmVsYSkpOworICBzb3J0ID0gYmZkX3ptYWxsb2MgKHNvcnRfZWx0ICogY291bnQpOworICBpZiAoc29ydCA9PSBOVUxMKQorICAgIHsKKyAgICAgICgqaW5mby0+Y2FsbGJhY2tzLT53YXJuaW5nKQorCShpbmZvLCBfKCJOb3QgZW5vdWdoIG1lbW9yeSB0byBzb3J0IHJlbG9jYXRpb25zIiksIDAsIGFiZmQsIDAsIDApOworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgIGlmIChiZWQtPnMtPmFyY2hfc2l6ZSA9PSAzMikKKyAgICByX3N5bV9tYXNrID0gfihiZmRfdm1hKSAweGZmOworICBlbHNlCisgICAgcl9zeW1fbWFzayA9IH4oYmZkX3ZtYSkgMHhmZmZmZmZmZjsKKworICBmb3IgKGxvID0gcmVsZHluLT5saW5rX29yZGVyX2hlYWQ7IGxvICE9IE5VTEw7IGxvID0gbG8tPm5leHQpCisgICAgaWYgKGxvLT50eXBlID09IGJmZF9pbmRpcmVjdF9saW5rX29yZGVyKQorICAgICAgeworCWJmZF9ieXRlICplcmVsLCAqZXJlbGVuZDsKKwlhc2VjdGlvbiAqbyA9IGxvLT51LmluZGlyZWN0LnNlY3Rpb247CisKKwllcmVsID0gby0+Y29udGVudHM7CisJZXJlbGVuZCA9IG8tPmNvbnRlbnRzICsgby0+X3Jhd19zaXplOworCXAgPSBzb3J0ICsgby0+b3V0cHV0X29mZnNldCAvIGV4dF9zaXplICogc29ydF9lbHQ7CisJd2hpbGUgKGVyZWwgPCBlcmVsZW5kKQorCSAgeworCSAgICBzdHJ1Y3QgZWxmX2xpbmtfc29ydF9yZWxhICpzID0gKHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKikgcDsKKwkgICAgKCpzd2FwX2luKSAoYWJmZCwgZXJlbCwgcy0+cmVsYSk7CisJICAgIHMtPnR5cGUgPSAoKmJlZC0+ZWxmX2JhY2tlbmRfcmVsb2NfdHlwZV9jbGFzcykgKHMtPnJlbGEpOworCSAgICBzLT51LnN5bV9tYXNrID0gcl9zeW1fbWFzazsKKwkgICAgcCArPSBzb3J0X2VsdDsKKwkgICAgZXJlbCArPSBleHRfc2l6ZTsKKwkgIH0KKyAgICAgIH0KKworICBxc29ydCAoc29ydCwgY291bnQsIHNvcnRfZWx0LCBlbGZfbGlua19zb3J0X2NtcDEpOworCisgIGZvciAoaSA9IDAsIHAgPSBzb3J0OyBpIDwgY291bnQ7IGkrKywgcCArPSBzb3J0X2VsdCkKKyAgICB7CisgICAgICBzdHJ1Y3QgZWxmX2xpbmtfc29ydF9yZWxhICpzID0gKHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKikgcDsKKyAgICAgIGlmIChzLT50eXBlICE9IHJlbG9jX2NsYXNzX3JlbGF0aXZlKQorCWJyZWFrOworICAgIH0KKyAgcmV0ID0gaTsKKyAgc19ub25fcmVsYXRpdmUgPSBwOworCisgIHNxID0gKHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKikgc19ub25fcmVsYXRpdmU7CisgIGZvciAoOyBpIDwgY291bnQ7IGkrKywgcCArPSBzb3J0X2VsdCkKKyAgICB7CisgICAgICBzdHJ1Y3QgZWxmX2xpbmtfc29ydF9yZWxhICpzcCA9IChzdHJ1Y3QgZWxmX2xpbmtfc29ydF9yZWxhICopIHA7CisgICAgICBpZiAoKChzcC0+cmVsYS0+cl9pbmZvIF4gc3EtPnJlbGEtPnJfaW5mbykgJiByX3N5bV9tYXNrKSAhPSAwKQorCXNxID0gc3A7CisgICAgICBzcC0+dS5vZmZzZXQgPSBzcS0+cmVsYS0+cl9vZmZzZXQ7CisgICAgfQorCisgIHFzb3J0IChzX25vbl9yZWxhdGl2ZSwgY291bnQgLSByZXQsIHNvcnRfZWx0LCBlbGZfbGlua19zb3J0X2NtcDIpOworCisgIGZvciAobG8gPSByZWxkeW4tPmxpbmtfb3JkZXJfaGVhZDsgbG8gIT0gTlVMTDsgbG8gPSBsby0+bmV4dCkKKyAgICBpZiAobG8tPnR5cGUgPT0gYmZkX2luZGlyZWN0X2xpbmtfb3JkZXIpCisgICAgICB7CisJYmZkX2J5dGUgKmVyZWwsICplcmVsZW5kOworCWFzZWN0aW9uICpvID0gbG8tPnUuaW5kaXJlY3Quc2VjdGlvbjsKKworCWVyZWwgPSBvLT5jb250ZW50czsKKwllcmVsZW5kID0gby0+Y29udGVudHMgKyBvLT5fcmF3X3NpemU7CisJcCA9IHNvcnQgKyBvLT5vdXRwdXRfb2Zmc2V0IC8gZXh0X3NpemUgKiBzb3J0X2VsdDsKKwl3aGlsZSAoZXJlbCA8IGVyZWxlbmQpCisJICB7CisJICAgIHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKnMgPSAoc3RydWN0IGVsZl9saW5rX3NvcnRfcmVsYSAqKSBwOworCSAgICAoKnN3YXBfb3V0KSAoYWJmZCwgcy0+cmVsYSwgZXJlbCk7CisJICAgIHAgKz0gc29ydF9lbHQ7CisJICAgIGVyZWwgKz0gZXh0X3NpemU7CisJICB9CisgICAgICB9CisKKyAgZnJlZSAoc29ydCk7CisgICpwc2VjID0gcmVsZHluOworICByZXR1cm4gcmV0OworfQorCisvKiBGbHVzaCB0aGUgb3V0cHV0IHN5bWJvbHMgdG8gdGhlIGZpbGUuICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZl9saW5rX2ZsdXNoX291dHB1dF9zeW1zIChzdHJ1Y3QgZWxmX2ZpbmFsX2xpbmtfaW5mbyAqZmluZm8sCisJCQkgICAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZCkKK3sKKyAgaWYgKGZpbmZvLT5zeW1idWZfY291bnQgPiAwKQorICAgIHsKKyAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICpoZHI7CisgICAgICBmaWxlX3B0ciBwb3M7CisgICAgICBiZmRfc2l6ZV90eXBlIGFtdDsKKworICAgICAgaGRyID0gJmVsZl90ZGF0YSAoZmluZm8tPm91dHB1dF9iZmQpLT5zeW10YWJfaGRyOworICAgICAgcG9zID0gaGRyLT5zaF9vZmZzZXQgKyBoZHItPnNoX3NpemU7CisgICAgICBhbXQgPSBmaW5mby0+c3ltYnVmX2NvdW50ICogYmVkLT5zLT5zaXplb2Zfc3ltOworICAgICAgaWYgKGJmZF9zZWVrIChmaW5mby0+b3V0cHV0X2JmZCwgcG9zLCBTRUVLX1NFVCkgIT0gMAorCSAgfHwgYmZkX2J3cml0ZSAoZmluZm8tPnN5bWJ1ZiwgYW10LCBmaW5mby0+b3V0cHV0X2JmZCkgIT0gYW10KQorCXJldHVybiBGQUxTRTsKKworICAgICAgaGRyLT5zaF9zaXplICs9IGFtdDsKKyAgICAgIGZpbmZvLT5zeW1idWZfY291bnQgPSAwOworICAgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworLyogQWRkIGEgc3ltYm9sIHRvIHRoZSBvdXRwdXQgc3ltYm9sIHRhYmxlLiAgKi8KKworc3RhdGljIGJmZF9ib29sZWFuCitlbGZfbGlua19vdXRwdXRfc3ltIChzdHJ1Y3QgZWxmX2ZpbmFsX2xpbmtfaW5mbyAqZmluZm8sCisJCSAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJICAgICBFbGZfSW50ZXJuYWxfU3ltICplbGZzeW0sCisJCSAgICAgYXNlY3Rpb24gKmlucHV0X3NlYywKKwkJICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCkKK3sKKyAgYmZkX2J5dGUgKmRlc3Q7CisgIEVsZl9FeHRlcm5hbF9TeW1fU2huZHggKmRlc3RzaG5keDsKKyAgYmZkX2Jvb2xlYW4gKCpvdXRwdXRfc3ltYm9sX2hvb2spCisgICAgKHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNvbnN0IGNoYXIgKiwgRWxmX0ludGVybmFsX1N5bSAqLCBhc2VjdGlvbiAqLAorICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKTsKKyAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKKworICBiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoZmluZm8tPm91dHB1dF9iZmQpOworICBvdXRwdXRfc3ltYm9sX2hvb2sgPSBiZWQtPmVsZl9iYWNrZW5kX2xpbmtfb3V0cHV0X3N5bWJvbF9ob29rOworICBpZiAob3V0cHV0X3N5bWJvbF9ob29rICE9IE5VTEwpCisgICAgeworICAgICAgaWYgKCEgKCpvdXRwdXRfc3ltYm9sX2hvb2spIChmaW5mby0+aW5mbywgbmFtZSwgZWxmc3ltLCBpbnB1dF9zZWMsIGgpKQorCXJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgaWYgKG5hbWUgPT0gTlVMTCB8fCAqbmFtZSA9PSAnXDAnKQorICAgIGVsZnN5bS0+c3RfbmFtZSA9IDA7CisgIGVsc2UgaWYgKGlucHV0X3NlYy0+ZmxhZ3MgJiBTRUNfRVhDTFVERSkKKyAgICBlbGZzeW0tPnN0X25hbWUgPSAwOworICBlbHNlCisgICAgeworICAgICAgZWxmc3ltLT5zdF9uYW1lID0gKHVuc2lnbmVkIGxvbmcpIF9iZmRfc3RyaW5ndGFiX2FkZCAoZmluZm8tPnN5bXN0cnRhYiwKKwkJCQkJCQkgICAgbmFtZSwgVFJVRSwgRkFMU0UpOworICAgICAgaWYgKGVsZnN5bS0+c3RfbmFtZSA9PSAodW5zaWduZWQgbG9uZykgLTEpCisJcmV0dXJuIEZBTFNFOworICAgIH0KKworICBpZiAoZmluZm8tPnN5bWJ1Zl9jb3VudCA+PSBmaW5mby0+c3ltYnVmX3NpemUpCisgICAgeworICAgICAgaWYgKCEgZWxmX2xpbmtfZmx1c2hfb3V0cHV0X3N5bXMgKGZpbmZvLCBiZWQpKQorCXJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgZGVzdCA9IGZpbmZvLT5zeW1idWYgKyBmaW5mby0+c3ltYnVmX2NvdW50ICogYmVkLT5zLT5zaXplb2Zfc3ltOworICBkZXN0c2huZHggPSBmaW5mby0+c3ltc2huZHhidWY7CisgIGlmIChkZXN0c2huZHggIT0gTlVMTCkKKyAgICB7CisgICAgICBpZiAoYmZkX2dldF9zeW1jb3VudCAoZmluZm8tPm91dHB1dF9iZmQpID49IGZpbmZvLT5zaG5keGJ1Zl9zaXplKQorCXsKKwkgIGJmZF9zaXplX3R5cGUgYW10OworCisJICBhbXQgPSBmaW5mby0+c2huZHhidWZfc2l6ZSAqIHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bV9TaG5keCk7CisJICBmaW5mby0+c3ltc2huZHhidWYgPSBkZXN0c2huZHggPSBiZmRfcmVhbGxvYyAoZGVzdHNobmR4LCBhbXQgKiAyKTsKKwkgIGlmIChkZXN0c2huZHggPT0gTlVMTCkKKwkgICAgcmV0dXJuIEZBTFNFOworCSAgbWVtc2V0ICgoY2hhciAqKSBkZXN0c2huZHggKyBhbXQsIDAsIGFtdCk7CisJICBmaW5mby0+c2huZHhidWZfc2l6ZSAqPSAyOworCX0KKyAgICAgIGRlc3RzaG5keCArPSBiZmRfZ2V0X3N5bWNvdW50IChmaW5mby0+b3V0cHV0X2JmZCk7CisgICAgfQorCisgIGJlZC0+cy0+c3dhcF9zeW1ib2xfb3V0IChmaW5mby0+b3V0cHV0X2JmZCwgZWxmc3ltLCBkZXN0LCBkZXN0c2huZHgpOworICBmaW5mby0+c3ltYnVmX2NvdW50ICs9IDE7CisgIGJmZF9nZXRfc3ltY291bnQgKGZpbmZvLT5vdXRwdXRfYmZkKSArPSAxOworCisgIHJldHVybiBUUlVFOworfQorCisvKiBGb3IgRFNPcyBsb2FkZWQgaW4gdmlhIGEgRFRfTkVFREVEIGVudHJ5LCBlbXVsYXRlIGxkLnNvIGluCisgICBhbGxvd2luZyBhbiB1bnNhdGlzZmllZCB1bnZlcnNpb25lZCBzeW1ib2wgaW4gdGhlIERTTyB0byBtYXRjaCBhCisgICB2ZXJzaW9uZWQgc3ltYm9sIHRoYXQgd291bGQgbm9ybWFsbHkgcmVxdWlyZSBhbiBleHBsaWNpdCB2ZXJzaW9uLgorICAgV2UgYWxzbyBoYW5kbGUgdGhlIGNhc2UgdGhhdCBhIERTTyByZWZlcmVuY2VzIGEgaGlkZGVuIHN5bWJvbAorICAgd2hpY2ggbWF5IGJlIHNhdGlzZmllZCBieSBhIHZlcnNpb25lZCBzeW1ib2wgaW4gYW5vdGhlciBEU08uICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZl9saW5rX2NoZWNrX3ZlcnNpb25lZF9zeW1ib2wgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAorCQkJCSBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkLAorCQkJCSBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCkKK3sKKyAgYmZkICphYmZkOworICBzdHJ1Y3QgZWxmX2xpbmtfbG9hZGVkX2xpc3QgKmxvYWRlZDsKKworICBpZiAoIWlzX2VsZl9oYXNoX3RhYmxlIChpbmZvLT5oYXNoKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgc3dpdGNoIChoLT5yb290LnR5cGUpCisgICAgeworICAgIGRlZmF1bHQ6CisgICAgICBhYmZkID0gTlVMTDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBiZmRfbGlua19oYXNoX3VuZGVmaW5lZDoKKyAgICBjYXNlIGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrOgorICAgICAgYWJmZCA9IGgtPnJvb3QudS51bmRlZi5hYmZkOworICAgICAgaWYgKChhYmZkLT5mbGFncyAmIERZTkFNSUMpID09IDAKKwkgIHx8IGVsZl9keW5fbGliX2NsYXNzIChhYmZkKSAhPSBEWU5fRFRfTkVFREVEKQorCXJldHVybiBGQUxTRTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBiZmRfbGlua19oYXNoX2RlZmluZWQ6CisgICAgY2FzZSBiZmRfbGlua19oYXNoX2RlZndlYWs6CisgICAgICBhYmZkID0gaC0+cm9vdC51LmRlZi5zZWN0aW9uLT5vd25lcjsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBiZmRfbGlua19oYXNoX2NvbW1vbjoKKyAgICAgIGFiZmQgPSBoLT5yb290LnUuYy5wLT5zZWN0aW9uLT5vd25lcjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgQkZEX0FTU0VSVCAoYWJmZCAhPSBOVUxMKTsKKworICBmb3IgKGxvYWRlZCA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+bG9hZGVkOworICAgICAgIGxvYWRlZCAhPSBOVUxMOworICAgICAgIGxvYWRlZCA9IGxvYWRlZC0+bmV4dCkKKyAgICB7CisgICAgICBiZmQgKmlucHV0OworICAgICAgRWxmX0ludGVybmFsX1NoZHIgKmhkcjsKKyAgICAgIGJmZF9zaXplX3R5cGUgc3ltY291bnQ7CisgICAgICBiZmRfc2l6ZV90eXBlIGV4dHN5bWNvdW50OworICAgICAgYmZkX3NpemVfdHlwZSBleHRzeW1vZmY7CisgICAgICBFbGZfSW50ZXJuYWxfU2hkciAqdmVyc3ltaGRyOworICAgICAgRWxmX0ludGVybmFsX1N5bSAqaXN5bTsKKyAgICAgIEVsZl9JbnRlcm5hbF9TeW0gKmlzeW1lbmQ7CisgICAgICBFbGZfSW50ZXJuYWxfU3ltICppc3ltYnVmOworICAgICAgRWxmX0V4dGVybmFsX1ZlcnN5bSAqZXZlcjsKKyAgICAgIEVsZl9FeHRlcm5hbF9WZXJzeW0gKmV4dHZlcnN5bTsKKworICAgICAgaW5wdXQgPSBsb2FkZWQtPmFiZmQ7CisKKyAgICAgIC8qIFdlIGNoZWNrIGVhY2ggRFNPIGZvciBhIHBvc3NpYmxlIGhpZGRlbiB2ZXJzaW9uZWQgZGVmaW5pdGlvbi4gICovCisgICAgICBpZiAoaW5wdXQgPT0gYWJmZAorCSAgfHwgKGlucHV0LT5mbGFncyAmIERZTkFNSUMpID09IDAKKwkgIHx8IGVsZl9keW52ZXJzeW0gKGlucHV0KSA9PSAwKQorCWNvbnRpbnVlOworCisgICAgICBoZHIgPSAmZWxmX3RkYXRhIChpbnB1dCktPmR5bnN5bXRhYl9oZHI7CisKKyAgICAgIHN5bWNvdW50ID0gaGRyLT5zaF9zaXplIC8gYmVkLT5zLT5zaXplb2Zfc3ltOworICAgICAgaWYgKGVsZl9iYWRfc3ltdGFiIChpbnB1dCkpCisJeworCSAgZXh0c3ltY291bnQgPSBzeW1jb3VudDsKKwkgIGV4dHN5bW9mZiA9IDA7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGV4dHN5bWNvdW50ID0gc3ltY291bnQgLSBoZHItPnNoX2luZm87CisJICBleHRzeW1vZmYgPSBoZHItPnNoX2luZm87CisJfQorCisgICAgICBpZiAoZXh0c3ltY291bnQgPT0gMCkKKwljb250aW51ZTsKKworICAgICAgaXN5bWJ1ZiA9IGJmZF9lbGZfZ2V0X2VsZl9zeW1zIChpbnB1dCwgaGRyLCBleHRzeW1jb3VudCwgZXh0c3ltb2ZmLAorCQkJCSAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOworICAgICAgaWYgKGlzeW1idWYgPT0gTlVMTCkKKwlyZXR1cm4gRkFMU0U7CisKKyAgICAgIC8qIFJlYWQgaW4gYW55IHZlcnNpb24gZGVmaW5pdGlvbnMuICAqLworICAgICAgdmVyc3ltaGRyID0gJmVsZl90ZGF0YSAoaW5wdXQpLT5keW52ZXJzeW1faGRyOworICAgICAgZXh0dmVyc3ltID0gYmZkX21hbGxvYyAodmVyc3ltaGRyLT5zaF9zaXplKTsKKyAgICAgIGlmIChleHR2ZXJzeW0gPT0gTlVMTCkKKwlnb3RvIGVycm9yX3JldDsKKworICAgICAgaWYgKGJmZF9zZWVrIChpbnB1dCwgdmVyc3ltaGRyLT5zaF9vZmZzZXQsIFNFRUtfU0VUKSAhPSAwCisJICB8fCAoYmZkX2JyZWFkIChleHR2ZXJzeW0sIHZlcnN5bWhkci0+c2hfc2l6ZSwgaW5wdXQpCisJICAgICAgIT0gdmVyc3ltaGRyLT5zaF9zaXplKSkKKwl7CisJICBmcmVlIChleHR2ZXJzeW0pOworCWVycm9yX3JldDoKKwkgIGZyZWUgKGlzeW1idWYpOworCSAgcmV0dXJuIEZBTFNFOworCX0KKworICAgICAgZXZlciA9IGV4dHZlcnN5bSArIGV4dHN5bW9mZjsKKyAgICAgIGlzeW1lbmQgPSBpc3ltYnVmICsgZXh0c3ltY291bnQ7CisgICAgICBmb3IgKGlzeW0gPSBpc3ltYnVmOyBpc3ltIDwgaXN5bWVuZDsgaXN5bSsrLCBldmVyKyspCisJeworCSAgY29uc3QgY2hhciAqbmFtZTsKKwkgIEVsZl9JbnRlcm5hbF9WZXJzeW0gaXZlcjsKKwkgIHVuc2lnbmVkIHNob3J0IHZlcnNpb25faW5kZXg7CisKKwkgIGlmIChFTEZfU1RfQklORCAoaXN5bS0+c3RfaW5mbykgPT0gU1RCX0xPQ0FMCisJICAgICAgfHwgaXN5bS0+c3Rfc2huZHggPT0gU0hOX1VOREVGKQorCSAgICBjb250aW51ZTsKKworCSAgbmFtZSA9IGJmZF9lbGZfc3RyaW5nX2Zyb21fZWxmX3NlY3Rpb24gKGlucHV0LAorCQkJCQkJICBoZHItPnNoX2xpbmssCisJCQkJCQkgIGlzeW0tPnN0X25hbWUpOworCSAgaWYgKHN0cmNtcCAobmFtZSwgaC0+cm9vdC5yb290LnN0cmluZykgIT0gMCkKKwkgICAgY29udGludWU7CisKKwkgIF9iZmRfZWxmX3N3YXBfdmVyc3ltX2luIChpbnB1dCwgZXZlciwgJml2ZXIpOworCisJICBpZiAoKGl2ZXIudnNfdmVycyAmIFZFUlNZTV9ISURERU4pID09IDApCisJICAgIHsKKwkgICAgICAvKiBJZiB3ZSBoYXZlIGEgbm9uLWhpZGRlbiB2ZXJzaW9uZWQgc3ltLCB0aGVuIGl0IHNob3VsZAorCQkgaGF2ZSBwcm92aWRlZCBhIGRlZmluaXRpb24gZm9yIHRoZSB1bmRlZmluZWQgc3ltLiAgKi8KKwkgICAgICBhYm9ydCAoKTsKKwkgICAgfQorCisJICB2ZXJzaW9uX2luZGV4ID0gaXZlci52c192ZXJzICYgVkVSU1lNX1ZFUlNJT047CisJICBpZiAodmVyc2lvbl9pbmRleCA9PSAxIHx8IHZlcnNpb25faW5kZXggPT0gMikKKwkgICAgeworCSAgICAgIC8qIFRoaXMgaXMgdGhlIGJhc2Ugb3IgZmlyc3QgdmVyc2lvbi4gIFdlIGNhbiB1c2UgaXQuICAqLworCSAgICAgIGZyZWUgKGV4dHZlcnN5bSk7CisJICAgICAgZnJlZSAoaXN5bWJ1Zik7CisJICAgICAgcmV0dXJuIFRSVUU7CisJICAgIH0KKwl9CisKKyAgICAgIGZyZWUgKGV4dHZlcnN5bSk7CisgICAgICBmcmVlIChpc3ltYnVmKTsKKyAgICB9CisKKyAgcmV0dXJuIEZBTFNFOworfQorCisvKiBBZGQgYW4gZXh0ZXJuYWwgc3ltYm9sIHRvIHRoZSBzeW1ib2wgdGFibGUuICBUaGlzIGlzIGNhbGxlZCBmcm9tCisgICB0aGUgaGFzaCB0YWJsZSB0cmF2ZXJzYWwgcm91dGluZS4gIFdoZW4gZ2VuZXJhdGluZyBhIHNoYXJlZCBvYmplY3QsCisgICB3ZSBnbyB0aHJvdWdoIHRoZSBzeW1ib2wgdGFibGUgdHdpY2UuICBUaGUgZmlyc3QgdGltZSB3ZSBvdXRwdXQKKyAgIGFueXRoaW5nIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIGZvcmNlZCB0byBsb2NhbCBzY29wZSBpbiBhIHZlcnNpb24KKyAgIHNjcmlwdC4gIFRoZSBzZWNvbmQgdGltZSB3ZSBvdXRwdXQgdGhlIHN5bWJvbHMgdGhhdCBhcmUgc3RpbGwKKyAgIGdsb2JhbCBzeW1ib2xzLiAgKi8KKworc3RhdGljIGJmZF9ib29sZWFuCitlbGZfbGlua19vdXRwdXRfZXh0c3ltIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwgdm9pZCAqZGF0YSkKK3sKKyAgc3RydWN0IGVsZl9vdXRleHRfaW5mbyAqZW9pbmZvID0gZGF0YTsKKyAgc3RydWN0IGVsZl9maW5hbF9saW5rX2luZm8gKmZpbmZvID0gZW9pbmZvLT5maW5mbzsKKyAgYmZkX2Jvb2xlYW4gc3RyaXA7CisgIEVsZl9JbnRlcm5hbF9TeW0gc3ltOworICBhc2VjdGlvbiAqaW5wdXRfc2VjOworICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkOworCisgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQorICAgIHsKKyAgICAgIGggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKKyAgICAgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9uZXcpCisJcmV0dXJuIFRSVUU7CisgICAgfQorCisgIC8qIERlY2lkZSB3aGV0aGVyIHRvIG91dHB1dCB0aGlzIHN5bWJvbCBpbiB0aGlzIHBhc3MuICAqLworICBpZiAoZW9pbmZvLT5sb2NhbHN5bXMpCisgICAgeworICAgICAgaWYgKChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQorCXJldHVybiBUUlVFOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGlmICgoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgIT0gMCkKKwlyZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGZpbmZvLT5vdXRwdXRfYmZkKTsKKworICAvKiBJZiB3ZSBoYXZlIGFuIHVuZGVmaW5lZCBzeW1ib2wgcmVmZXJlbmNlIGhlcmUgdGhlbiBpdCBtdXN0IGhhdmUKKyAgICAgY29tZSBmcm9tIGEgc2hhcmVkIGxpYnJhcnkgdGhhdCBpcyBiZWluZyBsaW5rZWQgaW4uICAoVW5kZWZpbmVkCisgICAgIHJlZmVyZW5jZXMgaW4gcmVndWxhciBmaWxlcyBoYXZlIGFscmVhZHkgYmVlbiBoYW5kbGVkKS4gIElmIHdlCisgICAgIGFyZSByZXBvcnRpbmcgZXJyb3JzIGZvciB0aGlzIHNpdHVhdGlvbiB0aGVuIGRvIHNvIG5vdy4gICovCisgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZmluZWQKKyAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfSEFTSF9SRUZfRFlOQU1JQykgIT0gMAorICAgICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX1JFRl9SRUdVTEFSKSA9PSAwCisgICAgICAmJiAhIGVsZl9saW5rX2NoZWNrX3ZlcnNpb25lZF9zeW1ib2wgKGZpbmZvLT5pbmZvLCBiZWQsIGgpCisgICAgICAmJiBmaW5mby0+aW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX3NoYXJlZF9saWJzICE9IFJNX0lHTk9SRSkKKyAgICB7CisgICAgICBpZiAoISAoKCpmaW5mby0+aW5mby0+Y2FsbGJhY2tzLT51bmRlZmluZWRfc3ltYm9sKQorCSAgICAgKGZpbmZvLT5pbmZvLCBoLT5yb290LnJvb3Quc3RyaW5nLCBoLT5yb290LnUudW5kZWYuYWJmZCwKKwkgICAgICBOVUxMLCAwLCBmaW5mby0+aW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX3NoYXJlZF9saWJzID09IFJNX0dFTkVSQVRFX0VSUk9SKSkpCisJeworCSAgZW9pbmZvLT5mYWlsZWQgPSBUUlVFOworCSAgcmV0dXJuIEZBTFNFOworCX0KKyAgICB9CisKKyAgLyogV2Ugc2hvdWxkIGFsc28gd2FybiBpZiBhIGZvcmNlZCBsb2NhbCBzeW1ib2wgaXMgcmVmZXJlbmNlZCBmcm9tCisgICAgIHNoYXJlZCBsaWJyYXJpZXMuICAqLworICBpZiAoISBmaW5mby0+aW5mby0+cmVsb2NhdGFibGUKKyAgICAgICYmICghIGZpbmZvLT5pbmZvLT5zaGFyZWQpCisgICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncworCSAgJiAoRUxGX0xJTktfRk9SQ0VEX0xPQ0FMIHwgRUxGX0xJTktfSEFTSF9SRUZfRFlOQU1JQyB8IEVMRl9MSU5LX0RZTkFNSUNfREVGIHwgRUxGX0xJTktfRFlOQU1JQ19XRUFLKSkKKwkgPT0gKEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCB8IEVMRl9MSU5LX0hBU0hfUkVGX0RZTkFNSUMpCisgICAgICAmJiAhIGVsZl9saW5rX2NoZWNrX3ZlcnNpb25lZF9zeW1ib2wgKGZpbmZvLT5pbmZvLCBiZWQsIGgpKQorICAgIHsKKyAgICAgICgqX2JmZF9lcnJvcl9oYW5kbGVyKQorCShfKCIlczogJXMgc3ltYm9sIGAlcycgaW4gJXMgaXMgcmVmZXJlbmNlZCBieSBEU08iKSwKKwkgYmZkX2dldF9maWxlbmFtZSAoZmluZm8tPm91dHB1dF9iZmQpLAorCSBFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpID09IFNUVl9JTlRFUk5BTAorCSA/ICJpbnRlcm5hbCIKKwkgOiBFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpID09IFNUVl9ISURERU4KKwkgICA/ICJoaWRkZW4iIDogImxvY2FsIiwKKwkgaC0+cm9vdC5yb290LnN0cmluZywKKwkgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKGgtPnJvb3QudS5kZWYuc2VjdGlvbi0+b3duZXIpKTsKKyAgICAgIGVvaW5mby0+ZmFpbGVkID0gVFJVRTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgLyogV2UgZG9uJ3Qgd2FudCB0byBvdXRwdXQgc3ltYm9scyB0aGF0IGhhdmUgbmV2ZXIgYmVlbiBtZW50aW9uZWQgYnkKKyAgICAgYSByZWd1bGFyIGZpbGUsIG9yIHRoYXQgd2UgaGF2ZSBiZWVuIHRvbGQgdG8gc3RyaXAuICBIb3dldmVyLCBpZgorICAgICBoLT5pbmR4IGlzIHNldCB0byAtMiwgdGhlIHN5bWJvbCBpcyB1c2VkIGJ5IGEgcmVsb2MgYW5kIHdlIG11c3QKKyAgICAgb3V0cHV0IGl0LiAgKi8KKyAgaWYgKGgtPmluZHggPT0gLTIpCisgICAgc3RyaXAgPSBGQUxTRTsKKyAgZWxzZSBpZiAoKChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfSEFTSF9ERUZfRFlOQU1JQykgIT0gMAorCSAgICB8fCAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfUkVGX0RZTkFNSUMpICE9IDApCisJICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX0RFRl9SRUdVTEFSKSA9PSAwCisJICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX1JFRl9SRUdVTEFSKSA9PSAwKQorICAgIHN0cmlwID0gVFJVRTsKKyAgZWxzZSBpZiAoZmluZm8tPmluZm8tPnN0cmlwID09IHN0cmlwX2FsbCkKKyAgICBzdHJpcCA9IFRSVUU7CisgIGVsc2UgaWYgKGZpbmZvLT5pbmZvLT5zdHJpcCA9PSBzdHJpcF9zb21lCisJICAgJiYgYmZkX2hhc2hfbG9va3VwIChmaW5mby0+aW5mby0+a2VlcF9oYXNoLAorCQkJICAgICAgIGgtPnJvb3Qucm9vdC5zdHJpbmcsIEZBTFNFLCBGQUxTRSkgPT0gTlVMTCkKKyAgICBzdHJpcCA9IFRSVUU7CisgIGVsc2UgaWYgKGZpbmZvLT5pbmZvLT5zdHJpcF9kaXNjYXJkZWQKKwkgICAmJiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmaW5lZAorCSAgICAgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKQorCSAgICYmIGVsZl9kaXNjYXJkZWRfc2VjdGlvbiAoaC0+cm9vdC51LmRlZi5zZWN0aW9uKSkKKyAgICBzdHJpcCA9IFRSVUU7CisgIGVsc2UKKyAgICBzdHJpcCA9IEZBTFNFOworCisgIC8qIElmIHdlJ3JlIHN0cmlwcGluZyBpdCwgYW5kIGl0J3Mgbm90IGEgZHluYW1pYyBzeW1ib2wsIHRoZXJlJ3MKKyAgICAgbm90aGluZyBlbHNlIHRvIGRvIHVubGVzcyBpdCBpcyBhIGZvcmNlZCBsb2NhbCBzeW1ib2wuICAqLworICBpZiAoc3RyaXAKKyAgICAgICYmIGgtPmR5bmluZHggPT0gLTEKKyAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQorICAgIHJldHVybiBUUlVFOworCisgIHN5bS5zdF92YWx1ZSA9IDA7CisgIHN5bS5zdF9zaXplID0gaC0+c2l6ZTsKKyAgc3ltLnN0X290aGVyID0gaC0+b3RoZXI7CisgIGlmICgoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgIT0gMCkKKyAgICBzeW0uc3RfaW5mbyA9IEVMRl9TVF9JTkZPIChTVEJfTE9DQUwsIGgtPnR5cGUpOworICBlbHNlIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWsKKwkgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKQorICAgIHN5bS5zdF9pbmZvID0gRUxGX1NUX0lORk8gKFNUQl9XRUFLLCBoLT50eXBlKTsKKyAgZWxzZQorICAgIHN5bS5zdF9pbmZvID0gRUxGX1NUX0lORk8gKFNUQl9HTE9CQUwsIGgtPnR5cGUpOworCisgIHN3aXRjaCAoaC0+cm9vdC50eXBlKQorICAgIHsKKyAgICBkZWZhdWx0OgorICAgIGNhc2UgYmZkX2xpbmtfaGFzaF9uZXc6CisgICAgY2FzZSBiZmRfbGlua19oYXNoX3dhcm5pbmc6CisgICAgICBhYm9ydCAoKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKworICAgIGNhc2UgYmZkX2xpbmtfaGFzaF91bmRlZmluZWQ6CisgICAgY2FzZSBiZmRfbGlua19oYXNoX3VuZGVmd2VhazoKKyAgICAgIGlucHV0X3NlYyA9IGJmZF91bmRfc2VjdGlvbl9wdHI7CisgICAgICBzeW0uc3Rfc2huZHggPSBTSE5fVU5ERUY7CisgICAgICBicmVhazsKKworICAgIGNhc2UgYmZkX2xpbmtfaGFzaF9kZWZpbmVkOgorICAgIGNhc2UgYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrOgorICAgICAgeworCWlucHV0X3NlYyA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKKwlpZiAoaW5wdXRfc2VjLT5vdXRwdXRfc2VjdGlvbiAhPSBOVUxMKQorCSAgeworCSAgICBzeW0uc3Rfc2huZHggPQorCSAgICAgIF9iZmRfZWxmX3NlY3Rpb25fZnJvbV9iZmRfc2VjdGlvbiAoZmluZm8tPm91dHB1dF9iZmQsCisJCQkJCQkgaW5wdXRfc2VjLT5vdXRwdXRfc2VjdGlvbik7CisJICAgIGlmIChzeW0uc3Rfc2huZHggPT0gU0hOX0JBRCkKKwkgICAgICB7CisJCSgqX2JmZF9lcnJvcl9oYW5kbGVyKQorCQkgIChfKCIlczogY291bGQgbm90IGZpbmQgb3V0cHV0IHNlY3Rpb24gJXMgZm9yIGlucHV0IHNlY3Rpb24gJXMiKSwKKwkJICAgYmZkX2dldF9maWxlbmFtZSAoZmluZm8tPm91dHB1dF9iZmQpLAorCQkgICBpbnB1dF9zZWMtPm91dHB1dF9zZWN0aW9uLT5uYW1lLAorCQkgICBpbnB1dF9zZWMtPm5hbWUpOworCQllb2luZm8tPmZhaWxlZCA9IFRSVUU7CisJCXJldHVybiBGQUxTRTsKKwkgICAgICB9CisKKwkgICAgLyogRUxGIHN5bWJvbHMgaW4gcmVsb2NhdGFibGUgZmlsZXMgYXJlIHNlY3Rpb24gcmVsYXRpdmUsCisJICAgICAgIGJ1dCBpbiBub25yZWxvY2F0YWJsZSBmaWxlcyB0aGV5IGFyZSB2aXJ0dWFsCisJICAgICAgIGFkZHJlc3Nlcy4gICovCisJICAgIHN5bS5zdF92YWx1ZSA9IGgtPnJvb3QudS5kZWYudmFsdWUgKyBpbnB1dF9zZWMtPm91dHB1dF9vZmZzZXQ7CisJICAgIGlmICghIGZpbmZvLT5pbmZvLT5yZWxvY2F0YWJsZSkKKwkgICAgICB7CisJCXN5bS5zdF92YWx1ZSArPSBpbnB1dF9zZWMtPm91dHB1dF9zZWN0aW9uLT52bWE7CisJCWlmIChoLT50eXBlID09IFNUVF9UTFMpCisJCSAgeworCQkgICAgLyogU1RUX1RMUyBzeW1ib2xzIGFyZSByZWxhdGl2ZSB0byBQVF9UTFMgc2VnbWVudAorCQkgICAgICAgYmFzZS4gICovCisJCSAgICBCRkRfQVNTRVJUIChlbGZfaGFzaF90YWJsZSAoZmluZm8tPmluZm8pLT50bHNfc2VjICE9IE5VTEwpOworCQkgICAgc3ltLnN0X3ZhbHVlIC09IGVsZl9oYXNoX3RhYmxlIChmaW5mby0+aW5mbyktPnRsc19zZWMtPnZtYTsKKwkJICB9CisJICAgICAgfQorCSAgfQorCWVsc2UKKwkgIHsKKwkgICAgQkZEX0FTU0VSVCAoaW5wdXRfc2VjLT5vd25lciA9PSBOVUxMCisJCQl8fCAoaW5wdXRfc2VjLT5vd25lci0+ZmxhZ3MgJiBEWU5BTUlDKSAhPSAwKTsKKwkgICAgc3ltLnN0X3NobmR4ID0gU0hOX1VOREVGOworCSAgICBpbnB1dF9zZWMgPSBiZmRfdW5kX3NlY3Rpb25fcHRyOworCSAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGJmZF9saW5rX2hhc2hfY29tbW9uOgorICAgICAgaW5wdXRfc2VjID0gaC0+cm9vdC51LmMucC0+c2VjdGlvbjsKKyAgICAgIHN5bS5zdF9zaG5keCA9IFNITl9DT01NT047CisgICAgICBzeW0uc3RfdmFsdWUgPSAxIDw8IGgtPnJvb3QudS5jLnAtPmFsaWdubWVudF9wb3dlcjsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBiZmRfbGlua19oYXNoX2luZGlyZWN0OgorICAgICAgLyogVGhlc2Ugc3ltYm9scyBhcmUgY3JlYXRlZCBieSBzeW1ib2wgdmVyc2lvbmluZy4gIFRoZXkgcG9pbnQKKwkgdG8gdGhlIGRlY29yYXRlZCB2ZXJzaW9uIG9mIHRoZSBuYW1lLiAgRm9yIGV4YW1wbGUsIGlmIHRoZQorCSBzeW1ib2wgZm9vQEBHTlVfMS4yIGlzIHRoZSBkZWZhdWx0LCB3aGljaCBzaG91bGQgYmUgdXNlZCB3aGVuCisJIGZvbyBpcyB1c2VkIHdpdGggbm8gdmVyc2lvbiwgdGhlbiB3ZSBhZGQgYW4gaW5kaXJlY3Qgc3ltYm9sCisJIGZvbyB3aGljaCBwb2ludHMgdG8gZm9vQEBHTlVfMS4yLiAgV2UgaWdub3JlIHRoZXNlIHN5bWJvbHMsCisJIHNpbmNlIHRoZSBpbmRpcmVjdGVkIHN5bWJvbCBpcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KKyAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAvKiBHaXZlIHRoZSBwcm9jZXNzb3IgYmFja2VuZCBhIGNoYW5jZSB0byB0d2VhayB0aGUgc3ltYm9sIHZhbHVlLAorICAgICBhbmQgYWxzbyB0byBmaW5pc2ggdXAgYW55dGhpbmcgdGhhdCBuZWVkcyB0byBiZSBkb25lIGZvciB0aGlzCisgICAgIHN5bWJvbC4gIEZJWE1FOiBOb3QgY2FsbGluZyBlbGZfYmFja2VuZF9maW5pc2hfZHluYW1pY19zeW1ib2wgZm9yCisgICAgIGZvcmNlZCBsb2NhbCBzeW1zIHdoZW4gbm9uLXNoYXJlZCBpcyBkdWUgdG8gYSBoaXN0b3JpY2FsIHF1aXJrLiAgKi8KKyAgaWYgKChoLT5keW5pbmR4ICE9IC0xCisgICAgICAgfHwgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpICE9IDApCisgICAgICAmJiAoKGZpbmZvLT5pbmZvLT5zaGFyZWQKKwkgICAmJiAoRUxGX1NUX1ZJU0lCSUxJVFkgKGgtPm90aGVyKSA9PSBTVFZfREVGQVVMVAorCSAgICAgICB8fCBoLT5yb290LnR5cGUgIT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspKQorCSAgfHwgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCisgICAgICAmJiBlbGZfaGFzaF90YWJsZSAoZmluZm8tPmluZm8pLT5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQpCisgICAgeworICAgICAgaWYgKCEgKCgqYmVkLT5lbGZfYmFja2VuZF9maW5pc2hfZHluYW1pY19zeW1ib2wpCisJICAgICAoZmluZm8tPm91dHB1dF9iZmQsIGZpbmZvLT5pbmZvLCBoLCAmc3ltKSkpCisJeworCSAgZW9pbmZvLT5mYWlsZWQgPSBUUlVFOworCSAgcmV0dXJuIEZBTFNFOworCX0KKyAgICB9CisKKyAgLyogSWYgd2UgYXJlIG1hcmtpbmcgdGhlIHN5bWJvbCBhcyB1bmRlZmluZWQsIGFuZCB0aGVyZSBhcmUgbm8KKyAgICAgbm9uLXdlYWsgcmVmZXJlbmNlcyB0byB0aGlzIHN5bWJvbCBmcm9tIGEgcmVndWxhciBvYmplY3QsIHRoZW4KKyAgICAgbWFyayB0aGUgc3ltYm9sIGFzIHdlYWsgdW5kZWZpbmVkOyBpZiB0aGVyZSBhcmUgbm9uLXdlYWsKKyAgICAgcmVmZXJlbmNlcywgbWFyayB0aGUgc3ltYm9sIGFzIHN0cm9uZy4gIFdlIGNhbid0IGRvIHRoaXMgZWFybGllciwKKyAgICAgYmVjYXVzZSBpdCBtaWdodCBub3QgYmUgbWFya2VkIGFzIHVuZGVmaW5lZCB1bnRpbCB0aGUKKyAgICAgZmluaXNoX2R5bmFtaWNfc3ltYm9sIHJvdXRpbmUgZ2V0cyB0aHJvdWdoIHdpdGggaXQuICAqLworICBpZiAoc3ltLnN0X3NobmR4ID09IFNITl9VTkRFRgorICAgICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX1JFRl9SRUdVTEFSKSAhPSAwCisgICAgICAmJiAoRUxGX1NUX0JJTkQgKHN5bS5zdF9pbmZvKSA9PSBTVEJfR0xPQkFMCisJICB8fCBFTEZfU1RfQklORCAoc3ltLnN0X2luZm8pID09IFNUQl9XRUFLKSkKKyAgICB7CisgICAgICBpbnQgYmluZHR5cGU7CisKKyAgICAgIGlmICgoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfUkVGX1JFR1VMQVJfTk9OV0VBSykgIT0gMCkKKwliaW5kdHlwZSA9IFNUQl9HTE9CQUw7CisgICAgICBlbHNlCisJYmluZHR5cGUgPSBTVEJfV0VBSzsKKyAgICAgIHN5bS5zdF9pbmZvID0gRUxGX1NUX0lORk8gKGJpbmR0eXBlLCBFTEZfU1RfVFlQRSAoc3ltLnN0X2luZm8pKTsKKyAgICB9CisKKyAgLyogSWYgYSBub24td2VhayBzeW1ib2wgd2l0aCBub24tZGVmYXVsdCB2aXNpYmlsaXR5IGlzIG5vdCBkZWZpbmVkCisgICAgIGxvY2FsbHksIGl0IGlzIGEgZmF0YWwgZXJyb3IuICAqLworICBpZiAoISBmaW5mby0+aW5mby0+cmVsb2NhdGFibGUKKyAgICAgICYmIEVMRl9TVF9WSVNJQklMSVRZIChzeW0uc3Rfb3RoZXIpICE9IFNUVl9ERUZBVUxUCisgICAgICAmJiBFTEZfU1RfQklORCAoc3ltLnN0X2luZm8pICE9IFNUQl9XRUFLCisgICAgICAmJiBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZmluZWQKKyAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfSEFTSF9ERUZfUkVHVUxBUikgPT0gMCkKKyAgICB7CisgICAgICAoKl9iZmRfZXJyb3JfaGFuZGxlcikKKwkoXygiJXM6ICVzIHN5bWJvbCBgJXMnIGlzbid0IGRlZmluZWQiKSwKKwkgIGJmZF9nZXRfZmlsZW5hbWUgKGZpbmZvLT5vdXRwdXRfYmZkKSwKKwkgIEVMRl9TVF9WSVNJQklMSVRZIChzeW0uc3Rfb3RoZXIpID09IFNUVl9QUk9URUNURUQKKwkgID8gInByb3RlY3RlZCIKKwkgIDogRUxGX1NUX1ZJU0lCSUxJVFkgKHN5bS5zdF9vdGhlcikgPT0gU1RWX0lOVEVSTkFMCisJICAgID8gImludGVybmFsIiA6ICJoaWRkZW4iLAorCSAgaC0+cm9vdC5yb290LnN0cmluZyk7CisgICAgICBlb2luZm8tPmZhaWxlZCA9IFRSVUU7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgIC8qIElmIHRoaXMgc3ltYm9sIHNob3VsZCBiZSBwdXQgaW4gdGhlIC5keW5zeW0gc2VjdGlvbiwgdGhlbiBwdXQgaXQKKyAgICAgdGhlcmUgbm93LiAgV2UgYWxyZWFkeSBrbm93IHRoZSBzeW1ib2wgaW5kZXguICBXZSBhbHNvIGZpbGwgaW4KKyAgICAgdGhlIGVudHJ5IGluIHRoZSAuaGFzaCBzZWN0aW9uLiAgKi8KKyAgaWYgKGgtPmR5bmluZHggIT0gLTEKKyAgICAgICYmIGVsZl9oYXNoX3RhYmxlIChmaW5mby0+aW5mbyktPmR5bmFtaWNfc2VjdGlvbnNfY3JlYXRlZCkKKyAgICB7CisgICAgICBzaXplX3QgYnVja2V0Y291bnQ7CisgICAgICBzaXplX3QgYnVja2V0OworICAgICAgc2l6ZV90IGhhc2hfZW50cnlfc2l6ZTsKKyAgICAgIGJmZF9ieXRlICpidWNrZXRwb3M7CisgICAgICBiZmRfdm1hIGNoYWluOworICAgICAgYmZkX2J5dGUgKmVzeW07CisKKyAgICAgIHN5bS5zdF9uYW1lID0gaC0+ZHluc3RyX2luZGV4OworICAgICAgZXN5bSA9IGZpbmZvLT5keW5zeW1fc2VjLT5jb250ZW50cyArIGgtPmR5bmluZHggKiBiZWQtPnMtPnNpemVvZl9zeW07CisgICAgICBiZWQtPnMtPnN3YXBfc3ltYm9sX291dCAoZmluZm8tPm91dHB1dF9iZmQsICZzeW0sIGVzeW0sIDApOworCisgICAgICBidWNrZXRjb3VudCA9IGVsZl9oYXNoX3RhYmxlIChmaW5mby0+aW5mbyktPmJ1Y2tldGNvdW50OworICAgICAgYnVja2V0ID0gaC0+ZWxmX2hhc2hfdmFsdWUgJSBidWNrZXRjb3VudDsKKyAgICAgIGhhc2hfZW50cnlfc2l6ZQorCT0gZWxmX3NlY3Rpb25fZGF0YSAoZmluZm8tPmhhc2hfc2VjKS0+dGhpc19oZHIuc2hfZW50c2l6ZTsKKyAgICAgIGJ1Y2tldHBvcyA9ICgoYmZkX2J5dGUgKikgZmluZm8tPmhhc2hfc2VjLT5jb250ZW50cworCQkgICArIChidWNrZXQgKyAyKSAqIGhhc2hfZW50cnlfc2l6ZSk7CisgICAgICBjaGFpbiA9IGJmZF9nZXQgKDggKiBoYXNoX2VudHJ5X3NpemUsIGZpbmZvLT5vdXRwdXRfYmZkLCBidWNrZXRwb3MpOworICAgICAgYmZkX3B1dCAoOCAqIGhhc2hfZW50cnlfc2l6ZSwgZmluZm8tPm91dHB1dF9iZmQsIGgtPmR5bmluZHgsIGJ1Y2tldHBvcyk7CisgICAgICBiZmRfcHV0ICg4ICogaGFzaF9lbnRyeV9zaXplLCBmaW5mby0+b3V0cHV0X2JmZCwgY2hhaW4sCisJICAgICAgICgoYmZkX2J5dGUgKikgZmluZm8tPmhhc2hfc2VjLT5jb250ZW50cworCQkrIChidWNrZXRjb3VudCArIDIgKyBoLT5keW5pbmR4KSAqIGhhc2hfZW50cnlfc2l6ZSkpOworCisgICAgICBpZiAoZmluZm8tPnN5bXZlcl9zZWMgIT0gTlVMTCAmJiBmaW5mby0+c3ltdmVyX3NlYy0+Y29udGVudHMgIT0gTlVMTCkKKwl7CisJICBFbGZfSW50ZXJuYWxfVmVyc3ltIGl2ZXJzeW07CisJICBFbGZfRXh0ZXJuYWxfVmVyc3ltICpldmVyc3ltOworCisJICBpZiAoKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX0RFRl9SRUdVTEFSKSA9PSAwKQorCSAgICB7CisJICAgICAgaWYgKGgtPnZlcmluZm8udmVyZGVmID09IE5VTEwpCisJCWl2ZXJzeW0udnNfdmVycyA9IDA7CisJICAgICAgZWxzZQorCQlpdmVyc3ltLnZzX3ZlcnMgPSBoLT52ZXJpbmZvLnZlcmRlZi0+dmRfZXhwX3JlZm5vICsgMTsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgaWYgKGgtPnZlcmluZm8udmVydHJlZSA9PSBOVUxMKQorCQlpdmVyc3ltLnZzX3ZlcnMgPSAxOworCSAgICAgIGVsc2UKKwkJaXZlcnN5bS52c192ZXJzID0gaC0+dmVyaW5mby52ZXJ0cmVlLT52ZXJudW0gKyAxOworCSAgICB9CisKKwkgIGlmICgoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hJRERFTikgIT0gMCkKKwkgICAgaXZlcnN5bS52c192ZXJzIHw9IFZFUlNZTV9ISURERU47CisKKwkgIGV2ZXJzeW0gPSAoRWxmX0V4dGVybmFsX1ZlcnN5bSAqKSBmaW5mby0+c3ltdmVyX3NlYy0+Y29udGVudHM7CisJICBldmVyc3ltICs9IGgtPmR5bmluZHg7CisJICBfYmZkX2VsZl9zd2FwX3ZlcnN5bV9vdXQgKGZpbmZvLT5vdXRwdXRfYmZkLCAmaXZlcnN5bSwgZXZlcnN5bSk7CisJfQorICAgIH0KKworICAvKiBJZiB3ZSdyZSBzdHJpcHBpbmcgaXQsIHRoZW4gaXQgd2FzIGp1c3QgYSBkeW5hbWljIHN5bWJvbCwgYW5kCisgICAgIHRoZXJlJ3Mgbm90aGluZyBlbHNlIHRvIGRvLiAgKi8KKyAgaWYgKHN0cmlwIHx8IChpbnB1dF9zZWMtPmZsYWdzICYgU0VDX0VYQ0xVREUpICE9IDApCisgICAgcmV0dXJuIFRSVUU7CisKKyAgaC0+aW5keCA9IGJmZF9nZXRfc3ltY291bnQgKGZpbmZvLT5vdXRwdXRfYmZkKTsKKworICBpZiAoISBlbGZfbGlua19vdXRwdXRfc3ltIChmaW5mbywgaC0+cm9vdC5yb290LnN0cmluZywgJnN5bSwgaW5wdXRfc2VjLCBoKSkKKyAgICB7CisgICAgICBlb2luZm8tPmZhaWxlZCA9IFRSVUU7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZl9zZWN0aW9uX2lnbm9yZV9kaXNjYXJkZWRfcmVsb2NzIChhc2VjdGlvbiAqc2VjKQoreworICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkOworCisgIHN3aXRjaCAoc2VjLT5zZWNfaW5mb190eXBlKQorICAgIHsKKyAgICBjYXNlIEVMRl9JTkZPX1RZUEVfU1RBQlM6CisgICAgY2FzZSBFTEZfSU5GT19UWVBFX0VIX0ZSQU1FOgorICAgICAgcmV0dXJuIFRSVUU7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICAgIH0KKworICBiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoc2VjLT5vd25lcik7CisgIGlmIChiZWQtPmVsZl9iYWNrZW5kX2lnbm9yZV9kaXNjYXJkZWRfcmVsb2NzICE9IE5VTEwKKyAgICAgICYmICgqYmVkLT5lbGZfYmFja2VuZF9pZ25vcmVfZGlzY2FyZGVkX3JlbG9jcykgKHNlYykpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgcmV0dXJuIEZBTFNFOworfQorCisvKiBMaW5rIGFuIGlucHV0IGZpbGUgaW50byB0aGUgbGlua2VyIG91dHB1dCBmaWxlLiAgVGhpcyBmdW5jdGlvbgorICAgaGFuZGxlcyBhbGwgdGhlIHNlY3Rpb25zIGFuZCByZWxvY2F0aW9ucyBvZiB0aGUgaW5wdXQgZmlsZSBhdCBvbmNlLgorICAgVGhpcyBpcyBzbyB0aGF0IHdlIG9ubHkgaGF2ZSB0byByZWFkIHRoZSBsb2NhbCBzeW1ib2xzIG9uY2UsIGFuZAorICAgZG9uJ3QgaGF2ZSB0byBrZWVwIHRoZW0gaW4gbWVtb3J5LiAgKi8KKworc3RhdGljIGJmZF9ib29sZWFuCitlbGZfbGlua19pbnB1dF9iZmQgKHN0cnVjdCBlbGZfZmluYWxfbGlua19pbmZvICpmaW5mbywgYmZkICppbnB1dF9iZmQpCit7CisgIGJmZF9ib29sZWFuICgqcmVsb2NhdGVfc2VjdGlvbikKKyAgICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGJmZCAqLCBhc2VjdGlvbiAqLCBiZmRfYnl0ZSAqLAorICAgICBFbGZfSW50ZXJuYWxfUmVsYSAqLCBFbGZfSW50ZXJuYWxfU3ltICosIGFzZWN0aW9uICoqKTsKKyAgYmZkICpvdXRwdXRfYmZkOworICBFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFiX2hkcjsKKyAgc2l6ZV90IGxvY3N5bWNvdW50OworICBzaXplX3QgZXh0c3ltb2ZmOworICBFbGZfSW50ZXJuYWxfU3ltICppc3ltYnVmOworICBFbGZfSW50ZXJuYWxfU3ltICppc3ltOworICBFbGZfSW50ZXJuYWxfU3ltICppc3ltZW5kOworICBsb25nICpwaW5kZXg7CisgIGFzZWN0aW9uICoqcHBzZWN0aW9uOworICBhc2VjdGlvbiAqbzsKKyAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKKyAgYmZkX2Jvb2xlYW4gZW1pdF9yZWxvY3M7CisgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqc3ltX2hhc2hlczsKKworICBvdXRwdXRfYmZkID0gZmluZm8tPm91dHB1dF9iZmQ7CisgIGJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChvdXRwdXRfYmZkKTsKKyAgcmVsb2NhdGVfc2VjdGlvbiA9IGJlZC0+ZWxmX2JhY2tlbmRfcmVsb2NhdGVfc2VjdGlvbjsKKworICAvKiBJZiB0aGlzIGlzIGEgZHluYW1pYyBvYmplY3QsIHdlIGRvbid0IHdhbnQgdG8gZG8gYW55dGhpbmcgaGVyZToKKyAgICAgd2UgZG9uJ3Qgd2FudCB0aGUgbG9jYWwgc3ltYm9scywgYW5kIHdlIGRvbid0IHdhbnQgdGhlIHNlY3Rpb24KKyAgICAgY29udGVudHMuICAqLworICBpZiAoKGlucHV0X2JmZC0+ZmxhZ3MgJiBEWU5BTUlDKSAhPSAwKQorICAgIHJldHVybiBUUlVFOworCisgIGVtaXRfcmVsb2NzID0gKGZpbmZvLT5pbmZvLT5yZWxvY2F0YWJsZQorCQkgfHwgZmluZm8tPmluZm8tPmVtaXRyZWxvY2F0aW9ucworCQkgfHwgYmVkLT5lbGZfYmFja2VuZF9lbWl0X3JlbG9jcyk7CisKKyAgc3ltdGFiX2hkciA9ICZlbGZfdGRhdGEgKGlucHV0X2JmZCktPnN5bXRhYl9oZHI7CisgIGlmIChlbGZfYmFkX3N5bXRhYiAoaW5wdXRfYmZkKSkKKyAgICB7CisgICAgICBsb2NzeW1jb3VudCA9IHN5bXRhYl9oZHItPnNoX3NpemUgLyBiZWQtPnMtPnNpemVvZl9zeW07CisgICAgICBleHRzeW1vZmYgPSAwOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGxvY3N5bWNvdW50ID0gc3ltdGFiX2hkci0+c2hfaW5mbzsKKyAgICAgIGV4dHN5bW9mZiA9IHN5bXRhYl9oZHItPnNoX2luZm87CisgICAgfQorCisgIC8qIFJlYWQgdGhlIGxvY2FsIHN5bWJvbHMuICAqLworICBpc3ltYnVmID0gKEVsZl9JbnRlcm5hbF9TeW0gKikgc3ltdGFiX2hkci0+Y29udGVudHM7CisgIGlmIChpc3ltYnVmID09IE5VTEwgJiYgbG9jc3ltY291bnQgIT0gMCkKKyAgICB7CisgICAgICBpc3ltYnVmID0gYmZkX2VsZl9nZXRfZWxmX3N5bXMgKGlucHV0X2JmZCwgc3ltdGFiX2hkciwgbG9jc3ltY291bnQsIDAsCisJCQkJICAgICAgZmluZm8tPmludGVybmFsX3N5bXMsCisJCQkJICAgICAgZmluZm8tPmV4dGVybmFsX3N5bXMsCisJCQkJICAgICAgZmluZm8tPmxvY3N5bV9zaG5keCk7CisgICAgICBpZiAoaXN5bWJ1ZiA9PSBOVUxMKQorCXJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgLyogRmluZCBsb2NhbCBzeW1ib2wgc2VjdGlvbnMgYW5kIGFkanVzdCB2YWx1ZXMgb2Ygc3ltYm9scyBpbgorICAgICBTRUNfTUVSR0Ugc2VjdGlvbnMuICBXcml0ZSBvdXQgdGhvc2UgbG9jYWwgc3ltYm9scyB3ZSBrbm93IGFyZQorICAgICBnb2luZyBpbnRvIHRoZSBvdXRwdXQgZmlsZS4gICovCisgIGlzeW1lbmQgPSBpc3ltYnVmICsgbG9jc3ltY291bnQ7CisgIGZvciAoaXN5bSA9IGlzeW1idWYsIHBpbmRleCA9IGZpbmZvLT5pbmRpY2VzLCBwcHNlY3Rpb24gPSBmaW5mby0+c2VjdGlvbnM7CisgICAgICAgaXN5bSA8IGlzeW1lbmQ7CisgICAgICAgaXN5bSsrLCBwaW5kZXgrKywgcHBzZWN0aW9uKyspCisgICAgeworICAgICAgYXNlY3Rpb24gKmlzZWM7CisgICAgICBjb25zdCBjaGFyICpuYW1lOworICAgICAgRWxmX0ludGVybmFsX1N5bSBvc3ltOworCisgICAgICAqcGluZGV4ID0gLTE7CisKKyAgICAgIGlmIChlbGZfYmFkX3N5bXRhYiAoaW5wdXRfYmZkKSkKKwl7CisJICBpZiAoRUxGX1NUX0JJTkQgKGlzeW0tPnN0X2luZm8pICE9IFNUQl9MT0NBTCkKKwkgICAgeworCSAgICAgICpwcHNlY3Rpb24gPSBOVUxMOworCSAgICAgIGNvbnRpbnVlOworCSAgICB9CisJfQorCisgICAgICBpZiAoaXN5bS0+c3Rfc2huZHggPT0gU0hOX1VOREVGKQorCWlzZWMgPSBiZmRfdW5kX3NlY3Rpb25fcHRyOworICAgICAgZWxzZSBpZiAoaXN5bS0+c3Rfc2huZHggPCBTSE5fTE9SRVNFUlZFCisJICAgICAgIHx8IGlzeW0tPnN0X3NobmR4ID4gU0hOX0hJUkVTRVJWRSkKKwl7CisJICBpc2VjID0gYmZkX3NlY3Rpb25fZnJvbV9lbGZfaW5kZXggKGlucHV0X2JmZCwgaXN5bS0+c3Rfc2huZHgpOworCSAgaWYgKGlzZWMKKwkgICAgICAmJiBpc2VjLT5zZWNfaW5mb190eXBlID09IEVMRl9JTkZPX1RZUEVfTUVSR0UKKwkgICAgICAmJiBFTEZfU1RfVFlQRSAoaXN5bS0+c3RfaW5mbykgIT0gU1RUX1NFQ1RJT04pCisJICAgIGlzeW0tPnN0X3ZhbHVlID0KKwkgICAgICBfYmZkX21lcmdlZF9zZWN0aW9uX29mZnNldCAob3V0cHV0X2JmZCwgJmlzZWMsCisJCQkJCSAgZWxmX3NlY3Rpb25fZGF0YSAoaXNlYyktPnNlY19pbmZvLAorCQkJCQkgIGlzeW0tPnN0X3ZhbHVlLCAwKTsKKwl9CisgICAgICBlbHNlIGlmIChpc3ltLT5zdF9zaG5keCA9PSBTSE5fQUJTKQorCWlzZWMgPSBiZmRfYWJzX3NlY3Rpb25fcHRyOworICAgICAgZWxzZSBpZiAoaXN5bS0+c3Rfc2huZHggPT0gU0hOX0NPTU1PTikKKwlpc2VjID0gYmZkX2NvbV9zZWN0aW9uX3B0cjsKKyAgICAgIGVsc2UKKwl7CisJICAvKiBXaG8ga25vd3M/ICAqLworCSAgaXNlYyA9IE5VTEw7CisJfQorCisgICAgICAqcHBzZWN0aW9uID0gaXNlYzsKKworICAgICAgLyogRG9uJ3Qgb3V0cHV0IHRoZSBmaXJzdCwgdW5kZWZpbmVkLCBzeW1ib2wuICAqLworICAgICAgaWYgKHBwc2VjdGlvbiA9PSBmaW5mby0+c2VjdGlvbnMpCisJY29udGludWU7CisKKyAgICAgIGlmIChFTEZfU1RfVFlQRSAoaXN5bS0+c3RfaW5mbykgPT0gU1RUX1NFQ1RJT04pCisJeworCSAgLyogV2UgbmV2ZXIgb3V0cHV0IHNlY3Rpb24gc3ltYm9scy4gIEluc3RlYWQsIHdlIHVzZSB0aGUKKwkgICAgIHNlY3Rpb24gc3ltYm9sIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNlY3Rpb24gaW4gdGhlIG91dHB1dAorCSAgICAgZmlsZS4gICovCisJICBjb250aW51ZTsKKwl9CisKKyAgICAgIC8qIElmIHdlIGFyZSBzdHJpcHBpbmcgYWxsIHN5bWJvbHMsIHdlIGRvbid0IHdhbnQgdG8gb3V0cHV0IHRoaXMKKwkgb25lLiAgKi8KKyAgICAgIGlmIChmaW5mby0+aW5mby0+c3RyaXAgPT0gc3RyaXBfYWxsKQorCWNvbnRpbnVlOworCisgICAgICAvKiBJZiB3ZSBhcmUgZGlzY2FyZGluZyBhbGwgbG9jYWwgc3ltYm9scywgd2UgZG9uJ3Qgd2FudCB0bworCSBvdXRwdXQgdGhpcyBvbmUuICBJZiB3ZSBhcmUgZ2VuZXJhdGluZyBhIHJlbG9jYXRhYmxlIG91dHB1dAorCSBmaWxlLCB0aGVuIHNvbWUgb2YgdGhlIGxvY2FsIHN5bWJvbHMgbWF5IGJlIHJlcXVpcmVkIGJ5CisJIHJlbG9jczsgd2Ugb3V0cHV0IHRoZW0gYmVsb3cgYXMgd2UgZGlzY292ZXIgdGhhdCB0aGV5IGFyZQorCSBuZWVkZWQuICAqLworICAgICAgaWYgKGZpbmZvLT5pbmZvLT5kaXNjYXJkID09IGRpc2NhcmRfYWxsKQorCWNvbnRpbnVlOworCisgICAgICAvKiBJZiB0aGlzIHN5bWJvbCBpcyBkZWZpbmVkIGluIGEgc2VjdGlvbiB3aGljaCB3ZSBhcmUKKwkgZGlzY2FyZGluZywgd2UgZG9uJ3QgbmVlZCB0byBrZWVwIGl0LCBidXQgbm90ZSB0aGF0CisJIGxpbmtlcl9tYXJrIGlzIG9ubHkgcmVsaWFibGUgZm9yIHNlY3Rpb25zIHRoYXQgaGF2ZSBjb250ZW50cy4KKwkgRm9yIHRoZSBiZW5lZml0IG9mIHRoZSBNSVBTIEVMRiBsaW5rZXIsIHdlIGNoZWNrIFNFQ19FWENMVURFCisJIGFzIHdlbGwgYXMgbGlua2VyX21hcmsuICAqLworICAgICAgaWYgKChpc3ltLT5zdF9zaG5keCA8IFNITl9MT1JFU0VSVkUgfHwgaXN5bS0+c3Rfc2huZHggPiBTSE5fSElSRVNFUlZFKQorCSAgJiYgaXNlYyAhPSBOVUxMCisJICAmJiAoKCEgaXNlYy0+bGlua2VyX21hcmsgJiYgKGlzZWMtPmZsYWdzICYgU0VDX0hBU19DT05URU5UUykgIT0gMCkKKwkgICAgICB8fCAoISBmaW5mby0+aW5mby0+cmVsb2NhdGFibGUKKwkJICAmJiAoaXNlYy0+ZmxhZ3MgJiBTRUNfRVhDTFVERSkgIT0gMCkpKQorCWNvbnRpbnVlOworCisgICAgICAvKiBHZXQgdGhlIG5hbWUgb2YgdGhlIHN5bWJvbC4gICovCisgICAgICBuYW1lID0gYmZkX2VsZl9zdHJpbmdfZnJvbV9lbGZfc2VjdGlvbiAoaW5wdXRfYmZkLCBzeW10YWJfaGRyLT5zaF9saW5rLAorCQkJCQkgICAgICBpc3ltLT5zdF9uYW1lKTsKKyAgICAgIGlmIChuYW1lID09IE5VTEwpCisJcmV0dXJuIEZBTFNFOworCisgICAgICAvKiBTZWUgaWYgd2UgYXJlIGRpc2NhcmRpbmcgc3ltYm9scyB3aXRoIHRoaXMgbmFtZS4gICovCisgICAgICBpZiAoKGZpbmZvLT5pbmZvLT5zdHJpcCA9PSBzdHJpcF9zb21lCisJICAgJiYgKGJmZF9oYXNoX2xvb2t1cCAoZmluZm8tPmluZm8tPmtlZXBfaGFzaCwgbmFtZSwgRkFMU0UsIEZBTFNFKQorCSAgICAgICA9PSBOVUxMKSkKKwkgIHx8ICgoKGZpbmZvLT5pbmZvLT5kaXNjYXJkID09IGRpc2NhcmRfc2VjX21lcmdlCisJCSYmIChpc2VjLT5mbGFncyAmIFNFQ19NRVJHRSkgJiYgISBmaW5mby0+aW5mby0+cmVsb2NhdGFibGUpCisJICAgICAgIHx8IGZpbmZvLT5pbmZvLT5kaXNjYXJkID09IGRpc2NhcmRfbCkKKwkgICAgICAmJiBiZmRfaXNfbG9jYWxfbGFiZWxfbmFtZSAoaW5wdXRfYmZkLCBuYW1lKSkpCisJY29udGludWU7CisKKyAgICAgIC8qIElmIHdlIGdldCBoZXJlLCB3ZSBhcmUgZ29pbmcgdG8gb3V0cHV0IHRoaXMgc3ltYm9sLiAgKi8KKworICAgICAgb3N5bSA9ICppc3ltOworCisgICAgICAvKiBBZGp1c3QgdGhlIHNlY3Rpb24gaW5kZXggZm9yIHRoZSBvdXRwdXQgZmlsZS4gICovCisgICAgICBvc3ltLnN0X3NobmR4ID0gX2JmZF9lbGZfc2VjdGlvbl9mcm9tX2JmZF9zZWN0aW9uIChvdXRwdXRfYmZkLAorCQkJCQkJCSBpc2VjLT5vdXRwdXRfc2VjdGlvbik7CisgICAgICBpZiAob3N5bS5zdF9zaG5keCA9PSBTSE5fQkFEKQorCXJldHVybiBGQUxTRTsKKworICAgICAgKnBpbmRleCA9IGJmZF9nZXRfc3ltY291bnQgKG91dHB1dF9iZmQpOworCisgICAgICAvKiBFTEYgc3ltYm9scyBpbiByZWxvY2F0YWJsZSBmaWxlcyBhcmUgc2VjdGlvbiByZWxhdGl2ZSwgYnV0CisJIGluIGV4ZWN1dGFibGUgZmlsZXMgdGhleSBhcmUgdmlydHVhbCBhZGRyZXNzZXMuICBOb3RlIHRoYXQKKwkgdGhpcyBjb2RlIGFzc3VtZXMgdGhhdCBhbGwgRUxGIHNlY3Rpb25zIGhhdmUgYW4gYXNzb2NpYXRlZAorCSBCRkQgc2VjdGlvbiB3aXRoIGEgcmVhc29uYWJsZSB2YWx1ZSBmb3Igb3V0cHV0X29mZnNldDsgYmVsb3cKKwkgd2UgYXNzdW1lIHRoYXQgdGhleSBhbHNvIGhhdmUgYSByZWFzb25hYmxlIHZhbHVlIGZvcgorCSBvdXRwdXRfc2VjdGlvbi4gIEFueSBzcGVjaWFsIHNlY3Rpb25zIG11c3QgYmUgc2V0IHVwIHRvIG1lZXQKKwkgdGhlc2UgcmVxdWlyZW1lbnRzLiAgKi8KKyAgICAgIG9zeW0uc3RfdmFsdWUgKz0gaXNlYy0+b3V0cHV0X29mZnNldDsKKyAgICAgIGlmICghIGZpbmZvLT5pbmZvLT5yZWxvY2F0YWJsZSkKKwl7CisJICBvc3ltLnN0X3ZhbHVlICs9IGlzZWMtPm91dHB1dF9zZWN0aW9uLT52bWE7CisJICBpZiAoRUxGX1NUX1RZUEUgKG9zeW0uc3RfaW5mbykgPT0gU1RUX1RMUykKKwkgICAgeworCSAgICAgIC8qIFNUVF9UTFMgc3ltYm9scyBhcmUgcmVsYXRpdmUgdG8gUFRfVExTIHNlZ21lbnQgYmFzZS4gICovCisJICAgICAgQkZEX0FTU0VSVCAoZWxmX2hhc2hfdGFibGUgKGZpbmZvLT5pbmZvKS0+dGxzX3NlYyAhPSBOVUxMKTsKKwkgICAgICBvc3ltLnN0X3ZhbHVlIC09IGVsZl9oYXNoX3RhYmxlIChmaW5mby0+aW5mbyktPnRsc19zZWMtPnZtYTsKKwkgICAgfQorCX0KKworICAgICAgaWYgKCEgZWxmX2xpbmtfb3V0cHV0X3N5bSAoZmluZm8sIG5hbWUsICZvc3ltLCBpc2VjLCBOVUxMKSkKKwlyZXR1cm4gRkFMU0U7CisgICAgfQorCisgIC8qIFJlbG9jYXRlIHRoZSBjb250ZW50cyBvZiBlYWNoIHNlY3Rpb24uICAqLworICBzeW1faGFzaGVzID0gZWxmX3N5bV9oYXNoZXMgKGlucHV0X2JmZCk7CisgIGZvciAobyA9IGlucHV0X2JmZC0+c2VjdGlvbnM7IG8gIT0gTlVMTDsgbyA9IG8tPm5leHQpCisgICAgeworICAgICAgYmZkX2J5dGUgKmNvbnRlbnRzOworCisgICAgICBpZiAoISBvLT5saW5rZXJfbWFyaykKKwl7CisJICAvKiBUaGlzIHNlY3Rpb24gd2FzIG9taXR0ZWQgZnJvbSB0aGUgbGluay4gICovCisJICBjb250aW51ZTsKKwl9CisKKyAgICAgIGlmICgoby0+ZmxhZ3MgJiBTRUNfSEFTX0NPTlRFTlRTKSA9PSAwCisJICB8fCAoby0+X3Jhd19zaXplID09IDAgJiYgKG8tPmZsYWdzICYgU0VDX1JFTE9DKSA9PSAwKSkKKwljb250aW51ZTsKKworICAgICAgaWYgKChvLT5mbGFncyAmIFNFQ19MSU5LRVJfQ1JFQVRFRCkgIT0gMCkKKwl7CisJICAvKiBTZWN0aW9uIHdhcyBjcmVhdGVkIGJ5IF9iZmRfZWxmX2xpbmtfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMKKwkgICAgIG9yIHNvbWVzdWNoLiAgKi8KKwkgIGNvbnRpbnVlOworCX0KKworICAgICAgLyogR2V0IHRoZSBjb250ZW50cyBvZiB0aGUgc2VjdGlvbi4gIFRoZXkgaGF2ZSBiZWVuIGNhY2hlZCBieSBhCisJIHJlbGF4YXRpb24gcm91dGluZS4gIE5vdGUgdGhhdCBvIGlzIGEgc2VjdGlvbiBpbiBhbiBpbnB1dAorCSBmaWxlLCBzbyB0aGUgY29udGVudHMgZmllbGQgd2lsbCBub3QgaGF2ZSBiZWVuIHNldCBieSBhbnkgb2YKKwkgdGhlIHJvdXRpbmVzIHdoaWNoIHdvcmsgb24gb3V0cHV0IGZpbGVzLiAgKi8KKyAgICAgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChvKS0+dGhpc19oZHIuY29udGVudHMgIT0gTlVMTCkKKwljb250ZW50cyA9IGVsZl9zZWN0aW9uX2RhdGEgKG8pLT50aGlzX2hkci5jb250ZW50czsKKyAgICAgIGVsc2UKKwl7CisJICBjb250ZW50cyA9IGZpbmZvLT5jb250ZW50czsKKwkgIGlmICghIGJmZF9nZXRfc2VjdGlvbl9jb250ZW50cyAoaW5wdXRfYmZkLCBvLCBjb250ZW50cywgMCwKKwkJCQkJICBvLT5fcmF3X3NpemUpKQorCSAgICByZXR1cm4gRkFMU0U7CisJfQorCisgICAgICBpZiAoKG8tPmZsYWdzICYgU0VDX1JFTE9DKSAhPSAwKQorCXsKKwkgIEVsZl9JbnRlcm5hbF9SZWxhICppbnRlcm5hbF9yZWxvY3M7CisJICBiZmRfdm1hIHJfdHlwZV9tYXNrOworCSAgaW50IHJfc3ltX3NoaWZ0OworCisJICAvKiBHZXQgdGhlIHN3YXBwZWQgcmVsb2NzLiAgKi8KKwkgIGludGVybmFsX3JlbG9jcworCSAgICA9IF9iZmRfZWxmX2xpbmtfcmVhZF9yZWxvY3MgKGlucHV0X2JmZCwgbywgZmluZm8tPmV4dGVybmFsX3JlbG9jcywKKwkJCQkJIGZpbmZvLT5pbnRlcm5hbF9yZWxvY3MsIEZBTFNFKTsKKwkgIGlmIChpbnRlcm5hbF9yZWxvY3MgPT0gTlVMTAorCSAgICAgICYmIG8tPnJlbG9jX2NvdW50ID4gMCkKKwkgICAgcmV0dXJuIEZBTFNFOworCisJICBpZiAoYmVkLT5zLT5hcmNoX3NpemUgPT0gMzIpCisJICAgIHsKKwkgICAgICByX3R5cGVfbWFzayA9IDB4ZmY7CisJICAgICAgcl9zeW1fc2hpZnQgPSA4OworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICByX3R5cGVfbWFzayA9IDB4ZmZmZmZmZmY7CisJICAgICAgcl9zeW1fc2hpZnQgPSAzMjsKKwkgICAgfQorCisJICAvKiBSdW4gdGhyb3VnaCB0aGUgcmVsb2NzIGxvb2tpbmcgZm9yIGFueSBhZ2FpbnN0IHN5bWJvbHMKKwkgICAgIGZyb20gZGlzY2FyZGVkIHNlY3Rpb25zIGFuZCBzZWN0aW9uIHN5bWJvbHMgZnJvbQorCSAgICAgcmVtb3ZlZCBsaW5rLW9uY2Ugc2VjdGlvbnMuICBDb21wbGFpbiBhYm91dCByZWxvY3MKKwkgICAgIGFnYWluc3QgZGlzY2FyZGVkIHNlY3Rpb25zLiAgWmVybyByZWxvY3MgYWdhaW5zdCByZW1vdmVkCisJICAgICBsaW5rLW9uY2Ugc2VjdGlvbnMuICBQcmVzZXJ2ZSBkZWJ1ZyBpbmZvcm1hdGlvbiBhcyBtdWNoCisJICAgICBhcyB3ZSBjYW4uICAqLworCSAgaWYgKCFlbGZfc2VjdGlvbl9pZ25vcmVfZGlzY2FyZGVkX3JlbG9jcyAobykpCisJICAgIHsKKwkgICAgICBFbGZfSW50ZXJuYWxfUmVsYSAqcmVsLCAqcmVsZW5kOworCisJICAgICAgcmVsID0gaW50ZXJuYWxfcmVsb2NzOworCSAgICAgIHJlbGVuZCA9IHJlbCArIG8tPnJlbG9jX2NvdW50ICogYmVkLT5zLT5pbnRfcmVsc19wZXJfZXh0X3JlbDsKKwkgICAgICBmb3IgKCA7IHJlbCA8IHJlbGVuZDsgcmVsKyspCisJCXsKKwkJICB1bnNpZ25lZCBsb25nIHJfc3ltbmR4ID0gcmVsLT5yX2luZm8gPj4gcl9zeW1fc2hpZnQ7CisJCSAgYXNlY3Rpb24gKnNlYzsKKworCQkgIGlmIChyX3N5bW5keCA+PSBsb2NzeW1jb3VudAorCQkgICAgICB8fCAoZWxmX2JhZF9zeW10YWIgKGlucHV0X2JmZCkKKwkJCSAgJiYgZmluZm8tPnNlY3Rpb25zW3Jfc3ltbmR4XSA9PSBOVUxMKSkKKwkJICAgIHsKKwkJICAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmg7CisKKwkJICAgICAgaCA9IHN5bV9oYXNoZXNbcl9zeW1uZHggLSBleHRzeW1vZmZdOworCQkgICAgICB3aGlsZSAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKKwkJCSAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfd2FybmluZykKKwkJCWggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKKworCQkgICAgICAvKiBDb21wbGFpbiBpZiB0aGUgZGVmaW5pdGlvbiBjb21lcyBmcm9tIGEKKwkJCSBkaXNjYXJkZWQgc2VjdGlvbi4gICovCisJCSAgICAgIHNlYyA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKKwkJICAgICAgaWYgKChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCisJCQkgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKQorCQkJICAmJiBlbGZfZGlzY2FyZGVkX3NlY3Rpb24gKHNlYykpCisJCQl7CisJCQkgIGlmICgoby0+ZmxhZ3MgJiBTRUNfREVCVUdHSU5HKSAhPSAwKQorCQkJICAgIHsKKwkJCSAgICAgIEJGRF9BU1NFUlQgKHJfc3ltbmR4ICE9IDApOworCQkJICAgICAgLyogVHJ5IHRvIHByZXNlcnZlIGRlYnVnIGluZm9ybWF0aW9uLiAgKi8KKwkJCSAgICAgIGlmICgoby0+ZmxhZ3MgJiBTRUNfREVCVUdHSU5HKSAhPSAwCisJCQkJICAmJiBzZWMtPmtlcHRfc2VjdGlvbiAhPSBOVUxMCisJCQkJICAmJiBzZWMtPl9yYXdfc2l6ZSA9PSBzZWMtPmtlcHRfc2VjdGlvbi0+X3Jhd19zaXplKQorCQkJCWgtPnJvb3QudS5kZWYuc2VjdGlvbgorCQkJCSAgPSBzZWMtPmtlcHRfc2VjdGlvbjsKKwkJCSAgICAgIGVsc2UKKwkJCQltZW1zZXQgKHJlbCwgMCwgc2l6ZW9mICgqcmVsKSk7CisJCQkgICAgfQorCQkJICBlbHNlCisJCQkgICAgZmluZm8tPmluZm8tPmNhbGxiYWNrcy0+ZXJyb3JfaGFuZGxlcgorCQkJICAgICAgKExEX0RFRklOSVRJT05fSU5fRElTQ0FSREVEX1NFQ1RJT04sCisJCQkgICAgICAgXygiJVQ6IGRpc2NhcmRlZCBpbiBzZWN0aW9uIGAlcycgZnJvbSAlc1xuIiksCisJCQkgICAgICAgaC0+cm9vdC5yb290LnN0cmluZywKKwkJCSAgICAgICBoLT5yb290LnJvb3Quc3RyaW5nLAorCQkJICAgICAgIGgtPnJvb3QudS5kZWYuc2VjdGlvbi0+bmFtZSwKKwkJCSAgICAgICBiZmRfYXJjaGl2ZV9maWxlbmFtZSAoaC0+cm9vdC51LmRlZi5zZWN0aW9uLT5vd25lcikpOworCQkJfQorCQkgICAgfQorCQkgIGVsc2UKKwkJICAgIHsKKwkJICAgICAgc2VjID0gZmluZm8tPnNlY3Rpb25zW3Jfc3ltbmR4XTsKKworCQkgICAgICBpZiAoc2VjICE9IE5VTEwgJiYgZWxmX2Rpc2NhcmRlZF9zZWN0aW9uIChzZWMpKQorCQkJeworCQkJICBpZiAoKG8tPmZsYWdzICYgU0VDX0RFQlVHR0lORykgIT0gMAorCQkJICAgICAgfHwgKHNlYy0+ZmxhZ3MgJiBTRUNfTElOS19PTkNFKSAhPSAwKQorCQkJICAgIHsKKwkJCSAgICAgIEJGRF9BU1NFUlQgKHJfc3ltbmR4ICE9IDApOworCQkJICAgICAgLyogVHJ5IHRvIHByZXNlcnZlIGRlYnVnIGluZm9ybWF0aW9uLiAgKi8KKwkJCSAgICAgIGlmICgoby0+ZmxhZ3MgJiBTRUNfREVCVUdHSU5HKSAhPSAwCisJCQkJICAmJiBzZWMtPmtlcHRfc2VjdGlvbiAhPSBOVUxMCisJCQkJICAmJiBzZWMtPl9yYXdfc2l6ZSA9PSBzZWMtPmtlcHRfc2VjdGlvbi0+X3Jhd19zaXplKQorCQkJCWZpbmZvLT5zZWN0aW9uc1tyX3N5bW5keF0KKwkJCQkgID0gc2VjLT5rZXB0X3NlY3Rpb247CisJCQkgICAgICBlbHNlCisJCQkJeworCQkJCSAgcmVsLT5yX2luZm8gJj0gcl90eXBlX21hc2s7CisJCQkJICByZWwtPnJfYWRkZW5kID0gMDsKKwkJCQl9CisJCQkgICAgfQorCQkJICBlbHNlCisJCQkgICAgeworCQkJICAgICAgc3RhdGljIGludCBjb3VudDsKKwkJCSAgICAgIGludCBvazsKKwkJCSAgICAgIGNoYXIgKmJ1ZjsKKworCQkJICAgICAgb2sgPSBhc3ByaW50ZiAoJmJ1ZiwgImxvY2FsIHN5bWJvbCAlZCIsCisJCQkJCSAgICAgY291bnQrKyk7CisJCQkgICAgICBpZiAob2sgPD0gMCkKKwkJCQlidWYgPSAoY2hhciAqKSAibG9jYWwgc3ltYm9sIjsKKwkJCSAgICAgIGZpbmZvLT5pbmZvLT5jYWxsYmFja3MtPmVycm9yX2hhbmRsZXIKKwkJCQkoTERfREVGSU5JVElPTl9JTl9ESVNDQVJERURfU0VDVElPTiwKKwkJCQkgXygiJVQ6IGRpc2NhcmRlZCBpbiBzZWN0aW9uIGAlcycgZnJvbSAlc1xuIiksCisJCQkJIGJ1ZiwgYnVmLCBzZWMtPm5hbWUsCisJCQkJIGJmZF9hcmNoaXZlX2ZpbGVuYW1lIChpbnB1dF9iZmQpKTsKKwkJCSAgICAgIGlmIChvayAhPSAtMSkKKwkJCQlmcmVlIChidWYpOworCQkJICAgIH0KKwkJCX0KKwkJICAgIH0KKwkJfQorCSAgICB9CisKKwkgIC8qIFJlbG9jYXRlIHRoZSBzZWN0aW9uIGJ5IGludm9raW5nIGEgYmFjayBlbmQgcm91dGluZS4KKworCSAgICAgVGhlIGJhY2sgZW5kIHJvdXRpbmUgaXMgcmVzcG9uc2libGUgZm9yIGFkanVzdGluZyB0aGUKKwkgICAgIHNlY3Rpb24gY29udGVudHMgYXMgbmVjZXNzYXJ5LCBhbmQgKGlmIHVzaW5nIFJlbGEgcmVsb2NzCisJICAgICBhbmQgZ2VuZXJhdGluZyBhIHJlbG9jYXRhYmxlIG91dHB1dCBmaWxlKSBhZGp1c3RpbmcgdGhlCisJICAgICByZWxvYyBhZGRlbmQgYXMgbmVjZXNzYXJ5LgorCisJICAgICBUaGUgYmFjayBlbmQgcm91dGluZSBkb2VzIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IHNldHRpbmcKKwkgICAgIHRoZSByZWxvYyBhZGRyZXNzIG9yIHRoZSByZWxvYyBzeW1ib2wgaW5kZXguCisKKwkgICAgIFRoZSBiYWNrIGVuZCByb3V0aW5lIGlzIGdpdmVuIGEgcG9pbnRlciB0byB0aGUgc3dhcHBlZCBpbgorCSAgICAgaW50ZXJuYWwgc3ltYm9scywgYW5kIGNhbiBhY2Nlc3MgdGhlIGhhc2ggdGFibGUgZW50cmllcworCSAgICAgZm9yIHRoZSBleHRlcm5hbCBzeW1ib2xzIHZpYSBlbGZfc3ltX2hhc2hlcyAoaW5wdXRfYmZkKS4KKworCSAgICAgV2hlbiBnZW5lcmF0aW5nIHJlbG9jYXRhYmxlIG91dHB1dCwgdGhlIGJhY2sgZW5kIHJvdXRpbmUKKwkgICAgIG11c3QgaGFuZGxlIFNUQl9MT0NBTC9TVFRfU0VDVElPTiBzeW1ib2xzIHNwZWNpYWxseS4gIFRoZQorCSAgICAgb3V0cHV0IHN5bWJvbCBpcyBnb2luZyB0byBiZSBhIHNlY3Rpb24gc3ltYm9sCisJICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBvdXRwdXQgc2VjdGlvbiwgd2hpY2ggd2lsbCByZXF1aXJlCisJICAgICB0aGUgYWRkZW5kIHRvIGJlIGFkanVzdGVkLiAgKi8KKworCSAgaWYgKCEgKCpyZWxvY2F0ZV9zZWN0aW9uKSAob3V0cHV0X2JmZCwgZmluZm8tPmluZm8sCisJCQkJICAgICBpbnB1dF9iZmQsIG8sIGNvbnRlbnRzLAorCQkJCSAgICAgaW50ZXJuYWxfcmVsb2NzLAorCQkJCSAgICAgaXN5bWJ1ZiwKKwkJCQkgICAgIGZpbmZvLT5zZWN0aW9ucykpCisJICAgIHJldHVybiBGQUxTRTsKKworCSAgaWYgKGVtaXRfcmVsb2NzKQorCSAgICB7CisJICAgICAgRWxmX0ludGVybmFsX1JlbGEgKmlyZWxhOworCSAgICAgIEVsZl9JbnRlcm5hbF9SZWxhICppcmVsYWVuZDsKKwkgICAgICBiZmRfdm1hIGxhc3Rfb2Zmc2V0OworCSAgICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqcmVsX2hhc2g7CisJICAgICAgRWxmX0ludGVybmFsX1NoZHIgKmlucHV0X3JlbF9oZHIsICppbnB1dF9yZWxfaGRyMjsKKwkgICAgICB1bnNpZ25lZCBpbnQgbmV4dF9lcmVsOworCSAgICAgIGJmZF9ib29sZWFuICgqcmVsb2NfZW1pdHRlcikKKwkJKGJmZCAqLCBhc2VjdGlvbiAqLCBFbGZfSW50ZXJuYWxfU2hkciAqLCBFbGZfSW50ZXJuYWxfUmVsYSAqKTsKKwkgICAgICBiZmRfYm9vbGVhbiByZWxhX25vcm1hbDsKKworCSAgICAgIGlucHV0X3JlbF9oZHIgPSAmZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9oZHI7CisJICAgICAgcmVsYV9ub3JtYWwgPSAoYmVkLT5yZWxhX25vcm1hbAorCQkJICAgICAmJiAoaW5wdXRfcmVsX2hkci0+c2hfZW50c2l6ZQorCQkJCSA9PSBiZWQtPnMtPnNpemVvZl9yZWxhKSk7CisKKwkgICAgICAvKiBBZGp1c3QgdGhlIHJlbG9jIGFkZHJlc3NlcyBhbmQgc3ltYm9sIGluZGljZXMuICAqLworCisJICAgICAgaXJlbGEgPSBpbnRlcm5hbF9yZWxvY3M7CisJICAgICAgaXJlbGFlbmQgPSBpcmVsYSArIG8tPnJlbG9jX2NvdW50ICogYmVkLT5zLT5pbnRfcmVsc19wZXJfZXh0X3JlbDsKKwkgICAgICByZWxfaGFzaCA9IChlbGZfc2VjdGlvbl9kYXRhIChvLT5vdXRwdXRfc2VjdGlvbiktPnJlbF9oYXNoZXMKKwkJCSAgKyBlbGZfc2VjdGlvbl9kYXRhIChvLT5vdXRwdXRfc2VjdGlvbiktPnJlbF9jb3VudAorCQkJICArIGVsZl9zZWN0aW9uX2RhdGEgKG8tPm91dHB1dF9zZWN0aW9uKS0+cmVsX2NvdW50Mik7CisJICAgICAgbGFzdF9vZmZzZXQgPSBvLT5vdXRwdXRfb2Zmc2V0OworCSAgICAgIGlmICghZmluZm8tPmluZm8tPnJlbG9jYXRhYmxlKQorCQlsYXN0X29mZnNldCArPSBvLT5vdXRwdXRfc2VjdGlvbi0+dm1hOworCSAgICAgIGZvciAobmV4dF9lcmVsID0gMDsgaXJlbGEgPCBpcmVsYWVuZDsgaXJlbGErKywgbmV4dF9lcmVsKyspCisJCXsKKwkJICB1bnNpZ25lZCBsb25nIHJfc3ltbmR4OworCQkgIGFzZWN0aW9uICpzZWM7CisJCSAgRWxmX0ludGVybmFsX1N5bSBzeW07CisKKwkJICBpZiAobmV4dF9lcmVsID09IGJlZC0+cy0+aW50X3JlbHNfcGVyX2V4dF9yZWwpCisJCSAgICB7CisJCSAgICAgIHJlbF9oYXNoKys7CisJCSAgICAgIG5leHRfZXJlbCA9IDA7CisJCSAgICB9CisKKwkJICBpcmVsYS0+cl9vZmZzZXQgPSBfYmZkX2VsZl9zZWN0aW9uX29mZnNldCAob3V0cHV0X2JmZCwKKwkJCQkJCQkgICAgIGZpbmZvLT5pbmZvLCBvLAorCQkJCQkJCSAgICAgaXJlbGEtPnJfb2Zmc2V0KTsKKwkJICBpZiAoaXJlbGEtPnJfb2Zmc2V0ID49IChiZmRfdm1hKSAtMikKKwkJICAgIHsKKwkJICAgICAgLyogVGhpcyBpcyBhIHJlbG9jIGZvciBhIGRlbGV0ZWQgZW50cnkgb3Igc29tZXN1Y2guCisJCQkgVHVybiBpdCBpbnRvIGFuIFJfKl9OT05FIHJlbG9jLCBhdCB0aGUgc2FtZQorCQkJIG9mZnNldCBhcyB0aGUgbGFzdCByZWxvYy4gIGVsZl9laF9mcmFtZS5jIGFuZAorCQkJIGVsZl9iZmRfZGlzY2FyZF9pbmZvIHJlbHkgb24gcmVsb2Mgb2Zmc2V0cworCQkJIGJlaW5nIG9yZGVyZWQuICAqLworCQkgICAgICBpcmVsYS0+cl9vZmZzZXQgPSBsYXN0X29mZnNldDsKKwkJICAgICAgaXJlbGEtPnJfaW5mbyA9IDA7CisJCSAgICAgIGlyZWxhLT5yX2FkZGVuZCA9IDA7CisJCSAgICAgIGNvbnRpbnVlOworCQkgICAgfQorCisJCSAgaXJlbGEtPnJfb2Zmc2V0ICs9IG8tPm91dHB1dF9vZmZzZXQ7CisKKwkJICAvKiBSZWxvY3MgaW4gYW4gZXhlY3V0YWJsZSBoYXZlIHRvIGJlIHZpcnR1YWwgYWRkcmVzc2VzLiAgKi8KKwkJICBpZiAoIWZpbmZvLT5pbmZvLT5yZWxvY2F0YWJsZSkKKwkJICAgIGlyZWxhLT5yX29mZnNldCArPSBvLT5vdXRwdXRfc2VjdGlvbi0+dm1hOworCisJCSAgbGFzdF9vZmZzZXQgPSBpcmVsYS0+cl9vZmZzZXQ7CisKKwkJICByX3N5bW5keCA9IGlyZWxhLT5yX2luZm8gPj4gcl9zeW1fc2hpZnQ7CisJCSAgaWYgKHJfc3ltbmR4ID09IFNUTl9VTkRFRikKKwkJICAgIGNvbnRpbnVlOworCisJCSAgaWYgKHJfc3ltbmR4ID49IGxvY3N5bWNvdW50CisJCSAgICAgIHx8IChlbGZfYmFkX3N5bXRhYiAoaW5wdXRfYmZkKQorCQkJICAmJiBmaW5mby0+c2VjdGlvbnNbcl9zeW1uZHhdID09IE5VTEwpKQorCQkgICAgeworCQkgICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqcmg7CisJCSAgICAgIHVuc2lnbmVkIGxvbmcgaW5keDsKKworCQkgICAgICAvKiBUaGlzIGlzIGEgcmVsb2MgYWdhaW5zdCBhIGdsb2JhbCBzeW1ib2wuICBXZQorCQkJIGhhdmUgbm90IHlldCBvdXRwdXQgYWxsIHRoZSBsb2NhbCBzeW1ib2xzLCBzbworCQkJIHdlIGRvIG5vdCBrbm93IHRoZSBzeW1ib2wgaW5kZXggb2YgYW55IGdsb2JhbAorCQkJIHN5bWJvbC4gIFdlIHNldCB0aGUgcmVsX2hhc2ggZW50cnkgZm9yIHRoaXMKKwkJCSByZWxvYyB0byBwb2ludCB0byB0aGUgZ2xvYmFsIGhhc2ggdGFibGUgZW50cnkKKwkJCSBmb3IgdGhpcyBzeW1ib2wuICBUaGUgc3ltYm9sIGluZGV4IGlzIHRoZW4KKwkJCSBzZXQgYXQgdGhlIGVuZCBvZiBlbGZfYmZkX2ZpbmFsX2xpbmsuICAqLworCQkgICAgICBpbmR4ID0gcl9zeW1uZHggLSBleHRzeW1vZmY7CisJCSAgICAgIHJoID0gZWxmX3N5bV9oYXNoZXMgKGlucHV0X2JmZClbaW5keF07CisJCSAgICAgIHdoaWxlIChyaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKKwkJCSAgICAgfHwgcmgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCisJCQlyaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSByaC0+cm9vdC51LmkubGluazsKKworCQkgICAgICAvKiBTZXR0aW5nIHRoZSBpbmRleCB0byAtMiB0ZWxscworCQkJIGVsZl9saW5rX291dHB1dF9leHRzeW0gdGhhdCB0aGlzIHN5bWJvbCBpcworCQkJIHVzZWQgYnkgYSByZWxvYy4gICovCisJCSAgICAgIEJGRF9BU1NFUlQgKHJoLT5pbmR4IDwgMCk7CisJCSAgICAgIHJoLT5pbmR4ID0gLTI7CisKKwkJICAgICAgKnJlbF9oYXNoID0gcmg7CisKKwkJICAgICAgY29udGludWU7CisJCSAgICB9CisKKwkJICAvKiBUaGlzIGlzIGEgcmVsb2MgYWdhaW5zdCBhIGxvY2FsIHN5bWJvbC4gICovCisKKwkJICAqcmVsX2hhc2ggPSBOVUxMOworCQkgIHN5bSA9IGlzeW1idWZbcl9zeW1uZHhdOworCQkgIHNlYyA9IGZpbmZvLT5zZWN0aW9uc1tyX3N5bW5keF07CisJCSAgaWYgKEVMRl9TVF9UWVBFIChzeW0uc3RfaW5mbykgPT0gU1RUX1NFQ1RJT04pCisJCSAgICB7CisJCSAgICAgIC8qIEkgc3VwcG9zZSB0aGUgYmFja2VuZCBvdWdodCB0byBmaWxsIGluIHRoZQorCQkJIHNlY3Rpb24gb2YgYW55IFNUVF9TRUNUSU9OIHN5bWJvbCBhZ2FpbnN0IGEKKwkJCSBwcm9jZXNzb3Igc3BlY2lmaWMgc2VjdGlvbi4gIElmIHdlIGhhdmUKKwkJCSBkaXNjYXJkZWQgYSBzZWN0aW9uLCB0aGUgb3V0cHV0X3NlY3Rpb24gd2lsbAorCQkJIGJlIHRoZSBhYnNvbHV0ZSBzZWN0aW9uLiAgKi8KKwkJICAgICAgaWYgKGJmZF9pc19hYnNfc2VjdGlvbiAoc2VjKQorCQkJICB8fCAoc2VjICE9IE5VTEwKKwkJCSAgICAgICYmIGJmZF9pc19hYnNfc2VjdGlvbiAoc2VjLT5vdXRwdXRfc2VjdGlvbikpKQorCQkJcl9zeW1uZHggPSAwOworCQkgICAgICBlbHNlIGlmIChzZWMgPT0gTlVMTCB8fCBzZWMtPm93bmVyID09IE5VTEwpCisJCQl7CisJCQkgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9iYWRfdmFsdWUpOworCQkJICByZXR1cm4gRkFMU0U7CisJCQl9CisJCSAgICAgIGVsc2UKKwkJCXsKKwkJCSAgcl9zeW1uZHggPSBzZWMtPm91dHB1dF9zZWN0aW9uLT50YXJnZXRfaW5kZXg7CisJCQkgIEJGRF9BU1NFUlQgKHJfc3ltbmR4ICE9IDApOworCQkJfQorCisJCSAgICAgIC8qIEFkanVzdCB0aGUgYWRkZW5kIGFjY29yZGluZyB0byB3aGVyZSB0aGUKKwkJCSBzZWN0aW9uIHdpbmRzIHVwIGluIHRoZSBvdXRwdXQgc2VjdGlvbi4gICovCisJCSAgICAgIGlmIChyZWxhX25vcm1hbCkKKwkJCWlyZWxhLT5yX2FkZGVuZCArPSBzZWMtPm91dHB1dF9vZmZzZXQ7CisJCSAgICB9CisJCSAgZWxzZQorCQkgICAgeworCQkgICAgICBpZiAoZmluZm8tPmluZGljZXNbcl9zeW1uZHhdID09IC0xKQorCQkJeworCQkJICB1bnNpZ25lZCBsb25nIHNobGluazsKKwkJCSAgY29uc3QgY2hhciAqbmFtZTsKKwkJCSAgYXNlY3Rpb24gKm9zZWM7CisKKwkJCSAgaWYgKGZpbmZvLT5pbmZvLT5zdHJpcCA9PSBzdHJpcF9hbGwpCisJCQkgICAgeworCQkJICAgICAgLyogWW91IGNhbid0IGRvIGxkIC1yIC1zLiAgKi8KKwkJCSAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7CisJCQkgICAgICByZXR1cm4gRkFMU0U7CisJCQkgICAgfQorCisJCQkgIC8qIFRoaXMgc3ltYm9sIHdhcyBza2lwcGVkIGVhcmxpZXIsIGJ1dAorCQkJICAgICBzaW5jZSBpdCBpcyBuZWVkZWQgYnkgYSByZWxvYywgd2UKKwkJCSAgICAgbXVzdCBvdXRwdXQgaXQgbm93LiAgKi8KKwkJCSAgc2hsaW5rID0gc3ltdGFiX2hkci0+c2hfbGluazsKKwkJCSAgbmFtZSA9IChiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uCisJCQkJICAoaW5wdXRfYmZkLCBzaGxpbmssIHN5bS5zdF9uYW1lKSk7CisJCQkgIGlmIChuYW1lID09IE5VTEwpCisJCQkgICAgcmV0dXJuIEZBTFNFOworCisJCQkgIG9zZWMgPSBzZWMtPm91dHB1dF9zZWN0aW9uOworCQkJICBzeW0uc3Rfc2huZHggPQorCQkJICAgIF9iZmRfZWxmX3NlY3Rpb25fZnJvbV9iZmRfc2VjdGlvbiAob3V0cHV0X2JmZCwKKwkJCQkJCQkgICAgICAgb3NlYyk7CisJCQkgIGlmIChzeW0uc3Rfc2huZHggPT0gU0hOX0JBRCkKKwkJCSAgICByZXR1cm4gRkFMU0U7CisKKwkJCSAgc3ltLnN0X3ZhbHVlICs9IHNlYy0+b3V0cHV0X29mZnNldDsKKwkJCSAgaWYgKCEgZmluZm8tPmluZm8tPnJlbG9jYXRhYmxlKQorCQkJICAgIHsKKwkJCSAgICAgIHN5bS5zdF92YWx1ZSArPSBvc2VjLT52bWE7CisJCQkgICAgICBpZiAoRUxGX1NUX1RZUEUgKHN5bS5zdF9pbmZvKSA9PSBTVFRfVExTKQorCQkJCXsKKwkJCQkgIC8qIFNUVF9UTFMgc3ltYm9scyBhcmUgcmVsYXRpdmUgdG8gUFRfVExTCisJCQkJICAgICBzZWdtZW50IGJhc2UuICAqLworCQkJCSAgQkZEX0FTU0VSVCAoZWxmX2hhc2hfdGFibGUgKGZpbmZvLT5pbmZvKQorCQkJCQkgICAgICAtPnRsc19zZWMgIT0gTlVMTCk7CisJCQkJICBzeW0uc3RfdmFsdWUgLT0gKGVsZl9oYXNoX3RhYmxlIChmaW5mby0+aW5mbykKKwkJCQkJCSAgIC0+dGxzX3NlYy0+dm1hKTsKKwkJCQl9CisJCQkgICAgfQorCisJCQkgIGZpbmZvLT5pbmRpY2VzW3Jfc3ltbmR4XQorCQkJICAgID0gYmZkX2dldF9zeW1jb3VudCAob3V0cHV0X2JmZCk7CisKKwkJCSAgaWYgKCEgZWxmX2xpbmtfb3V0cHV0X3N5bSAoZmluZm8sIG5hbWUsICZzeW0sIHNlYywKKwkJCQkJCSAgICAgTlVMTCkpCisJCQkgICAgcmV0dXJuIEZBTFNFOworCQkJfQorCisJCSAgICAgIHJfc3ltbmR4ID0gZmluZm8tPmluZGljZXNbcl9zeW1uZHhdOworCQkgICAgfQorCisJCSAgaXJlbGEtPnJfaW5mbyA9ICgoYmZkX3ZtYSkgcl9zeW1uZHggPDwgcl9zeW1fc2hpZnQKKwkJCQkgICB8IChpcmVsYS0+cl9pbmZvICYgcl90eXBlX21hc2spKTsKKwkJfQorCisJICAgICAgLyogU3dhcCBvdXQgdGhlIHJlbG9jcy4gICovCisJICAgICAgaWYgKGJlZC0+ZWxmX2JhY2tlbmRfZW1pdF9yZWxvY3MKKwkJICAmJiAhKGZpbmZvLT5pbmZvLT5yZWxvY2F0YWJsZQorCQkgICAgICAgfHwgZmluZm8tPmluZm8tPmVtaXRyZWxvY2F0aW9ucykpCisJCXJlbG9jX2VtaXR0ZXIgPSBiZWQtPmVsZl9iYWNrZW5kX2VtaXRfcmVsb2NzOworCSAgICAgIGVsc2UKKwkJcmVsb2NfZW1pdHRlciA9IF9iZmRfZWxmX2xpbmtfb3V0cHV0X3JlbG9jczsKKworCSAgICAgIGlmIChpbnB1dF9yZWxfaGRyLT5zaF9zaXplICE9IDAKKwkJICAmJiAhICgqcmVsb2NfZW1pdHRlcikgKG91dHB1dF9iZmQsIG8sIGlucHV0X3JlbF9oZHIsCisJCQkJCSBpbnRlcm5hbF9yZWxvY3MpKQorCQlyZXR1cm4gRkFMU0U7CisKKwkgICAgICBpbnB1dF9yZWxfaGRyMiA9IGVsZl9zZWN0aW9uX2RhdGEgKG8pLT5yZWxfaGRyMjsKKwkgICAgICBpZiAoaW5wdXRfcmVsX2hkcjIgJiYgaW5wdXRfcmVsX2hkcjItPnNoX3NpemUgIT0gMCkKKwkJeworCQkgIGludGVybmFsX3JlbG9jcyArPSAoTlVNX1NIRFJfRU5UUklFUyAoaW5wdXRfcmVsX2hkcikKKwkJCQkgICAgICAqIGJlZC0+cy0+aW50X3JlbHNfcGVyX2V4dF9yZWwpOworCQkgIGlmICghICgqcmVsb2NfZW1pdHRlcikgKG91dHB1dF9iZmQsIG8sIGlucHV0X3JlbF9oZHIyLAorCQkJCQkgIGludGVybmFsX3JlbG9jcykpCisJCSAgICByZXR1cm4gRkFMU0U7CisJCX0KKwkgICAgfQorCX0KKworICAgICAgLyogV3JpdGUgb3V0IHRoZSBtb2RpZmllZCBzZWN0aW9uIGNvbnRlbnRzLiAgKi8KKyAgICAgIGlmIChiZWQtPmVsZl9iYWNrZW5kX3dyaXRlX3NlY3Rpb24KKwkgICYmICgqYmVkLT5lbGZfYmFja2VuZF93cml0ZV9zZWN0aW9uKSAob3V0cHV0X2JmZCwgbywgY29udGVudHMpKQorCXsKKwkgIC8qIFNlY3Rpb24gd3JpdHRlbiBvdXQuICAqLworCX0KKyAgICAgIGVsc2Ugc3dpdGNoIChvLT5zZWNfaW5mb190eXBlKQorCXsKKwljYXNlIEVMRl9JTkZPX1RZUEVfU1RBQlM6CisJICBpZiAoISAoX2JmZF93cml0ZV9zZWN0aW9uX3N0YWJzCisJCSAob3V0cHV0X2JmZCwKKwkJICAmZWxmX2hhc2hfdGFibGUgKGZpbmZvLT5pbmZvKS0+c3RhYl9pbmZvLAorCQkgIG8sICZlbGZfc2VjdGlvbl9kYXRhIChvKS0+c2VjX2luZm8sIGNvbnRlbnRzKSkpCisJICAgIHJldHVybiBGQUxTRTsKKwkgIGJyZWFrOworCWNhc2UgRUxGX0lORk9fVFlQRV9NRVJHRToKKwkgIGlmICghIF9iZmRfd3JpdGVfbWVyZ2VkX3NlY3Rpb24gKG91dHB1dF9iZmQsIG8sCisJCQkJCSAgIGVsZl9zZWN0aW9uX2RhdGEgKG8pLT5zZWNfaW5mbykpCisJICAgIHJldHVybiBGQUxTRTsKKwkgIGJyZWFrOworCWNhc2UgRUxGX0lORk9fVFlQRV9FSF9GUkFNRToKKwkgIHsKKwkgICAgaWYgKCEgX2JmZF9lbGZfd3JpdGVfc2VjdGlvbl9laF9mcmFtZSAob3V0cHV0X2JmZCwgZmluZm8tPmluZm8sCisJCQkJCQkgICBvLCBjb250ZW50cykpCisJICAgICAgcmV0dXJuIEZBTFNFOworCSAgfQorCSAgYnJlYWs7CisJZGVmYXVsdDoKKwkgIHsKKwkgICAgYmZkX3NpemVfdHlwZSBzZWNfc2l6ZTsKKworCSAgICBzZWNfc2l6ZSA9IChvLT5fY29va2VkX3NpemUgIT0gMCA/IG8tPl9jb29rZWRfc2l6ZSA6IG8tPl9yYXdfc2l6ZSk7CisJICAgIGlmICghIChvLT5mbGFncyAmIFNFQ19FWENMVURFKQorCQkmJiAhIGJmZF9zZXRfc2VjdGlvbl9jb250ZW50cyAob3V0cHV0X2JmZCwgby0+b3V0cHV0X3NlY3Rpb24sCisJCQkJCSAgICAgICBjb250ZW50cywKKwkJCQkJICAgICAgIChmaWxlX3B0cikgby0+b3V0cHV0X29mZnNldCwKKwkJCQkJICAgICAgIHNlY19zaXplKSkKKwkgICAgICByZXR1cm4gRkFMU0U7CisJICB9CisJICBicmVhazsKKwl9CisgICAgfQorCisgIHJldHVybiBUUlVFOworfQorCisvKiBHZW5lcmF0ZSBhIHJlbG9jIHdoZW4gbGlua2luZyBhbiBFTEYgZmlsZS4gIFRoaXMgaXMgYSByZWxvYworICAgcmVxdWVzdGVkIGJ5IHRoZSBsaW5rZXIsIGFuZCBkb2VzIGNvbWUgZnJvbSBhbnkgaW5wdXQgZmlsZS4gIFRoaXMKKyAgIGlzIHVzZWQgdG8gYnVpbGQgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgdGFibGVzIHdoZW4gbGlua2luZworICAgd2l0aCAtVXIuICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZl9yZWxvY19saW5rX29yZGVyIChiZmQgKm91dHB1dF9iZmQsCisJCSAgICAgIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAorCQkgICAgICBhc2VjdGlvbiAqb3V0cHV0X3NlY3Rpb24sCisJCSAgICAgIHN0cnVjdCBiZmRfbGlua19vcmRlciAqbGlua19vcmRlcikKK3sKKyAgcmVsb2NfaG93dG9fdHlwZSAqaG93dG87CisgIGxvbmcgaW5keDsKKyAgYmZkX3ZtYSBvZmZzZXQ7CisgIGJmZF92bWEgYWRkZW5kOworICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKnJlbF9oYXNoX3B0cjsKKyAgRWxmX0ludGVybmFsX1NoZHIgKnJlbF9oZHI7CisgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAob3V0cHV0X2JmZCk7CisgIEVsZl9JbnRlcm5hbF9SZWxhIGlyZWxbTUFYX0lOVF9SRUxTX1BFUl9FWFRfUkVMXTsKKyAgYmZkX2J5dGUgKmVyZWw7CisgIHVuc2lnbmVkIGludCBpOworCisgIGhvd3RvID0gYmZkX3JlbG9jX3R5cGVfbG9va3VwIChvdXRwdXRfYmZkLCBsaW5rX29yZGVyLT51LnJlbG9jLnAtPnJlbG9jKTsKKyAgaWYgKGhvd3RvID09IE5VTEwpCisgICAgeworICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2JhZF92YWx1ZSk7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgIGFkZGVuZCA9IGxpbmtfb3JkZXItPnUucmVsb2MucC0+YWRkZW5kOworCisgIC8qIEZpZ3VyZSBvdXQgdGhlIHN5bWJvbCBpbmRleC4gICovCisgIHJlbF9oYXNoX3B0ciA9IChlbGZfc2VjdGlvbl9kYXRhIChvdXRwdXRfc2VjdGlvbiktPnJlbF9oYXNoZXMKKwkJICArIGVsZl9zZWN0aW9uX2RhdGEgKG91dHB1dF9zZWN0aW9uKS0+cmVsX2NvdW50CisJCSAgKyBlbGZfc2VjdGlvbl9kYXRhIChvdXRwdXRfc2VjdGlvbiktPnJlbF9jb3VudDIpOworICBpZiAobGlua19vcmRlci0+dHlwZSA9PSBiZmRfc2VjdGlvbl9yZWxvY19saW5rX29yZGVyKQorICAgIHsKKyAgICAgIGluZHggPSBsaW5rX29yZGVyLT51LnJlbG9jLnAtPnUuc2VjdGlvbi0+dGFyZ2V0X2luZGV4OworICAgICAgQkZEX0FTU0VSVCAoaW5keCAhPSAwKTsKKyAgICAgICpyZWxfaGFzaF9wdHIgPSBOVUxMOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoOworCisgICAgICAvKiBUcmVhdCBhIHJlbG9jIGFnYWluc3QgYSBkZWZpbmVkIHN5bWJvbCBhcyB0aG91Z2ggaXQgd2VyZQorCSBhY3R1YWxseSBhZ2FpbnN0IHRoZSBzZWN0aW9uLiAgKi8KKyAgICAgIGggPSAoKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopCisJICAgYmZkX3dyYXBwZWRfbGlua19oYXNoX2xvb2t1cCAob3V0cHV0X2JmZCwgaW5mbywKKwkJCQkJIGxpbmtfb3JkZXItPnUucmVsb2MucC0+dS5uYW1lLAorCQkJCQkgRkFMU0UsIEZBTFNFLCBUUlVFKSk7CisgICAgICBpZiAoaCAhPSBOVUxMCisJICAmJiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmaW5lZAorCSAgICAgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZndlYWspKQorCXsKKwkgIGFzZWN0aW9uICpzZWN0aW9uOworCisJICBzZWN0aW9uID0gaC0+cm9vdC51LmRlZi5zZWN0aW9uOworCSAgaW5keCA9IHNlY3Rpb24tPm91dHB1dF9zZWN0aW9uLT50YXJnZXRfaW5kZXg7CisJICAqcmVsX2hhc2hfcHRyID0gTlVMTDsKKwkgIC8qIEl0IHNlZW1zIHRoYXQgd2Ugb3VnaHQgdG8gYWRkIHRoZSBzeW1ib2wgdmFsdWUgdG8gdGhlCisJICAgICBhZGRlbmQgaGVyZSwgYnV0IGluIHByYWN0aWNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQKKwkgICAgIGJlY2F1c2UgaXQgd2FzIHBhc3NlZCB0byBjb25zdHJ1Y3Rvcl9jYWxsYmFjay4gICovCisJICBhZGRlbmQgKz0gc2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24tPnZtYSArIHNlY3Rpb24tPm91dHB1dF9vZmZzZXQ7CisJfQorICAgICAgZWxzZSBpZiAoaCAhPSBOVUxMKQorCXsKKwkgIC8qIFNldHRpbmcgdGhlIGluZGV4IHRvIC0yIHRlbGxzIGVsZl9saW5rX291dHB1dF9leHRzeW0gdGhhdAorCSAgICAgdGhpcyBzeW1ib2wgaXMgdXNlZCBieSBhIHJlbG9jLiAgKi8KKwkgIGgtPmluZHggPSAtMjsKKwkgICpyZWxfaGFzaF9wdHIgPSBoOworCSAgaW5keCA9IDA7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGlmICghICgoKmluZm8tPmNhbGxiYWNrcy0+dW5hdHRhY2hlZF9yZWxvYykKKwkJIChpbmZvLCBsaW5rX29yZGVyLT51LnJlbG9jLnAtPnUubmFtZSwgTlVMTCwgTlVMTCwgMCkpKQorCSAgICByZXR1cm4gRkFMU0U7CisJICBpbmR4ID0gMDsKKwl9CisgICAgfQorCisgIC8qIElmIHRoaXMgaXMgYW4gaW5wbGFjZSByZWxvYywgd2UgbXVzdCB3cml0ZSB0aGUgYWRkZW5kIGludG8gdGhlCisgICAgIG9iamVjdCBmaWxlLiAgKi8KKyAgaWYgKGhvd3RvLT5wYXJ0aWFsX2lucGxhY2UgJiYgYWRkZW5kICE9IDApCisgICAgeworICAgICAgYmZkX3NpemVfdHlwZSBzaXplOworICAgICAgYmZkX3JlbG9jX3N0YXR1c190eXBlIHJzdGF0OworICAgICAgYmZkX2J5dGUgKmJ1ZjsKKyAgICAgIGJmZF9ib29sZWFuIG9rOworICAgICAgY29uc3QgY2hhciAqc3ltX25hbWU7CisKKyAgICAgIHNpemUgPSBiZmRfZ2V0X3JlbG9jX3NpemUgKGhvd3RvKTsKKyAgICAgIGJ1ZiA9IGJmZF96bWFsbG9jIChzaXplKTsKKyAgICAgIGlmIChidWYgPT0gTlVMTCkKKwlyZXR1cm4gRkFMU0U7CisgICAgICByc3RhdCA9IF9iZmRfcmVsb2NhdGVfY29udGVudHMgKGhvd3RvLCBvdXRwdXRfYmZkLCBhZGRlbmQsIGJ1Zik7CisgICAgICBzd2l0Y2ggKHJzdGF0KQorCXsKKwljYXNlIGJmZF9yZWxvY19vazoKKwkgIGJyZWFrOworCisJZGVmYXVsdDoKKwljYXNlIGJmZF9yZWxvY19vdXRvZnJhbmdlOgorCSAgYWJvcnQgKCk7CisKKwljYXNlIGJmZF9yZWxvY19vdmVyZmxvdzoKKwkgIGlmIChsaW5rX29yZGVyLT50eXBlID09IGJmZF9zZWN0aW9uX3JlbG9jX2xpbmtfb3JkZXIpCisJICAgIHN5bV9uYW1lID0gYmZkX3NlY3Rpb25fbmFtZSAob3V0cHV0X2JmZCwKKwkJCQkJIGxpbmtfb3JkZXItPnUucmVsb2MucC0+dS5zZWN0aW9uKTsKKwkgIGVsc2UKKwkgICAgc3ltX25hbWUgPSBsaW5rX29yZGVyLT51LnJlbG9jLnAtPnUubmFtZTsKKwkgIGlmICghICgoKmluZm8tPmNhbGxiYWNrcy0+cmVsb2Nfb3ZlcmZsb3cpCisJCSAoaW5mbywgc3ltX25hbWUsIGhvd3RvLT5uYW1lLCBhZGRlbmQsIE5VTEwsIE5VTEwsIDApKSkKKwkgICAgeworCSAgICAgIGZyZWUgKGJ1Zik7CisJICAgICAgcmV0dXJuIEZBTFNFOworCSAgICB9CisJICBicmVhazsKKwl9CisgICAgICBvayA9IGJmZF9zZXRfc2VjdGlvbl9jb250ZW50cyAob3V0cHV0X2JmZCwgb3V0cHV0X3NlY3Rpb24sIGJ1ZiwKKwkJCQkgICAgIGxpbmtfb3JkZXItPm9mZnNldCwgc2l6ZSk7CisgICAgICBmcmVlIChidWYpOworICAgICAgaWYgKCEgb2spCisJcmV0dXJuIEZBTFNFOworICAgIH0KKworICAvKiBUaGUgYWRkcmVzcyBvZiBhIHJlbG9jIGlzIHJlbGF0aXZlIHRvIHRoZSBzZWN0aW9uIGluIGEKKyAgICAgcmVsb2NhdGFibGUgZmlsZSwgYW5kIGlzIGEgdmlydHVhbCBhZGRyZXNzIGluIGFuIGV4ZWN1dGFibGUKKyAgICAgZmlsZS4gICovCisgIG9mZnNldCA9IGxpbmtfb3JkZXItPm9mZnNldDsKKyAgaWYgKCEgaW5mby0+cmVsb2NhdGFibGUpCisgICAgb2Zmc2V0ICs9IG91dHB1dF9zZWN0aW9uLT52bWE7CisKKyAgZm9yIChpID0gMDsgaSA8IGJlZC0+cy0+aW50X3JlbHNfcGVyX2V4dF9yZWw7IGkrKykKKyAgICB7CisgICAgICBpcmVsW2ldLnJfb2Zmc2V0ID0gb2Zmc2V0OworICAgICAgaXJlbFtpXS5yX2luZm8gPSAwOworICAgICAgaXJlbFtpXS5yX2FkZGVuZCA9IDA7CisgICAgfQorICBpZiAoYmVkLT5zLT5hcmNoX3NpemUgPT0gMzIpCisgICAgaXJlbFswXS5yX2luZm8gPSBFTEYzMl9SX0lORk8gKGluZHgsIGhvd3RvLT50eXBlKTsKKyAgZWxzZQorICAgIGlyZWxbMF0ucl9pbmZvID0gRUxGNjRfUl9JTkZPIChpbmR4LCBob3d0by0+dHlwZSk7CisKKyAgcmVsX2hkciA9ICZlbGZfc2VjdGlvbl9kYXRhIChvdXRwdXRfc2VjdGlvbiktPnJlbF9oZHI7CisgIGVyZWwgPSByZWxfaGRyLT5jb250ZW50czsKKyAgaWYgKHJlbF9oZHItPnNoX3R5cGUgPT0gU0hUX1JFTCkKKyAgICB7CisgICAgICBlcmVsICs9IChlbGZfc2VjdGlvbl9kYXRhIChvdXRwdXRfc2VjdGlvbiktPnJlbF9jb3VudAorCSAgICAgICAqIGJlZC0+cy0+c2l6ZW9mX3JlbCk7CisgICAgICAoKmJlZC0+cy0+c3dhcF9yZWxvY19vdXQpIChvdXRwdXRfYmZkLCBpcmVsLCBlcmVsKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBpcmVsWzBdLnJfYWRkZW5kID0gYWRkZW5kOworICAgICAgZXJlbCArPSAoZWxmX3NlY3Rpb25fZGF0YSAob3V0cHV0X3NlY3Rpb24pLT5yZWxfY291bnQKKwkgICAgICAgKiBiZWQtPnMtPnNpemVvZl9yZWxhKTsKKyAgICAgICgqYmVkLT5zLT5zd2FwX3JlbG9jYV9vdXQpIChvdXRwdXRfYmZkLCBpcmVsLCBlcmVsKTsKKyAgICB9CisKKyAgKytlbGZfc2VjdGlvbl9kYXRhIChvdXRwdXRfc2VjdGlvbiktPnJlbF9jb3VudDsKKworICByZXR1cm4gVFJVRTsKK30KKworLyogRG8gdGhlIGZpbmFsIHN0ZXAgb2YgYW4gRUxGIGxpbmsuICAqLworCitiZmRfYm9vbGVhbgorYmZkX2VsZl9maW5hbF9saW5rIChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvKQoreworICBiZmRfYm9vbGVhbiBkeW5hbWljOworICBiZmRfYm9vbGVhbiBlbWl0X3JlbG9jczsKKyAgYmZkICpkeW5vYmo7CisgIHN0cnVjdCBlbGZfZmluYWxfbGlua19pbmZvIGZpbmZvOworICByZWdpc3RlciBhc2VjdGlvbiAqbzsKKyAgcmVnaXN0ZXIgc3RydWN0IGJmZF9saW5rX29yZGVyICpwOworICByZWdpc3RlciBiZmQgKnN1YjsKKyAgYmZkX3NpemVfdHlwZSBtYXhfY29udGVudHNfc2l6ZTsKKyAgYmZkX3NpemVfdHlwZSBtYXhfZXh0ZXJuYWxfcmVsb2Nfc2l6ZTsKKyAgYmZkX3NpemVfdHlwZSBtYXhfaW50ZXJuYWxfcmVsb2NfY291bnQ7CisgIGJmZF9zaXplX3R5cGUgbWF4X3N5bV9jb3VudDsKKyAgYmZkX3NpemVfdHlwZSBtYXhfc3ltX3NobmR4X2NvdW50OworICBmaWxlX3B0ciBvZmY7CisgIEVsZl9JbnRlcm5hbF9TeW0gZWxmc3ltOworICB1bnNpZ25lZCBpbnQgaTsKKyAgRWxmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9oZHI7CisgIEVsZl9JbnRlcm5hbF9TaGRyICpzeW10YWJfc2huZHhfaGRyOworICBFbGZfSW50ZXJuYWxfU2hkciAqc3ltc3RydGFiX2hkcjsKKyAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChhYmZkKTsKKyAgc3RydWN0IGVsZl9vdXRleHRfaW5mbyBlb2luZm87CisgIGJmZF9ib29sZWFuIG1lcmdlZDsKKyAgc2l6ZV90IHJlbGF0aXZlY291bnQgPSAwOworICBhc2VjdGlvbiAqcmVsZHluID0gMDsKKyAgYmZkX3NpemVfdHlwZSBhbXQ7CisKKyAgaWYgKCEgaXNfZWxmX2hhc2hfdGFibGUgKGluZm8tPmhhc2gpKQorICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoaW5mby0+c2hhcmVkKQorICAgIGFiZmQtPmZsYWdzIHw9IERZTkFNSUM7CisKKyAgZHluYW1pYyA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluYW1pY19zZWN0aW9uc19jcmVhdGVkOworICBkeW5vYmogPSBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bm9iajsKKworICBlbWl0X3JlbG9jcyA9IChpbmZvLT5yZWxvY2F0YWJsZQorCQkgfHwgaW5mby0+ZW1pdHJlbG9jYXRpb25zCisJCSB8fCBiZWQtPmVsZl9iYWNrZW5kX2VtaXRfcmVsb2NzKTsKKworICBmaW5mby5pbmZvID0gaW5mbzsKKyAgZmluZm8ub3V0cHV0X2JmZCA9IGFiZmQ7CisgIGZpbmZvLnN5bXN0cnRhYiA9IF9iZmRfZWxmX3N0cmluZ3RhYl9pbml0ICgpOworICBpZiAoZmluZm8uc3ltc3RydGFiID09IE5VTEwpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGlmICghIGR5bmFtaWMpCisgICAgeworICAgICAgZmluZm8uZHluc3ltX3NlYyA9IE5VTEw7CisgICAgICBmaW5mby5oYXNoX3NlYyA9IE5VTEw7CisgICAgICBmaW5mby5zeW12ZXJfc2VjID0gTlVMTDsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBmaW5mby5keW5zeW1fc2VjID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5keW5zeW0iKTsKKyAgICAgIGZpbmZvLmhhc2hfc2VjID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5oYXNoIik7CisgICAgICBCRkRfQVNTRVJUIChmaW5mby5keW5zeW1fc2VjICE9IE5VTEwgJiYgZmluZm8uaGFzaF9zZWMgIT0gTlVMTCk7CisgICAgICBmaW5mby5zeW12ZXJfc2VjID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5nbnUudmVyc2lvbiIpOworICAgICAgLyogTm90ZSB0aGF0IGl0IGlzIE9LIGlmIHN5bXZlcl9zZWMgaXMgTlVMTC4gICovCisgICAgfQorCisgIGZpbmZvLmNvbnRlbnRzID0gTlVMTDsKKyAgZmluZm8uZXh0ZXJuYWxfcmVsb2NzID0gTlVMTDsKKyAgZmluZm8uaW50ZXJuYWxfcmVsb2NzID0gTlVMTDsKKyAgZmluZm8uZXh0ZXJuYWxfc3ltcyA9IE5VTEw7CisgIGZpbmZvLmxvY3N5bV9zaG5keCA9IE5VTEw7CisgIGZpbmZvLmludGVybmFsX3N5bXMgPSBOVUxMOworICBmaW5mby5pbmRpY2VzID0gTlVMTDsKKyAgZmluZm8uc2VjdGlvbnMgPSBOVUxMOworICBmaW5mby5zeW1idWYgPSBOVUxMOworICBmaW5mby5zeW1zaG5keGJ1ZiA9IE5VTEw7CisgIGZpbmZvLnN5bWJ1Zl9jb3VudCA9IDA7CisgIGZpbmZvLnNobmR4YnVmX3NpemUgPSAwOworCisgIC8qIENvdW50IHVwIHRoZSBudW1iZXIgb2YgcmVsb2NhdGlvbnMgd2Ugd2lsbCBvdXRwdXQgZm9yIGVhY2ggb3V0cHV0CisgICAgIHNlY3Rpb24sIHNvIHRoYXQgd2Uga25vdyB0aGUgc2l6ZXMgb2YgdGhlIHJlbG9jIHNlY3Rpb25zLiAgV2UKKyAgICAgYWxzbyBmaWd1cmUgb3V0IHNvbWUgbWF4aW11bSBzaXplcy4gICovCisgIG1heF9jb250ZW50c19zaXplID0gMDsKKyAgbWF4X2V4dGVybmFsX3JlbG9jX3NpemUgPSAwOworICBtYXhfaW50ZXJuYWxfcmVsb2NfY291bnQgPSAwOworICBtYXhfc3ltX2NvdW50ID0gMDsKKyAgbWF4X3N5bV9zaG5keF9jb3VudCA9IDA7CisgIG1lcmdlZCA9IEZBTFNFOworICBmb3IgKG8gPSBhYmZkLT5zZWN0aW9uczsgbyAhPSBOVUxMOyBvID0gby0+bmV4dCkKKyAgICB7CisgICAgICBzdHJ1Y3QgYmZkX2VsZl9zZWN0aW9uX2RhdGEgKmVzZG8gPSBlbGZfc2VjdGlvbl9kYXRhIChvKTsKKyAgICAgIG8tPnJlbG9jX2NvdW50ID0gMDsKKworICAgICAgZm9yIChwID0gby0+bGlua19vcmRlcl9oZWFkOyBwICE9IE5VTEw7IHAgPSBwLT5uZXh0KQorCXsKKwkgIHVuc2lnbmVkIGludCByZWxvY19jb3VudCA9IDA7CisJICBzdHJ1Y3QgYmZkX2VsZl9zZWN0aW9uX2RhdGEgKmVzZGkgPSBOVUxMOworCSAgdW5zaWduZWQgaW50ICpyZWxfY291bnQxOworCisJICBpZiAocC0+dHlwZSA9PSBiZmRfc2VjdGlvbl9yZWxvY19saW5rX29yZGVyCisJICAgICAgfHwgcC0+dHlwZSA9PSBiZmRfc3ltYm9sX3JlbG9jX2xpbmtfb3JkZXIpCisJICAgIHJlbG9jX2NvdW50ID0gMTsKKwkgIGVsc2UgaWYgKHAtPnR5cGUgPT0gYmZkX2luZGlyZWN0X2xpbmtfb3JkZXIpCisJICAgIHsKKwkgICAgICBhc2VjdGlvbiAqc2VjOworCisJICAgICAgc2VjID0gcC0+dS5pbmRpcmVjdC5zZWN0aW9uOworCSAgICAgIGVzZGkgPSBlbGZfc2VjdGlvbl9kYXRhIChzZWMpOworCisJICAgICAgLyogTWFyayBhbGwgc2VjdGlvbnMgd2hpY2ggYXJlIHRvIGJlIGluY2x1ZGVkIGluIHRoZQorCQkgbGluay4gIFRoaXMgd2lsbCBub3JtYWxseSBiZSBldmVyeSBzZWN0aW9uLiAgV2UgbmVlZAorCQkgdG8gZG8gdGhpcyBzbyB0aGF0IHdlIGNhbiBpZGVudGlmeSBhbnkgc2VjdGlvbnMgd2hpY2gKKwkJIHRoZSBsaW5rZXIgaGFzIGRlY2lkZWQgdG8gbm90IGluY2x1ZGUuICAqLworCSAgICAgIHNlYy0+bGlua2VyX21hcmsgPSBUUlVFOworCisJICAgICAgaWYgKHNlYy0+ZmxhZ3MgJiBTRUNfTUVSR0UpCisJCW1lcmdlZCA9IFRSVUU7CisKKwkgICAgICBpZiAoaW5mby0+cmVsb2NhdGFibGUgfHwgaW5mby0+ZW1pdHJlbG9jYXRpb25zKQorCQlyZWxvY19jb3VudCA9IHNlYy0+cmVsb2NfY291bnQ7CisJICAgICAgZWxzZSBpZiAoYmVkLT5lbGZfYmFja2VuZF9jb3VudF9yZWxvY3MpCisJCXsKKwkJICBFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jczsKKworCQkgIHJlbG9jcyA9IF9iZmRfZWxmX2xpbmtfcmVhZF9yZWxvY3MgKGFiZmQsIHNlYywgTlVMTCwgTlVMTCwKKwkJCQkJCSAgICAgIGluZm8tPmtlZXBfbWVtb3J5KTsKKworCQkgIHJlbG9jX2NvdW50ID0gKCpiZWQtPmVsZl9iYWNrZW5kX2NvdW50X3JlbG9jcykgKHNlYywgcmVsb2NzKTsKKworCQkgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsb2NzICE9IHJlbG9jcykKKwkJICAgIGZyZWUgKHJlbG9jcyk7CisJCX0KKworCSAgICAgIGlmIChzZWMtPl9yYXdfc2l6ZSA+IG1heF9jb250ZW50c19zaXplKQorCQltYXhfY29udGVudHNfc2l6ZSA9IHNlYy0+X3Jhd19zaXplOworCSAgICAgIGlmIChzZWMtPl9jb29rZWRfc2l6ZSA+IG1heF9jb250ZW50c19zaXplKQorCQltYXhfY29udGVudHNfc2l6ZSA9IHNlYy0+X2Nvb2tlZF9zaXplOworCisJICAgICAgLyogV2UgYXJlIGludGVyZXN0ZWQgaW4ganVzdCBsb2NhbCBzeW1ib2xzLCBub3QgYWxsCisJCSBzeW1ib2xzLiAgKi8KKwkgICAgICBpZiAoYmZkX2dldF9mbGF2b3VyIChzZWMtPm93bmVyKSA9PSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyCisJCSAgJiYgKHNlYy0+b3duZXItPmZsYWdzICYgRFlOQU1JQykgPT0gMCkKKwkJeworCQkgIHNpemVfdCBzeW1fY291bnQ7CisKKwkJICBpZiAoZWxmX2JhZF9zeW10YWIgKHNlYy0+b3duZXIpKQorCQkgICAgc3ltX2NvdW50ID0gKGVsZl90ZGF0YSAoc2VjLT5vd25lciktPnN5bXRhYl9oZHIuc2hfc2l6ZQorCQkJCSAvIGJlZC0+cy0+c2l6ZW9mX3N5bSk7CisJCSAgZWxzZQorCQkgICAgc3ltX2NvdW50ID0gZWxmX3RkYXRhIChzZWMtPm93bmVyKS0+c3ltdGFiX2hkci5zaF9pbmZvOworCisJCSAgaWYgKHN5bV9jb3VudCA+IG1heF9zeW1fY291bnQpCisJCSAgICBtYXhfc3ltX2NvdW50ID0gc3ltX2NvdW50OworCisJCSAgaWYgKHN5bV9jb3VudCA+IG1heF9zeW1fc2huZHhfY291bnQKKwkJICAgICAgJiYgZWxmX3N5bXRhYl9zaG5keCAoc2VjLT5vd25lcikgIT0gMCkKKwkJICAgIG1heF9zeW1fc2huZHhfY291bnQgPSBzeW1fY291bnQ7CisKKwkJICBpZiAoKHNlYy0+ZmxhZ3MgJiBTRUNfUkVMT0MpICE9IDApCisJCSAgICB7CisJCSAgICAgIHNpemVfdCBleHRfc2l6ZTsKKworCQkgICAgICBleHRfc2l6ZSA9IGVsZl9zZWN0aW9uX2RhdGEgKHNlYyktPnJlbF9oZHIuc2hfc2l6ZTsKKwkJICAgICAgaWYgKGV4dF9zaXplID4gbWF4X2V4dGVybmFsX3JlbG9jX3NpemUpCisJCQltYXhfZXh0ZXJuYWxfcmVsb2Nfc2l6ZSA9IGV4dF9zaXplOworCQkgICAgICBpZiAoc2VjLT5yZWxvY19jb3VudCA+IG1heF9pbnRlcm5hbF9yZWxvY19jb3VudCkKKwkJCW1heF9pbnRlcm5hbF9yZWxvY19jb3VudCA9IHNlYy0+cmVsb2NfY291bnQ7CisJCSAgICB9CisJCX0KKwkgICAgfQorCisJICBpZiAocmVsb2NfY291bnQgPT0gMCkKKwkgICAgY29udGludWU7CisKKwkgIG8tPnJlbG9jX2NvdW50ICs9IHJlbG9jX2NvdW50OworCisJICAvKiBNSVBTIG1heSBoYXZlIGEgbWl4IG9mIFJFTCBhbmQgUkVMQSByZWxvY3Mgb24gc2VjdGlvbnMuCisJICAgICBUbyBzdXBwb3J0IHRoaXMgY3VyaW91cyBBQkkgd2Uga2VlcCByZWxvYyBjb3VudHMgaW4KKwkgICAgIGVsZl9zZWN0aW9uX2RhdGEgdG9vLiAgV2UgbXVzdCBiZSBjYXJlZnVsIHRvIGFkZCB0aGUKKwkgICAgIHJlbG9jYXRpb25zIGZyb20gdGhlIGlucHV0IHNlY3Rpb24gdG8gdGhlIHJpZ2h0IG91dHB1dAorCSAgICAgY291bnQuICBGSVhNRTogR2V0IHJpZCBvZiBvbmUgY291bnQuICBXZSBoYXZlCisJICAgICBvLT5yZWxvY19jb3VudCA9PSBlc2RvLT5yZWxfY291bnQgKyBlc2RvLT5yZWxfY291bnQyLiAgKi8KKwkgIHJlbF9jb3VudDEgPSAmZXNkby0+cmVsX2NvdW50OworCSAgaWYgKGVzZGkgIT0gTlVMTCkKKwkgICAgeworCSAgICAgIGJmZF9ib29sZWFuIHNhbWVfc2l6ZTsKKwkgICAgICBiZmRfc2l6ZV90eXBlIGVudHNpemUxOworCisJICAgICAgZW50c2l6ZTEgPSBlc2RpLT5yZWxfaGRyLnNoX2VudHNpemU7CisJICAgICAgQkZEX0FTU0VSVCAoZW50c2l6ZTEgPT0gYmVkLT5zLT5zaXplb2ZfcmVsCisJCQkgIHx8IGVudHNpemUxID09IGJlZC0+cy0+c2l6ZW9mX3JlbGEpOworCSAgICAgIHNhbWVfc2l6ZSA9ICFvLT51c2VfcmVsYV9wID09IChlbnRzaXplMSA9PSBiZWQtPnMtPnNpemVvZl9yZWwpOworCisJICAgICAgaWYgKCFzYW1lX3NpemUpCisJCXJlbF9jb3VudDEgPSAmZXNkby0+cmVsX2NvdW50MjsKKworCSAgICAgIGlmIChlc2RpLT5yZWxfaGRyMiAhPSBOVUxMKQorCQl7CisJCSAgYmZkX3NpemVfdHlwZSBlbnRzaXplMiA9IGVzZGktPnJlbF9oZHIyLT5zaF9lbnRzaXplOworCQkgIHVuc2lnbmVkIGludCBhbHRfY291bnQ7CisJCSAgdW5zaWduZWQgaW50ICpyZWxfY291bnQyOworCisJCSAgQkZEX0FTU0VSVCAoZW50c2l6ZTIgIT0gZW50c2l6ZTEKKwkJCSAgICAgICYmIChlbnRzaXplMiA9PSBiZWQtPnMtPnNpemVvZl9yZWwKKwkJCQkgIHx8IGVudHNpemUyID09IGJlZC0+cy0+c2l6ZW9mX3JlbGEpKTsKKworCQkgIHJlbF9jb3VudDIgPSAmZXNkby0+cmVsX2NvdW50MjsKKwkJICBpZiAoIXNhbWVfc2l6ZSkKKwkJICAgIHJlbF9jb3VudDIgPSAmZXNkby0+cmVsX2NvdW50OworCisJCSAgLyogVGhlIGZvbGxvd2luZyBpcyBwcm9iYWJseSB0b28gc2ltcGxpc3RpYyBpZiB0aGUKKwkJICAgICBiYWNrZW5kIGNvdW50cyBvdXRwdXQgcmVsb2NzIHVudXN1YWxseS4gICovCisJCSAgQkZEX0FTU0VSVCAoYmVkLT5lbGZfYmFja2VuZF9jb3VudF9yZWxvY3MgPT0gTlVMTCk7CisJCSAgYWx0X2NvdW50ID0gTlVNX1NIRFJfRU5UUklFUyAoZXNkaS0+cmVsX2hkcjIpOworCQkgICpyZWxfY291bnQyICs9IGFsdF9jb3VudDsKKwkJICByZWxvY19jb3VudCAtPSBhbHRfY291bnQ7CisJCX0KKwkgICAgfQorCSAgKnJlbF9jb3VudDEgKz0gcmVsb2NfY291bnQ7CisJfQorCisgICAgICBpZiAoby0+cmVsb2NfY291bnQgPiAwKQorCW8tPmZsYWdzIHw9IFNFQ19SRUxPQzsKKyAgICAgIGVsc2UKKwl7CisJICAvKiBFeHBsaWNpdGx5IGNsZWFyIHRoZSBTRUNfUkVMT0MgZmxhZy4gIFRoZSBsaW5rZXIgdGVuZHMgdG8KKwkgICAgIHNldCBpdCAodGhpcyBpcyBwcm9iYWJseSBhIGJ1ZykgYW5kIGlmIGl0IGlzIHNldAorCSAgICAgYXNzaWduX3NlY3Rpb25fbnVtYmVycyB3aWxsIGNyZWF0ZSBhIHJlbG9jIHNlY3Rpb24uICAqLworCSAgby0+ZmxhZ3MgJj1+IFNFQ19SRUxPQzsKKwl9CisKKyAgICAgIC8qIElmIHRoZSBTRUNfQUxMT0MgZmxhZyBpcyBub3Qgc2V0LCBmb3JjZSB0aGUgc2VjdGlvbiBWTUEgdG8KKwkgemVyby4gIFRoaXMgaXMgZG9uZSBpbiBlbGZfZmFrZV9zZWN0aW9ucyBhcyB3ZWxsLCBidXQgZm9yY2luZworCSB0aGUgVk1BIHRvIDAgaGVyZSB3aWxsIGVuc3VyZSB0aGF0IHJlbG9jcyBhZ2FpbnN0IHRoZXNlCisJIHNlY3Rpb25zIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4gICovCisgICAgICBpZiAoKG8tPmZsYWdzICYgU0VDX0FMTE9DKSA9PSAwCisJICAmJiAhIG8tPnVzZXJfc2V0X3ZtYSkKKwlvLT52bWEgPSAwOworICAgIH0KKworICBpZiAoISBpbmZvLT5yZWxvY2F0YWJsZSAmJiBtZXJnZWQpCisgICAgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZSAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAorCQkJICAgIF9iZmRfZWxmX2xpbmtfc2VjX21lcmdlX3N5bXMsIGFiZmQpOworCisgIC8qIEZpZ3VyZSBvdXQgdGhlIGZpbGUgcG9zaXRpb25zIGZvciBldmVyeXRoaW5nIGJ1dCB0aGUgc3ltYm9sIHRhYmxlCisgICAgIGFuZCB0aGUgcmVsb2NzLiAgV2Ugc2V0IHN5bWNvdW50IHRvIGZvcmNlIGFzc2lnbl9zZWN0aW9uX251bWJlcnMKKyAgICAgdG8gY3JlYXRlIGEgc3ltYm9sIHRhYmxlLiAgKi8KKyAgYmZkX2dldF9zeW1jb3VudCAoYWJmZCkgPSBpbmZvLT5zdHJpcCA9PSBzdHJpcF9hbGwgPyAwIDogMTsKKyAgQkZEX0FTU0VSVCAoISBhYmZkLT5vdXRwdXRfaGFzX2JlZ3VuKTsKKyAgaWYgKCEgX2JmZF9lbGZfY29tcHV0ZV9zZWN0aW9uX2ZpbGVfcG9zaXRpb25zIChhYmZkLCBpbmZvKSkKKyAgICBnb3RvIGVycm9yX3JldHVybjsKKworICAvKiBUaGF0IGNyZWF0ZWQgdGhlIHJlbG9jIHNlY3Rpb25zLiAgU2V0IHRoZWlyIHNpemVzLCBhbmQgYXNzaWduCisgICAgIHRoZW0gZmlsZSBwb3NpdGlvbnMsIGFuZCBhbGxvY2F0ZSBzb21lIGJ1ZmZlcnMuICAqLworICBmb3IgKG8gPSBhYmZkLT5zZWN0aW9uczsgbyAhPSBOVUxMOyBvID0gby0+bmV4dCkKKyAgICB7CisgICAgICBpZiAoKG8tPmZsYWdzICYgU0VDX1JFTE9DKSAhPSAwKQorCXsKKwkgIGlmICghKF9iZmRfZWxmX2xpbmtfc2l6ZV9yZWxvY19zZWN0aW9uCisJCShhYmZkLCAmZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9oZHIsIG8pKSkKKwkgICAgZ290byBlcnJvcl9yZXR1cm47CisKKwkgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsX2hkcjIKKwkgICAgICAmJiAhKF9iZmRfZWxmX2xpbmtfc2l6ZV9yZWxvY19zZWN0aW9uCisJCSAgIChhYmZkLCBlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsX2hkcjIsIG8pKSkKKwkgICAgZ290byBlcnJvcl9yZXR1cm47CisJfQorCisgICAgICAvKiBOb3csIHJlc2V0IFJFTF9DT1VOVCBhbmQgUkVMX0NPVU5UMiBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlbQorCSB0byBjb3VudCB1cHdhcmRzIHdoaWxlIGFjdHVhbGx5IG91dHB1dHRpbmcgdGhlIHJlbG9jYXRpb25zLiAgKi8KKyAgICAgIGVsZl9zZWN0aW9uX2RhdGEgKG8pLT5yZWxfY291bnQgPSAwOworICAgICAgZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9jb3VudDIgPSAwOworICAgIH0KKworICBfYmZkX2VsZl9hc3NpZ25fZmlsZV9wb3NpdGlvbnNfZm9yX3JlbG9jcyAoYWJmZCk7CisKKyAgLyogV2UgaGF2ZSBub3cgYXNzaWduZWQgZmlsZSBwb3NpdGlvbnMgZm9yIGFsbCB0aGUgc2VjdGlvbnMgZXhjZXB0CisgICAgIC5zeW10YWIgYW5kIC5zdHJ0YWIuICBXZSBzdGFydCB0aGUgLnN5bXRhYiBzZWN0aW9uIGF0IHRoZSBjdXJyZW50CisgICAgIGZpbGUgcG9zaXRpb24sIGFuZCB3cml0ZSBkaXJlY3RseSB0byBpdC4gIFdlIGJ1aWxkIHRoZSAuc3RydGFiCisgICAgIHNlY3Rpb24gaW4gbWVtb3J5LiAgKi8KKyAgYmZkX2dldF9zeW1jb3VudCAoYWJmZCkgPSAwOworICBzeW10YWJfaGRyID0gJmVsZl90ZGF0YSAoYWJmZCktPnN5bXRhYl9oZHI7CisgIC8qIHNoX25hbWUgaXMgc2V0IGluIHByZXBfaGVhZGVycy4gICovCisgIHN5bXRhYl9oZHItPnNoX3R5cGUgPSBTSFRfU1lNVEFCOworICAvKiBzaF9mbGFncywgc2hfYWRkciBhbmQgc2hfc2l6ZSBhbGwgc3RhcnQgb2ZmIHplcm8uICAqLworICBzeW10YWJfaGRyLT5zaF9lbnRzaXplID0gYmVkLT5zLT5zaXplb2Zfc3ltOworICAvKiBzaF9saW5rIGlzIHNldCBpbiBhc3NpZ25fc2VjdGlvbl9udW1iZXJzLiAgKi8KKyAgLyogc2hfaW5mbyBpcyBzZXQgYmVsb3cuICAqLworICAvKiBzaF9vZmZzZXQgaXMgc2V0IGp1c3QgYmVsb3cuICAqLworICBzeW10YWJfaGRyLT5zaF9hZGRyYWxpZ24gPSAxIDw8IGJlZC0+cy0+bG9nX2ZpbGVfYWxpZ247CisKKyAgb2ZmID0gZWxmX3RkYXRhIChhYmZkKS0+bmV4dF9maWxlX3BvczsKKyAgb2ZmID0gX2JmZF9lbGZfYXNzaWduX2ZpbGVfcG9zaXRpb25fZm9yX3NlY3Rpb24gKHN5bXRhYl9oZHIsIG9mZiwgVFJVRSk7CisKKyAgLyogTm90ZSB0aGF0IGF0IHRoaXMgcG9pbnQgZWxmX3RkYXRhIChhYmZkKS0+bmV4dF9maWxlX3BvcyBpcworICAgICBpbmNvcnJlY3QuICBXZSBkbyBub3QgeWV0IGtub3cgdGhlIHNpemUgb2YgdGhlIC5zeW10YWIgc2VjdGlvbi4KKyAgICAgV2UgY29ycmVjdCBuZXh0X2ZpbGVfcG9zIGJlbG93LCBhZnRlciB3ZSBkbyBrbm93IHRoZSBzaXplLiAgKi8KKworICAvKiBBbGxvY2F0ZSBhIGJ1ZmZlciB0byBob2xkIHN3YXBwZWQgb3V0IHN5bWJvbHMuICBUaGlzIGlzIHRvIGF2b2lkCisgICAgIGNvbnRpbnVvdXNseSBzZWVraW5nIHRvIHRoZSByaWdodCBwb3NpdGlvbiBpbiB0aGUgZmlsZS4gICovCisgIGlmICghIGluZm8tPmtlZXBfbWVtb3J5IHx8IG1heF9zeW1fY291bnQgPCAyMCkKKyAgICBmaW5mby5zeW1idWZfc2l6ZSA9IDIwOworICBlbHNlCisgICAgZmluZm8uc3ltYnVmX3NpemUgPSBtYXhfc3ltX2NvdW50OworICBhbXQgPSBmaW5mby5zeW1idWZfc2l6ZTsKKyAgYW10ICo9IGJlZC0+cy0+c2l6ZW9mX3N5bTsKKyAgZmluZm8uc3ltYnVmID0gYmZkX21hbGxvYyAoYW10KTsKKyAgaWYgKGZpbmZvLnN5bWJ1ZiA9PSBOVUxMKQorICAgIGdvdG8gZXJyb3JfcmV0dXJuOworICBpZiAoZWxmX251bXNlY3Rpb25zIChhYmZkKSA+IFNITl9MT1JFU0VSVkUpCisgICAgeworICAgICAgLyogV2lsZCBndWVzcyBhdCBudW1iZXIgb2Ygb3V0cHV0IHN5bWJvbHMuICByZWFsbG9jJ2QgYXMgbmVlZGVkLiAgKi8KKyAgICAgIGFtdCA9IDIgKiBtYXhfc3ltX2NvdW50ICsgZWxmX251bXNlY3Rpb25zIChhYmZkKSArIDEwMDA7CisgICAgICBmaW5mby5zaG5keGJ1Zl9zaXplID0gYW10OworICAgICAgYW10ICo9IHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bV9TaG5keCk7CisgICAgICBmaW5mby5zeW1zaG5keGJ1ZiA9IGJmZF96bWFsbG9jIChhbXQpOworICAgICAgaWYgKGZpbmZvLnN5bXNobmR4YnVmID09IE5VTEwpCisJZ290byBlcnJvcl9yZXR1cm47CisgICAgfQorCisgIC8qIFN0YXJ0IHdyaXRpbmcgb3V0IHRoZSBzeW1ib2wgdGFibGUuICBUaGUgZmlyc3Qgc3ltYm9sIGlzIGFsd2F5cyBhCisgICAgIGR1bW15IHN5bWJvbC4gICovCisgIGlmIChpbmZvLT5zdHJpcCAhPSBzdHJpcF9hbGwKKyAgICAgIHx8IGVtaXRfcmVsb2NzKQorICAgIHsKKyAgICAgIGVsZnN5bS5zdF92YWx1ZSA9IDA7CisgICAgICBlbGZzeW0uc3Rfc2l6ZSA9IDA7CisgICAgICBlbGZzeW0uc3RfaW5mbyA9IDA7CisgICAgICBlbGZzeW0uc3Rfb3RoZXIgPSAwOworICAgICAgZWxmc3ltLnN0X3NobmR4ID0gU0hOX1VOREVGOworICAgICAgaWYgKCEgZWxmX2xpbmtfb3V0cHV0X3N5bSAoJmZpbmZvLCBOVUxMLCAmZWxmc3ltLCBiZmRfdW5kX3NlY3Rpb25fcHRyLAorCQkJCSBOVUxMKSkKKwlnb3RvIGVycm9yX3JldHVybjsKKyAgICB9CisKKyNpZiAwCisgIC8qIFNvbWUgc3RhbmRhcmQgRUxGIGxpbmtlcnMgZG8gdGhpcywgYnV0IHdlIGRvbid0IGJlY2F1c2UgaXQgY2F1c2VzCisgICAgIGJvb3RzdHJhcCBjb21wYXJpc29uIGZhaWx1cmVzLiAgKi8KKyAgLyogT3V0cHV0IGEgZmlsZSBzeW1ib2wgZm9yIHRoZSBvdXRwdXQgZmlsZSBhcyB0aGUgc2Vjb25kIHN5bWJvbC4KKyAgICAgV2Ugb3V0cHV0IHRoaXMgZXZlbiBpZiB3ZSBhcmUgZGlzY2FyZGluZyBsb2NhbCBzeW1ib2xzLCBhbHRob3VnaAorICAgICBJJ20gbm90IHN1cmUgaWYgdGhpcyBpcyBjb3JyZWN0LiAgKi8KKyAgZWxmc3ltLnN0X3ZhbHVlID0gMDsKKyAgZWxmc3ltLnN0X3NpemUgPSAwOworICBlbGZzeW0uc3RfaW5mbyA9IEVMRl9TVF9JTkZPIChTVEJfTE9DQUwsIFNUVF9GSUxFKTsKKyAgZWxmc3ltLnN0X290aGVyID0gMDsKKyAgZWxmc3ltLnN0X3NobmR4ID0gU0hOX0FCUzsKKyAgaWYgKCEgZWxmX2xpbmtfb3V0cHV0X3N5bSAoJmZpbmZvLCBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwKKwkJCSAgICAgJmVsZnN5bSwgYmZkX2Fic19zZWN0aW9uX3B0ciwgTlVMTCkpCisgICAgZ290byBlcnJvcl9yZXR1cm47CisjZW5kaWYKKworICAvKiBPdXRwdXQgYSBzeW1ib2wgZm9yIGVhY2ggc2VjdGlvbi4gIFdlIG91dHB1dCB0aGVzZSBldmVuIGlmIHdlIGFyZQorICAgICBkaXNjYXJkaW5nIGxvY2FsIHN5bWJvbHMsIHNpbmNlIHRoZXkgYXJlIHVzZWQgZm9yIHJlbG9jcy4gIFRoZXNlCisgICAgIHN5bWJvbHMgaGF2ZSBubyBuYW1lcy4gIFdlIHN0b3JlIHRoZSBpbmRleCBvZiBlYWNoIG9uZSBpbiB0aGUKKyAgICAgaW5kZXggZmllbGQgb2YgdGhlIHNlY3Rpb24sIHNvIHRoYXQgd2UgY2FuIGZpbmQgaXQgYWdhaW4gd2hlbgorICAgICBvdXRwdXR0aW5nIHJlbG9jcy4gICovCisgIGlmIChpbmZvLT5zdHJpcCAhPSBzdHJpcF9hbGwKKyAgICAgIHx8IGVtaXRfcmVsb2NzKQorICAgIHsKKyAgICAgIGVsZnN5bS5zdF9zaXplID0gMDsKKyAgICAgIGVsZnN5bS5zdF9pbmZvID0gRUxGX1NUX0lORk8gKFNUQl9MT0NBTCwgU1RUX1NFQ1RJT04pOworICAgICAgZWxmc3ltLnN0X290aGVyID0gMDsKKyAgICAgIGZvciAoaSA9IDE7IGkgPCBlbGZfbnVtc2VjdGlvbnMgKGFiZmQpOyBpKyspCisJeworCSAgbyA9IGJmZF9zZWN0aW9uX2Zyb21fZWxmX2luZGV4IChhYmZkLCBpKTsKKwkgIGlmIChvICE9IE5VTEwpCisJICAgIG8tPnRhcmdldF9pbmRleCA9IGJmZF9nZXRfc3ltY291bnQgKGFiZmQpOworCSAgZWxmc3ltLnN0X3NobmR4ID0gaTsKKwkgIGlmIChpbmZvLT5yZWxvY2F0YWJsZSB8fCBvID09IE5VTEwpCisJICAgIGVsZnN5bS5zdF92YWx1ZSA9IDA7CisJICBlbHNlCisJICAgIGVsZnN5bS5zdF92YWx1ZSA9IG8tPnZtYTsKKwkgIGlmICghIGVsZl9saW5rX291dHB1dF9zeW0gKCZmaW5mbywgTlVMTCwgJmVsZnN5bSwgbywgTlVMTCkpCisJICAgIGdvdG8gZXJyb3JfcmV0dXJuOworCSAgaWYgKGkgPT0gU0hOX0xPUkVTRVJWRSAtIDEpCisJICAgIGkgKz0gU0hOX0hJUkVTRVJWRSArIDEgLSBTSE5fTE9SRVNFUlZFOworCX0KKyAgICB9CisKKyAgLyogQWxsb2NhdGUgc29tZSBtZW1vcnkgdG8gaG9sZCBpbmZvcm1hdGlvbiByZWFkIGluIGZyb20gdGhlIGlucHV0CisgICAgIGZpbGVzLiAgKi8KKyAgaWYgKG1heF9jb250ZW50c19zaXplICE9IDApCisgICAgeworICAgICAgZmluZm8uY29udGVudHMgPSBiZmRfbWFsbG9jIChtYXhfY29udGVudHNfc2l6ZSk7CisgICAgICBpZiAoZmluZm8uY29udGVudHMgPT0gTlVMTCkKKwlnb3RvIGVycm9yX3JldHVybjsKKyAgICB9CisKKyAgaWYgKG1heF9leHRlcm5hbF9yZWxvY19zaXplICE9IDApCisgICAgeworICAgICAgZmluZm8uZXh0ZXJuYWxfcmVsb2NzID0gYmZkX21hbGxvYyAobWF4X2V4dGVybmFsX3JlbG9jX3NpemUpOworICAgICAgaWYgKGZpbmZvLmV4dGVybmFsX3JlbG9jcyA9PSBOVUxMKQorCWdvdG8gZXJyb3JfcmV0dXJuOworICAgIH0KKworICBpZiAobWF4X2ludGVybmFsX3JlbG9jX2NvdW50ICE9IDApCisgICAgeworICAgICAgYW10ID0gbWF4X2ludGVybmFsX3JlbG9jX2NvdW50ICogYmVkLT5zLT5pbnRfcmVsc19wZXJfZXh0X3JlbDsKKyAgICAgIGFtdCAqPSBzaXplb2YgKEVsZl9JbnRlcm5hbF9SZWxhKTsKKyAgICAgIGZpbmZvLmludGVybmFsX3JlbG9jcyA9IGJmZF9tYWxsb2MgKGFtdCk7CisgICAgICBpZiAoZmluZm8uaW50ZXJuYWxfcmVsb2NzID09IE5VTEwpCisJZ290byBlcnJvcl9yZXR1cm47CisgICAgfQorCisgIGlmIChtYXhfc3ltX2NvdW50ICE9IDApCisgICAgeworICAgICAgYW10ID0gbWF4X3N5bV9jb3VudCAqIGJlZC0+cy0+c2l6ZW9mX3N5bTsKKyAgICAgIGZpbmZvLmV4dGVybmFsX3N5bXMgPSBiZmRfbWFsbG9jIChhbXQpOworICAgICAgaWYgKGZpbmZvLmV4dGVybmFsX3N5bXMgPT0gTlVMTCkKKwlnb3RvIGVycm9yX3JldHVybjsKKworICAgICAgYW10ID0gbWF4X3N5bV9jb3VudCAqIHNpemVvZiAoRWxmX0ludGVybmFsX1N5bSk7CisgICAgICBmaW5mby5pbnRlcm5hbF9zeW1zID0gYmZkX21hbGxvYyAoYW10KTsKKyAgICAgIGlmIChmaW5mby5pbnRlcm5hbF9zeW1zID09IE5VTEwpCisJZ290byBlcnJvcl9yZXR1cm47CisKKyAgICAgIGFtdCA9IG1heF9zeW1fY291bnQgKiBzaXplb2YgKGxvbmcpOworICAgICAgZmluZm8uaW5kaWNlcyA9IGJmZF9tYWxsb2MgKGFtdCk7CisgICAgICBpZiAoZmluZm8uaW5kaWNlcyA9PSBOVUxMKQorCWdvdG8gZXJyb3JfcmV0dXJuOworCisgICAgICBhbXQgPSBtYXhfc3ltX2NvdW50ICogc2l6ZW9mIChhc2VjdGlvbiAqKTsKKyAgICAgIGZpbmZvLnNlY3Rpb25zID0gYmZkX21hbGxvYyAoYW10KTsKKyAgICAgIGlmIChmaW5mby5zZWN0aW9ucyA9PSBOVUxMKQorCWdvdG8gZXJyb3JfcmV0dXJuOworICAgIH0KKworICBpZiAobWF4X3N5bV9zaG5keF9jb3VudCAhPSAwKQorICAgIHsKKyAgICAgIGFtdCA9IG1heF9zeW1fc2huZHhfY291bnQgKiBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW1fU2huZHgpOworICAgICAgZmluZm8ubG9jc3ltX3NobmR4ID0gYmZkX21hbGxvYyAoYW10KTsKKyAgICAgIGlmIChmaW5mby5sb2NzeW1fc2huZHggPT0gTlVMTCkKKwlnb3RvIGVycm9yX3JldHVybjsKKyAgICB9CisKKyAgaWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+dGxzX3NlYykKKyAgICB7CisgICAgICBiZmRfdm1hIGJhc2UsIGVuZCA9IDA7CisgICAgICBhc2VjdGlvbiAqc2VjOworCisgICAgICBmb3IgKHNlYyA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+dGxzX3NlYzsKKwkgICBzZWMgJiYgKHNlYy0+ZmxhZ3MgJiBTRUNfVEhSRUFEX0xPQ0FMKTsKKwkgICBzZWMgPSBzZWMtPm5leHQpCisJeworCSAgYmZkX3ZtYSBzaXplID0gc2VjLT5fcmF3X3NpemU7CisKKwkgIGlmIChzaXplID09IDAgJiYgKHNlYy0+ZmxhZ3MgJiBTRUNfSEFTX0NPTlRFTlRTKSA9PSAwKQorCSAgICB7CisJICAgICAgc3RydWN0IGJmZF9saW5rX29yZGVyICpvOworCisJICAgICAgZm9yIChvID0gc2VjLT5saW5rX29yZGVyX2hlYWQ7IG8gIT0gTlVMTDsgbyA9IG8tPm5leHQpCisJCWlmIChzaXplIDwgby0+b2Zmc2V0ICsgby0+c2l6ZSkKKwkJICBzaXplID0gby0+b2Zmc2V0ICsgby0+c2l6ZTsKKwkgICAgfQorCSAgZW5kID0gc2VjLT52bWEgKyBzaXplOworCX0KKyAgICAgIGJhc2UgPSBlbGZfaGFzaF90YWJsZSAoaW5mbyktPnRsc19zZWMtPnZtYTsKKyAgICAgIGVuZCA9IGFsaWduX3Bvd2VyIChlbmQsIGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+dGxzX3NlYy0+YWxpZ25tZW50X3Bvd2VyKTsKKyAgICAgIGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+dGxzX3NpemUgPSBlbmQgLSBiYXNlOworICAgIH0KKworICAvKiBTaW5jZSBFTEYgcGVybWl0cyByZWxvY2F0aW9ucyB0byBiZSBhZ2FpbnN0IGxvY2FsIHN5bWJvbHMsIHdlCisgICAgIG11c3QgaGF2ZSB0aGUgbG9jYWwgc3ltYm9scyBhdmFpbGFibGUgd2hlbiB3ZSBkbyB0aGUgcmVsb2NhdGlvbnMuCisgICAgIFNpbmNlIHdlIHdvdWxkIHJhdGhlciBvbmx5IHJlYWQgdGhlIGxvY2FsIHN5bWJvbHMgb25jZSwgYW5kIHdlCisgICAgIHdvdWxkIHJhdGhlciBub3Qga2VlcCB0aGVtIGluIG1lbW9yeSwgd2UgaGFuZGxlIGFsbCB0aGUKKyAgICAgcmVsb2NhdGlvbnMgZm9yIGEgc2luZ2xlIGlucHV0IGZpbGUgYXQgdGhlIHNhbWUgdGltZS4KKworICAgICBVbmZvcnR1bmF0ZWx5LCB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB0aGUgdG90YWwgbnVtYmVyIG9mIGxvY2FsCisgICAgIHN5bWJvbHMgdW50aWwgd2UgaGF2ZSBzZWVuIGFsbCBvZiB0aGVtLCBhbmQgdGhlIGxvY2FsIHN5bWJvbAorICAgICBpbmRpY2VzIHByZWNlZGUgdGhlIGdsb2JhbCBzeW1ib2wgaW5kaWNlcy4gIFRoaXMgbWVhbnMgdGhhdCB3aGVuCisgICAgIHdlIGFyZSBnZW5lcmF0aW5nIHJlbG9jYXRhYmxlIG91dHB1dCwgYW5kIHdlIHNlZSBhIHJlbG9jIGFnYWluc3QKKyAgICAgYSBnbG9iYWwgc3ltYm9sLCB3ZSBjYW4gbm90IGtub3cgdGhlIHN5bWJvbCBpbmRleCB1bnRpbCB3ZSBoYXZlCisgICAgIGZpbmlzaGVkIGV4YW1pbmluZyBhbGwgdGhlIGxvY2FsIHN5bWJvbHMgdG8gc2VlIHdoaWNoIG9uZXMgd2UgYXJlCisgICAgIGdvaW5nIHRvIG91dHB1dC4gIFRvIGRlYWwgd2l0aCB0aGlzLCB3ZSBrZWVwIHRoZSByZWxvY2F0aW9ucyBpbgorICAgICBtZW1vcnksIGFuZCBkb24ndCBvdXRwdXQgdGhlbSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBsaW5rLiAgVGhpcyBpcworICAgICBhbiB1bmZvcnR1bmF0ZSB3YXN0ZSBvZiBtZW1vcnksIGJ1dCBJIGRvbid0IHNlZSBhIGdvb2Qgd2F5IGFyb3VuZAorICAgICBpdC4gIEZvcnR1bmF0ZWx5LCBpdCBvbmx5IGhhcHBlbnMgd2hlbiBwZXJmb3JtaW5nIGEgcmVsb2NhdGFibGUKKyAgICAgbGluaywgd2hpY2ggaXMgbm90IHRoZSBjb21tb24gY2FzZS4gIEZJWE1FOiBJZiBrZWVwX21lbW9yeSBpcyBzZXQKKyAgICAgd2UgY291bGQgd3JpdGUgdGhlIHJlbG9jcyBvdXQgYW5kIHRoZW4gcmVhZCB0aGVtIGFnYWluOyBJIGRvbid0CisgICAgIGtub3cgaG93IGJhZCB0aGUgbWVtb3J5IGxvc3Mgd2lsbCBiZS4gICovCisKKyAgZm9yIChzdWIgPSBpbmZvLT5pbnB1dF9iZmRzOyBzdWIgIT0gTlVMTDsgc3ViID0gc3ViLT5saW5rX25leHQpCisgICAgc3ViLT5vdXRwdXRfaGFzX2JlZ3VuID0gRkFMU0U7CisgIGZvciAobyA9IGFiZmQtPnNlY3Rpb25zOyBvICE9IE5VTEw7IG8gPSBvLT5uZXh0KQorICAgIHsKKyAgICAgIGZvciAocCA9IG8tPmxpbmtfb3JkZXJfaGVhZDsgcCAhPSBOVUxMOyBwID0gcC0+bmV4dCkKKwl7CisJICBpZiAocC0+dHlwZSA9PSBiZmRfaW5kaXJlY3RfbGlua19vcmRlcgorCSAgICAgICYmIChiZmRfZ2V0X2ZsYXZvdXIgKChzdWIgPSBwLT51LmluZGlyZWN0LnNlY3Rpb24tPm93bmVyKSkKKwkJICA9PSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQorCSAgICAgICYmIGVsZl9lbGZoZWFkZXIgKHN1YiktPmVfaWRlbnRbRUlfQ0xBU1NdID09IGJlZC0+cy0+ZWxmY2xhc3MpCisJICAgIHsKKwkgICAgICBpZiAoISBzdWItPm91dHB1dF9oYXNfYmVndW4pCisJCXsKKwkJICBpZiAoISBlbGZfbGlua19pbnB1dF9iZmQgKCZmaW5mbywgc3ViKSkKKwkJICAgIGdvdG8gZXJyb3JfcmV0dXJuOworCQkgIHN1Yi0+b3V0cHV0X2hhc19iZWd1biA9IFRSVUU7CisJCX0KKwkgICAgfQorCSAgZWxzZSBpZiAocC0+dHlwZSA9PSBiZmRfc2VjdGlvbl9yZWxvY19saW5rX29yZGVyCisJCSAgIHx8IHAtPnR5cGUgPT0gYmZkX3N5bWJvbF9yZWxvY19saW5rX29yZGVyKQorCSAgICB7CisJICAgICAgaWYgKCEgZWxmX3JlbG9jX2xpbmtfb3JkZXIgKGFiZmQsIGluZm8sIG8sIHApKQorCQlnb3RvIGVycm9yX3JldHVybjsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgaWYgKCEgX2JmZF9kZWZhdWx0X2xpbmtfb3JkZXIgKGFiZmQsIGluZm8sIG8sIHApKQorCQlnb3RvIGVycm9yX3JldHVybjsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgLyogT3V0cHV0IGFueSBnbG9iYWwgc3ltYm9scyB0aGF0IGdvdCBjb252ZXJ0ZWQgdG8gbG9jYWwgaW4gYQorICAgICB2ZXJzaW9uIHNjcmlwdCBvciBkdWUgdG8gc3ltYm9sIHZpc2liaWxpdHkuICBXZSBkbyB0aGlzIGluIGEKKyAgICAgc2VwYXJhdGUgc3RlcCBzaW5jZSBFTEYgcmVxdWlyZXMgYWxsIGxvY2FsIHN5bWJvbHMgdG8gYXBwZWFyCisgICAgIHByaW9yIHRvIGFueSBnbG9iYWwgc3ltYm9scy4gIEZJWE1FOiBXZSBzaG91bGQgb25seSBkbyB0aGlzIGlmCisgICAgIHNvbWUgZ2xvYmFsIHN5bWJvbHMgd2VyZSwgaW4gZmFjdCwgY29udmVydGVkIHRvIGJlY29tZSBsb2NhbC4KKyAgICAgRklYTUU6IFdpbGwgdGhpcyB3b3JrIGNvcnJlY3RseSB3aXRoIHRoZSBJcml4IDUgbGlua2VyPyAgKi8KKyAgZW9pbmZvLmZhaWxlZCA9IEZBTFNFOworICBlb2luZm8uZmluZm8gPSAmZmluZm87CisgIGVvaW5mby5sb2NhbHN5bXMgPSBUUlVFOworICBlbGZfbGlua19oYXNoX3RyYXZlcnNlIChlbGZfaGFzaF90YWJsZSAoaW5mbyksIGVsZl9saW5rX291dHB1dF9leHRzeW0sCisJCQkgICZlb2luZm8pOworICBpZiAoZW9pbmZvLmZhaWxlZCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogVGhhdCB3cm90ZSBvdXQgYWxsIHRoZSBsb2NhbCBzeW1ib2xzLiAgRmluaXNoIHVwIHRoZSBzeW1ib2wgdGFibGUKKyAgICAgd2l0aCB0aGUgZ2xvYmFsIHN5bWJvbHMuIEV2ZW4gaWYgd2Ugd2FudCB0byBzdHJpcCBldmVyeXRoaW5nIHdlCisgICAgIGNhbiwgd2Ugc3RpbGwgbmVlZCB0byBkZWFsIHdpdGggdGhvc2UgZ2xvYmFsIHN5bWJvbHMgdGhhdCBnb3QKKyAgICAgY29udmVydGVkIHRvIGxvY2FsIGluIGEgdmVyc2lvbiBzY3JpcHQuICAqLworCisgIC8qIFRoZSBzaF9pbmZvIGZpZWxkIHJlY29yZHMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBub24gbG9jYWwgc3ltYm9sLiAgKi8KKyAgc3ltdGFiX2hkci0+c2hfaW5mbyA9IGJmZF9nZXRfc3ltY291bnQgKGFiZmQpOworCisgIGlmIChkeW5hbWljCisgICAgICAmJiBmaW5mby5keW5zeW1fc2VjLT5vdXRwdXRfc2VjdGlvbiAhPSBiZmRfYWJzX3NlY3Rpb25fcHRyKQorICAgIHsKKyAgICAgIEVsZl9JbnRlcm5hbF9TeW0gc3ltOworICAgICAgYmZkX2J5dGUgKmR5bnN5bSA9IGZpbmZvLmR5bnN5bV9zZWMtPmNvbnRlbnRzOworICAgICAgbG9uZyBsYXN0X2xvY2FsID0gMDsKKworICAgICAgLyogV3JpdGUgb3V0IHRoZSBzZWN0aW9uIHN5bWJvbHMgZm9yIHRoZSBvdXRwdXQgc2VjdGlvbnMuICAqLworICAgICAgaWYgKGluZm8tPnNoYXJlZCkKKwl7CisJICBhc2VjdGlvbiAqczsKKworCSAgc3ltLnN0X3NpemUgPSAwOworCSAgc3ltLnN0X25hbWUgPSAwOworCSAgc3ltLnN0X2luZm8gPSBFTEZfU1RfSU5GTyAoU1RCX0xPQ0FMLCBTVFRfU0VDVElPTik7CisJICBzeW0uc3Rfb3RoZXIgPSAwOworCisJICBmb3IgKHMgPSBhYmZkLT5zZWN0aW9uczsgcyAhPSBOVUxMOyBzID0gcy0+bmV4dCkKKwkgICAgeworCSAgICAgIGludCBpbmR4OworCSAgICAgIGJmZF9ieXRlICpkZXN0OworCSAgICAgIGxvbmcgZHluaW5keDsKKworCSAgICAgIGluZHggPSBlbGZfc2VjdGlvbl9kYXRhIChzKS0+dGhpc19pZHg7CisJICAgICAgZHluaW5keCA9IGVsZl9zZWN0aW9uX2RhdGEgKHMpLT5keW5pbmR4OworCSAgICAgIEJGRF9BU1NFUlQgKGluZHggPiAwKTsKKwkgICAgICBzeW0uc3Rfc2huZHggPSBpbmR4OworCSAgICAgIHN5bS5zdF92YWx1ZSA9IHMtPnZtYTsKKwkgICAgICBkZXN0ID0gZHluc3ltICsgZHluaW5keCAqIGJlZC0+cy0+c2l6ZW9mX3N5bTsKKwkgICAgICBiZWQtPnMtPnN3YXBfc3ltYm9sX291dCAoYWJmZCwgJnN5bSwgZGVzdCwgMCk7CisJICAgIH0KKworCSAgbGFzdF9sb2NhbCA9IGJmZF9jb3VudF9zZWN0aW9ucyAoYWJmZCk7CisJfQorCisgICAgICAvKiBXcml0ZSBvdXQgdGhlIGxvY2FsIGR5bnN5bXMuICAqLworICAgICAgaWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHlubG9jYWwpCisJeworCSAgc3RydWN0IGVsZl9saW5rX2xvY2FsX2R5bmFtaWNfZW50cnkgKmU7CisJICBmb3IgKGUgPSBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bmxvY2FsOyBlIDsgZSA9IGUtPm5leHQpCisJICAgIHsKKwkgICAgICBhc2VjdGlvbiAqczsKKwkgICAgICBiZmRfYnl0ZSAqZGVzdDsKKworCSAgICAgIHN5bS5zdF9zaXplID0gZS0+aXN5bS5zdF9zaXplOworCSAgICAgIHN5bS5zdF9vdGhlciA9IGUtPmlzeW0uc3Rfb3RoZXI7CisKKwkgICAgICAvKiBDb3B5IHRoZSBpbnRlcm5hbCBzeW1ib2wgYXMgaXMuCisJCSBOb3RlIHRoYXQgd2Ugc2F2ZWQgYSB3b3JkIG9mIHN0b3JhZ2UgYW5kIG92ZXJ3cm90ZQorCQkgdGhlIG9yaWdpbmFsIHN0X25hbWUgd2l0aCB0aGUgZHluc3RyX2luZGV4LiAgKi8KKwkgICAgICBzeW0gPSBlLT5pc3ltOworCisJICAgICAgaWYgKGUtPmlzeW0uc3Rfc2huZHggIT0gU0hOX1VOREVGCisJCSAgJiYgKGUtPmlzeW0uc3Rfc2huZHggPCBTSE5fTE9SRVNFUlZFCisJCSAgICAgIHx8IGUtPmlzeW0uc3Rfc2huZHggPiBTSE5fSElSRVNFUlZFKSkKKwkJeworCQkgIHMgPSBiZmRfc2VjdGlvbl9mcm9tX2VsZl9pbmRleCAoZS0+aW5wdXRfYmZkLAorCQkJCQkJICBlLT5pc3ltLnN0X3NobmR4KTsKKworCQkgIHN5bS5zdF9zaG5keCA9CisJCSAgICBlbGZfc2VjdGlvbl9kYXRhIChzLT5vdXRwdXRfc2VjdGlvbiktPnRoaXNfaWR4OworCQkgIHN5bS5zdF92YWx1ZSA9IChzLT5vdXRwdXRfc2VjdGlvbi0+dm1hCisJCQkJICArIHMtPm91dHB1dF9vZmZzZXQKKwkJCQkgICsgZS0+aXN5bS5zdF92YWx1ZSk7CisJCX0KKworCSAgICAgIGlmIChsYXN0X2xvY2FsIDwgZS0+ZHluaW5keCkKKwkJbGFzdF9sb2NhbCA9IGUtPmR5bmluZHg7CisKKwkgICAgICBkZXN0ID0gZHluc3ltICsgZS0+ZHluaW5keCAqIGJlZC0+cy0+c2l6ZW9mX3N5bTsKKwkgICAgICBiZWQtPnMtPnN3YXBfc3ltYm9sX291dCAoYWJmZCwgJnN5bSwgZGVzdCwgMCk7CisJICAgIH0KKwl9CisKKyAgICAgIGVsZl9zZWN0aW9uX2RhdGEgKGZpbmZvLmR5bnN5bV9zZWMtPm91dHB1dF9zZWN0aW9uKS0+dGhpc19oZHIuc2hfaW5mbyA9CisJbGFzdF9sb2NhbCArIDE7CisgICAgfQorCisgIC8qIFdlIGdldCB0aGUgZ2xvYmFsIHN5bWJvbHMgZnJvbSB0aGUgaGFzaCB0YWJsZS4gICovCisgIGVvaW5mby5mYWlsZWQgPSBGQUxTRTsKKyAgZW9pbmZvLmxvY2Fsc3ltcyA9IEZBTFNFOworICBlb2luZm8uZmluZm8gPSAmZmluZm87CisgIGVsZl9saW5rX2hhc2hfdHJhdmVyc2UgKGVsZl9oYXNoX3RhYmxlIChpbmZvKSwgZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSwKKwkJCSAgJmVvaW5mbyk7CisgIGlmIChlb2luZm8uZmFpbGVkKQorICAgIHJldHVybiBGQUxTRTsKKworICAvKiBJZiBiYWNrZW5kIG5lZWRzIHRvIG91dHB1dCBzb21lIHN5bWJvbHMgbm90IHByZXNlbnQgaW4gdGhlIGhhc2gKKyAgICAgdGFibGUsIGRvIGl0IG5vdy4gICovCisgIGlmIChiZWQtPmVsZl9iYWNrZW5kX291dHB1dF9hcmNoX3N5bXMpCisgICAgeworICAgICAgdHlwZWRlZiBiZmRfYm9vbGVhbiAoKm91dF9zeW1fZnVuYykKKwkodm9pZCAqLCBjb25zdCBjaGFyICosIEVsZl9JbnRlcm5hbF9TeW0gKiwgYXNlY3Rpb24gKiwKKwkgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKik7CisKKyAgICAgIGlmICghICgoKmJlZC0+ZWxmX2JhY2tlbmRfb3V0cHV0X2FyY2hfc3ltcykKKwkgICAgIChhYmZkLCBpbmZvLCAmZmluZm8sIChvdXRfc3ltX2Z1bmMpIGVsZl9saW5rX291dHB1dF9zeW0pKSkKKwlyZXR1cm4gRkFMU0U7CisgICAgfQorCisgIC8qIEZsdXNoIGFsbCBzeW1ib2xzIHRvIHRoZSBmaWxlLiAgKi8KKyAgaWYgKCEgZWxmX2xpbmtfZmx1c2hfb3V0cHV0X3N5bXMgKCZmaW5mbywgYmVkKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogTm93IHdlIGtub3cgdGhlIHNpemUgb2YgdGhlIHN5bXRhYiBzZWN0aW9uLiAgKi8KKyAgb2ZmICs9IHN5bXRhYl9oZHItPnNoX3NpemU7CisKKyAgc3ltdGFiX3NobmR4X2hkciA9ICZlbGZfdGRhdGEgKGFiZmQpLT5zeW10YWJfc2huZHhfaGRyOworICBpZiAoc3ltdGFiX3NobmR4X2hkci0+c2hfbmFtZSAhPSAwKQorICAgIHsKKyAgICAgIHN5bXRhYl9zaG5keF9oZHItPnNoX3R5cGUgPSBTSFRfU1lNVEFCX1NITkRYOworICAgICAgc3ltdGFiX3NobmR4X2hkci0+c2hfZW50c2l6ZSA9IHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bV9TaG5keCk7CisgICAgICBzeW10YWJfc2huZHhfaGRyLT5zaF9hZGRyYWxpZ24gPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW1fU2huZHgpOworICAgICAgYW10ID0gYmZkX2dldF9zeW1jb3VudCAoYWJmZCkgKiBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW1fU2huZHgpOworICAgICAgc3ltdGFiX3NobmR4X2hkci0+c2hfc2l6ZSA9IGFtdDsKKworICAgICAgb2ZmID0gX2JmZF9lbGZfYXNzaWduX2ZpbGVfcG9zaXRpb25fZm9yX3NlY3Rpb24gKHN5bXRhYl9zaG5keF9oZHIsCisJCQkJCQkgICAgICAgb2ZmLCBUUlVFKTsKKworICAgICAgaWYgKGJmZF9zZWVrIChhYmZkLCBzeW10YWJfc2huZHhfaGRyLT5zaF9vZmZzZXQsIFNFRUtfU0VUKSAhPSAwCisJICB8fCAoYmZkX2J3cml0ZSAoZmluZm8uc3ltc2huZHhidWYsIGFtdCwgYWJmZCkgIT0gYW10KSkKKwlyZXR1cm4gRkFMU0U7CisgICAgfQorCisKKyAgLyogRmluaXNoIHVwIGFuZCB3cml0ZSBvdXQgdGhlIHN5bWJvbCBzdHJpbmcgdGFibGUgKC5zdHJ0YWIpCisgICAgIHNlY3Rpb24uICAqLworICBzeW1zdHJ0YWJfaGRyID0gJmVsZl90ZGF0YSAoYWJmZCktPnN0cnRhYl9oZHI7CisgIC8qIHNoX25hbWUgd2FzIHNldCBpbiBwcmVwX2hlYWRlcnMuICAqLworICBzeW1zdHJ0YWJfaGRyLT5zaF90eXBlID0gU0hUX1NUUlRBQjsKKyAgc3ltc3RydGFiX2hkci0+c2hfZmxhZ3MgPSAwOworICBzeW1zdHJ0YWJfaGRyLT5zaF9hZGRyID0gMDsKKyAgc3ltc3RydGFiX2hkci0+c2hfc2l6ZSA9IF9iZmRfc3RyaW5ndGFiX3NpemUgKGZpbmZvLnN5bXN0cnRhYik7CisgIHN5bXN0cnRhYl9oZHItPnNoX2VudHNpemUgPSAwOworICBzeW1zdHJ0YWJfaGRyLT5zaF9saW5rID0gMDsKKyAgc3ltc3RydGFiX2hkci0+c2hfaW5mbyA9IDA7CisgIC8qIHNoX29mZnNldCBpcyBzZXQganVzdCBiZWxvdy4gICovCisgIHN5bXN0cnRhYl9oZHItPnNoX2FkZHJhbGlnbiA9IDE7CisKKyAgb2ZmID0gX2JmZF9lbGZfYXNzaWduX2ZpbGVfcG9zaXRpb25fZm9yX3NlY3Rpb24gKHN5bXN0cnRhYl9oZHIsIG9mZiwgVFJVRSk7CisgIGVsZl90ZGF0YSAoYWJmZCktPm5leHRfZmlsZV9wb3MgPSBvZmY7CisKKyAgaWYgKGJmZF9nZXRfc3ltY291bnQgKGFiZmQpID4gMCkKKyAgICB7CisgICAgICBpZiAoYmZkX3NlZWsgKGFiZmQsIHN5bXN0cnRhYl9oZHItPnNoX29mZnNldCwgU0VFS19TRVQpICE9IDAKKwkgIHx8ICEgX2JmZF9zdHJpbmd0YWJfZW1pdCAoYWJmZCwgZmluZm8uc3ltc3RydGFiKSkKKwlyZXR1cm4gRkFMU0U7CisgICAgfQorCisgIC8qIEFkanVzdCB0aGUgcmVsb2NzIHRvIGhhdmUgdGhlIGNvcnJlY3Qgc3ltYm9sIGluZGljZXMuICAqLworICBmb3IgKG8gPSBhYmZkLT5zZWN0aW9uczsgbyAhPSBOVUxMOyBvID0gby0+bmV4dCkKKyAgICB7CisgICAgICBpZiAoKG8tPmZsYWdzICYgU0VDX1JFTE9DKSA9PSAwKQorCWNvbnRpbnVlOworCisgICAgICBlbGZfbGlua19hZGp1c3RfcmVsb2NzIChhYmZkLCAmZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9oZHIsCisJCQkgICAgICBlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsX2NvdW50LAorCQkJICAgICAgZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9oYXNoZXMpOworICAgICAgaWYgKGVsZl9zZWN0aW9uX2RhdGEgKG8pLT5yZWxfaGRyMiAhPSBOVUxMKQorCWVsZl9saW5rX2FkanVzdF9yZWxvY3MgKGFiZmQsIGVsZl9zZWN0aW9uX2RhdGEgKG8pLT5yZWxfaGRyMiwKKwkJCQllbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsX2NvdW50MiwKKwkJCQkoZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9oYXNoZXMKKwkJCQkgKyBlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsX2NvdW50KSk7CisKKyAgICAgIC8qIFNldCB0aGUgcmVsb2NfY291bnQgZmllbGQgdG8gMCB0byBwcmV2ZW50IHdyaXRlX3JlbG9jcyBmcm9tCisJIHRyeWluZyB0byBzd2FwIHRoZSByZWxvY3Mgb3V0IGl0c2VsZi4gICovCisgICAgICBvLT5yZWxvY19jb3VudCA9IDA7CisgICAgfQorCisgIGlmIChkeW5hbWljICYmIGluZm8tPmNvbWJyZWxvYyAmJiBkeW5vYmogIT0gTlVMTCkKKyAgICByZWxhdGl2ZWNvdW50ID0gZWxmX2xpbmtfc29ydF9yZWxvY3MgKGFiZmQsIGluZm8sICZyZWxkeW4pOworCisgIC8qIElmIHdlIGFyZSBsaW5raW5nIGFnYWluc3QgYSBkeW5hbWljIG9iamVjdCwgb3IgZ2VuZXJhdGluZyBhCisgICAgIHNoYXJlZCBsaWJyYXJ5LCBmaW5pc2ggdXAgdGhlIGR5bmFtaWMgbGlua2luZyBpbmZvcm1hdGlvbi4gICovCisgIGlmIChkeW5hbWljKQorICAgIHsKKyAgICAgIGJmZF9ieXRlICpkeW5jb24sICpkeW5jb25lbmQ7CisKKyAgICAgIC8qIEZpeCB1cCAuZHluYW1pYyBlbnRyaWVzLiAgKi8KKyAgICAgIG8gPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoZHlub2JqLCAiLmR5bmFtaWMiKTsKKyAgICAgIEJGRF9BU1NFUlQgKG8gIT0gTlVMTCk7CisKKyAgICAgIGR5bmNvbiA9IG8tPmNvbnRlbnRzOworICAgICAgZHluY29uZW5kID0gby0+Y29udGVudHMgKyBvLT5fcmF3X3NpemU7CisgICAgICBmb3IgKDsgZHluY29uIDwgZHluY29uZW5kOyBkeW5jb24gKz0gYmVkLT5zLT5zaXplb2ZfZHluKQorCXsKKwkgIEVsZl9JbnRlcm5hbF9EeW4gZHluOworCSAgY29uc3QgY2hhciAqbmFtZTsKKwkgIHVuc2lnbmVkIGludCB0eXBlOworCisJICBiZWQtPnMtPnN3YXBfZHluX2luIChkeW5vYmosIGR5bmNvbiwgJmR5bik7CisKKwkgIHN3aXRjaCAoZHluLmRfdGFnKQorCSAgICB7CisJICAgIGRlZmF1bHQ6CisJICAgICAgY29udGludWU7CisJICAgIGNhc2UgRFRfTlVMTDoKKwkgICAgICBpZiAocmVsYXRpdmVjb3VudCA+IDAgJiYgZHluY29uICsgYmVkLT5zLT5zaXplb2ZfZHluIDwgZHluY29uZW5kKQorCQl7CisJCSAgc3dpdGNoIChlbGZfc2VjdGlvbl9kYXRhIChyZWxkeW4pLT50aGlzX2hkci5zaF90eXBlKQorCQkgICAgeworCQkgICAgY2FzZSBTSFRfUkVMOiBkeW4uZF90YWcgPSBEVF9SRUxDT1VOVDsgYnJlYWs7CisJCSAgICBjYXNlIFNIVF9SRUxBOiBkeW4uZF90YWcgPSBEVF9SRUxBQ09VTlQ7IGJyZWFrOworCQkgICAgZGVmYXVsdDogY29udGludWU7CisJCSAgICB9CisJCSAgZHluLmRfdW4uZF92YWwgPSByZWxhdGl2ZWNvdW50OworCQkgIHJlbGF0aXZlY291bnQgPSAwOworCQkgIGJyZWFrOworCQl9CisJICAgICAgY29udGludWU7CisKKwkgICAgY2FzZSBEVF9JTklUOgorCSAgICAgIG5hbWUgPSBpbmZvLT5pbml0X2Z1bmN0aW9uOworCSAgICAgIGdvdG8gZ2V0X3N5bTsKKwkgICAgY2FzZSBEVF9GSU5JOgorCSAgICAgIG5hbWUgPSBpbmZvLT5maW5pX2Z1bmN0aW9uOworCSAgICBnZXRfc3ltOgorCSAgICAgIHsKKwkJc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmg7CisKKwkJaCA9IGVsZl9saW5rX2hhc2hfbG9va3VwIChlbGZfaGFzaF90YWJsZSAoaW5mbyksIG5hbWUsCisJCQkJCSAgRkFMU0UsIEZBTFNFLCBUUlVFKTsKKwkJaWYgKGggIT0gTlVMTAorCQkgICAgJiYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZmluZWQKKwkJCXx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZndlYWspKQorCQkgIHsKKwkJICAgIGR5bi5kX3VuLmRfdmFsID0gaC0+cm9vdC51LmRlZi52YWx1ZTsKKwkJICAgIG8gPSBoLT5yb290LnUuZGVmLnNlY3Rpb247CisJCSAgICBpZiAoby0+b3V0cHV0X3NlY3Rpb24gIT0gTlVMTCkKKwkJICAgICAgZHluLmRfdW4uZF92YWwgKz0gKG8tPm91dHB1dF9zZWN0aW9uLT52bWEKKwkJCQkJICsgby0+b3V0cHV0X29mZnNldCk7CisJCSAgICBlbHNlCisJCSAgICAgIHsKKwkJCS8qIFRoZSBzeW1ib2wgaXMgaW1wb3J0ZWQgZnJvbSBhbm90aGVyIHNoYXJlZAorCQkJICAgbGlicmFyeSBhbmQgZG9lcyBub3QgYXBwbHkgdG8gdGhpcyBvbmUuICAqLworCQkJZHluLmRfdW4uZF92YWwgPSAwOworCQkgICAgICB9CisJCSAgICBicmVhazsKKwkJICB9CisJICAgICAgfQorCSAgICAgIGNvbnRpbnVlOworCisJICAgIGNhc2UgRFRfUFJFSU5JVF9BUlJBWVNaOgorCSAgICAgIG5hbWUgPSAiLnByZWluaXRfYXJyYXkiOworCSAgICAgIGdvdG8gZ2V0X3NpemU7CisJICAgIGNhc2UgRFRfSU5JVF9BUlJBWVNaOgorCSAgICAgIG5hbWUgPSAiLmluaXRfYXJyYXkiOworCSAgICAgIGdvdG8gZ2V0X3NpemU7CisJICAgIGNhc2UgRFRfRklOSV9BUlJBWVNaOgorCSAgICAgIG5hbWUgPSAiLmZpbmlfYXJyYXkiOworCSAgICBnZXRfc2l6ZToKKwkgICAgICBvID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsIG5hbWUpOworCSAgICAgIGlmIChvID09IE5VTEwpCisJCXsKKwkJICAoKl9iZmRfZXJyb3JfaGFuZGxlcikKKwkJICAgIChfKCIlczogY291bGQgbm90IGZpbmQgb3V0cHV0IHNlY3Rpb24gJXMiKSwKKwkJICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwgbmFtZSk7CisJCSAgZ290byBlcnJvcl9yZXR1cm47CisJCX0KKwkgICAgICBpZiAoby0+X3Jhd19zaXplID09IDApCisJCSgqX2JmZF9lcnJvcl9oYW5kbGVyKQorCQkgIChfKCJ3YXJuaW5nOiAlcyBzZWN0aW9uIGhhcyB6ZXJvIHNpemUiKSwgbmFtZSk7CisJICAgICAgZHluLmRfdW4uZF92YWwgPSBvLT5fcmF3X3NpemU7CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBEVF9QUkVJTklUX0FSUkFZOgorCSAgICAgIG5hbWUgPSAiLnByZWluaXRfYXJyYXkiOworCSAgICAgIGdvdG8gZ2V0X3ZtYTsKKwkgICAgY2FzZSBEVF9JTklUX0FSUkFZOgorCSAgICAgIG5hbWUgPSAiLmluaXRfYXJyYXkiOworCSAgICAgIGdvdG8gZ2V0X3ZtYTsKKwkgICAgY2FzZSBEVF9GSU5JX0FSUkFZOgorCSAgICAgIG5hbWUgPSAiLmZpbmlfYXJyYXkiOworCSAgICAgIGdvdG8gZ2V0X3ZtYTsKKworCSAgICBjYXNlIERUX0hBU0g6CisJICAgICAgbmFtZSA9ICIuaGFzaCI7CisJICAgICAgZ290byBnZXRfdm1hOworCSAgICBjYXNlIERUX1NUUlRBQjoKKwkgICAgICBuYW1lID0gIi5keW5zdHIiOworCSAgICAgIGdvdG8gZ2V0X3ZtYTsKKwkgICAgY2FzZSBEVF9TWU1UQUI6CisJICAgICAgbmFtZSA9ICIuZHluc3ltIjsKKwkgICAgICBnb3RvIGdldF92bWE7CisJICAgIGNhc2UgRFRfVkVSREVGOgorCSAgICAgIG5hbWUgPSAiLmdudS52ZXJzaW9uX2QiOworCSAgICAgIGdvdG8gZ2V0X3ZtYTsKKwkgICAgY2FzZSBEVF9WRVJORUVEOgorCSAgICAgIG5hbWUgPSAiLmdudS52ZXJzaW9uX3IiOworCSAgICAgIGdvdG8gZ2V0X3ZtYTsKKwkgICAgY2FzZSBEVF9WRVJTWU06CisJICAgICAgbmFtZSA9ICIuZ251LnZlcnNpb24iOworCSAgICBnZXRfdm1hOgorCSAgICAgIG8gPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgbmFtZSk7CisJICAgICAgaWYgKG8gPT0gTlVMTCkKKwkJeworCQkgICgqX2JmZF9lcnJvcl9oYW5kbGVyKQorCQkgICAgKF8oIiVzOiBjb3VsZCBub3QgZmluZCBvdXRwdXQgc2VjdGlvbiAlcyIpLAorCQkgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLCBuYW1lKTsKKwkJICBnb3RvIGVycm9yX3JldHVybjsKKwkJfQorCSAgICAgIGR5bi5kX3VuLmRfcHRyID0gby0+dm1hOworCSAgICAgIGJyZWFrOworCisJICAgIGNhc2UgRFRfUkVMOgorCSAgICBjYXNlIERUX1JFTEE6CisJICAgIGNhc2UgRFRfUkVMU1o6CisJICAgIGNhc2UgRFRfUkVMQVNaOgorCSAgICAgIGlmIChkeW4uZF90YWcgPT0gRFRfUkVMIHx8IGR5bi5kX3RhZyA9PSBEVF9SRUxTWikKKwkJdHlwZSA9IFNIVF9SRUw7CisJICAgICAgZWxzZQorCQl0eXBlID0gU0hUX1JFTEE7CisJICAgICAgZHluLmRfdW4uZF92YWwgPSAwOworCSAgICAgIGZvciAoaSA9IDE7IGkgPCBlbGZfbnVtc2VjdGlvbnMgKGFiZmQpOyBpKyspCisJCXsKKwkJICBFbGZfSW50ZXJuYWxfU2hkciAqaGRyOworCisJCSAgaGRyID0gZWxmX2VsZnNlY3Rpb25zIChhYmZkKVtpXTsKKwkJICBpZiAoaGRyLT5zaF90eXBlID09IHR5cGUKKwkJICAgICAgJiYgKGhkci0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MpICE9IDApCisJCSAgICB7CisJCSAgICAgIGlmIChkeW4uZF90YWcgPT0gRFRfUkVMU1ogfHwgZHluLmRfdGFnID09IERUX1JFTEFTWikKKwkJCWR5bi5kX3VuLmRfdmFsICs9IGhkci0+c2hfc2l6ZTsKKwkJICAgICAgZWxzZQorCQkJeworCQkJICBpZiAoZHluLmRfdW4uZF92YWwgPT0gMAorCQkJICAgICAgfHwgaGRyLT5zaF9hZGRyIDwgZHluLmRfdW4uZF92YWwpCisJCQkgICAgZHluLmRfdW4uZF92YWwgPSBoZHItPnNoX2FkZHI7CisJCQl9CisJCSAgICB9CisJCX0KKwkgICAgICBicmVhazsKKwkgICAgfQorCSAgYmVkLT5zLT5zd2FwX2R5bl9vdXQgKGR5bm9iaiwgJmR5biwgZHluY29uKTsKKwl9CisgICAgfQorCisgIC8qIElmIHdlIGhhdmUgY3JlYXRlZCBhbnkgZHluYW1pYyBzZWN0aW9ucywgdGhlbiBvdXRwdXQgdGhlbS4gICovCisgIGlmIChkeW5vYmogIT0gTlVMTCkKKyAgICB7CisgICAgICBpZiAoISAoKmJlZC0+ZWxmX2JhY2tlbmRfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpIChhYmZkLCBpbmZvKSkKKwlnb3RvIGVycm9yX3JldHVybjsKKworICAgICAgZm9yIChvID0gZHlub2JqLT5zZWN0aW9uczsgbyAhPSBOVUxMOyBvID0gby0+bmV4dCkKKwl7CisJICBpZiAoKG8tPmZsYWdzICYgU0VDX0hBU19DT05URU5UUykgPT0gMAorCSAgICAgIHx8IG8tPl9yYXdfc2l6ZSA9PSAwCisJICAgICAgfHwgby0+b3V0cHV0X3NlY3Rpb24gPT0gYmZkX2Fic19zZWN0aW9uX3B0cikKKwkgICAgY29udGludWU7CisJICBpZiAoKG8tPmZsYWdzICYgU0VDX0xJTktFUl9DUkVBVEVEKSA9PSAwKQorCSAgICB7CisJICAgICAgLyogQXQgdGhpcyBwb2ludCwgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBzZWN0aW9ucworCQkgY3JlYXRlZCBieSBfYmZkX2VsZl9saW5rX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zLiAgKi8KKwkgICAgICBjb250aW51ZTsKKwkgICAgfQorCSAgaWYgKChlbGZfc2VjdGlvbl9kYXRhIChvLT5vdXRwdXRfc2VjdGlvbiktPnRoaXNfaGRyLnNoX3R5cGUKKwkgICAgICAgIT0gU0hUX1NUUlRBQikKKwkgICAgICB8fCBzdHJjbXAgKGJmZF9nZXRfc2VjdGlvbl9uYW1lIChhYmZkLCBvKSwgIi5keW5zdHIiKSAhPSAwKQorCSAgICB7CisJICAgICAgaWYgKCEgYmZkX3NldF9zZWN0aW9uX2NvbnRlbnRzIChhYmZkLCBvLT5vdXRwdXRfc2VjdGlvbiwKKwkJCQkJICAgICAgby0+Y29udGVudHMsCisJCQkJCSAgICAgIChmaWxlX3B0cikgby0+b3V0cHV0X29mZnNldCwKKwkJCQkJICAgICAgby0+X3Jhd19zaXplKSkKKwkJZ290byBlcnJvcl9yZXR1cm47CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIC8qIFRoZSBjb250ZW50cyBvZiB0aGUgLmR5bnN0ciBzZWN0aW9uIGFyZSBhY3R1YWxseSBpbiBhCisJCSBzdHJpbmd0YWIuICAqLworCSAgICAgIG9mZiA9IGVsZl9zZWN0aW9uX2RhdGEgKG8tPm91dHB1dF9zZWN0aW9uKS0+dGhpc19oZHIuc2hfb2Zmc2V0OworCSAgICAgIGlmIChiZmRfc2VlayAoYWJmZCwgb2ZmLCBTRUVLX1NFVCkgIT0gMAorCQkgIHx8ICEgX2JmZF9lbGZfc3RydGFiX2VtaXQgKGFiZmQsCisJCQkJCSAgICAgZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5zdHIpKQorCQlnb3RvIGVycm9yX3JldHVybjsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgaWYgKGluZm8tPnJlbG9jYXRhYmxlKQorICAgIHsKKyAgICAgIGJmZF9ib29sZWFuIGZhaWxlZCA9IEZBTFNFOworCisgICAgICBiZmRfbWFwX292ZXJfc2VjdGlvbnMgKGFiZmQsIGJmZF9lbGZfc2V0X2dyb3VwX2NvbnRlbnRzLCAmZmFpbGVkKTsKKyAgICAgIGlmIChmYWlsZWQpCisJZ290byBlcnJvcl9yZXR1cm47CisgICAgfQorCisgIC8qIElmIHdlIGhhdmUgb3B0aW1pemVkIHN0YWJzIHN0cmluZ3MsIG91dHB1dCB0aGVtLiAgKi8KKyAgaWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+c3RhYl9pbmZvICE9IE5VTEwpCisgICAgeworICAgICAgaWYgKCEgX2JmZF93cml0ZV9zdGFiX3N0cmluZ3MgKGFiZmQsICZlbGZfaGFzaF90YWJsZSAoaW5mbyktPnN0YWJfaW5mbykpCisJZ290byBlcnJvcl9yZXR1cm47CisgICAgfQorCisgIGlmIChpbmZvLT5laF9mcmFtZV9oZHIpCisgICAgeworICAgICAgaWYgKCEgX2JmZF9lbGZfd3JpdGVfc2VjdGlvbl9laF9mcmFtZV9oZHIgKGFiZmQsIGluZm8pKQorCWdvdG8gZXJyb3JfcmV0dXJuOworICAgIH0KKworICBpZiAoZmluZm8uc3ltc3RydGFiICE9IE5VTEwpCisgICAgX2JmZF9zdHJpbmd0YWJfZnJlZSAoZmluZm8uc3ltc3RydGFiKTsKKyAgaWYgKGZpbmZvLmNvbnRlbnRzICE9IE5VTEwpCisgICAgZnJlZSAoZmluZm8uY29udGVudHMpOworICBpZiAoZmluZm8uZXh0ZXJuYWxfcmVsb2NzICE9IE5VTEwpCisgICAgZnJlZSAoZmluZm8uZXh0ZXJuYWxfcmVsb2NzKTsKKyAgaWYgKGZpbmZvLmludGVybmFsX3JlbG9jcyAhPSBOVUxMKQorICAgIGZyZWUgKGZpbmZvLmludGVybmFsX3JlbG9jcyk7CisgIGlmIChmaW5mby5leHRlcm5hbF9zeW1zICE9IE5VTEwpCisgICAgZnJlZSAoZmluZm8uZXh0ZXJuYWxfc3ltcyk7CisgIGlmIChmaW5mby5sb2NzeW1fc2huZHggIT0gTlVMTCkKKyAgICBmcmVlIChmaW5mby5sb2NzeW1fc2huZHgpOworICBpZiAoZmluZm8uaW50ZXJuYWxfc3ltcyAhPSBOVUxMKQorICAgIGZyZWUgKGZpbmZvLmludGVybmFsX3N5bXMpOworICBpZiAoZmluZm8uaW5kaWNlcyAhPSBOVUxMKQorICAgIGZyZWUgKGZpbmZvLmluZGljZXMpOworICBpZiAoZmluZm8uc2VjdGlvbnMgIT0gTlVMTCkKKyAgICBmcmVlIChmaW5mby5zZWN0aW9ucyk7CisgIGlmIChmaW5mby5zeW1idWYgIT0gTlVMTCkKKyAgICBmcmVlIChmaW5mby5zeW1idWYpOworICBpZiAoZmluZm8uc3ltc2huZHhidWYgIT0gTlVMTCkKKyAgICBmcmVlIChmaW5mby5zeW1zaG5keGJ1Zik7CisgIGZvciAobyA9IGFiZmQtPnNlY3Rpb25zOyBvICE9IE5VTEw7IG8gPSBvLT5uZXh0KQorICAgIHsKKyAgICAgIGlmICgoby0+ZmxhZ3MgJiBTRUNfUkVMT0MpICE9IDAKKwkgICYmIGVsZl9zZWN0aW9uX2RhdGEgKG8pLT5yZWxfaGFzaGVzICE9IE5VTEwpCisJZnJlZSAoZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9oYXNoZXMpOworICAgIH0KKworICBlbGZfdGRhdGEgKGFiZmQpLT5saW5rZXIgPSBUUlVFOworCisgIHJldHVybiBUUlVFOworCisgZXJyb3JfcmV0dXJuOgorICBpZiAoZmluZm8uc3ltc3RydGFiICE9IE5VTEwpCisgICAgX2JmZF9zdHJpbmd0YWJfZnJlZSAoZmluZm8uc3ltc3RydGFiKTsKKyAgaWYgKGZpbmZvLmNvbnRlbnRzICE9IE5VTEwpCisgICAgZnJlZSAoZmluZm8uY29udGVudHMpOworICBpZiAoZmluZm8uZXh0ZXJuYWxfcmVsb2NzICE9IE5VTEwpCisgICAgZnJlZSAoZmluZm8uZXh0ZXJuYWxfcmVsb2NzKTsKKyAgaWYgKGZpbmZvLmludGVybmFsX3JlbG9jcyAhPSBOVUxMKQorICAgIGZyZWUgKGZpbmZvLmludGVybmFsX3JlbG9jcyk7CisgIGlmIChmaW5mby5leHRlcm5hbF9zeW1zICE9IE5VTEwpCisgICAgZnJlZSAoZmluZm8uZXh0ZXJuYWxfc3ltcyk7CisgIGlmIChmaW5mby5sb2NzeW1fc2huZHggIT0gTlVMTCkKKyAgICBmcmVlIChmaW5mby5sb2NzeW1fc2huZHgpOworICBpZiAoZmluZm8uaW50ZXJuYWxfc3ltcyAhPSBOVUxMKQorICAgIGZyZWUgKGZpbmZvLmludGVybmFsX3N5bXMpOworICBpZiAoZmluZm8uaW5kaWNlcyAhPSBOVUxMKQorICAgIGZyZWUgKGZpbmZvLmluZGljZXMpOworICBpZiAoZmluZm8uc2VjdGlvbnMgIT0gTlVMTCkKKyAgICBmcmVlIChmaW5mby5zZWN0aW9ucyk7CisgIGlmIChmaW5mby5zeW1idWYgIT0gTlVMTCkKKyAgICBmcmVlIChmaW5mby5zeW1idWYpOworICBpZiAoZmluZm8uc3ltc2huZHhidWYgIT0gTlVMTCkKKyAgICBmcmVlIChmaW5mby5zeW1zaG5keGJ1Zik7CisgIGZvciAobyA9IGFiZmQtPnNlY3Rpb25zOyBvICE9IE5VTEw7IG8gPSBvLT5uZXh0KQorICAgIHsKKyAgICAgIGlmICgoby0+ZmxhZ3MgJiBTRUNfUkVMT0MpICE9IDAKKwkgICYmIGVsZl9zZWN0aW9uX2RhdGEgKG8pLT5yZWxfaGFzaGVzICE9IE5VTEwpCisJZnJlZSAoZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9oYXNoZXMpOworICAgIH0KKworICByZXR1cm4gRkFMU0U7Cit9CisMCisvKiBHYXJiYWdlIGNvbGxlY3QgdW51c2VkIHNlY3Rpb25zLiAgKi8KKworLyogVGhlIG1hcmsgcGhhc2Ugb2YgZ2FyYmFnZSBjb2xsZWN0aW9uLiAgRm9yIGEgZ2l2ZW4gc2VjdGlvbiwgbWFyaworICAgaXQgYW5kIGFueSBzZWN0aW9ucyBpbiB0aGlzIHNlY3Rpb24ncyBncm91cCwgYW5kIGFsbCB0aGUgc2VjdGlvbnMKKyAgIHdoaWNoIGRlZmluZSBzeW1ib2xzIHRvIHdoaWNoIGl0IHJlZmVycy4gICovCisKK3R5cGVkZWYgYXNlY3Rpb24gKiAoKmdjX21hcmtfaG9va19mbikKKyAgKGFzZWN0aW9uICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIEVsZl9JbnRlcm5hbF9SZWxhICosCisgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCBFbGZfSW50ZXJuYWxfU3ltICopOworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2VsZl9nY19tYXJrIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKKwkgICAgIGFzZWN0aW9uICpzZWMsCisJICAgICBnY19tYXJrX2hvb2tfZm4gZ2NfbWFya19ob29rKQoreworICBiZmRfYm9vbGVhbiByZXQ7CisgIGFzZWN0aW9uICpncm91cF9zZWM7CisKKyAgc2VjLT5nY19tYXJrID0gMTsKKworICAvKiBNYXJrIGFsbCB0aGUgc2VjdGlvbnMgaW4gdGhlIGdyb3VwLiAgKi8KKyAgZ3JvdXBfc2VjID0gZWxmX3NlY3Rpb25fZGF0YSAoc2VjKS0+bmV4dF9pbl9ncm91cDsKKyAgaWYgKGdyb3VwX3NlYyAmJiAhZ3JvdXBfc2VjLT5nY19tYXJrKQorICAgIGlmICghZWxmX2djX21hcmsgKGluZm8sIGdyb3VwX3NlYywgZ2NfbWFya19ob29rKSkKKyAgICAgIHJldHVybiBGQUxTRTsKKworICAvKiBMb29rIHRocm91Z2ggdGhlIHNlY3Rpb24gcmVsb2NzLiAgKi8KKyAgcmV0ID0gVFJVRTsKKyAgaWYgKChzZWMtPmZsYWdzICYgU0VDX1JFTE9DKSAhPSAwICYmIHNlYy0+cmVsb2NfY291bnQgPiAwKQorICAgIHsKKyAgICAgIEVsZl9JbnRlcm5hbF9SZWxhICpyZWxzdGFydCwgKnJlbCwgKnJlbGVuZDsKKyAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzeW10YWJfaGRyOworICAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipzeW1faGFzaGVzOworICAgICAgc2l6ZV90IG5sb2NzeW1zOworICAgICAgc2l6ZV90IGV4dHN5bW9mZjsKKyAgICAgIGJmZCAqaW5wdXRfYmZkID0gc2VjLT5vd25lcjsKKyAgICAgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoaW5wdXRfYmZkKTsKKyAgICAgIEVsZl9JbnRlcm5hbF9TeW0gKmlzeW0gPSBOVUxMOworICAgICAgaW50IHJfc3ltX3NoaWZ0OworCisgICAgICBzeW10YWJfaGRyID0gJmVsZl90ZGF0YSAoaW5wdXRfYmZkKS0+c3ltdGFiX2hkcjsKKyAgICAgIHN5bV9oYXNoZXMgPSBlbGZfc3ltX2hhc2hlcyAoaW5wdXRfYmZkKTsKKworICAgICAgLyogUmVhZCB0aGUgbG9jYWwgc3ltYm9scy4gICovCisgICAgICBpZiAoZWxmX2JhZF9zeW10YWIgKGlucHV0X2JmZCkpCisJeworCSAgbmxvY3N5bXMgPSBzeW10YWJfaGRyLT5zaF9zaXplIC8gYmVkLT5zLT5zaXplb2Zfc3ltOworCSAgZXh0c3ltb2ZmID0gMDsKKwl9CisgICAgICBlbHNlCisJZXh0c3ltb2ZmID0gbmxvY3N5bXMgPSBzeW10YWJfaGRyLT5zaF9pbmZvOworCisgICAgICBpc3ltID0gKEVsZl9JbnRlcm5hbF9TeW0gKikgc3ltdGFiX2hkci0+Y29udGVudHM7CisgICAgICBpZiAoaXN5bSA9PSBOVUxMICYmIG5sb2NzeW1zICE9IDApCisJeworCSAgaXN5bSA9IGJmZF9lbGZfZ2V0X2VsZl9zeW1zIChpbnB1dF9iZmQsIHN5bXRhYl9oZHIsIG5sb2NzeW1zLCAwLAorCQkJCSAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKKwkgIGlmIChpc3ltID09IE5VTEwpCisJICAgIHJldHVybiBGQUxTRTsKKwl9CisKKyAgICAgIC8qIFJlYWQgdGhlIHJlbG9jYXRpb25zLiAgKi8KKyAgICAgIHJlbHN0YXJ0ID0gX2JmZF9lbGZfbGlua19yZWFkX3JlbG9jcyAoaW5wdXRfYmZkLCBzZWMsIE5VTEwsIE5VTEwsCisJCQkJCSAgICBpbmZvLT5rZWVwX21lbW9yeSk7CisgICAgICBpZiAocmVsc3RhcnQgPT0gTlVMTCkKKwl7CisJICByZXQgPSBGQUxTRTsKKwkgIGdvdG8gb3V0MTsKKwl9CisgICAgICByZWxlbmQgPSByZWxzdGFydCArIHNlYy0+cmVsb2NfY291bnQgKiBiZWQtPnMtPmludF9yZWxzX3Blcl9leHRfcmVsOworCisgICAgICBpZiAoYmVkLT5zLT5hcmNoX3NpemUgPT0gMzIpCisJcl9zeW1fc2hpZnQgPSA4OworICAgICAgZWxzZQorCXJfc3ltX3NoaWZ0ID0gMzI7CisKKyAgICAgIGZvciAocmVsID0gcmVsc3RhcnQ7IHJlbCA8IHJlbGVuZDsgcmVsKyspCisJeworCSAgdW5zaWduZWQgbG9uZyByX3N5bW5keDsKKwkgIGFzZWN0aW9uICpyc2VjOworCSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmg7CisKKwkgIHJfc3ltbmR4ID0gcmVsLT5yX2luZm8gPj4gcl9zeW1fc2hpZnQ7CisJICBpZiAocl9zeW1uZHggPT0gMCkKKwkgICAgY29udGludWU7CisKKwkgIGlmIChyX3N5bW5keCA+PSBubG9jc3ltcworCSAgICAgIHx8IEVMRl9TVF9CSU5EIChpc3ltW3Jfc3ltbmR4XS5zdF9pbmZvKSAhPSBTVEJfTE9DQUwpCisJICAgIHsKKwkgICAgICBoID0gc3ltX2hhc2hlc1tyX3N5bW5keCAtIGV4dHN5bW9mZl07CisJICAgICAgcnNlYyA9ICgqZ2NfbWFya19ob29rKSAoc2VjLCBpbmZvLCByZWwsIGgsIE5VTEwpOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICByc2VjID0gKCpnY19tYXJrX2hvb2spIChzZWMsIGluZm8sIHJlbCwgTlVMTCwgJmlzeW1bcl9zeW1uZHhdKTsKKwkgICAgfQorCisJICBpZiAocnNlYyAmJiAhcnNlYy0+Z2NfbWFyaykKKwkgICAgeworCSAgICAgIGlmIChiZmRfZ2V0X2ZsYXZvdXIgKHJzZWMtPm93bmVyKSAhPSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQorCQlyc2VjLT5nY19tYXJrID0gMTsKKwkgICAgICBlbHNlIGlmICghZWxmX2djX21hcmsgKGluZm8sIHJzZWMsIGdjX21hcmtfaG9vaykpCisJCXsKKwkJICByZXQgPSBGQUxTRTsKKwkJICBnb3RvIG91dDI7CisJCX0KKwkgICAgfQorCX0KKworICAgIG91dDI6CisgICAgICBpZiAoZWxmX3NlY3Rpb25fZGF0YSAoc2VjKS0+cmVsb2NzICE9IHJlbHN0YXJ0KQorCWZyZWUgKHJlbHN0YXJ0KTsKKyAgICBvdXQxOgorICAgICAgaWYgKGlzeW0gIT0gTlVMTCAmJiBzeW10YWJfaGRyLT5jb250ZW50cyAhPSAodW5zaWduZWQgY2hhciAqKSBpc3ltKQorCXsKKwkgIGlmICghIGluZm8tPmtlZXBfbWVtb3J5KQorCSAgICBmcmVlIChpc3ltKTsKKwkgIGVsc2UKKwkgICAgc3ltdGFiX2hkci0+Y29udGVudHMgPSAodW5zaWduZWQgY2hhciAqKSBpc3ltOworCX0KKyAgICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworLyogU3dlZXAgc3ltYm9scyBpbiBzd2VwdCBzZWN0aW9ucy4gIENhbGxlZCB2aWEgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZS4gICovCisKK3N0YXRpYyBiZmRfYm9vbGVhbgorZWxmX2djX3N3ZWVwX3N5bWJvbCAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgsIHZvaWQgKmlkeHB0cikKK3sKKyAgaW50ICppZHggPSBpZHhwdHI7CisKKyAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCisgICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOworCisgIGlmIChoLT5keW5pbmR4ICE9IC0xCisgICAgICAmJiAoKGgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX2RlZmluZWQKKwkgICAmJiBoLT5yb290LnR5cGUgIT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKQorCSAgfHwgaC0+cm9vdC51LmRlZi5zZWN0aW9uLT5nY19tYXJrKSkKKyAgICBoLT5keW5pbmR4ID0gKCppZHgpKys7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qIFRoZSBzd2VlcCBwaGFzZSBvZiBnYXJiYWdlIGNvbGxlY3Rpb24uICBSZW1vdmUgYWxsIGdhcmJhZ2Ugc2VjdGlvbnMuICAqLworCit0eXBlZGVmIGJmZF9ib29sZWFuICgqZ2Nfc3dlZXBfaG9va19mbikKKyAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBhc2VjdGlvbiAqLCBjb25zdCBFbGZfSW50ZXJuYWxfUmVsYSAqKTsKKworc3RhdGljIGJmZF9ib29sZWFuCitlbGZfZ2Nfc3dlZXAgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLCBnY19zd2VlcF9ob29rX2ZuIGdjX3N3ZWVwX2hvb2spCit7CisgIGJmZCAqc3ViOworCisgIGZvciAoc3ViID0gaW5mby0+aW5wdXRfYmZkczsgc3ViICE9IE5VTEw7IHN1YiA9IHN1Yi0+bGlua19uZXh0KQorICAgIHsKKyAgICAgIGFzZWN0aW9uICpvOworCisgICAgICBpZiAoYmZkX2dldF9mbGF2b3VyIChzdWIpICE9IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCisJY29udGludWU7CisKKyAgICAgIGZvciAobyA9IHN1Yi0+c2VjdGlvbnM7IG8gIT0gTlVMTDsgbyA9IG8tPm5leHQpCisJeworCSAgLyogS2VlcCBzcGVjaWFsIHNlY3Rpb25zLiAgS2VlcCAuZGVidWcgc2VjdGlvbnMuICAqLworCSAgaWYgKChvLT5mbGFncyAmIFNFQ19MSU5LRVJfQ1JFQVRFRCkKKwkgICAgICB8fCAoby0+ZmxhZ3MgJiBTRUNfREVCVUdHSU5HKSkKKwkgICAgby0+Z2NfbWFyayA9IDE7CisKKwkgIGlmIChvLT5nY19tYXJrKQorCSAgICBjb250aW51ZTsKKworCSAgLyogU2tpcCBzd2VlcGluZyBzZWN0aW9ucyBhbHJlYWR5IGV4Y2x1ZGVkLiAgKi8KKwkgIGlmIChvLT5mbGFncyAmIFNFQ19FWENMVURFKQorCSAgICBjb250aW51ZTsKKworCSAgLyogU2luY2UgdGhpcyBpcyBlYXJseSBpbiB0aGUgbGluayBwcm9jZXNzLCBpdCBpcyBzaW1wbGUKKwkgICAgIHRvIHJlbW92ZSBhIHNlY3Rpb24gZnJvbSB0aGUgb3V0cHV0LiAgKi8KKwkgIG8tPmZsYWdzIHw9IFNFQ19FWENMVURFOworCisJICAvKiBCdXQgd2UgYWxzbyBoYXZlIHRvIHVwZGF0ZSBzb21lIG9mIHRoZSByZWxvY2F0aW9uCisJICAgICBpbmZvIHdlIGNvbGxlY3RlZCBiZWZvcmUuICAqLworCSAgaWYgKGdjX3N3ZWVwX2hvb2sKKwkgICAgICAmJiAoby0+ZmxhZ3MgJiBTRUNfUkVMT0MpICYmIG8tPnJlbG9jX2NvdW50ID4gMCkKKwkgICAgeworCSAgICAgIEVsZl9JbnRlcm5hbF9SZWxhICppbnRlcm5hbF9yZWxvY3M7CisJICAgICAgYmZkX2Jvb2xlYW4gcjsKKworCSAgICAgIGludGVybmFsX3JlbG9jcworCQk9IF9iZmRfZWxmX2xpbmtfcmVhZF9yZWxvY3MgKG8tPm93bmVyLCBvLCBOVUxMLCBOVUxMLAorCQkJCQkgICAgIGluZm8tPmtlZXBfbWVtb3J5KTsKKwkgICAgICBpZiAoaW50ZXJuYWxfcmVsb2NzID09IE5VTEwpCisJCXJldHVybiBGQUxTRTsKKworCSAgICAgIHIgPSAoKmdjX3N3ZWVwX2hvb2spIChvLT5vd25lciwgaW5mbywgbywgaW50ZXJuYWxfcmVsb2NzKTsKKworCSAgICAgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsb2NzICE9IGludGVybmFsX3JlbG9jcykKKwkJZnJlZSAoaW50ZXJuYWxfcmVsb2NzKTsKKworCSAgICAgIGlmICghcikKKwkJcmV0dXJuIEZBTFNFOworCSAgICB9CisJfQorICAgIH0KKworICAvKiBSZW1vdmUgdGhlIHN5bWJvbHMgdGhhdCB3ZXJlIGluIHRoZSBzd2VwdCBzZWN0aW9ucyBmcm9tIHRoZSBkeW5hbWljCisgICAgIHN5bWJvbCB0YWJsZS4gIEdDRklYTUU6IEFueW9uZSBrbm93IGhvdyB0byBnZXQgdGhlbSBvdXQgb2YgdGhlCisgICAgIHN0YXRpYyBzeW1ib2wgdGFibGUgYXMgd2VsbD8gICovCisgIHsKKyAgICBpbnQgaSA9IDA7CisKKyAgICBlbGZfbGlua19oYXNoX3RyYXZlcnNlIChlbGZfaGFzaF90YWJsZSAoaW5mbyksIGVsZl9nY19zd2VlcF9zeW1ib2wsICZpKTsKKworICAgIGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3ltY291bnQgPSBpOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qIFByb3BhZ2F0ZSBjb2xsZWN0ZWQgdnRhYmxlIGluZm9ybWF0aW9uLiAgVGhpcyBpcyBjYWxsZWQgdGhyb3VnaAorICAgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZS4gICovCisKK3N0YXRpYyBiZmRfYm9vbGVhbgorZWxmX2djX3Byb3BhZ2F0ZV92dGFibGVfZW50cmllc191c2VkIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwgdm9pZCAqb2twKQoreworICBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfd2FybmluZykKKyAgICBoID0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIGgtPnJvb3QudS5pLmxpbms7CisKKyAgLyogVGhvc2UgdGhhdCBhcmUgbm90IHZ0YWJsZXMuICAqLworICBpZiAoaC0+dnRhYmxlX3BhcmVudCA9PSBOVUxMKQorICAgIHJldHVybiBUUlVFOworCisgIC8qIFRob3NlIHZ0YWJsZXMgdGhhdCBkbyBub3QgaGF2ZSBwYXJlbnRzLCB3ZSBjYW5ub3QgbWVyZ2UuICAqLworICBpZiAoaC0+dnRhYmxlX3BhcmVudCA9PSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgLTEpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgLyogSWYgd2UndmUgYWxyZWFkeSBiZWVuIGRvbmUsIGV4aXQuICAqLworICBpZiAoaC0+dnRhYmxlX2VudHJpZXNfdXNlZCAmJiBoLT52dGFibGVfZW50cmllc191c2VkWy0xXSkKKyAgICByZXR1cm4gVFJVRTsKKworICAvKiBNYWtlIHN1cmUgdGhlIHBhcmVudCdzIHRhYmxlIGlzIHVwIHRvIGRhdGUuICAqLworICBlbGZfZ2NfcHJvcGFnYXRlX3Z0YWJsZV9lbnRyaWVzX3VzZWQgKGgtPnZ0YWJsZV9wYXJlbnQsIG9rcCk7CisKKyAgaWYgKGgtPnZ0YWJsZV9lbnRyaWVzX3VzZWQgPT0gTlVMTCkKKyAgICB7CisgICAgICAvKiBOb25lIG9mIHRoaXMgdGFibGUncyBlbnRyaWVzIHdlcmUgcmVmZXJlbmNlZC4gIFJlLXVzZSB0aGUKKwkgcGFyZW50J3MgdGFibGUuICAqLworICAgICAgaC0+dnRhYmxlX2VudHJpZXNfdXNlZCA9IGgtPnZ0YWJsZV9wYXJlbnQtPnZ0YWJsZV9lbnRyaWVzX3VzZWQ7CisgICAgICBoLT52dGFibGVfZW50cmllc19zaXplID0gaC0+dnRhYmxlX3BhcmVudC0+dnRhYmxlX2VudHJpZXNfc2l6ZTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBzaXplX3QgbjsKKyAgICAgIGJmZF9ib29sZWFuICpjdSwgKnB1OworCisgICAgICAvKiBPciB0aGUgcGFyZW50J3MgZW50cmllcyBpbnRvIG91cnMuICAqLworICAgICAgY3UgPSBoLT52dGFibGVfZW50cmllc191c2VkOworICAgICAgY3VbLTFdID0gVFJVRTsKKyAgICAgIHB1ID0gaC0+dnRhYmxlX3BhcmVudC0+dnRhYmxlX2VudHJpZXNfdXNlZDsKKyAgICAgIGlmIChwdSAhPSBOVUxMKQorCXsKKwkgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQ7CisJICB1bnNpZ25lZCBpbnQgbG9nX2ZpbGVfYWxpZ247CisKKwkgIGJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChoLT5yb290LnUuZGVmLnNlY3Rpb24tPm93bmVyKTsKKwkgIGxvZ19maWxlX2FsaWduID0gYmVkLT5zLT5sb2dfZmlsZV9hbGlnbjsKKwkgIG4gPSBoLT52dGFibGVfcGFyZW50LT52dGFibGVfZW50cmllc19zaXplID4+IGxvZ19maWxlX2FsaWduOworCSAgd2hpbGUgKG4tLSkKKwkgICAgeworCSAgICAgIGlmICgqcHUpCisJCSpjdSA9IFRSVUU7CisJICAgICAgcHUrKzsKKwkgICAgICBjdSsrOworCSAgICB9CisJfQorICAgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGJmZF9ib29sZWFuCitlbGZfZ2Nfc21hc2hfdW51c2VkX3Z0ZW50cnlfcmVsb2NzIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwgdm9pZCAqb2twKQoreworICBhc2VjdGlvbiAqc2VjOworICBiZmRfdm1hIGhzdGFydCwgaGVuZDsKKyAgRWxmX0ludGVybmFsX1JlbGEgKnJlbHN0YXJ0LCAqcmVsZW5kLCAqcmVsOworICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkOworICB1bnNpZ25lZCBpbnQgbG9nX2ZpbGVfYWxpZ247CisKKyAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCisgICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOworCisgIC8qIFRha2UgY2FyZSBvZiBib3RoIHRob3NlIHN5bWJvbHMgdGhhdCBkbyBub3QgZGVzY3JpYmUgdnRhYmxlcyBhcworICAgICB3ZWxsIGFzIHRob3NlIHRoYXQgYXJlIG5vdCBsb2FkZWQuICAqLworICBpZiAoaC0+dnRhYmxlX3BhcmVudCA9PSBOVUxMKQorICAgIHJldHVybiBUUlVFOworCisgIEJGRF9BU1NFUlQgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZmluZWQKKwkgICAgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKTsKKworICBzZWMgPSBoLT5yb290LnUuZGVmLnNlY3Rpb247CisgIGhzdGFydCA9IGgtPnJvb3QudS5kZWYudmFsdWU7CisgIGhlbmQgPSBoc3RhcnQgKyBoLT5zaXplOworCisgIHJlbHN0YXJ0ID0gX2JmZF9lbGZfbGlua19yZWFkX3JlbG9jcyAoc2VjLT5vd25lciwgc2VjLCBOVUxMLCBOVUxMLCBUUlVFKTsKKyAgaWYgKCFyZWxzdGFydCkKKyAgICByZXR1cm4gKihiZmRfYm9vbGVhbiAqKSBva3AgPSBGQUxTRTsKKyAgYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKHNlYy0+b3duZXIpOworICBsb2dfZmlsZV9hbGlnbiA9IGJlZC0+cy0+bG9nX2ZpbGVfYWxpZ247CisKKyAgcmVsZW5kID0gcmVsc3RhcnQgKyBzZWMtPnJlbG9jX2NvdW50ICogYmVkLT5zLT5pbnRfcmVsc19wZXJfZXh0X3JlbDsKKworICBmb3IgKHJlbCA9IHJlbHN0YXJ0OyByZWwgPCByZWxlbmQ7ICsrcmVsKQorICAgIGlmIChyZWwtPnJfb2Zmc2V0ID49IGhzdGFydCAmJiByZWwtPnJfb2Zmc2V0IDwgaGVuZCkKKyAgICAgIHsKKwkvKiBJZiB0aGUgZW50cnkgaXMgaW4gdXNlLCBkbyBub3RoaW5nLiAgKi8KKwlpZiAoaC0+dnRhYmxlX2VudHJpZXNfdXNlZAorCSAgICAmJiAocmVsLT5yX29mZnNldCAtIGhzdGFydCkgPCBoLT52dGFibGVfZW50cmllc19zaXplKQorCSAgeworCSAgICBiZmRfdm1hIGVudHJ5ID0gKHJlbC0+cl9vZmZzZXQgLSBoc3RhcnQpID4+IGxvZ19maWxlX2FsaWduOworCSAgICBpZiAoaC0+dnRhYmxlX2VudHJpZXNfdXNlZFtlbnRyeV0pCisJICAgICAgY29udGludWU7CisJICB9CisJLyogT3RoZXJ3aXNlLCBraWxsIGl0LiAgKi8KKwlyZWwtPnJfb2Zmc2V0ID0gcmVsLT5yX2luZm8gPSByZWwtPnJfYWRkZW5kID0gMDsKKyAgICAgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworLyogRG8gbWFyayBhbmQgc3dlZXAgb2YgdW51c2VkIHNlY3Rpb25zLiAgKi8KKworYmZkX2Jvb2xlYW4KK2JmZF9lbGZfZ2Nfc2VjdGlvbnMgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCit7CisgIGJmZF9ib29sZWFuIG9rID0gVFJVRTsKKyAgYmZkICpzdWI7CisgIGFzZWN0aW9uICogKCpnY19tYXJrX2hvb2spCisgICAgKGFzZWN0aW9uICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIEVsZl9JbnRlcm5hbF9SZWxhICosCisgICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoLCBFbGZfSW50ZXJuYWxfU3ltICopOworCisgIGlmICghZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpLT5jYW5fZ2Nfc2VjdGlvbnMKKyAgICAgIHx8IGluZm8tPnJlbG9jYXRhYmxlCisgICAgICB8fCBpbmZvLT5lbWl0cmVsb2NhdGlvbnMKKyAgICAgIHx8ICFpc19lbGZfaGFzaF90YWJsZSAoaW5mby0+aGFzaCkKKyAgICAgIHx8IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluYW1pY19zZWN0aW9uc19jcmVhdGVkKQorICAgIHsKKyAgICAgICgqX2JmZF9lcnJvcl9oYW5kbGVyKShfKCJXYXJuaW5nOiBnYy1zZWN0aW9ucyBvcHRpb24gaWdub3JlZCIpKTsKKyAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAvKiBBcHBseSB0cmFuc2l0aXZlIGNsb3N1cmUgdG8gdGhlIHZ0YWJsZSBlbnRyeSB1c2FnZSBpbmZvLiAgKi8KKyAgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZSAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAorCQkJICBlbGZfZ2NfcHJvcGFnYXRlX3Z0YWJsZV9lbnRyaWVzX3VzZWQsCisJCQkgICZvayk7CisgIGlmICghb2spCisgICAgcmV0dXJuIEZBTFNFOworCisgIC8qIEtpbGwgdGhlIHZ0YWJsZSByZWxvY2F0aW9ucyB0aGF0IHdlcmUgbm90IHVzZWQuICAqLworICBlbGZfbGlua19oYXNoX3RyYXZlcnNlIChlbGZfaGFzaF90YWJsZSAoaW5mbyksCisJCQkgIGVsZl9nY19zbWFzaF91bnVzZWRfdnRlbnRyeV9yZWxvY3MsCisJCQkgICZvayk7CisgIGlmICghb2spCisgICAgcmV0dXJuIEZBTFNFOworCisgIC8qIEdyb3ZlbCB0aHJvdWdoIHJlbG9jcyB0byBmaW5kIG91dCB3aG8gc3RheXMgLi4uICAqLworCisgIGdjX21hcmtfaG9vayA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChhYmZkKS0+Z2NfbWFya19ob29rOworICBmb3IgKHN1YiA9IGluZm8tPmlucHV0X2JmZHM7IHN1YiAhPSBOVUxMOyBzdWIgPSBzdWItPmxpbmtfbmV4dCkKKyAgICB7CisgICAgICBhc2VjdGlvbiAqbzsKKworICAgICAgaWYgKGJmZF9nZXRfZmxhdm91ciAoc3ViKSAhPSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQorCWNvbnRpbnVlOworCisgICAgICBmb3IgKG8gPSBzdWItPnNlY3Rpb25zOyBvICE9IE5VTEw7IG8gPSBvLT5uZXh0KQorCXsKKwkgIGlmIChvLT5mbGFncyAmIFNFQ19LRUVQKQorCSAgICBpZiAoIWVsZl9nY19tYXJrIChpbmZvLCBvLCBnY19tYXJrX2hvb2spKQorCSAgICAgIHJldHVybiBGQUxTRTsKKwl9CisgICAgfQorCisgIC8qIC4uLiBhbmQgbWFyayBTRUNfRVhDTFVERSBmb3IgdGhvc2UgdGhhdCBnby4gICovCisgIGlmICghZWxmX2djX3N3ZWVwIChpbmZvLCBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCktPmdjX3N3ZWVwX2hvb2spKQorICAgIHJldHVybiBGQUxTRTsKKworICByZXR1cm4gVFJVRTsKK30KKwwKKy8qIENhbGxlZCBmcm9tIGNoZWNrX3JlbG9jcyB0byByZWNvcmQgdGhlIGV4aXN0ZW5jZSBvZiBhIFZUSU5IRVJJVCByZWxvYy4gICovCisKK2JmZF9ib29sZWFuCitiZmRfZWxmX2djX3JlY29yZF92dGluaGVyaXQgKGJmZCAqYWJmZCwKKwkJCSAgICAgYXNlY3Rpb24gKnNlYywKKwkJCSAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgsCisJCQkgICAgIGJmZF92bWEgb2Zmc2V0KQoreworICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKnN5bV9oYXNoZXMsICoqc3ltX2hhc2hlc19lbmQ7CisgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqc2VhcmNoLCAqY2hpbGQ7CisgIGJmZF9zaXplX3R5cGUgZXh0c3ltY291bnQ7CisgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCk7CisKKyAgLyogVGhlIHNoX2luZm8gZmllbGQgb2YgdGhlIHN5bXRhYiBoZWFkZXIgdGVsbHMgdXMgd2hlcmUgdGhlCisgICAgIGV4dGVybmFsIHN5bWJvbHMgc3RhcnQuICBXZSBkb24ndCBjYXJlIGFib3V0IHRoZSBsb2NhbCBzeW1ib2xzIGF0CisgICAgIHRoaXMgcG9pbnQuICAqLworICBleHRzeW1jb3VudCA9IGVsZl90ZGF0YSAoYWJmZCktPnN5bXRhYl9oZHIuc2hfc2l6ZSAvIGJlZC0+cy0+c2l6ZW9mX3N5bTsKKyAgaWYgKCFlbGZfYmFkX3N5bXRhYiAoYWJmZCkpCisgICAgZXh0c3ltY291bnQgLT0gZWxmX3RkYXRhIChhYmZkKS0+c3ltdGFiX2hkci5zaF9pbmZvOworCisgIHN5bV9oYXNoZXMgPSBlbGZfc3ltX2hhc2hlcyAoYWJmZCk7CisgIHN5bV9oYXNoZXNfZW5kID0gc3ltX2hhc2hlcyArIGV4dHN5bWNvdW50OworCisgIC8qIEh1bnQgZG93biB0aGUgY2hpbGQgc3ltYm9sLCB3aGljaCBpcyBpbiB0aGlzIHNlY3Rpb24gYXQgdGhlIHNhbWUKKyAgICAgb2Zmc2V0IGFzIHRoZSByZWxvY2F0aW9uLiAgKi8KKyAgZm9yIChzZWFyY2ggPSBzeW1faGFzaGVzOyBzZWFyY2ggIT0gc3ltX2hhc2hlc19lbmQ7ICsrc2VhcmNoKQorICAgIHsKKyAgICAgIGlmICgoY2hpbGQgPSAqc2VhcmNoKSAhPSBOVUxMCisJICAmJiAoY2hpbGQtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZmluZWQKKwkgICAgICB8fCBjaGlsZC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaykKKwkgICYmIGNoaWxkLT5yb290LnUuZGVmLnNlY3Rpb24gPT0gc2VjCisJICAmJiBjaGlsZC0+cm9vdC51LmRlZi52YWx1ZSA9PSBvZmZzZXQpCisJZ290byB3aW47CisgICAgfQorCisgICgqX2JmZF9lcnJvcl9oYW5kbGVyKSAoIiVzOiAlcyslbHU6IE5vIHN5bWJvbCBmb3VuZCBmb3IgSU5IRVJJVCIsCisJCQkgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKGFiZmQpLCBzZWMtPm5hbWUsCisJCQkgKHVuc2lnbmVkIGxvbmcpIG9mZnNldCk7CisgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7CisgIHJldHVybiBGQUxTRTsKKworIHdpbjoKKyAgaWYgKCFoKQorICAgIHsKKyAgICAgIC8qIFRoaXMgKnNob3VsZCogb25seSBiZSB0aGUgYWJzb2x1dGUgc2VjdGlvbi4gIEl0IGNvdWxkIHBvdGVudGlhbGx5CisJIGJlIHRoYXQgc29tZW9uZSBoYXMgZGVmaW5lZCBhIG5vbi1nbG9iYWwgdnRhYmxlIHRob3VnaCwgd2hpY2gKKwkgd291bGQgYmUgYmFkLiAgSXQgaXNuJ3Qgd29ydGggcGFnaW5nIGluIHRoZSBsb2NhbCBzeW1ib2xzIHRvIGJlCisJIHN1cmUgdGhvdWdoOyB0aGF0IGNhc2Ugc2hvdWxkIHNpbXBseSBiZSBoYW5kbGVkIGJ5IHRoZSBhc3NlbWJsZXIuICAqLworCisgICAgICBjaGlsZC0+dnRhYmxlX3BhcmVudCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSAtMTsKKyAgICB9CisgIGVsc2UKKyAgICBjaGlsZC0+dnRhYmxlX3BhcmVudCA9IGg7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qIENhbGxlZCBmcm9tIGNoZWNrX3JlbG9jcyB0byByZWNvcmQgdGhlIGV4aXN0ZW5jZSBvZiBhIFZURU5UUlkgcmVsb2MuICAqLworCitiZmRfYm9vbGVhbgorYmZkX2VsZl9nY19yZWNvcmRfdnRlbnRyeSAoYmZkICphYmZkIEFUVFJJQlVURV9VTlVTRUQsCisJCQkgICBhc2VjdGlvbiAqc2VjIEFUVFJJQlVURV9VTlVTRUQsCisJCQkgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwKKwkJCSAgIGJmZF92bWEgYWRkZW5kKQoreworICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOworICB1bnNpZ25lZCBpbnQgbG9nX2ZpbGVfYWxpZ24gPSBiZWQtPnMtPmxvZ19maWxlX2FsaWduOworCisgIGlmIChhZGRlbmQgPj0gaC0+dnRhYmxlX2VudHJpZXNfc2l6ZSkKKyAgICB7CisgICAgICBzaXplX3Qgc2l6ZSwgYnl0ZXMsIGZpbGVfYWxpZ247CisgICAgICBiZmRfYm9vbGVhbiAqcHRyID0gaC0+dnRhYmxlX2VudHJpZXNfdXNlZDsKKworICAgICAgLyogV2hpbGUgdGhlIHN5bWJvbCBpcyB1bmRlZmluZWQsIHdlIGhhdmUgdG8gYmUgcHJlcGFyZWQgdG8gaGFuZGxlCisJIGEgemVybyBzaXplLiAgKi8KKyAgICAgIGZpbGVfYWxpZ24gPSAxIDw8IGxvZ19maWxlX2FsaWduOworICAgICAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmaW5lZCkKKwlzaXplID0gYWRkZW5kICsgZmlsZV9hbGlnbjsKKyAgICAgIGVsc2UKKwl7CisJICBzaXplID0gaC0+c2l6ZTsKKwkgIGlmIChhZGRlbmQgPj0gc2l6ZSkKKwkgICAgeworCSAgICAgIC8qIE9vcHMhICBXZSd2ZSBnb3QgYSByZWZlcmVuY2UgcGFzdCB0aGUgZGVmaW5lZCBlbmQgb2YKKwkJIHRoZSB0YWJsZS4gIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgLS0gc2hhbGwgd2Ugd2Fybj8gICovCisJICAgICAgc2l6ZSA9IGFkZGVuZCArIGZpbGVfYWxpZ247CisJICAgIH0KKwl9CisgICAgICBzaXplID0gKHNpemUgKyBmaWxlX2FsaWduIC0gMSkgJiAtZmlsZV9hbGlnbjsKKworICAgICAgLyogQWxsb2NhdGUgb25lIGV4dHJhIGVudHJ5IGZvciB1c2UgYXMgYSAiZG9uZSIgZmxhZyBmb3IgdGhlCisJIGNvbnNvbGlkYXRpb24gcGFzcy4gICovCisgICAgICBieXRlcyA9ICgoc2l6ZSA+PiBsb2dfZmlsZV9hbGlnbikgKyAxKSAqIHNpemVvZiAoYmZkX2Jvb2xlYW4pOworCisgICAgICBpZiAocHRyKQorCXsKKwkgIHB0ciA9IGJmZF9yZWFsbG9jIChwdHIgLSAxLCBieXRlcyk7CisKKwkgIGlmIChwdHIgIT0gTlVMTCkKKwkgICAgeworCSAgICAgIHNpemVfdCBvbGRieXRlczsKKworCSAgICAgIG9sZGJ5dGVzID0gKCgoaC0+dnRhYmxlX2VudHJpZXNfc2l6ZSA+PiBsb2dfZmlsZV9hbGlnbikgKyAxKQorCQkJICAqIHNpemVvZiAoYmZkX2Jvb2xlYW4pKTsKKwkgICAgICBtZW1zZXQgKCgoY2hhciAqKSBwdHIpICsgb2xkYnl0ZXMsIDAsIGJ5dGVzIC0gb2xkYnl0ZXMpOworCSAgICB9CisJfQorICAgICAgZWxzZQorCXB0ciA9IGJmZF96bWFsbG9jIChieXRlcyk7CisKKyAgICAgIGlmIChwdHIgPT0gTlVMTCkKKwlyZXR1cm4gRkFMU0U7CisKKyAgICAgIC8qIEFuZCBhcnJhbmdlIGZvciB0aGF0IGRvbmUgZmxhZyB0byBiZSBhdCBpbmRleCAtMS4gICovCisgICAgICBoLT52dGFibGVfZW50cmllc191c2VkID0gcHRyICsgMTsKKyAgICAgIGgtPnZ0YWJsZV9lbnRyaWVzX3NpemUgPSBzaXplOworICAgIH0KKworICBoLT52dGFibGVfZW50cmllc191c2VkW2FkZGVuZCA+PiBsb2dfZmlsZV9hbGlnbl0gPSBUUlVFOworCisgIHJldHVybiBUUlVFOworfQorCitzdHJ1Y3QgYWxsb2NfZ290X29mZl9hcmcgeworICBiZmRfdm1hIGdvdG9mZjsKKyAgdW5zaWduZWQgaW50IGdvdF9lbHRfc2l6ZTsKK307CisKKy8qIFdlIG5lZWQgYSBzcGVjaWFsIHRvcC1sZXZlbCBsaW5rIHJvdXRpbmUgdG8gY29udmVydCBnb3QgcmVmZXJlbmNlIGNvdW50cworICAgdG8gcmVhbCBnb3Qgb2Zmc2V0cy4gICovCisKK3N0YXRpYyBiZmRfYm9vbGVhbgorZWxmX2djX2FsbG9jYXRlX2dvdF9vZmZzZXRzIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwgdm9pZCAqYXJnKQoreworICBzdHJ1Y3QgYWxsb2NfZ290X29mZl9hcmcgKmdvZmFyZyA9IGFyZzsKKworICBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfd2FybmluZykKKyAgICBoID0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIGgtPnJvb3QudS5pLmxpbms7CisKKyAgaWYgKGgtPmdvdC5yZWZjb3VudCA+IDApCisgICAgeworICAgICAgaC0+Z290Lm9mZnNldCA9IGdvZmFyZy0+Z290b2ZmOworICAgICAgZ29mYXJnLT5nb3RvZmYgKz0gZ29mYXJnLT5nb3RfZWx0X3NpemU7CisgICAgfQorICBlbHNlCisgICAgaC0+Z290Lm9mZnNldCA9IChiZmRfdm1hKSAtMTsKKworICByZXR1cm4gVFJVRTsKK30KKworLyogQW5kIGFuIGFjY29tcGFueWluZyBiaXQgdG8gd29yayBvdXQgZmluYWwgZ290IGVudHJ5IG9mZnNldHMgb25jZQorICAgd2UncmUgZG9uZS4gIFNob3VsZCBiZSBjYWxsZWQgZnJvbSBmaW5hbF9saW5rLiAgKi8KKworYmZkX2Jvb2xlYW4KK2JmZF9lbGZfZ2NfY29tbW9uX2ZpbmFsaXplX2dvdF9vZmZzZXRzIChiZmQgKmFiZmQsCisJCQkJCXN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvKQoreworICBiZmQgKmk7CisgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCk7CisgIGJmZF92bWEgZ290b2ZmOworICB1bnNpZ25lZCBpbnQgZ290X2VsdF9zaXplID0gYmVkLT5zLT5hcmNoX3NpemUgLyA4OworICBzdHJ1Y3QgYWxsb2NfZ290X29mZl9hcmcgZ29mYXJnOworCisgIGlmICghIGlzX2VsZl9oYXNoX3RhYmxlIChpbmZvLT5oYXNoKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogVGhlIEdPVCBvZmZzZXQgaXMgcmVsYXRpdmUgdG8gdGhlIC5nb3Qgc2VjdGlvbiwgYnV0IHRoZSBHT1QgaGVhZGVyIGlzCisgICAgIHB1dCBpbnRvIHRoZSAuZ290LnBsdCBzZWN0aW9uLCBpZiB0aGUgYmFja2VuZCB1c2VzIGl0LiAgKi8KKyAgaWYgKGJlZC0+d2FudF9nb3RfcGx0KQorICAgIGdvdG9mZiA9IDA7CisgIGVsc2UKKyAgICBnb3RvZmYgPSBiZWQtPmdvdF9oZWFkZXJfc2l6ZTsKKworICAvKiBEbyB0aGUgbG9jYWwgLmdvdCBlbnRyaWVzIGZpcnN0LiAgKi8KKyAgZm9yIChpID0gaW5mby0+aW5wdXRfYmZkczsgaTsgaSA9IGktPmxpbmtfbmV4dCkKKyAgICB7CisgICAgICBiZmRfc2lnbmVkX3ZtYSAqbG9jYWxfZ290OworICAgICAgYmZkX3NpemVfdHlwZSBqLCBsb2NzeW1jb3VudDsKKyAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzeW10YWJfaGRyOworCisgICAgICBpZiAoYmZkX2dldF9mbGF2b3VyIChpKSAhPSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQorCWNvbnRpbnVlOworCisgICAgICBsb2NhbF9nb3QgPSBlbGZfbG9jYWxfZ290X3JlZmNvdW50cyAoaSk7CisgICAgICBpZiAoIWxvY2FsX2dvdCkKKwljb250aW51ZTsKKworICAgICAgc3ltdGFiX2hkciA9ICZlbGZfdGRhdGEgKGkpLT5zeW10YWJfaGRyOworICAgICAgaWYgKGVsZl9iYWRfc3ltdGFiIChpKSkKKwlsb2NzeW1jb3VudCA9IHN5bXRhYl9oZHItPnNoX3NpemUgLyBiZWQtPnMtPnNpemVvZl9zeW07CisgICAgICBlbHNlCisJbG9jc3ltY291bnQgPSBzeW10YWJfaGRyLT5zaF9pbmZvOworCisgICAgICBmb3IgKGogPSAwOyBqIDwgbG9jc3ltY291bnQ7ICsraikKKwl7CisJICBpZiAobG9jYWxfZ290W2pdID4gMCkKKwkgICAgeworCSAgICAgIGxvY2FsX2dvdFtqXSA9IGdvdG9mZjsKKwkgICAgICBnb3RvZmYgKz0gZ290X2VsdF9zaXplOworCSAgICB9CisJICBlbHNlCisJICAgIGxvY2FsX2dvdFtqXSA9IChiZmRfdm1hKSAtMTsKKwl9CisgICAgfQorCisgIC8qIFRoZW4gdGhlIGdsb2JhbCAuZ290IGVudHJpZXMuICAucGx0IHJlZmNvdW50cyBhcmUgaGFuZGxlZCBieQorICAgICBhZGp1c3RfZHluYW1pY19zeW1ib2wgICovCisgIGdvZmFyZy5nb3RvZmYgPSBnb3RvZmY7CisgIGdvZmFyZy5nb3RfZWx0X3NpemUgPSBnb3RfZWx0X3NpemU7CisgIGVsZl9saW5rX2hhc2hfdHJhdmVyc2UgKGVsZl9oYXNoX3RhYmxlIChpbmZvKSwKKwkJCSAgZWxmX2djX2FsbG9jYXRlX2dvdF9vZmZzZXRzLAorCQkJICAmZ29mYXJnKTsKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qIE1hbnkgZm9sayBuZWVkIG5vIG1vcmUgaW4gdGhlIHdheSBvZiBmaW5hbCBsaW5rIHRoYW4gdGhpcywgb25jZQorICAgZ290IGVudHJ5IHJlZmVyZW5jZSBjb3VudGluZyBpcyBlbmFibGVkLiAgKi8KKworYmZkX2Jvb2xlYW4KK2JmZF9lbGZfZ2NfY29tbW9uX2ZpbmFsX2xpbmsgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCit7CisgIGlmICghYmZkX2VsZl9nY19jb21tb25fZmluYWxpemVfZ290X29mZnNldHMgKGFiZmQsIGluZm8pKQorICAgIHJldHVybiBGQUxTRTsKKworICAvKiBJbnZva2UgdGhlIHJlZ3VsYXIgRUxGIGJhY2tlbmQgbGlua2VyIHRvIGRvIGFsbCB0aGUgd29yay4gICovCisgIHJldHVybiBiZmRfZWxmX2ZpbmFsX2xpbmsgKGFiZmQsIGluZm8pOworfQorCitiZmRfYm9vbGVhbgorYmZkX2VsZl9yZWxvY19zeW1ib2xfZGVsZXRlZF9wIChiZmRfdm1hIG9mZnNldCwgdm9pZCAqY29va2llKQoreworICBzdHJ1Y3QgZWxmX3JlbG9jX2Nvb2tpZSAqcmNvb2tpZSA9IGNvb2tpZTsKKworICBpZiAocmNvb2tpZS0+YmFkX3N5bXRhYikKKyAgICByY29va2llLT5yZWwgPSByY29va2llLT5yZWxzOworCisgIGZvciAoOyByY29va2llLT5yZWwgPCByY29va2llLT5yZWxlbmQ7IHJjb29raWUtPnJlbCsrKQorICAgIHsKKyAgICAgIHVuc2lnbmVkIGxvbmcgcl9zeW1uZHg7CisKKyAgICAgIGlmICghIHJjb29raWUtPmJhZF9zeW10YWIpCisJaWYgKHJjb29raWUtPnJlbC0+cl9vZmZzZXQgPiBvZmZzZXQpCisJICByZXR1cm4gRkFMU0U7CisgICAgICBpZiAocmNvb2tpZS0+cmVsLT5yX29mZnNldCAhPSBvZmZzZXQpCisJY29udGludWU7CisKKyAgICAgIHJfc3ltbmR4ID0gcmNvb2tpZS0+cmVsLT5yX2luZm8gPj4gcmNvb2tpZS0+cl9zeW1fc2hpZnQ7CisgICAgICBpZiAocl9zeW1uZHggPT0gU0hOX1VOREVGKQorCXJldHVybiBUUlVFOworCisgICAgICBpZiAocl9zeW1uZHggPj0gcmNvb2tpZS0+bG9jc3ltY291bnQKKwkgIHx8IEVMRl9TVF9CSU5EIChyY29va2llLT5sb2NzeW1zW3Jfc3ltbmR4XS5zdF9pbmZvKSAhPSBTVEJfTE9DQUwpCisJeworCSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmg7CisKKwkgIGggPSByY29va2llLT5zeW1faGFzaGVzW3Jfc3ltbmR4IC0gcmNvb2tpZS0+ZXh0c3ltb2ZmXTsKKworCSAgd2hpbGUgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2luZGlyZWN0CisJCSB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQorCSAgICBoID0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIGgtPnJvb3QudS5pLmxpbms7CisKKwkgIGlmICgoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmaW5lZAorCSAgICAgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKQorCSAgICAgICYmIGVsZl9kaXNjYXJkZWRfc2VjdGlvbiAoaC0+cm9vdC51LmRlZi5zZWN0aW9uKSkKKwkgICAgcmV0dXJuIFRSVUU7CisJICBlbHNlCisJICAgIHJldHVybiBGQUxTRTsKKwl9CisgICAgICBlbHNlCisJeworCSAgLyogSXQncyBub3QgYSByZWxvY2F0aW9uIGFnYWluc3QgYSBnbG9iYWwgc3ltYm9sLAorCSAgICAgYnV0IGl0IGNvdWxkIGJlIGEgcmVsb2NhdGlvbiBhZ2FpbnN0IGEgbG9jYWwKKwkgICAgIHN5bWJvbCBmb3IgYSBkaXNjYXJkZWQgc2VjdGlvbi4gICovCisJICBhc2VjdGlvbiAqaXNlYzsKKwkgIEVsZl9JbnRlcm5hbF9TeW0gKmlzeW07CisKKwkgIC8qIE5lZWQgdG86IGdldCB0aGUgc3ltYm9sOyBnZXQgdGhlIHNlY3Rpb24uICAqLworCSAgaXN5bSA9ICZyY29va2llLT5sb2NzeW1zW3Jfc3ltbmR4XTsKKwkgIGlmIChpc3ltLT5zdF9zaG5keCA8IFNITl9MT1JFU0VSVkUgfHwgaXN5bS0+c3Rfc2huZHggPiBTSE5fSElSRVNFUlZFKQorCSAgICB7CisJICAgICAgaXNlYyA9IGJmZF9zZWN0aW9uX2Zyb21fZWxmX2luZGV4IChyY29va2llLT5hYmZkLCBpc3ltLT5zdF9zaG5keCk7CisJICAgICAgaWYgKGlzZWMgIT0gTlVMTCAmJiBlbGZfZGlzY2FyZGVkX3NlY3Rpb24gKGlzZWMpKQorCQlyZXR1cm4gVFJVRTsKKwkgICAgfQorCX0KKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIHJldHVybiBGQUxTRTsKK30KKworLyogRGlzY2FyZCB1bm5lZWRlZCByZWZlcmVuY2VzIHRvIGRpc2NhcmRlZCBzZWN0aW9ucy4KKyAgIFJldHVybnMgVFJVRSBpZiBhbnkgc2VjdGlvbidzIHNpemUgd2FzIGNoYW5nZWQuICAqLworLyogVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgdGhlIHJlbG9jYXRpb25zIGFyZSBpbiBzb3J0ZWQgb3JkZXIsCisgICB3aGljaCBpcyB0cnVlIGZvciBhbGwga25vd24gYXNzZW1ibGVycy4gICovCisKK2JmZF9ib29sZWFuCitiZmRfZWxmX2Rpc2NhcmRfaW5mbyAoYmZkICpvdXRwdXRfYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbykKK3sKKyAgc3RydWN0IGVsZl9yZWxvY19jb29raWUgY29va2llOworICBhc2VjdGlvbiAqc3RhYiwgKmVoOworICBFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFiX2hkcjsKKyAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKKyAgYmZkICphYmZkOworICB1bnNpZ25lZCBpbnQgY291bnQ7CisgIGJmZF9ib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChpbmZvLT50cmFkaXRpb25hbF9mb3JtYXQKKyAgICAgIHx8ICFpc19lbGZfaGFzaF90YWJsZSAoaW5mby0+aGFzaCkpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGZvciAoYWJmZCA9IGluZm8tPmlucHV0X2JmZHM7IGFiZmQgIT0gTlVMTDsgYWJmZCA9IGFiZmQtPmxpbmtfbmV4dCkKKyAgICB7CisgICAgICBpZiAoYmZkX2dldF9mbGF2b3VyIChhYmZkKSAhPSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQorCWNvbnRpbnVlOworCisgICAgICBiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCk7CisKKyAgICAgIGlmICgoYWJmZC0+ZmxhZ3MgJiBEWU5BTUlDKSAhPSAwKQorCWNvbnRpbnVlOworCisgICAgICBlaCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLmVoX2ZyYW1lIik7CisgICAgICBpZiAoaW5mby0+cmVsb2NhdGFibGUKKwkgIHx8IChlaCAhPSBOVUxMCisJICAgICAgJiYgKGVoLT5fcmF3X3NpemUgPT0gMAorCQkgIHx8IGJmZF9pc19hYnNfc2VjdGlvbiAoZWgtPm91dHB1dF9zZWN0aW9uKSkpKQorCWVoID0gTlVMTDsKKworICAgICAgc3RhYiA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLnN0YWIiKTsKKyAgICAgIGlmIChzdGFiICE9IE5VTEwKKwkgICYmIChzdGFiLT5fcmF3X3NpemUgPT0gMAorCSAgICAgIHx8IGJmZF9pc19hYnNfc2VjdGlvbiAoc3RhYi0+b3V0cHV0X3NlY3Rpb24pCisJICAgICAgfHwgc3RhYi0+c2VjX2luZm9fdHlwZSAhPSBFTEZfSU5GT19UWVBFX1NUQUJTKSkKKwlzdGFiID0gTlVMTDsKKworICAgICAgaWYgKHN0YWIgPT0gTlVMTAorCSAgJiYgZWggPT0gTlVMTAorCSAgJiYgYmVkLT5lbGZfYmFja2VuZF9kaXNjYXJkX2luZm8gPT0gTlVMTCkKKwljb250aW51ZTsKKworICAgICAgc3ltdGFiX2hkciA9ICZlbGZfdGRhdGEgKGFiZmQpLT5zeW10YWJfaGRyOworICAgICAgY29va2llLmFiZmQgPSBhYmZkOworICAgICAgY29va2llLnN5bV9oYXNoZXMgPSBlbGZfc3ltX2hhc2hlcyAoYWJmZCk7CisgICAgICBjb29raWUuYmFkX3N5bXRhYiA9IGVsZl9iYWRfc3ltdGFiIChhYmZkKTsKKyAgICAgIGlmIChjb29raWUuYmFkX3N5bXRhYikKKwl7CisJICBjb29raWUubG9jc3ltY291bnQgPSBzeW10YWJfaGRyLT5zaF9zaXplIC8gYmVkLT5zLT5zaXplb2Zfc3ltOworCSAgY29va2llLmV4dHN5bW9mZiA9IDA7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGNvb2tpZS5sb2NzeW1jb3VudCA9IHN5bXRhYl9oZHItPnNoX2luZm87CisJICBjb29raWUuZXh0c3ltb2ZmID0gc3ltdGFiX2hkci0+c2hfaW5mbzsKKwl9CisKKyAgICAgIGlmIChiZWQtPnMtPmFyY2hfc2l6ZSA9PSAzMikKKwljb29raWUucl9zeW1fc2hpZnQgPSA4OworICAgICAgZWxzZQorCWNvb2tpZS5yX3N5bV9zaGlmdCA9IDMyOworCisgICAgICBjb29raWUubG9jc3ltcyA9IChFbGZfSW50ZXJuYWxfU3ltICopIHN5bXRhYl9oZHItPmNvbnRlbnRzOworICAgICAgaWYgKGNvb2tpZS5sb2NzeW1zID09IE5VTEwgJiYgY29va2llLmxvY3N5bWNvdW50ICE9IDApCisJeworCSAgY29va2llLmxvY3N5bXMgPSBiZmRfZWxmX2dldF9lbGZfc3ltcyAoYWJmZCwgc3ltdGFiX2hkciwKKwkJCQkJCSBjb29raWUubG9jc3ltY291bnQsIDAsCisJCQkJCQkgTlVMTCwgTlVMTCwgTlVMTCk7CisJICBpZiAoY29va2llLmxvY3N5bXMgPT0gTlVMTCkKKwkgICAgcmV0dXJuIEZBTFNFOworCX0KKworICAgICAgaWYgKHN0YWIgIT0gTlVMTCkKKwl7CisJICBjb29raWUucmVscyA9IE5VTEw7CisJICBjb3VudCA9IHN0YWItPnJlbG9jX2NvdW50OworCSAgaWYgKGNvdW50ICE9IDApCisJICAgIGNvb2tpZS5yZWxzID0gX2JmZF9lbGZfbGlua19yZWFkX3JlbG9jcyAoYWJmZCwgc3RhYiwgTlVMTCwgTlVMTCwKKwkJCQkJCSAgICAgaW5mby0+a2VlcF9tZW1vcnkpOworCSAgaWYgKGNvb2tpZS5yZWxzICE9IE5VTEwpCisJICAgIHsKKwkgICAgICBjb29raWUucmVsID0gY29va2llLnJlbHM7CisJICAgICAgY29va2llLnJlbGVuZCA9IGNvb2tpZS5yZWxzOworCSAgICAgIGNvb2tpZS5yZWxlbmQgKz0gY291bnQgKiBiZWQtPnMtPmludF9yZWxzX3Blcl9leHRfcmVsOworCSAgICAgIGlmIChfYmZkX2Rpc2NhcmRfc2VjdGlvbl9zdGFicyAoYWJmZCwgc3RhYiwKKwkJCQkJICAgICAgZWxmX3NlY3Rpb25fZGF0YSAoc3RhYiktPnNlY19pbmZvLAorCQkJCQkgICAgICBiZmRfZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3AsCisJCQkJCSAgICAgICZjb29raWUpKQorCQlyZXQgPSBUUlVFOworCSAgICAgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChzdGFiKS0+cmVsb2NzICE9IGNvb2tpZS5yZWxzKQorCQlmcmVlIChjb29raWUucmVscyk7CisJICAgIH0KKwl9CisKKyAgICAgIGlmIChlaCAhPSBOVUxMKQorCXsKKwkgIGNvb2tpZS5yZWxzID0gTlVMTDsKKwkgIGNvdW50ID0gZWgtPnJlbG9jX2NvdW50OworCSAgaWYgKGNvdW50ICE9IDApCisJICAgIGNvb2tpZS5yZWxzID0gX2JmZF9lbGZfbGlua19yZWFkX3JlbG9jcyAoYWJmZCwgZWgsIE5VTEwsIE5VTEwsCisJCQkJCQkgICAgIGluZm8tPmtlZXBfbWVtb3J5KTsKKwkgIGNvb2tpZS5yZWwgPSBjb29raWUucmVsczsKKwkgIGNvb2tpZS5yZWxlbmQgPSBjb29raWUucmVsczsKKwkgIGlmIChjb29raWUucmVscyAhPSBOVUxMKQorCSAgICBjb29raWUucmVsZW5kICs9IGNvdW50ICogYmVkLT5zLT5pbnRfcmVsc19wZXJfZXh0X3JlbDsKKworCSAgaWYgKF9iZmRfZWxmX2Rpc2NhcmRfc2VjdGlvbl9laF9mcmFtZSAoYWJmZCwgaW5mbywgZWgsCisJCQkJCQkgYmZkX2VsZl9yZWxvY19zeW1ib2xfZGVsZXRlZF9wLAorCQkJCQkJICZjb29raWUpKQorCSAgICByZXQgPSBUUlVFOworCisJICBpZiAoY29va2llLnJlbHMgIT0gTlVMTAorCSAgICAgICYmIGVsZl9zZWN0aW9uX2RhdGEgKGVoKS0+cmVsb2NzICE9IGNvb2tpZS5yZWxzKQorCSAgICBmcmVlIChjb29raWUucmVscyk7CisJfQorCisgICAgICBpZiAoYmVkLT5lbGZfYmFja2VuZF9kaXNjYXJkX2luZm8gIT0gTlVMTAorCSAgJiYgKCpiZWQtPmVsZl9iYWNrZW5kX2Rpc2NhcmRfaW5mbykgKGFiZmQsICZjb29raWUsIGluZm8pKQorCXJldCA9IFRSVUU7CisKKyAgICAgIGlmIChjb29raWUubG9jc3ltcyAhPSBOVUxMCisJICAmJiBzeW10YWJfaGRyLT5jb250ZW50cyAhPSAodW5zaWduZWQgY2hhciAqKSBjb29raWUubG9jc3ltcykKKwl7CisJICBpZiAoISBpbmZvLT5rZWVwX21lbW9yeSkKKwkgICAgZnJlZSAoY29va2llLmxvY3N5bXMpOworCSAgZWxzZQorCSAgICBzeW10YWJfaGRyLT5jb250ZW50cyA9ICh1bnNpZ25lZCBjaGFyICopIGNvb2tpZS5sb2NzeW1zOworCX0KKyAgICB9CisKKyAgaWYgKGluZm8tPmVoX2ZyYW1lX2hkcgorICAgICAgJiYgIWluZm8tPnJlbG9jYXRhYmxlCisgICAgICAmJiBfYmZkX2VsZl9kaXNjYXJkX3NlY3Rpb25fZWhfZnJhbWVfaGRyIChvdXRwdXRfYmZkLCBpbmZvKSkKKyAgICByZXQgPSBUUlVFOworCisgIHJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9iZmQvZWxmbGluay5oIGIvYmZkL2VsZmxpbmsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM3ZDczOS4uMDAwMDAwMAotLS0gYS9iZmQvZWxmbGluay5oCisrKyAvZGV2L251bGwKQEAgLTEsNjMzMyArMCwwIEBACi0vKiBFTEYgbGlua2VyIHN1cHBvcnQuCi0gICBDb3B5cmlnaHQgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMwotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0KLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEJGRCwgdGhlIEJpbmFyeSBGaWxlIERlc2NyaXB0b3IgbGlicmFyeS4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLQotLyogRUxGIGxpbmtlciBjb2RlLiAgKi8KLQotI2luY2x1ZGUgInNhZmUtY3R5cGUuaCIKLQotc3RhdGljIGJmZF9ib29sZWFuIGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwotc3RhdGljIGJmZF9ib29sZWFuIGVsZl9saW5rX2FkZF9hcmNoaXZlX3N5bWJvbHMgKGJmZCAqLAotCQkJCQkJIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwotc3RhdGljIGJmZF9ib29sZWFuIGVsZl9maW5hbGl6ZV9keW5zdHIgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKLXN0YXRpYyBiZmRfYm9vbGVhbiBlbGZfY29sbGVjdF9oYXNoX2NvZGVzIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLAotCQkJCQkgICB2b2lkICopOwotc3RhdGljIGJmZF9ib29sZWFuIGVsZl9zZWN0aW9uX2lnbm9yZV9kaXNjYXJkZWRfcmVsb2NzIChhc2VjdGlvbiAqKTsKLQotLyogR2l2ZW4gYW4gRUxGIEJGRCwgYWRkIHN5bWJvbHMgdG8gdGhlIGdsb2JhbCBoYXNoIHRhYmxlIGFzCi0gICBhcHByb3ByaWF0ZS4gICovCi0KLWJmZF9ib29sZWFuCi1lbGZfYmZkX2xpbmtfYWRkX3N5bWJvbHMgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCi17Ci0gIHN3aXRjaCAoYmZkX2dldF9mb3JtYXQgKGFiZmQpKQotICAgIHsKLSAgICBjYXNlIGJmZF9vYmplY3Q6Ci0gICAgICByZXR1cm4gZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzIChhYmZkLCBpbmZvKTsKLSAgICBjYXNlIGJmZF9hcmNoaXZlOgotICAgICAgcmV0dXJuIGVsZl9saW5rX2FkZF9hcmNoaXZlX3N5bWJvbHMgKGFiZmQsIGluZm8pOwotICAgIGRlZmF1bHQ6Ci0gICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3Jfd3JvbmdfZm9ybWF0KTsKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci19Ci0MCi0vKiBSZXR1cm4gVFJVRSBpZmYgdGhpcyBpcyBhIG5vbi1jb21tb24sIGRlZmluaXRpb24gb2YgYSBub24tZnVuY3Rpb24gc3ltYm9sLiAgKi8KLXN0YXRpYyBiZmRfYm9vbGVhbgotaXNfZ2xvYmFsX2RhdGFfc3ltYm9sX2RlZmluaXRpb24gKGJmZCAqYWJmZCBBVFRSSUJVVEVfVU5VU0VELAotCQkJCSAgRWxmX0ludGVybmFsX1N5bSAqc3ltKQotewotICAvKiBMb2NhbCBzeW1ib2xzIGRvIG5vdCBjb3VudCwgYnV0IHRhcmdldCBzcGVjaWZpYyBvbmVzIG1pZ2h0LiAgKi8KLSAgaWYgKEVMRl9TVF9CSU5EIChzeW0tPnN0X2luZm8pICE9IFNUQl9HTE9CQUwKLSAgICAgICYmIEVMRl9TVF9CSU5EIChzeW0tPnN0X2luZm8pIDwgU1RCX0xPT1MpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIC8qIEZ1bmN0aW9uIHN5bWJvbHMgZG8gbm90IGNvdW50LiAgKi8KLSAgaWYgKEVMRl9TVF9UWVBFIChzeW0tPnN0X2luZm8pID09IFNUVF9GVU5DKQotICAgIHJldHVybiBGQUxTRTsKLQotICAvKiBJZiB0aGUgc2VjdGlvbiBpcyB1bmRlZmluZWQsIHRoZW4gc28gaXMgdGhlIHN5bWJvbC4gICovCi0gIGlmIChzeW0tPnN0X3NobmR4ID09IFNITl9VTkRFRikKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgLyogSWYgdGhlIHN5bWJvbCBpcyBkZWZpbmVkIGluIHRoZSBjb21tb24gc2VjdGlvbiwgdGhlbgotICAgICBpdCBpcyBhIGNvbW1vbiBkZWZpbml0aW9uIGFuZCBzbyBkb2VzIG5vdCBjb3VudC4gICovCi0gIGlmIChzeW0tPnN0X3NobmR4ID09IFNITl9DT01NT04pCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIC8qIElmIHRoZSBzeW1ib2wgaXMgaW4gYSB0YXJnZXQgc3BlY2lmaWMgc2VjdGlvbiB0aGVuIHdlCi0gICAgIG11c3QgcmVseSB1cG9uIHRoZSBiYWNrZW5kIHRvIHRlbGwgdXMgd2hhdCBpdCBpcy4gICovCi0gIGlmIChzeW0tPnN0X3NobmR4ID49IFNITl9MT1JFU0VSVkUgJiYgc3ltLT5zdF9zaG5keCA8IFNITl9BQlMpCi0gICAgLyogRklYTUUgLSB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBjb2RlZCB5ZXQ6Ci0KLSAgICAgICByZXR1cm4gX2JmZF9pc19nbG9iYWxfc3ltYm9sX2RlZmluaXRpb24gKGFiZmQsIHN5bSk7Ci0KLSAgICAgICBJbnN0ZWFkIGZvciBub3cgYXNzdW1lIHRoYXQgdGhlIGRlZmluaXRpb24gaXMgbm90IGdsb2JhbCwKLSAgICAgICBFdmVuIGlmIHRoaXMgaXMgd3JvbmcsIGF0IGxlYXN0IHRoZSBsaW5rZXIgd2lsbCBiZWhhdmUKLSAgICAgICBpbiB0aGUgc2FtZSB3YXkgdGhhdCBpdCB1c2VkIHRvIGRvLiAgKi8KLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLS8qIFNlYXJjaCB0aGUgc3ltYm9sIHRhYmxlIG9mIHRoZSBhcmNoaXZlIGVsZW1lbnQgb2YgdGhlIGFyY2hpdmUgQUJGRAotICAgd2hvc2UgYXJjaGl2ZSBtYXAgY29udGFpbnMgYSBtZW50aW9uIG9mIFNZTURFRiwgYW5kIGRldGVybWluZSBpZgotICAgdGhlIHN5bWJvbCBpcyBkZWZpbmVkIGluIHRoaXMgZWxlbWVudC4gICovCi1zdGF0aWMgYmZkX2Jvb2xlYW4KLWVsZl9saW5rX2lzX2RlZmluZWRfYXJjaGl2ZV9zeW1ib2wgKGJmZCAqIGFiZmQsIGNhcnN5bSAqIHN5bWRlZikKLXsKLSAgRWxmX0ludGVybmFsX1NoZHIgKiBoZHI7Ci0gIGJmZF9zaXplX3R5cGUgc3ltY291bnQ7Ci0gIGJmZF9zaXplX3R5cGUgZXh0c3ltY291bnQ7Ci0gIGJmZF9zaXplX3R5cGUgZXh0c3ltb2ZmOwotICBFbGZfSW50ZXJuYWxfU3ltICppc3ltYnVmOwotICBFbGZfSW50ZXJuYWxfU3ltICppc3ltOwotICBFbGZfSW50ZXJuYWxfU3ltICppc3ltZW5kOwotICBiZmRfYm9vbGVhbiByZXN1bHQ7Ci0KLSAgYWJmZCA9IF9iZmRfZ2V0X2VsdF9hdF9maWxlcG9zIChhYmZkLCBzeW1kZWYtPmZpbGVfb2Zmc2V0KTsKLSAgaWYgKGFiZmQgPT0gTlVMTCkKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgaWYgKCEgYmZkX2NoZWNrX2Zvcm1hdCAoYWJmZCwgYmZkX29iamVjdCkpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIC8qIElmIHdlIGhhdmUgYWxyZWFkeSBpbmNsdWRlZCB0aGUgZWxlbWVudCBjb250YWluaW5nIHRoaXMgc3ltYm9sIGluIHRoZQotICAgICBsaW5rIHRoZW4gd2UgZG8gbm90IG5lZWQgdG8gaW5jbHVkZSBpdCBhZ2Fpbi4gIEp1c3QgY2xhaW0gdGhhdCBhbnkgc3ltYm9sCi0gICAgIGl0IGNvbnRhaW5zIGlzIG5vdCBhIGRlZmluaXRpb24sIHNvIHRoYXQgb3VyIGNhbGxlciB3aWxsIG5vdCBkZWNpZGUgdG8KLSAgICAgKHJlKWluY2x1ZGUgdGhpcyBlbGVtZW50LiAgKi8KLSAgaWYgKGFiZmQtPmFyY2hpdmVfcGFzcykKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgLyogU2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBzeW1ib2wgdGFibGUuICAqLwotICBpZiAoKGFiZmQtPmZsYWdzICYgRFlOQU1JQykgPT0gMCB8fCBlbGZfZHluc3ltdGFiIChhYmZkKSA9PSAwKQotICAgIGhkciA9ICZlbGZfdGRhdGEgKGFiZmQpLT5zeW10YWJfaGRyOwotICBlbHNlCi0gICAgaGRyID0gJmVsZl90ZGF0YSAoYWJmZCktPmR5bnN5bXRhYl9oZHI7Ci0KLSAgc3ltY291bnQgPSBoZHItPnNoX3NpemUgLyBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW0pOwotCi0gIC8qIFRoZSBzaF9pbmZvIGZpZWxkIG9mIHRoZSBzeW10YWIgaGVhZGVyIHRlbGxzIHVzIHdoZXJlIHRoZQotICAgICBleHRlcm5hbCBzeW1ib2xzIHN0YXJ0LiAgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgbG9jYWwgc3ltYm9scy4gICovCi0gIGlmIChlbGZfYmFkX3N5bXRhYiAoYWJmZCkpCi0gICAgewotICAgICAgZXh0c3ltY291bnQgPSBzeW1jb3VudDsKLSAgICAgIGV4dHN5bW9mZiA9IDA7Ci0gICAgfQotICBlbHNlCi0gICAgewotICAgICAgZXh0c3ltY291bnQgPSBzeW1jb3VudCAtIGhkci0+c2hfaW5mbzsKLSAgICAgIGV4dHN5bW9mZiA9IGhkci0+c2hfaW5mbzsKLSAgICB9Ci0KLSAgaWYgKGV4dHN5bWNvdW50ID09IDApCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIC8qIFJlYWQgaW4gdGhlIHN5bWJvbCB0YWJsZS4gICovCi0gIGlzeW1idWYgPSBiZmRfZWxmX2dldF9lbGZfc3ltcyAoYWJmZCwgaGRyLCBleHRzeW1jb3VudCwgZXh0c3ltb2ZmLAotCQkJCSAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0gIGlmIChpc3ltYnVmID09IE5VTEwpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIC8qIFNjYW4gdGhlIHN5bWJvbCB0YWJsZSBsb29raW5nIGZvciBTWU1ERUYuICAqLwotICByZXN1bHQgPSBGQUxTRTsKLSAgZm9yIChpc3ltID0gaXN5bWJ1ZiwgaXN5bWVuZCA9IGlzeW1idWYgKyBleHRzeW1jb3VudDsgaXN5bSA8IGlzeW1lbmQ7IGlzeW0rKykKLSAgICB7Ci0gICAgICBjb25zdCBjaGFyICpuYW1lOwotCi0gICAgICBuYW1lID0gYmZkX2VsZl9zdHJpbmdfZnJvbV9lbGZfc2VjdGlvbiAoYWJmZCwgaGRyLT5zaF9saW5rLAotCQkJCQkgICAgICBpc3ltLT5zdF9uYW1lKTsKLSAgICAgIGlmIChuYW1lID09IE5VTEwpCi0JYnJlYWs7Ci0KLSAgICAgIGlmIChzdHJjbXAgKG5hbWUsIHN5bWRlZi0+bmFtZSkgPT0gMCkKLQl7Ci0JICByZXN1bHQgPSBpc19nbG9iYWxfZGF0YV9zeW1ib2xfZGVmaW5pdGlvbiAoYWJmZCwgaXN5bSk7Ci0JICBicmVhazsKLQl9Ci0gICAgfQotCi0gIGZyZWUgKGlzeW1idWYpOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0MCi0vKiBBZGQgc3ltYm9scyBmcm9tIGFuIEVMRiBhcmNoaXZlIGZpbGUgdG8gdGhlIGxpbmtlciBoYXNoIHRhYmxlLiAgV2UKLSAgIGRvbid0IHVzZSBfYmZkX2dlbmVyaWNfbGlua19hZGRfYXJjaGl2ZV9zeW1ib2xzIGJlY2F1c2Ugb2YgYQotICAgcHJvYmxlbSB3aGljaCBhcmlzZXMgb24gVW5peFdhcmUuICBUaGUgVW5peFdhcmUgbGliYy5zbyBpcyBhbgotICAgYXJjaGl2ZSB3aGljaCBpbmNsdWRlcyBhbiBlbnRyeSBsaWJjLnNvLjEgd2hpY2ggZGVmaW5lcyBhIGJ1bmNoIG9mCi0gICBzeW1ib2xzLiAgVGhlIGxpYmMuc28gYXJjaGl2ZSBhbHNvIGluY2x1ZGVzIGEgbnVtYmVyIG9mIG90aGVyCi0gICBvYmplY3QgZmlsZXMsIHdoaWNoIGFsc28gZGVmaW5lIHN5bWJvbHMsIHNvbWUgb2Ygd2hpY2ggYXJlIHRoZSBzYW1lCi0gICBhcyB0aG9zZSBkZWZpbmVkIGluIGxpYmMuc28uMS4gIENvcnJlY3QgbGlua2luZyByZXF1aXJlcyB0aGF0IHdlCi0gICBjb25zaWRlciBlYWNoIG9iamVjdCBmaWxlIGluIHR1cm4sIGFuZCBpbmNsdWRlIGl0IGlmIGl0IGRlZmluZXMgYW55Ci0gICBzeW1ib2xzIHdlIG5lZWQuICBfYmZkX2dlbmVyaWNfbGlua19hZGRfYXJjaGl2ZV9zeW1ib2xzIGRvZXMgbm90IGRvCi0gICB0aGlzOyBpdCBsb29rcyB0aHJvdWdoIHRoZSBsaXN0IG9mIHVuZGVmaW5lZCBzeW1ib2xzLCBhbmQgaW5jbHVkZXMKLSAgIGFueSBvYmplY3QgZmlsZSB3aGljaCBkZWZpbmVzIHRoZW0uICBXaGVuIHRoaXMgYWxnb3JpdGhtIGlzIHVzZWQgb24KLSAgIFVuaXhXYXJlLCBpdCB3aW5kcyB1cCBwdWxsaW5nIGluIGxpYmMuc28uMSBlYXJseSBhbmQgZGVmaW5pbmcgYQotICAgYnVuY2ggb2Ygc3ltYm9scy4gIFRoaXMgbWVhbnMgdGhhdCBzb21lIG9mIHRoZSBvdGhlciBvYmplY3RzIGluIHRoZQotICAgYXJjaGl2ZSBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBsaW5rLCB3aGljaCBpcyBpbmNvcnJlY3Qgc2luY2UgdGhleQotICAgcHJlY2VkZSBsaWJjLnNvLjEgaW4gdGhlIGFyY2hpdmUuCi0KLSAgIEZvcnR1bmF0ZWx5LCBFTEYgYXJjaGl2ZSBoYW5kbGluZyBpcyBzaW1wbGVyIHRoYW4gdGhhdCBkb25lIGJ5Ci0gICBfYmZkX2dlbmVyaWNfbGlua19hZGRfYXJjaGl2ZV9zeW1ib2xzLCB3aGljaCBoYXMgdG8gYWxsb3cgZm9yIGEub3V0Ci0gICBvZGRpdGllcy4gIEluIEVMRiwgaWYgd2UgZmluZCBhIHN5bWJvbCBpbiB0aGUgYXJjaGl2ZSBtYXAsIGFuZCB0aGUKLSAgIHN5bWJvbCBpcyBjdXJyZW50bHkgdW5kZWZpbmVkLCB3ZSBrbm93IHRoYXQgd2UgbXVzdCBwdWxsIGluIHRoYXQKLSAgIG9iamVjdCBmaWxlLgotCi0gICBVbmZvcnR1bmF0ZWx5LCB3ZSBkbyBoYXZlIHRvIG1ha2UgbXVsdGlwbGUgcGFzc2VzIG92ZXIgdGhlIHN5bWJvbAotICAgdGFibGUgdW50aWwgbm90aGluZyBmdXJ0aGVyIGlzIHJlc29sdmVkLiAgKi8KLQotc3RhdGljIGJmZF9ib29sZWFuCi1lbGZfbGlua19hZGRfYXJjaGl2ZV9zeW1ib2xzIChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvKQotewotICBzeW1pbmRleCBjOwotICBiZmRfYm9vbGVhbiAqZGVmaW5lZCA9IE5VTEw7Ci0gIGJmZF9ib29sZWFuICppbmNsdWRlZCA9IE5VTEw7Ci0gIGNhcnN5bSAqc3ltZGVmczsKLSAgYmZkX2Jvb2xlYW4gbG9vcDsKLSAgYmZkX3NpemVfdHlwZSBhbXQ7Ci0KLSAgaWYgKCEgYmZkX2hhc19tYXAgKGFiZmQpKQotICAgIHsKLSAgICAgIC8qIEFuIGVtcHR5IGFyY2hpdmUgaXMgYSBzcGVjaWFsIGNhc2UuICAqLwotICAgICAgaWYgKGJmZF9vcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUgKGFiZmQsIE5VTEwpID09IE5VTEwpCi0JcmV0dXJuIFRSVUU7Ci0gICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3Jfbm9fYXJtYXApOwotICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLQotICAvKiBLZWVwIHRyYWNrIG9mIGFsbCBzeW1ib2xzIHdlIGtub3cgdG8gYmUgYWxyZWFkeSBkZWZpbmVkLCBhbmQgYWxsCi0gICAgIGZpbGVzIHdlIGtub3cgdG8gYmUgYWxyZWFkeSBpbmNsdWRlZC4gIFRoaXMgaXMgdG8gc3BlZWQgdXAgdGhlCi0gICAgIHNlY29uZCBhbmQgc3Vic2VxdWVudCBwYXNzZXMuICAqLwotICBjID0gYmZkX2FyZGF0YSAoYWJmZCktPnN5bWRlZl9jb3VudDsKLSAgaWYgKGMgPT0gMCkKLSAgICByZXR1cm4gVFJVRTsKLSAgYW10ID0gYzsKLSAgYW10ICo9IHNpemVvZiAoYmZkX2Jvb2xlYW4pOwotICBkZWZpbmVkID0gYmZkX3ptYWxsb2MgKGFtdCk7Ci0gIGluY2x1ZGVkID0gYmZkX3ptYWxsb2MgKGFtdCk7Ci0gIGlmIChkZWZpbmVkID09IE5VTEwgfHwgaW5jbHVkZWQgPT0gTlVMTCkKLSAgICBnb3RvIGVycm9yX3JldHVybjsKLQotICBzeW1kZWZzID0gYmZkX2FyZGF0YSAoYWJmZCktPnN5bWRlZnM7Ci0KLSAgZG8KLSAgICB7Ci0gICAgICBmaWxlX3B0ciBsYXN0OwotICAgICAgc3ltaW5kZXggaTsKLSAgICAgIGNhcnN5bSAqc3ltZGVmOwotICAgICAgY2Fyc3ltICpzeW1kZWZlbmQ7Ci0KLSAgICAgIGxvb3AgPSBGQUxTRTsKLSAgICAgIGxhc3QgPSAtMTsKLQotICAgICAgc3ltZGVmID0gc3ltZGVmczsKLSAgICAgIHN5bWRlZmVuZCA9IHN5bWRlZiArIGM7Ci0gICAgICBmb3IgKGkgPSAwOyBzeW1kZWYgPCBzeW1kZWZlbmQ7IHN5bWRlZisrLCBpKyspCi0JewotCSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmg7Ci0JICBiZmQgKmVsZW1lbnQ7Ci0JICBzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSAqdW5kZWZzX3RhaWw7Ci0JICBzeW1pbmRleCBtYXJrOwotCi0JICBpZiAoZGVmaW5lZFtpXSB8fCBpbmNsdWRlZFtpXSkKLQkgICAgY29udGludWU7Ci0JICBpZiAoc3ltZGVmLT5maWxlX29mZnNldCA9PSBsYXN0KQotCSAgICB7Ci0JICAgICAgaW5jbHVkZWRbaV0gPSBUUlVFOwotCSAgICAgIGNvbnRpbnVlOwotCSAgICB9Ci0KLQkgIGggPSBlbGZfbGlua19oYXNoX2xvb2t1cCAoZWxmX2hhc2hfdGFibGUgKGluZm8pLCBzeW1kZWYtPm5hbWUsCi0JCQkJICAgIEZBTFNFLCBGQUxTRSwgRkFMU0UpOwotCi0JICBpZiAoaCA9PSBOVUxMKQotCSAgICB7Ci0JICAgICAgY2hhciAqcCwgKmNvcHk7Ci0JICAgICAgc2l6ZV90IGxlbiwgZmlyc3Q7Ci0KLQkgICAgICAvKiBJZiB0aGlzIGlzIGEgZGVmYXVsdCB2ZXJzaW9uICh0aGUgbmFtZSBjb250YWlucyBAQCksCi0JCSBsb29rIHVwIHRoZSBzeW1ib2wgYWdhaW4gd2l0aCBvbmx5IG9uZSBgQCcgYXMgd2VsbAotCQkgYXMgd2l0aG91dCB0aGUgdmVyc2lvbi4gIFRoZSBlZmZlY3QgaXMgdGhhdCByZWZlcmVuY2VzCi0JCSB0byB0aGUgc3ltYm9sIHdpdGggYW5kIHdpdGhvdXQgdGhlIHZlcnNpb24gd2lsbCBiZQotCQkgbWF0Y2hlZCBieSB0aGUgZGVmYXVsdCBzeW1ib2wgaW4gdGhlIGFyY2hpdmUuICAqLwotCi0JICAgICAgcCA9IHN0cmNociAoc3ltZGVmLT5uYW1lLCBFTEZfVkVSX0NIUik7Ci0JICAgICAgaWYgKHAgPT0gTlVMTCB8fCBwWzFdICE9IEVMRl9WRVJfQ0hSKQotCQljb250aW51ZTsKLQotCSAgICAgIC8qIEZpcnN0IGNoZWNrIHdpdGggb25seSBvbmUgYEAnLiAgKi8KLQkgICAgICBsZW4gPSBzdHJsZW4gKHN5bWRlZi0+bmFtZSk7Ci0JICAgICAgY29weSA9IGJmZF9hbGxvYyAoYWJmZCwgbGVuKTsKLQkgICAgICBpZiAoY29weSA9PSBOVUxMKQotCQlnb3RvIGVycm9yX3JldHVybjsKLQkgICAgICBmaXJzdCA9IHAgLSBzeW1kZWYtPm5hbWUgKyAxOwotCSAgICAgIG1lbWNweSAoY29weSwgc3ltZGVmLT5uYW1lLCBmaXJzdCk7Ci0JICAgICAgbWVtY3B5IChjb3B5ICsgZmlyc3QsIHN5bWRlZi0+bmFtZSArIGZpcnN0ICsgMSwgbGVuIC0gZmlyc3QpOwotCi0JICAgICAgaCA9IGVsZl9saW5rX2hhc2hfbG9va3VwIChlbGZfaGFzaF90YWJsZSAoaW5mbyksIGNvcHksCi0JCQkJCUZBTFNFLCBGQUxTRSwgRkFMU0UpOwotCi0JICAgICAgaWYgKGggPT0gTlVMTCkKLQkJewotCQkgIC8qIFdlIGFsc28gbmVlZCB0byBjaGVjayByZWZlcmVuY2VzIHRvIHRoZSBzeW1ib2wKLQkJICAgICB3aXRob3V0IHRoZSB2ZXJzaW9uLiAgKi8KLQotCQkgIGNvcHlbZmlyc3QgLSAxXSA9ICdcMCc7Ci0JCSAgaCA9IGVsZl9saW5rX2hhc2hfbG9va3VwIChlbGZfaGFzaF90YWJsZSAoaW5mbyksCi0JCQkJCSAgICBjb3B5LCBGQUxTRSwgRkFMU0UsIEZBTFNFKTsKLQkJfQotCi0JICAgICAgYmZkX3JlbGVhc2UgKGFiZmQsIGNvcHkpOwotCSAgICB9Ci0KLQkgIGlmIChoID09IE5VTEwpCi0JICAgIGNvbnRpbnVlOwotCi0JICBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfY29tbW9uKQotCSAgICB7Ci0JICAgICAgLyogV2UgY3VycmVudGx5IGhhdmUgYSBjb21tb24gc3ltYm9sLiAgVGhlIGFyY2hpdmUgbWFwIGNvbnRhaW5zCi0JCSBhIHJlZmVyZW5jZSB0byB0aGlzIHN5bWJvbCwgc28gd2UgbWF5IHdhbnQgdG8gaW5jbHVkZSBpdC4gIFdlCi0JCSBvbmx5IHdhbnQgdG8gaW5jbHVkZSBpdCBob3dldmVyLCBpZiB0aGlzIGFyY2hpdmUgZWxlbWVudAotCQkgY29udGFpbnMgYSBkZWZpbml0aW9uIG9mIHRoZSBzeW1ib2wsIG5vdCBqdXN0IGFub3RoZXIgY29tbW9uCi0JCSBkZWNsYXJhdGlvbiBvZiBpdC4KLQotCQkgVW5mb3J0dW5hdGVseSBzb21lIGFyY2hpdmVycyAoaW5jbHVkaW5nIEdOVSBhcikgd2lsbCBwdXQKLQkJIGRlY2xhcmF0aW9ucyBvZiBjb21tb24gc3ltYm9scyBpbnRvIHRoZWlyIGFyY2hpdmUgbWFwcywgYXMKLQkJIHdlbGwgYXMgcmVhbCBkZWZpbml0aW9ucywgc28gd2UgY2Fubm90IGp1c3QgZ28gYnkgdGhlIGFyY2hpdmUKLQkJIG1hcCBhbG9uZS4gIEluc3RlYWQgd2UgbXVzdCByZWFkIGluIHRoZSBlbGVtZW50J3Mgc3ltYm9sCi0JCSB0YWJsZSBhbmQgY2hlY2sgdGhhdCB0byBzZWUgd2hhdCBraW5kIG9mIHN5bWJvbCBkZWZpbml0aW9uCi0JCSB0aGlzIGlzLiAgKi8KLQkgICAgICBpZiAoISBlbGZfbGlua19pc19kZWZpbmVkX2FyY2hpdmVfc3ltYm9sIChhYmZkLCBzeW1kZWYpKQotCQljb250aW51ZTsKLQkgICAgfQotCSAgZWxzZSBpZiAoaC0+cm9vdC50eXBlICE9IGJmZF9saW5rX2hhc2hfdW5kZWZpbmVkKQotCSAgICB7Ci0JICAgICAgaWYgKGgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX3VuZGVmd2VhaykKLQkJZGVmaW5lZFtpXSA9IFRSVUU7Ci0JICAgICAgY29udGludWU7Ci0JICAgIH0KLQotCSAgLyogV2UgbmVlZCB0byBpbmNsdWRlIHRoaXMgYXJjaGl2ZSBtZW1iZXIuICAqLwotCSAgZWxlbWVudCA9IF9iZmRfZ2V0X2VsdF9hdF9maWxlcG9zIChhYmZkLCBzeW1kZWYtPmZpbGVfb2Zmc2V0KTsKLQkgIGlmIChlbGVtZW50ID09IE5VTEwpCi0JICAgIGdvdG8gZXJyb3JfcmV0dXJuOwotCi0JICBpZiAoISBiZmRfY2hlY2tfZm9ybWF0IChlbGVtZW50LCBiZmRfb2JqZWN0KSkKLQkgICAgZ290byBlcnJvcl9yZXR1cm47Ci0KLQkgIC8qIERvdWJsZWNoZWNrIHRoYXQgd2UgaGF2ZSBub3QgaW5jbHVkZWQgdGhpcyBvYmplY3QKLQkgICAgIGFscmVhZHktLWl0IHNob3VsZCBiZSBpbXBvc3NpYmxlLCBidXQgdGhlcmUgbWF5IGJlCi0JICAgICBzb21ldGhpbmcgd3Jvbmcgd2l0aCB0aGUgYXJjaGl2ZS4gICovCi0JICBpZiAoZWxlbWVudC0+YXJjaGl2ZV9wYXNzICE9IDApCi0JICAgIHsKLQkgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKLQkgICAgICBnb3RvIGVycm9yX3JldHVybjsKLQkgICAgfQotCSAgZWxlbWVudC0+YXJjaGl2ZV9wYXNzID0gMTsKLQotCSAgdW5kZWZzX3RhaWwgPSBpbmZvLT5oYXNoLT51bmRlZnNfdGFpbDsKLQotCSAgaWYgKCEgKCppbmZvLT5jYWxsYmFja3MtPmFkZF9hcmNoaXZlX2VsZW1lbnQpIChpbmZvLCBlbGVtZW50LAotCQkJCQkJCSBzeW1kZWYtPm5hbWUpKQotCSAgICBnb3RvIGVycm9yX3JldHVybjsKLQkgIGlmICghIGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyAoZWxlbWVudCwgaW5mbykpCi0JICAgIGdvdG8gZXJyb3JfcmV0dXJuOwotCi0JICAvKiBJZiB0aGVyZSBhcmUgYW55IG5ldyB1bmRlZmluZWQgc3ltYm9scywgd2UgbmVlZCB0byBtYWtlCi0JICAgICBhbm90aGVyIHBhc3MgdGhyb3VnaCB0aGUgYXJjaGl2ZSBpbiBvcmRlciB0byBzZWUgd2hldGhlcgotCSAgICAgdGhleSBjYW4gYmUgZGVmaW5lZC4gIEZJWE1FOiBUaGlzIGlzbid0IHBlcmZlY3QsIGJlY2F1c2UKLQkgICAgIGNvbW1vbiBzeW1ib2xzIHdpbmQgdXAgb24gdW5kZWZzX3RhaWwgYW5kIGJlY2F1c2UgYW4KLQkgICAgIHVuZGVmaW5lZCBzeW1ib2wgd2hpY2ggaXMgZGVmaW5lZCBsYXRlciBvbiBpbiB0aGlzIHBhc3MKLQkgICAgIGRvZXMgbm90IHJlcXVpcmUgYW5vdGhlciBwYXNzLiAgVGhpcyBpc24ndCBhIGJ1ZywgYnV0IGl0Ci0JICAgICBkb2VzIG1ha2UgdGhlIGNvZGUgbGVzcyBlZmZpY2llbnQgdGhhbiBpdCBjb3VsZCBiZS4gICovCi0JICBpZiAodW5kZWZzX3RhaWwgIT0gaW5mby0+aGFzaC0+dW5kZWZzX3RhaWwpCi0JICAgIGxvb3AgPSBUUlVFOwotCi0JICAvKiBMb29rIGJhY2t3YXJkIHRvIG1hcmsgYWxsIHN5bWJvbHMgZnJvbSB0aGlzIG9iamVjdCBmaWxlCi0JICAgICB3aGljaCB3ZSBoYXZlIGFscmVhZHkgc2VlbiBpbiB0aGlzIHBhc3MuICAqLwotCSAgbWFyayA9IGk7Ci0JICBkbwotCSAgICB7Ci0JICAgICAgaW5jbHVkZWRbbWFya10gPSBUUlVFOwotCSAgICAgIGlmIChtYXJrID09IDApCi0JCWJyZWFrOwotCSAgICAgIC0tbWFyazsKLQkgICAgfQotCSAgd2hpbGUgKHN5bWRlZnNbbWFya10uZmlsZV9vZmZzZXQgPT0gc3ltZGVmLT5maWxlX29mZnNldCk7Ci0KLQkgIC8qIFdlIG1hcmsgc3Vic2VxdWVudCBzeW1ib2xzIGZyb20gdGhpcyBvYmplY3QgZmlsZSBhcyB3ZSBnbwotCSAgICAgb24gdGhyb3VnaCB0aGUgbG9vcC4gICovCi0JICBsYXN0ID0gc3ltZGVmLT5maWxlX29mZnNldDsKLQl9Ci0gICAgfQotICB3aGlsZSAobG9vcCk7Ci0KLSAgZnJlZSAoZGVmaW5lZCk7Ci0gIGZyZWUgKGluY2x1ZGVkKTsKLQotICByZXR1cm4gVFJVRTsKLQotIGVycm9yX3JldHVybjoKLSAgaWYgKGRlZmluZWQgIT0gTlVMTCkKLSAgICBmcmVlIChkZWZpbmVkKTsKLSAgaWYgKGluY2x1ZGVkICE9IE5VTEwpCi0gICAgZnJlZSAoaW5jbHVkZWQpOwotICByZXR1cm4gRkFMU0U7Ci19Ci0KLS8qIEFkZCBzeW1ib2xzIGZyb20gYW4gRUxGIG9iamVjdCBmaWxlIHRvIHRoZSBsaW5rZXIgaGFzaCB0YWJsZS4gICovCi0KLXN0YXRpYyBiZmRfYm9vbGVhbgotZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzIChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvKQotewotICBiZmRfYm9vbGVhbiAoKmFkZF9zeW1ib2xfaG9vaykKLSAgICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNvbnN0IEVsZl9JbnRlcm5hbF9TeW0gKiwKLSAgICAgY29uc3QgY2hhciAqKiwgZmxhZ3dvcmQgKiwgYXNlY3Rpb24gKiosIGJmZF92bWEgKik7Ci0gIGJmZF9ib29sZWFuICgqY2hlY2tfcmVsb2NzKQotICAgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgYXNlY3Rpb24gKiwgY29uc3QgRWxmX0ludGVybmFsX1JlbGEgKik7Ci0gIGJmZF9ib29sZWFuIGNvbGxlY3Q7Ci0gIEVsZl9JbnRlcm5hbF9TaGRyICpoZHI7Ci0gIGJmZF9zaXplX3R5cGUgc3ltY291bnQ7Ci0gIGJmZF9zaXplX3R5cGUgZXh0c3ltY291bnQ7Ci0gIGJmZF9zaXplX3R5cGUgZXh0c3ltb2ZmOwotICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKnN5bV9oYXNoOwotICBiZmRfYm9vbGVhbiBkeW5hbWljOwotICBFbGZfRXh0ZXJuYWxfVmVyc3ltICpleHR2ZXJzeW0gPSBOVUxMOwotICBFbGZfRXh0ZXJuYWxfVmVyc3ltICpldmVyOwotICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqd2Vha3M7Ci0gIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqbm9uZGVmbHRfdmVycyA9IE5VTEw7Ci0gIGJmZF9zaXplX3R5cGUgbm9uZGVmbHRfdmVyc19jbnQgPSAwOwotICBFbGZfSW50ZXJuYWxfU3ltICppc3ltYnVmID0gTlVMTDsKLSAgRWxmX0ludGVybmFsX1N5bSAqaXN5bTsKLSAgRWxmX0ludGVybmFsX1N5bSAqaXN5bWVuZDsKLSAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKLSAgYmZkX2Jvb2xlYW4gZHRfbmVlZGVkOwotICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF90YWJsZSAqIGhhc2hfdGFibGU7Ci0gIGJmZF9zaXplX3R5cGUgYW10OwotCi0gIGhhc2hfdGFibGUgPSBlbGZfaGFzaF90YWJsZSAoaW5mbyk7Ci0KLSAgYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOwotICBhZGRfc3ltYm9sX2hvb2sgPSBiZWQtPmVsZl9hZGRfc3ltYm9sX2hvb2s7Ci0gIGNvbGxlY3QgPSBiZWQtPmNvbGxlY3Q7Ci0KLSAgaWYgKChhYmZkLT5mbGFncyAmIERZTkFNSUMpID09IDApCi0gICAgZHluYW1pYyA9IEZBTFNFOwotICBlbHNlCi0gICAgewotICAgICAgZHluYW1pYyA9IFRSVUU7Ci0KLSAgICAgIC8qIFlvdSBjYW4ndCB1c2UgLXIgYWdhaW5zdCBhIGR5bmFtaWMgb2JqZWN0LiAgQWxzbywgdGhlcmUncyBubwotCSBob3BlIG9mIHVzaW5nIGEgZHluYW1pYyBvYmplY3Qgd2hpY2ggZG9lcyBub3QgZXhhY3RseSBtYXRjaAotCSB0aGUgZm9ybWF0IG9mIHRoZSBvdXRwdXQgZmlsZS4gICovCi0gICAgICBpZiAoaW5mby0+cmVsb2NhdGFibGUKLQkgIHx8ICFpc19lbGZfaGFzaF90YWJsZSAoaGFzaF90YWJsZSkKLQkgIHx8IGhhc2hfdGFibGUtPnJvb3QuY3JlYXRvciAhPSBhYmZkLT54dmVjKQotCXsKLQkgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0JICBnb3RvIGVycm9yX3JldHVybjsKLQl9Ci0gICAgfQotCi0gIC8qIEFzIGEgR05VIGV4dGVuc2lvbiwgYW55IGlucHV0IHNlY3Rpb25zIHdoaWNoIGFyZSBuYW1lZAotICAgICAuZ251Lndhcm5pbmcuU1lNQk9MIGFyZSB0cmVhdGVkIGFzIHdhcm5pbmcgc3ltYm9scyBmb3IgdGhlIGdpdmVuCi0gICAgIHN5bWJvbC4gIFRoaXMgZGlmZmVycyBmcm9tIC5nbnUud2FybmluZyBzZWN0aW9ucywgd2hpY2ggZ2VuZXJhdGUKLSAgICAgd2FybmluZ3Mgd2hlbiB0aGV5IGFyZSBpbmNsdWRlZCBpbiBhbiBvdXRwdXQgZmlsZS4gICovCi0gIGlmIChpbmZvLT5leGVjdXRhYmxlKQotICAgIHsKLSAgICAgIGFzZWN0aW9uICpzOwotCi0gICAgICBmb3IgKHMgPSBhYmZkLT5zZWN0aW9uczsgcyAhPSBOVUxMOyBzID0gcy0+bmV4dCkKLQl7Ci0JICBjb25zdCBjaGFyICpuYW1lOwotCi0JICBuYW1lID0gYmZkX2dldF9zZWN0aW9uX25hbWUgKGFiZmQsIHMpOwotCSAgaWYgKHN0cm5jbXAgKG5hbWUsICIuZ251Lndhcm5pbmcuIiwgc2l6ZW9mICIuZ251Lndhcm5pbmcuIiAtIDEpID09IDApCi0JICAgIHsKLQkgICAgICBjaGFyICptc2c7Ci0JICAgICAgYmZkX3NpemVfdHlwZSBzejsKLQkgICAgICBiZmRfc2l6ZV90eXBlIHByZWZpeF9sZW47Ci0JICAgICAgY29uc3QgY2hhciAqIGdudV93YXJuaW5nX3ByZWZpeCA9IF8oIndhcm5pbmc6ICIpOwotCi0JICAgICAgbmFtZSArPSBzaXplb2YgIi5nbnUud2FybmluZy4iIC0gMTsKLQotCSAgICAgIC8qIElmIHRoaXMgaXMgYSBzaGFyZWQgb2JqZWN0LCB0aGVuIGxvb2sgdXAgdGhlIHN5bWJvbAotCQkgaW4gdGhlIGhhc2ggdGFibGUuICBJZiBpdCBpcyB0aGVyZSwgYW5kIGl0IGlzIGFscmVhZHkKLQkJIGJlZW4gZGVmaW5lZCwgdGhlbiB3ZSB3aWxsIG5vdCBiZSB1c2luZyB0aGUgZW50cnkKLQkJIGZyb20gdGhpcyBzaGFyZWQgb2JqZWN0LCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhcm4uCi0JCSBGSVhNRTogSWYgd2Ugc2VlIHRoZSBkZWZpbml0aW9uIGluIGEgcmVndWxhciBvYmplY3QKLQkJIGxhdGVyIG9uLCB3ZSB3aWxsIHdhcm4sIGJ1dCB3ZSBzaG91bGRuJ3QuICBUaGUgb25seQotCQkgZml4IGlzIHRvIGtlZXAgdHJhY2sgb2Ygd2hhdCB3YXJuaW5ncyB3ZSBhcmUgc3VwcG9zZWQKLQkJIHRvIGVtaXQsIGFuZCB0aGVuIGhhbmRsZSB0aGVtIGFsbCBhdCB0aGUgZW5kIG9mIHRoZQotCQkgbGluay4gICovCi0JICAgICAgaWYgKGR5bmFtaWMpCi0JCXsKLQkJICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaDsKLQotCQkgIGggPSBlbGZfbGlua19oYXNoX2xvb2t1cCAoaGFzaF90YWJsZSwgbmFtZSwKLQkJCQkJICAgIEZBTFNFLCBGQUxTRSwgVFJVRSk7Ci0KLQkJICAvKiBGSVhNRTogV2hhdCBhYm91dCBiZmRfbGlua19oYXNoX2NvbW1vbj8gICovCi0JCSAgaWYgKGggIT0gTlVMTAotCQkgICAgICAmJiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmaW5lZAotCQkJICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKSkKLQkJICAgIHsKLQkJICAgICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpc3N1ZSB0aGlzIHdhcm5pbmcuICBDbG9iYmVyCi0JCQkgdGhlIHNlY3Rpb24gc2l6ZSBzbyB0aGF0IHRoZSB3YXJuaW5nIGRvZXMgbm90Ci0JCQkgZ2V0IGNvcGllZCBpbnRvIHRoZSBvdXRwdXQgZmlsZS4gICovCi0JCSAgICAgIHMtPl9yYXdfc2l6ZSA9IDA7Ci0JCSAgICAgIGNvbnRpbnVlOwotCQkgICAgfQotCQl9Ci0KLQkgICAgICBzeiA9IGJmZF9zZWN0aW9uX3NpemUgKGFiZmQsIHMpOwotCSAgICAgIHByZWZpeF9sZW4gPSBzdHJsZW4gKGdudV93YXJuaW5nX3ByZWZpeCk7Ci0JICAgICAgbXNnID0gYmZkX2FsbG9jIChhYmZkLCBwcmVmaXhfbGVuICsgc3ogKyAxKTsKLQkgICAgICBpZiAobXNnID09IE5VTEwpCi0JCWdvdG8gZXJyb3JfcmV0dXJuOwotCi0JICAgICAgc3RyY3B5IChtc2csIGdudV93YXJuaW5nX3ByZWZpeCk7Ci0JICAgICAgaWYgKCEgYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIChhYmZkLCBzLCBtc2cgKyBwcmVmaXhfbGVuLCAwLCBzeikpCi0JCWdvdG8gZXJyb3JfcmV0dXJuOwotCi0JICAgICAgbXNnW3ByZWZpeF9sZW4gKyBzel0gPSAnXDAnOwotCi0JICAgICAgaWYgKCEgKF9iZmRfZ2VuZXJpY19saW5rX2FkZF9vbmVfc3ltYm9sCi0JCSAgICAgKGluZm8sIGFiZmQsIG5hbWUsIEJTRl9XQVJOSU5HLCBzLCAwLCBtc2csCi0JCSAgICAgIEZBTFNFLCBjb2xsZWN0LCBOVUxMKSkpCi0JCWdvdG8gZXJyb3JfcmV0dXJuOwotCi0JICAgICAgaWYgKCEgaW5mby0+cmVsb2NhdGFibGUpCi0JCXsKLQkJICAvKiBDbG9iYmVyIHRoZSBzZWN0aW9uIHNpemUgc28gdGhhdCB0aGUgd2FybmluZyBkb2VzCi0JCSAgICAgbm90IGdldCBjb3BpZWQgaW50byB0aGUgb3V0cHV0IGZpbGUuICAqLwotCQkgIHMtPl9yYXdfc2l6ZSA9IDA7Ci0JCX0KLQkgICAgfQotCX0KLSAgICB9Ci0KLSAgZHRfbmVlZGVkID0gRkFMU0U7Ci0gIGlmICghIGR5bmFtaWMpCi0gICAgewotICAgICAgLyogSWYgd2UgYXJlIGNyZWF0aW5nIGEgc2hhcmVkIGxpYnJhcnksIGNyZWF0ZSBhbGwgdGhlIGR5bmFtaWMKLQkgc2VjdGlvbnMgaW1tZWRpYXRlbHkuICBXZSBuZWVkIHRvIGF0dGFjaCB0aGVtIHRvIHNvbWV0aGluZywKLQkgc28gd2UgYXR0YWNoIHRoZW0gdG8gdGhpcyBCRkQsIHByb3ZpZGVkIGl0IGlzIHRoZSByaWdodAotCSBmb3JtYXQuICBGSVhNRTogSWYgdGhlcmUgYXJlIG5vIGlucHV0IEJGRCdzIG9mIHRoZSBzYW1lCi0JIGZvcm1hdCBhcyB0aGUgb3V0cHV0LCB3ZSBjYW4ndCBtYWtlIGEgc2hhcmVkIGxpYnJhcnkuICAqLwotICAgICAgaWYgKGluZm8tPnNoYXJlZAotCSAgJiYgaXNfZWxmX2hhc2hfdGFibGUgKGhhc2hfdGFibGUpCi0JICAmJiBoYXNoX3RhYmxlLT5yb290LmNyZWF0b3IgPT0gYWJmZC0+eHZlYwotCSAgJiYgISBoYXNoX3RhYmxlLT5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQpCi0JewotCSAgaWYgKCEgX2JmZF9lbGZfbGlua19jcmVhdGVfZHluYW1pY19zZWN0aW9ucyAoYWJmZCwgaW5mbykpCi0JICAgIGdvdG8gZXJyb3JfcmV0dXJuOwotCX0KLSAgICB9Ci0gIGVsc2UgaWYgKCFpc19lbGZfaGFzaF90YWJsZSAoaGFzaF90YWJsZSkpCi0gICAgZ290byBlcnJvcl9yZXR1cm47Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBhc2VjdGlvbiAqczsKLSAgICAgIGJmZF9ib29sZWFuIGFkZF9uZWVkZWQ7Ci0gICAgICBjb25zdCBjaGFyICpuYW1lOwotICAgICAgYmZkX3NpemVfdHlwZSBvbGRzaXplOwotICAgICAgYmZkX3NpemVfdHlwZSBzdHJpbmRleDsKLSAgICAgIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqcnBhdGggPSBOVUxMLCAqcnVucGF0aCA9IE5VTEw7Ci0KLSAgICAgIC8qIGxkIC0tanVzdC1zeW1ib2xzIGFuZCBkeW5hbWljIG9iamVjdHMgZG9uJ3QgbWl4IHZlcnkgd2VsbC4KLQkgVGVzdCBmb3IgLS1qdXN0LXN5bWJvbHMgYnkgbG9va2luZyBhdCBpbmZvIHNldCB1cCBieQotCSBfYmZkX2VsZl9saW5rX2p1c3Rfc3ltcy4gICovCi0gICAgICBpZiAoKHMgPSBhYmZkLT5zZWN0aW9ucykgIT0gTlVMTAotCSAgJiYgcy0+c2VjX2luZm9fdHlwZSA9PSBFTEZfSU5GT19UWVBFX0pVU1RfU1lNUykKLQlnb3RvIGVycm9yX3JldHVybjsKLQotICAgICAgLyogRmluZCB0aGUgbmFtZSB0byB1c2UgaW4gYSBEVF9ORUVERUQgZW50cnkgdGhhdCByZWZlcnMgdG8gdGhpcwotCSBvYmplY3QuICBJZiB0aGUgb2JqZWN0IGhhcyBhIERUX1NPTkFNRSBlbnRyeSwgd2UgdXNlIGl0LgotCSBPdGhlcndpc2UsIGlmIHRoZSBnZW5lcmljIGxpbmtlciBzdHVjayBzb21ldGhpbmcgaW4KLQkgZWxmX2R0X25hbWUsIHdlIHVzZSB0aGF0LiAgT3RoZXJ3aXNlLCB3ZSBqdXN0IHVzZSB0aGUgZmlsZQotCSBuYW1lLiAgSWYgdGhlIGdlbmVyaWMgbGlua2VyIHB1dCBhIG51bGwgc3RyaW5nIGludG8KLQkgZWxmX2R0X25hbWUsIHdlIGRvbid0IG1ha2UgYSBEVF9ORUVERUQgZW50cnkgYXQgYWxsLCBldmVuIGlmCi0JIHRoZXJlIGlzIGEgRFRfU09OQU1FIGVudHJ5LiAgKi8KLSAgICAgIGFkZF9uZWVkZWQgPSBUUlVFOwotICAgICAgbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOwotICAgICAgaWYgKGVsZl9kdF9uYW1lIChhYmZkKSAhPSBOVUxMKQotCXsKLQkgIG5hbWUgPSBlbGZfZHRfbmFtZSAoYWJmZCk7Ci0JICBpZiAoKm5hbWUgPT0gJ1wwJykKLQkgICAgewotCSAgICAgIGlmIChlbGZfZHRfc29uYW1lIChhYmZkKSAhPSBOVUxMKQotCQlkdF9uZWVkZWQgPSBUUlVFOwotCi0JICAgICAgYWRkX25lZWRlZCA9IEZBTFNFOwotCSAgICB9Ci0JfQotICAgICAgcyA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLmR5bmFtaWMiKTsKLSAgICAgIGlmIChzICE9IE5VTEwpCi0JewotCSAgRWxmX0V4dGVybmFsX0R5biAqZHluYnVmID0gTlVMTDsKLQkgIEVsZl9FeHRlcm5hbF9EeW4gKmV4dGR5bjsKLQkgIEVsZl9FeHRlcm5hbF9EeW4gKmV4dGR5bmVuZDsKLQkgIGludCBlbGZzZWM7Ci0JICB1bnNpZ25lZCBsb25nIHNobGluazsKLQotCSAgZHluYnVmID0gYmZkX21hbGxvYyAocy0+X3Jhd19zaXplKTsKLQkgIGlmIChkeW5idWYgPT0gTlVMTCkKLQkgICAgZ290byBlcnJvcl9yZXR1cm47Ci0KLQkgIGlmICghIGJmZF9nZXRfc2VjdGlvbl9jb250ZW50cyAoYWJmZCwgcywgZHluYnVmLCAwLCBzLT5fcmF3X3NpemUpKQotCSAgICBnb3RvIGVycm9yX2ZyZWVfZHluOwotCi0JICBlbGZzZWMgPSBfYmZkX2VsZl9zZWN0aW9uX2Zyb21fYmZkX3NlY3Rpb24gKGFiZmQsIHMpOwotCSAgaWYgKGVsZnNlYyA9PSAtMSkKLQkgICAgZ290byBlcnJvcl9mcmVlX2R5bjsKLQkgIHNobGluayA9IGVsZl9lbGZzZWN0aW9ucyAoYWJmZClbZWxmc2VjXS0+c2hfbGluazsKLQotCSAgZXh0ZHluID0gZHluYnVmOwotCSAgZXh0ZHluZW5kID0gZXh0ZHluICsgcy0+X3Jhd19zaXplIC8gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfRHluKTsKLQkgIGZvciAoOyBleHRkeW4gPCBleHRkeW5lbmQ7IGV4dGR5bisrKQotCSAgICB7Ci0JICAgICAgRWxmX0ludGVybmFsX0R5biBkeW47Ci0KLQkgICAgICBlbGZfc3dhcF9keW5faW4gKGFiZmQsIGV4dGR5biwgJmR5bik7Ci0JICAgICAgaWYgKGR5bi5kX3RhZyA9PSBEVF9TT05BTUUpCi0JCXsKLQkJICB1bnNpZ25lZCBpbnQgdGFndiA9IGR5bi5kX3VuLmRfdmFsOwotCQkgIG5hbWUgPSBiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uIChhYmZkLCBzaGxpbmssIHRhZ3YpOwotCQkgIGlmIChuYW1lID09IE5VTEwpCi0JCSAgICBnb3RvIGVycm9yX2ZyZWVfZHluOwotCQl9Ci0JICAgICAgaWYgKGR5bi5kX3RhZyA9PSBEVF9ORUVERUQpCi0JCXsKLQkJICBzdHJ1Y3QgYmZkX2xpbmtfbmVlZGVkX2xpc3QgKm4sICoqcG47Ci0JCSAgY2hhciAqZm5tLCAqYW5tOwotCQkgIHVuc2lnbmVkIGludCB0YWd2ID0gZHluLmRfdW4uZF92YWw7Ci0KLQkJICBhbXQgPSBzaXplb2YgKHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCk7Ci0JCSAgbiA9IGJmZF9hbGxvYyAoYWJmZCwgYW10KTsKLQkJICBmbm0gPSBiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uIChhYmZkLCBzaGxpbmssIHRhZ3YpOwotCQkgIGlmIChuID09IE5VTEwgfHwgZm5tID09IE5VTEwpCi0JCSAgICBnb3RvIGVycm9yX2ZyZWVfZHluOwotCQkgIGFtdCA9IHN0cmxlbiAoZm5tKSArIDE7Ci0JCSAgYW5tID0gYmZkX2FsbG9jIChhYmZkLCBhbXQpOwotCQkgIGlmIChhbm0gPT0gTlVMTCkKLQkJICAgIGdvdG8gZXJyb3JfZnJlZV9keW47Ci0JCSAgbWVtY3B5IChhbm0sIGZubSwgYW10KTsKLQkJICBuLT5uYW1lID0gYW5tOwotCQkgIG4tPmJ5ID0gYWJmZDsKLQkJICBuLT5uZXh0ID0gTlVMTDsKLQkJICBmb3IgKHBuID0gJiBoYXNoX3RhYmxlLT5uZWVkZWQ7Ci0JCSAgICAgICAqcG4gIT0gTlVMTDsKLQkJICAgICAgIHBuID0gJigqcG4pLT5uZXh0KQotCQkgICAgOwotCQkgICpwbiA9IG47Ci0JCX0KLQkgICAgICBpZiAoZHluLmRfdGFnID09IERUX1JVTlBBVEgpCi0JCXsKLQkJICBzdHJ1Y3QgYmZkX2xpbmtfbmVlZGVkX2xpc3QgKm4sICoqcG47Ci0JCSAgY2hhciAqZm5tLCAqYW5tOwotCQkgIHVuc2lnbmVkIGludCB0YWd2ID0gZHluLmRfdW4uZF92YWw7Ci0KLQkJICBhbXQgPSBzaXplb2YgKHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCk7Ci0JCSAgbiA9IGJmZF9hbGxvYyAoYWJmZCwgYW10KTsKLQkJICBmbm0gPSBiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uIChhYmZkLCBzaGxpbmssIHRhZ3YpOwotCQkgIGlmIChuID09IE5VTEwgfHwgZm5tID09IE5VTEwpCi0JCSAgICBnb3RvIGVycm9yX2ZyZWVfZHluOwotCQkgIGFtdCA9IHN0cmxlbiAoZm5tKSArIDE7Ci0JCSAgYW5tID0gYmZkX2FsbG9jIChhYmZkLCBhbXQpOwotCQkgIGlmIChhbm0gPT0gTlVMTCkKLQkJICAgIGdvdG8gZXJyb3JfZnJlZV9keW47Ci0JCSAgbWVtY3B5IChhbm0sIGZubSwgYW10KTsKLQkJICBuLT5uYW1lID0gYW5tOwotCQkgIG4tPmJ5ID0gYWJmZDsKLQkJICBuLT5uZXh0ID0gTlVMTDsKLQkJICBmb3IgKHBuID0gJiBydW5wYXRoOwotCQkgICAgICAgKnBuICE9IE5VTEw7Ci0JCSAgICAgICBwbiA9ICYoKnBuKS0+bmV4dCkKLQkJICAgIDsKLQkJICAqcG4gPSBuOwotCQl9Ci0JICAgICAgLyogSWdub3JlIERUX1JQQVRIIGlmIHdlIGhhdmUgc2VlbiBEVF9SVU5QQVRILiAgKi8KLQkgICAgICBpZiAoIXJ1bnBhdGggJiYgZHluLmRfdGFnID09IERUX1JQQVRIKQotCQl7Ci0JCSAgc3RydWN0IGJmZF9saW5rX25lZWRlZF9saXN0ICpuLCAqKnBuOwotCQkgIGNoYXIgKmZubSwgKmFubTsKLQkJICB1bnNpZ25lZCBpbnQgdGFndiA9IGR5bi5kX3VuLmRfdmFsOwotCi0JCSAgYW10ID0gc2l6ZW9mIChzdHJ1Y3QgYmZkX2xpbmtfbmVlZGVkX2xpc3QpOwotCQkgIG4gPSBiZmRfYWxsb2MgKGFiZmQsIGFtdCk7Ci0JCSAgZm5tID0gYmZkX2VsZl9zdHJpbmdfZnJvbV9lbGZfc2VjdGlvbiAoYWJmZCwgc2hsaW5rLCB0YWd2KTsKLQkJICBpZiAobiA9PSBOVUxMIHx8IGZubSA9PSBOVUxMKQotCQkgICAgZ290byBlcnJvcl9mcmVlX2R5bjsKLQkJICBhbXQgPSBzdHJsZW4gKGZubSkgKyAxOwotCQkgIGFubSA9IGJmZF9hbGxvYyAoYWJmZCwgYW10KTsKLQkJICBpZiAoYW5tID09IE5VTEwpCi0JCSAgICB7Ci0JCSAgICBlcnJvcl9mcmVlX2R5bjoKLQkJICAgICAgZnJlZSAoZHluYnVmKTsKLQkJICAgICAgZ290byBlcnJvcl9yZXR1cm47Ci0JCSAgICB9Ci0JCSAgbWVtY3B5IChhbm0sIGZubSwgYW10KTsKLQkJICBuLT5uYW1lID0gYW5tOwotCQkgIG4tPmJ5ID0gYWJmZDsKLQkJICBuLT5uZXh0ID0gTlVMTDsKLQkJICBmb3IgKHBuID0gJiBycGF0aDsKLQkJICAgICAgICpwbiAhPSBOVUxMOwotCQkgICAgICAgcG4gPSAmKCpwbiktPm5leHQpCi0JCSAgICA7Ci0JCSAgKnBuID0gbjsKLQkJfQotCSAgICB9Ci0KLQkgIGZyZWUgKGR5bmJ1Zik7Ci0JfQotCi0gICAgICAvKiBEVF9SVU5QQVRIIG92ZXJyaWRlcyBEVF9SUEFUSC4gIERvIF9OT1RfIGJmZF9yZWxlYXNlLCBhcyB0aGF0Ci0JIGZyZWVzIGFsbCBtb3JlIHJlY2VudGx5IGJmZF9hbGxvYydkIGJsb2NrcyBhcyB3ZWxsLiAgKi8KLSAgICAgIGlmIChydW5wYXRoKQotCXJwYXRoID0gcnVucGF0aDsKLQotICAgICAgaWYgKHJwYXRoKQotCXsKLQkgIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqKnBuOwotCSAgZm9yIChwbiA9ICYgaGFzaF90YWJsZS0+cnVucGF0aDsKLQkgICAgICAgKnBuICE9IE5VTEw7Ci0JICAgICAgIHBuID0gJigqcG4pLT5uZXh0KQotCSAgICA7Ci0JICAqcG4gPSBycGF0aDsKLQl9Ci0KLSAgICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIGluY2x1ZGUgYW55IG9mIHRoZSBzZWN0aW9ucyBpbiBhIGR5bmFtaWMKLQkgb2JqZWN0IGluIHRoZSBvdXRwdXQgZmlsZS4gIFdlIGhhY2sgYnkgc2ltcGx5IGNsb2JiZXJpbmcgdGhlCi0JIGxpc3Qgb2Ygc2VjdGlvbnMgaW4gdGhlIEJGRC4gIFRoaXMgY291bGQgYmUgaGFuZGxlZCBtb3JlCi0JIGNsZWFubHkgYnksIHNheSwgYSBuZXcgc2VjdGlvbiBmbGFnOyB0aGUgZXhpc3RpbmcKLQkgU0VDX05FVkVSX0xPQUQgZmxhZyBpcyBub3QgdGhlIG9uZSB3ZSB3YW50LCBiZWNhdXNlIHRoYXQgb25lCi0JIHN0aWxsIGltcGxpZXMgdGhhdCB0aGUgc2VjdGlvbiB0YWtlcyB1cCBzcGFjZSBpbiB0aGUgb3V0cHV0Ci0JIGZpbGUuICAqLwotICAgICAgYmZkX3NlY3Rpb25fbGlzdF9jbGVhciAoYWJmZCk7Ci0KLSAgICAgIC8qIElmIHRoaXMgaXMgdGhlIGZpcnN0IGR5bmFtaWMgb2JqZWN0IGZvdW5kIGluIHRoZSBsaW5rLCBjcmVhdGUKLQkgdGhlIHNwZWNpYWwgc2VjdGlvbnMgcmVxdWlyZWQgZm9yIGR5bmFtaWMgbGlua2luZy4gICovCi0gICAgICBpZiAoISBfYmZkX2VsZl9saW5rX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zIChhYmZkLCBpbmZvKSkKLQlnb3RvIGVycm9yX3JldHVybjsKLQotICAgICAgaWYgKGFkZF9uZWVkZWQpCi0JewotCSAgLyogQWRkIGEgRFRfTkVFREVEIGVudHJ5IGZvciB0aGlzIGR5bmFtaWMgb2JqZWN0LiAgKi8KLQkgIG9sZHNpemUgPSBfYmZkX2VsZl9zdHJ0YWJfc2l6ZSAoaGFzaF90YWJsZS0+ZHluc3RyKTsKLQkgIHN0cmluZGV4ID0gX2JmZF9lbGZfc3RydGFiX2FkZCAoaGFzaF90YWJsZS0+ZHluc3RyLCBuYW1lLCBGQUxTRSk7Ci0JICBpZiAoc3RyaW5kZXggPT0gKGJmZF9zaXplX3R5cGUpIC0xKQotCSAgICBnb3RvIGVycm9yX3JldHVybjsKLQotCSAgaWYgKG9sZHNpemUgPT0gX2JmZF9lbGZfc3RydGFiX3NpemUgKGhhc2hfdGFibGUtPmR5bnN0cikpCi0JICAgIHsKLQkgICAgICBhc2VjdGlvbiAqc2R5bjsKLQkgICAgICBFbGZfRXh0ZXJuYWxfRHluICpkeW5jb24sICpkeW5jb25lbmQ7Ci0KLQkgICAgICAvKiBUaGUgaGFzaCB0YWJsZSBzaXplIGRpZCBub3QgY2hhbmdlLCB3aGljaCBtZWFucyB0aGF0Ci0JCSB0aGUgZHluYW1pYyBvYmplY3QgbmFtZSB3YXMgYWxyZWFkeSBlbnRlcmVkLiAgSWYgd2UKLQkJIGhhdmUgYWxyZWFkeSBpbmNsdWRlZCB0aGlzIGR5bmFtaWMgb2JqZWN0IGluIHRoZQotCQkgbGluaywganVzdCBpZ25vcmUgaXQuICBUaGVyZSBpcyBubyByZWFzb24gdG8gaW5jbHVkZQotCQkgYSBwYXJ0aWN1bGFyIGR5bmFtaWMgb2JqZWN0IG1vcmUgdGhhbiBvbmNlLiAgKi8KLQkgICAgICBzZHluID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGhhc2hfdGFibGUtPmR5bm9iaiwgIi5keW5hbWljIik7Ci0JICAgICAgQkZEX0FTU0VSVCAoc2R5biAhPSBOVUxMKTsKLQotCSAgICAgIGR5bmNvbiA9IChFbGZfRXh0ZXJuYWxfRHluICopIHNkeW4tPmNvbnRlbnRzOwotCSAgICAgIGR5bmNvbmVuZCA9IChFbGZfRXh0ZXJuYWxfRHluICopIChzZHluLT5jb250ZW50cyArCi0JCQkJCQlzZHluLT5fcmF3X3NpemUpOwotCSAgICAgIGZvciAoOyBkeW5jb24gPCBkeW5jb25lbmQ7IGR5bmNvbisrKQotCQl7Ci0JCSAgRWxmX0ludGVybmFsX0R5biBkeW47Ci0KLQkJICBlbGZfc3dhcF9keW5faW4gKGhhc2hfdGFibGUtPmR5bm9iaiwgZHluY29uLCAmIGR5bik7Ci0JCSAgaWYgKGR5bi5kX3RhZyA9PSBEVF9ORUVERUQKLQkJICAgICAgJiYgZHluLmRfdW4uZF92YWwgPT0gc3RyaW5kZXgpCi0JCSAgICB7Ci0JCSAgICAgIF9iZmRfZWxmX3N0cnRhYl9kZWxyZWYgKGhhc2hfdGFibGUtPmR5bnN0ciwgc3RyaW5kZXgpOwotCQkgICAgICByZXR1cm4gVFJVRTsKLQkJICAgIH0KLQkJfQotCSAgICB9Ci0KLQkgIGlmICghIGVsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfTkVFREVELCBzdHJpbmRleCkpCi0JICAgIGdvdG8gZXJyb3JfcmV0dXJuOwotCX0KLQotICAgICAgLyogU2F2ZSB0aGUgU09OQU1FLCBpZiB0aGVyZSBpcyBvbmUsIGJlY2F1c2Ugc29tZXRpbWVzIHRoZQotCSBsaW5rZXIgZW11bGF0aW9uIGNvZGUgd2lsbCBuZWVkIHRvIGtub3cgaXQuICAqLwotICAgICAgaWYgKCpuYW1lID09ICdcMCcpCi0JbmFtZSA9IGJhc2VuYW1lIChiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0gICAgICBlbGZfZHRfbmFtZSAoYWJmZCkgPSBuYW1lOwotICAgIH0KLQotICAvKiBJZiB0aGlzIGlzIGEgZHluYW1pYyBvYmplY3QsIHdlIGFsd2F5cyBsaW5rIGFnYWluc3QgdGhlIC5keW5zeW0KLSAgICAgc3ltYm9sIHRhYmxlLCBub3QgdGhlIC5zeW10YWIgc3ltYm9sIHRhYmxlLiAgVGhlIGR5bmFtaWMgbGlua2VyCi0gICAgIHdpbGwgb25seSBzZWUgdGhlIC5keW5zeW0gc3ltYm9sIHRhYmxlLCBzbyB0aGVyZSBpcyBubyByZWFzb24gdG8KLSAgICAgbG9vayBhdCAuc3ltdGFiIGZvciBhIGR5bmFtaWMgb2JqZWN0LiAgKi8KLQotICBpZiAoISBkeW5hbWljIHx8IGVsZl9keW5zeW10YWIgKGFiZmQpID09IDApCi0gICAgaGRyID0gJmVsZl90ZGF0YSAoYWJmZCktPnN5bXRhYl9oZHI7Ci0gIGVsc2UKLSAgICBoZHIgPSAmZWxmX3RkYXRhIChhYmZkKS0+ZHluc3ltdGFiX2hkcjsKLQotICBzeW1jb3VudCA9IGhkci0+c2hfc2l6ZSAvIHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bSk7Ci0KLSAgLyogVGhlIHNoX2luZm8gZmllbGQgb2YgdGhlIHN5bXRhYiBoZWFkZXIgdGVsbHMgdXMgd2hlcmUgdGhlCi0gICAgIGV4dGVybmFsIHN5bWJvbHMgc3RhcnQuICBXZSBkb24ndCBjYXJlIGFib3V0IHRoZSBsb2NhbCBzeW1ib2xzIGF0Ci0gICAgIHRoaXMgcG9pbnQuICAqLwotICBpZiAoZWxmX2JhZF9zeW10YWIgKGFiZmQpKQotICAgIHsKLSAgICAgIGV4dHN5bWNvdW50ID0gc3ltY291bnQ7Ci0gICAgICBleHRzeW1vZmYgPSAwOwotICAgIH0KLSAgZWxzZQotICAgIHsKLSAgICAgIGV4dHN5bWNvdW50ID0gc3ltY291bnQgLSBoZHItPnNoX2luZm87Ci0gICAgICBleHRzeW1vZmYgPSBoZHItPnNoX2luZm87Ci0gICAgfQotCi0gIHN5bV9oYXNoID0gTlVMTDsKLSAgaWYgKGV4dHN5bWNvdW50ICE9IDApCi0gICAgewotICAgICAgaXN5bWJ1ZiA9IGJmZF9lbGZfZ2V0X2VsZl9zeW1zIChhYmZkLCBoZHIsIGV4dHN5bWNvdW50LCBleHRzeW1vZmYsCi0JCQkJICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0gICAgICBpZiAoaXN5bWJ1ZiA9PSBOVUxMKQotCWdvdG8gZXJyb3JfcmV0dXJuOwotCi0gICAgICAvKiBXZSBzdG9yZSBhIHBvaW50ZXIgdG8gdGhlIGhhc2ggdGFibGUgZW50cnkgZm9yIGVhY2ggZXh0ZXJuYWwKLQkgc3ltYm9sLiAgKi8KLSAgICAgIGFtdCA9IGV4dHN5bWNvdW50ICogc2l6ZW9mIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKTsKLSAgICAgIHN5bV9oYXNoID0gYmZkX2FsbG9jIChhYmZkLCBhbXQpOwotICAgICAgaWYgKHN5bV9oYXNoID09IE5VTEwpCi0JZ290byBlcnJvcl9mcmVlX3N5bTsKLSAgICAgIGVsZl9zeW1faGFzaGVzIChhYmZkKSA9IHN5bV9oYXNoOwotICAgIH0KLQotICBpZiAoZHluYW1pYykKLSAgICB7Ci0gICAgICAvKiBSZWFkIGluIGFueSB2ZXJzaW9uIGRlZmluaXRpb25zLiAgKi8KLSAgICAgIGlmICghIF9iZmRfZWxmX3NsdXJwX3ZlcnNpb25fdGFibGVzIChhYmZkKSkKLQlnb3RvIGVycm9yX2ZyZWVfc3ltOwotCi0gICAgICAvKiBSZWFkIGluIHRoZSBzeW1ib2wgdmVyc2lvbnMsIGJ1dCBkb24ndCBib3RoZXIgdG8gY29udmVydCB0aGVtCi0JIHRvIGludGVybmFsIGZvcm1hdC4gICovCi0gICAgICBpZiAoZWxmX2R5bnZlcnN5bSAoYWJmZCkgIT0gMCkKLQl7Ci0JICBFbGZfSW50ZXJuYWxfU2hkciAqdmVyc3ltaGRyOwotCi0JICB2ZXJzeW1oZHIgPSAmZWxmX3RkYXRhIChhYmZkKS0+ZHludmVyc3ltX2hkcjsKLQkgIGV4dHZlcnN5bSA9IGJmZF9tYWxsb2MgKHZlcnN5bWhkci0+c2hfc2l6ZSk7Ci0JICBpZiAoZXh0dmVyc3ltID09IE5VTEwpCi0JICAgIGdvdG8gZXJyb3JfZnJlZV9zeW07Ci0JICBhbXQgPSB2ZXJzeW1oZHItPnNoX3NpemU7Ci0JICBpZiAoYmZkX3NlZWsgKGFiZmQsIHZlcnN5bWhkci0+c2hfb2Zmc2V0LCBTRUVLX1NFVCkgIT0gMAotCSAgICAgIHx8IGJmZF9icmVhZCAoZXh0dmVyc3ltLCBhbXQsIGFiZmQpICE9IGFtdCkKLQkgICAgZ290byBlcnJvcl9mcmVlX3ZlcnM7Ci0JfQotICAgIH0KLQotICB3ZWFrcyA9IE5VTEw7Ci0KLSAgZXZlciA9IGV4dHZlcnN5bSAhPSBOVUxMID8gZXh0dmVyc3ltICsgZXh0c3ltb2ZmIDogTlVMTDsKLSAgZm9yIChpc3ltID0gaXN5bWJ1ZiwgaXN5bWVuZCA9IGlzeW1idWYgKyBleHRzeW1jb3VudDsKLSAgICAgICBpc3ltIDwgaXN5bWVuZDsKLSAgICAgICBpc3ltKyssIHN5bV9oYXNoKyssIGV2ZXIgPSAoZXZlciAhPSBOVUxMID8gZXZlciArIDEgOiBOVUxMKSkKLSAgICB7Ci0gICAgICBpbnQgYmluZDsKLSAgICAgIGJmZF92bWEgdmFsdWU7Ci0gICAgICBhc2VjdGlvbiAqc2VjOwotICAgICAgZmxhZ3dvcmQgZmxhZ3M7Ci0gICAgICBjb25zdCBjaGFyICpuYW1lOwotICAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmg7Ci0gICAgICBiZmRfYm9vbGVhbiBkZWZpbml0aW9uOwotICAgICAgYmZkX2Jvb2xlYW4gc2l6ZV9jaGFuZ2Vfb2s7Ci0gICAgICBiZmRfYm9vbGVhbiB0eXBlX2NoYW5nZV9vazsKLSAgICAgIGJmZF9ib29sZWFuIG5ld193ZWFrZGVmOwotICAgICAgYmZkX2Jvb2xlYW4gb3ZlcnJpZGU7Ci0gICAgICB1bnNpZ25lZCBpbnQgb2xkX2FsaWdubWVudDsKLSAgICAgIGJmZCAqb2xkX2JmZDsKLQotICAgICAgb3ZlcnJpZGUgPSBGQUxTRTsKLQotICAgICAgZmxhZ3MgPSBCU0ZfTk9fRkxBR1M7Ci0gICAgICBzZWMgPSBOVUxMOwotICAgICAgdmFsdWUgPSBpc3ltLT5zdF92YWx1ZTsKLSAgICAgICpzeW1faGFzaCA9IE5VTEw7Ci0KLSAgICAgIGJpbmQgPSBFTEZfU1RfQklORCAoaXN5bS0+c3RfaW5mbyk7Ci0gICAgICBpZiAoYmluZCA9PSBTVEJfTE9DQUwpCi0JewotCSAgLyogVGhpcyBzaG91bGQgYmUgaW1wb3NzaWJsZSwgc2luY2UgRUxGIHJlcXVpcmVzIHRoYXQgYWxsCi0JICAgICBnbG9iYWwgc3ltYm9scyBmb2xsb3cgYWxsIGxvY2FsIHN5bWJvbHMsIGFuZCB0aGF0IHNoX2luZm8KLQkgICAgIHBvaW50IHRvIHRoZSBmaXJzdCBnbG9iYWwgc3ltYm9sLiAgVW5mb3J0dW5hdGVseSwgSXJpeCA1Ci0JICAgICBzY3Jld3MgdGhpcyB1cC4gICovCi0JICBjb250aW51ZTsKLQl9Ci0gICAgICBlbHNlIGlmIChiaW5kID09IFNUQl9HTE9CQUwpCi0JewotCSAgaWYgKGlzeW0tPnN0X3NobmR4ICE9IFNITl9VTkRFRgotCSAgICAgICYmIGlzeW0tPnN0X3NobmR4ICE9IFNITl9DT01NT04pCi0JICAgIGZsYWdzID0gQlNGX0dMT0JBTDsKLQl9Ci0gICAgICBlbHNlIGlmIChiaW5kID09IFNUQl9XRUFLKQotCWZsYWdzID0gQlNGX1dFQUs7Ci0gICAgICBlbHNlCi0JewotCSAgLyogTGVhdmUgaXQgdXAgdG8gdGhlIHByb2Nlc3NvciBiYWNrZW5kLiAgKi8KLQl9Ci0KLSAgICAgIGlmIChpc3ltLT5zdF9zaG5keCA9PSBTSE5fVU5ERUYpCi0Jc2VjID0gYmZkX3VuZF9zZWN0aW9uX3B0cjsKLSAgICAgIGVsc2UgaWYgKGlzeW0tPnN0X3NobmR4IDwgU0hOX0xPUkVTRVJWRSB8fCBpc3ltLT5zdF9zaG5keCA+IFNITl9ISVJFU0VSVkUpCi0JewotCSAgc2VjID0gc2VjdGlvbl9mcm9tX2VsZl9pbmRleCAoYWJmZCwgaXN5bS0+c3Rfc2huZHgpOwotCSAgaWYgKHNlYyA9PSBOVUxMKQotCSAgICBzZWMgPSBiZmRfYWJzX3NlY3Rpb25fcHRyOwotCSAgZWxzZSBpZiAoKGFiZmQtPmZsYWdzICYgKEVYRUNfUCB8IERZTkFNSUMpKSAhPSAwKQotCSAgICB2YWx1ZSAtPSBzZWMtPnZtYTsKLQl9Ci0gICAgICBlbHNlIGlmIChpc3ltLT5zdF9zaG5keCA9PSBTSE5fQUJTKQotCXNlYyA9IGJmZF9hYnNfc2VjdGlvbl9wdHI7Ci0gICAgICBlbHNlIGlmIChpc3ltLT5zdF9zaG5keCA9PSBTSE5fQ09NTU9OKQotCXsKLQkgIHNlYyA9IGJmZF9jb21fc2VjdGlvbl9wdHI7Ci0JICAvKiBXaGF0IEVMRiBjYWxscyB0aGUgc2l6ZSB3ZSBjYWxsIHRoZSB2YWx1ZS4gIFdoYXQgRUxGCi0JICAgICBjYWxscyB0aGUgdmFsdWUgd2UgY2FsbCB0aGUgYWxpZ25tZW50LiAgKi8KLQkgIHZhbHVlID0gaXN5bS0+c3Rfc2l6ZTsKLQl9Ci0gICAgICBlbHNlCi0JewotCSAgLyogTGVhdmUgaXQgdXAgdG8gdGhlIHByb2Nlc3NvciBiYWNrZW5kLiAgKi8KLQl9Ci0KLSAgICAgIG5hbWUgPSBiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uIChhYmZkLCBoZHItPnNoX2xpbmssCi0JCQkJCSAgICAgIGlzeW0tPnN0X25hbWUpOwotICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKLQlnb3RvIGVycm9yX2ZyZWVfdmVyczsKLQotICAgICAgaWYgKGlzeW0tPnN0X3NobmR4ID09IFNITl9DT01NT04KLQkgICYmIEVMRl9TVF9UWVBFIChpc3ltLT5zdF9pbmZvKSA9PSBTVFRfVExTKQotCXsKLQkgIGFzZWN0aW9uICp0Y29tbSA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLnRjb21tb24iKTsKLQotCSAgaWYgKHRjb21tID09IE5VTEwpCi0JICAgIHsKLQkgICAgICB0Y29tbSA9IGJmZF9tYWtlX3NlY3Rpb24gKGFiZmQsICIudGNvbW1vbiIpOwotCSAgICAgIGlmICh0Y29tbSA9PSBOVUxMCi0JCSAgfHwgIWJmZF9zZXRfc2VjdGlvbl9mbGFncyAoYWJmZCwgdGNvbW0sIChTRUNfQUxMT0MKLQkJCQkJCQkgICB8IFNFQ19JU19DT01NT04KLQkJCQkJCQkgICB8IFNFQ19MSU5LRVJfQ1JFQVRFRAotCQkJCQkJCSAgIHwgU0VDX1RIUkVBRF9MT0NBTCkpKQotCQlnb3RvIGVycm9yX2ZyZWVfdmVyczsKLQkgICAgfQotCSAgc2VjID0gdGNvbW07Ci0JfQotICAgICAgZWxzZSBpZiAoYWRkX3N5bWJvbF9ob29rKQotCXsKLQkgIGlmICghICgqYWRkX3N5bWJvbF9ob29rKSAoYWJmZCwgaW5mbywgaXN5bSwgJm5hbWUsICZmbGFncywgJnNlYywKLQkJCQkgICAgJnZhbHVlKSkKLQkgICAgZ290byBlcnJvcl9mcmVlX3ZlcnM7Ci0KLQkgIC8qIFRoZSBob29rIGZ1bmN0aW9uIHNldHMgdGhlIG5hbWUgdG8gTlVMTCBpZiB0aGlzIHN5bWJvbAotCSAgICAgc2hvdWxkIGJlIHNraXBwZWQgZm9yIHNvbWUgcmVhc29uLiAgKi8KLQkgIGlmIChuYW1lID09IE5VTEwpCi0JICAgIGNvbnRpbnVlOwotCX0KLQotICAgICAgLyogU2FuaXR5IGNoZWNrIHRoYXQgYWxsIHBvc3NpYmlsaXRpZXMgd2VyZSBoYW5kbGVkLiAgKi8KLSAgICAgIGlmIChzZWMgPT0gTlVMTCkKLQl7Ci0JICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKLQkgIGdvdG8gZXJyb3JfZnJlZV92ZXJzOwotCX0KLQotICAgICAgaWYgKGJmZF9pc191bmRfc2VjdGlvbiAoc2VjKQotCSAgfHwgYmZkX2lzX2NvbV9zZWN0aW9uIChzZWMpKQotCWRlZmluaXRpb24gPSBGQUxTRTsKLSAgICAgIGVsc2UKLQlkZWZpbml0aW9uID0gVFJVRTsKLQotICAgICAgc2l6ZV9jaGFuZ2Vfb2sgPSBGQUxTRTsKLSAgICAgIHR5cGVfY2hhbmdlX29rID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpLT50eXBlX2NoYW5nZV9vazsKLSAgICAgIG9sZF9hbGlnbm1lbnQgPSAwOwotICAgICAgb2xkX2JmZCA9IE5VTEw7Ci0KLSAgICAgIGlmIChpc19lbGZfaGFzaF90YWJsZSAoaGFzaF90YWJsZSkpCi0JewotCSAgRWxmX0ludGVybmFsX1ZlcnN5bSBpdmVyOwotCSAgdW5zaWduZWQgaW50IHZlcm51bSA9IDA7Ci0JICBiZmRfYm9vbGVhbiBza2lwOwotCi0JICBpZiAoZXZlciAhPSBOVUxMKQotCSAgICB7Ci0JICAgICAgX2JmZF9lbGZfc3dhcF92ZXJzeW1faW4gKGFiZmQsIGV2ZXIsICZpdmVyKTsKLQkgICAgICB2ZXJudW0gPSBpdmVyLnZzX3ZlcnMgJiBWRVJTWU1fVkVSU0lPTjsKLQotCSAgICAgIC8qIElmIHRoaXMgaXMgYSBoaWRkZW4gc3ltYm9sLCBvciBpZiBpdCBpcyBub3QgdmVyc2lvbgotCQkgMSwgd2UgYXBwZW5kIHRoZSB2ZXJzaW9uIG5hbWUgdG8gdGhlIHN5bWJvbCBuYW1lLgotCQkgSG93ZXZlciwgd2UgZG8gbm90IG1vZGlmeSBhIG5vbi1oaWRkZW4gYWJzb2x1dGUKLQkJIHN5bWJvbCwgYmVjYXVzZSBpdCBtaWdodCBiZSB0aGUgdmVyc2lvbiBzeW1ib2wKLQkJIGl0c2VsZi4gIEZJWE1FOiBXaGF0IGlmIGl0IGlzbid0PyAgKi8KLQkgICAgICBpZiAoKGl2ZXIudnNfdmVycyAmIFZFUlNZTV9ISURERU4pICE9IDAKLQkJICB8fCAodmVybnVtID4gMSAmJiAhIGJmZF9pc19hYnNfc2VjdGlvbiAoc2VjKSkpCi0JCXsKLQkJICBjb25zdCBjaGFyICp2ZXJzdHI7Ci0JCSAgc2l6ZV90IG5hbWVsZW4sIHZlcmxlbiwgbmV3bGVuOwotCQkgIGNoYXIgKm5ld25hbWUsICpwOwotCi0JCSAgaWYgKGlzeW0tPnN0X3NobmR4ICE9IFNITl9VTkRFRikKLQkJICAgIHsKLQkJICAgICAgaWYgKHZlcm51bSA+IGVsZl90ZGF0YSAoYWJmZCktPmR5bnZlcmRlZl9oZHIuc2hfaW5mbykKLQkJCXsKLQkJCSAgKCpfYmZkX2Vycm9yX2hhbmRsZXIpCi0JCQkgICAgKF8oIiVzOiAlczogaW52YWxpZCB2ZXJzaW9uICV1IChtYXggJWQpIiksCi0JCQkgICAgIGJmZF9hcmNoaXZlX2ZpbGVuYW1lIChhYmZkKSwgbmFtZSwgdmVybnVtLAotCQkJICAgICBlbGZfdGRhdGEgKGFiZmQpLT5keW52ZXJkZWZfaGRyLnNoX2luZm8pOwotCQkJICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKLQkJCSAgZ290byBlcnJvcl9mcmVlX3ZlcnM7Ci0JCQl9Ci0JCSAgICAgIGVsc2UgaWYgKHZlcm51bSA+IDEpCi0JCQl2ZXJzdHIgPQotCQkJICBlbGZfdGRhdGEgKGFiZmQpLT52ZXJkZWZbdmVybnVtIC0gMV0udmRfbm9kZW5hbWU7Ci0JCSAgICAgIGVsc2UKLQkJCXZlcnN0ciA9ICIiOwotCQkgICAgfQotCQkgIGVsc2UKLQkJICAgIHsKLQkJICAgICAgLyogV2UgY2Fubm90IHNpbXBseSB0ZXN0IGZvciB0aGUgbnVtYmVyIG9mCi0JCQkgZW50cmllcyBpbiB0aGUgVkVSTkVFRCBzZWN0aW9uIHNpbmNlIHRoZQotCQkJIG51bWJlcnMgZm9yIHRoZSBuZWVkZWQgdmVyc2lvbnMgZG8gbm90IHN0YXJ0Ci0JCQkgYXQgMC4gICovCi0JCSAgICAgIEVsZl9JbnRlcm5hbF9WZXJuZWVkICp0OwotCi0JCSAgICAgIHZlcnN0ciA9IE5VTEw7Ci0JCSAgICAgIGZvciAodCA9IGVsZl90ZGF0YSAoYWJmZCktPnZlcnJlZjsKLQkJCSAgIHQgIT0gTlVMTDsKLQkJCSAgIHQgPSB0LT52bl9uZXh0cmVmKQotCQkJewotCQkJICBFbGZfSW50ZXJuYWxfVmVybmF1eCAqYTsKLQotCQkJICBmb3IgKGEgPSB0LT52bl9hdXhwdHI7IGEgIT0gTlVMTDsgYSA9IGEtPnZuYV9uZXh0cHRyKQotCQkJICAgIHsKLQkJCSAgICAgIGlmIChhLT52bmFfb3RoZXIgPT0gdmVybnVtKQotCQkJCXsKLQkJCQkgIHZlcnN0ciA9IGEtPnZuYV9ub2RlbmFtZTsKLQkJCQkgIGJyZWFrOwotCQkJCX0KLQkJCSAgICB9Ci0JCQkgIGlmIChhICE9IE5VTEwpCi0JCQkgICAgYnJlYWs7Ci0JCQl9Ci0JCSAgICAgIGlmICh2ZXJzdHIgPT0gTlVMTCkKLQkJCXsKLQkJCSAgKCpfYmZkX2Vycm9yX2hhbmRsZXIpCi0JCQkgICAgKF8oIiVzOiAlczogaW52YWxpZCBuZWVkZWQgdmVyc2lvbiAlZCIpLAotCQkJICAgICBiZmRfYXJjaGl2ZV9maWxlbmFtZSAoYWJmZCksIG5hbWUsIHZlcm51bSk7Ci0JCQkgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9iYWRfdmFsdWUpOwotCQkJICBnb3RvIGVycm9yX2ZyZWVfdmVyczsKLQkJCX0KLQkJICAgIH0KLQotCQkgIG5hbWVsZW4gPSBzdHJsZW4gKG5hbWUpOwotCQkgIHZlcmxlbiA9IHN0cmxlbiAodmVyc3RyKTsKLQkJICBuZXdsZW4gPSBuYW1lbGVuICsgdmVybGVuICsgMjsKLQkJICBpZiAoKGl2ZXIudnNfdmVycyAmIFZFUlNZTV9ISURERU4pID09IDAKLQkJICAgICAgJiYgaXN5bS0+c3Rfc2huZHggIT0gU0hOX1VOREVGKQotCQkgICAgKytuZXdsZW47Ci0KLQkJICBuZXduYW1lID0gYmZkX2FsbG9jIChhYmZkLCBuZXdsZW4pOwotCQkgIGlmIChuZXduYW1lID09IE5VTEwpCi0JCSAgICBnb3RvIGVycm9yX2ZyZWVfdmVyczsKLQkJICBtZW1jcHkgKG5ld25hbWUsIG5hbWUsIG5hbWVsZW4pOwotCQkgIHAgPSBuZXduYW1lICsgbmFtZWxlbjsKLQkJICAqcCsrID0gRUxGX1ZFUl9DSFI7Ci0JCSAgLyogSWYgdGhpcyBpcyBhIGRlZmluZWQgbm9uLWhpZGRlbiB2ZXJzaW9uIHN5bWJvbCwKLQkJICAgICB3ZSBhZGQgYW5vdGhlciBAIHRvIHRoZSBuYW1lLiAgVGhpcyBpbmRpY2F0ZXMgdGhlCi0JCSAgICAgZGVmYXVsdCB2ZXJzaW9uIG9mIHRoZSBzeW1ib2wuICAqLwotCQkgIGlmICgoaXZlci52c192ZXJzICYgVkVSU1lNX0hJRERFTikgPT0gMAotCQkgICAgICAmJiBpc3ltLT5zdF9zaG5keCAhPSBTSE5fVU5ERUYpCi0JCSAgICAqcCsrID0gRUxGX1ZFUl9DSFI7Ci0JCSAgbWVtY3B5IChwLCB2ZXJzdHIsIHZlcmxlbiArIDEpOwotCi0JCSAgbmFtZSA9IG5ld25hbWU7Ci0JCX0KLQkgICAgfQotCi0JICBpZiAoIV9iZmRfZWxmX21lcmdlX3N5bWJvbCAoYWJmZCwgaW5mbywgbmFtZSwgaXN5bSwgJnNlYywgJnZhbHVlLAotCQkJCSAgICAgIHN5bV9oYXNoLCAmc2tpcCwgJm92ZXJyaWRlLAotCQkJCSAgICAgICZ0eXBlX2NoYW5nZV9vaywgJnNpemVfY2hhbmdlX29rLAotCQkJCSAgICAgIGR0X25lZWRlZCkpCi0JICAgIGdvdG8gZXJyb3JfZnJlZV92ZXJzOwotCi0JICBpZiAoc2tpcCkKLQkgICAgY29udGludWU7Ci0KLQkgIGlmIChvdmVycmlkZSkKLQkgICAgZGVmaW5pdGlvbiA9IEZBTFNFOwotCi0JICBoID0gKnN5bV9oYXNoOwotCSAgd2hpbGUgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2luZGlyZWN0Ci0JCSB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQotCSAgICBoID0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIGgtPnJvb3QudS5pLmxpbms7Ci0KLQkgIC8qIFJlbWVtYmVyIHRoZSBvbGQgYWxpZ25tZW50IGlmIHRoaXMgaXMgYSBjb21tb24gc3ltYm9sLCBzbwotCSAgICAgdGhhdCB3ZSBkb24ndCByZWR1Y2UgdGhlIGFsaWdubWVudCBsYXRlciBvbi4gIFdlIGNhbid0Ci0JICAgICBjaGVjayBsYXRlciwgYmVjYXVzZSBfYmZkX2dlbmVyaWNfbGlua19hZGRfb25lX3N5bWJvbAotCSAgICAgd2lsbCBzZXQgYSBkZWZhdWx0IGZvciB0aGUgYWxpZ25tZW50IHdoaWNoIHdlIHdhbnQgdG8KLQkgICAgIG92ZXJyaWRlLiBXZSBhbHNvIHJlbWVtYmVyIHRoZSBvbGQgYmZkIHdoZXJlIHRoZSBleGlzdGluZwotCSAgICAgZGVmaW5pdGlvbiBjb21lcyBmcm9tLiAgKi8KLQkgIHN3aXRjaCAoaC0+cm9vdC50eXBlKQotCSAgICB7Ci0JICAgIGRlZmF1bHQ6Ci0JICAgICAgYnJlYWs7Ci0KLQkgICAgY2FzZSBiZmRfbGlua19oYXNoX2RlZmluZWQ6Ci0JICAgIGNhc2UgYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrOgotCSAgICAgIG9sZF9iZmQgPSBoLT5yb290LnUuZGVmLnNlY3Rpb24tPm93bmVyOwotCSAgICAgIGJyZWFrOwotCSAgICAKLQkgICAgY2FzZSBiZmRfbGlua19oYXNoX2NvbW1vbjoKLQkgICAgICBvbGRfYmZkID0gaC0+cm9vdC51LmMucC0+c2VjdGlvbi0+b3duZXI7Ci0JICAgICAgb2xkX2FsaWdubWVudCA9IGgtPnJvb3QudS5jLnAtPmFsaWdubWVudF9wb3dlcjsKLQkgICAgICBicmVhazsKLQkgICAgfQotCi0JICBpZiAoZWxmX3RkYXRhIChhYmZkKS0+dmVyZGVmICE9IE5VTEwKLQkgICAgICAmJiAhIG92ZXJyaWRlCi0JICAgICAgJiYgdmVybnVtID4gMQotCSAgICAgICYmIGRlZmluaXRpb24pCi0JICAgIGgtPnZlcmluZm8udmVyZGVmID0gJmVsZl90ZGF0YSAoYWJmZCktPnZlcmRlZlt2ZXJudW0gLSAxXTsKLQl9Ci0KLSAgICAgIGlmICghIChfYmZkX2dlbmVyaWNfbGlua19hZGRfb25lX3N5bWJvbAotCSAgICAgKGluZm8sIGFiZmQsIG5hbWUsIGZsYWdzLCBzZWMsIHZhbHVlLCBOVUxMLCBGQUxTRSwgY29sbGVjdCwKLQkgICAgICAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkgKiopIHN5bV9oYXNoKSkpCi0JZ290byBlcnJvcl9mcmVlX3ZlcnM7Ci0KLSAgICAgIGggPSAqc3ltX2hhc2g7Ci0gICAgICB3aGlsZSAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKLQkgICAgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0JaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOwotICAgICAgKnN5bV9oYXNoID0gaDsKLQotICAgICAgbmV3X3dlYWtkZWYgPSBGQUxTRTsKLSAgICAgIGlmIChkeW5hbWljCi0JICAmJiBkZWZpbml0aW9uCi0JICAmJiAoZmxhZ3MgJiBCU0ZfV0VBSykgIT0gMAotCSAgJiYgRUxGX1NUX1RZUEUgKGlzeW0tPnN0X2luZm8pICE9IFNUVF9GVU5DCi0JICAmJiBpc19lbGZfaGFzaF90YWJsZSAoaGFzaF90YWJsZSkKLQkgICYmIGgtPndlYWtkZWYgPT0gTlVMTCkKLQl7Ci0JICAvKiBLZWVwIGEgbGlzdCBvZiBhbGwgd2VhayBkZWZpbmVkIG5vbiBmdW5jdGlvbiBzeW1ib2xzIGZyb20KLQkgICAgIGEgZHluYW1pYyBvYmplY3QsIHVzaW5nIHRoZSB3ZWFrZGVmIGZpZWxkLiAgTGF0ZXIgaW4gdGhpcwotCSAgICAgZnVuY3Rpb24gd2Ugd2lsbCBzZXQgdGhlIHdlYWtkZWYgZmllbGQgdG8gdGhlIGNvcnJlY3QKLQkgICAgIHZhbHVlLiAgV2Ugb25seSBwdXQgbm9uLWZ1bmN0aW9uIHN5bWJvbHMgZnJvbSBkeW5hbWljCi0JICAgICBvYmplY3RzIG9uIHRoaXMgbGlzdCwgYmVjYXVzZSB0aGF0IGhhcHBlbnMgdG8gYmUgdGhlIG9ubHkKLQkgICAgIHRpbWUgd2UgbmVlZCB0byBrbm93IHRoZSBub3JtYWwgc3ltYm9sIGNvcnJlc3BvbmRpbmcgdG8gYQotCSAgICAgd2VhayBzeW1ib2wsIGFuZCB0aGUgaW5mb3JtYXRpb24gaXMgdGltZSBjb25zdW1pbmcgdG8KLQkgICAgIGZpZ3VyZSBvdXQuICBJZiB0aGUgd2Vha2RlZiBmaWVsZCBpcyBub3QgYWxyZWFkeSBOVUxMLAotCSAgICAgdGhlbiB0aGlzIHN5bWJvbCB3YXMgYWxyZWFkeSBkZWZpbmVkIGJ5IHNvbWUgcHJldmlvdXMKLQkgICAgIGR5bmFtaWMgb2JqZWN0LCBhbmQgd2Ugd2lsbCBiZSB1c2luZyB0aGF0IHByZXZpb3VzCi0JICAgICBkZWZpbml0aW9uIGFueWhvdy4gICovCi0KLQkgIGgtPndlYWtkZWYgPSB3ZWFrczsKLQkgIHdlYWtzID0gaDsKLQkgIG5ld193ZWFrZGVmID0gVFJVRTsKLQl9Ci0KLSAgICAgIC8qIFNldCB0aGUgYWxpZ25tZW50IG9mIGEgY29tbW9uIHN5bWJvbC4gICovCi0gICAgICBpZiAoaXN5bS0+c3Rfc2huZHggPT0gU0hOX0NPTU1PTgotCSAgJiYgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfY29tbW9uKQotCXsKLQkgIHVuc2lnbmVkIGludCBhbGlnbjsKLQotCSAgYWxpZ24gPSBiZmRfbG9nMiAoaXN5bS0+c3RfdmFsdWUpOwotCSAgaWYgKGFsaWduID4gb2xkX2FsaWdubWVudAotCSAgICAgIC8qIFBlcm1pdCBhbiBhbGlnbm1lbnQgcG93ZXIgb2YgemVybyBpZiBhbiBhbGlnbm1lbnQgb2Ygb25lCi0JCSBpcyBzcGVjaWZpZWQgYW5kIG5vIG90aGVyIGFsaWdubWVudHMgaGF2ZSBiZWVuIHNwZWNpZmllZC4gICovCi0JICAgICAgfHwgKGlzeW0tPnN0X3ZhbHVlID09IDEgJiYgb2xkX2FsaWdubWVudCA9PSAwKSkKLQkgICAgaC0+cm9vdC51LmMucC0+YWxpZ25tZW50X3Bvd2VyID0gYWxpZ247Ci0JICBlbHNlCi0JICAgIGgtPnJvb3QudS5jLnAtPmFsaWdubWVudF9wb3dlciA9IG9sZF9hbGlnbm1lbnQ7Ci0JfQotCi0gICAgICBpZiAoaXNfZWxmX2hhc2hfdGFibGUgKGhhc2hfdGFibGUpKQotCXsKLQkgIGludCBvbGRfZmxhZ3M7Ci0JICBiZmRfYm9vbGVhbiBkeW5zeW07Ci0JICBpbnQgbmV3X2ZsYWc7Ci0KLQkgIC8qIENoZWNrIHRoZSBhbGlnbm1lbnQgd2hlbiBhIGNvbW1vbiBzeW1ib2wgaXMgaW52b2x2ZWQuIFRoaXMKLQkgICAgIGNhbiBjaGFuZ2Ugd2hlbiBhIGNvbW1vbiBzeW1ib2wgaXMgb3ZlcnJpZGRlbiBieSBhIG5vcm1hbAotCSAgICAgZGVmaW5pdGlvbiBvciBhIGNvbW1vbiBzeW1ib2wgaXMgaWdub3JlZCBkdWUgdG8gdGhlIG9sZAotCSAgICAgbm9ybWFsIGRlZmluaXRpb24uIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBtYXhpbXVtCi0JICAgICBhbGlnbm1lbnQgaXMgbWFpbnRhaW5lZC4gICovCi0JICBpZiAoKG9sZF9hbGlnbm1lbnQgfHwgaXN5bS0+c3Rfc2huZHggPT0gU0hOX0NPTU1PTikKLQkgICAgICAmJiBoLT5yb290LnR5cGUgIT0gYmZkX2xpbmtfaGFzaF9jb21tb24pCi0JICAgIHsKLQkgICAgICB1bnNpZ25lZCBpbnQgY29tbW9uX2FsaWduOwotCSAgICAgIHVuc2lnbmVkIGludCBub3JtYWxfYWxpZ247Ci0JICAgICAgdW5zaWduZWQgaW50IHN5bWJvbF9hbGlnbjsKLQkgICAgICBiZmQgKm5vcm1hbF9iZmQ7Ci0JICAgICAgYmZkICpjb21tb25fYmZkOwotCi0JICAgICAgc3ltYm9sX2FsaWduID0gZmZzIChoLT5yb290LnUuZGVmLnZhbHVlKSAtIDE7Ci0JICAgICAgaWYgKGgtPnJvb3QudS5kZWYuc2VjdGlvbi0+b3duZXIgIT0gTlVMTAotCQkgICYmIChoLT5yb290LnUuZGVmLnNlY3Rpb24tPm93bmVyLT5mbGFncyAmIERZTkFNSUMpID09IDApCi0JCXsKLQkJICBub3JtYWxfYWxpZ24gPSBoLT5yb290LnUuZGVmLnNlY3Rpb24tPmFsaWdubWVudF9wb3dlcjsKLQkJICBpZiAobm9ybWFsX2FsaWduID4gc3ltYm9sX2FsaWduKQotCQkgICAgbm9ybWFsX2FsaWduID0gc3ltYm9sX2FsaWduOwotCQl9Ci0JICAgICAgZWxzZQotCQlub3JtYWxfYWxpZ24gPSBzeW1ib2xfYWxpZ247Ci0KLQkgICAgICBpZiAob2xkX2FsaWdubWVudCkKLQkJewotCQkgIGNvbW1vbl9hbGlnbiA9IG9sZF9hbGlnbm1lbnQ7Ci0JCSAgY29tbW9uX2JmZCA9IG9sZF9iZmQ7Ci0JCSAgbm9ybWFsX2JmZCA9IGFiZmQ7Ci0JCX0KLQkgICAgICBlbHNlCi0JCXsKLQkJICBjb21tb25fYWxpZ24gPSBiZmRfbG9nMiAoaXN5bS0+c3RfdmFsdWUpOwotCQkgIGNvbW1vbl9iZmQgPSBhYmZkOwotCQkgIG5vcm1hbF9iZmQgPSBvbGRfYmZkOwotCQl9Ci0KLQkgICAgICBpZiAobm9ybWFsX2FsaWduIDwgY29tbW9uX2FsaWduKQotCQkoKl9iZmRfZXJyb3JfaGFuZGxlcikKLQkJICAoXygiV2FybmluZzogYWxpZ25tZW50ICV1IG9mIHN5bWJvbCBgJXMnIGluICVzIGlzIHNtYWxsZXIgdGhhbiAldSBpbiAlcyIpLAotCQkgICAxIDw8IG5vcm1hbF9hbGlnbiwKLQkJICAgbmFtZSwKLQkJICAgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKG5vcm1hbF9iZmQpLAotCQkgICAxIDw8IGNvbW1vbl9hbGlnbiwKLQkJICAgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKGNvbW1vbl9iZmQpKTsKLQkgICAgfQotCi0JICAvKiBSZW1lbWJlciB0aGUgc3ltYm9sIHNpemUgYW5kIHR5cGUuICAqLwotCSAgaWYgKGlzeW0tPnN0X3NpemUgIT0gMAotCSAgICAgICYmIChkZWZpbml0aW9uIHx8IGgtPnNpemUgPT0gMCkpCi0JICAgIHsKLQkgICAgICBpZiAoaC0+c2l6ZSAhPSAwICYmIGgtPnNpemUgIT0gaXN5bS0+c3Rfc2l6ZSAmJiAhIHNpemVfY2hhbmdlX29rKQotCQkoKl9iZmRfZXJyb3JfaGFuZGxlcikKLQkJICAoXygiV2FybmluZzogc2l6ZSBvZiBzeW1ib2wgYCVzJyBjaGFuZ2VkIGZyb20gJWx1IGluICVzIHRvICVsdSBpbiAlcyIpLAotCQkgICBuYW1lLCAodW5zaWduZWQgbG9uZykgaC0+c2l6ZSwKLQkJICAgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKG9sZF9iZmQpLAotCQkgICAodW5zaWduZWQgbG9uZykgaXN5bS0+c3Rfc2l6ZSwKLQkJICAgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKGFiZmQpKTsKLQotCSAgICAgIGgtPnNpemUgPSBpc3ltLT5zdF9zaXplOwotCSAgICB9Ci0KLQkgIC8qIElmIHRoaXMgaXMgYSBjb21tb24gc3ltYm9sLCB0aGVuIHdlIGFsd2F5cyB3YW50IEgtPlNJWkUKLQkgICAgIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBjb21tb24gc3ltYm9sLiAgVGhlIGNvZGUganVzdCBhYm92ZQotCSAgICAgd29uJ3QgZml4IHRoZSBzaXplIGlmIGEgY29tbW9uIHN5bWJvbCBiZWNvbWVzIGxhcmdlci4gIFdlCi0JICAgICBkb24ndCB3YXJuIGFib3V0IGEgc2l6ZSBjaGFuZ2UgaGVyZSwgYmVjYXVzZSB0aGF0IGlzCi0JICAgICBjb3ZlcmVkIGJ5IC0td2Fybi1jb21tb24uICAqLwotCSAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2NvbW1vbikKLQkgICAgaC0+c2l6ZSA9IGgtPnJvb3QudS5jLnNpemU7Ci0KLQkgIGlmIChFTEZfU1RfVFlQRSAoaXN5bS0+c3RfaW5mbykgIT0gU1RUX05PVFlQRQotCSAgICAgICYmIChkZWZpbml0aW9uIHx8IGgtPnR5cGUgPT0gU1RUX05PVFlQRSkpCi0JICAgIHsKLQkgICAgICBpZiAoaC0+dHlwZSAhPSBTVFRfTk9UWVBFCi0JCSAgJiYgaC0+dHlwZSAhPSBFTEZfU1RfVFlQRSAoaXN5bS0+c3RfaW5mbykKLQkJICAmJiAhIHR5cGVfY2hhbmdlX29rKQotCQkoKl9iZmRfZXJyb3JfaGFuZGxlcikKLQkJICAoXygiV2FybmluZzogdHlwZSBvZiBzeW1ib2wgYCVzJyBjaGFuZ2VkIGZyb20gJWQgdG8gJWQgaW4gJXMiKSwKLQkJICAgbmFtZSwgaC0+dHlwZSwgRUxGX1NUX1RZUEUgKGlzeW0tPnN0X2luZm8pLAotCQkgICBiZmRfYXJjaGl2ZV9maWxlbmFtZSAoYWJmZCkpOwotCi0JICAgICAgaC0+dHlwZSA9IEVMRl9TVF9UWVBFIChpc3ltLT5zdF9pbmZvKTsKLQkgICAgfQotCi0JICAvKiBJZiBzdF9vdGhlciBoYXMgYSBwcm9jZXNzb3Itc3BlY2lmaWMgbWVhbmluZywgc3BlY2lmaWMKLQkgICAgIGNvZGUgbWlnaHQgYmUgbmVlZGVkIGhlcmUuIFdlIG5ldmVyIG1lcmdlIHRoZSB2aXNpYmlsaXR5Ci0JICAgICBhdHRyaWJ1dGUgd2l0aCB0aGUgb25lIGZyb20gYSBkeW5hbWljIG9iamVjdC4gICovCi0JICBpZiAoYmVkLT5lbGZfYmFja2VuZF9tZXJnZV9zeW1ib2xfYXR0cmlidXRlKQotCSAgICAoKmJlZC0+ZWxmX2JhY2tlbmRfbWVyZ2Vfc3ltYm9sX2F0dHJpYnV0ZSkgKGgsIGlzeW0sIGRlZmluaXRpb24sCi0JCQkJCQkJZHluYW1pYyk7Ci0KLQkgIGlmIChpc3ltLT5zdF9vdGhlciAhPSAwICYmICFkeW5hbWljKQotCSAgICB7Ci0JICAgICAgdW5zaWduZWQgY2hhciBodmlzLCBzeW12aXMsIG90aGVyLCBudmlzOwotCi0JICAgICAgLyogVGFrZSB0aGUgYmFsYW5jZSBvZiBPVEhFUiBmcm9tIHRoZSBkZWZpbml0aW9uLiAgKi8KLQkgICAgICBvdGhlciA9IChkZWZpbml0aW9uID8gaXN5bS0+c3Rfb3RoZXIgOiBoLT5vdGhlcik7Ci0JICAgICAgb3RoZXIgJj0gfiBFTEZfU1RfVklTSUJJTElUWSAoLTEpOwotCi0JICAgICAgLyogQ29tYmluZSB2aXNpYmlsaXRpZXMsIHVzaW5nIHRoZSBtb3N0IGNvbnN0cmFpbmluZyBvbmUuICAqLwotCSAgICAgIGh2aXMgICA9IEVMRl9TVF9WSVNJQklMSVRZIChoLT5vdGhlcik7Ci0JICAgICAgc3ltdmlzID0gRUxGX1NUX1ZJU0lCSUxJVFkgKGlzeW0tPnN0X290aGVyKTsKLQkgICAgICBpZiAoISBodmlzKQotCQludmlzID0gc3ltdmlzOwotCSAgICAgIGVsc2UgaWYgKCEgc3ltdmlzKQotCQludmlzID0gaHZpczsKLQkgICAgICBlbHNlCi0JCW52aXMgPSBodmlzIDwgc3ltdmlzID8gaHZpcyA6IHN5bXZpczsKLQotCSAgICAgIGgtPm90aGVyID0gb3RoZXIgfCBudmlzOwotCSAgICB9Ci0KLQkgIC8qIFNldCBhIGZsYWcgaW4gdGhlIGhhc2ggdGFibGUgZW50cnkgaW5kaWNhdGluZyB0aGUgdHlwZSBvZgotCSAgICAgcmVmZXJlbmNlIG9yIGRlZmluaXRpb24gd2UganVzdCBmb3VuZC4gIEtlZXAgYSBjb3VudCBvZgotCSAgICAgdGhlIG51bWJlciBvZiBkeW5hbWljIHN5bWJvbHMgd2UgZmluZC4gIEEgZHluYW1pYyBzeW1ib2wKLQkgICAgIGlzIG9uZSB3aGljaCBpcyByZWZlcmVuY2VkIG9yIGRlZmluZWQgYnkgYm90aCBhIHJlZ3VsYXIKLQkgICAgIG9iamVjdCBhbmQgYSBzaGFyZWQgb2JqZWN0LiAgKi8KLQkgIG9sZF9mbGFncyA9IGgtPmVsZl9saW5rX2hhc2hfZmxhZ3M7Ci0JICBkeW5zeW0gPSBGQUxTRTsKLQkgIGlmICghIGR5bmFtaWMpCi0JICAgIHsKLQkgICAgICBpZiAoISBkZWZpbml0aW9uKQotCQl7Ci0JCSAgbmV3X2ZsYWcgPSBFTEZfTElOS19IQVNIX1JFRl9SRUdVTEFSOwotCQkgIGlmIChiaW5kICE9IFNUQl9XRUFLKQotCQkgICAgbmV3X2ZsYWcgfD0gRUxGX0xJTktfSEFTSF9SRUZfUkVHVUxBUl9OT05XRUFLOwotCQl9Ci0JICAgICAgZWxzZQotCQluZXdfZmxhZyA9IEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVI7Ci0JICAgICAgaWYgKCEgaW5mby0+ZXhlY3V0YWJsZQotCQkgIHx8IChvbGRfZmxhZ3MgJiAoRUxGX0xJTktfSEFTSF9ERUZfRFlOQU1JQwotCQkJCSAgIHwgRUxGX0xJTktfSEFTSF9SRUZfRFlOQU1JQykpICE9IDApCi0JCWR5bnN5bSA9IFRSVUU7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIGlmICghIGRlZmluaXRpb24pCi0JCW5ld19mbGFnID0gRUxGX0xJTktfSEFTSF9SRUZfRFlOQU1JQzsKLQkgICAgICBlbHNlCi0JCW5ld19mbGFnID0gRUxGX0xJTktfSEFTSF9ERUZfRFlOQU1JQzsKLQkgICAgICBpZiAoKG9sZF9mbGFncyAmIChFTEZfTElOS19IQVNIX0RFRl9SRUdVTEFSCi0JCQkJfCBFTEZfTElOS19IQVNIX1JFRl9SRUdVTEFSKSkgIT0gMAotCQkgIHx8IChoLT53ZWFrZGVmICE9IE5VTEwKLQkJICAgICAgJiYgISBuZXdfd2Vha2RlZgotCQkgICAgICAmJiBoLT53ZWFrZGVmLT5keW5pbmR4ICE9IC0xKSkKLQkJZHluc3ltID0gVFJVRTsKLQkgICAgfQotCi0JICBoLT5lbGZfbGlua19oYXNoX2ZsYWdzIHw9IG5ld19mbGFnOwotCi0JICAvKiBDaGVjayB0byBzZWUgaWYgd2UgbmVlZCB0byBhZGQgYW4gaW5kaXJlY3Qgc3ltYm9sIGZvcgotCSAgICAgdGhlIGRlZmF1bHQgbmFtZS4gICovCi0JICBpZiAoZGVmaW5pdGlvbiB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9jb21tb24pCi0JICAgIGlmICghX2JmZF9lbGZfYWRkX2RlZmF1bHRfc3ltYm9sIChhYmZkLCBpbmZvLCBoLCBuYW1lLCBpc3ltLAotCQkJCQkgICAgICAmc2VjLCAmdmFsdWUsICZkeW5zeW0sCi0JCQkJCSAgICAgIG92ZXJyaWRlLCBkdF9uZWVkZWQpKQotCSAgICAgIGdvdG8gZXJyb3JfZnJlZV92ZXJzOwotCi0JICBpZiAoZGVmaW5pdGlvbiAmJiAhZHluYW1pYykKLQkgICAgewotCSAgICAgIGNoYXIgKnAgPSBzdHJjaHIgKG5hbWUsIEVMRl9WRVJfQ0hSKTsKLQkgICAgICBpZiAocCAhPSBOVUxMICYmIHBbMV0gIT0gRUxGX1ZFUl9DSFIpCi0JCXsKLQkJICAvKiBRdWV1ZSBub24tZGVmYXVsdCB2ZXJzaW9ucyBzbyB0aGF0IC5zeW12ZXIgeCwgeEBGT08KLQkJICAgICBhbGlhc2VzIGNhbiBiZSBjaGVja2VkLiAgKi8KLQkJICBpZiAoISBub25kZWZsdF92ZXJzKQotCQkgICAgewotCQkgICAgICBhbXQgPSAoaXN5bWVuZCAtIGlzeW0gKyAxKQotCQkJICAgICogc2l6ZW9mIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKTsKLQkJICAgICAgbm9uZGVmbHRfdmVycyA9IGJmZF9tYWxsb2MgKGFtdCk7Ci0JCSAgICB9Ci0JCSAgbm9uZGVmbHRfdmVycyBbbm9uZGVmbHRfdmVyc19jbnQrK10gPSBoOwotCQl9Ci0JICAgIH0KLQotCSAgaWYgKGR5bnN5bSAmJiBoLT5keW5pbmR4ID09IC0xKQotCSAgICB7Ci0JICAgICAgaWYgKCEgX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQotCQlnb3RvIGVycm9yX2ZyZWVfdmVyczsKLQkgICAgICBpZiAoaC0+d2Vha2RlZiAhPSBOVUxMCi0JCSAgJiYgISBuZXdfd2Vha2RlZgotCQkgICYmIGgtPndlYWtkZWYtPmR5bmluZHggPT0gLTEpCi0JCXsKLQkJICBpZiAoISBfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaC0+d2Vha2RlZikpCi0JCSAgICBnb3RvIGVycm9yX2ZyZWVfdmVyczsKLQkJfQotCSAgICB9Ci0JICBlbHNlIGlmIChkeW5zeW0gJiYgaC0+ZHluaW5keCAhPSAtMSkKLQkgICAgLyogSWYgdGhlIHN5bWJvbCBhbHJlYWR5IGhhcyBhIGR5bmFtaWMgaW5kZXgsIGJ1dAotCSAgICAgICB2aXNpYmlsaXR5IHNheXMgaXQgc2hvdWxkIG5vdCBiZSB2aXNpYmxlLCB0dXJuIGl0IGludG8KLQkgICAgICAgYSBsb2NhbCBzeW1ib2wuICAqLwotCSAgICBzd2l0Y2ggKEVMRl9TVF9WSVNJQklMSVRZIChoLT5vdGhlcikpCi0JICAgICAgewotCSAgICAgIGNhc2UgU1RWX0lOVEVSTkFMOgotCSAgICAgIGNhc2UgU1RWX0hJRERFTjoKLQkJKCpiZWQtPmVsZl9iYWNrZW5kX2hpZGVfc3ltYm9sKSAoaW5mbywgaCwgVFJVRSk7Ci0JCWJyZWFrOwotCSAgICAgIH0KLQotCSAgaWYgKGR0X25lZWRlZCAmJiBkZWZpbml0aW9uCi0JICAgICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MKLQkJICAmIEVMRl9MSU5LX0hBU0hfUkVGX1JFR1VMQVIpICE9IDApCi0JICAgIHsKLQkgICAgICBiZmRfc2l6ZV90eXBlIG9sZHNpemU7Ci0JICAgICAgYmZkX3NpemVfdHlwZSBzdHJpbmRleDsKLQotCSAgICAgIC8qIFRoZSBzeW1ib2wgZnJvbSBhIERUX05FRURFRCBvYmplY3QgaXMgcmVmZXJlbmNlZCBmcm9tCi0JCSB0aGUgcmVndWxhciBvYmplY3QgdG8gY3JlYXRlIGEgZHluYW1pYyBleGVjdXRhYmxlLiBXZQotCQkgaGF2ZSB0byBtYWtlIHN1cmUgdGhlcmUgaXMgYSBEVF9ORUVERUQgZW50cnkgZm9yIGl0LiAgKi8KLQotCSAgICAgIGR0X25lZWRlZCA9IEZBTFNFOwotCSAgICAgIG9sZHNpemUgPSBfYmZkX2VsZl9zdHJ0YWJfc2l6ZSAoaGFzaF90YWJsZS0+ZHluc3RyKTsKLQkgICAgICBzdHJpbmRleCA9IF9iZmRfZWxmX3N0cnRhYl9hZGQgKGhhc2hfdGFibGUtPmR5bnN0ciwKLQkJCQkJICAgICAgZWxmX2R0X3NvbmFtZSAoYWJmZCksIEZBTFNFKTsKLQkgICAgICBpZiAoc3RyaW5kZXggPT0gKGJmZF9zaXplX3R5cGUpIC0xKQotCQlnb3RvIGVycm9yX2ZyZWVfdmVyczsKLQotCSAgICAgIGlmIChvbGRzaXplID09IF9iZmRfZWxmX3N0cnRhYl9zaXplIChoYXNoX3RhYmxlLT5keW5zdHIpKQotCQl7Ci0JCSAgYXNlY3Rpb24gKnNkeW47Ci0JCSAgRWxmX0V4dGVybmFsX0R5biAqZHluY29uLCAqZHluY29uZW5kOwotCi0JCSAgc2R5biA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChoYXNoX3RhYmxlLT5keW5vYmosCi0JCQkJCQkgICIuZHluYW1pYyIpOwotCQkgIEJGRF9BU1NFUlQgKHNkeW4gIT0gTlVMTCk7Ci0KLQkJICBkeW5jb24gPSAoRWxmX0V4dGVybmFsX0R5biAqKSBzZHluLT5jb250ZW50czsKLQkJICBkeW5jb25lbmQgPSAoRWxmX0V4dGVybmFsX0R5biAqKSAoc2R5bi0+Y29udGVudHMgKwotCQkJCQkJICAgIHNkeW4tPl9yYXdfc2l6ZSk7Ci0JCSAgZm9yICg7IGR5bmNvbiA8IGR5bmNvbmVuZDsgZHluY29uKyspCi0JCSAgICB7Ci0JCSAgICAgIEVsZl9JbnRlcm5hbF9EeW4gZHluOwotCi0JCSAgICAgIGVsZl9zd2FwX2R5bl9pbiAoaGFzaF90YWJsZS0+ZHlub2JqLAotCQkJCSAgICAgICBkeW5jb24sICZkeW4pOwotCQkgICAgICBCRkRfQVNTRVJUIChkeW4uZF90YWcgIT0gRFRfTkVFREVEIHx8Ci0JCQkJICBkeW4uZF91bi5kX3ZhbCAhPSBzdHJpbmRleCk7Ci0JCSAgICB9Ci0JCX0KLQotCSAgICAgIGlmICghIGVsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfTkVFREVELCBzdHJpbmRleCkpCi0JCWdvdG8gZXJyb3JfZnJlZV92ZXJzOwotCSAgICB9Ci0JfQotICAgIH0KLQotICAvKiBOb3cgdGhhdCBhbGwgdGhlIHN5bWJvbHMgZnJvbSB0aGlzIGlucHV0IGZpbGUgYXJlIGNyZWF0ZWQsIGhhbmRsZQotICAgICAuc3ltdmVyIGZvbywgZm9vQEJBUiBzdWNoIHRoYXQgYW55IHJlbG9jcyBhZ2FpbnN0IGZvbyBiZWNvbWUgZm9vQEJBUi4gICovCi0gIGlmIChub25kZWZsdF92ZXJzICE9IE5VTEwpCi0gICAgewotICAgICAgYmZkX3NpemVfdHlwZSBjbnQsIHN5bWlkeDsKLQotICAgICAgZm9yIChjbnQgPSAwOyBjbnQgPCBub25kZWZsdF92ZXJzX2NudDsgKytjbnQpCi0JewotCSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmggPSBub25kZWZsdF92ZXJzW2NudF0sICpoaTsKLQkgIGNoYXIgKnNob3J0bmFtZSwgKnA7Ci0KLQkgIHAgPSBzdHJjaHIgKGgtPnJvb3Qucm9vdC5zdHJpbmcsIEVMRl9WRVJfQ0hSKTsKLQkgIGlmIChwID09IE5VTEwKLQkgICAgICB8fCAoaC0+cm9vdC50eXBlICE9IGJmZF9saW5rX2hhc2hfZGVmaW5lZAotCQkgICYmIGgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX2RlZndlYWspKQotCSAgICBjb250aW51ZTsKLQotCSAgYW10ID0gcCAtIGgtPnJvb3Qucm9vdC5zdHJpbmc7Ci0JICBzaG9ydG5hbWUgPSBiZmRfbWFsbG9jIChhbXQgKyAxKTsKLQkgIG1lbWNweSAoc2hvcnRuYW1lLCBoLT5yb290LnJvb3Quc3RyaW5nLCBhbXQpOwotCSAgc2hvcnRuYW1lW2FtdF0gPSAnXDAnOwotCi0JICBoaSA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKQotCSAgICAgICBiZmRfbGlua19oYXNoX2xvb2t1cCAoJmhhc2hfdGFibGUtPnJvb3QsIHNob3J0bmFtZSwKLQkJCQkgICAgIEZBTFNFLCBGQUxTRSwgRkFMU0UpOwotCSAgaWYgKGhpICE9IE5VTEwKLQkgICAgICAmJiBoaS0+cm9vdC50eXBlID09IGgtPnJvb3QudHlwZQotCSAgICAgICYmIGhpLT5yb290LnUuZGVmLnZhbHVlID09IGgtPnJvb3QudS5kZWYudmFsdWUKLQkgICAgICAmJiBoaS0+cm9vdC51LmRlZi5zZWN0aW9uID09IGgtPnJvb3QudS5kZWYuc2VjdGlvbikKLQkgICAgewotCSAgICAgICgqYmVkLT5lbGZfYmFja2VuZF9oaWRlX3N5bWJvbCkgKGluZm8sIGhpLCBUUlVFKTsKLQkgICAgICBoaS0+cm9vdC50eXBlID0gYmZkX2xpbmtfaGFzaF9pbmRpcmVjdDsKLQkgICAgICBoaS0+cm9vdC51LmkubGluayA9IChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSAqKSBoOwotCSAgICAgICgqYmVkLT5lbGZfYmFja2VuZF9jb3B5X2luZGlyZWN0X3N5bWJvbCkgKGJlZCwgaCwgaGkpOwotCSAgICAgIHN5bV9oYXNoID0gZWxmX3N5bV9oYXNoZXMgKGFiZmQpOwotCSAgICAgIGlmIChzeW1faGFzaCkKLQkJZm9yIChzeW1pZHggPSAwOyBzeW1pZHggPCBleHRzeW1jb3VudDsgKytzeW1pZHgpCi0JCSAgaWYgKHN5bV9oYXNoW3N5bWlkeF0gPT0gaGkpCi0JCSAgICB7Ci0JCSAgICAgIHN5bV9oYXNoW3N5bWlkeF0gPSBoOwotCQkgICAgICBicmVhazsKLQkJICAgIH0KLQkgICAgfQotCSAgZnJlZSAoc2hvcnRuYW1lKTsKLQl9Ci0gICAgICBmcmVlIChub25kZWZsdF92ZXJzKTsKLSAgICAgIG5vbmRlZmx0X3ZlcnMgPSBOVUxMOwotICAgIH0KLQotICBpZiAoZXh0dmVyc3ltICE9IE5VTEwpCi0gICAgewotICAgICAgZnJlZSAoZXh0dmVyc3ltKTsKLSAgICAgIGV4dHZlcnN5bSA9IE5VTEw7Ci0gICAgfQotCi0gIGlmIChpc3ltYnVmICE9IE5VTEwpCi0gICAgZnJlZSAoaXN5bWJ1Zik7Ci0gIGlzeW1idWYgPSBOVUxMOwotCi0gIC8qIE5vdyBzZXQgdGhlIHdlYWtkZWZzIGZpZWxkIGNvcnJlY3RseSBmb3IgYWxsIHRoZSB3ZWFrIGRlZmluZWQKLSAgICAgc3ltYm9scyB3ZSBmb3VuZC4gIFRoZSBvbmx5IHdheSB0byBkbyB0aGlzIGlzIHRvIHNlYXJjaCBhbGwgdGhlCi0gICAgIHN5bWJvbHMuICBTaW5jZSB3ZSBvbmx5IG5lZWQgdGhlIGluZm9ybWF0aW9uIGZvciBub24gZnVuY3Rpb25zIGluCi0gICAgIGR5bmFtaWMgb2JqZWN0cywgdGhhdCdzIHRoZSBvbmx5IHRpbWUgd2UgYWN0dWFsbHkgcHV0IGFueXRoaW5nIG9uCi0gICAgIHRoZSBsaXN0IFdFQUtTLiAgV2UgbmVlZCB0aGlzIGluZm9ybWF0aW9uIHNvIHRoYXQgaWYgYSByZWd1bGFyCi0gICAgIG9iamVjdCByZWZlcnMgdG8gYSBzeW1ib2wgZGVmaW5lZCB3ZWFrbHkgaW4gYSBkeW5hbWljIG9iamVjdCwgdGhlCi0gICAgIHJlYWwgc3ltYm9sIGluIHRoZSBkeW5hbWljIG9iamVjdCBpcyBhbHNvIHB1dCBpbiB0aGUgZHluYW1pYwotICAgICBzeW1ib2xzOyB3ZSBhbHNvIG11c3QgYXJyYW5nZSBmb3IgYm90aCBzeW1ib2xzIHRvIHBvaW50IHRvIHRoZQotICAgICBzYW1lIG1lbW9yeSBsb2NhdGlvbi4gIFdlIGNvdWxkIGhhbmRsZSB0aGUgZ2VuZXJhbCBjYXNlIG9mIHN5bWJvbAotICAgICBhbGlhc2luZywgYnV0IGEgZ2VuZXJhbCBzeW1ib2wgYWxpYXMgY2FuIG9ubHkgYmUgZ2VuZXJhdGVkIGluCi0gICAgIGFzc2VtYmxlciBjb2RlLCBoYW5kbGluZyBpdCBjb3JyZWN0bHkgd291bGQgYmUgdmVyeSB0aW1lCi0gICAgIGNvbnN1bWluZywgYW5kIG90aGVyIEVMRiBsaW5rZXJzIGRvbid0IGhhbmRsZSBnZW5lcmFsIGFsaWFzaW5nCi0gICAgIGVpdGhlci4gICovCi0gIHdoaWxlICh3ZWFrcyAhPSBOVUxMKQotICAgIHsKLSAgICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpobG9vazsKLSAgICAgIGFzZWN0aW9uICpzbG9vazsKLSAgICAgIGJmZF92bWEgdmxvb2s7Ci0gICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKmhwcDsKLSAgICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqaHBwZW5kOwotCi0gICAgICBobG9vayA9IHdlYWtzOwotICAgICAgd2Vha3MgPSBobG9vay0+d2Vha2RlZjsKLSAgICAgIGhsb29rLT53ZWFrZGVmID0gTlVMTDsKLQotICAgICAgQkZEX0FTU0VSVCAoaGxvb2stPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZmluZWQKLQkJICB8fCBobG9vay0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhawotCQkgIHx8IGhsb29rLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9jb21tb24KLQkJICB8fCBobG9vay0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QpOwotICAgICAgc2xvb2sgPSBobG9vay0+cm9vdC51LmRlZi5zZWN0aW9uOwotICAgICAgdmxvb2sgPSBobG9vay0+cm9vdC51LmRlZi52YWx1ZTsKLQotICAgICAgaHBwID0gZWxmX3N5bV9oYXNoZXMgKGFiZmQpOwotICAgICAgaHBwZW5kID0gaHBwICsgZXh0c3ltY291bnQ7Ci0gICAgICBmb3IgKDsgaHBwIDwgaHBwZW5kOyBocHArKykKLQl7Ci0JICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaDsKLQotCSAgaCA9ICpocHA7Ci0JICBpZiAoaCAhPSBOVUxMICYmIGggIT0gaGxvb2sKLQkgICAgICAmJiBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JICAgICAgJiYgaC0+cm9vdC51LmRlZi5zZWN0aW9uID09IHNsb29rCi0JICAgICAgJiYgaC0+cm9vdC51LmRlZi52YWx1ZSA9PSB2bG9vaykKLQkgICAgewotCSAgICAgIGhsb29rLT53ZWFrZGVmID0gaDsKLQotCSAgICAgIC8qIElmIHRoZSB3ZWFrIGRlZmluaXRpb24gaXMgaW4gdGhlIGxpc3Qgb2YgZHluYW1pYwotCQkgc3ltYm9scywgbWFrZSBzdXJlIHRoZSByZWFsIGRlZmluaXRpb24gaXMgcHV0IHRoZXJlCi0JCSBhcyB3ZWxsLiAgKi8KLQkgICAgICBpZiAoaGxvb2stPmR5bmluZHggIT0gLTEKLQkJICAmJiBoLT5keW5pbmR4ID09IC0xKQotCQl7Ci0JCSAgaWYgKCEgX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQotCQkgICAgZ290byBlcnJvcl9yZXR1cm47Ci0JCX0KLQotCSAgICAgIC8qIElmIHRoZSByZWFsIGRlZmluaXRpb24gaXMgaW4gdGhlIGxpc3Qgb2YgZHluYW1pYwotCQkgc3ltYm9scywgbWFrZSBzdXJlIHRoZSB3ZWFrIGRlZmluaXRpb24gaXMgcHV0IHRoZXJlCi0JCSBhcyB3ZWxsLiAgSWYgd2UgZG9uJ3QgZG8gdGhpcywgdGhlbiB0aGUgZHluYW1pYwotCQkgbG9hZGVyIG1pZ2h0IG5vdCBtZXJnZSB0aGUgZW50cmllcyBmb3IgdGhlIHJlYWwKLQkJIGRlZmluaXRpb24gYW5kIHRoZSB3ZWFrIGRlZmluaXRpb24uICAqLwotCSAgICAgIGlmIChoLT5keW5pbmR4ICE9IC0xCi0JCSAgJiYgaGxvb2stPmR5bmluZHggPT0gLTEpCi0JCXsKLQkJICBpZiAoISBfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaGxvb2spKQotCQkgICAgZ290byBlcnJvcl9yZXR1cm47Ci0JCX0KLQkgICAgICBicmVhazsKLQkgICAgfQotCX0KLSAgICB9Ci0KLSAgLyogSWYgdGhpcyBvYmplY3QgaXMgdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBvdXRwdXQgb2JqZWN0LCBhbmQgaXQgaXMKLSAgICAgbm90IGEgc2hhcmVkIGxpYnJhcnksIHRoZW4gbGV0IHRoZSBiYWNrZW5kIGxvb2sgdGhyb3VnaCB0aGUKLSAgICAgcmVsb2NzLgotCi0gICAgIFRoaXMgaXMgcmVxdWlyZWQgdG8gYnVpbGQgZ2xvYmFsIG9mZnNldCB0YWJsZSBlbnRyaWVzIGFuZCB0bwotICAgICBhcnJhbmdlIGZvciBkeW5hbWljIHJlbG9jcy4gIEl0IGlzIG5vdCByZXF1aXJlZCBmb3IgdGhlCi0gICAgIHBhcnRpY3VsYXIgY29tbW9uIGNhc2Ugb2YgbGlua2luZyBub24gUElDIGNvZGUsIGV2ZW4gd2hlbiBsaW5raW5nCi0gICAgIGFnYWluc3Qgc2hhcmVkIGxpYnJhcmllcywgYnV0IHVuZm9ydHVuYXRlbHkgdGhlcmUgaXMgbm8gd2F5IG9mCi0gICAgIGtub3dpbmcgd2hldGhlciBhbiBvYmplY3QgZmlsZSBoYXMgYmVlbiBjb21waWxlZCBQSUMgb3Igbm90LgotICAgICBMb29raW5nIHRocm91Z2ggdGhlIHJlbG9jcyBpcyBub3QgcGFydGljdWxhcmx5IHRpbWUgY29uc3VtaW5nLgotICAgICBUaGUgcHJvYmxlbSBpcyB0aGF0IHdlIG11c3QgZWl0aGVyICgxKSBrZWVwIHRoZSByZWxvY3MgaW4gbWVtb3J5LAotICAgICB3aGljaCBjYXVzZXMgdGhlIGxpbmtlciB0byByZXF1aXJlIGFkZGl0aW9uYWwgcnVudGltZSBtZW1vcnkgb3IKLSAgICAgKDIpIHJlYWQgdGhlIHJlbG9jcyB0d2ljZSBmcm9tIHRoZSBpbnB1dCBmaWxlLCB3aGljaCB3YXN0ZXMgdGltZS4KLSAgICAgVGhpcyB3b3VsZCBiZSBhIGdvb2QgY2FzZSBmb3IgdXNpbmcgbW1hcC4KLQotICAgICBJIGhhdmUgbm8gaWRlYSBob3cgdG8gaGFuZGxlIGxpbmtpbmcgUElDIGNvZGUgaW50byBhIGZpbGUgb2YgYQotICAgICBkaWZmZXJlbnQgZm9ybWF0LiAgSXQgcHJvYmFibHkgY2FuJ3QgYmUgZG9uZS4gICovCi0gIGNoZWNrX3JlbG9jcyA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChhYmZkKS0+Y2hlY2tfcmVsb2NzOwotICBpZiAoISBkeW5hbWljCi0gICAgICAmJiBpc19lbGZfaGFzaF90YWJsZSAoaGFzaF90YWJsZSkKLSAgICAgICYmIGhhc2hfdGFibGUtPnJvb3QuY3JlYXRvciA9PSBhYmZkLT54dmVjCi0gICAgICAmJiBjaGVja19yZWxvY3MgIT0gTlVMTCkKLSAgICB7Ci0gICAgICBhc2VjdGlvbiAqbzsKLQotICAgICAgZm9yIChvID0gYWJmZC0+c2VjdGlvbnM7IG8gIT0gTlVMTDsgbyA9IG8tPm5leHQpCi0JewotCSAgRWxmX0ludGVybmFsX1JlbGEgKmludGVybmFsX3JlbG9jczsKLQkgIGJmZF9ib29sZWFuIG9rOwotCi0JICBpZiAoKG8tPmZsYWdzICYgU0VDX1JFTE9DKSA9PSAwCi0JICAgICAgfHwgby0+cmVsb2NfY291bnQgPT0gMAotCSAgICAgIHx8ICgoaW5mby0+c3RyaXAgPT0gc3RyaXBfYWxsIHx8IGluZm8tPnN0cmlwID09IHN0cmlwX2RlYnVnZ2VyKQotCQkgICYmIChvLT5mbGFncyAmIFNFQ19ERUJVR0dJTkcpICE9IDApCi0JICAgICAgfHwgYmZkX2lzX2Fic19zZWN0aW9uIChvLT5vdXRwdXRfc2VjdGlvbikpCi0JICAgIGNvbnRpbnVlOwotCi0JICBpbnRlcm5hbF9yZWxvY3MgPSBfYmZkX2VsZl9saW5rX3JlYWRfcmVsb2NzIChhYmZkLCBvLCBOVUxMLCBOVUxMLAotCQkJCQkJICAgICAgIGluZm8tPmtlZXBfbWVtb3J5KTsKLQkgIGlmIChpbnRlcm5hbF9yZWxvY3MgPT0gTlVMTCkKLQkgICAgZ290byBlcnJvcl9yZXR1cm47Ci0KLQkgIG9rID0gKCpjaGVja19yZWxvY3MpIChhYmZkLCBpbmZvLCBvLCBpbnRlcm5hbF9yZWxvY3MpOwotCi0JICBpZiAoZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbG9jcyAhPSBpbnRlcm5hbF9yZWxvY3MpCi0JICAgIGZyZWUgKGludGVybmFsX3JlbG9jcyk7Ci0KLQkgIGlmICghIG9rKQotCSAgICBnb3RvIGVycm9yX3JldHVybjsKLQl9Ci0gICAgfQotCi0gIC8qIElmIHRoaXMgaXMgYSBub24tdHJhZGl0aW9uYWwgbGluaywgdHJ5IHRvIG9wdGltaXplIHRoZSBoYW5kbGluZwotICAgICBvZiB0aGUgLnN0YWIvLnN0YWJzdHIgc2VjdGlvbnMuICAqLwotICBpZiAoISBkeW5hbWljCi0gICAgICAmJiAhIGluZm8tPnRyYWRpdGlvbmFsX2Zvcm1hdAotICAgICAgJiYgaXNfZWxmX2hhc2hfdGFibGUgKGhhc2hfdGFibGUpCi0gICAgICAmJiAoaW5mby0+c3RyaXAgIT0gc3RyaXBfYWxsICYmIGluZm8tPnN0cmlwICE9IHN0cmlwX2RlYnVnZ2VyKSkKLSAgICB7Ci0gICAgICBhc2VjdGlvbiAqc3RhYnN0cjsKLSAgICAgIAotICAgICAgc3RhYnN0ciA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLnN0YWJzdHIiKTsKLSAgICAgIGlmIChzdGFic3RyICE9IE5VTEwpCi0JewotCSAgYmZkX3NpemVfdHlwZSBzdHJpbmdfb2Zmc2V0ID0gMDsKLQkgIGFzZWN0aW9uICpzdGFiOwotCi0JICBmb3IgKHN0YWIgPSBhYmZkLT5zZWN0aW9uczsgc3RhYjsgc3RhYiA9IHN0YWItPm5leHQpCi0JICAgIGlmIChzdHJuY21wICgiLnN0YWIiLCBzdGFiLT5uYW1lLCA1KSA9PSAwCi0JCSYmICghc3RhYi0+bmFtZVs1XSB8fAotCQkgICAgKHN0YWItPm5hbWVbNV0gPT0gJy4nICYmIElTRElHSVQgKHN0YWItPm5hbWVbNl0pKSkKLQkJJiYgKHN0YWItPmZsYWdzICYgU0VDX01FUkdFKSA9PSAwCi0JCSYmICFiZmRfaXNfYWJzX3NlY3Rpb24gKHN0YWItPm91dHB1dF9zZWN0aW9uKSkKLQkgICAgICB7Ci0JCXN0cnVjdCBiZmRfZWxmX3NlY3Rpb25fZGF0YSAqc2VjZGF0YTsKLQkJCi0JCXNlY2RhdGEgPSBlbGZfc2VjdGlvbl9kYXRhIChzdGFiKTsKLQkJaWYgKCEgX2JmZF9saW5rX3NlY3Rpb25fc3RhYnMgKGFiZmQsCi0JCQkJCSAgICAgICAmIGhhc2hfdGFibGUtPnN0YWJfaW5mbywKLQkJCQkJICAgICAgIHN0YWIsIHN0YWJzdHIsCi0JCQkJCSAgICAgICAmc2VjZGF0YS0+c2VjX2luZm8sCi0JCQkJCSAgICAgICAmc3RyaW5nX29mZnNldCkpCi0JCSAgZ290byBlcnJvcl9yZXR1cm47Ci0JCWlmIChzZWNkYXRhLT5zZWNfaW5mbykKLQkJICBzdGFiLT5zZWNfaW5mb190eXBlID0gRUxGX0lORk9fVFlQRV9TVEFCUzsKLQkgICAgfQotCX0KLSAgICB9Ci0KLSAgaWYgKCEgaW5mby0+cmVsb2NhdGFibGUKLSAgICAgICYmICEgZHluYW1pYwotICAgICAgJiYgaXNfZWxmX2hhc2hfdGFibGUgKGhhc2hfdGFibGUpKQotICAgIHsKLSAgICAgIGFzZWN0aW9uICpzOwotCi0gICAgICBmb3IgKHMgPSBhYmZkLT5zZWN0aW9uczsgcyAhPSBOVUxMOyBzID0gcy0+bmV4dCkKLQlpZiAoKHMtPmZsYWdzICYgU0VDX01FUkdFKSAhPSAwCi0JICAgICYmICFiZmRfaXNfYWJzX3NlY3Rpb24gKHMtPm91dHB1dF9zZWN0aW9uKSkKLQkgIHsKLQkgICAgc3RydWN0IGJmZF9lbGZfc2VjdGlvbl9kYXRhICpzZWNkYXRhOwotCi0JICAgIHNlY2RhdGEgPSBlbGZfc2VjdGlvbl9kYXRhIChzKTsKLQkgICAgaWYgKCEgX2JmZF9tZXJnZV9zZWN0aW9uIChhYmZkLAotCQkJCSAgICAgICYgaGFzaF90YWJsZS0+bWVyZ2VfaW5mbywKLQkJCQkgICAgICBzLCAmc2VjZGF0YS0+c2VjX2luZm8pKQotCSAgICAgIGdvdG8gZXJyb3JfcmV0dXJuOwotCSAgICBlbHNlIGlmIChzZWNkYXRhLT5zZWNfaW5mbykKLQkgICAgICBzLT5zZWNfaW5mb190eXBlID0gRUxGX0lORk9fVFlQRV9NRVJHRTsKLQkgIH0KLSAgICB9Ci0KLSAgaWYgKGlzX2VsZl9oYXNoX3RhYmxlIChoYXNoX3RhYmxlKSkKLSAgICB7Ci0gICAgICAvKiBBZGQgdGhpcyBiZmQgdG8gdGhlIGxvYWRlZCBsaXN0LiAgKi8KLSAgICAgIHN0cnVjdCBlbGZfbGlua19sb2FkZWRfbGlzdCAqbjsKLQotICAgICAgbiA9IGJmZF9hbGxvYyAoYWJmZCwgc2l6ZW9mIChzdHJ1Y3QgZWxmX2xpbmtfbG9hZGVkX2xpc3QpKTsKLSAgICAgIGlmIChuID09IE5VTEwpCi0JZ290byBlcnJvcl9yZXR1cm47Ci0gICAgICBuLT5hYmZkID0gYWJmZDsKLSAgICAgIG4tPm5leHQgPSBoYXNoX3RhYmxlLT5sb2FkZWQ7Ci0gICAgICBoYXNoX3RhYmxlLT5sb2FkZWQgPSBuOwotICAgIH0KLQotICByZXR1cm4gVFJVRTsKLQotIGVycm9yX2ZyZWVfdmVyczoKLSAgaWYgKG5vbmRlZmx0X3ZlcnMgIT0gTlVMTCkKLSAgICBmcmVlIChub25kZWZsdF92ZXJzKTsKLSAgaWYgKGV4dHZlcnN5bSAhPSBOVUxMKQotICAgIGZyZWUgKGV4dHZlcnN5bSk7Ci0gZXJyb3JfZnJlZV9zeW06Ci0gIGlmIChpc3ltYnVmICE9IE5VTEwpCi0gICAgZnJlZSAoaXN5bWJ1Zik7Ci0gZXJyb3JfcmV0dXJuOgotICByZXR1cm4gRkFMU0U7Ci19Ci0KLS8qIEFkZCBhbiBlbnRyeSB0byB0aGUgLmR5bmFtaWMgdGFibGUuICAqLwotCi1iZmRfYm9vbGVhbgotZWxmX2FkZF9keW5hbWljX2VudHJ5IChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywgYmZkX3ZtYSB0YWcsIGJmZF92bWEgdmFsKQotewotICBFbGZfSW50ZXJuYWxfRHluIGR5bjsKLSAgYmZkICpkeW5vYmo7Ci0gIGFzZWN0aW9uICpzOwotICBiZmRfc2l6ZV90eXBlIG5ld3NpemU7Ci0gIGJmZF9ieXRlICpuZXdjb250ZW50czsKLQotICBpZiAoISBpc19lbGZfaGFzaF90YWJsZSAoaW5mby0+aGFzaCkpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGR5bm9iaiA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHlub2JqOwotCi0gIHMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoZHlub2JqLCAiLmR5bmFtaWMiKTsKLSAgQkZEX0FTU0VSVCAocyAhPSBOVUxMKTsKLQotICBuZXdzaXplID0gcy0+X3Jhd19zaXplICsgc2l6ZW9mIChFbGZfRXh0ZXJuYWxfRHluKTsKLSAgbmV3Y29udGVudHMgPSBiZmRfcmVhbGxvYyAocy0+Y29udGVudHMsIG5ld3NpemUpOwotICBpZiAobmV3Y29udGVudHMgPT0gTlVMTCkKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgZHluLmRfdGFnID0gdGFnOwotICBkeW4uZF91bi5kX3ZhbCA9IHZhbDsKLSAgZWxmX3N3YXBfZHluX291dCAoZHlub2JqLCAmZHluLAotCQkgICAgKEVsZl9FeHRlcm5hbF9EeW4gKikgKG5ld2NvbnRlbnRzICsgcy0+X3Jhd19zaXplKSk7Ci0KLSAgcy0+X3Jhd19zaXplID0gbmV3c2l6ZTsKLSAgcy0+Y29udGVudHMgPSBuZXdjb250ZW50czsKLQotICByZXR1cm4gVFJVRTsKLX0KLQwKLS8qIEFycmF5IHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgaGFzaCB0YWJsZSBidWNrZXRzIHRvIHVzZQotICAgYmFzZWQgb24gdGhlIG51bWJlciBvZiBzeW1ib2xzIHRoZXJlIGFyZS4gIElmIHRoZXJlIGFyZSBmZXdlciB0aGFuCi0gICAzIHN5bWJvbHMgd2UgdXNlIDEgYnVja2V0LCBmZXdlciB0aGFuIDE3IHN5bWJvbHMgd2UgdXNlIDMgYnVja2V0cywKLSAgIGZld2VyIHRoYW4gMzcgd2UgdXNlIDE3IGJ1Y2tldHMsIGFuZCBzbyBmb3J0aC4gIFdlIG5ldmVyIHVzZSBtb3JlCi0gICB0aGFuIDMyNzcxIGJ1Y2tldHMuICAqLwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGVsZl9idWNrZXRzW10gPQotewotICAxLCAzLCAxNywgMzcsIDY3LCA5NywgMTMxLCAxOTcsIDI2MywgNTIxLCAxMDMxLCAyMDUzLCA0MDk5LCA4MjA5LAotICAxNjQxMSwgMzI3NzEsIDAKLX07Ci0KLS8qIENvbXB1dGUgYnVja2V0IGNvdW50IGZvciBoYXNoaW5nIHRhYmxlLiAgV2UgZG8gbm90IHVzZSBhIHN0YXRpYyBzZXQKLSAgIG9mIHBvc3NpYmxlIHRhYmxlcyBzaXplcyBhbnltb3JlLiAgSW5zdGVhZCB3ZSBkZXRlcm1pbmUgZm9yIGFsbAotICAgcG9zc2libGUgcmVhc29uYWJsZSBzaXplcyBvZiB0aGUgdGFibGUgdGhlIG91dGNvbWUgKGkuZS4sIHRoZQotICAgbnVtYmVyIG9mIGNvbGxpc2lvbnMgZXRjKSBhbmQgY2hvb3NlIHRoZSBiZXN0IHNvbHV0aW9uLiAgVGhlCi0gICB3ZWlnaHRpbmcgZnVuY3Rpb25zIGFyZSBub3QgdG9vIHNpbXBsZSB0byBhbGxvdyB0aGUgdGFibGUgdG8gZ3JvdwotICAgd2l0aG91dCBib3VuZHMuICBJbnN0ZWFkIG9uZSBvZiB0aGUgd2VpZ2h0aW5nIGZhY3RvcnMgaXMgdGhlIHNpemUuCi0gICBUaGVyZWZvcmUgdGhlIHJlc3VsdCBpcyBhbHdheXMgYSBnb29kIHBheW9mZiBiZXR3ZWVuIGZldyBjb2xsaXNpb25zCi0gICAoPSBzaG9ydCBjaGFpbiBsZW5ndGhzKSBhbmQgdGFibGUgc2l6ZS4gICovCi1zdGF0aWMgc2l6ZV90Ci1jb21wdXRlX2J1Y2tldF9jb3VudCAoc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCi17Ci0gIHNpemVfdCBkeW5zeW1jb3VudCA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3ltY291bnQ7Ci0gIHNpemVfdCBiZXN0X3NpemUgPSAwOwotICB1bnNpZ25lZCBsb25nIGludCAqaGFzaGNvZGVzOwotICB1bnNpZ25lZCBsb25nIGludCAqaGFzaGNvZGVzcDsKLSAgdW5zaWduZWQgbG9uZyBpbnQgaTsKLSAgYmZkX3NpemVfdHlwZSBhbXQ7Ci0KLSAgLyogQ29tcHV0ZSB0aGUgaGFzaCB2YWx1ZXMgZm9yIGFsbCBleHBvcnRlZCBzeW1ib2xzLiAgQXQgdGhlIHNhbWUKLSAgICAgdGltZSBzdG9yZSB0aGUgdmFsdWVzIGluIGFuIGFycmF5IHNvIHRoYXQgd2UgY291bGQgdXNlIHRoZW0gZm9yCi0gICAgIG9wdGltaXphdGlvbnMuICAqLwotICBhbXQgPSBkeW5zeW1jb3VudDsKLSAgYW10ICo9IHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpOwotICBoYXNoY29kZXMgPSBiZmRfbWFsbG9jIChhbXQpOwotICBpZiAoaGFzaGNvZGVzID09IE5VTEwpCi0gICAgcmV0dXJuIDA7Ci0gIGhhc2hjb2Rlc3AgPSBoYXNoY29kZXM7Ci0KLSAgLyogUHV0IGFsbCBoYXNoIHZhbHVlcyBpbiBIQVNIQ09ERVMuICAqLwotICBlbGZfbGlua19oYXNoX3RyYXZlcnNlIChlbGZfaGFzaF90YWJsZSAoaW5mbyksCi0JCQkgIGVsZl9jb2xsZWN0X2hhc2hfY29kZXMsICZoYXNoY29kZXNwKTsKLQotICAvKiBXZSBoYXZlIGEgcHJvYmxlbSBoZXJlLiAgVGhlIGZvbGxvd2luZyBjb2RlIHRvIG9wdGltaXplIHRoZSB0YWJsZQotICAgICBzaXplIHJlcXVpcmVzIGFuIGludGVnZXIgdHlwZSB3aXRoIG1vcmUgdGhlIDMyIGJpdHMuICBJZgotICAgICBCRkRfSE9TVF9VXzY0X0JJVCBpcyBzZXQgd2Uga25vdyBhYm91dCBzdWNoIGEgdHlwZS4gICovCi0jaWZkZWYgQkZEX0hPU1RfVV82NF9CSVQKLSAgaWYgKGluZm8tPm9wdGltaXplKQotICAgIHsKLSAgICAgIHVuc2lnbmVkIGxvbmcgaW50IG5zeW1zID0gaGFzaGNvZGVzcCAtIGhhc2hjb2RlczsKLSAgICAgIHNpemVfdCBtaW5zaXplOwotICAgICAgc2l6ZV90IG1heHNpemU7Ci0gICAgICBCRkRfSE9TVF9VXzY0X0JJVCBiZXN0X2NobGVuID0gfigoQkZEX0hPU1RfVV82NF9CSVQpIDApOwotICAgICAgdW5zaWduZWQgbG9uZyBpbnQgKmNvdW50cyA7Ci0KLSAgICAgIC8qIFBvc3NpYmxlIG9wdGltaXphdGlvbiBwYXJhbWV0ZXJzOiBpZiB3ZSBoYXZlIE5TWU1TIHN5bWJvbHMgd2Ugc2F5Ci0JIHRoYXQgdGhlIGhhc2hpbmcgdGFibGUgbXVzdCBhdCBsZWFzdCBoYXZlIE5TWU1TLzQgYW5kIGF0IG1vc3QKLQkgMipOU1lNUyBidWNrZXRzLiAgKi8KLSAgICAgIG1pbnNpemUgPSBuc3ltcyAvIDQ7Ci0gICAgICBpZiAobWluc2l6ZSA9PSAwKQotCW1pbnNpemUgPSAxOwotICAgICAgYmVzdF9zaXplID0gbWF4c2l6ZSA9IG5zeW1zICogMjsKLQotICAgICAgLyogQ3JlYXRlIGFycmF5IHdoZXJlIHdlIGNvdW50IHRoZSBjb2xsaXNpb25zIGluLiAgV2UgbXVzdCB1c2UgYmZkX21hbGxvYwotCSBzaW5jZSB0aGUgc2l6ZSBjb3VsZCBiZSBsYXJnZS4gICovCi0gICAgICBhbXQgPSBtYXhzaXplOwotICAgICAgYW10ICo9IHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpOwotICAgICAgY291bnRzID0gYmZkX21hbGxvYyAoYW10KTsKLSAgICAgIGlmIChjb3VudHMgPT0gTlVMTCkKLQl7Ci0JICBmcmVlIChoYXNoY29kZXMpOwotCSAgcmV0dXJuIDA7Ci0JfQotCi0gICAgICAvKiBDb21wdXRlIHRoZSAib3B0aW1hbCIgc2l6ZSBmb3IgdGhlIGhhc2ggdGFibGUuICBUaGUgY3JpdGVyaWEgaXMgYQotCSBtaW5pbWFsIGNoYWluIGxlbmd0aC4gIFRoZSBtaW5vciBjcml0ZXJpYSBpcyAob2YgY291cnNlKSB0aGUgc2l6ZQotCSBvZiB0aGUgdGFibGUuICAqLwotICAgICAgZm9yIChpID0gbWluc2l6ZTsgaSA8IG1heHNpemU7ICsraSkKLQl7Ci0JICAvKiBXYWxrIHRocm91Z2ggdGhlIGFycmF5IG9mIGhhc2hjb2RlcyBhbmQgY291bnQgdGhlIGNvbGxpc2lvbnMuICAqLwotCSAgQkZEX0hPU1RfVV82NF9CSVQgbWF4OwotCSAgdW5zaWduZWQgbG9uZyBpbnQgajsKLQkgIHVuc2lnbmVkIGxvbmcgaW50IGZhY3Q7Ci0KLQkgIG1lbXNldCAoY291bnRzLCAnXDAnLCBpICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpOwotCi0JICAvKiBEZXRlcm1pbmUgaG93IG9mdGVuIGVhY2ggaGFzaCBidWNrZXQgaXMgdXNlZC4gICovCi0JICBmb3IgKGogPSAwOyBqIDwgbnN5bXM7ICsraikKLQkgICAgKytjb3VudHNbaGFzaGNvZGVzW2pdICUgaV07Ci0KLQkgIC8qIEZvciB0aGUgd2VpZ2h0IGZ1bmN0aW9uIHdlIG5lZWQgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKLQkgICAgIHBhZ2VzaXplIG9uIHRoZSB0YXJnZXQuICBUaGlzIGlzIGluZm9ybWF0aW9uIG5lZWQgbm90IGJlIDEwMCUKLQkgICAgIGFjY3VyYXRlLiAgU2luY2UgdGhpcyBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIChzbyBmYXIpIHdlCi0JICAgICBkZWZpbmUgaXQgaGVyZSB0byBhIHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZS4gIElmIGl0IGlzIGNydWNpYWwKLQkgICAgIHRvIGhhdmUgYSBiZXR0ZXIgdmFsdWUgc29tZSBkYXkgc2ltcGx5IGRlZmluZSB0aGlzIHZhbHVlLiAgKi8KLSMgaWZuZGVmIEJGRF9UQVJHRVRfUEFHRVNJWkUKLSMgIGRlZmluZSBCRkRfVEFSR0VUX1BBR0VTSVpFCSg0MDk2KQotIyBlbmRpZgotCi0JICAvKiBXZSBpbiBhbnkgY2FzZSBuZWVkIDIgKyBOU1lNUyBlbnRyaWVzIGZvciB0aGUgc2l6ZSB2YWx1ZXMgYW5kCi0JICAgICB0aGUgY2hhaW5zLiAgKi8KLQkgIG1heCA9ICgyICsgbnN5bXMpICogKEFSQ0hfU0laRSAvIDgpOwotCi0jIGlmIDEKLQkgIC8qIFZhcmlhbnQgMTogb3B0aW1pemUgZm9yIHNob3J0IGNoYWlucy4gIFdlIGFkZCB0aGUgc3F1YXJlcwotCSAgICAgb2YgYWxsIHRoZSBjaGFpbiBsZW5ndGhzICh3aGljaCBmYXZvcnMgbWFueSBzbWFsbCBjaGFpbgotCSAgICAgb3ZlciBhIGZldyBsb25nIGNoYWlucykuICAqLwotCSAgZm9yIChqID0gMDsgaiA8IGk7ICsraikKLQkgICAgbWF4ICs9IGNvdW50c1tqXSAqIGNvdW50c1tqXTsKLQotCSAgLyogVGhpcyBhZGRzIHBlbmFsdGllcyBmb3IgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgdGFibGUuICAqLwotCSAgZmFjdCA9IGkgLyAoQkZEX1RBUkdFVF9QQUdFU0laRSAvIChBUkNIX1NJWkUgLyA4KSkgKyAxOwotCSAgbWF4ICo9IGZhY3QgKiBmYWN0OwotIyBlbHNlCi0JICAvKiBWYXJpYW50IDI6IE9wdGltaXplIGEgbG90IG1vcmUgZm9yIHNtYWxsIHRhYmxlLiAgSGVyZSB3ZQotCSAgICAgYWxzbyBhZGQgc3F1YXJlcyBvZiB0aGUgc2l6ZSBidXQgd2UgYWxzbyBhZGQgcGVuYWx0aWVzIGZvcgotCSAgICAgZW1wdHkgc2xvdHMgKHRoZSArMSB0ZXJtKS4gICovCi0JICBmb3IgKGogPSAwOyBqIDwgaTsgKytqKQotCSAgICBtYXggKz0gKDEgKyBjb3VudHNbal0pICogKDEgKyBjb3VudHNbal0pOwotCi0JICAvKiBUaGUgb3ZlcmFsbCBzaXplIG9mIHRoZSB0YWJsZSBpcyBjb25zaWRlcmVkLCBidXQgbm90IGFzCi0JICAgICBzdHJvbmcgYXMgaW4gdmFyaWFudCAxLCB3aGVyZSBpdCBpcyBzcXVhcmVkLiAgKi8KLQkgIGZhY3QgPSBpIC8gKEJGRF9UQVJHRVRfUEFHRVNJWkUgLyAoQVJDSF9TSVpFIC8gOCkpICsgMTsKLQkgIG1heCAqPSBmYWN0OwotIyBlbmRpZgotCi0JICAvKiBDb21wYXJlIHdpdGggY3VycmVudCBiZXN0IHJlc3VsdHMuICAqLwotCSAgaWYgKG1heCA8IGJlc3RfY2hsZW4pCi0JICAgIHsKLQkgICAgICBiZXN0X2NobGVuID0gbWF4OwotCSAgICAgIGJlc3Rfc2l6ZSA9IGk7Ci0JICAgIH0KLQl9Ci0KLSAgICAgIGZyZWUgKGNvdW50cyk7Ci0gICAgfQotICBlbHNlCi0jZW5kaWYgLyogZGVmaW5lZCAoQkZEX0hPU1RfVV82NF9CSVQpICovCi0gICAgewotICAgICAgLyogVGhpcyBpcyB0aGUgZmFsbGJhY2sgc29sdXRpb24gaWYgbm8gNjRiaXQgdHlwZSBpcyBhdmFpbGFibGUgb3IgaWYgd2UKLQkgYXJlIG5vdCBzdXBwb3NlZCB0byBzcGVuZCBtdWNoIHRpbWUgb24gb3B0aW1pemF0aW9ucy4gIFdlIHNlbGVjdCB0aGUKLQkgYnVja2V0IGNvdW50IHVzaW5nIGEgZml4ZWQgc2V0IG9mIG51bWJlcnMuICAqLwotICAgICAgZm9yIChpID0gMDsgZWxmX2J1Y2tldHNbaV0gIT0gMDsgaSsrKQotCXsKLQkgIGJlc3Rfc2l6ZSA9IGVsZl9idWNrZXRzW2ldOwotCSAgaWYgKGR5bnN5bWNvdW50IDwgZWxmX2J1Y2tldHNbaSArIDFdKQotCSAgICBicmVhazsKLQl9Ci0gICAgfQotCi0gIC8qIEZyZWUgdGhlIGFycmF5cyB3ZSBuZWVkZWQuICAqLwotICBmcmVlIChoYXNoY29kZXMpOwotCi0gIHJldHVybiBiZXN0X3NpemU7Ci19Ci0KLS8qIFNldCB1cCB0aGUgc2l6ZXMgYW5kIGNvbnRlbnRzIG9mIHRoZSBFTEYgZHluYW1pYyBzZWN0aW9ucy4gIFRoaXMgaXMKLSAgIGNhbGxlZCBieSB0aGUgRUxGIGxpbmtlciBlbXVsYXRpb24gYmVmb3JlX2FsbG9jYXRpb24gcm91dGluZS4gIFdlCi0gICBtdXN0IHNldCB0aGUgc2l6ZXMgb2YgdGhlIHNlY3Rpb25zIGJlZm9yZSB0aGUgbGlua2VyIHNldHMgdGhlCi0gICBhZGRyZXNzZXMgb2YgdGhlIHZhcmlvdXMgc2VjdGlvbnMuICAqLwotCi1iZmRfYm9vbGVhbgotTkFNRShiZmRfZWxmLHNpemVfZHluYW1pY19zZWN0aW9ucykgKGJmZCAqb3V0cHV0X2JmZCwKLQkJCQkgICAgIGNvbnN0IGNoYXIgKnNvbmFtZSwKLQkJCQkgICAgIGNvbnN0IGNoYXIgKnJwYXRoLAotCQkJCSAgICAgY29uc3QgY2hhciAqZmlsdGVyX3NobGliLAotCQkJCSAgICAgY29uc3QgY2hhciAqIGNvbnN0ICphdXhpbGlhcnlfZmlsdGVycywKLQkJCQkgICAgIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAotCQkJCSAgICAgYXNlY3Rpb24gKipzaW50ZXJwcHRyLAotCQkJCSAgICAgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90cmVlICp2ZXJkZWZzKQotewotICBiZmRfc2l6ZV90eXBlIHNvbmFtZV9pbmR4OwotICBiZmQgKmR5bm9iajsKLSAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKLSAgc3RydWN0IGVsZl9hc3NpZ25fc3ltX3ZlcnNpb25faW5mbyBhc3ZpbmZvOwotCi0gICpzaW50ZXJwcHRyID0gTlVMTDsKLQotICBzb25hbWVfaW5keCA9IChiZmRfc2l6ZV90eXBlKSAtMTsKLQotICBpZiAoIWlzX2VsZl9oYXNoX3RhYmxlIChpbmZvLT5oYXNoKSkKLSAgICByZXR1cm4gVFJVRTsKLQotICBpZiAoaW5mby0+ZXhlY3N0YWNrKQotICAgIGVsZl90ZGF0YSAob3V0cHV0X2JmZCktPnN0YWNrX2ZsYWdzID0gUEZfUiB8IFBGX1cgfCBQRl9YOwotICBlbHNlIGlmIChpbmZvLT5ub2V4ZWNzdGFjaykKLSAgICBlbGZfdGRhdGEgKG91dHB1dF9iZmQpLT5zdGFja19mbGFncyA9IFBGX1IgfCBQRl9XOwotICBlbHNlCi0gICAgewotICAgICAgYmZkICppbnB1dG9iajsKLSAgICAgIGFzZWN0aW9uICpub3Rlc2VjID0gTlVMTDsKLSAgICAgIGludCBleGVjID0gMDsKLQotICAgICAgZm9yIChpbnB1dG9iaiA9IGluZm8tPmlucHV0X2JmZHM7Ci0JICAgaW5wdXRvYmo7Ci0JICAgaW5wdXRvYmogPSBpbnB1dG9iai0+bGlua19uZXh0KQotCXsKLQkgIGFzZWN0aW9uICpzOwotCi0JICBpZiAoaW5wdXRvYmotPmZsYWdzICYgRFlOQU1JQykKLQkgICAgY29udGludWU7Ci0JICBzID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGlucHV0b2JqLCAiLm5vdGUuR05VLXN0YWNrIik7Ci0JICBpZiAocykKLQkgICAgewotCSAgICAgIGlmIChzLT5mbGFncyAmIFNFQ19DT0RFKQotCQlleGVjID0gUEZfWDsKLQkgICAgICBub3Rlc2VjID0gczsKLQkgICAgfQotCSAgZWxzZQotCSAgICBleGVjID0gUEZfWDsKLQl9Ci0gICAgICBpZiAobm90ZXNlYykKLQl7Ci0JICBlbGZfdGRhdGEgKG91dHB1dF9iZmQpLT5zdGFja19mbGFncyA9IFBGX1IgfCBQRl9XIHwgZXhlYzsKLQkgIGlmIChleGVjICYmIGluZm8tPnJlbG9jYXRhYmxlCi0JICAgICAgJiYgbm90ZXNlYy0+b3V0cHV0X3NlY3Rpb24gIT0gYmZkX2Fic19zZWN0aW9uX3B0cikKLQkgICAgbm90ZXNlYy0+b3V0cHV0X3NlY3Rpb24tPmZsYWdzIHw9IFNFQ19DT0RFOwotCX0KLSAgICB9Ci0KLSAgLyogQW55IHN5bXMgY3JlYXRlZCBmcm9tIG5vdyBvbiBzdGFydCB3aXRoIC0xIGluCi0gICAgIGdvdC5yZWZjb3VudC9vZmZzZXQgYW5kIHBsdC5yZWZjb3VudC9vZmZzZXQuICAqLwotICBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmluaXRfcmVmY291bnQgPSBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmluaXRfb2Zmc2V0OwotCi0gIC8qIFRoZSBiYWNrZW5kIG1heSBoYXZlIHRvIGNyZWF0ZSBzb21lIHNlY3Rpb25zIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgotICAgICB3ZSdyZSBkeW5hbWljIG9yIG5vdC4gICovCi0gIGJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChvdXRwdXRfYmZkKTsKLSAgaWYgKGJlZC0+ZWxmX2JhY2tlbmRfYWx3YXlzX3NpemVfc2VjdGlvbnMKLSAgICAgICYmICEgKCpiZWQtPmVsZl9iYWNrZW5kX2Fsd2F5c19zaXplX3NlY3Rpb25zKSAob3V0cHV0X2JmZCwgaW5mbykpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGR5bm9iaiA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHlub2JqOwotCi0gIC8qIElmIHRoZXJlIHdlcmUgbm8gZHluYW1pYyBvYmplY3RzIGluIHRoZSBsaW5rLCB0aGVyZSBpcyBub3RoaW5nIHRvCi0gICAgIGRvIGhlcmUuICAqLwotICBpZiAoZHlub2JqID09IE5VTEwpCi0gICAgcmV0dXJuIFRSVUU7Ci0KLSAgaWYgKCEgX2JmZF9lbGZfbWF5YmVfc3RyaXBfZWhfZnJhbWVfaGRyIChpbmZvKSkKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgaWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluYW1pY19zZWN0aW9uc19jcmVhdGVkKQotICAgIHsKLSAgICAgIHN0cnVjdCBlbGZfaW5mb19mYWlsZWQgZWlmOwotICAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmg7Ci0gICAgICBhc2VjdGlvbiAqZHluc3RyOwotICAgICAgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90cmVlICp0OwotICAgICAgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl9leHByICpkOwotICAgICAgYmZkX2Jvb2xlYW4gYWxsX2RlZmluZWQ7Ci0KLSAgICAgICpzaW50ZXJwcHRyID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5pbnRlcnAiKTsKLSAgICAgIEJGRF9BU1NFUlQgKCpzaW50ZXJwcHRyICE9IE5VTEwgfHwgIWluZm8tPmV4ZWN1dGFibGUpOwotCi0gICAgICBpZiAoc29uYW1lICE9IE5VTEwpCi0JewotCSAgc29uYW1lX2luZHggPSBfYmZkX2VsZl9zdHJ0YWJfYWRkIChlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bnN0ciwKLQkJCQkJICAgICBzb25hbWUsIFRSVUUpOwotCSAgaWYgKHNvbmFtZV9pbmR4ID09IChiZmRfc2l6ZV90eXBlKSAtMQotCSAgICAgIHx8ICEgZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9TT05BTUUsIHNvbmFtZV9pbmR4KSkKLQkgICAgcmV0dXJuIEZBTFNFOwotCX0KLQotICAgICAgaWYgKGluZm8tPnN5bWJvbGljKQotCXsKLQkgIGlmICghIGVsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfU1lNQk9MSUMsIDApKQotCSAgICByZXR1cm4gRkFMU0U7Ci0JICBpbmZvLT5mbGFncyB8PSBERl9TWU1CT0xJQzsKLQl9Ci0KLSAgICAgIGlmIChycGF0aCAhPSBOVUxMKQotCXsKLQkgIGJmZF9zaXplX3R5cGUgaW5keDsKLQotCSAgaW5keCA9IF9iZmRfZWxmX3N0cnRhYl9hZGQgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyLCBycGF0aCwKLQkJCQkgICAgICBUUlVFKTsKLQkgIGlmIChpbmZvLT5uZXdfZHRhZ3MpCi0JICAgIF9iZmRfZWxmX3N0cnRhYl9hZGRyZWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyLCBpbmR4KTsKLQkgIGlmIChpbmR4ID09IChiZmRfc2l6ZV90eXBlKSAtMQotCSAgICAgIHx8ICEgZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9SUEFUSCwgaW5keCkKLQkgICAgICB8fCAoaW5mby0+bmV3X2R0YWdzCi0JCSAgJiYgISBlbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1JVTlBBVEgsIGluZHgpKSkKLQkgICAgcmV0dXJuIEZBTFNFOwotCX0KLQotICAgICAgaWYgKGZpbHRlcl9zaGxpYiAhPSBOVUxMKQotCXsKLQkgIGJmZF9zaXplX3R5cGUgaW5keDsKLQotCSAgaW5keCA9IF9iZmRfZWxmX3N0cnRhYl9hZGQgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyLAotCQkJCSAgICAgIGZpbHRlcl9zaGxpYiwgVFJVRSk7Ci0JICBpZiAoaW5keCA9PSAoYmZkX3NpemVfdHlwZSkgLTEKLQkgICAgICB8fCAhIGVsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfRklMVEVSLCBpbmR4KSkKLQkgICAgcmV0dXJuIEZBTFNFOwotCX0KLQotICAgICAgaWYgKGF1eGlsaWFyeV9maWx0ZXJzICE9IE5VTEwpCi0JewotCSAgY29uc3QgY2hhciAqIGNvbnN0ICpwOwotCi0JICBmb3IgKHAgPSBhdXhpbGlhcnlfZmlsdGVyczsgKnAgIT0gTlVMTDsgcCsrKQotCSAgICB7Ci0JICAgICAgYmZkX3NpemVfdHlwZSBpbmR4OwotCi0JICAgICAgaW5keCA9IF9iZmRfZWxmX3N0cnRhYl9hZGQgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyLAotCQkJCQkgICpwLCBUUlVFKTsKLQkgICAgICBpZiAoaW5keCA9PSAoYmZkX3NpemVfdHlwZSkgLTEKLQkJICB8fCAhIGVsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfQVVYSUxJQVJZLCBpbmR4KSkKLQkJcmV0dXJuIEZBTFNFOwotCSAgICB9Ci0JfQotCi0gICAgICBlaWYuaW5mbyA9IGluZm87Ci0gICAgICBlaWYudmVyZGVmcyA9IHZlcmRlZnM7Ci0gICAgICBlaWYuZmFpbGVkID0gRkFMU0U7Ci0KLSAgICAgIC8qIElmIHdlIGFyZSBzdXBwb3NlZCB0byBleHBvcnQgYWxsIHN5bWJvbHMgaW50byB0aGUgZHluYW1pYyBzeW1ib2wKLQkgdGFibGUgKHRoaXMgaXMgbm90IHRoZSBub3JtYWwgY2FzZSksIHRoZW4gZG8gc28uICAqLwotICAgICAgaWYgKGluZm8tPmV4cG9ydF9keW5hbWljKQotCXsKLQkgIGVsZl9saW5rX2hhc2hfdHJhdmVyc2UgKGVsZl9oYXNoX3RhYmxlIChpbmZvKSwKLQkJCQkgIF9iZmRfZWxmX2V4cG9ydF9zeW1ib2wsCi0JCQkJICAmZWlmKTsKLQkgIGlmIChlaWYuZmFpbGVkKQotCSAgICByZXR1cm4gRkFMU0U7Ci0JfQotCi0gICAgICAvKiBNYWtlIGFsbCBnbG9iYWwgdmVyc2lvbnMgd2l0aCBkZWZpbml0aW9uLiAgKi8KLSAgICAgIGZvciAodCA9IHZlcmRlZnM7IHQgIT0gTlVMTDsgdCA9IHQtPm5leHQpCi0JZm9yIChkID0gdC0+Z2xvYmFscy5saXN0OyBkICE9IE5VTEw7IGQgPSBkLT5uZXh0KQotCSAgaWYgKCFkLT5zeW12ZXIgJiYgZC0+c3ltYm9sKQotCSAgICB7Ci0JICAgICAgY29uc3QgY2hhciAqdmVyc3RyLCAqbmFtZTsKLQkgICAgICBzaXplX3QgbmFtZWxlbiwgdmVybGVuLCBuZXdsZW47Ci0JICAgICAgY2hhciAqbmV3bmFtZSwgKnA7Ci0JICAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKm5ld2g7Ci0KLQkgICAgICBuYW1lID0gZC0+c3ltYm9sOwotCSAgICAgIG5hbWVsZW4gPSBzdHJsZW4gKG5hbWUpOwotCSAgICAgIHZlcnN0ciA9IHQtPm5hbWU7Ci0JICAgICAgdmVybGVuID0gc3RybGVuICh2ZXJzdHIpOwotCSAgICAgIG5ld2xlbiA9IG5hbWVsZW4gKyB2ZXJsZW4gKyAzOwotCi0JICAgICAgbmV3bmFtZSA9IGJmZF9tYWxsb2MgKG5ld2xlbik7Ci0JICAgICAgaWYgKG5ld25hbWUgPT0gTlVMTCkKLQkJcmV0dXJuIEZBTFNFOwotCSAgICAgIG1lbWNweSAobmV3bmFtZSwgbmFtZSwgbmFtZWxlbik7Ci0KLQkgICAgICAvKiBDaGVjayB0aGUgaGlkZGVuIHZlcnNpb25lZCBkZWZpbml0aW9uLiAgKi8KLQkgICAgICBwID0gbmV3bmFtZSArIG5hbWVsZW47Ci0JICAgICAgKnArKyA9IEVMRl9WRVJfQ0hSOwotCSAgICAgIG1lbWNweSAocCwgdmVyc3RyLCB2ZXJsZW4gKyAxKTsKLQkgICAgICBuZXdoID0gZWxmX2xpbmtfaGFzaF9sb29rdXAgKGVsZl9oYXNoX3RhYmxlIChpbmZvKSwKLQkJCQkJICAgbmV3bmFtZSwgRkFMU0UsIEZBTFNFLAotCQkJCQkgICBGQUxTRSk7Ci0JICAgICAgaWYgKG5ld2ggPT0gTlVMTAotCQkgIHx8IChuZXdoLT5yb290LnR5cGUgIT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JCSAgICAgICYmIG5ld2gtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX2RlZndlYWspKQotCQl7Ci0JCSAgLyogQ2hlY2sgdGhlIGRlZmF1bHQgdmVyc2lvbmVkIGRlZmluaXRpb24uICAqLwotCQkgICpwKysgPSBFTEZfVkVSX0NIUjsKLQkJICBtZW1jcHkgKHAsIHZlcnN0ciwgdmVybGVuICsgMSk7Ci0JCSAgbmV3aCA9IGVsZl9saW5rX2hhc2hfbG9va3VwIChlbGZfaGFzaF90YWJsZSAoaW5mbyksCi0JCQkJCSAgICAgICBuZXduYW1lLCBGQUxTRSwgRkFMU0UsCi0JCQkJCSAgICAgICBGQUxTRSk7Ci0JCX0KLQkgICAgICBmcmVlIChuZXduYW1lKTsKLQotCSAgICAgIC8qIE1hcmsgdGhpcyB2ZXJzaW9uIGlmIHRoZXJlIGlzIGEgZGVmaW5pdGlvbiBhbmQgaXQgaXMKLQkJIG5vdCBkZWZpbmVkIGluIGEgc2hhcmVkIG9iamVjdC4gICovCi0JICAgICAgaWYgKG5ld2ggIT0gTlVMTAotCQkgICYmICgobmV3aC0+ZWxmX2xpbmtfaGFzaF9mbGFncwotCQkgICAgICAgJiBFTEZfTElOS19IQVNIX0RFRl9EWU5BTUlDKSA9PSAwKQotCQkgICYmIChuZXdoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JCSAgICAgIHx8IG5ld2gtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZndlYWspKQotCQlkLT5zeW12ZXIgPSAxOwotCSAgICB9Ci0KLSAgICAgIC8qIEF0dGFjaCBhbGwgdGhlIHN5bWJvbHMgdG8gdGhlaXIgdmVyc2lvbiBpbmZvcm1hdGlvbi4gICovCi0gICAgICBhc3ZpbmZvLm91dHB1dF9iZmQgPSBvdXRwdXRfYmZkOwotICAgICAgYXN2aW5mby5pbmZvID0gaW5mbzsKLSAgICAgIGFzdmluZm8udmVyZGVmcyA9IHZlcmRlZnM7Ci0gICAgICBhc3ZpbmZvLmZhaWxlZCA9IEZBTFNFOwotCi0gICAgICBlbGZfbGlua19oYXNoX3RyYXZlcnNlIChlbGZfaGFzaF90YWJsZSAoaW5mbyksCi0JCQkgICAgICBfYmZkX2VsZl9saW5rX2Fzc2lnbl9zeW1fdmVyc2lvbiwKLQkJCSAgICAgICZhc3ZpbmZvKTsKLSAgICAgIGlmIChhc3ZpbmZvLmZhaWxlZCkKLQlyZXR1cm4gRkFMU0U7Ci0KLSAgICAgIGlmICghaW5mby0+YWxsb3dfdW5kZWZpbmVkX3ZlcnNpb24pCi0JewotCSAgLyogQ2hlY2sgaWYgYWxsIGdsb2JhbCB2ZXJzaW9ucyBoYXZlIGEgZGVmaW5pdGlvbi4gICovCi0JICBhbGxfZGVmaW5lZCA9IFRSVUU7Ci0JICBmb3IgKHQgPSB2ZXJkZWZzOyB0ICE9IE5VTEw7IHQgPSB0LT5uZXh0KQotCSAgICBmb3IgKGQgPSB0LT5nbG9iYWxzLmxpc3Q7IGQgIT0gTlVMTDsgZCA9IGQtPm5leHQpCi0JICAgICAgaWYgKCFkLT5zeW12ZXIgJiYgIWQtPnNjcmlwdCkKLQkJewotCQkgICgqX2JmZF9lcnJvcl9oYW5kbGVyKQotCQkgICAgKF8oIiVzOiB1bmRlZmluZWQgdmVyc2lvbjogJXMiKSwKLQkJICAgICBkLT5wYXR0ZXJuLCB0LT5uYW1lKTsKLQkJICBhbGxfZGVmaW5lZCA9IEZBTFNFOwotCQl9Ci0KLQkgIGlmICghYWxsX2RlZmluZWQpCi0JICAgIHsKLQkgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKLQkgICAgICByZXR1cm4gRkFMU0U7Ci0JICAgIH0KLQl9Ci0KLSAgICAgIC8qIEZpbmQgYWxsIHN5bWJvbHMgd2hpY2ggd2VyZSBkZWZpbmVkIGluIGEgZHluYW1pYyBvYmplY3QgYW5kIG1ha2UKLQkgdGhlIGJhY2tlbmQgcGljayBhIHJlYXNvbmFibGUgdmFsdWUgZm9yIHRoZW0uICAqLwotICAgICAgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZSAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAotCQkJICAgICAgX2JmZF9lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sLAotCQkJICAgICAgJmVpZik7Ci0gICAgICBpZiAoZWlmLmZhaWxlZCkKLQlyZXR1cm4gRkFMU0U7Ci0KLSAgICAgIC8qIEFkZCBzb21lIGVudHJpZXMgdG8gdGhlIC5keW5hbWljIHNlY3Rpb24uICBXZSBmaWxsIGluIHNvbWUgb2YgdGhlCi0JIHZhbHVlcyBsYXRlciwgaW4gZWxmX2JmZF9maW5hbF9saW5rLCBidXQgd2UgbXVzdCBhZGQgdGhlIGVudHJpZXMKLQkgbm93IHNvIHRoYXQgd2Uga25vdyB0aGUgZmluYWwgc2l6ZSBvZiB0aGUgLmR5bmFtaWMgc2VjdGlvbi4gICovCi0KLSAgICAgIC8qIElmIHRoZXJlIGFyZSBpbml0aWFsaXphdGlvbiBhbmQvb3IgZmluYWxpemF0aW9uIGZ1bmN0aW9ucyB0bwotCSBjYWxsIHRoZW4gYWRkIHRoZSBjb3JyZXNwb25kaW5nIERUX0lOSVQvRFRfRklOSSBlbnRyaWVzLiAgKi8KLSAgICAgIGggPSAoaW5mby0+aW5pdF9mdW5jdGlvbgotCSAgID8gZWxmX2xpbmtfaGFzaF9sb29rdXAgKGVsZl9oYXNoX3RhYmxlIChpbmZvKSwKLQkJCQkgICBpbmZvLT5pbml0X2Z1bmN0aW9uLCBGQUxTRSwKLQkJCQkgICBGQUxTRSwgRkFMU0UpCi0JICAgOiBOVUxMKTsKLSAgICAgIGlmIChoICE9IE5VTEwKLQkgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgKEVMRl9MSU5LX0hBU0hfUkVGX1JFR1VMQVIKLQkJCQkJfCBFTEZfTElOS19IQVNIX0RFRl9SRUdVTEFSKSkgIT0gMCkKLQl7Ci0JICBpZiAoISBlbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0lOSVQsIDApKQotCSAgICByZXR1cm4gRkFMU0U7Ci0JfQotICAgICAgaCA9IChpbmZvLT5maW5pX2Z1bmN0aW9uCi0JICAgPyBlbGZfbGlua19oYXNoX2xvb2t1cCAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAotCQkJCSAgIGluZm8tPmZpbmlfZnVuY3Rpb24sIEZBTFNFLAotCQkJCSAgIEZBTFNFLCBGQUxTRSkKLQkgICA6IE5VTEwpOwotICAgICAgaWYgKGggIT0gTlVMTAotCSAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiAoRUxGX0xJTktfSEFTSF9SRUZfUkVHVUxBUgotCQkJCQl8IEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVIpKSAhPSAwKQotCXsKLQkgIGlmICghIGVsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfRklOSSwgMCkpCi0JICAgIHJldHVybiBGQUxTRTsKLQl9Ci0KLSAgICAgIGlmIChiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAob3V0cHV0X2JmZCwgIi5wcmVpbml0X2FycmF5IikgIT0gTlVMTCkKLQl7Ci0JICAvKiBEVF9QUkVJTklUX0FSUkFZIGlzIG5vdCBhbGxvd2VkIGluIHNoYXJlZCBsaWJyYXJ5LiAgKi8KLQkgIGlmICghIGluZm8tPmV4ZWN1dGFibGUpCi0JICAgIHsKLQkgICAgICBiZmQgKnN1YjsKLQkgICAgICBhc2VjdGlvbiAqbzsKLQotCSAgICAgIGZvciAoc3ViID0gaW5mby0+aW5wdXRfYmZkczsgc3ViICE9IE5VTEw7Ci0JCSAgIHN1YiA9IHN1Yi0+bGlua19uZXh0KQotCQlmb3IgKG8gPSBzdWItPnNlY3Rpb25zOyBvICE9IE5VTEw7IG8gPSBvLT5uZXh0KQotCQkgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChvKS0+dGhpc19oZHIuc2hfdHlwZQotCQkgICAgICA9PSBTSFRfUFJFSU5JVF9BUlJBWSkKLQkJICAgIHsKLQkJICAgICAgKCpfYmZkX2Vycm9yX2hhbmRsZXIpCi0JCQkoXygiJXM6IC5wcmVpbml0X2FycmF5IHNlY3Rpb24gaXMgbm90IGFsbG93ZWQgaW4gRFNPIiksCi0JCQkgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKHN1YikpOwotCQkgICAgICBicmVhazsKLQkJICAgIH0KLQotCSAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9ub25yZXByZXNlbnRhYmxlX3NlY3Rpb24pOwotCSAgICAgIHJldHVybiBGQUxTRTsKLQkgICAgfQotCi0JICBpZiAoIWVsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfUFJFSU5JVF9BUlJBWSwgMCkKLQkgICAgICB8fCAhZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9QUkVJTklUX0FSUkFZU1osIDApKQotCSAgICByZXR1cm4gRkFMU0U7Ci0JfQotICAgICAgaWYgKGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvdXRwdXRfYmZkLCAiLmluaXRfYXJyYXkiKSAhPSBOVUxMKQotCXsKLQkgIGlmICghZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9JTklUX0FSUkFZLCAwKQotCSAgICAgIHx8ICFlbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0lOSVRfQVJSQVlTWiwgMCkpCi0JICAgIHJldHVybiBGQUxTRTsKLQl9Ci0gICAgICBpZiAoYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG91dHB1dF9iZmQsICIuZmluaV9hcnJheSIpICE9IE5VTEwpCi0JewotCSAgaWYgKCFlbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0ZJTklfQVJSQVksIDApCi0JICAgICAgfHwgIWVsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfRklOSV9BUlJBWVNaLCAwKSkKLQkgICAgcmV0dXJuIEZBTFNFOwotCX0KLQotICAgICAgZHluc3RyID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5keW5zdHIiKTsKLSAgICAgIC8qIElmIC5keW5zdHIgaXMgZXhjbHVkZWQgZnJvbSB0aGUgbGluaywgd2UgZG9uJ3Qgd2FudCBhbnkgb2YKLQkgdGhlc2UgdGFncy4gIFN0cmljdGx5LCB3ZSBzaG91bGQgYmUgY2hlY2tpbmcgZWFjaCBzZWN0aW9uCi0JIGluZGl2aWR1YWxseTsgIFRoaXMgcXVpY2sgY2hlY2sgY292ZXJzIGZvciB0aGUgY2FzZSB3aGVyZQotCSBzb21lb25lIGRvZXMgYSAvRElTQ0FSRC8gOiB7ICooKikgfS4gICovCi0gICAgICBpZiAoZHluc3RyICE9IE5VTEwgJiYgZHluc3RyLT5vdXRwdXRfc2VjdGlvbiAhPSBiZmRfYWJzX3NlY3Rpb25fcHRyKQotCXsKLQkgIGJmZF9zaXplX3R5cGUgc3Ryc2l6ZTsKLQotCSAgc3Ryc2l6ZSA9IF9iZmRfZWxmX3N0cnRhYl9zaXplIChlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bnN0cik7Ci0JICBpZiAoISBlbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX0hBU0gsIDApCi0JICAgICAgfHwgISBlbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1NUUlRBQiwgMCkKLQkgICAgICB8fCAhIGVsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfU1lNVEFCLCAwKQotCSAgICAgIHx8ICEgZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9TVFJTWiwgc3Ryc2l6ZSkKLQkgICAgICB8fCAhIGVsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfU1lNRU5ULAotCQkJCQkgIHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bSkpKQotCSAgICByZXR1cm4gRkFMU0U7Ci0JfQotICAgIH0KLQotICAvKiBUaGUgYmFja2VuZCBtdXN0IHdvcmsgb3V0IHRoZSBzaXplcyBvZiBhbGwgdGhlIG90aGVyIGR5bmFtaWMKLSAgICAgc2VjdGlvbnMuICAqLwotICBpZiAoYmVkLT5lbGZfYmFja2VuZF9zaXplX2R5bmFtaWNfc2VjdGlvbnMKLSAgICAgICYmICEgKCpiZWQtPmVsZl9iYWNrZW5kX3NpemVfZHluYW1pY19zZWN0aW9ucykgKG91dHB1dF9iZmQsIGluZm8pKQotICAgIHJldHVybiBGQUxTRTsKLQotICBpZiAoZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQpCi0gICAgewotICAgICAgYmZkX3NpemVfdHlwZSBkeW5zeW1jb3VudDsKLSAgICAgIGFzZWN0aW9uICpzOwotICAgICAgc2l6ZV90IGJ1Y2tldGNvdW50ID0gMDsKLSAgICAgIHNpemVfdCBoYXNoX2VudHJ5X3NpemU7Ci0gICAgICB1bnNpZ25lZCBpbnQgZHRhZ2NvdW50OwotCi0gICAgICAvKiBTZXQgdXAgdGhlIHZlcnNpb24gZGVmaW5pdGlvbiBzZWN0aW9uLiAgKi8KLSAgICAgIHMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoZHlub2JqLCAiLmdudS52ZXJzaW9uX2QiKTsKLSAgICAgIEJGRF9BU1NFUlQgKHMgIT0gTlVMTCk7Ci0KLSAgICAgIC8qIFdlIG1heSBoYXZlIGNyZWF0ZWQgYWRkaXRpb25hbCB2ZXJzaW9uIGRlZmluaXRpb25zIGlmIHdlIGFyZQotCSBqdXN0IGxpbmtpbmcgYSByZWd1bGFyIGFwcGxpY2F0aW9uLiAgKi8KLSAgICAgIHZlcmRlZnMgPSBhc3ZpbmZvLnZlcmRlZnM7Ci0KLSAgICAgIC8qIFNraXAgYW5vbnltb3VzIHZlcnNpb24gdGFnLiAgKi8KLSAgICAgIGlmICh2ZXJkZWZzICE9IE5VTEwgJiYgdmVyZGVmcy0+dmVybnVtID09IDApCi0JdmVyZGVmcyA9IHZlcmRlZnMtPm5leHQ7Ci0KLSAgICAgIGlmICh2ZXJkZWZzID09IE5VTEwpCi0JX2JmZF9zdHJpcF9zZWN0aW9uX2Zyb21fb3V0cHV0IChpbmZvLCBzKTsKLSAgICAgIGVsc2UKLQl7Ci0JICB1bnNpZ25lZCBpbnQgY2RlZnM7Ci0JICBiZmRfc2l6ZV90eXBlIHNpemU7Ci0JICBzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX3RyZWUgKnQ7Ci0JICBiZmRfYnl0ZSAqcDsKLQkgIEVsZl9JbnRlcm5hbF9WZXJkZWYgZGVmOwotCSAgRWxmX0ludGVybmFsX1ZlcmRhdXggZGVmYXV4OwotCi0JICBjZGVmcyA9IDA7Ci0JICBzaXplID0gMDsKLQotCSAgLyogTWFrZSBzcGFjZSBmb3IgdGhlIGJhc2UgdmVyc2lvbi4gICovCi0JICBzaXplICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRlZik7Ci0JICBzaXplICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRhdXgpOwotCSAgKytjZGVmczsKLQotCSAgZm9yICh0ID0gdmVyZGVmczsgdCAhPSBOVUxMOyB0ID0gdC0+bmV4dCkKLQkgICAgewotCSAgICAgIHN0cnVjdCBiZmRfZWxmX3ZlcnNpb25fZGVwcyAqbjsKLQotCSAgICAgIHNpemUgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGVmKTsKLQkgICAgICBzaXplICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRhdXgpOwotCSAgICAgICsrY2RlZnM7Ci0KLQkgICAgICBmb3IgKG4gPSB0LT5kZXBzOyBuICE9IE5VTEw7IG4gPSBuLT5uZXh0KQotCQlzaXplICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRhdXgpOwotCSAgICB9Ci0KLQkgIHMtPl9yYXdfc2l6ZSA9IHNpemU7Ci0JICBzLT5jb250ZW50cyA9IGJmZF9hbGxvYyAob3V0cHV0X2JmZCwgcy0+X3Jhd19zaXplKTsKLQkgIGlmIChzLT5jb250ZW50cyA9PSBOVUxMICYmIHMtPl9yYXdfc2l6ZSAhPSAwKQotCSAgICByZXR1cm4gRkFMU0U7Ci0KLQkgIC8qIEZpbGwgaW4gdGhlIHZlcnNpb24gZGVmaW5pdGlvbiBzZWN0aW9uLiAgKi8KLQotCSAgcCA9IHMtPmNvbnRlbnRzOwotCi0JICBkZWYudmRfdmVyc2lvbiA9IFZFUl9ERUZfQ1VSUkVOVDsKLQkgIGRlZi52ZF9mbGFncyA9IFZFUl9GTEdfQkFTRTsKLQkgIGRlZi52ZF9uZHggPSAxOwotCSAgZGVmLnZkX2NudCA9IDE7Ci0JICBkZWYudmRfYXV4ID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGVmKTsKLQkgIGRlZi52ZF9uZXh0ID0gKHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRlZikKLQkJCSArIHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRhdXgpKTsKLQotCSAgaWYgKHNvbmFtZV9pbmR4ICE9IChiZmRfc2l6ZV90eXBlKSAtMSkKLQkgICAgewotCSAgICAgIF9iZmRfZWxmX3N0cnRhYl9hZGRyZWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyLAotCQkJCSAgICAgIHNvbmFtZV9pbmR4KTsKLQkgICAgICBkZWYudmRfaGFzaCA9IGJmZF9lbGZfaGFzaCAoc29uYW1lKTsKLQkgICAgICBkZWZhdXgudmRhX25hbWUgPSBzb25hbWVfaW5keDsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgY29uc3QgY2hhciAqbmFtZTsKLQkgICAgICBiZmRfc2l6ZV90eXBlIGluZHg7Ci0KLQkgICAgICBuYW1lID0gYmFzZW5hbWUgKG91dHB1dF9iZmQtPmZpbGVuYW1lKTsKLQkgICAgICBkZWYudmRfaGFzaCA9IGJmZF9lbGZfaGFzaCAobmFtZSk7Ci0JICAgICAgaW5keCA9IF9iZmRfZWxmX3N0cnRhYl9hZGQgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyLAotCQkJCQkgIG5hbWUsIEZBTFNFKTsKLQkgICAgICBpZiAoaW5keCA9PSAoYmZkX3NpemVfdHlwZSkgLTEpCi0JCXJldHVybiBGQUxTRTsKLQkgICAgICBkZWZhdXgudmRhX25hbWUgPSBpbmR4OwotCSAgICB9Ci0JICBkZWZhdXgudmRhX25leHQgPSAwOwotCi0JICBfYmZkX2VsZl9zd2FwX3ZlcmRlZl9vdXQgKG91dHB1dF9iZmQsICZkZWYsCi0JCQkJICAgIChFbGZfRXh0ZXJuYWxfVmVyZGVmICopIHApOwotCSAgcCArPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJkZWYpOwotCSAgX2JmZF9lbGZfc3dhcF92ZXJkYXV4X291dCAob3V0cHV0X2JmZCwgJmRlZmF1eCwKLQkJCQkgICAgIChFbGZfRXh0ZXJuYWxfVmVyZGF1eCAqKSBwKTsKLQkgIHAgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGF1eCk7Ci0KLQkgIGZvciAodCA9IHZlcmRlZnM7IHQgIT0gTlVMTDsgdCA9IHQtPm5leHQpCi0JICAgIHsKLQkgICAgICB1bnNpZ25lZCBpbnQgY2RlcHM7Ci0JICAgICAgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl9kZXBzICpuOwotCSAgICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoOwotCSAgICAgIHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5ICpiaDsKLQotCSAgICAgIGNkZXBzID0gMDsKLQkgICAgICBmb3IgKG4gPSB0LT5kZXBzOyBuICE9IE5VTEw7IG4gPSBuLT5uZXh0KQotCQkrK2NkZXBzOwotCi0JICAgICAgLyogQWRkIGEgc3ltYm9sIHJlcHJlc2VudGluZyB0aGlzIHZlcnNpb24uICAqLwotCSAgICAgIGJoID0gTlVMTDsKLQkgICAgICBpZiAoISAoX2JmZF9nZW5lcmljX2xpbmtfYWRkX29uZV9zeW1ib2wKLQkJICAgICAoaW5mbywgZHlub2JqLCB0LT5uYW1lLCBCU0ZfR0xPQkFMLCBiZmRfYWJzX3NlY3Rpb25fcHRyLAotCQkgICAgICAwLCBOVUxMLCBGQUxTRSwKLQkJICAgICAgZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGR5bm9iaiktPmNvbGxlY3QsICZiaCkpKQotCQlyZXR1cm4gRkFMU0U7Ci0JICAgICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBiaDsKLQkgICAgICBoLT5lbGZfbGlua19oYXNoX2ZsYWdzICY9IH4gRUxGX0xJTktfTk9OX0VMRjsKLQkgICAgICBoLT5lbGZfbGlua19oYXNoX2ZsYWdzIHw9IEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVI7Ci0JICAgICAgaC0+dHlwZSA9IFNUVF9PQkpFQ1Q7Ci0JICAgICAgaC0+dmVyaW5mby52ZXJ0cmVlID0gdDsKLQotCSAgICAgIGlmICghIF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKLQkJcmV0dXJuIEZBTFNFOwotCi0JICAgICAgZGVmLnZkX3ZlcnNpb24gPSBWRVJfREVGX0NVUlJFTlQ7Ci0JICAgICAgZGVmLnZkX2ZsYWdzID0gMDsKLQkgICAgICBpZiAodC0+Z2xvYmFscy5saXN0ID09IE5VTEwgJiYgdC0+bG9jYWxzLmxpc3QgPT0gTlVMTCAmJiAhIHQtPnVzZWQpCi0JCWRlZi52ZF9mbGFncyB8PSBWRVJfRkxHX1dFQUs7Ci0JICAgICAgZGVmLnZkX25keCA9IHQtPnZlcm51bSArIDE7Ci0JICAgICAgZGVmLnZkX2NudCA9IGNkZXBzICsgMTsKLQkgICAgICBkZWYudmRfaGFzaCA9IGJmZF9lbGZfaGFzaCAodC0+bmFtZSk7Ci0JICAgICAgZGVmLnZkX2F1eCA9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRlZik7Ci0JICAgICAgaWYgKHQtPm5leHQgIT0gTlVMTCkKLQkJZGVmLnZkX25leHQgPSAoc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGVmKQotCQkJICAgICAgICsgKGNkZXBzICsgMSkgKiBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJkYXV4KSk7Ci0JICAgICAgZWxzZQotCQlkZWYudmRfbmV4dCA9IDA7Ci0KLQkgICAgICBfYmZkX2VsZl9zd2FwX3ZlcmRlZl9vdXQgKG91dHB1dF9iZmQsICZkZWYsCi0JCQkJCShFbGZfRXh0ZXJuYWxfVmVyZGVmICopIHApOwotCSAgICAgIHAgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGVmKTsKLQotCSAgICAgIGRlZmF1eC52ZGFfbmFtZSA9IGgtPmR5bnN0cl9pbmRleDsKLQkgICAgICBfYmZkX2VsZl9zdHJ0YWJfYWRkcmVmIChlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bnN0ciwKLQkJCQkgICAgICBoLT5keW5zdHJfaW5kZXgpOwotCSAgICAgIGlmICh0LT5kZXBzID09IE5VTEwpCi0JCWRlZmF1eC52ZGFfbmV4dCA9IDA7Ci0JICAgICAgZWxzZQotCQlkZWZhdXgudmRhX25leHQgPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJkYXV4KTsKLQkgICAgICB0LT5uYW1lX2luZHggPSBkZWZhdXgudmRhX25hbWU7Ci0KLQkgICAgICBfYmZkX2VsZl9zd2FwX3ZlcmRhdXhfb3V0IChvdXRwdXRfYmZkLCAmZGVmYXV4LAotCQkJCQkgKEVsZl9FeHRlcm5hbF9WZXJkYXV4ICopIHApOwotCSAgICAgIHAgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGF1eCk7Ci0KLQkgICAgICBmb3IgKG4gPSB0LT5kZXBzOyBuICE9IE5VTEw7IG4gPSBuLT5uZXh0KQotCQl7Ci0JCSAgaWYgKG4tPnZlcnNpb25fbmVlZGVkID09IE5VTEwpCi0JCSAgICB7Ci0JCSAgICAgIC8qIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gdGhlCi0JCQkgdmVyc2lvbiBzY3JpcHQuICAqLwotCQkgICAgICBkZWZhdXgudmRhX25hbWUgPSAwOwotCQkgICAgfQotCQkgIGVsc2UKLQkJICAgIHsKLQkJICAgICAgZGVmYXV4LnZkYV9uYW1lID0gbi0+dmVyc2lvbl9uZWVkZWQtPm5hbWVfaW5keDsKLQkJICAgICAgX2JmZF9lbGZfc3RydGFiX2FkZHJlZiAoZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5zdHIsCi0JCQkJCSAgICAgIGRlZmF1eC52ZGFfbmFtZSk7Ci0JCSAgICB9Ci0JCSAgaWYgKG4tPm5leHQgPT0gTlVMTCkKLQkJICAgIGRlZmF1eC52ZGFfbmV4dCA9IDA7Ci0JCSAgZWxzZQotCQkgICAgZGVmYXV4LnZkYV9uZXh0ID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVyZGF1eCk7Ci0KLQkJICBfYmZkX2VsZl9zd2FwX3ZlcmRhdXhfb3V0IChvdXRwdXRfYmZkLCAmZGVmYXV4LAotCQkJCQkgICAgIChFbGZfRXh0ZXJuYWxfVmVyZGF1eCAqKSBwKTsKLQkJICBwICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRhdXgpOwotCQl9Ci0JICAgIH0KLQotCSAgaWYgKCEgZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9WRVJERUYsIDApCi0JICAgICAgfHwgISBlbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX1ZFUkRFRk5VTSwgY2RlZnMpKQotCSAgICByZXR1cm4gRkFMU0U7Ci0KLQkgIGVsZl90ZGF0YSAob3V0cHV0X2JmZCktPmN2ZXJkZWZzID0gY2RlZnM7Ci0JfQotCi0gICAgICBpZiAoKGluZm8tPm5ld19kdGFncyAmJiBpbmZvLT5mbGFncykgfHwgKGluZm8tPmZsYWdzICYgREZfU1RBVElDX1RMUykpCi0JewotCSAgaWYgKCEgZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9GTEFHUywgaW5mby0+ZmxhZ3MpKQotCSAgICByZXR1cm4gRkFMU0U7Ci0JfQotCi0gICAgICBpZiAoaW5mby0+ZmxhZ3NfMSkKLQl7Ci0JICBpZiAoaW5mby0+ZXhlY3V0YWJsZSkKLQkgICAgaW5mby0+ZmxhZ3NfMSAmPSB+IChERl8xX0lOSVRGSVJTVAotCQkJCXwgREZfMV9OT0RFTEVURQotCQkJCXwgREZfMV9OT09QRU4pOwotCSAgaWYgKCEgZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9GTEFHU18xLCBpbmZvLT5mbGFnc18xKSkKLQkgICAgcmV0dXJuIEZBTFNFOwotCX0KLQotICAgICAgLyogV29yayBvdXQgdGhlIHNpemUgb2YgdGhlIHZlcnNpb24gcmVmZXJlbmNlIHNlY3Rpb24uICAqLwotCi0gICAgICBzID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5nbnUudmVyc2lvbl9yIik7Ci0gICAgICBCRkRfQVNTRVJUIChzICE9IE5VTEwpOwotICAgICAgewotCXN0cnVjdCBlbGZfZmluZF92ZXJkZXBfaW5mbyBzaW5mbzsKLQotCXNpbmZvLm91dHB1dF9iZmQgPSBvdXRwdXRfYmZkOwotCXNpbmZvLmluZm8gPSBpbmZvOwotCXNpbmZvLnZlcnMgPSBlbGZfdGRhdGEgKG91dHB1dF9iZmQpLT5jdmVyZGVmczsKLQlpZiAoc2luZm8udmVycyA9PSAwKQotCSAgc2luZm8udmVycyA9IDE7Ci0Jc2luZm8uZmFpbGVkID0gRkFMU0U7Ci0KLQllbGZfbGlua19oYXNoX3RyYXZlcnNlIChlbGZfaGFzaF90YWJsZSAoaW5mbyksCi0JCQkJX2JmZF9lbGZfbGlua19maW5kX3ZlcnNpb25fZGVwZW5kZW5jaWVzLAotCQkJCSZzaW5mbyk7Ci0KLQlpZiAoZWxmX3RkYXRhIChvdXRwdXRfYmZkKS0+dmVycmVmID09IE5VTEwpCi0JICBfYmZkX3N0cmlwX3NlY3Rpb25fZnJvbV9vdXRwdXQgKGluZm8sIHMpOwotCWVsc2UKLQkgIHsKLQkgICAgRWxmX0ludGVybmFsX1Zlcm5lZWQgKnQ7Ci0JICAgIHVuc2lnbmVkIGludCBzaXplOwotCSAgICB1bnNpZ25lZCBpbnQgY3JlZnM7Ci0JICAgIGJmZF9ieXRlICpwOwotCi0JICAgIC8qIEJ1aWxkIHRoZSB2ZXJzaW9uIGRlZmluaXRpb24gc2VjdGlvbi4gICovCi0JICAgIHNpemUgPSAwOwotCSAgICBjcmVmcyA9IDA7Ci0JICAgIGZvciAodCA9IGVsZl90ZGF0YSAob3V0cHV0X2JmZCktPnZlcnJlZjsKLQkJIHQgIT0gTlVMTDsKLQkJIHQgPSB0LT52bl9uZXh0cmVmKQotCSAgICAgIHsKLQkJRWxmX0ludGVybmFsX1Zlcm5hdXggKmE7Ci0KLQkJc2l6ZSArPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJuZWVkKTsKLQkJKytjcmVmczsKLQkJZm9yIChhID0gdC0+dm5fYXV4cHRyOyBhICE9IE5VTEw7IGEgPSBhLT52bmFfbmV4dHB0cikKLQkJICBzaXplICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1Zlcm5hdXgpOwotCSAgICAgIH0KLQotCSAgICBzLT5fcmF3X3NpemUgPSBzaXplOwotCSAgICBzLT5jb250ZW50cyA9IGJmZF9hbGxvYyAob3V0cHV0X2JmZCwgcy0+X3Jhd19zaXplKTsKLQkgICAgaWYgKHMtPmNvbnRlbnRzID09IE5VTEwpCi0JICAgICAgcmV0dXJuIEZBTFNFOwotCi0JICAgIHAgPSBzLT5jb250ZW50czsKLQkgICAgZm9yICh0ID0gZWxmX3RkYXRhIChvdXRwdXRfYmZkKS0+dmVycmVmOwotCQkgdCAhPSBOVUxMOwotCQkgdCA9IHQtPnZuX25leHRyZWYpCi0JICAgICAgewotCQl1bnNpZ25lZCBpbnQgY2F1eDsKLQkJRWxmX0ludGVybmFsX1Zlcm5hdXggKmE7Ci0JCWJmZF9zaXplX3R5cGUgaW5keDsKLQotCQljYXV4ID0gMDsKLQkJZm9yIChhID0gdC0+dm5fYXV4cHRyOyBhICE9IE5VTEw7IGEgPSBhLT52bmFfbmV4dHB0cikKLQkJICArK2NhdXg7Ci0KLQkJdC0+dm5fdmVyc2lvbiA9IFZFUl9ORUVEX0NVUlJFTlQ7Ci0JCXQtPnZuX2NudCA9IGNhdXg7Ci0JCWluZHggPSBfYmZkX2VsZl9zdHJ0YWJfYWRkIChlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bnN0ciwKLQkJCQkJICAgIGVsZl9kdF9uYW1lICh0LT52bl9iZmQpICE9IE5VTEwKLQkJCQkJICAgID8gZWxmX2R0X25hbWUgKHQtPnZuX2JmZCkKLQkJCQkJICAgIDogYmFzZW5hbWUgKHQtPnZuX2JmZC0+ZmlsZW5hbWUpLAotCQkJCQkgICAgRkFMU0UpOwotCQlpZiAoaW5keCA9PSAoYmZkX3NpemVfdHlwZSkgLTEpCi0JCSAgcmV0dXJuIEZBTFNFOwotCQl0LT52bl9maWxlID0gaW5keDsKLQkJdC0+dm5fYXV4ID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVybmVlZCk7Ci0JCWlmICh0LT52bl9uZXh0cmVmID09IE5VTEwpCi0JCSAgdC0+dm5fbmV4dCA9IDA7Ci0JCWVsc2UKLQkJICB0LT52bl9uZXh0ID0gKHNpemVvZiAoRWxmX0V4dGVybmFsX1Zlcm5lZWQpCi0JCQkJKyBjYXV4ICogc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVybmF1eCkpOwotCi0JCV9iZmRfZWxmX3N3YXBfdmVybmVlZF9vdXQgKG91dHB1dF9iZmQsIHQsCi0JCQkJCSAgIChFbGZfRXh0ZXJuYWxfVmVybmVlZCAqKSBwKTsKLQkJcCArPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJuZWVkKTsKLQotCQlmb3IgKGEgPSB0LT52bl9hdXhwdHI7IGEgIT0gTlVMTDsgYSA9IGEtPnZuYV9uZXh0cHRyKQotCQkgIHsKLQkJICAgIGEtPnZuYV9oYXNoID0gYmZkX2VsZl9oYXNoIChhLT52bmFfbm9kZW5hbWUpOwotCQkgICAgaW5keCA9IF9iZmRfZWxmX3N0cnRhYl9hZGQgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyLAotCQkJCQkJYS0+dm5hX25vZGVuYW1lLCBGQUxTRSk7Ci0JCSAgICBpZiAoaW5keCA9PSAoYmZkX3NpemVfdHlwZSkgLTEpCi0JCSAgICAgIHJldHVybiBGQUxTRTsKLQkJICAgIGEtPnZuYV9uYW1lID0gaW5keDsKLQkJICAgIGlmIChhLT52bmFfbmV4dHB0ciA9PSBOVUxMKQotCQkgICAgICBhLT52bmFfbmV4dCA9IDA7Ci0JCSAgICBlbHNlCi0JCSAgICAgIGEtPnZuYV9uZXh0ID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVybmF1eCk7Ci0KLQkJICAgIF9iZmRfZWxmX3N3YXBfdmVybmF1eF9vdXQgKG91dHB1dF9iZmQsIGEsCi0JCQkJCSAgICAgICAoRWxmX0V4dGVybmFsX1Zlcm5hdXggKikgcCk7Ci0JCSAgICBwICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1Zlcm5hdXgpOwotCQkgIH0KLQkgICAgICB9Ci0KLQkgICAgaWYgKCEgZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9WRVJORUVELCAwKQotCQl8fCAhIGVsZl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgRFRfVkVSTkVFRE5VTSwgY3JlZnMpKQotCSAgICAgIHJldHVybiBGQUxTRTsKLQotCSAgICBlbGZfdGRhdGEgKG91dHB1dF9iZmQpLT5jdmVycmVmcyA9IGNyZWZzOwotCSAgfQotICAgICAgfQotCi0gICAgICAvKiBBc3NpZ24gZHluc3ltIGluZGljaWVzLiAgSW4gYSBzaGFyZWQgbGlicmFyeSB3ZSBnZW5lcmF0ZSBhCi0JIHNlY3Rpb24gc3ltYm9sIGZvciBlYWNoIG91dHB1dCBzZWN0aW9uLCB3aGljaCBjb21lIGZpcnN0LgotCSBOZXh0IGNvbWUgYWxsIG9mIHRoZSBiYWNrLWVuZCBhbGxvY2F0ZWQgbG9jYWwgZHluYW1pYyBzeW1zLAotCSBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZiB0aGUgZ2xvYmFsIHN5bWJvbHMuICAqLwotCi0gICAgICBkeW5zeW1jb3VudCA9IF9iZmRfZWxmX2xpbmtfcmVudW1iZXJfZHluc3ltcyAob3V0cHV0X2JmZCwgaW5mbyk7Ci0KLSAgICAgIC8qIFdvcmsgb3V0IHRoZSBzaXplIG9mIHRoZSBzeW1ib2wgdmVyc2lvbiBzZWN0aW9uLiAgKi8KLSAgICAgIHMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoZHlub2JqLCAiLmdudS52ZXJzaW9uIik7Ci0gICAgICBCRkRfQVNTRVJUIChzICE9IE5VTEwpOwotICAgICAgaWYgKGR5bnN5bWNvdW50ID09IDAKLQkgIHx8ICh2ZXJkZWZzID09IE5VTEwgJiYgZWxmX3RkYXRhIChvdXRwdXRfYmZkKS0+dmVycmVmID09IE5VTEwpKQotCXsKLQkgIF9iZmRfc3RyaXBfc2VjdGlvbl9mcm9tX291dHB1dCAoaW5mbywgcyk7Ci0JICAvKiBUaGUgRFlOU1lNQ09VTlQgbWlnaHQgaGF2ZSBjaGFuZ2VkIGlmIHdlIHdlcmUgZ29pbmcgdG8KLQkgICAgIG91dHB1dCBhIGR5bmFtaWMgc3ltYm9sIHRhYmxlIGVudHJ5IGZvciBTLiAgKi8KLQkgIGR5bnN5bWNvdW50ID0gX2JmZF9lbGZfbGlua19yZW51bWJlcl9keW5zeW1zIChvdXRwdXRfYmZkLCBpbmZvKTsKLQl9Ci0gICAgICBlbHNlCi0JewotCSAgcy0+X3Jhd19zaXplID0gZHluc3ltY291bnQgKiBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJzeW0pOwotCSAgcy0+Y29udGVudHMgPSBiZmRfemFsbG9jIChvdXRwdXRfYmZkLCBzLT5fcmF3X3NpemUpOwotCSAgaWYgKHMtPmNvbnRlbnRzID09IE5VTEwpCi0JICAgIHJldHVybiBGQUxTRTsKLQotCSAgaWYgKCEgZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBEVF9WRVJTWU0sIDApKQotCSAgICByZXR1cm4gRkFMU0U7Ci0JfQotCi0gICAgICAvKiBTZXQgdGhlIHNpemUgb2YgdGhlIC5keW5zeW0gYW5kIC5oYXNoIHNlY3Rpb25zLiAgV2UgY291bnRlZAotCSB0aGUgbnVtYmVyIG9mIGR5bmFtaWMgc3ltYm9scyBpbiBlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMuCi0JIFdlIHdpbGwgYnVpbGQgdGhlIGNvbnRlbnRzIG9mIC5keW5zeW0gYW5kIC5oYXNoIHdoZW4gd2UgYnVpbGQKLQkgdGhlIGZpbmFsIHN5bWJvbCB0YWJsZSwgYmVjYXVzZSB1bnRpbCB0aGVuIHdlIGRvIG5vdCBrbm93IHRoZQotCSBjb3JyZWN0IHZhbHVlIHRvIGdpdmUgdGhlIHN5bWJvbHMuICBXZSBidWlsdCB0aGUgLmR5bnN0cgotCSBzZWN0aW9uIGFzIHdlIHdlbnQgYWxvbmcgaW4gZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzLiAgKi8KLSAgICAgIHMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoZHlub2JqLCAiLmR5bnN5bSIpOwotICAgICAgQkZEX0FTU0VSVCAocyAhPSBOVUxMKTsKLSAgICAgIHMtPl9yYXdfc2l6ZSA9IGR5bnN5bWNvdW50ICogc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltKTsKLSAgICAgIHMtPmNvbnRlbnRzID0gYmZkX2FsbG9jIChvdXRwdXRfYmZkLCBzLT5fcmF3X3NpemUpOwotICAgICAgaWYgKHMtPmNvbnRlbnRzID09IE5VTEwgJiYgcy0+X3Jhd19zaXplICE9IDApCi0JcmV0dXJuIEZBTFNFOwotCi0gICAgICBpZiAoZHluc3ltY291bnQgIT0gMCkKLQl7Ci0JICBFbGZfSW50ZXJuYWxfU3ltIGlzeW07Ci0KLQkgIC8qIFRoZSBmaXJzdCBlbnRyeSBpbiAuZHluc3ltIGlzIGEgZHVtbXkgc3ltYm9sLiAgKi8KLQkgIGlzeW0uc3RfdmFsdWUgPSAwOwotCSAgaXN5bS5zdF9zaXplID0gMDsKLQkgIGlzeW0uc3RfbmFtZSA9IDA7Ci0JICBpc3ltLnN0X2luZm8gPSAwOwotCSAgaXN5bS5zdF9vdGhlciA9IDA7Ci0JICBpc3ltLnN0X3NobmR4ID0gMDsKLQkgIGVsZl9zd2FwX3N5bWJvbF9vdXQgKG91dHB1dF9iZmQsICZpc3ltLCBzLT5jb250ZW50cywgMCk7Ci0JfQotCi0gICAgICAvKiBDb21wdXRlIHRoZSBzaXplIG9mIHRoZSBoYXNoaW5nIHRhYmxlLiAgQXMgYSBzaWRlIGVmZmVjdCB0aGlzCi0JIGNvbXB1dGVzIHRoZSBoYXNoIHZhbHVlcyBmb3IgYWxsIHRoZSBuYW1lcyB3ZSBleHBvcnQuICAqLwotICAgICAgYnVja2V0Y291bnQgPSBjb21wdXRlX2J1Y2tldF9jb3VudCAoaW5mbyk7Ci0KLSAgICAgIHMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoZHlub2JqLCAiLmhhc2giKTsKLSAgICAgIEJGRF9BU1NFUlQgKHMgIT0gTlVMTCk7Ci0gICAgICBoYXNoX2VudHJ5X3NpemUgPSBlbGZfc2VjdGlvbl9kYXRhIChzKS0+dGhpc19oZHIuc2hfZW50c2l6ZTsKLSAgICAgIHMtPl9yYXdfc2l6ZSA9ICgoMiArIGJ1Y2tldGNvdW50ICsgZHluc3ltY291bnQpICogaGFzaF9lbnRyeV9zaXplKTsKLSAgICAgIHMtPmNvbnRlbnRzID0gYmZkX3phbGxvYyAob3V0cHV0X2JmZCwgcy0+X3Jhd19zaXplKTsKLSAgICAgIGlmIChzLT5jb250ZW50cyA9PSBOVUxMKQotCXJldHVybiBGQUxTRTsKLQotICAgICAgYmZkX3B1dCAoOCAqIGhhc2hfZW50cnlfc2l6ZSwgb3V0cHV0X2JmZCwgYnVja2V0Y291bnQsIHMtPmNvbnRlbnRzKTsKLSAgICAgIGJmZF9wdXQgKDggKiBoYXNoX2VudHJ5X3NpemUsIG91dHB1dF9iZmQsIGR5bnN5bWNvdW50LAotCSAgICAgICBzLT5jb250ZW50cyArIGhhc2hfZW50cnlfc2l6ZSk7Ci0KLSAgICAgIGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+YnVja2V0Y291bnQgPSBidWNrZXRjb3VudDsKLQotICAgICAgcyA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChkeW5vYmosICIuZHluc3RyIik7Ci0gICAgICBCRkRfQVNTRVJUIChzICE9IE5VTEwpOwotCi0gICAgICBlbGZfZmluYWxpemVfZHluc3RyIChvdXRwdXRfYmZkLCBpbmZvKTsKLQotICAgICAgcy0+X3Jhd19zaXplID0gX2JmZF9lbGZfc3RydGFiX3NpemUgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3RyKTsKLQotICAgICAgZm9yIChkdGFnY291bnQgPSAwOyBkdGFnY291bnQgPD0gaW5mby0+c3BhcmVfZHluYW1pY190YWdzOyArK2R0YWdjb3VudCkKLQlpZiAoISBlbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIERUX05VTEwsIDApKQotCSAgcmV0dXJuIEZBTFNFOwotICAgIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQwKLS8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBhZGp1c3Qgb2Zmc2V0cyBpbnRvIC5keW5zdHIgZm9yCi0gICBkeW5hbWljIHN5bWJvbHMuICBUaGlzIGlzIGNhbGxlZCB2aWEgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZS4gICovCi0KLXN0YXRpYyBiZmRfYm9vbGVhbgotZWxmX2FkanVzdF9keW5zdHJfb2Zmc2V0cyAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgsIHZvaWQgKmRhdGEpCi17Ci0gIHN0cnVjdCBlbGZfc3RydGFiX2hhc2ggKmR5bnN0ciA9IGRhdGE7Ci0KLSAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0gICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOwotCi0gIGlmIChoLT5keW5pbmR4ICE9IC0xKQotICAgIGgtPmR5bnN0cl9pbmRleCA9IF9iZmRfZWxmX3N0cnRhYl9vZmZzZXQgKGR5bnN0ciwgaC0+ZHluc3RyX2luZGV4KTsKLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLS8qIEFzc2lnbiBzdHJpbmcgb2Zmc2V0cyBpbiAuZHluc3RyLCB1cGRhdGUgYWxsIHN0cnVjdHVyZXMgcmVmZXJlbmNpbmcKLSAgIHRoZW0uICAqLwotCi1zdGF0aWMgYmZkX2Jvb2xlYW4KLWVsZl9maW5hbGl6ZV9keW5zdHIgKGJmZCAqb3V0cHV0X2JmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCi17Ci0gIHN0cnVjdCBlbGZfbGlua19sb2NhbF9keW5hbWljX2VudHJ5ICplbnRyeTsKLSAgc3RydWN0IGVsZl9zdHJ0YWJfaGFzaCAqZHluc3RyID0gZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5zdHI7Ci0gIGJmZCAqZHlub2JqID0gZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5vYmo7Ci0gIGFzZWN0aW9uICpzZHluOwotICBiZmRfc2l6ZV90eXBlIHNpemU7Ci0gIEVsZl9FeHRlcm5hbF9EeW4gKmR5bmNvbiwgKmR5bmNvbmVuZDsKLQotICBfYmZkX2VsZl9zdHJ0YWJfZmluYWxpemUgKGR5bnN0cik7Ci0gIHNpemUgPSBfYmZkX2VsZl9zdHJ0YWJfc2l6ZSAoZHluc3RyKTsKLQotICAvKiBVcGRhdGUgYWxsIC5keW5hbWljIGVudHJpZXMgcmVmZXJlbmNpbmcgLmR5bnN0ciBzdHJpbmdzLiAgKi8KLSAgc2R5biA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChkeW5vYmosICIuZHluYW1pYyIpOwotICBCRkRfQVNTRVJUIChzZHluICE9IE5VTEwpOwotCi0gIGR5bmNvbiA9IChFbGZfRXh0ZXJuYWxfRHluICopIHNkeW4tPmNvbnRlbnRzOwotICBkeW5jb25lbmQgPSAoRWxmX0V4dGVybmFsX0R5biAqKSAoc2R5bi0+Y29udGVudHMgKwotCQkJCSAgICBzZHluLT5fcmF3X3NpemUpOwotICBmb3IgKDsgZHluY29uIDwgZHluY29uZW5kOyBkeW5jb24rKykKLSAgICB7Ci0gICAgICBFbGZfSW50ZXJuYWxfRHluIGR5bjsKLQotICAgICAgZWxmX3N3YXBfZHluX2luIChkeW5vYmosIGR5bmNvbiwgJiBkeW4pOwotICAgICAgc3dpdGNoIChkeW4uZF90YWcpCi0JewotCWNhc2UgRFRfU1RSU1o6Ci0JICBkeW4uZF91bi5kX3ZhbCA9IHNpemU7Ci0JICBlbGZfc3dhcF9keW5fb3V0IChkeW5vYmosICYgZHluLCBkeW5jb24pOwotCSAgYnJlYWs7Ci0JY2FzZSBEVF9ORUVERUQ6Ci0JY2FzZSBEVF9TT05BTUU6Ci0JY2FzZSBEVF9SUEFUSDoKLQljYXNlIERUX1JVTlBBVEg6Ci0JY2FzZSBEVF9GSUxURVI6Ci0JY2FzZSBEVF9BVVhJTElBUlk6Ci0JICBkeW4uZF91bi5kX3ZhbCA9IF9iZmRfZWxmX3N0cnRhYl9vZmZzZXQgKGR5bnN0ciwgZHluLmRfdW4uZF92YWwpOwotCSAgZWxmX3N3YXBfZHluX291dCAoZHlub2JqLCAmIGR5biwgZHluY29uKTsKLQkgIGJyZWFrOwotCWRlZmF1bHQ6Ci0JICBicmVhazsKLQl9Ci0gICAgfQotCi0gIC8qIE5vdyB1cGRhdGUgbG9jYWwgZHluYW1pYyBzeW1ib2xzLiAgKi8KLSAgZm9yIChlbnRyeSA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHlubG9jYWw7IGVudHJ5IDsgZW50cnkgPSBlbnRyeS0+bmV4dCkKLSAgICBlbnRyeS0+aXN5bS5zdF9uYW1lID0gX2JmZF9lbGZfc3RydGFiX29mZnNldCAoZHluc3RyLAotCQkJCQkJICBlbnRyeS0+aXN5bS5zdF9uYW1lKTsKLQotICAvKiBBbmQgdGhlIHJlc3Qgb2YgZHluYW1pYyBzeW1ib2xzLiAgKi8KLSAgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZSAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAotCQkJICBlbGZfYWRqdXN0X2R5bnN0cl9vZmZzZXRzLCBkeW5zdHIpOwotCi0gIC8qIEFkanVzdCB2ZXJzaW9uIGRlZmluaXRpb25zLiAgKi8KLSAgaWYgKGVsZl90ZGF0YSAob3V0cHV0X2JmZCktPmN2ZXJkZWZzKQotICAgIHsKLSAgICAgIGFzZWN0aW9uICpzOwotICAgICAgYmZkX2J5dGUgKnA7Ci0gICAgICBiZmRfc2l6ZV90eXBlIGk7Ci0gICAgICBFbGZfSW50ZXJuYWxfVmVyZGVmIGRlZjsKLSAgICAgIEVsZl9JbnRlcm5hbF9WZXJkYXV4IGRlZmF1eDsKLQotICAgICAgcyA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChkeW5vYmosICIuZ251LnZlcnNpb25fZCIpOwotICAgICAgcCA9IChiZmRfYnl0ZSAqKSBzLT5jb250ZW50czsKLSAgICAgIGRvCi0JewotCSAgX2JmZF9lbGZfc3dhcF92ZXJkZWZfaW4gKG91dHB1dF9iZmQsIChFbGZfRXh0ZXJuYWxfVmVyZGVmICopIHAsCi0JCQkJICAgJmRlZik7Ci0JICBwICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRlZik7Ci0JICBmb3IgKGkgPSAwOyBpIDwgZGVmLnZkX2NudDsgKytpKQotCSAgICB7Ci0JICAgICAgX2JmZF9lbGZfc3dhcF92ZXJkYXV4X2luIChvdXRwdXRfYmZkLAotCQkJCQkoRWxmX0V4dGVybmFsX1ZlcmRhdXggKikgcCwgJmRlZmF1eCk7Ci0JICAgICAgZGVmYXV4LnZkYV9uYW1lID0gX2JmZF9lbGZfc3RydGFiX29mZnNldCAoZHluc3RyLAotCQkJCQkJCWRlZmF1eC52ZGFfbmFtZSk7Ci0JICAgICAgX2JmZF9lbGZfc3dhcF92ZXJkYXV4X291dCAob3V0cHV0X2JmZCwKLQkJCQkJICZkZWZhdXgsIChFbGZfRXh0ZXJuYWxfVmVyZGF1eCAqKSBwKTsKLQkgICAgICBwICs9IHNpemVvZiAoRWxmX0V4dGVybmFsX1ZlcmRhdXgpOwotCSAgICB9Ci0JfQotICAgICAgd2hpbGUgKGRlZi52ZF9uZXh0KTsKLSAgICB9Ci0KLSAgLyogQWRqdXN0IHZlcnNpb24gcmVmZXJlbmNlcy4gICovCi0gIGlmIChlbGZfdGRhdGEgKG91dHB1dF9iZmQpLT52ZXJyZWYpCi0gICAgewotICAgICAgYXNlY3Rpb24gKnM7Ci0gICAgICBiZmRfYnl0ZSAqcDsKLSAgICAgIGJmZF9zaXplX3R5cGUgaTsKLSAgICAgIEVsZl9JbnRlcm5hbF9WZXJuZWVkIG5lZWQ7Ci0gICAgICBFbGZfSW50ZXJuYWxfVmVybmF1eCBuZWVkYXV4OwotCi0gICAgICBzID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5nbnUudmVyc2lvbl9yIik7Ci0gICAgICBwID0gKGJmZF9ieXRlICopIHMtPmNvbnRlbnRzOwotICAgICAgZG8KLQl7Ci0JICBfYmZkX2VsZl9zd2FwX3Zlcm5lZWRfaW4gKG91dHB1dF9iZmQsIChFbGZfRXh0ZXJuYWxfVmVybmVlZCAqKSBwLAotCQkJCSAgICAmbmVlZCk7Ci0JICBuZWVkLnZuX2ZpbGUgPSBfYmZkX2VsZl9zdHJ0YWJfb2Zmc2V0IChkeW5zdHIsIG5lZWQudm5fZmlsZSk7Ci0JICBfYmZkX2VsZl9zd2FwX3Zlcm5lZWRfb3V0IChvdXRwdXRfYmZkLCAmbmVlZCwKLQkJCQkgICAgIChFbGZfRXh0ZXJuYWxfVmVybmVlZCAqKSBwKTsKLQkgIHAgKz0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfVmVybmVlZCk7Ci0JICBmb3IgKGkgPSAwOyBpIDwgbmVlZC52bl9jbnQ7ICsraSkKLQkgICAgewotCSAgICAgIF9iZmRfZWxmX3N3YXBfdmVybmF1eF9pbiAob3V0cHV0X2JmZCwKLQkJCQkJKEVsZl9FeHRlcm5hbF9WZXJuYXV4ICopIHAsICZuZWVkYXV4KTsKLQkgICAgICBuZWVkYXV4LnZuYV9uYW1lID0gX2JmZF9lbGZfc3RydGFiX29mZnNldCAoZHluc3RyLAotCQkJCQkJCSBuZWVkYXV4LnZuYV9uYW1lKTsKLQkgICAgICBfYmZkX2VsZl9zd2FwX3Zlcm5hdXhfb3V0IChvdXRwdXRfYmZkLAotCQkJCQkgJm5lZWRhdXgsCi0JCQkJCSAoRWxmX0V4dGVybmFsX1Zlcm5hdXggKikgcCk7Ci0JICAgICAgcCArPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9WZXJuYXV4KTsKLQkgICAgfQotCX0KLSAgICAgIHdoaWxlIChuZWVkLnZuX25leHQpOwotICAgIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQwKLS8qIEZpbmFsIHBoYXNlIG9mIEVMRiBsaW5rZXIuICAqLwotCi0vKiBBIHN0cnVjdHVyZSB3ZSB1c2UgdG8gYXZvaWQgcGFzc2luZyBsYXJnZSBudW1iZXJzIG9mIGFyZ3VtZW50cy4gICovCi0KLXN0cnVjdCBlbGZfZmluYWxfbGlua19pbmZvCi17Ci0gIC8qIEdlbmVyYWwgbGluayBpbmZvcm1hdGlvbi4gICovCi0gIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvOwotICAvKiBPdXRwdXQgQkZELiAgKi8KLSAgYmZkICpvdXRwdXRfYmZkOwotICAvKiBTeW1ib2wgc3RyaW5nIHRhYmxlLiAgKi8KLSAgc3RydWN0IGJmZF9zdHJ0YWJfaGFzaCAqc3ltc3RydGFiOwotICAvKiAuZHluc3ltIHNlY3Rpb24uICAqLwotICBhc2VjdGlvbiAqZHluc3ltX3NlYzsKLSAgLyogLmhhc2ggc2VjdGlvbi4gICovCi0gIGFzZWN0aW9uICpoYXNoX3NlYzsKLSAgLyogc3ltYm9sIHZlcnNpb24gc2VjdGlvbiAoLmdudS52ZXJzaW9uKS4gICovCi0gIGFzZWN0aW9uICpzeW12ZXJfc2VjOwotICAvKiBCdWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgY29udGVudHMgb2YgYW55IHNlY3Rpb24uICAqLwotICBiZmRfYnl0ZSAqY29udGVudHM7Ci0gIC8qIEJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8gaG9sZCBleHRlcm5hbCByZWxvY3Mgb2YgYW55IHNlY3Rpb24uICAqLwotICB2b2lkICpleHRlcm5hbF9yZWxvY3M7Ci0gIC8qIEJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8gaG9sZCBpbnRlcm5hbCByZWxvY3Mgb2YgYW55IHNlY3Rpb24uICAqLwotICBFbGZfSW50ZXJuYWxfUmVsYSAqaW50ZXJuYWxfcmVsb2NzOwotICAvKiBCdWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgZXh0ZXJuYWwgbG9jYWwgc3ltYm9scyBvZiBhbnkgaW5wdXQKLSAgICAgQkZELiAgKi8KLSAgRWxmX0V4dGVybmFsX1N5bSAqZXh0ZXJuYWxfc3ltczsKLSAgLyogQW5kIGEgYnVmZmVyIGZvciBzeW1ib2wgc2VjdGlvbiBpbmRpY2VzLiAgKi8KLSAgRWxmX0V4dGVybmFsX1N5bV9TaG5keCAqbG9jc3ltX3NobmR4OwotICAvKiBCdWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgaW50ZXJuYWwgbG9jYWwgc3ltYm9scyBvZiBhbnkgaW5wdXQKLSAgICAgQkZELiAgKi8KLSAgRWxmX0ludGVybmFsX1N5bSAqaW50ZXJuYWxfc3ltczsKLSAgLyogQXJyYXkgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSBzeW1ib2wgaW5kZXggZm9yIGVhY2ggbG9jYWwgc3ltYm9sCi0gICAgIG9mIGFueSBpbnB1dCBCRkQuICAqLwotICBsb25nICppbmRpY2VzOwotICAvKiBBcnJheSBsYXJnZSBlbm91Z2ggdG8gaG9sZCBhIHNlY3Rpb24gcG9pbnRlciBmb3IgZWFjaCBsb2NhbAotICAgICBzeW1ib2wgb2YgYW55IGlucHV0IEJGRC4gICovCi0gIGFzZWN0aW9uICoqc2VjdGlvbnM7Ci0gIC8qIEJ1ZmZlciB0byBob2xkIHN3YXBwZWQgb3V0IHN5bWJvbHMuICAqLwotICBFbGZfRXh0ZXJuYWxfU3ltICpzeW1idWY7Ci0gIC8qIEFuZCBvbmUgZm9yIHN5bWJvbCBzZWN0aW9uIGluZGljZXMuICAqLwotICBFbGZfRXh0ZXJuYWxfU3ltX1NobmR4ICpzeW1zaG5keGJ1ZjsKLSAgLyogTnVtYmVyIG9mIHN3YXBwZWQgb3V0IHN5bWJvbHMgaW4gYnVmZmVyLiAgKi8KLSAgc2l6ZV90IHN5bWJ1Zl9jb3VudDsKLSAgLyogTnVtYmVyIG9mIHN5bWJvbHMgd2hpY2ggZml0IGluIHN5bWJ1Zi4gICovCi0gIHNpemVfdCBzeW1idWZfc2l6ZTsKLSAgLyogQW5kIHNhbWUgZm9yIHN5bXNobmR4YnVmLiAgKi8KLSAgc2l6ZV90IHNobmR4YnVmX3NpemU7Ci19OwotCi1zdGF0aWMgYmZkX2Jvb2xlYW4gZWxmX2xpbmtfb3V0cHV0X3N5bQotICAoc3RydWN0IGVsZl9maW5hbF9saW5rX2luZm8gKiwgY29uc3QgY2hhciAqLCBFbGZfSW50ZXJuYWxfU3ltICosIGFzZWN0aW9uICosCi0gICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKTsKLXN0YXRpYyBiZmRfYm9vbGVhbiBlbGZfbGlua19mbHVzaF9vdXRwdXRfc3ltcwotICAoc3RydWN0IGVsZl9maW5hbF9saW5rX2luZm8gKik7Ci1zdGF0aWMgYmZkX2Jvb2xlYW4gZWxmX2xpbmtfb3V0cHV0X2V4dHN5bQotICAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKiwgdm9pZCAqKTsKLXN0YXRpYyBiZmRfYm9vbGVhbiBlbGZfbGlua19pbnB1dF9iZmQKLSAgKHN0cnVjdCBlbGZfZmluYWxfbGlua19pbmZvICosIGJmZCAqKTsKLXN0YXRpYyBiZmRfYm9vbGVhbiBlbGZfcmVsb2NfbGlua19vcmRlcgotICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGFzZWN0aW9uICosIHN0cnVjdCBiZmRfbGlua19vcmRlciAqKTsKLQotLyogVGhpcyBzdHJ1Y3QgaXMgdXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRvIGVsZl9saW5rX291dHB1dF9leHRzeW0uICAqLwotCi1zdHJ1Y3QgZWxmX291dGV4dF9pbmZvCi17Ci0gIGJmZF9ib29sZWFuIGZhaWxlZDsKLSAgYmZkX2Jvb2xlYW4gbG9jYWxzeW1zOwotICBzdHJ1Y3QgZWxmX2ZpbmFsX2xpbmtfaW5mbyAqZmluZm87Ci19OwotCi0vKiBXaGVuIHBlcmZvcm1pbmcgYSByZWxvY2F0YWJsZSBsaW5rLCB0aGUgaW5wdXQgcmVsb2NhdGlvbnMgYXJlCi0gICBwcmVzZXJ2ZWQuICBCdXQsIGlmIHRoZXkgcmVmZXJlbmNlIGdsb2JhbCBzeW1ib2xzLCB0aGUgaW5kaWNlcwotICAgcmVmZXJlbmNlZCBtdXN0IGJlIHVwZGF0ZWQuICBVcGRhdGUgYWxsIHRoZSByZWxvY2F0aW9ucyBpbgotICAgUkVMX0hEUiAodGhlcmUgYXJlIENPVU5UIG9mIHRoZW0pLCB1c2luZyB0aGUgZGF0YSBpbiBSRUxfSEFTSC4gICovCi0KLXN0YXRpYyB2b2lkCi1lbGZfbGlua19hZGp1c3RfcmVsb2NzIChiZmQgKmFiZmQsCi0JCQlFbGZfSW50ZXJuYWxfU2hkciAqcmVsX2hkciwKLQkJCXVuc2lnbmVkIGludCBjb3VudCwKLQkJCXN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqcmVsX2hhc2gpCi17Ci0gIHVuc2lnbmVkIGludCBpOwotICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOwotICBiZmRfYnl0ZSAqZXJlbGE7Ci0gIHZvaWQgKCpzd2FwX2luKSAoYmZkICosIGNvbnN0IGJmZF9ieXRlICosIEVsZl9JbnRlcm5hbF9SZWxhICopOwotICB2b2lkICgqc3dhcF9vdXQpIChiZmQgKiwgY29uc3QgRWxmX0ludGVybmFsX1JlbGEgKiwgYmZkX2J5dGUgKik7Ci0KLSAgaWYgKHJlbF9oZHItPnNoX2VudHNpemUgPT0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfUmVsKSkKLSAgICB7Ci0gICAgICBzd2FwX2luID0gYmVkLT5zLT5zd2FwX3JlbG9jX2luOwotICAgICAgc3dhcF9vdXQgPSBiZWQtPnMtPnN3YXBfcmVsb2Nfb3V0OwotICAgIH0KLSAgZWxzZSBpZiAocmVsX2hkci0+c2hfZW50c2l6ZSA9PSBzaXplb2YgKEVsZl9FeHRlcm5hbF9SZWxhKSkKLSAgICB7Ci0gICAgICBzd2FwX2luID0gYmVkLT5zLT5zd2FwX3JlbG9jYV9pbjsKLSAgICAgIHN3YXBfb3V0ID0gYmVkLT5zLT5zd2FwX3JlbG9jYV9vdXQ7Ci0gICAgfQotICBlbHNlCi0gICAgYWJvcnQgKCk7Ci0KLSAgaWYgKGJlZC0+cy0+aW50X3JlbHNfcGVyX2V4dF9yZWwgPiBNQVhfSU5UX1JFTFNfUEVSX0VYVF9SRUwpCi0gICAgYWJvcnQgKCk7Ci0KLSAgZXJlbGEgPSByZWxfaGRyLT5jb250ZW50czsKLSAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyssIHJlbF9oYXNoKyssIGVyZWxhICs9IHJlbF9oZHItPnNoX2VudHNpemUpCi0gICAgewotICAgICAgRWxmX0ludGVybmFsX1JlbGEgaXJlbGFbTUFYX0lOVF9SRUxTX1BFUl9FWFRfUkVMXTsKLSAgICAgIHVuc2lnbmVkIGludCBqOwotCi0gICAgICBpZiAoKnJlbF9oYXNoID09IE5VTEwpCi0JY29udGludWU7Ci0KLSAgICAgIEJGRF9BU1NFUlQgKCgqcmVsX2hhc2gpLT5pbmR4ID49IDApOwotCi0gICAgICAoKnN3YXBfaW4pIChhYmZkLCBlcmVsYSwgaXJlbGEpOwotICAgICAgZm9yIChqID0gMDsgaiA8IGJlZC0+cy0+aW50X3JlbHNfcGVyX2V4dF9yZWw7IGorKykKLQlpcmVsYVtqXS5yX2luZm8gPSBFTEZfUl9JTkZPICgoKnJlbF9oYXNoKS0+aW5keCwKLQkJCQkgICAgICBFTEZfUl9UWVBFIChpcmVsYVtqXS5yX2luZm8pKTsKLSAgICAgICgqc3dhcF9vdXQpIChhYmZkLCBpcmVsYSwgZXJlbGEpOwotICAgIH0KLX0KLQotc3RydWN0IGVsZl9saW5rX3NvcnRfcmVsYQotewotICBiZmRfdm1hIG9mZnNldDsKLSAgZW51bSBlbGZfcmVsb2NfdHlwZV9jbGFzcyB0eXBlOwotICAvKiBXZSB1c2UgdGhpcyBhcyBhbiBhcnJheSBvZiBzaXplIGludF9yZWxzX3Blcl9leHRfcmVsLiAgKi8KLSAgRWxmX0ludGVybmFsX1JlbGEgcmVsYVsxXTsKLX07Ci0KLXN0YXRpYyBpbnQKLWVsZl9saW5rX3NvcnRfY21wMSAoY29uc3Qgdm9pZCAqQSwgY29uc3Qgdm9pZCAqQikKLXsKLSAgY29uc3Qgc3RydWN0IGVsZl9saW5rX3NvcnRfcmVsYSAqYSA9IEE7Ci0gIGNvbnN0IHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKmIgPSBCOwotICBpbnQgcmVsYXRpdmVhLCByZWxhdGl2ZWI7Ci0KLSAgcmVsYXRpdmVhID0gYS0+dHlwZSA9PSByZWxvY19jbGFzc19yZWxhdGl2ZTsKLSAgcmVsYXRpdmViID0gYi0+dHlwZSA9PSByZWxvY19jbGFzc19yZWxhdGl2ZTsKLQotICBpZiAocmVsYXRpdmVhIDwgcmVsYXRpdmViKQotICAgIHJldHVybiAxOwotICBpZiAocmVsYXRpdmVhID4gcmVsYXRpdmViKQotICAgIHJldHVybiAtMTsKLSAgaWYgKEVMRl9SX1NZTSAoYS0+cmVsYS0+cl9pbmZvKSA8IEVMRl9SX1NZTSAoYi0+cmVsYS0+cl9pbmZvKSkKLSAgICByZXR1cm4gLTE7Ci0gIGlmIChFTEZfUl9TWU0gKGEtPnJlbGEtPnJfaW5mbykgPiBFTEZfUl9TWU0gKGItPnJlbGEtPnJfaW5mbykpCi0gICAgcmV0dXJuIDE7Ci0gIGlmIChhLT5yZWxhLT5yX29mZnNldCA8IGItPnJlbGEtPnJfb2Zmc2V0KQotICAgIHJldHVybiAtMTsKLSAgaWYgKGEtPnJlbGEtPnJfb2Zmc2V0ID4gYi0+cmVsYS0+cl9vZmZzZXQpCi0gICAgcmV0dXJuIDE7Ci0gIHJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci1lbGZfbGlua19zb3J0X2NtcDIgKGNvbnN0IHZvaWQgKkEsIGNvbnN0IHZvaWQgKkIpCi17Ci0gIGNvbnN0IHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKmEgPSBBOwotICBjb25zdCBzdHJ1Y3QgZWxmX2xpbmtfc29ydF9yZWxhICpiID0gQjsKLSAgaW50IGNvcHlhLCBjb3B5YjsKLQotICBpZiAoYS0+b2Zmc2V0IDwgYi0+b2Zmc2V0KQotICAgIHJldHVybiAtMTsKLSAgaWYgKGEtPm9mZnNldCA+IGItPm9mZnNldCkKLSAgICByZXR1cm4gMTsKLSAgY29weWEgPSAoYS0+dHlwZSA9PSByZWxvY19jbGFzc19jb3B5KSAqIDIgKyAoYS0+dHlwZSA9PSByZWxvY19jbGFzc19wbHQpOwotICBjb3B5YiA9IChiLT50eXBlID09IHJlbG9jX2NsYXNzX2NvcHkpICogMiArIChiLT50eXBlID09IHJlbG9jX2NsYXNzX3BsdCk7Ci0gIGlmIChjb3B5YSA8IGNvcHliKQotICAgIHJldHVybiAtMTsKLSAgaWYgKGNvcHlhID4gY29weWIpCi0gICAgcmV0dXJuIDE7Ci0gIGlmIChhLT5yZWxhLT5yX29mZnNldCA8IGItPnJlbGEtPnJfb2Zmc2V0KQotICAgIHJldHVybiAtMTsKLSAgaWYgKGEtPnJlbGEtPnJfb2Zmc2V0ID4gYi0+cmVsYS0+cl9vZmZzZXQpCi0gICAgcmV0dXJuIDE7Ci0gIHJldHVybiAwOwotfQotCi1zdGF0aWMgc2l6ZV90Ci1lbGZfbGlua19zb3J0X3JlbG9jcyAoYmZkICphYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywgYXNlY3Rpb24gKipwc2VjKQotewotICBhc2VjdGlvbiAqcmVsZHluOwotICBiZmRfc2l6ZV90eXBlIGNvdW50LCBzaXplOwotICBzaXplX3QgaSwgcmV0LCBzb3J0X2VsdCwgZXh0X3NpemU7Ci0gIGJmZF9ieXRlICpzb3J0LCAqc19ub25fcmVsYXRpdmUsICpwOwotICBzdHJ1Y3QgZWxmX2xpbmtfc29ydF9yZWxhICpzcTsKLSAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChhYmZkKTsKLSAgaW50IGkyZSA9IGJlZC0+cy0+aW50X3JlbHNfcGVyX2V4dF9yZWw7Ci0gIHZvaWQgKCpzd2FwX2luKSAoYmZkICosIGNvbnN0IGJmZF9ieXRlICosIEVsZl9JbnRlcm5hbF9SZWxhICopOwotICB2b2lkICgqc3dhcF9vdXQpIChiZmQgKiwgY29uc3QgRWxmX0ludGVybmFsX1JlbGEgKiwgYmZkX2J5dGUgKik7Ci0gIHN0cnVjdCBiZmRfbGlua19vcmRlciAqbG87Ci0KLSAgcmVsZHluID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsICIucmVsYS5keW4iKTsKLSAgaWYgKHJlbGR5biA9PSBOVUxMIHx8IHJlbGR5bi0+X3Jhd19zaXplID09IDApCi0gICAgewotICAgICAgcmVsZHluID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsICIucmVsLmR5biIpOwotICAgICAgaWYgKHJlbGR5biA9PSBOVUxMIHx8IHJlbGR5bi0+X3Jhd19zaXplID09IDApCi0JcmV0dXJuIDA7Ci0gICAgICBleHRfc2l6ZSA9IHNpemVvZiAoRWxmX0V4dGVybmFsX1JlbCk7Ci0gICAgICBzd2FwX2luID0gYmVkLT5zLT5zd2FwX3JlbG9jX2luOwotICAgICAgc3dhcF9vdXQgPSBiZWQtPnMtPnN3YXBfcmVsb2Nfb3V0OwotICAgIH0KLSAgZWxzZQotICAgIHsKLSAgICAgIGV4dF9zaXplID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfUmVsYSk7Ci0gICAgICBzd2FwX2luID0gYmVkLT5zLT5zd2FwX3JlbG9jYV9pbjsKLSAgICAgIHN3YXBfb3V0ID0gYmVkLT5zLT5zd2FwX3JlbG9jYV9vdXQ7Ci0gICAgfQotICBjb3VudCA9IHJlbGR5bi0+X3Jhd19zaXplIC8gZXh0X3NpemU7Ci0KLSAgc2l6ZSA9IDA7Ci0gIGZvciAobG8gPSByZWxkeW4tPmxpbmtfb3JkZXJfaGVhZDsgbG8gIT0gTlVMTDsgbG8gPSBsby0+bmV4dCkKLSAgICBpZiAobG8tPnR5cGUgPT0gYmZkX2luZGlyZWN0X2xpbmtfb3JkZXIpCi0gICAgICB7Ci0JYXNlY3Rpb24gKm8gPSBsby0+dS5pbmRpcmVjdC5zZWN0aW9uOwotCXNpemUgKz0gby0+X3Jhd19zaXplOwotICAgICAgfQotCi0gIGlmIChzaXplICE9IHJlbGR5bi0+X3Jhd19zaXplKQotICAgIHJldHVybiAwOwotCi0gIHNvcnRfZWx0ID0gKHNpemVvZiAoc3RydWN0IGVsZl9saW5rX3NvcnRfcmVsYSkKLQkgICAgICArIChpMmUgLSAxKSAqIHNpemVvZiAoRWxmX0ludGVybmFsX1JlbGEpKTsKLSAgc29ydCA9IGJmZF96bWFsbG9jIChzb3J0X2VsdCAqIGNvdW50KTsKLSAgaWYgKHNvcnQgPT0gTlVMTCkKLSAgICB7Ci0gICAgICAoKmluZm8tPmNhbGxiYWNrcy0+d2FybmluZykKLQkoaW5mbywgXygiTm90IGVub3VnaCBtZW1vcnkgdG8gc29ydCByZWxvY2F0aW9ucyIpLCAwLCBhYmZkLCAwLCAwKTsKLSAgICAgIHJldHVybiAwOwotICAgIH0KLQotICBmb3IgKGxvID0gcmVsZHluLT5saW5rX29yZGVyX2hlYWQ7IGxvICE9IE5VTEw7IGxvID0gbG8tPm5leHQpCi0gICAgaWYgKGxvLT50eXBlID09IGJmZF9pbmRpcmVjdF9saW5rX29yZGVyKQotICAgICAgewotCWJmZF9ieXRlICplcmVsLCAqZXJlbGVuZDsKLQlhc2VjdGlvbiAqbyA9IGxvLT51LmluZGlyZWN0LnNlY3Rpb247Ci0KLQllcmVsID0gby0+Y29udGVudHM7Ci0JZXJlbGVuZCA9IG8tPmNvbnRlbnRzICsgby0+X3Jhd19zaXplOwotCXAgPSBzb3J0ICsgby0+b3V0cHV0X29mZnNldCAvIGV4dF9zaXplICogc29ydF9lbHQ7Ci0Jd2hpbGUgKGVyZWwgPCBlcmVsZW5kKQotCSAgewotCSAgICBzdHJ1Y3QgZWxmX2xpbmtfc29ydF9yZWxhICpzID0gKHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKikgcDsKLQkgICAgKCpzd2FwX2luKSAoYWJmZCwgZXJlbCwgcy0+cmVsYSk7Ci0JICAgIHMtPnR5cGUgPSAoKmJlZC0+ZWxmX2JhY2tlbmRfcmVsb2NfdHlwZV9jbGFzcykgKHMtPnJlbGEpOwotCSAgICBwICs9IHNvcnRfZWx0OwotCSAgICBlcmVsICs9IGV4dF9zaXplOwotCSAgfQotICAgICAgfQotCi0gIHFzb3J0IChzb3J0LCBjb3VudCwgc29ydF9lbHQsIGVsZl9saW5rX3NvcnRfY21wMSk7Ci0KLSAgZm9yIChpID0gMCwgcCA9IHNvcnQ7IGkgPCBjb3VudDsgaSsrLCBwICs9IHNvcnRfZWx0KQotICAgIHsKLSAgICAgIHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKnMgPSAoc3RydWN0IGVsZl9saW5rX3NvcnRfcmVsYSAqKSBwOwotICAgICAgaWYgKHMtPnR5cGUgIT0gcmVsb2NfY2xhc3NfcmVsYXRpdmUpCi0JYnJlYWs7Ci0gICAgfQotICByZXQgPSBpOwotICBzX25vbl9yZWxhdGl2ZSA9IHA7Ci0KLSAgc3EgPSAoc3RydWN0IGVsZl9saW5rX3NvcnRfcmVsYSAqKSBzX25vbl9yZWxhdGl2ZTsKLSAgZm9yICg7IGkgPCBjb3VudDsgaSsrLCBwICs9IHNvcnRfZWx0KQotICAgIHsKLSAgICAgIHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKnNwID0gKHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKikgcDsKLSAgICAgIGlmIChFTEZfUl9TWU0gKHNwLT5yZWxhLT5yX2luZm8pICE9IEVMRl9SX1NZTSAoc3EtPnJlbGEtPnJfaW5mbykpCi0Jc3EgPSBzcDsKLSAgICAgIHNwLT5vZmZzZXQgPSBzcS0+cmVsYS0+cl9vZmZzZXQ7Ci0gICAgfQotCi0gIHFzb3J0IChzX25vbl9yZWxhdGl2ZSwgY291bnQgLSByZXQsIHNvcnRfZWx0LCBlbGZfbGlua19zb3J0X2NtcDIpOwotCi0gIGZvciAobG8gPSByZWxkeW4tPmxpbmtfb3JkZXJfaGVhZDsgbG8gIT0gTlVMTDsgbG8gPSBsby0+bmV4dCkKLSAgICBpZiAobG8tPnR5cGUgPT0gYmZkX2luZGlyZWN0X2xpbmtfb3JkZXIpCi0gICAgICB7Ci0JYmZkX2J5dGUgKmVyZWwsICplcmVsZW5kOwotCWFzZWN0aW9uICpvID0gbG8tPnUuaW5kaXJlY3Quc2VjdGlvbjsKLQotCWVyZWwgPSBvLT5jb250ZW50czsKLQllcmVsZW5kID0gby0+Y29udGVudHMgKyBvLT5fcmF3X3NpemU7Ci0JcCA9IHNvcnQgKyBvLT5vdXRwdXRfb2Zmc2V0IC8gZXh0X3NpemUgKiBzb3J0X2VsdDsKLQl3aGlsZSAoZXJlbCA8IGVyZWxlbmQpCi0JICB7Ci0JICAgIHN0cnVjdCBlbGZfbGlua19zb3J0X3JlbGEgKnMgPSAoc3RydWN0IGVsZl9saW5rX3NvcnRfcmVsYSAqKSBwOwotCSAgICAoKnN3YXBfb3V0KSAoYWJmZCwgcy0+cmVsYSwgZXJlbCk7Ci0JICAgIHAgKz0gc29ydF9lbHQ7Ci0JICAgIGVyZWwgKz0gZXh0X3NpemU7Ci0JICB9Ci0gICAgICB9Ci0KLSAgZnJlZSAoc29ydCk7Ci0gICpwc2VjID0gcmVsZHluOwotICByZXR1cm4gcmV0OwotfQotCi0vKiBEbyB0aGUgZmluYWwgc3RlcCBvZiBhbiBFTEYgbGluay4gICovCi0KLWJmZF9ib29sZWFuCi1lbGZfYmZkX2ZpbmFsX2xpbmsgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCi17Ci0gIGJmZF9ib29sZWFuIGR5bmFtaWM7Ci0gIGJmZF9ib29sZWFuIGVtaXRfcmVsb2NzOwotICBiZmQgKmR5bm9iajsKLSAgc3RydWN0IGVsZl9maW5hbF9saW5rX2luZm8gZmluZm87Ci0gIHJlZ2lzdGVyIGFzZWN0aW9uICpvOwotICByZWdpc3RlciBzdHJ1Y3QgYmZkX2xpbmtfb3JkZXIgKnA7Ci0gIHJlZ2lzdGVyIGJmZCAqc3ViOwotICBiZmRfc2l6ZV90eXBlIG1heF9jb250ZW50c19zaXplOwotICBiZmRfc2l6ZV90eXBlIG1heF9leHRlcm5hbF9yZWxvY19zaXplOwotICBiZmRfc2l6ZV90eXBlIG1heF9pbnRlcm5hbF9yZWxvY19jb3VudDsKLSAgYmZkX3NpemVfdHlwZSBtYXhfc3ltX2NvdW50OwotICBiZmRfc2l6ZV90eXBlIG1heF9zeW1fc2huZHhfY291bnQ7Ci0gIGZpbGVfcHRyIG9mZjsKLSAgRWxmX0ludGVybmFsX1N5bSBlbGZzeW07Ci0gIHVuc2lnbmVkIGludCBpOwotICBFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFiX2hkcjsKLSAgRWxmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9zaG5keF9oZHI7Ci0gIEVsZl9JbnRlcm5hbF9TaGRyICpzeW1zdHJ0YWJfaGRyOwotICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOwotICBzdHJ1Y3QgZWxmX291dGV4dF9pbmZvIGVvaW5mbzsKLSAgYmZkX2Jvb2xlYW4gbWVyZ2VkOwotICBzaXplX3QgcmVsYXRpdmVjb3VudCA9IDA7Ci0gIGFzZWN0aW9uICpyZWxkeW4gPSAwOwotICBiZmRfc2l6ZV90eXBlIGFtdDsKLQotICBpZiAoISBpc19lbGZfaGFzaF90YWJsZSAoaW5mby0+aGFzaCkpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGlmIChpbmZvLT5zaGFyZWQpCi0gICAgYWJmZC0+ZmxhZ3MgfD0gRFlOQU1JQzsKLQotICBkeW5hbWljID0gZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQ7Ci0gIGR5bm9iaiA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHlub2JqOwotCi0gIGVtaXRfcmVsb2NzID0gKGluZm8tPnJlbG9jYXRhYmxlCi0JCSB8fCBpbmZvLT5lbWl0cmVsb2NhdGlvbnMKLQkJIHx8IGJlZC0+ZWxmX2JhY2tlbmRfZW1pdF9yZWxvY3MpOwotCi0gIGZpbmZvLmluZm8gPSBpbmZvOwotICBmaW5mby5vdXRwdXRfYmZkID0gYWJmZDsKLSAgZmluZm8uc3ltc3RydGFiID0gZWxmX3N0cmluZ3RhYl9pbml0ICgpOwotICBpZiAoZmluZm8uc3ltc3RydGFiID09IE5VTEwpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGlmICghIGR5bmFtaWMpCi0gICAgewotICAgICAgZmluZm8uZHluc3ltX3NlYyA9IE5VTEw7Ci0gICAgICBmaW5mby5oYXNoX3NlYyA9IE5VTEw7Ci0gICAgICBmaW5mby5zeW12ZXJfc2VjID0gTlVMTDsKLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBmaW5mby5keW5zeW1fc2VjID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5keW5zeW0iKTsKLSAgICAgIGZpbmZvLmhhc2hfc2VjID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5oYXNoIik7Ci0gICAgICBCRkRfQVNTRVJUIChmaW5mby5keW5zeW1fc2VjICE9IE5VTEwgJiYgZmluZm8uaGFzaF9zZWMgIT0gTlVMTCk7Ci0gICAgICBmaW5mby5zeW12ZXJfc2VjID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5nbnUudmVyc2lvbiIpOwotICAgICAgLyogTm90ZSB0aGF0IGl0IGlzIE9LIGlmIHN5bXZlcl9zZWMgaXMgTlVMTC4gICovCi0gICAgfQotCi0gIGZpbmZvLmNvbnRlbnRzID0gTlVMTDsKLSAgZmluZm8uZXh0ZXJuYWxfcmVsb2NzID0gTlVMTDsKLSAgZmluZm8uaW50ZXJuYWxfcmVsb2NzID0gTlVMTDsKLSAgZmluZm8uZXh0ZXJuYWxfc3ltcyA9IE5VTEw7Ci0gIGZpbmZvLmxvY3N5bV9zaG5keCA9IE5VTEw7Ci0gIGZpbmZvLmludGVybmFsX3N5bXMgPSBOVUxMOwotICBmaW5mby5pbmRpY2VzID0gTlVMTDsKLSAgZmluZm8uc2VjdGlvbnMgPSBOVUxMOwotICBmaW5mby5zeW1idWYgPSBOVUxMOwotICBmaW5mby5zeW1zaG5keGJ1ZiA9IE5VTEw7Ci0gIGZpbmZvLnN5bWJ1Zl9jb3VudCA9IDA7Ci0gIGZpbmZvLnNobmR4YnVmX3NpemUgPSAwOwotCi0gIC8qIENvdW50IHVwIHRoZSBudW1iZXIgb2YgcmVsb2NhdGlvbnMgd2Ugd2lsbCBvdXRwdXQgZm9yIGVhY2ggb3V0cHV0Ci0gICAgIHNlY3Rpb24sIHNvIHRoYXQgd2Uga25vdyB0aGUgc2l6ZXMgb2YgdGhlIHJlbG9jIHNlY3Rpb25zLiAgV2UKLSAgICAgYWxzbyBmaWd1cmUgb3V0IHNvbWUgbWF4aW11bSBzaXplcy4gICovCi0gIG1heF9jb250ZW50c19zaXplID0gMDsKLSAgbWF4X2V4dGVybmFsX3JlbG9jX3NpemUgPSAwOwotICBtYXhfaW50ZXJuYWxfcmVsb2NfY291bnQgPSAwOwotICBtYXhfc3ltX2NvdW50ID0gMDsKLSAgbWF4X3N5bV9zaG5keF9jb3VudCA9IDA7Ci0gIG1lcmdlZCA9IEZBTFNFOwotICBmb3IgKG8gPSBhYmZkLT5zZWN0aW9uczsgbyAhPSBOVUxMOyBvID0gby0+bmV4dCkKLSAgICB7Ci0gICAgICBzdHJ1Y3QgYmZkX2VsZl9zZWN0aW9uX2RhdGEgKmVzZG8gPSBlbGZfc2VjdGlvbl9kYXRhIChvKTsKLSAgICAgIG8tPnJlbG9jX2NvdW50ID0gMDsKLQotICAgICAgZm9yIChwID0gby0+bGlua19vcmRlcl9oZWFkOyBwICE9IE5VTEw7IHAgPSBwLT5uZXh0KQotCXsKLQkgIHVuc2lnbmVkIGludCByZWxvY19jb3VudCA9IDA7Ci0JICBzdHJ1Y3QgYmZkX2VsZl9zZWN0aW9uX2RhdGEgKmVzZGkgPSBOVUxMOwotCSAgdW5zaWduZWQgaW50ICpyZWxfY291bnQxOwotCi0JICBpZiAocC0+dHlwZSA9PSBiZmRfc2VjdGlvbl9yZWxvY19saW5rX29yZGVyCi0JICAgICAgfHwgcC0+dHlwZSA9PSBiZmRfc3ltYm9sX3JlbG9jX2xpbmtfb3JkZXIpCi0JICAgIHJlbG9jX2NvdW50ID0gMTsKLQkgIGVsc2UgaWYgKHAtPnR5cGUgPT0gYmZkX2luZGlyZWN0X2xpbmtfb3JkZXIpCi0JICAgIHsKLQkgICAgICBhc2VjdGlvbiAqc2VjOwotCi0JICAgICAgc2VjID0gcC0+dS5pbmRpcmVjdC5zZWN0aW9uOwotCSAgICAgIGVzZGkgPSBlbGZfc2VjdGlvbl9kYXRhIChzZWMpOwotCi0JICAgICAgLyogTWFyayBhbGwgc2VjdGlvbnMgd2hpY2ggYXJlIHRvIGJlIGluY2x1ZGVkIGluIHRoZQotCQkgbGluay4gIFRoaXMgd2lsbCBub3JtYWxseSBiZSBldmVyeSBzZWN0aW9uLiAgV2UgbmVlZAotCQkgdG8gZG8gdGhpcyBzbyB0aGF0IHdlIGNhbiBpZGVudGlmeSBhbnkgc2VjdGlvbnMgd2hpY2gKLQkJIHRoZSBsaW5rZXIgaGFzIGRlY2lkZWQgdG8gbm90IGluY2x1ZGUuICAqLwotCSAgICAgIHNlYy0+bGlua2VyX21hcmsgPSBUUlVFOwotCi0JICAgICAgaWYgKHNlYy0+ZmxhZ3MgJiBTRUNfTUVSR0UpCi0JCW1lcmdlZCA9IFRSVUU7Ci0KLQkgICAgICBpZiAoaW5mby0+cmVsb2NhdGFibGUgfHwgaW5mby0+ZW1pdHJlbG9jYXRpb25zKQotCQlyZWxvY19jb3VudCA9IHNlYy0+cmVsb2NfY291bnQ7Ci0JICAgICAgZWxzZSBpZiAoYmVkLT5lbGZfYmFja2VuZF9jb3VudF9yZWxvY3MpCi0JCXsKLQkJICBFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jczsKLQotCQkgIHJlbG9jcyA9IF9iZmRfZWxmX2xpbmtfcmVhZF9yZWxvY3MgKGFiZmQsIHNlYywgTlVMTCwgTlVMTCwKLQkJCQkJCSAgICAgIGluZm8tPmtlZXBfbWVtb3J5KTsKLQotCQkgIHJlbG9jX2NvdW50ID0gKCpiZWQtPmVsZl9iYWNrZW5kX2NvdW50X3JlbG9jcykgKHNlYywgcmVsb2NzKTsKLQotCQkgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsb2NzICE9IHJlbG9jcykKLQkJICAgIGZyZWUgKHJlbG9jcyk7Ci0JCX0KLQotCSAgICAgIGlmIChzZWMtPl9yYXdfc2l6ZSA+IG1heF9jb250ZW50c19zaXplKQotCQltYXhfY29udGVudHNfc2l6ZSA9IHNlYy0+X3Jhd19zaXplOwotCSAgICAgIGlmIChzZWMtPl9jb29rZWRfc2l6ZSA+IG1heF9jb250ZW50c19zaXplKQotCQltYXhfY29udGVudHNfc2l6ZSA9IHNlYy0+X2Nvb2tlZF9zaXplOwotCi0JICAgICAgLyogV2UgYXJlIGludGVyZXN0ZWQgaW4ganVzdCBsb2NhbCBzeW1ib2xzLCBub3QgYWxsCi0JCSBzeW1ib2xzLiAgKi8KLQkgICAgICBpZiAoYmZkX2dldF9mbGF2b3VyIChzZWMtPm93bmVyKSA9PSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyCi0JCSAgJiYgKHNlYy0+b3duZXItPmZsYWdzICYgRFlOQU1JQykgPT0gMCkKLQkJewotCQkgIHNpemVfdCBzeW1fY291bnQ7Ci0KLQkJICBpZiAoZWxmX2JhZF9zeW10YWIgKHNlYy0+b3duZXIpKQotCQkgICAgc3ltX2NvdW50ID0gKGVsZl90ZGF0YSAoc2VjLT5vd25lciktPnN5bXRhYl9oZHIuc2hfc2l6ZQotCQkJCSAvIHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bSkpOwotCQkgIGVsc2UKLQkJICAgIHN5bV9jb3VudCA9IGVsZl90ZGF0YSAoc2VjLT5vd25lciktPnN5bXRhYl9oZHIuc2hfaW5mbzsKLQotCQkgIGlmIChzeW1fY291bnQgPiBtYXhfc3ltX2NvdW50KQotCQkgICAgbWF4X3N5bV9jb3VudCA9IHN5bV9jb3VudDsKLQotCQkgIGlmIChzeW1fY291bnQgPiBtYXhfc3ltX3NobmR4X2NvdW50Ci0JCSAgICAgICYmIGVsZl9zeW10YWJfc2huZHggKHNlYy0+b3duZXIpICE9IDApCi0JCSAgICBtYXhfc3ltX3NobmR4X2NvdW50ID0gc3ltX2NvdW50OwotCi0JCSAgaWYgKChzZWMtPmZsYWdzICYgU0VDX1JFTE9DKSAhPSAwKQotCQkgICAgewotCQkgICAgICBzaXplX3QgZXh0X3NpemU7Ci0KLQkJICAgICAgZXh0X3NpemUgPSBlbGZfc2VjdGlvbl9kYXRhIChzZWMpLT5yZWxfaGRyLnNoX3NpemU7Ci0JCSAgICAgIGlmIChleHRfc2l6ZSA+IG1heF9leHRlcm5hbF9yZWxvY19zaXplKQotCQkJbWF4X2V4dGVybmFsX3JlbG9jX3NpemUgPSBleHRfc2l6ZTsKLQkJICAgICAgaWYgKHNlYy0+cmVsb2NfY291bnQgPiBtYXhfaW50ZXJuYWxfcmVsb2NfY291bnQpCi0JCQltYXhfaW50ZXJuYWxfcmVsb2NfY291bnQgPSBzZWMtPnJlbG9jX2NvdW50OwotCQkgICAgfQotCQl9Ci0JICAgIH0KLQotCSAgaWYgKHJlbG9jX2NvdW50ID09IDApCi0JICAgIGNvbnRpbnVlOwotCi0JICBvLT5yZWxvY19jb3VudCArPSByZWxvY19jb3VudDsKLQotCSAgLyogTUlQUyBtYXkgaGF2ZSBhIG1peCBvZiBSRUwgYW5kIFJFTEEgcmVsb2NzIG9uIHNlY3Rpb25zLgotCSAgICAgVG8gc3VwcG9ydCB0aGlzIGN1cmlvdXMgQUJJIHdlIGtlZXAgcmVsb2MgY291bnRzIGluCi0JICAgICBlbGZfc2VjdGlvbl9kYXRhIHRvby4gIFdlIG11c3QgYmUgY2FyZWZ1bCB0byBhZGQgdGhlCi0JICAgICByZWxvY2F0aW9ucyBmcm9tIHRoZSBpbnB1dCBzZWN0aW9uIHRvIHRoZSByaWdodCBvdXRwdXQKLQkgICAgIGNvdW50LiAgRklYTUU6IEdldCByaWQgb2Ygb25lIGNvdW50LiAgV2UgaGF2ZQotCSAgICAgby0+cmVsb2NfY291bnQgPT0gZXNkby0+cmVsX2NvdW50ICsgZXNkby0+cmVsX2NvdW50Mi4gICovCi0JICByZWxfY291bnQxID0gJmVzZG8tPnJlbF9jb3VudDsKLQkgIGlmIChlc2RpICE9IE5VTEwpCi0JICAgIHsKLQkgICAgICBiZmRfYm9vbGVhbiBzYW1lX3NpemU7Ci0JICAgICAgYmZkX3NpemVfdHlwZSBlbnRzaXplMTsKLQotCSAgICAgIGVudHNpemUxID0gZXNkaS0+cmVsX2hkci5zaF9lbnRzaXplOwotCSAgICAgIEJGRF9BU1NFUlQgKGVudHNpemUxID09IHNpemVvZiAoRWxmX0V4dGVybmFsX1JlbCkKLQkJCSAgfHwgZW50c2l6ZTEgPT0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfUmVsYSkpOwotCSAgICAgIHNhbWVfc2l6ZSA9ICghby0+dXNlX3JlbGFfcAotCQkJICAgPT0gKGVudHNpemUxID09IHNpemVvZiAoRWxmX0V4dGVybmFsX1JlbCkpKTsKLQotCSAgICAgIGlmICghc2FtZV9zaXplKQotCQlyZWxfY291bnQxID0gJmVzZG8tPnJlbF9jb3VudDI7Ci0KLQkgICAgICBpZiAoZXNkaS0+cmVsX2hkcjIgIT0gTlVMTCkKLQkJewotCQkgIGJmZF9zaXplX3R5cGUgZW50c2l6ZTIgPSBlc2RpLT5yZWxfaGRyMi0+c2hfZW50c2l6ZTsKLQkJICB1bnNpZ25lZCBpbnQgYWx0X2NvdW50OwotCQkgIHVuc2lnbmVkIGludCAqcmVsX2NvdW50MjsKLQotCQkgIEJGRF9BU1NFUlQgKGVudHNpemUyICE9IGVudHNpemUxCi0JCQkgICAgICAmJiAoZW50c2l6ZTIgPT0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfUmVsKQotCQkJCSAgfHwgZW50c2l6ZTIgPT0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfUmVsYSkpKTsKLQotCQkgIHJlbF9jb3VudDIgPSAmZXNkby0+cmVsX2NvdW50MjsKLQkJICBpZiAoIXNhbWVfc2l6ZSkKLQkJICAgIHJlbF9jb3VudDIgPSAmZXNkby0+cmVsX2NvdW50OwotCi0JCSAgLyogVGhlIGZvbGxvd2luZyBpcyBwcm9iYWJseSB0b28gc2ltcGxpc3RpYyBpZiB0aGUKLQkJICAgICBiYWNrZW5kIGNvdW50cyBvdXRwdXQgcmVsb2NzIHVudXN1YWxseS4gICovCi0JCSAgQkZEX0FTU0VSVCAoYmVkLT5lbGZfYmFja2VuZF9jb3VudF9yZWxvY3MgPT0gTlVMTCk7Ci0JCSAgYWx0X2NvdW50ID0gTlVNX1NIRFJfRU5UUklFUyAoZXNkaS0+cmVsX2hkcjIpOwotCQkgICpyZWxfY291bnQyICs9IGFsdF9jb3VudDsKLQkJICByZWxvY19jb3VudCAtPSBhbHRfY291bnQ7Ci0JCX0KLQkgICAgfQotCSAgKnJlbF9jb3VudDEgKz0gcmVsb2NfY291bnQ7Ci0JfQotCi0gICAgICBpZiAoby0+cmVsb2NfY291bnQgPiAwKQotCW8tPmZsYWdzIHw9IFNFQ19SRUxPQzsKLSAgICAgIGVsc2UKLQl7Ci0JICAvKiBFeHBsaWNpdGx5IGNsZWFyIHRoZSBTRUNfUkVMT0MgZmxhZy4gIFRoZSBsaW5rZXIgdGVuZHMgdG8KLQkgICAgIHNldCBpdCAodGhpcyBpcyBwcm9iYWJseSBhIGJ1ZykgYW5kIGlmIGl0IGlzIHNldAotCSAgICAgYXNzaWduX3NlY3Rpb25fbnVtYmVycyB3aWxsIGNyZWF0ZSBhIHJlbG9jIHNlY3Rpb24uICAqLwotCSAgby0+ZmxhZ3MgJj1+IFNFQ19SRUxPQzsKLQl9Ci0KLSAgICAgIC8qIElmIHRoZSBTRUNfQUxMT0MgZmxhZyBpcyBub3Qgc2V0LCBmb3JjZSB0aGUgc2VjdGlvbiBWTUEgdG8KLQkgemVyby4gIFRoaXMgaXMgZG9uZSBpbiBlbGZfZmFrZV9zZWN0aW9ucyBhcyB3ZWxsLCBidXQgZm9yY2luZwotCSB0aGUgVk1BIHRvIDAgaGVyZSB3aWxsIGVuc3VyZSB0aGF0IHJlbG9jcyBhZ2FpbnN0IHRoZXNlCi0JIHNlY3Rpb25zIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4gICovCi0gICAgICBpZiAoKG8tPmZsYWdzICYgU0VDX0FMTE9DKSA9PSAwCi0JICAmJiAhIG8tPnVzZXJfc2V0X3ZtYSkKLQlvLT52bWEgPSAwOwotICAgIH0KLQotICBpZiAoISBpbmZvLT5yZWxvY2F0YWJsZSAmJiBtZXJnZWQpCi0gICAgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZSAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAotCQkJICAgIF9iZmRfZWxmX2xpbmtfc2VjX21lcmdlX3N5bXMsIGFiZmQpOwotCi0gIC8qIEZpZ3VyZSBvdXQgdGhlIGZpbGUgcG9zaXRpb25zIGZvciBldmVyeXRoaW5nIGJ1dCB0aGUgc3ltYm9sIHRhYmxlCi0gICAgIGFuZCB0aGUgcmVsb2NzLiAgV2Ugc2V0IHN5bWNvdW50IHRvIGZvcmNlIGFzc2lnbl9zZWN0aW9uX251bWJlcnMKLSAgICAgdG8gY3JlYXRlIGEgc3ltYm9sIHRhYmxlLiAgKi8KLSAgYmZkX2dldF9zeW1jb3VudCAoYWJmZCkgPSBpbmZvLT5zdHJpcCA9PSBzdHJpcF9hbGwgPyAwIDogMTsKLSAgQkZEX0FTU0VSVCAoISBhYmZkLT5vdXRwdXRfaGFzX2JlZ3VuKTsKLSAgaWYgKCEgX2JmZF9lbGZfY29tcHV0ZV9zZWN0aW9uX2ZpbGVfcG9zaXRpb25zIChhYmZkLCBpbmZvKSkKLSAgICBnb3RvIGVycm9yX3JldHVybjsKLQotICAvKiBUaGF0IGNyZWF0ZWQgdGhlIHJlbG9jIHNlY3Rpb25zLiAgU2V0IHRoZWlyIHNpemVzLCBhbmQgYXNzaWduCi0gICAgIHRoZW0gZmlsZSBwb3NpdGlvbnMsIGFuZCBhbGxvY2F0ZSBzb21lIGJ1ZmZlcnMuICAqLwotICBmb3IgKG8gPSBhYmZkLT5zZWN0aW9uczsgbyAhPSBOVUxMOyBvID0gby0+bmV4dCkKLSAgICB7Ci0gICAgICBpZiAoKG8tPmZsYWdzICYgU0VDX1JFTE9DKSAhPSAwKQotCXsKLQkgIGlmICghKF9iZmRfZWxmX2xpbmtfc2l6ZV9yZWxvY19zZWN0aW9uCi0JCShhYmZkLCAmZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9oZHIsIG8pKSkKLQkgICAgZ290byBlcnJvcl9yZXR1cm47Ci0KLQkgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsX2hkcjIKLQkgICAgICAmJiAhKF9iZmRfZWxmX2xpbmtfc2l6ZV9yZWxvY19zZWN0aW9uCi0JCSAgIChhYmZkLCBlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsX2hkcjIsIG8pKSkKLQkgICAgZ290byBlcnJvcl9yZXR1cm47Ci0JfQotCi0gICAgICAvKiBOb3csIHJlc2V0IFJFTF9DT1VOVCBhbmQgUkVMX0NPVU5UMiBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlbQotCSB0byBjb3VudCB1cHdhcmRzIHdoaWxlIGFjdHVhbGx5IG91dHB1dHRpbmcgdGhlIHJlbG9jYXRpb25zLiAgKi8KLSAgICAgIGVsZl9zZWN0aW9uX2RhdGEgKG8pLT5yZWxfY291bnQgPSAwOwotICAgICAgZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9jb3VudDIgPSAwOwotICAgIH0KLQotICBfYmZkX2VsZl9hc3NpZ25fZmlsZV9wb3NpdGlvbnNfZm9yX3JlbG9jcyAoYWJmZCk7Ci0KLSAgLyogV2UgaGF2ZSBub3cgYXNzaWduZWQgZmlsZSBwb3NpdGlvbnMgZm9yIGFsbCB0aGUgc2VjdGlvbnMgZXhjZXB0Ci0gICAgIC5zeW10YWIgYW5kIC5zdHJ0YWIuICBXZSBzdGFydCB0aGUgLnN5bXRhYiBzZWN0aW9uIGF0IHRoZSBjdXJyZW50Ci0gICAgIGZpbGUgcG9zaXRpb24sIGFuZCB3cml0ZSBkaXJlY3RseSB0byBpdC4gIFdlIGJ1aWxkIHRoZSAuc3RydGFiCi0gICAgIHNlY3Rpb24gaW4gbWVtb3J5LiAgKi8KLSAgYmZkX2dldF9zeW1jb3VudCAoYWJmZCkgPSAwOwotICBzeW10YWJfaGRyID0gJmVsZl90ZGF0YSAoYWJmZCktPnN5bXRhYl9oZHI7Ci0gIC8qIHNoX25hbWUgaXMgc2V0IGluIHByZXBfaGVhZGVycy4gICovCi0gIHN5bXRhYl9oZHItPnNoX3R5cGUgPSBTSFRfU1lNVEFCOwotICAvKiBzaF9mbGFncywgc2hfYWRkciBhbmQgc2hfc2l6ZSBhbGwgc3RhcnQgb2ZmIHplcm8uICAqLwotICBzeW10YWJfaGRyLT5zaF9lbnRzaXplID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltKTsKLSAgLyogc2hfbGluayBpcyBzZXQgaW4gYXNzaWduX3NlY3Rpb25fbnVtYmVycy4gICovCi0gIC8qIHNoX2luZm8gaXMgc2V0IGJlbG93LiAgKi8KLSAgLyogc2hfb2Zmc2V0IGlzIHNldCBqdXN0IGJlbG93LiAgKi8KLSAgc3ltdGFiX2hkci0+c2hfYWRkcmFsaWduID0gMSA8PCBiZWQtPnMtPmxvZ19maWxlX2FsaWduOwotCi0gIG9mZiA9IGVsZl90ZGF0YSAoYWJmZCktPm5leHRfZmlsZV9wb3M7Ci0gIG9mZiA9IF9iZmRfZWxmX2Fzc2lnbl9maWxlX3Bvc2l0aW9uX2Zvcl9zZWN0aW9uIChzeW10YWJfaGRyLCBvZmYsIFRSVUUpOwotCi0gIC8qIE5vdGUgdGhhdCBhdCB0aGlzIHBvaW50IGVsZl90ZGF0YSAoYWJmZCktPm5leHRfZmlsZV9wb3MgaXMKLSAgICAgaW5jb3JyZWN0LiAgV2UgZG8gbm90IHlldCBrbm93IHRoZSBzaXplIG9mIHRoZSAuc3ltdGFiIHNlY3Rpb24uCi0gICAgIFdlIGNvcnJlY3QgbmV4dF9maWxlX3BvcyBiZWxvdywgYWZ0ZXIgd2UgZG8ga25vdyB0aGUgc2l6ZS4gICovCi0KLSAgLyogQWxsb2NhdGUgYSBidWZmZXIgdG8gaG9sZCBzd2FwcGVkIG91dCBzeW1ib2xzLiAgVGhpcyBpcyB0byBhdm9pZAotICAgICBjb250aW51b3VzbHkgc2Vla2luZyB0byB0aGUgcmlnaHQgcG9zaXRpb24gaW4gdGhlIGZpbGUuICAqLwotICBpZiAoISBpbmZvLT5rZWVwX21lbW9yeSB8fCBtYXhfc3ltX2NvdW50IDwgMjApCi0gICAgZmluZm8uc3ltYnVmX3NpemUgPSAyMDsKLSAgZWxzZQotICAgIGZpbmZvLnN5bWJ1Zl9zaXplID0gbWF4X3N5bV9jb3VudDsKLSAgYW10ID0gZmluZm8uc3ltYnVmX3NpemU7Ci0gIGFtdCAqPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW0pOwotICBmaW5mby5zeW1idWYgPSBiZmRfbWFsbG9jIChhbXQpOwotICBpZiAoZmluZm8uc3ltYnVmID09IE5VTEwpCi0gICAgZ290byBlcnJvcl9yZXR1cm47Ci0gIGlmIChlbGZfbnVtc2VjdGlvbnMgKGFiZmQpID4gU0hOX0xPUkVTRVJWRSkKLSAgICB7Ci0gICAgICAvKiBXaWxkIGd1ZXNzIGF0IG51bWJlciBvZiBvdXRwdXQgc3ltYm9scy4gIHJlYWxsb2MnZCBhcyBuZWVkZWQuICAqLwotICAgICAgYW10ID0gMiAqIG1heF9zeW1fY291bnQgKyBlbGZfbnVtc2VjdGlvbnMgKGFiZmQpICsgMTAwMDsKLSAgICAgIGZpbmZvLnNobmR4YnVmX3NpemUgPSBhbXQ7Ci0gICAgICBhbXQgKj0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltX1NobmR4KTsKLSAgICAgIGZpbmZvLnN5bXNobmR4YnVmID0gYmZkX3ptYWxsb2MgKGFtdCk7Ci0gICAgICBpZiAoZmluZm8uc3ltc2huZHhidWYgPT0gTlVMTCkKLQlnb3RvIGVycm9yX3JldHVybjsKLSAgICB9Ci0KLSAgLyogU3RhcnQgd3JpdGluZyBvdXQgdGhlIHN5bWJvbCB0YWJsZS4gIFRoZSBmaXJzdCBzeW1ib2wgaXMgYWx3YXlzIGEKLSAgICAgZHVtbXkgc3ltYm9sLiAgKi8KLSAgaWYgKGluZm8tPnN0cmlwICE9IHN0cmlwX2FsbAotICAgICAgfHwgZW1pdF9yZWxvY3MpCi0gICAgewotICAgICAgZWxmc3ltLnN0X3ZhbHVlID0gMDsKLSAgICAgIGVsZnN5bS5zdF9zaXplID0gMDsKLSAgICAgIGVsZnN5bS5zdF9pbmZvID0gMDsKLSAgICAgIGVsZnN5bS5zdF9vdGhlciA9IDA7Ci0gICAgICBlbGZzeW0uc3Rfc2huZHggPSBTSE5fVU5ERUY7Ci0gICAgICBpZiAoISBlbGZfbGlua19vdXRwdXRfc3ltICgmZmluZm8sIE5VTEwsICZlbGZzeW0sIGJmZF91bmRfc2VjdGlvbl9wdHIsCi0JCQkJIE5VTEwpKQotCWdvdG8gZXJyb3JfcmV0dXJuOwotICAgIH0KLQotI2lmIDAKLSAgLyogU29tZSBzdGFuZGFyZCBFTEYgbGlua2VycyBkbyB0aGlzLCBidXQgd2UgZG9uJ3QgYmVjYXVzZSBpdCBjYXVzZXMKLSAgICAgYm9vdHN0cmFwIGNvbXBhcmlzb24gZmFpbHVyZXMuICAqLwotICAvKiBPdXRwdXQgYSBmaWxlIHN5bWJvbCBmb3IgdGhlIG91dHB1dCBmaWxlIGFzIHRoZSBzZWNvbmQgc3ltYm9sLgotICAgICBXZSBvdXRwdXQgdGhpcyBldmVuIGlmIHdlIGFyZSBkaXNjYXJkaW5nIGxvY2FsIHN5bWJvbHMsIGFsdGhvdWdoCi0gICAgIEknbSBub3Qgc3VyZSBpZiB0aGlzIGlzIGNvcnJlY3QuICAqLwotICBlbGZzeW0uc3RfdmFsdWUgPSAwOwotICBlbGZzeW0uc3Rfc2l6ZSA9IDA7Ci0gIGVsZnN5bS5zdF9pbmZvID0gRUxGX1NUX0lORk8gKFNUQl9MT0NBTCwgU1RUX0ZJTEUpOwotICBlbGZzeW0uc3Rfb3RoZXIgPSAwOwotICBlbGZzeW0uc3Rfc2huZHggPSBTSE5fQUJTOwotICBpZiAoISBlbGZfbGlua19vdXRwdXRfc3ltICgmZmluZm8sIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLAotCQkJICAgICAmZWxmc3ltLCBiZmRfYWJzX3NlY3Rpb25fcHRyLCBOVUxMKSkKLSAgICBnb3RvIGVycm9yX3JldHVybjsKLSNlbmRpZgotCi0gIC8qIE91dHB1dCBhIHN5bWJvbCBmb3IgZWFjaCBzZWN0aW9uLiAgV2Ugb3V0cHV0IHRoZXNlIGV2ZW4gaWYgd2UgYXJlCi0gICAgIGRpc2NhcmRpbmcgbG9jYWwgc3ltYm9scywgc2luY2UgdGhleSBhcmUgdXNlZCBmb3IgcmVsb2NzLiAgVGhlc2UKLSAgICAgc3ltYm9scyBoYXZlIG5vIG5hbWVzLiAgV2Ugc3RvcmUgdGhlIGluZGV4IG9mIGVhY2ggb25lIGluIHRoZQotICAgICBpbmRleCBmaWVsZCBvZiB0aGUgc2VjdGlvbiwgc28gdGhhdCB3ZSBjYW4gZmluZCBpdCBhZ2FpbiB3aGVuCi0gICAgIG91dHB1dHRpbmcgcmVsb2NzLiAgKi8KLSAgaWYgKGluZm8tPnN0cmlwICE9IHN0cmlwX2FsbAotICAgICAgfHwgZW1pdF9yZWxvY3MpCi0gICAgewotICAgICAgZWxmc3ltLnN0X3NpemUgPSAwOwotICAgICAgZWxmc3ltLnN0X2luZm8gPSBFTEZfU1RfSU5GTyAoU1RCX0xPQ0FMLCBTVFRfU0VDVElPTik7Ci0gICAgICBlbGZzeW0uc3Rfb3RoZXIgPSAwOwotICAgICAgZm9yIChpID0gMTsgaSA8IGVsZl9udW1zZWN0aW9ucyAoYWJmZCk7IGkrKykKLQl7Ci0JICBvID0gc2VjdGlvbl9mcm9tX2VsZl9pbmRleCAoYWJmZCwgaSk7Ci0JICBpZiAobyAhPSBOVUxMKQotCSAgICBvLT50YXJnZXRfaW5kZXggPSBiZmRfZ2V0X3N5bWNvdW50IChhYmZkKTsKLQkgIGVsZnN5bS5zdF9zaG5keCA9IGk7Ci0JICBpZiAoaW5mby0+cmVsb2NhdGFibGUgfHwgbyA9PSBOVUxMKQotCSAgICBlbGZzeW0uc3RfdmFsdWUgPSAwOwotCSAgZWxzZQotCSAgICBlbGZzeW0uc3RfdmFsdWUgPSBvLT52bWE7Ci0JICBpZiAoISBlbGZfbGlua19vdXRwdXRfc3ltICgmZmluZm8sIE5VTEwsICZlbGZzeW0sIG8sIE5VTEwpKQotCSAgICBnb3RvIGVycm9yX3JldHVybjsKLQkgIGlmIChpID09IFNITl9MT1JFU0VSVkUgLSAxKQotCSAgICBpICs9IFNITl9ISVJFU0VSVkUgKyAxIC0gU0hOX0xPUkVTRVJWRTsKLQl9Ci0gICAgfQotCi0gIC8qIEFsbG9jYXRlIHNvbWUgbWVtb3J5IHRvIGhvbGQgaW5mb3JtYXRpb24gcmVhZCBpbiBmcm9tIHRoZSBpbnB1dAotICAgICBmaWxlcy4gICovCi0gIGlmIChtYXhfY29udGVudHNfc2l6ZSAhPSAwKQotICAgIHsKLSAgICAgIGZpbmZvLmNvbnRlbnRzID0gYmZkX21hbGxvYyAobWF4X2NvbnRlbnRzX3NpemUpOwotICAgICAgaWYgKGZpbmZvLmNvbnRlbnRzID09IE5VTEwpCi0JZ290byBlcnJvcl9yZXR1cm47Ci0gICAgfQotCi0gIGlmIChtYXhfZXh0ZXJuYWxfcmVsb2Nfc2l6ZSAhPSAwKQotICAgIHsKLSAgICAgIGZpbmZvLmV4dGVybmFsX3JlbG9jcyA9IGJmZF9tYWxsb2MgKG1heF9leHRlcm5hbF9yZWxvY19zaXplKTsKLSAgICAgIGlmIChmaW5mby5leHRlcm5hbF9yZWxvY3MgPT0gTlVMTCkKLQlnb3RvIGVycm9yX3JldHVybjsKLSAgICB9Ci0KLSAgaWYgKG1heF9pbnRlcm5hbF9yZWxvY19jb3VudCAhPSAwKQotICAgIHsKLSAgICAgIGFtdCA9IG1heF9pbnRlcm5hbF9yZWxvY19jb3VudCAqIGJlZC0+cy0+aW50X3JlbHNfcGVyX2V4dF9yZWw7Ci0gICAgICBhbXQgKj0gc2l6ZW9mIChFbGZfSW50ZXJuYWxfUmVsYSk7Ci0gICAgICBmaW5mby5pbnRlcm5hbF9yZWxvY3MgPSBiZmRfbWFsbG9jIChhbXQpOwotICAgICAgaWYgKGZpbmZvLmludGVybmFsX3JlbG9jcyA9PSBOVUxMKQotCWdvdG8gZXJyb3JfcmV0dXJuOwotICAgIH0KLQotICBpZiAobWF4X3N5bV9jb3VudCAhPSAwKQotICAgIHsKLSAgICAgIGFtdCA9IG1heF9zeW1fY291bnQgKiBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW0pOwotICAgICAgZmluZm8uZXh0ZXJuYWxfc3ltcyA9IGJmZF9tYWxsb2MgKGFtdCk7Ci0gICAgICBpZiAoZmluZm8uZXh0ZXJuYWxfc3ltcyA9PSBOVUxMKQotCWdvdG8gZXJyb3JfcmV0dXJuOwotCi0gICAgICBhbXQgPSBtYXhfc3ltX2NvdW50ICogc2l6ZW9mIChFbGZfSW50ZXJuYWxfU3ltKTsKLSAgICAgIGZpbmZvLmludGVybmFsX3N5bXMgPSBiZmRfbWFsbG9jIChhbXQpOwotICAgICAgaWYgKGZpbmZvLmludGVybmFsX3N5bXMgPT0gTlVMTCkKLQlnb3RvIGVycm9yX3JldHVybjsKLQotICAgICAgYW10ID0gbWF4X3N5bV9jb3VudCAqIHNpemVvZiAobG9uZyk7Ci0gICAgICBmaW5mby5pbmRpY2VzID0gYmZkX21hbGxvYyAoYW10KTsKLSAgICAgIGlmIChmaW5mby5pbmRpY2VzID09IE5VTEwpCi0JZ290byBlcnJvcl9yZXR1cm47Ci0KLSAgICAgIGFtdCA9IG1heF9zeW1fY291bnQgKiBzaXplb2YgKGFzZWN0aW9uICopOwotICAgICAgZmluZm8uc2VjdGlvbnMgPSBiZmRfbWFsbG9jIChhbXQpOwotICAgICAgaWYgKGZpbmZvLnNlY3Rpb25zID09IE5VTEwpCi0JZ290byBlcnJvcl9yZXR1cm47Ci0gICAgfQotCi0gIGlmIChtYXhfc3ltX3NobmR4X2NvdW50ICE9IDApCi0gICAgewotICAgICAgYW10ID0gbWF4X3N5bV9zaG5keF9jb3VudCAqIHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bV9TaG5keCk7Ci0gICAgICBmaW5mby5sb2NzeW1fc2huZHggPSBiZmRfbWFsbG9jIChhbXQpOwotICAgICAgaWYgKGZpbmZvLmxvY3N5bV9zaG5keCA9PSBOVUxMKQotCWdvdG8gZXJyb3JfcmV0dXJuOwotICAgIH0KLQotICBpZiAoZWxmX2hhc2hfdGFibGUgKGluZm8pLT50bHNfc2VjKQotICAgIHsKLSAgICAgIGJmZF92bWEgYmFzZSwgZW5kID0gMDsKLSAgICAgIGFzZWN0aW9uICpzZWM7Ci0KLSAgICAgIGZvciAoc2VjID0gZWxmX2hhc2hfdGFibGUgKGluZm8pLT50bHNfc2VjOwotCSAgIHNlYyAmJiAoc2VjLT5mbGFncyAmIFNFQ19USFJFQURfTE9DQUwpOwotCSAgIHNlYyA9IHNlYy0+bmV4dCkKLQl7Ci0JICBiZmRfdm1hIHNpemUgPSBzZWMtPl9yYXdfc2l6ZTsKLQotCSAgaWYgKHNpemUgPT0gMCAmJiAoc2VjLT5mbGFncyAmIFNFQ19IQVNfQ09OVEVOVFMpID09IDApCi0JICAgIHsKLQkgICAgICBzdHJ1Y3QgYmZkX2xpbmtfb3JkZXIgKm87Ci0KLQkgICAgICBmb3IgKG8gPSBzZWMtPmxpbmtfb3JkZXJfaGVhZDsgbyAhPSBOVUxMOyBvID0gby0+bmV4dCkKLQkJaWYgKHNpemUgPCBvLT5vZmZzZXQgKyBvLT5zaXplKQotCQkgIHNpemUgPSBvLT5vZmZzZXQgKyBvLT5zaXplOwotCSAgICB9Ci0JICBlbmQgPSBzZWMtPnZtYSArIHNpemU7Ci0JfQotICAgICAgYmFzZSA9IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+dGxzX3NlYy0+dm1hOwotICAgICAgZW5kID0gYWxpZ25fcG93ZXIgKGVuZCwgZWxmX2hhc2hfdGFibGUgKGluZm8pLT50bHNfc2VjLT5hbGlnbm1lbnRfcG93ZXIpOwotICAgICAgZWxmX2hhc2hfdGFibGUgKGluZm8pLT50bHNfc2l6ZSA9IGVuZCAtIGJhc2U7Ci0gICAgfQotCi0gIC8qIFNpbmNlIEVMRiBwZXJtaXRzIHJlbG9jYXRpb25zIHRvIGJlIGFnYWluc3QgbG9jYWwgc3ltYm9scywgd2UKLSAgICAgbXVzdCBoYXZlIHRoZSBsb2NhbCBzeW1ib2xzIGF2YWlsYWJsZSB3aGVuIHdlIGRvIHRoZSByZWxvY2F0aW9ucy4KLSAgICAgU2luY2Ugd2Ugd291bGQgcmF0aGVyIG9ubHkgcmVhZCB0aGUgbG9jYWwgc3ltYm9scyBvbmNlLCBhbmQgd2UKLSAgICAgd291bGQgcmF0aGVyIG5vdCBrZWVwIHRoZW0gaW4gbWVtb3J5LCB3ZSBoYW5kbGUgYWxsIHRoZQotICAgICByZWxvY2F0aW9ucyBmb3IgYSBzaW5nbGUgaW5wdXQgZmlsZSBhdCB0aGUgc2FtZSB0aW1lLgotCi0gICAgIFVuZm9ydHVuYXRlbHksIHRoZXJlIGlzIG5vIHdheSB0byBrbm93IHRoZSB0b3RhbCBudW1iZXIgb2YgbG9jYWwKLSAgICAgc3ltYm9scyB1bnRpbCB3ZSBoYXZlIHNlZW4gYWxsIG9mIHRoZW0sIGFuZCB0aGUgbG9jYWwgc3ltYm9sCi0gICAgIGluZGljZXMgcHJlY2VkZSB0aGUgZ2xvYmFsIHN5bWJvbCBpbmRpY2VzLiAgVGhpcyBtZWFucyB0aGF0IHdoZW4KLSAgICAgd2UgYXJlIGdlbmVyYXRpbmcgcmVsb2NhdGFibGUgb3V0cHV0LCBhbmQgd2Ugc2VlIGEgcmVsb2MgYWdhaW5zdAotICAgICBhIGdsb2JhbCBzeW1ib2wsIHdlIGNhbiBub3Qga25vdyB0aGUgc3ltYm9sIGluZGV4IHVudGlsIHdlIGhhdmUKLSAgICAgZmluaXNoZWQgZXhhbWluaW5nIGFsbCB0aGUgbG9jYWwgc3ltYm9scyB0byBzZWUgd2hpY2ggb25lcyB3ZSBhcmUKLSAgICAgZ29pbmcgdG8gb3V0cHV0LiAgVG8gZGVhbCB3aXRoIHRoaXMsIHdlIGtlZXAgdGhlIHJlbG9jYXRpb25zIGluCi0gICAgIG1lbW9yeSwgYW5kIGRvbid0IG91dHB1dCB0aGVtIHVudGlsIHRoZSBlbmQgb2YgdGhlIGxpbmsuICBUaGlzIGlzCi0gICAgIGFuIHVuZm9ydHVuYXRlIHdhc3RlIG9mIG1lbW9yeSwgYnV0IEkgZG9uJ3Qgc2VlIGEgZ29vZCB3YXkgYXJvdW5kCi0gICAgIGl0LiAgRm9ydHVuYXRlbHksIGl0IG9ubHkgaGFwcGVucyB3aGVuIHBlcmZvcm1pbmcgYSByZWxvY2F0YWJsZQotICAgICBsaW5rLCB3aGljaCBpcyBub3QgdGhlIGNvbW1vbiBjYXNlLiAgRklYTUU6IElmIGtlZXBfbWVtb3J5IGlzIHNldAotICAgICB3ZSBjb3VsZCB3cml0ZSB0aGUgcmVsb2NzIG91dCBhbmQgdGhlbiByZWFkIHRoZW0gYWdhaW47IEkgZG9uJ3QKLSAgICAga25vdyBob3cgYmFkIHRoZSBtZW1vcnkgbG9zcyB3aWxsIGJlLiAgKi8KLQotICBmb3IgKHN1YiA9IGluZm8tPmlucHV0X2JmZHM7IHN1YiAhPSBOVUxMOyBzdWIgPSBzdWItPmxpbmtfbmV4dCkKLSAgICBzdWItPm91dHB1dF9oYXNfYmVndW4gPSBGQUxTRTsKLSAgZm9yIChvID0gYWJmZC0+c2VjdGlvbnM7IG8gIT0gTlVMTDsgbyA9IG8tPm5leHQpCi0gICAgewotICAgICAgZm9yIChwID0gby0+bGlua19vcmRlcl9oZWFkOyBwICE9IE5VTEw7IHAgPSBwLT5uZXh0KQotCXsKLQkgIGlmIChwLT50eXBlID09IGJmZF9pbmRpcmVjdF9saW5rX29yZGVyCi0JICAgICAgJiYgKGJmZF9nZXRfZmxhdm91ciAoKHN1YiA9IHAtPnUuaW5kaXJlY3Quc2VjdGlvbi0+b3duZXIpKQotCQkgID09IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCi0JICAgICAgJiYgZWxmX2VsZmhlYWRlciAoc3ViKS0+ZV9pZGVudFtFSV9DTEFTU10gPT0gYmVkLT5zLT5lbGZjbGFzcykKLQkgICAgewotCSAgICAgIGlmICghIHN1Yi0+b3V0cHV0X2hhc19iZWd1bikKLQkJewotCQkgIGlmICghIGVsZl9saW5rX2lucHV0X2JmZCAoJmZpbmZvLCBzdWIpKQotCQkgICAgZ290byBlcnJvcl9yZXR1cm47Ci0JCSAgc3ViLT5vdXRwdXRfaGFzX2JlZ3VuID0gVFJVRTsKLQkJfQotCSAgICB9Ci0JICBlbHNlIGlmIChwLT50eXBlID09IGJmZF9zZWN0aW9uX3JlbG9jX2xpbmtfb3JkZXIKLQkJICAgfHwgcC0+dHlwZSA9PSBiZmRfc3ltYm9sX3JlbG9jX2xpbmtfb3JkZXIpCi0JICAgIHsKLQkgICAgICBpZiAoISBlbGZfcmVsb2NfbGlua19vcmRlciAoYWJmZCwgaW5mbywgbywgcCkpCi0JCWdvdG8gZXJyb3JfcmV0dXJuOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICBpZiAoISBfYmZkX2RlZmF1bHRfbGlua19vcmRlciAoYWJmZCwgaW5mbywgbywgcCkpCi0JCWdvdG8gZXJyb3JfcmV0dXJuOwotCSAgICB9Ci0JfQotICAgIH0KLQotICAvKiBPdXRwdXQgYW55IGdsb2JhbCBzeW1ib2xzIHRoYXQgZ290IGNvbnZlcnRlZCB0byBsb2NhbCBpbiBhCi0gICAgIHZlcnNpb24gc2NyaXB0IG9yIGR1ZSB0byBzeW1ib2wgdmlzaWJpbGl0eS4gIFdlIGRvIHRoaXMgaW4gYQotICAgICBzZXBhcmF0ZSBzdGVwIHNpbmNlIEVMRiByZXF1aXJlcyBhbGwgbG9jYWwgc3ltYm9scyB0byBhcHBlYXIKLSAgICAgcHJpb3IgdG8gYW55IGdsb2JhbCBzeW1ib2xzLiAgRklYTUU6IFdlIHNob3VsZCBvbmx5IGRvIHRoaXMgaWYKLSAgICAgc29tZSBnbG9iYWwgc3ltYm9scyB3ZXJlLCBpbiBmYWN0LCBjb252ZXJ0ZWQgdG8gYmVjb21lIGxvY2FsLgotICAgICBGSVhNRTogV2lsbCB0aGlzIHdvcmsgY29ycmVjdGx5IHdpdGggdGhlIElyaXggNSBsaW5rZXI/ICAqLwotICBlb2luZm8uZmFpbGVkID0gRkFMU0U7Ci0gIGVvaW5mby5maW5mbyA9ICZmaW5mbzsKLSAgZW9pbmZvLmxvY2Fsc3ltcyA9IFRSVUU7Ci0gIGVsZl9saW5rX2hhc2hfdHJhdmVyc2UgKGVsZl9oYXNoX3RhYmxlIChpbmZvKSwgZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSwKLQkJCSAgJmVvaW5mbyk7Ci0gIGlmIChlb2luZm8uZmFpbGVkKQotICAgIHJldHVybiBGQUxTRTsKLQotICAvKiBUaGF0IHdyb3RlIG91dCBhbGwgdGhlIGxvY2FsIHN5bWJvbHMuICBGaW5pc2ggdXAgdGhlIHN5bWJvbCB0YWJsZQotICAgICB3aXRoIHRoZSBnbG9iYWwgc3ltYm9scy4gRXZlbiBpZiB3ZSB3YW50IHRvIHN0cmlwIGV2ZXJ5dGhpbmcgd2UKLSAgICAgY2FuLCB3ZSBzdGlsbCBuZWVkIHRvIGRlYWwgd2l0aCB0aG9zZSBnbG9iYWwgc3ltYm9scyB0aGF0IGdvdAotICAgICBjb252ZXJ0ZWQgdG8gbG9jYWwgaW4gYSB2ZXJzaW9uIHNjcmlwdC4gICovCi0KLSAgLyogVGhlIHNoX2luZm8gZmllbGQgcmVjb3JkcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG5vbiBsb2NhbCBzeW1ib2wuICAqLwotICBzeW10YWJfaGRyLT5zaF9pbmZvID0gYmZkX2dldF9zeW1jb3VudCAoYWJmZCk7Ci0KLSAgaWYgKGR5bmFtaWMKLSAgICAgICYmIGZpbmZvLmR5bnN5bV9zZWMtPm91dHB1dF9zZWN0aW9uICE9IGJmZF9hYnNfc2VjdGlvbl9wdHIpCi0gICAgewotICAgICAgRWxmX0ludGVybmFsX1N5bSBzeW07Ci0gICAgICBFbGZfRXh0ZXJuYWxfU3ltICpkeW5zeW0gPQotCShFbGZfRXh0ZXJuYWxfU3ltICopIGZpbmZvLmR5bnN5bV9zZWMtPmNvbnRlbnRzOwotICAgICAgbG9uZyBsYXN0X2xvY2FsID0gMDsKLQotICAgICAgLyogV3JpdGUgb3V0IHRoZSBzZWN0aW9uIHN5bWJvbHMgZm9yIHRoZSBvdXRwdXQgc2VjdGlvbnMuICAqLwotICAgICAgaWYgKGluZm8tPnNoYXJlZCkKLQl7Ci0JICBhc2VjdGlvbiAqczsKLQotCSAgc3ltLnN0X3NpemUgPSAwOwotCSAgc3ltLnN0X25hbWUgPSAwOwotCSAgc3ltLnN0X2luZm8gPSBFTEZfU1RfSU5GTyAoU1RCX0xPQ0FMLCBTVFRfU0VDVElPTik7Ci0JICBzeW0uc3Rfb3RoZXIgPSAwOwotCi0JICBmb3IgKHMgPSBhYmZkLT5zZWN0aW9uczsgcyAhPSBOVUxMOyBzID0gcy0+bmV4dCkKLQkgICAgewotCSAgICAgIGludCBpbmR4OwotCSAgICAgIEVsZl9FeHRlcm5hbF9TeW0gKmRlc3Q7Ci0KLQkgICAgICBpbmR4ID0gZWxmX3NlY3Rpb25fZGF0YSAocyktPnRoaXNfaWR4OwotCSAgICAgIEJGRF9BU1NFUlQgKGluZHggPiAwKTsKLQkgICAgICBzeW0uc3Rfc2huZHggPSBpbmR4OwotCSAgICAgIHN5bS5zdF92YWx1ZSA9IHMtPnZtYTsKLQkgICAgICBkZXN0ID0gZHluc3ltICsgZWxmX3NlY3Rpb25fZGF0YSAocyktPmR5bmluZHg7Ci0JICAgICAgZWxmX3N3YXBfc3ltYm9sX291dCAoYWJmZCwgJnN5bSwgZGVzdCwgMCk7Ci0JICAgIH0KLQotCSAgbGFzdF9sb2NhbCA9IGJmZF9jb3VudF9zZWN0aW9ucyAoYWJmZCk7Ci0JfQotCi0gICAgICAvKiBXcml0ZSBvdXQgdGhlIGxvY2FsIGR5bnN5bXMuICAqLwotICAgICAgaWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHlubG9jYWwpCi0JewotCSAgc3RydWN0IGVsZl9saW5rX2xvY2FsX2R5bmFtaWNfZW50cnkgKmU7Ci0JICBmb3IgKGUgPSBlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bmxvY2FsOyBlIDsgZSA9IGUtPm5leHQpCi0JICAgIHsKLQkgICAgICBhc2VjdGlvbiAqczsKLQkgICAgICBFbGZfRXh0ZXJuYWxfU3ltICpkZXN0OwotCi0JICAgICAgc3ltLnN0X3NpemUgPSBlLT5pc3ltLnN0X3NpemU7Ci0JICAgICAgc3ltLnN0X290aGVyID0gZS0+aXN5bS5zdF9vdGhlcjsKLQotCSAgICAgIC8qIENvcHkgdGhlIGludGVybmFsIHN5bWJvbCBhcyBpcy4KLQkJIE5vdGUgdGhhdCB3ZSBzYXZlZCBhIHdvcmQgb2Ygc3RvcmFnZSBhbmQgb3Zlcndyb3RlCi0JCSB0aGUgb3JpZ2luYWwgc3RfbmFtZSB3aXRoIHRoZSBkeW5zdHJfaW5kZXguICAqLwotCSAgICAgIHN5bSA9IGUtPmlzeW07Ci0KLQkgICAgICBpZiAoZS0+aXN5bS5zdF9zaG5keCAhPSBTSE5fVU5ERUYKLQkJICAmJiAoZS0+aXN5bS5zdF9zaG5keCA8IFNITl9MT1JFU0VSVkUKLQkJICAgICAgfHwgZS0+aXN5bS5zdF9zaG5keCA+IFNITl9ISVJFU0VSVkUpKQotCQl7Ci0JCSAgcyA9IGJmZF9zZWN0aW9uX2Zyb21fZWxmX2luZGV4IChlLT5pbnB1dF9iZmQsCi0JCQkJCQkgIGUtPmlzeW0uc3Rfc2huZHgpOwotCi0JCSAgc3ltLnN0X3NobmR4ID0KLQkJICAgIGVsZl9zZWN0aW9uX2RhdGEgKHMtPm91dHB1dF9zZWN0aW9uKS0+dGhpc19pZHg7Ci0JCSAgc3ltLnN0X3ZhbHVlID0gKHMtPm91dHB1dF9zZWN0aW9uLT52bWEKLQkJCQkgICsgcy0+b3V0cHV0X29mZnNldAotCQkJCSAgKyBlLT5pc3ltLnN0X3ZhbHVlKTsKLQkJfQotCi0JICAgICAgaWYgKGxhc3RfbG9jYWwgPCBlLT5keW5pbmR4KQotCQlsYXN0X2xvY2FsID0gZS0+ZHluaW5keDsKLQotCSAgICAgIGRlc3QgPSBkeW5zeW0gKyBlLT5keW5pbmR4OwotCSAgICAgIGVsZl9zd2FwX3N5bWJvbF9vdXQgKGFiZmQsICZzeW0sIGRlc3QsIDApOwotCSAgICB9Ci0JfQotCi0gICAgICBlbGZfc2VjdGlvbl9kYXRhIChmaW5mby5keW5zeW1fc2VjLT5vdXRwdXRfc2VjdGlvbiktPnRoaXNfaGRyLnNoX2luZm8gPQotCWxhc3RfbG9jYWwgKyAxOwotICAgIH0KLQotICAvKiBXZSBnZXQgdGhlIGdsb2JhbCBzeW1ib2xzIGZyb20gdGhlIGhhc2ggdGFibGUuICAqLwotICBlb2luZm8uZmFpbGVkID0gRkFMU0U7Ci0gIGVvaW5mby5sb2NhbHN5bXMgPSBGQUxTRTsKLSAgZW9pbmZvLmZpbmZvID0gJmZpbmZvOwotICBlbGZfbGlua19oYXNoX3RyYXZlcnNlIChlbGZfaGFzaF90YWJsZSAoaW5mbyksIGVsZl9saW5rX291dHB1dF9leHRzeW0sCi0JCQkgICZlb2luZm8pOwotICBpZiAoZW9pbmZvLmZhaWxlZCkKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgLyogSWYgYmFja2VuZCBuZWVkcyB0byBvdXRwdXQgc29tZSBzeW1ib2xzIG5vdCBwcmVzZW50IGluIHRoZSBoYXNoCi0gICAgIHRhYmxlLCBkbyBpdCBub3cuICAqLwotICBpZiAoYmVkLT5lbGZfYmFja2VuZF9vdXRwdXRfYXJjaF9zeW1zKQotICAgIHsKLSAgICAgIHR5cGVkZWYgYmZkX2Jvb2xlYW4gKCpvdXRfc3ltX2Z1bmMpCi0JKHZvaWQgKiwgY29uc3QgY2hhciAqLCBFbGZfSW50ZXJuYWxfU3ltICosIGFzZWN0aW9uICosCi0JIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopOwotCi0gICAgICBpZiAoISAoKCpiZWQtPmVsZl9iYWNrZW5kX291dHB1dF9hcmNoX3N5bXMpCi0JICAgICAoYWJmZCwgaW5mbywgJmZpbmZvLCAob3V0X3N5bV9mdW5jKSBlbGZfbGlua19vdXRwdXRfc3ltKSkpCi0JcmV0dXJuIEZBTFNFOwotICAgIH0KLQotICAvKiBGbHVzaCBhbGwgc3ltYm9scyB0byB0aGUgZmlsZS4gICovCi0gIGlmICghIGVsZl9saW5rX2ZsdXNoX291dHB1dF9zeW1zICgmZmluZm8pKQotICAgIHJldHVybiBGQUxTRTsKLQotICAvKiBOb3cgd2Uga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3ltdGFiIHNlY3Rpb24uICAqLwotICBvZmYgKz0gc3ltdGFiX2hkci0+c2hfc2l6ZTsKLQotICBzeW10YWJfc2huZHhfaGRyID0gJmVsZl90ZGF0YSAoYWJmZCktPnN5bXRhYl9zaG5keF9oZHI7Ci0gIGlmIChzeW10YWJfc2huZHhfaGRyLT5zaF9uYW1lICE9IDApCi0gICAgewotICAgICAgc3ltdGFiX3NobmR4X2hkci0+c2hfdHlwZSA9IFNIVF9TWU1UQUJfU0hORFg7Ci0gICAgICBzeW10YWJfc2huZHhfaGRyLT5zaF9lbnRzaXplID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltX1NobmR4KTsKLSAgICAgIHN5bXRhYl9zaG5keF9oZHItPnNoX2FkZHJhbGlnbiA9IHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bV9TaG5keCk7Ci0gICAgICBhbXQgPSBiZmRfZ2V0X3N5bWNvdW50IChhYmZkKSAqIHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bV9TaG5keCk7Ci0gICAgICBzeW10YWJfc2huZHhfaGRyLT5zaF9zaXplID0gYW10OwotCi0gICAgICBvZmYgPSBfYmZkX2VsZl9hc3NpZ25fZmlsZV9wb3NpdGlvbl9mb3Jfc2VjdGlvbiAoc3ltdGFiX3NobmR4X2hkciwKLQkJCQkJCSAgICAgICBvZmYsIFRSVUUpOwotCi0gICAgICBpZiAoYmZkX3NlZWsgKGFiZmQsIHN5bXRhYl9zaG5keF9oZHItPnNoX29mZnNldCwgU0VFS19TRVQpICE9IDAKLQkgIHx8IChiZmRfYndyaXRlIChmaW5mby5zeW1zaG5keGJ1ZiwgYW10LCBhYmZkKSAhPSBhbXQpKQotCXJldHVybiBGQUxTRTsKLSAgICB9Ci0KLQotICAvKiBGaW5pc2ggdXAgYW5kIHdyaXRlIG91dCB0aGUgc3ltYm9sIHN0cmluZyB0YWJsZSAoLnN0cnRhYikKLSAgICAgc2VjdGlvbi4gICovCi0gIHN5bXN0cnRhYl9oZHIgPSAmZWxmX3RkYXRhIChhYmZkKS0+c3RydGFiX2hkcjsKLSAgLyogc2hfbmFtZSB3YXMgc2V0IGluIHByZXBfaGVhZGVycy4gICovCi0gIHN5bXN0cnRhYl9oZHItPnNoX3R5cGUgPSBTSFRfU1RSVEFCOwotICBzeW1zdHJ0YWJfaGRyLT5zaF9mbGFncyA9IDA7Ci0gIHN5bXN0cnRhYl9oZHItPnNoX2FkZHIgPSAwOwotICBzeW1zdHJ0YWJfaGRyLT5zaF9zaXplID0gX2JmZF9zdHJpbmd0YWJfc2l6ZSAoZmluZm8uc3ltc3RydGFiKTsKLSAgc3ltc3RydGFiX2hkci0+c2hfZW50c2l6ZSA9IDA7Ci0gIHN5bXN0cnRhYl9oZHItPnNoX2xpbmsgPSAwOwotICBzeW1zdHJ0YWJfaGRyLT5zaF9pbmZvID0gMDsKLSAgLyogc2hfb2Zmc2V0IGlzIHNldCBqdXN0IGJlbG93LiAgKi8KLSAgc3ltc3RydGFiX2hkci0+c2hfYWRkcmFsaWduID0gMTsKLQotICBvZmYgPSBfYmZkX2VsZl9hc3NpZ25fZmlsZV9wb3NpdGlvbl9mb3Jfc2VjdGlvbiAoc3ltc3RydGFiX2hkciwgb2ZmLCBUUlVFKTsKLSAgZWxmX3RkYXRhIChhYmZkKS0+bmV4dF9maWxlX3BvcyA9IG9mZjsKLQotICBpZiAoYmZkX2dldF9zeW1jb3VudCAoYWJmZCkgPiAwKQotICAgIHsKLSAgICAgIGlmIChiZmRfc2VlayAoYWJmZCwgc3ltc3RydGFiX2hkci0+c2hfb2Zmc2V0LCBTRUVLX1NFVCkgIT0gMAotCSAgfHwgISBfYmZkX3N0cmluZ3RhYl9lbWl0IChhYmZkLCBmaW5mby5zeW1zdHJ0YWIpKQotCXJldHVybiBGQUxTRTsKLSAgICB9Ci0KLSAgLyogQWRqdXN0IHRoZSByZWxvY3MgdG8gaGF2ZSB0aGUgY29ycmVjdCBzeW1ib2wgaW5kaWNlcy4gICovCi0gIGZvciAobyA9IGFiZmQtPnNlY3Rpb25zOyBvICE9IE5VTEw7IG8gPSBvLT5uZXh0KQotICAgIHsKLSAgICAgIGlmICgoby0+ZmxhZ3MgJiBTRUNfUkVMT0MpID09IDApCi0JY29udGludWU7Ci0KLSAgICAgIGVsZl9saW5rX2FkanVzdF9yZWxvY3MgKGFiZmQsICZlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsX2hkciwKLQkJCSAgICAgIGVsZl9zZWN0aW9uX2RhdGEgKG8pLT5yZWxfY291bnQsCi0JCQkgICAgICBlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsX2hhc2hlcyk7Ci0gICAgICBpZiAoZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9oZHIyICE9IE5VTEwpCi0JZWxmX2xpbmtfYWRqdXN0X3JlbG9jcyAoYWJmZCwgZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9oZHIyLAotCQkJCWVsZl9zZWN0aW9uX2RhdGEgKG8pLT5yZWxfY291bnQyLAotCQkJCShlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsX2hhc2hlcwotCQkJCSArIGVsZl9zZWN0aW9uX2RhdGEgKG8pLT5yZWxfY291bnQpKTsKLQotICAgICAgLyogU2V0IHRoZSByZWxvY19jb3VudCBmaWVsZCB0byAwIHRvIHByZXZlbnQgd3JpdGVfcmVsb2NzIGZyb20KLQkgdHJ5aW5nIHRvIHN3YXAgdGhlIHJlbG9jcyBvdXQgaXRzZWxmLiAgKi8KLSAgICAgIG8tPnJlbG9jX2NvdW50ID0gMDsKLSAgICB9Ci0KLSAgaWYgKGR5bmFtaWMgJiYgaW5mby0+Y29tYnJlbG9jICYmIGR5bm9iaiAhPSBOVUxMKQotICAgIHJlbGF0aXZlY291bnQgPSBlbGZfbGlua19zb3J0X3JlbG9jcyAoYWJmZCwgaW5mbywgJnJlbGR5bik7Ci0KLSAgLyogSWYgd2UgYXJlIGxpbmtpbmcgYWdhaW5zdCBhIGR5bmFtaWMgb2JqZWN0LCBvciBnZW5lcmF0aW5nIGEKLSAgICAgc2hhcmVkIGxpYnJhcnksIGZpbmlzaCB1cCB0aGUgZHluYW1pYyBsaW5raW5nIGluZm9ybWF0aW9uLiAgKi8KLSAgaWYgKGR5bmFtaWMpCi0gICAgewotICAgICAgRWxmX0V4dGVybmFsX0R5biAqZHluY29uLCAqZHluY29uZW5kOwotCi0gICAgICAvKiBGaXggdXAgLmR5bmFtaWMgZW50cmllcy4gICovCi0gICAgICBvID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGR5bm9iaiwgIi5keW5hbWljIik7Ci0gICAgICBCRkRfQVNTRVJUIChvICE9IE5VTEwpOwotCi0gICAgICBkeW5jb24gPSAoRWxmX0V4dGVybmFsX0R5biAqKSBvLT5jb250ZW50czsKLSAgICAgIGR5bmNvbmVuZCA9IChFbGZfRXh0ZXJuYWxfRHluICopIChvLT5jb250ZW50cyArIG8tPl9yYXdfc2l6ZSk7Ci0gICAgICBmb3IgKDsgZHluY29uIDwgZHluY29uZW5kOyBkeW5jb24rKykKLQl7Ci0JICBFbGZfSW50ZXJuYWxfRHluIGR5bjsKLQkgIGNvbnN0IGNoYXIgKm5hbWU7Ci0JICB1bnNpZ25lZCBpbnQgdHlwZTsKLQotCSAgZWxmX3N3YXBfZHluX2luIChkeW5vYmosIGR5bmNvbiwgJmR5bik7Ci0KLQkgIHN3aXRjaCAoZHluLmRfdGFnKQotCSAgICB7Ci0JICAgIGRlZmF1bHQ6Ci0JICAgICAgYnJlYWs7Ci0JICAgIGNhc2UgRFRfTlVMTDoKLQkgICAgICBpZiAocmVsYXRpdmVjb3VudCA+IDAgJiYgZHluY29uICsgMSA8IGR5bmNvbmVuZCkKLQkJewotCQkgIHN3aXRjaCAoZWxmX3NlY3Rpb25fZGF0YSAocmVsZHluKS0+dGhpc19oZHIuc2hfdHlwZSkKLQkJICAgIHsKLQkJICAgIGNhc2UgU0hUX1JFTDogZHluLmRfdGFnID0gRFRfUkVMQ09VTlQ7IGJyZWFrOwotCQkgICAgY2FzZSBTSFRfUkVMQTogZHluLmRfdGFnID0gRFRfUkVMQUNPVU5UOyBicmVhazsKLQkJICAgIGRlZmF1bHQ6IGJyZWFrOwotCQkgICAgfQotCQkgIGlmIChkeW4uZF90YWcgIT0gRFRfTlVMTCkKLQkJICAgIHsKLQkJICAgICAgZHluLmRfdW4uZF92YWwgPSByZWxhdGl2ZWNvdW50OwotCQkgICAgICBlbGZfc3dhcF9keW5fb3V0IChkeW5vYmosICZkeW4sIGR5bmNvbik7Ci0JCSAgICAgIHJlbGF0aXZlY291bnQgPSAwOwotCQkgICAgfQotCQl9Ci0JICAgICAgYnJlYWs7Ci0JICAgIGNhc2UgRFRfSU5JVDoKLQkgICAgICBuYW1lID0gaW5mby0+aW5pdF9mdW5jdGlvbjsKLQkgICAgICBnb3RvIGdldF9zeW07Ci0JICAgIGNhc2UgRFRfRklOSToKLQkgICAgICBuYW1lID0gaW5mby0+ZmluaV9mdW5jdGlvbjsKLQkgICAgZ2V0X3N5bToKLQkgICAgICB7Ci0JCXN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoOwotCi0JCWggPSBlbGZfbGlua19oYXNoX2xvb2t1cCAoZWxmX2hhc2hfdGFibGUgKGluZm8pLCBuYW1lLAotCQkJCQkgIEZBTFNFLCBGQUxTRSwgVFJVRSk7Ci0JCWlmIChoICE9IE5VTEwKLQkJICAgICYmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JCQl8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKSkKLQkJICB7Ci0JCSAgICBkeW4uZF91bi5kX3ZhbCA9IGgtPnJvb3QudS5kZWYudmFsdWU7Ci0JCSAgICBvID0gaC0+cm9vdC51LmRlZi5zZWN0aW9uOwotCQkgICAgaWYgKG8tPm91dHB1dF9zZWN0aW9uICE9IE5VTEwpCi0JCSAgICAgIGR5bi5kX3VuLmRfdmFsICs9IChvLT5vdXRwdXRfc2VjdGlvbi0+dm1hCi0JCQkJCSArIG8tPm91dHB1dF9vZmZzZXQpOwotCQkgICAgZWxzZQotCQkgICAgICB7Ci0JCQkvKiBUaGUgc3ltYm9sIGlzIGltcG9ydGVkIGZyb20gYW5vdGhlciBzaGFyZWQKLQkJCSAgIGxpYnJhcnkgYW5kIGRvZXMgbm90IGFwcGx5IHRvIHRoaXMgb25lLiAgKi8KLQkJCWR5bi5kX3VuLmRfdmFsID0gMDsKLQkJICAgICAgfQotCi0JCSAgICBlbGZfc3dhcF9keW5fb3V0IChkeW5vYmosICZkeW4sIGR5bmNvbik7Ci0JCSAgfQotCSAgICAgIH0KLQkgICAgICBicmVhazsKLQotCSAgICBjYXNlIERUX1BSRUlOSVRfQVJSQVlTWjoKLQkgICAgICBuYW1lID0gIi5wcmVpbml0X2FycmF5IjsKLQkgICAgICBnb3RvIGdldF9zaXplOwotCSAgICBjYXNlIERUX0lOSVRfQVJSQVlTWjoKLQkgICAgICBuYW1lID0gIi5pbml0X2FycmF5IjsKLQkgICAgICBnb3RvIGdldF9zaXplOwotCSAgICBjYXNlIERUX0ZJTklfQVJSQVlTWjoKLQkgICAgICBuYW1lID0gIi5maW5pX2FycmF5IjsKLQkgICAgZ2V0X3NpemU6Ci0JICAgICAgbyA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCBuYW1lKTsKLQkgICAgICBpZiAobyA9PSBOVUxMKQotCQl7Ci0JCSAgKCpfYmZkX2Vycm9yX2hhbmRsZXIpCi0JCSAgICAoXygiJXM6IGNvdWxkIG5vdCBmaW5kIG91dHB1dCBzZWN0aW9uICVzIiksCi0JCSAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksIG5hbWUpOwotCQkgIGdvdG8gZXJyb3JfcmV0dXJuOwotCQl9Ci0JICAgICAgaWYgKG8tPl9yYXdfc2l6ZSA9PSAwKQotCQkoKl9iZmRfZXJyb3JfaGFuZGxlcikKLQkJICAoXygid2FybmluZzogJXMgc2VjdGlvbiBoYXMgemVybyBzaXplIiksIG5hbWUpOwotCSAgICAgIGR5bi5kX3VuLmRfdmFsID0gby0+X3Jhd19zaXplOwotCSAgICAgIGVsZl9zd2FwX2R5bl9vdXQgKGR5bm9iaiwgJmR5biwgZHluY29uKTsKLQkgICAgICBicmVhazsKLQotCSAgICBjYXNlIERUX1BSRUlOSVRfQVJSQVk6Ci0JICAgICAgbmFtZSA9ICIucHJlaW5pdF9hcnJheSI7Ci0JICAgICAgZ290byBnZXRfdm1hOwotCSAgICBjYXNlIERUX0lOSVRfQVJSQVk6Ci0JICAgICAgbmFtZSA9ICIuaW5pdF9hcnJheSI7Ci0JICAgICAgZ290byBnZXRfdm1hOwotCSAgICBjYXNlIERUX0ZJTklfQVJSQVk6Ci0JICAgICAgbmFtZSA9ICIuZmluaV9hcnJheSI7Ci0JICAgICAgZ290byBnZXRfdm1hOwotCi0JICAgIGNhc2UgRFRfSEFTSDoKLQkgICAgICBuYW1lID0gIi5oYXNoIjsKLQkgICAgICBnb3RvIGdldF92bWE7Ci0JICAgIGNhc2UgRFRfU1RSVEFCOgotCSAgICAgIG5hbWUgPSAiLmR5bnN0ciI7Ci0JICAgICAgZ290byBnZXRfdm1hOwotCSAgICBjYXNlIERUX1NZTVRBQjoKLQkgICAgICBuYW1lID0gIi5keW5zeW0iOwotCSAgICAgIGdvdG8gZ2V0X3ZtYTsKLQkgICAgY2FzZSBEVF9WRVJERUY6Ci0JICAgICAgbmFtZSA9ICIuZ251LnZlcnNpb25fZCI7Ci0JICAgICAgZ290byBnZXRfdm1hOwotCSAgICBjYXNlIERUX1ZFUk5FRUQ6Ci0JICAgICAgbmFtZSA9ICIuZ251LnZlcnNpb25fciI7Ci0JICAgICAgZ290byBnZXRfdm1hOwotCSAgICBjYXNlIERUX1ZFUlNZTToKLQkgICAgICBuYW1lID0gIi5nbnUudmVyc2lvbiI7Ci0JICAgIGdldF92bWE6Ci0JICAgICAgbyA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCBuYW1lKTsKLQkgICAgICBpZiAobyA9PSBOVUxMKQotCQl7Ci0JCSAgKCpfYmZkX2Vycm9yX2hhbmRsZXIpCi0JCSAgICAoXygiJXM6IGNvdWxkIG5vdCBmaW5kIG91dHB1dCBzZWN0aW9uICVzIiksCi0JCSAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksIG5hbWUpOwotCQkgIGdvdG8gZXJyb3JfcmV0dXJuOwotCQl9Ci0JICAgICAgZHluLmRfdW4uZF9wdHIgPSBvLT52bWE7Ci0JICAgICAgZWxmX3N3YXBfZHluX291dCAoZHlub2JqLCAmZHluLCBkeW5jb24pOwotCSAgICAgIGJyZWFrOwotCi0JICAgIGNhc2UgRFRfUkVMOgotCSAgICBjYXNlIERUX1JFTEE6Ci0JICAgIGNhc2UgRFRfUkVMU1o6Ci0JICAgIGNhc2UgRFRfUkVMQVNaOgotCSAgICAgIGlmIChkeW4uZF90YWcgPT0gRFRfUkVMIHx8IGR5bi5kX3RhZyA9PSBEVF9SRUxTWikKLQkJdHlwZSA9IFNIVF9SRUw7Ci0JICAgICAgZWxzZQotCQl0eXBlID0gU0hUX1JFTEE7Ci0JICAgICAgZHluLmRfdW4uZF92YWwgPSAwOwotCSAgICAgIGZvciAoaSA9IDE7IGkgPCBlbGZfbnVtc2VjdGlvbnMgKGFiZmQpOyBpKyspCi0JCXsKLQkJICBFbGZfSW50ZXJuYWxfU2hkciAqaGRyOwotCi0JCSAgaGRyID0gZWxmX2VsZnNlY3Rpb25zIChhYmZkKVtpXTsKLQkJICBpZiAoaGRyLT5zaF90eXBlID09IHR5cGUKLQkJICAgICAgJiYgKGhkci0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MpICE9IDApCi0JCSAgICB7Ci0JCSAgICAgIGlmIChkeW4uZF90YWcgPT0gRFRfUkVMU1ogfHwgZHluLmRfdGFnID09IERUX1JFTEFTWikKLQkJCWR5bi5kX3VuLmRfdmFsICs9IGhkci0+c2hfc2l6ZTsKLQkJICAgICAgZWxzZQotCQkJewotCQkJICBpZiAoZHluLmRfdW4uZF92YWwgPT0gMAotCQkJICAgICAgfHwgaGRyLT5zaF9hZGRyIDwgZHluLmRfdW4uZF92YWwpCi0JCQkgICAgZHluLmRfdW4uZF92YWwgPSBoZHItPnNoX2FkZHI7Ci0JCQl9Ci0JCSAgICB9Ci0JCX0KLQkgICAgICBlbGZfc3dhcF9keW5fb3V0IChkeW5vYmosICZkeW4sIGR5bmNvbik7Ci0JICAgICAgYnJlYWs7Ci0JICAgIH0KLQl9Ci0gICAgfQotCi0gIC8qIElmIHdlIGhhdmUgY3JlYXRlZCBhbnkgZHluYW1pYyBzZWN0aW9ucywgdGhlbiBvdXRwdXQgdGhlbS4gICovCi0gIGlmIChkeW5vYmogIT0gTlVMTCkKLSAgICB7Ci0gICAgICBpZiAoISAoKmJlZC0+ZWxmX2JhY2tlbmRfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpIChhYmZkLCBpbmZvKSkKLQlnb3RvIGVycm9yX3JldHVybjsKLQotICAgICAgZm9yIChvID0gZHlub2JqLT5zZWN0aW9uczsgbyAhPSBOVUxMOyBvID0gby0+bmV4dCkKLQl7Ci0JICBpZiAoKG8tPmZsYWdzICYgU0VDX0hBU19DT05URU5UUykgPT0gMAotCSAgICAgIHx8IG8tPl9yYXdfc2l6ZSA9PSAwCi0JICAgICAgfHwgby0+b3V0cHV0X3NlY3Rpb24gPT0gYmZkX2Fic19zZWN0aW9uX3B0cikKLQkgICAgY29udGludWU7Ci0JICBpZiAoKG8tPmZsYWdzICYgU0VDX0xJTktFUl9DUkVBVEVEKSA9PSAwKQotCSAgICB7Ci0JICAgICAgLyogQXQgdGhpcyBwb2ludCwgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBzZWN0aW9ucwotCQkgY3JlYXRlZCBieSBfYmZkX2VsZl9saW5rX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zLiAgKi8KLQkgICAgICBjb250aW51ZTsKLQkgICAgfQotCSAgaWYgKChlbGZfc2VjdGlvbl9kYXRhIChvLT5vdXRwdXRfc2VjdGlvbiktPnRoaXNfaGRyLnNoX3R5cGUKLQkgICAgICAgIT0gU0hUX1NUUlRBQikKLQkgICAgICB8fCBzdHJjbXAgKGJmZF9nZXRfc2VjdGlvbl9uYW1lIChhYmZkLCBvKSwgIi5keW5zdHIiKSAhPSAwKQotCSAgICB7Ci0JICAgICAgaWYgKCEgYmZkX3NldF9zZWN0aW9uX2NvbnRlbnRzIChhYmZkLCBvLT5vdXRwdXRfc2VjdGlvbiwKLQkJCQkJICAgICAgby0+Y29udGVudHMsCi0JCQkJCSAgICAgIChmaWxlX3B0cikgby0+b3V0cHV0X29mZnNldCwKLQkJCQkJICAgICAgby0+X3Jhd19zaXplKSkKLQkJZ290byBlcnJvcl9yZXR1cm47Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIC8qIFRoZSBjb250ZW50cyBvZiB0aGUgLmR5bnN0ciBzZWN0aW9uIGFyZSBhY3R1YWxseSBpbiBhCi0JCSBzdHJpbmd0YWIuICAqLwotCSAgICAgIG9mZiA9IGVsZl9zZWN0aW9uX2RhdGEgKG8tPm91dHB1dF9zZWN0aW9uKS0+dGhpc19oZHIuc2hfb2Zmc2V0OwotCSAgICAgIGlmIChiZmRfc2VlayAoYWJmZCwgb2ZmLCBTRUVLX1NFVCkgIT0gMAotCQkgIHx8ICEgX2JmZF9lbGZfc3RydGFiX2VtaXQgKGFiZmQsCi0JCQkJCSAgICAgZWxmX2hhc2hfdGFibGUgKGluZm8pLT5keW5zdHIpKQotCQlnb3RvIGVycm9yX3JldHVybjsKLQkgICAgfQotCX0KLSAgICB9Ci0KLSAgaWYgKGluZm8tPnJlbG9jYXRhYmxlKQotICAgIHsKLSAgICAgIGJmZF9ib29sZWFuIGZhaWxlZCA9IEZBTFNFOwotCi0gICAgICBiZmRfbWFwX292ZXJfc2VjdGlvbnMgKGFiZmQsIGJmZF9lbGZfc2V0X2dyb3VwX2NvbnRlbnRzLCAmZmFpbGVkKTsKLSAgICAgIGlmIChmYWlsZWQpCi0JZ290byBlcnJvcl9yZXR1cm47Ci0gICAgfQotCi0gIC8qIElmIHdlIGhhdmUgb3B0aW1pemVkIHN0YWJzIHN0cmluZ3MsIG91dHB1dCB0aGVtLiAgKi8KLSAgaWYgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+c3RhYl9pbmZvICE9IE5VTEwpCi0gICAgewotICAgICAgaWYgKCEgX2JmZF93cml0ZV9zdGFiX3N0cmluZ3MgKGFiZmQsICZlbGZfaGFzaF90YWJsZSAoaW5mbyktPnN0YWJfaW5mbykpCi0JZ290byBlcnJvcl9yZXR1cm47Ci0gICAgfQotCi0gIGlmIChpbmZvLT5laF9mcmFtZV9oZHIpCi0gICAgewotICAgICAgaWYgKCEgX2JmZF9lbGZfd3JpdGVfc2VjdGlvbl9laF9mcmFtZV9oZHIgKGFiZmQsIGluZm8pKQotCWdvdG8gZXJyb3JfcmV0dXJuOwotICAgIH0KLQotICBpZiAoZmluZm8uc3ltc3RydGFiICE9IE5VTEwpCi0gICAgX2JmZF9zdHJpbmd0YWJfZnJlZSAoZmluZm8uc3ltc3RydGFiKTsKLSAgaWYgKGZpbmZvLmNvbnRlbnRzICE9IE5VTEwpCi0gICAgZnJlZSAoZmluZm8uY29udGVudHMpOwotICBpZiAoZmluZm8uZXh0ZXJuYWxfcmVsb2NzICE9IE5VTEwpCi0gICAgZnJlZSAoZmluZm8uZXh0ZXJuYWxfcmVsb2NzKTsKLSAgaWYgKGZpbmZvLmludGVybmFsX3JlbG9jcyAhPSBOVUxMKQotICAgIGZyZWUgKGZpbmZvLmludGVybmFsX3JlbG9jcyk7Ci0gIGlmIChmaW5mby5leHRlcm5hbF9zeW1zICE9IE5VTEwpCi0gICAgZnJlZSAoZmluZm8uZXh0ZXJuYWxfc3ltcyk7Ci0gIGlmIChmaW5mby5sb2NzeW1fc2huZHggIT0gTlVMTCkKLSAgICBmcmVlIChmaW5mby5sb2NzeW1fc2huZHgpOwotICBpZiAoZmluZm8uaW50ZXJuYWxfc3ltcyAhPSBOVUxMKQotICAgIGZyZWUgKGZpbmZvLmludGVybmFsX3N5bXMpOwotICBpZiAoZmluZm8uaW5kaWNlcyAhPSBOVUxMKQotICAgIGZyZWUgKGZpbmZvLmluZGljZXMpOwotICBpZiAoZmluZm8uc2VjdGlvbnMgIT0gTlVMTCkKLSAgICBmcmVlIChmaW5mby5zZWN0aW9ucyk7Ci0gIGlmIChmaW5mby5zeW1idWYgIT0gTlVMTCkKLSAgICBmcmVlIChmaW5mby5zeW1idWYpOwotICBpZiAoZmluZm8uc3ltc2huZHhidWYgIT0gTlVMTCkKLSAgICBmcmVlIChmaW5mby5zeW1zaG5keGJ1Zik7Ci0gIGZvciAobyA9IGFiZmQtPnNlY3Rpb25zOyBvICE9IE5VTEw7IG8gPSBvLT5uZXh0KQotICAgIHsKLSAgICAgIGlmICgoby0+ZmxhZ3MgJiBTRUNfUkVMT0MpICE9IDAKLQkgICYmIGVsZl9zZWN0aW9uX2RhdGEgKG8pLT5yZWxfaGFzaGVzICE9IE5VTEwpCi0JZnJlZSAoZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9oYXNoZXMpOwotICAgIH0KLQotICBlbGZfdGRhdGEgKGFiZmQpLT5saW5rZXIgPSBUUlVFOwotCi0gIHJldHVybiBUUlVFOwotCi0gZXJyb3JfcmV0dXJuOgotICBpZiAoZmluZm8uc3ltc3RydGFiICE9IE5VTEwpCi0gICAgX2JmZF9zdHJpbmd0YWJfZnJlZSAoZmluZm8uc3ltc3RydGFiKTsKLSAgaWYgKGZpbmZvLmNvbnRlbnRzICE9IE5VTEwpCi0gICAgZnJlZSAoZmluZm8uY29udGVudHMpOwotICBpZiAoZmluZm8uZXh0ZXJuYWxfcmVsb2NzICE9IE5VTEwpCi0gICAgZnJlZSAoZmluZm8uZXh0ZXJuYWxfcmVsb2NzKTsKLSAgaWYgKGZpbmZvLmludGVybmFsX3JlbG9jcyAhPSBOVUxMKQotICAgIGZyZWUgKGZpbmZvLmludGVybmFsX3JlbG9jcyk7Ci0gIGlmIChmaW5mby5leHRlcm5hbF9zeW1zICE9IE5VTEwpCi0gICAgZnJlZSAoZmluZm8uZXh0ZXJuYWxfc3ltcyk7Ci0gIGlmIChmaW5mby5sb2NzeW1fc2huZHggIT0gTlVMTCkKLSAgICBmcmVlIChmaW5mby5sb2NzeW1fc2huZHgpOwotICBpZiAoZmluZm8uaW50ZXJuYWxfc3ltcyAhPSBOVUxMKQotICAgIGZyZWUgKGZpbmZvLmludGVybmFsX3N5bXMpOwotICBpZiAoZmluZm8uaW5kaWNlcyAhPSBOVUxMKQotICAgIGZyZWUgKGZpbmZvLmluZGljZXMpOwotICBpZiAoZmluZm8uc2VjdGlvbnMgIT0gTlVMTCkKLSAgICBmcmVlIChmaW5mby5zZWN0aW9ucyk7Ci0gIGlmIChmaW5mby5zeW1idWYgIT0gTlVMTCkKLSAgICBmcmVlIChmaW5mby5zeW1idWYpOwotICBpZiAoZmluZm8uc3ltc2huZHhidWYgIT0gTlVMTCkKLSAgICBmcmVlIChmaW5mby5zeW1zaG5keGJ1Zik7Ci0gIGZvciAobyA9IGFiZmQtPnNlY3Rpb25zOyBvICE9IE5VTEw7IG8gPSBvLT5uZXh0KQotICAgIHsKLSAgICAgIGlmICgoby0+ZmxhZ3MgJiBTRUNfUkVMT0MpICE9IDAKLQkgICYmIGVsZl9zZWN0aW9uX2RhdGEgKG8pLT5yZWxfaGFzaGVzICE9IE5VTEwpCi0JZnJlZSAoZWxmX3NlY3Rpb25fZGF0YSAobyktPnJlbF9oYXNoZXMpOwotICAgIH0KLQotICByZXR1cm4gRkFMU0U7Ci19Ci0KLS8qIEFkZCBhIHN5bWJvbCB0byB0aGUgb3V0cHV0IHN5bWJvbCB0YWJsZS4gICovCi0KLXN0YXRpYyBiZmRfYm9vbGVhbgotZWxmX2xpbmtfb3V0cHV0X3N5bSAoc3RydWN0IGVsZl9maW5hbF9saW5rX2luZm8gKmZpbmZvLAotCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0JCSAgICAgRWxmX0ludGVybmFsX1N5bSAqZWxmc3ltLAotCQkgICAgIGFzZWN0aW9uICppbnB1dF9zZWMsCi0JCSAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgpCi17Ci0gIEVsZl9FeHRlcm5hbF9TeW0gKmRlc3Q7Ci0gIEVsZl9FeHRlcm5hbF9TeW1fU2huZHggKmRlc3RzaG5keDsKLSAgYmZkX2Jvb2xlYW4gKCpvdXRwdXRfc3ltYm9sX2hvb2spCi0gICAgKHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNvbnN0IGNoYXIgKiwgRWxmX0ludGVybmFsX1N5bSAqLCBhc2VjdGlvbiAqLAotICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKTsKLQotICBvdXRwdXRfc3ltYm9sX2hvb2sgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoZmluZm8tPm91dHB1dF9iZmQpLT4KLSAgICBlbGZfYmFja2VuZF9saW5rX291dHB1dF9zeW1ib2xfaG9vazsKLSAgaWYgKG91dHB1dF9zeW1ib2xfaG9vayAhPSBOVUxMKQotICAgIHsKLSAgICAgIGlmICghICgqb3V0cHV0X3N5bWJvbF9ob29rKSAoZmluZm8tPmluZm8sIG5hbWUsIGVsZnN5bSwgaW5wdXRfc2VjLCBoKSkKLQlyZXR1cm4gRkFMU0U7Ci0gICAgfQotCi0gIGlmIChuYW1lID09IE5VTEwgfHwgKm5hbWUgPT0gJ1wwJykKLSAgICBlbGZzeW0tPnN0X25hbWUgPSAwOwotICBlbHNlIGlmIChpbnB1dF9zZWMtPmZsYWdzICYgU0VDX0VYQ0xVREUpCi0gICAgZWxmc3ltLT5zdF9uYW1lID0gMDsKLSAgZWxzZQotICAgIHsKLSAgICAgIGVsZnN5bS0+c3RfbmFtZSA9ICh1bnNpZ25lZCBsb25nKSBfYmZkX3N0cmluZ3RhYl9hZGQgKGZpbmZvLT5zeW1zdHJ0YWIsCi0JCQkJCQkJICAgIG5hbWUsIFRSVUUsIEZBTFNFKTsKLSAgICAgIGlmIChlbGZzeW0tPnN0X25hbWUgPT0gKHVuc2lnbmVkIGxvbmcpIC0xKQotCXJldHVybiBGQUxTRTsKLSAgICB9Ci0KLSAgaWYgKGZpbmZvLT5zeW1idWZfY291bnQgPj0gZmluZm8tPnN5bWJ1Zl9zaXplKQotICAgIHsKLSAgICAgIGlmICghIGVsZl9saW5rX2ZsdXNoX291dHB1dF9zeW1zIChmaW5mbykpCi0JcmV0dXJuIEZBTFNFOwotICAgIH0KLQotICBkZXN0ID0gZmluZm8tPnN5bWJ1ZiArIGZpbmZvLT5zeW1idWZfY291bnQ7Ci0gIGRlc3RzaG5keCA9IGZpbmZvLT5zeW1zaG5keGJ1ZjsKLSAgaWYgKGRlc3RzaG5keCAhPSBOVUxMKQotICAgIHsKLSAgICAgIGlmIChiZmRfZ2V0X3N5bWNvdW50IChmaW5mby0+b3V0cHV0X2JmZCkgPj0gZmluZm8tPnNobmR4YnVmX3NpemUpCi0JewotCSAgYmZkX3NpemVfdHlwZSBhbXQ7Ci0KLQkgIGFtdCA9IGZpbmZvLT5zaG5keGJ1Zl9zaXplICogc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltX1NobmR4KTsKLQkgIGZpbmZvLT5zeW1zaG5keGJ1ZiA9IGRlc3RzaG5keCA9IGJmZF9yZWFsbG9jIChkZXN0c2huZHgsIGFtdCAqIDIpOwotCSAgaWYgKGRlc3RzaG5keCA9PSBOVUxMKQotCSAgICByZXR1cm4gRkFMU0U7Ci0JICBtZW1zZXQgKChjaGFyICopIGRlc3RzaG5keCArIGFtdCwgMCwgYW10KTsKLQkgIGZpbmZvLT5zaG5keGJ1Zl9zaXplICo9IDI7Ci0JfQotICAgICAgZGVzdHNobmR4ICs9IGJmZF9nZXRfc3ltY291bnQgKGZpbmZvLT5vdXRwdXRfYmZkKTsKLSAgICB9Ci0KLSAgZWxmX3N3YXBfc3ltYm9sX291dCAoZmluZm8tPm91dHB1dF9iZmQsIGVsZnN5bSwgZGVzdCwgZGVzdHNobmR4KTsKLSAgZmluZm8tPnN5bWJ1Zl9jb3VudCArPSAxOwotICBiZmRfZ2V0X3N5bWNvdW50IChmaW5mby0+b3V0cHV0X2JmZCkgKz0gMTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotLyogRmx1c2ggdGhlIG91dHB1dCBzeW1ib2xzIHRvIHRoZSBmaWxlLiAgKi8KLQotc3RhdGljIGJmZF9ib29sZWFuCi1lbGZfbGlua19mbHVzaF9vdXRwdXRfc3ltcyAoc3RydWN0IGVsZl9maW5hbF9saW5rX2luZm8gKmZpbmZvKQotewotICBpZiAoZmluZm8tPnN5bWJ1Zl9jb3VudCA+IDApCi0gICAgewotICAgICAgRWxmX0ludGVybmFsX1NoZHIgKmhkcjsKLSAgICAgIGZpbGVfcHRyIHBvczsKLSAgICAgIGJmZF9zaXplX3R5cGUgYW10OwotCi0gICAgICBoZHIgPSAmZWxmX3RkYXRhIChmaW5mby0+b3V0cHV0X2JmZCktPnN5bXRhYl9oZHI7Ci0gICAgICBwb3MgPSBoZHItPnNoX29mZnNldCArIGhkci0+c2hfc2l6ZTsKLSAgICAgIGFtdCA9IGZpbmZvLT5zeW1idWZfY291bnQgKiBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW0pOwotICAgICAgaWYgKGJmZF9zZWVrIChmaW5mby0+b3V0cHV0X2JmZCwgcG9zLCBTRUVLX1NFVCkgIT0gMAotCSAgfHwgYmZkX2J3cml0ZSAoZmluZm8tPnN5bWJ1ZiwgYW10LCBmaW5mby0+b3V0cHV0X2JmZCkgIT0gYW10KQotCXJldHVybiBGQUxTRTsKLQotICAgICAgaGRyLT5zaF9zaXplICs9IGFtdDsKLSAgICAgIGZpbmZvLT5zeW1idWZfY291bnQgPSAwOwotICAgIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQotLyogRm9yIERTT3MgbG9hZGVkIGluIHZpYSBhIERUX05FRURFRCBlbnRyeSwgZW11bGF0ZSBsZC5zbyBpbgotICAgYWxsb3dpbmcgYW4gdW5zYXRpc2ZpZWQgdW52ZXJzaW9uZWQgc3ltYm9sIGluIHRoZSBEU08gdG8gbWF0Y2ggYQotICAgdmVyc2lvbmVkIHN5bWJvbCB0aGF0IHdvdWxkIG5vcm1hbGx5IHJlcXVpcmUgYW4gZXhwbGljaXQgdmVyc2lvbi4KLSAgIFdlIGFsc28gaGFuZGxlIHRoZSBjYXNlIHRoYXQgYSBEU08gcmVmZXJlbmNlcyBhIGhpZGRlbiBzeW1ib2wKLSAgIHdoaWNoIG1heSBiZSBzYXRpc2ZpZWQgYnkgYSB2ZXJzaW9uZWQgc3ltYm9sIGluIGFub3RoZXIgRFNPLiAgKi8KLQotc3RhdGljIGJmZF9ib29sZWFuCi1lbGZfbGlua19jaGVja192ZXJzaW9uZWRfc3ltYm9sIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKLQkJCQkgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgpCi17Ci0gIGJmZCAqYWJmZDsKLSAgc3RydWN0IGVsZl9saW5rX2xvYWRlZF9saXN0ICpsb2FkZWQ7Ci0KLSAgaWYgKCFpc19lbGZfaGFzaF90YWJsZSAoaW5mby0+aGFzaCkpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIHN3aXRjaCAoaC0+cm9vdC50eXBlKQotICAgIHsKLSAgICBkZWZhdWx0OgotICAgICAgYWJmZCA9IE5VTEw7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgYmZkX2xpbmtfaGFzaF91bmRlZmluZWQ6Ci0gICAgY2FzZSBiZmRfbGlua19oYXNoX3VuZGVmd2VhazoKLSAgICAgIGFiZmQgPSBoLT5yb290LnUudW5kZWYuYWJmZDsKLSAgICAgIGlmICgoYWJmZC0+ZmxhZ3MgJiBEWU5BTUlDKSA9PSAwIHx8IGVsZl9kdF9zb25hbWUgKGFiZmQpID09IE5VTEwpCi0JcmV0dXJuIEZBTFNFOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIGJmZF9saW5rX2hhc2hfZGVmaW5lZDoKLSAgICBjYXNlIGJmZF9saW5rX2hhc2hfZGVmd2VhazoKLSAgICAgIGFiZmQgPSBoLT5yb290LnUuZGVmLnNlY3Rpb24tPm93bmVyOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIGJmZF9saW5rX2hhc2hfY29tbW9uOgotICAgICAgYWJmZCA9IGgtPnJvb3QudS5jLnAtPnNlY3Rpb24tPm93bmVyOwotICAgICAgYnJlYWs7Ci0gICAgfQotICBCRkRfQVNTRVJUIChhYmZkICE9IE5VTEwpOwotCi0gIGZvciAobG9hZGVkID0gZWxmX2hhc2hfdGFibGUgKGluZm8pLT5sb2FkZWQ7Ci0gICAgICAgbG9hZGVkICE9IE5VTEw7Ci0gICAgICAgbG9hZGVkID0gbG9hZGVkLT5uZXh0KQotICAgIHsKLSAgICAgIGJmZCAqaW5wdXQ7Ci0gICAgICBFbGZfSW50ZXJuYWxfU2hkciAqaGRyOwotICAgICAgYmZkX3NpemVfdHlwZSBzeW1jb3VudDsKLSAgICAgIGJmZF9zaXplX3R5cGUgZXh0c3ltY291bnQ7Ci0gICAgICBiZmRfc2l6ZV90eXBlIGV4dHN5bW9mZjsKLSAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICp2ZXJzeW1oZHI7Ci0gICAgICBFbGZfSW50ZXJuYWxfU3ltICppc3ltOwotICAgICAgRWxmX0ludGVybmFsX1N5bSAqaXN5bWVuZDsKLSAgICAgIEVsZl9JbnRlcm5hbF9TeW0gKmlzeW1idWY7Ci0gICAgICBFbGZfRXh0ZXJuYWxfVmVyc3ltICpldmVyOwotICAgICAgRWxmX0V4dGVybmFsX1ZlcnN5bSAqZXh0dmVyc3ltOwotCi0gICAgICBpbnB1dCA9IGxvYWRlZC0+YWJmZDsKLQotICAgICAgLyogV2UgY2hlY2sgZWFjaCBEU08gZm9yIGEgcG9zc2libGUgaGlkZGVuIHZlcnNpb25lZCBkZWZpbml0aW9uLiAgKi8KLSAgICAgIGlmIChpbnB1dCA9PSBhYmZkCi0JICB8fCAoaW5wdXQtPmZsYWdzICYgRFlOQU1JQykgPT0gMAotCSAgfHwgZWxmX2R5bnZlcnN5bSAoaW5wdXQpID09IDApCi0JY29udGludWU7Ci0KLSAgICAgIGhkciA9ICZlbGZfdGRhdGEgKGlucHV0KS0+ZHluc3ltdGFiX2hkcjsKLQotICAgICAgc3ltY291bnQgPSBoZHItPnNoX3NpemUgLyBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW0pOwotICAgICAgaWYgKGVsZl9iYWRfc3ltdGFiIChpbnB1dCkpCi0JewotCSAgZXh0c3ltY291bnQgPSBzeW1jb3VudDsKLQkgIGV4dHN5bW9mZiA9IDA7Ci0JfQotICAgICAgZWxzZQotCXsKLQkgIGV4dHN5bWNvdW50ID0gc3ltY291bnQgLSBoZHItPnNoX2luZm87Ci0JICBleHRzeW1vZmYgPSBoZHItPnNoX2luZm87Ci0JfQotCi0gICAgICBpZiAoZXh0c3ltY291bnQgPT0gMCkKLQljb250aW51ZTsKLQotICAgICAgaXN5bWJ1ZiA9IGJmZF9lbGZfZ2V0X2VsZl9zeW1zIChpbnB1dCwgaGRyLCBleHRzeW1jb3VudCwgZXh0c3ltb2ZmLAotCQkJCSAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotICAgICAgaWYgKGlzeW1idWYgPT0gTlVMTCkKLQlyZXR1cm4gRkFMU0U7Ci0KLSAgICAgIC8qIFJlYWQgaW4gYW55IHZlcnNpb24gZGVmaW5pdGlvbnMuICAqLwotICAgICAgdmVyc3ltaGRyID0gJmVsZl90ZGF0YSAoaW5wdXQpLT5keW52ZXJzeW1faGRyOwotICAgICAgZXh0dmVyc3ltID0gYmZkX21hbGxvYyAodmVyc3ltaGRyLT5zaF9zaXplKTsKLSAgICAgIGlmIChleHR2ZXJzeW0gPT0gTlVMTCkKLQlnb3RvIGVycm9yX3JldDsKLQotICAgICAgaWYgKGJmZF9zZWVrIChpbnB1dCwgdmVyc3ltaGRyLT5zaF9vZmZzZXQsIFNFRUtfU0VUKSAhPSAwCi0JICB8fCAoYmZkX2JyZWFkIChleHR2ZXJzeW0sIHZlcnN5bWhkci0+c2hfc2l6ZSwgaW5wdXQpCi0JICAgICAgIT0gdmVyc3ltaGRyLT5zaF9zaXplKSkKLQl7Ci0JICBmcmVlIChleHR2ZXJzeW0pOwotCWVycm9yX3JldDoKLQkgIGZyZWUgKGlzeW1idWYpOwotCSAgcmV0dXJuIEZBTFNFOwotCX0KLQotICAgICAgZXZlciA9IGV4dHZlcnN5bSArIGV4dHN5bW9mZjsKLSAgICAgIGlzeW1lbmQgPSBpc3ltYnVmICsgZXh0c3ltY291bnQ7Ci0gICAgICBmb3IgKGlzeW0gPSBpc3ltYnVmOyBpc3ltIDwgaXN5bWVuZDsgaXN5bSsrLCBldmVyKyspCi0JewotCSAgY29uc3QgY2hhciAqbmFtZTsKLQkgIEVsZl9JbnRlcm5hbF9WZXJzeW0gaXZlcjsKLQkgIHVuc2lnbmVkIHNob3J0IHZlcnNpb25faW5kZXg7Ci0KLQkgIGlmIChFTEZfU1RfQklORCAoaXN5bS0+c3RfaW5mbykgPT0gU1RCX0xPQ0FMCi0JICAgICAgfHwgaXN5bS0+c3Rfc2huZHggPT0gU0hOX1VOREVGKQotCSAgICBjb250aW51ZTsKLQotCSAgbmFtZSA9IGJmZF9lbGZfc3RyaW5nX2Zyb21fZWxmX3NlY3Rpb24gKGlucHV0LAotCQkJCQkJICBoZHItPnNoX2xpbmssCi0JCQkJCQkgIGlzeW0tPnN0X25hbWUpOwotCSAgaWYgKHN0cmNtcCAobmFtZSwgaC0+cm9vdC5yb290LnN0cmluZykgIT0gMCkKLQkgICAgY29udGludWU7Ci0KLQkgIF9iZmRfZWxmX3N3YXBfdmVyc3ltX2luIChpbnB1dCwgZXZlciwgJml2ZXIpOwotCi0JICBpZiAoKGl2ZXIudnNfdmVycyAmIFZFUlNZTV9ISURERU4pID09IDApCi0JICAgIHsKLQkgICAgICAvKiBJZiB3ZSBoYXZlIGEgbm9uLWhpZGRlbiB2ZXJzaW9uZWQgc3ltLCB0aGVuIGl0IHNob3VsZAotCQkgaGF2ZSBwcm92aWRlZCBhIGRlZmluaXRpb24gZm9yIHRoZSB1bmRlZmluZWQgc3ltLiAgKi8KLQkgICAgICBhYm9ydCAoKTsKLQkgICAgfQotCi0JICB2ZXJzaW9uX2luZGV4ID0gaXZlci52c192ZXJzICYgVkVSU1lNX1ZFUlNJT047Ci0JICBpZiAodmVyc2lvbl9pbmRleCA9PSAxIHx8IHZlcnNpb25faW5kZXggPT0gMikKLQkgICAgewotCSAgICAgIC8qIFRoaXMgaXMgdGhlIGJhc2Ugb3IgZmlyc3QgdmVyc2lvbi4gIFdlIGNhbiB1c2UgaXQuICAqLwotCSAgICAgIGZyZWUgKGV4dHZlcnN5bSk7Ci0JICAgICAgZnJlZSAoaXN5bWJ1Zik7Ci0JICAgICAgcmV0dXJuIFRSVUU7Ci0JICAgIH0KLQl9Ci0KLSAgICAgIGZyZWUgKGV4dHZlcnN5bSk7Ci0gICAgICBmcmVlIChpc3ltYnVmKTsKLSAgICB9Ci0KLSAgcmV0dXJuIEZBTFNFOwotfQotCi0vKiBBZGQgYW4gZXh0ZXJuYWwgc3ltYm9sIHRvIHRoZSBzeW1ib2wgdGFibGUuICBUaGlzIGlzIGNhbGxlZCBmcm9tCi0gICB0aGUgaGFzaCB0YWJsZSB0cmF2ZXJzYWwgcm91dGluZS4gIFdoZW4gZ2VuZXJhdGluZyBhIHNoYXJlZCBvYmplY3QsCi0gICB3ZSBnbyB0aHJvdWdoIHRoZSBzeW1ib2wgdGFibGUgdHdpY2UuICBUaGUgZmlyc3QgdGltZSB3ZSBvdXRwdXQKLSAgIGFueXRoaW5nIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIGZvcmNlZCB0byBsb2NhbCBzY29wZSBpbiBhIHZlcnNpb24KLSAgIHNjcmlwdC4gIFRoZSBzZWNvbmQgdGltZSB3ZSBvdXRwdXQgdGhlIHN5bWJvbHMgdGhhdCBhcmUgc3RpbGwKLSAgIGdsb2JhbCBzeW1ib2xzLiAgKi8KLQotc3RhdGljIGJmZF9ib29sZWFuCi1lbGZfbGlua19vdXRwdXRfZXh0c3ltIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwgdm9pZCAqZGF0YSkKLXsKLSAgc3RydWN0IGVsZl9vdXRleHRfaW5mbyAqZW9pbmZvID0gZGF0YTsKLSAgc3RydWN0IGVsZl9maW5hbF9saW5rX2luZm8gKmZpbmZvID0gZW9pbmZvLT5maW5mbzsKLSAgYmZkX2Jvb2xlYW4gc3RyaXA7Ci0gIEVsZl9JbnRlcm5hbF9TeW0gc3ltOwotICBhc2VjdGlvbiAqaW5wdXRfc2VjOwotCi0gIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQotICAgIHsKLSAgICAgIGggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKLSAgICAgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9uZXcpCi0JcmV0dXJuIFRSVUU7Ci0gICAgfQotCi0gIC8qIERlY2lkZSB3aGV0aGVyIHRvIG91dHB1dCB0aGlzIHN5bWJvbCBpbiB0aGlzIHBhc3MuICAqLwotICBpZiAoZW9pbmZvLT5sb2NhbHN5bXMpCi0gICAgewotICAgICAgaWYgKChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQotCXJldHVybiBUUlVFOwotICAgIH0KLSAgZWxzZQotICAgIHsKLSAgICAgIGlmICgoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgIT0gMCkKLQlyZXR1cm4gVFJVRTsKLSAgICB9Ci0KLSAgLyogSWYgd2UgaGF2ZSBhbiB1bmRlZmluZWQgc3ltYm9sIHJlZmVyZW5jZSBoZXJlIHRoZW4gaXQgbXVzdCBoYXZlCi0gICAgIGNvbWUgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5IHRoYXQgaXMgYmVpbmcgbGlua2VkIGluLiAgKFVuZGVmaW5lZAotICAgICByZWZlcmVuY2VzIGluIHJlZ3VsYXIgZmlsZXMgaGF2ZSBhbHJlYWR5IGJlZW4gaGFuZGxlZCkuICBJZiB3ZQotICAgICBhcmUgcmVwb3J0aW5nIGVycm9ycyBmb3IgdGhpcyBzaXR1YXRpb24gdGhlbiBkbyBzbyBub3cuICAqLwotICBpZiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZpbmVkCi0gICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfUkVGX0RZTkFNSUMpICE9IDAKLSAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfSEFTSF9SRUZfUkVHVUxBUikgPT0gMAotICAgICAgJiYgISBlbGZfbGlua19jaGVja192ZXJzaW9uZWRfc3ltYm9sIChmaW5mby0+aW5mbywgaCkKLSAgICAgICYmIGZpbmZvLT5pbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fc2hhcmVkX2xpYnMgIT0gUk1fSUdOT1JFKQotICAgIHsKLSAgICAgIGlmICghICgoKmZpbmZvLT5pbmZvLT5jYWxsYmFja3MtPnVuZGVmaW5lZF9zeW1ib2wpCi0JICAgICAoZmluZm8tPmluZm8sIGgtPnJvb3Qucm9vdC5zdHJpbmcsIGgtPnJvb3QudS51bmRlZi5hYmZkLAotCSAgICAgIE5VTEwsIDAsIGZpbmZvLT5pbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fc2hhcmVkX2xpYnMgPT0gUk1fR0VORVJBVEVfRVJST1IpKSkKLQl7Ci0JICBlb2luZm8tPmZhaWxlZCA9IFRSVUU7Ci0JICByZXR1cm4gRkFMU0U7Ci0JfQotICAgIH0KLQotICAvKiBXZSBzaG91bGQgYWxzbyB3YXJuIGlmIGEgZm9yY2VkIGxvY2FsIHN5bWJvbCBpcyByZWZlcmVuY2VkIGZyb20KLSAgICAgc2hhcmVkIGxpYnJhcmllcy4gICovCi0gIGlmICghIGZpbmZvLT5pbmZvLT5yZWxvY2F0YWJsZQotICAgICAgJiYgKCEgZmluZm8tPmluZm8tPnNoYXJlZCkKLSAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzCi0JICAmIChFTEZfTElOS19GT1JDRURfTE9DQUwgfCBFTEZfTElOS19IQVNIX1JFRl9EWU5BTUlDIHwgRUxGX0xJTktfRFlOQU1JQ19ERUYgfCBFTEZfTElOS19EWU5BTUlDX1dFQUspKQotCSA9PSAoRUxGX0xJTktfRk9SQ0VEX0xPQ0FMIHwgRUxGX0xJTktfSEFTSF9SRUZfRFlOQU1JQykKLSAgICAgICYmICEgZWxmX2xpbmtfY2hlY2tfdmVyc2lvbmVkX3N5bWJvbCAoZmluZm8tPmluZm8sIGgpKQotICAgIHsKLSAgICAgICgqX2JmZF9lcnJvcl9oYW5kbGVyKQotCShfKCIlczogJXMgc3ltYm9sIGAlcycgaW4gJXMgaXMgcmVmZXJlbmNlZCBieSBEU08iKSwKLQkgYmZkX2dldF9maWxlbmFtZSAoZmluZm8tPm91dHB1dF9iZmQpLAotCSBFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpID09IFNUVl9JTlRFUk5BTAotCSA/ICJpbnRlcm5hbCIKLQkgOiBFTEZfU1RfVklTSUJJTElUWSAoaC0+b3RoZXIpID09IFNUVl9ISURERU4KLQkgICA/ICJoaWRkZW4iIDogImxvY2FsIiwKLQkgaC0+cm9vdC5yb290LnN0cmluZywKLQkgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKGgtPnJvb3QudS5kZWYuc2VjdGlvbi0+b3duZXIpKTsKLSAgICAgIGVvaW5mby0+ZmFpbGVkID0gVFJVRTsKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0KLSAgLyogV2UgZG9uJ3Qgd2FudCB0byBvdXRwdXQgc3ltYm9scyB0aGF0IGhhdmUgbmV2ZXIgYmVlbiBtZW50aW9uZWQgYnkKLSAgICAgYSByZWd1bGFyIGZpbGUsIG9yIHRoYXQgd2UgaGF2ZSBiZWVuIHRvbGQgdG8gc3RyaXAuICBIb3dldmVyLCBpZgotICAgICBoLT5pbmR4IGlzIHNldCB0byAtMiwgdGhlIHN5bWJvbCBpcyB1c2VkIGJ5IGEgcmVsb2MgYW5kIHdlIG11c3QKLSAgICAgb3V0cHV0IGl0LiAgKi8KLSAgaWYgKGgtPmluZHggPT0gLTIpCi0gICAgc3RyaXAgPSBGQUxTRTsKLSAgZWxzZSBpZiAoKChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfSEFTSF9ERUZfRFlOQU1JQykgIT0gMAotCSAgICB8fCAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfUkVGX0RZTkFNSUMpICE9IDApCi0JICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX0RFRl9SRUdVTEFSKSA9PSAwCi0JICAgJiYgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX1JFRl9SRUdVTEFSKSA9PSAwKQotICAgIHN0cmlwID0gVFJVRTsKLSAgZWxzZSBpZiAoZmluZm8tPmluZm8tPnN0cmlwID09IHN0cmlwX2FsbCkKLSAgICBzdHJpcCA9IFRSVUU7Ci0gIGVsc2UgaWYgKGZpbmZvLT5pbmZvLT5zdHJpcCA9PSBzdHJpcF9zb21lCi0JICAgJiYgYmZkX2hhc2hfbG9va3VwIChmaW5mby0+aW5mby0+a2VlcF9oYXNoLAotCQkJICAgICAgIGgtPnJvb3Qucm9vdC5zdHJpbmcsIEZBTFNFLCBGQUxTRSkgPT0gTlVMTCkKLSAgICBzdHJpcCA9IFRSVUU7Ci0gIGVsc2UgaWYgKGZpbmZvLT5pbmZvLT5zdHJpcF9kaXNjYXJkZWQKLQkgICAmJiAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmaW5lZAotCSAgICAgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKQotCSAgICYmIGVsZl9kaXNjYXJkZWRfc2VjdGlvbiAoaC0+cm9vdC51LmRlZi5zZWN0aW9uKSkKLSAgICBzdHJpcCA9IFRSVUU7Ci0gIGVsc2UKLSAgICBzdHJpcCA9IEZBTFNFOwotCi0gIC8qIElmIHdlJ3JlIHN0cmlwcGluZyBpdCwgYW5kIGl0J3Mgbm90IGEgZHluYW1pYyBzeW1ib2wsIHRoZXJlJ3MKLSAgICAgbm90aGluZyBlbHNlIHRvIGRvIHVubGVzcyBpdCBpcyBhIGZvcmNlZCBsb2NhbCBzeW1ib2wuICAqLwotICBpZiAoc3RyaXAKLSAgICAgICYmIGgtPmR5bmluZHggPT0gLTEKLSAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfRk9SQ0VEX0xPQ0FMKSA9PSAwKQotICAgIHJldHVybiBUUlVFOwotCi0gIHN5bS5zdF92YWx1ZSA9IDA7Ci0gIHN5bS5zdF9zaXplID0gaC0+c2l6ZTsKLSAgc3ltLnN0X290aGVyID0gaC0+b3RoZXI7Ci0gIGlmICgoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTCkgIT0gMCkKLSAgICBzeW0uc3RfaW5mbyA9IEVMRl9TVF9JTkZPIChTVEJfTE9DQUwsIGgtPnR5cGUpOwotICBlbHNlIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWsKLQkgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKQotICAgIHN5bS5zdF9pbmZvID0gRUxGX1NUX0lORk8gKFNUQl9XRUFLLCBoLT50eXBlKTsKLSAgZWxzZQotICAgIHN5bS5zdF9pbmZvID0gRUxGX1NUX0lORk8gKFNUQl9HTE9CQUwsIGgtPnR5cGUpOwotCi0gIHN3aXRjaCAoaC0+cm9vdC50eXBlKQotICAgIHsKLSAgICBkZWZhdWx0OgotICAgIGNhc2UgYmZkX2xpbmtfaGFzaF9uZXc6Ci0gICAgY2FzZSBiZmRfbGlua19oYXNoX3dhcm5pbmc6Ci0gICAgICBhYm9ydCAoKTsKLSAgICAgIHJldHVybiBGQUxTRTsKLQotICAgIGNhc2UgYmZkX2xpbmtfaGFzaF91bmRlZmluZWQ6Ci0gICAgY2FzZSBiZmRfbGlua19oYXNoX3VuZGVmd2VhazoKLSAgICAgIGlucHV0X3NlYyA9IGJmZF91bmRfc2VjdGlvbl9wdHI7Ci0gICAgICBzeW0uc3Rfc2huZHggPSBTSE5fVU5ERUY7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgYmZkX2xpbmtfaGFzaF9kZWZpbmVkOgotICAgIGNhc2UgYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrOgotICAgICAgewotCWlucHV0X3NlYyA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKLQlpZiAoaW5wdXRfc2VjLT5vdXRwdXRfc2VjdGlvbiAhPSBOVUxMKQotCSAgewotCSAgICBzeW0uc3Rfc2huZHggPQotCSAgICAgIF9iZmRfZWxmX3NlY3Rpb25fZnJvbV9iZmRfc2VjdGlvbiAoZmluZm8tPm91dHB1dF9iZmQsCi0JCQkJCQkgaW5wdXRfc2VjLT5vdXRwdXRfc2VjdGlvbik7Ci0JICAgIGlmIChzeW0uc3Rfc2huZHggPT0gU0hOX0JBRCkKLQkgICAgICB7Ci0JCSgqX2JmZF9lcnJvcl9oYW5kbGVyKQotCQkgIChfKCIlczogY291bGQgbm90IGZpbmQgb3V0cHV0IHNlY3Rpb24gJXMgZm9yIGlucHV0IHNlY3Rpb24gJXMiKSwKLQkJICAgYmZkX2dldF9maWxlbmFtZSAoZmluZm8tPm91dHB1dF9iZmQpLAotCQkgICBpbnB1dF9zZWMtPm91dHB1dF9zZWN0aW9uLT5uYW1lLAotCQkgICBpbnB1dF9zZWMtPm5hbWUpOwotCQllb2luZm8tPmZhaWxlZCA9IFRSVUU7Ci0JCXJldHVybiBGQUxTRTsKLQkgICAgICB9Ci0KLQkgICAgLyogRUxGIHN5bWJvbHMgaW4gcmVsb2NhdGFibGUgZmlsZXMgYXJlIHNlY3Rpb24gcmVsYXRpdmUsCi0JICAgICAgIGJ1dCBpbiBub25yZWxvY2F0YWJsZSBmaWxlcyB0aGV5IGFyZSB2aXJ0dWFsCi0JICAgICAgIGFkZHJlc3Nlcy4gICovCi0JICAgIHN5bS5zdF92YWx1ZSA9IGgtPnJvb3QudS5kZWYudmFsdWUgKyBpbnB1dF9zZWMtPm91dHB1dF9vZmZzZXQ7Ci0JICAgIGlmICghIGZpbmZvLT5pbmZvLT5yZWxvY2F0YWJsZSkKLQkgICAgICB7Ci0JCXN5bS5zdF92YWx1ZSArPSBpbnB1dF9zZWMtPm91dHB1dF9zZWN0aW9uLT52bWE7Ci0JCWlmIChoLT50eXBlID09IFNUVF9UTFMpCi0JCSAgewotCQkgICAgLyogU1RUX1RMUyBzeW1ib2xzIGFyZSByZWxhdGl2ZSB0byBQVF9UTFMgc2VnbWVudAotCQkgICAgICAgYmFzZS4gICovCi0JCSAgICBCRkRfQVNTRVJUIChlbGZfaGFzaF90YWJsZSAoZmluZm8tPmluZm8pLT50bHNfc2VjICE9IE5VTEwpOwotCQkgICAgc3ltLnN0X3ZhbHVlIC09IGVsZl9oYXNoX3RhYmxlIChmaW5mby0+aW5mbyktPnRsc19zZWMtPnZtYTsKLQkJICB9Ci0JICAgICAgfQotCSAgfQotCWVsc2UKLQkgIHsKLQkgICAgQkZEX0FTU0VSVCAoaW5wdXRfc2VjLT5vd25lciA9PSBOVUxMCi0JCQl8fCAoaW5wdXRfc2VjLT5vd25lci0+ZmxhZ3MgJiBEWU5BTUlDKSAhPSAwKTsKLQkgICAgc3ltLnN0X3NobmR4ID0gU0hOX1VOREVGOwotCSAgICBpbnB1dF9zZWMgPSBiZmRfdW5kX3NlY3Rpb25fcHRyOwotCSAgfQotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIGJmZF9saW5rX2hhc2hfY29tbW9uOgotICAgICAgaW5wdXRfc2VjID0gaC0+cm9vdC51LmMucC0+c2VjdGlvbjsKLSAgICAgIHN5bS5zdF9zaG5keCA9IFNITl9DT01NT047Ci0gICAgICBzeW0uc3RfdmFsdWUgPSAxIDw8IGgtPnJvb3QudS5jLnAtPmFsaWdubWVudF9wb3dlcjsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBiZmRfbGlua19oYXNoX2luZGlyZWN0OgotICAgICAgLyogVGhlc2Ugc3ltYm9scyBhcmUgY3JlYXRlZCBieSBzeW1ib2wgdmVyc2lvbmluZy4gIFRoZXkgcG9pbnQKLQkgdG8gdGhlIGRlY29yYXRlZCB2ZXJzaW9uIG9mIHRoZSBuYW1lLiAgRm9yIGV4YW1wbGUsIGlmIHRoZQotCSBzeW1ib2wgZm9vQEBHTlVfMS4yIGlzIHRoZSBkZWZhdWx0LCB3aGljaCBzaG91bGQgYmUgdXNlZCB3aGVuCi0JIGZvbyBpcyB1c2VkIHdpdGggbm8gdmVyc2lvbiwgdGhlbiB3ZSBhZGQgYW4gaW5kaXJlY3Qgc3ltYm9sCi0JIGZvbyB3aGljaCBwb2ludHMgdG8gZm9vQEBHTlVfMS4yLiAgV2UgaWdub3JlIHRoZXNlIHN5bWJvbHMsCi0JIHNpbmNlIHRoZSBpbmRpcmVjdGVkIHN5bWJvbCBpcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLSAgICAgIHJldHVybiBUUlVFOwotICAgIH0KLQotICAvKiBHaXZlIHRoZSBwcm9jZXNzb3IgYmFja2VuZCBhIGNoYW5jZSB0byB0d2VhayB0aGUgc3ltYm9sIHZhbHVlLAotICAgICBhbmQgYWxzbyB0byBmaW5pc2ggdXAgYW55dGhpbmcgdGhhdCBuZWVkcyB0byBiZSBkb25lIGZvciB0aGlzCi0gICAgIHN5bWJvbC4gIEZJWE1FOiBOb3QgY2FsbGluZyBlbGZfYmFja2VuZF9maW5pc2hfZHluYW1pY19zeW1ib2wgZm9yCi0gICAgIGZvcmNlZCBsb2NhbCBzeW1zIHdoZW4gbm9uLXNoYXJlZCBpcyBkdWUgdG8gYSBoaXN0b3JpY2FsIHF1aXJrLiAgKi8KLSAgaWYgKChoLT5keW5pbmR4ICE9IC0xCi0gICAgICAgfHwgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpICE9IDApCi0gICAgICAmJiAoKGZpbmZvLT5pbmZvLT5zaGFyZWQKLQkgICAmJiAoRUxGX1NUX1ZJU0lCSUxJVFkgKGgtPm90aGVyKSA9PSBTVFZfREVGQVVMVAotCSAgICAgICB8fCBoLT5yb290LnR5cGUgIT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspKQotCSAgfHwgKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19GT1JDRURfTE9DQUwpID09IDApCi0gICAgICAmJiBlbGZfaGFzaF90YWJsZSAoZmluZm8tPmluZm8pLT5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQpCi0gICAgewotICAgICAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKLQotICAgICAgYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGZpbmZvLT5vdXRwdXRfYmZkKTsKLSAgICAgIGlmICghICgoKmJlZC0+ZWxmX2JhY2tlbmRfZmluaXNoX2R5bmFtaWNfc3ltYm9sKQotCSAgICAgKGZpbmZvLT5vdXRwdXRfYmZkLCBmaW5mby0+aW5mbywgaCwgJnN5bSkpKQotCXsKLQkgIGVvaW5mby0+ZmFpbGVkID0gVFJVRTsKLQkgIHJldHVybiBGQUxTRTsKLQl9Ci0gICAgfQotCi0gIC8qIElmIHdlIGFyZSBtYXJraW5nIHRoZSBzeW1ib2wgYXMgdW5kZWZpbmVkLCBhbmQgdGhlcmUgYXJlIG5vCi0gICAgIG5vbi13ZWFrIHJlZmVyZW5jZXMgdG8gdGhpcyBzeW1ib2wgZnJvbSBhIHJlZ3VsYXIgb2JqZWN0LCB0aGVuCi0gICAgIG1hcmsgdGhlIHN5bWJvbCBhcyB3ZWFrIHVuZGVmaW5lZDsgaWYgdGhlcmUgYXJlIG5vbi13ZWFrCi0gICAgIHJlZmVyZW5jZXMsIG1hcmsgdGhlIHN5bWJvbCBhcyBzdHJvbmcuICBXZSBjYW4ndCBkbyB0aGlzIGVhcmxpZXIsCi0gICAgIGJlY2F1c2UgaXQgbWlnaHQgbm90IGJlIG1hcmtlZCBhcyB1bmRlZmluZWQgdW50aWwgdGhlCi0gICAgIGZpbmlzaF9keW5hbWljX3N5bWJvbCByb3V0aW5lIGdldHMgdGhyb3VnaCB3aXRoIGl0LiAgKi8KLSAgaWYgKHN5bS5zdF9zaG5keCA9PSBTSE5fVU5ERUYKLSAgICAgICYmIChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfSEFTSF9SRUZfUkVHVUxBUikgIT0gMAotICAgICAgJiYgKEVMRl9TVF9CSU5EIChzeW0uc3RfaW5mbykgPT0gU1RCX0dMT0JBTAotCSAgfHwgRUxGX1NUX0JJTkQgKHN5bS5zdF9pbmZvKSA9PSBTVEJfV0VBSykpCi0gICAgewotICAgICAgaW50IGJpbmR0eXBlOwotCi0gICAgICBpZiAoKGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgJiBFTEZfTElOS19IQVNIX1JFRl9SRUdVTEFSX05PTldFQUspICE9IDApCi0JYmluZHR5cGUgPSBTVEJfR0xPQkFMOwotICAgICAgZWxzZQotCWJpbmR0eXBlID0gU1RCX1dFQUs7Ci0gICAgICBzeW0uc3RfaW5mbyA9IEVMRl9TVF9JTkZPIChiaW5kdHlwZSwgRUxGX1NUX1RZUEUgKHN5bS5zdF9pbmZvKSk7Ci0gICAgfQotCi0gIC8qIElmIGEgbm9uLXdlYWsgc3ltYm9sIHdpdGggbm9uLWRlZmF1bHQgdmlzaWJpbGl0eSBpcyBub3QgZGVmaW5lZAotICAgICBsb2NhbGx5LCBpdCBpcyBhIGZhdGFsIGVycm9yLiAgKi8KLSAgaWYgKCEgZmluZm8tPmluZm8tPnJlbG9jYXRhYmxlCi0gICAgICAmJiBFTEZfU1RfVklTSUJJTElUWSAoc3ltLnN0X290aGVyKSAhPSBTVFZfREVGQVVMVAotICAgICAgJiYgRUxGX1NUX0JJTkQgKHN5bS5zdF9pbmZvKSAhPSBTVEJfV0VBSwotICAgICAgJiYgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZpbmVkCi0gICAgICAmJiAoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVIpID09IDApCi0gICAgewotICAgICAgKCpfYmZkX2Vycm9yX2hhbmRsZXIpCi0JKF8oIiVzOiAlcyBzeW1ib2wgYCVzJyBpc24ndCBkZWZpbmVkIiksCi0JICBiZmRfZ2V0X2ZpbGVuYW1lIChmaW5mby0+b3V0cHV0X2JmZCksCi0JICBFTEZfU1RfVklTSUJJTElUWSAoc3ltLnN0X290aGVyKSA9PSBTVFZfUFJPVEVDVEVECi0JICA/ICJwcm90ZWN0ZWQiCi0JICA6IEVMRl9TVF9WSVNJQklMSVRZIChzeW0uc3Rfb3RoZXIpID09IFNUVl9JTlRFUk5BTAotCSAgICA/ICJpbnRlcm5hbCIgOiAiaGlkZGVuIiwKLQkgIGgtPnJvb3Qucm9vdC5zdHJpbmcpOwotICAgICAgZW9pbmZvLT5mYWlsZWQgPSBUUlVFOwotICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLQotICAvKiBJZiB0aGlzIHN5bWJvbCBzaG91bGQgYmUgcHV0IGluIHRoZSAuZHluc3ltIHNlY3Rpb24sIHRoZW4gcHV0IGl0Ci0gICAgIHRoZXJlIG5vdy4gIFdlIGFscmVhZHkga25vdyB0aGUgc3ltYm9sIGluZGV4LiAgV2UgYWxzbyBmaWxsIGluCi0gICAgIHRoZSBlbnRyeSBpbiB0aGUgLmhhc2ggc2VjdGlvbi4gICovCi0gIGlmIChoLT5keW5pbmR4ICE9IC0xCi0gICAgICAmJiBlbGZfaGFzaF90YWJsZSAoZmluZm8tPmluZm8pLT5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQpCi0gICAgewotICAgICAgc2l6ZV90IGJ1Y2tldGNvdW50OwotICAgICAgc2l6ZV90IGJ1Y2tldDsKLSAgICAgIHNpemVfdCBoYXNoX2VudHJ5X3NpemU7Ci0gICAgICBiZmRfYnl0ZSAqYnVja2V0cG9zOwotICAgICAgYmZkX3ZtYSBjaGFpbjsKLSAgICAgIEVsZl9FeHRlcm5hbF9TeW0gKmVzeW07Ci0KLSAgICAgIHN5bS5zdF9uYW1lID0gaC0+ZHluc3RyX2luZGV4OwotICAgICAgZXN5bSA9IChFbGZfRXh0ZXJuYWxfU3ltICopIGZpbmZvLT5keW5zeW1fc2VjLT5jb250ZW50cyArIGgtPmR5bmluZHg7Ci0gICAgICBlbGZfc3dhcF9zeW1ib2xfb3V0IChmaW5mby0+b3V0cHV0X2JmZCwgJnN5bSwgZXN5bSwgMCk7Ci0KLSAgICAgIGJ1Y2tldGNvdW50ID0gZWxmX2hhc2hfdGFibGUgKGZpbmZvLT5pbmZvKS0+YnVja2V0Y291bnQ7Ci0gICAgICBidWNrZXQgPSBoLT5lbGZfaGFzaF92YWx1ZSAlIGJ1Y2tldGNvdW50OwotICAgICAgaGFzaF9lbnRyeV9zaXplCi0JPSBlbGZfc2VjdGlvbl9kYXRhIChmaW5mby0+aGFzaF9zZWMpLT50aGlzX2hkci5zaF9lbnRzaXplOwotICAgICAgYnVja2V0cG9zID0gKChiZmRfYnl0ZSAqKSBmaW5mby0+aGFzaF9zZWMtPmNvbnRlbnRzCi0JCSAgICsgKGJ1Y2tldCArIDIpICogaGFzaF9lbnRyeV9zaXplKTsKLSAgICAgIGNoYWluID0gYmZkX2dldCAoOCAqIGhhc2hfZW50cnlfc2l6ZSwgZmluZm8tPm91dHB1dF9iZmQsIGJ1Y2tldHBvcyk7Ci0gICAgICBiZmRfcHV0ICg4ICogaGFzaF9lbnRyeV9zaXplLCBmaW5mby0+b3V0cHV0X2JmZCwgaC0+ZHluaW5keCwgYnVja2V0cG9zKTsKLSAgICAgIGJmZF9wdXQgKDggKiBoYXNoX2VudHJ5X3NpemUsIGZpbmZvLT5vdXRwdXRfYmZkLCBjaGFpbiwKLQkgICAgICAgKChiZmRfYnl0ZSAqKSBmaW5mby0+aGFzaF9zZWMtPmNvbnRlbnRzCi0JCSsgKGJ1Y2tldGNvdW50ICsgMiArIGgtPmR5bmluZHgpICogaGFzaF9lbnRyeV9zaXplKSk7Ci0KLSAgICAgIGlmIChmaW5mby0+c3ltdmVyX3NlYyAhPSBOVUxMICYmIGZpbmZvLT5zeW12ZXJfc2VjLT5jb250ZW50cyAhPSBOVUxMKQotCXsKLQkgIEVsZl9JbnRlcm5hbF9WZXJzeW0gaXZlcnN5bTsKLQkgIEVsZl9FeHRlcm5hbF9WZXJzeW0gKmV2ZXJzeW07Ci0KLQkgIGlmICgoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVIpID09IDApCi0JICAgIHsKLQkgICAgICBpZiAoaC0+dmVyaW5mby52ZXJkZWYgPT0gTlVMTCkKLQkJaXZlcnN5bS52c192ZXJzID0gMDsKLQkgICAgICBlbHNlCi0JCWl2ZXJzeW0udnNfdmVycyA9IGgtPnZlcmluZm8udmVyZGVmLT52ZF9leHBfcmVmbm8gKyAxOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICBpZiAoaC0+dmVyaW5mby52ZXJ0cmVlID09IE5VTEwpCi0JCWl2ZXJzeW0udnNfdmVycyA9IDE7Ci0JICAgICAgZWxzZQotCQlpdmVyc3ltLnZzX3ZlcnMgPSBoLT52ZXJpbmZvLnZlcnRyZWUtPnZlcm51bSArIDE7Ci0JICAgIH0KLQotCSAgaWYgKChoLT5lbGZfbGlua19oYXNoX2ZsYWdzICYgRUxGX0xJTktfSElEREVOKSAhPSAwKQotCSAgICBpdmVyc3ltLnZzX3ZlcnMgfD0gVkVSU1lNX0hJRERFTjsKLQotCSAgZXZlcnN5bSA9IChFbGZfRXh0ZXJuYWxfVmVyc3ltICopIGZpbmZvLT5zeW12ZXJfc2VjLT5jb250ZW50czsKLQkgIGV2ZXJzeW0gKz0gaC0+ZHluaW5keDsKLQkgIF9iZmRfZWxmX3N3YXBfdmVyc3ltX291dCAoZmluZm8tPm91dHB1dF9iZmQsICZpdmVyc3ltLCBldmVyc3ltKTsKLQl9Ci0gICAgfQotCi0gIC8qIElmIHdlJ3JlIHN0cmlwcGluZyBpdCwgdGhlbiBpdCB3YXMganVzdCBhIGR5bmFtaWMgc3ltYm9sLCBhbmQKLSAgICAgdGhlcmUncyBub3RoaW5nIGVsc2UgdG8gZG8uICAqLwotICBpZiAoc3RyaXAgfHwgKGlucHV0X3NlYy0+ZmxhZ3MgJiBTRUNfRVhDTFVERSkgIT0gMCkKLSAgICByZXR1cm4gVFJVRTsKLQotICBoLT5pbmR4ID0gYmZkX2dldF9zeW1jb3VudCAoZmluZm8tPm91dHB1dF9iZmQpOwotCi0gIGlmICghIGVsZl9saW5rX291dHB1dF9zeW0gKGZpbmZvLCBoLT5yb290LnJvb3Quc3RyaW5nLCAmc3ltLCBpbnB1dF9zZWMsIGgpKQotICAgIHsKLSAgICAgIGVvaW5mby0+ZmFpbGVkID0gVFJVRTsKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLS8qIExpbmsgYW4gaW5wdXQgZmlsZSBpbnRvIHRoZSBsaW5rZXIgb3V0cHV0IGZpbGUuICBUaGlzIGZ1bmN0aW9uCi0gICBoYW5kbGVzIGFsbCB0aGUgc2VjdGlvbnMgYW5kIHJlbG9jYXRpb25zIG9mIHRoZSBpbnB1dCBmaWxlIGF0IG9uY2UuCi0gICBUaGlzIGlzIHNvIHRoYXQgd2Ugb25seSBoYXZlIHRvIHJlYWQgdGhlIGxvY2FsIHN5bWJvbHMgb25jZSwgYW5kCi0gICBkb24ndCBoYXZlIHRvIGtlZXAgdGhlbSBpbiBtZW1vcnkuICAqLwotCi1zdGF0aWMgYmZkX2Jvb2xlYW4KLWVsZl9saW5rX2lucHV0X2JmZCAoc3RydWN0IGVsZl9maW5hbF9saW5rX2luZm8gKmZpbmZvLCBiZmQgKmlucHV0X2JmZCkKLXsKLSAgYmZkX2Jvb2xlYW4gKCpyZWxvY2F0ZV9zZWN0aW9uKQotICAgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgYmZkICosIGFzZWN0aW9uICosIGJmZF9ieXRlICosCi0gICAgIEVsZl9JbnRlcm5hbF9SZWxhICosIEVsZl9JbnRlcm5hbF9TeW0gKiwgYXNlY3Rpb24gKiopOwotICBiZmQgKm91dHB1dF9iZmQ7Ci0gIEVsZl9JbnRlcm5hbF9TaGRyICpzeW10YWJfaGRyOwotICBzaXplX3QgbG9jc3ltY291bnQ7Ci0gIHNpemVfdCBleHRzeW1vZmY7Ci0gIEVsZl9JbnRlcm5hbF9TeW0gKmlzeW1idWY7Ci0gIEVsZl9JbnRlcm5hbF9TeW0gKmlzeW07Ci0gIEVsZl9JbnRlcm5hbF9TeW0gKmlzeW1lbmQ7Ci0gIGxvbmcgKnBpbmRleDsKLSAgYXNlY3Rpb24gKipwcHNlY3Rpb247Ci0gIGFzZWN0aW9uICpvOwotICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkOwotICBiZmRfYm9vbGVhbiBlbWl0X3JlbG9jczsKLSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipzeW1faGFzaGVzOwotCi0gIG91dHB1dF9iZmQgPSBmaW5mby0+b3V0cHV0X2JmZDsKLSAgYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKG91dHB1dF9iZmQpOwotICByZWxvY2F0ZV9zZWN0aW9uID0gYmVkLT5lbGZfYmFja2VuZF9yZWxvY2F0ZV9zZWN0aW9uOwotCi0gIC8qIElmIHRoaXMgaXMgYSBkeW5hbWljIG9iamVjdCwgd2UgZG9uJ3Qgd2FudCB0byBkbyBhbnl0aGluZyBoZXJlOgotICAgICB3ZSBkb24ndCB3YW50IHRoZSBsb2NhbCBzeW1ib2xzLCBhbmQgd2UgZG9uJ3Qgd2FudCB0aGUgc2VjdGlvbgotICAgICBjb250ZW50cy4gICovCi0gIGlmICgoaW5wdXRfYmZkLT5mbGFncyAmIERZTkFNSUMpICE9IDApCi0gICAgcmV0dXJuIFRSVUU7Ci0KLSAgZW1pdF9yZWxvY3MgPSAoZmluZm8tPmluZm8tPnJlbG9jYXRhYmxlCi0JCSB8fCBmaW5mby0+aW5mby0+ZW1pdHJlbG9jYXRpb25zCi0JCSB8fCBiZWQtPmVsZl9iYWNrZW5kX2VtaXRfcmVsb2NzKTsKLQotICBzeW10YWJfaGRyID0gJmVsZl90ZGF0YSAoaW5wdXRfYmZkKS0+c3ltdGFiX2hkcjsKLSAgaWYgKGVsZl9iYWRfc3ltdGFiIChpbnB1dF9iZmQpKQotICAgIHsKLSAgICAgIGxvY3N5bWNvdW50ID0gc3ltdGFiX2hkci0+c2hfc2l6ZSAvIHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bSk7Ci0gICAgICBleHRzeW1vZmYgPSAwOwotICAgIH0KLSAgZWxzZQotICAgIHsKLSAgICAgIGxvY3N5bWNvdW50ID0gc3ltdGFiX2hkci0+c2hfaW5mbzsKLSAgICAgIGV4dHN5bW9mZiA9IHN5bXRhYl9oZHItPnNoX2luZm87Ci0gICAgfQotCi0gIC8qIFJlYWQgdGhlIGxvY2FsIHN5bWJvbHMuICAqLwotICBpc3ltYnVmID0gKEVsZl9JbnRlcm5hbF9TeW0gKikgc3ltdGFiX2hkci0+Y29udGVudHM7Ci0gIGlmIChpc3ltYnVmID09IE5VTEwgJiYgbG9jc3ltY291bnQgIT0gMCkKLSAgICB7Ci0gICAgICBpc3ltYnVmID0gYmZkX2VsZl9nZXRfZWxmX3N5bXMgKGlucHV0X2JmZCwgc3ltdGFiX2hkciwgbG9jc3ltY291bnQsIDAsCi0JCQkJICAgICAgZmluZm8tPmludGVybmFsX3N5bXMsCi0JCQkJICAgICAgZmluZm8tPmV4dGVybmFsX3N5bXMsCi0JCQkJICAgICAgZmluZm8tPmxvY3N5bV9zaG5keCk7Ci0gICAgICBpZiAoaXN5bWJ1ZiA9PSBOVUxMKQotCXJldHVybiBGQUxTRTsKLSAgICB9Ci0KLSAgLyogRmluZCBsb2NhbCBzeW1ib2wgc2VjdGlvbnMgYW5kIGFkanVzdCB2YWx1ZXMgb2Ygc3ltYm9scyBpbgotICAgICBTRUNfTUVSR0Ugc2VjdGlvbnMuICBXcml0ZSBvdXQgdGhvc2UgbG9jYWwgc3ltYm9scyB3ZSBrbm93IGFyZQotICAgICBnb2luZyBpbnRvIHRoZSBvdXRwdXQgZmlsZS4gICovCi0gIGlzeW1lbmQgPSBpc3ltYnVmICsgbG9jc3ltY291bnQ7Ci0gIGZvciAoaXN5bSA9IGlzeW1idWYsIHBpbmRleCA9IGZpbmZvLT5pbmRpY2VzLCBwcHNlY3Rpb24gPSBmaW5mby0+c2VjdGlvbnM7Ci0gICAgICAgaXN5bSA8IGlzeW1lbmQ7Ci0gICAgICAgaXN5bSsrLCBwaW5kZXgrKywgcHBzZWN0aW9uKyspCi0gICAgewotICAgICAgYXNlY3Rpb24gKmlzZWM7Ci0gICAgICBjb25zdCBjaGFyICpuYW1lOwotICAgICAgRWxmX0ludGVybmFsX1N5bSBvc3ltOwotCi0gICAgICAqcGluZGV4ID0gLTE7Ci0KLSAgICAgIGlmIChlbGZfYmFkX3N5bXRhYiAoaW5wdXRfYmZkKSkKLQl7Ci0JICBpZiAoRUxGX1NUX0JJTkQgKGlzeW0tPnN0X2luZm8pICE9IFNUQl9MT0NBTCkKLQkgICAgewotCSAgICAgICpwcHNlY3Rpb24gPSBOVUxMOwotCSAgICAgIGNvbnRpbnVlOwotCSAgICB9Ci0JfQotCi0gICAgICBpZiAoaXN5bS0+c3Rfc2huZHggPT0gU0hOX1VOREVGKQotCWlzZWMgPSBiZmRfdW5kX3NlY3Rpb25fcHRyOwotICAgICAgZWxzZSBpZiAoaXN5bS0+c3Rfc2huZHggPCBTSE5fTE9SRVNFUlZFCi0JICAgICAgIHx8IGlzeW0tPnN0X3NobmR4ID4gU0hOX0hJUkVTRVJWRSkKLQl7Ci0JICBpc2VjID0gc2VjdGlvbl9mcm9tX2VsZl9pbmRleCAoaW5wdXRfYmZkLCBpc3ltLT5zdF9zaG5keCk7Ci0JICBpZiAoaXNlYwotCSAgICAgICYmIGlzZWMtPnNlY19pbmZvX3R5cGUgPT0gRUxGX0lORk9fVFlQRV9NRVJHRQotCSAgICAgICYmIEVMRl9TVF9UWVBFIChpc3ltLT5zdF9pbmZvKSAhPSBTVFRfU0VDVElPTikKLQkgICAgaXN5bS0+c3RfdmFsdWUgPQotCSAgICAgIF9iZmRfbWVyZ2VkX3NlY3Rpb25fb2Zmc2V0IChvdXRwdXRfYmZkLCAmaXNlYywKLQkJCQkJICBlbGZfc2VjdGlvbl9kYXRhIChpc2VjKS0+c2VjX2luZm8sCi0JCQkJCSAgaXN5bS0+c3RfdmFsdWUsIDApOwotCX0KLSAgICAgIGVsc2UgaWYgKGlzeW0tPnN0X3NobmR4ID09IFNITl9BQlMpCi0JaXNlYyA9IGJmZF9hYnNfc2VjdGlvbl9wdHI7Ci0gICAgICBlbHNlIGlmIChpc3ltLT5zdF9zaG5keCA9PSBTSE5fQ09NTU9OKQotCWlzZWMgPSBiZmRfY29tX3NlY3Rpb25fcHRyOwotICAgICAgZWxzZQotCXsKLQkgIC8qIFdobyBrbm93cz8gICovCi0JICBpc2VjID0gTlVMTDsKLQl9Ci0KLSAgICAgICpwcHNlY3Rpb24gPSBpc2VjOwotCi0gICAgICAvKiBEb24ndCBvdXRwdXQgdGhlIGZpcnN0LCB1bmRlZmluZWQsIHN5bWJvbC4gICovCi0gICAgICBpZiAocHBzZWN0aW9uID09IGZpbmZvLT5zZWN0aW9ucykKLQljb250aW51ZTsKLQotICAgICAgaWYgKEVMRl9TVF9UWVBFIChpc3ltLT5zdF9pbmZvKSA9PSBTVFRfU0VDVElPTikKLQl7Ci0JICAvKiBXZSBuZXZlciBvdXRwdXQgc2VjdGlvbiBzeW1ib2xzLiAgSW5zdGVhZCwgd2UgdXNlIHRoZQotCSAgICAgc2VjdGlvbiBzeW1ib2wgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc2VjdGlvbiBpbiB0aGUgb3V0cHV0Ci0JICAgICBmaWxlLiAgKi8KLQkgIGNvbnRpbnVlOwotCX0KLQotICAgICAgLyogSWYgd2UgYXJlIHN0cmlwcGluZyBhbGwgc3ltYm9scywgd2UgZG9uJ3Qgd2FudCB0byBvdXRwdXQgdGhpcwotCSBvbmUuICAqLwotICAgICAgaWYgKGZpbmZvLT5pbmZvLT5zdHJpcCA9PSBzdHJpcF9hbGwpCi0JY29udGludWU7Ci0KLSAgICAgIC8qIElmIHdlIGFyZSBkaXNjYXJkaW5nIGFsbCBsb2NhbCBzeW1ib2xzLCB3ZSBkb24ndCB3YW50IHRvCi0JIG91dHB1dCB0aGlzIG9uZS4gIElmIHdlIGFyZSBnZW5lcmF0aW5nIGEgcmVsb2NhdGFibGUgb3V0cHV0Ci0JIGZpbGUsIHRoZW4gc29tZSBvZiB0aGUgbG9jYWwgc3ltYm9scyBtYXkgYmUgcmVxdWlyZWQgYnkKLQkgcmVsb2NzOyB3ZSBvdXRwdXQgdGhlbSBiZWxvdyBhcyB3ZSBkaXNjb3ZlciB0aGF0IHRoZXkgYXJlCi0JIG5lZWRlZC4gICovCi0gICAgICBpZiAoZmluZm8tPmluZm8tPmRpc2NhcmQgPT0gZGlzY2FyZF9hbGwpCi0JY29udGludWU7Ci0KLSAgICAgIC8qIElmIHRoaXMgc3ltYm9sIGlzIGRlZmluZWQgaW4gYSBzZWN0aW9uIHdoaWNoIHdlIGFyZQotCSBkaXNjYXJkaW5nLCB3ZSBkb24ndCBuZWVkIHRvIGtlZXAgaXQsIGJ1dCBub3RlIHRoYXQKLQkgbGlua2VyX21hcmsgaXMgb25seSByZWxpYWJsZSBmb3Igc2VjdGlvbnMgdGhhdCBoYXZlIGNvbnRlbnRzLgotCSBGb3IgdGhlIGJlbmVmaXQgb2YgdGhlIE1JUFMgRUxGIGxpbmtlciwgd2UgY2hlY2sgU0VDX0VYQ0xVREUKLQkgYXMgd2VsbCBhcyBsaW5rZXJfbWFyay4gICovCi0gICAgICBpZiAoKGlzeW0tPnN0X3NobmR4IDwgU0hOX0xPUkVTRVJWRSB8fCBpc3ltLT5zdF9zaG5keCA+IFNITl9ISVJFU0VSVkUpCi0JICAmJiBpc2VjICE9IE5VTEwKLQkgICYmICgoISBpc2VjLT5saW5rZXJfbWFyayAmJiAoaXNlYy0+ZmxhZ3MgJiBTRUNfSEFTX0NPTlRFTlRTKSAhPSAwKQotCSAgICAgIHx8ICghIGZpbmZvLT5pbmZvLT5yZWxvY2F0YWJsZQotCQkgICYmIChpc2VjLT5mbGFncyAmIFNFQ19FWENMVURFKSAhPSAwKSkpCi0JY29udGludWU7Ci0KLSAgICAgIC8qIEdldCB0aGUgbmFtZSBvZiB0aGUgc3ltYm9sLiAgKi8KLSAgICAgIG5hbWUgPSBiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uIChpbnB1dF9iZmQsIHN5bXRhYl9oZHItPnNoX2xpbmssCi0JCQkJCSAgICAgIGlzeW0tPnN0X25hbWUpOwotICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKLQlyZXR1cm4gRkFMU0U7Ci0KLSAgICAgIC8qIFNlZSBpZiB3ZSBhcmUgZGlzY2FyZGluZyBzeW1ib2xzIHdpdGggdGhpcyBuYW1lLiAgKi8KLSAgICAgIGlmICgoZmluZm8tPmluZm8tPnN0cmlwID09IHN0cmlwX3NvbWUKLQkgICAmJiAoYmZkX2hhc2hfbG9va3VwIChmaW5mby0+aW5mby0+a2VlcF9oYXNoLCBuYW1lLCBGQUxTRSwgRkFMU0UpCi0JICAgICAgID09IE5VTEwpKQotCSAgfHwgKCgoZmluZm8tPmluZm8tPmRpc2NhcmQgPT0gZGlzY2FyZF9zZWNfbWVyZ2UKLQkJJiYgKGlzZWMtPmZsYWdzICYgU0VDX01FUkdFKSAmJiAhIGZpbmZvLT5pbmZvLT5yZWxvY2F0YWJsZSkKLQkgICAgICAgfHwgZmluZm8tPmluZm8tPmRpc2NhcmQgPT0gZGlzY2FyZF9sKQotCSAgICAgICYmIGJmZF9pc19sb2NhbF9sYWJlbF9uYW1lIChpbnB1dF9iZmQsIG5hbWUpKSkKLQljb250aW51ZTsKLQotICAgICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFyZSBnb2luZyB0byBvdXRwdXQgdGhpcyBzeW1ib2wuICAqLwotCi0gICAgICBvc3ltID0gKmlzeW07Ci0KLSAgICAgIC8qIEFkanVzdCB0aGUgc2VjdGlvbiBpbmRleCBmb3IgdGhlIG91dHB1dCBmaWxlLiAgKi8KLSAgICAgIG9zeW0uc3Rfc2huZHggPSBfYmZkX2VsZl9zZWN0aW9uX2Zyb21fYmZkX3NlY3Rpb24gKG91dHB1dF9iZmQsCi0JCQkJCQkJIGlzZWMtPm91dHB1dF9zZWN0aW9uKTsKLSAgICAgIGlmIChvc3ltLnN0X3NobmR4ID09IFNITl9CQUQpCi0JcmV0dXJuIEZBTFNFOwotCi0gICAgICAqcGluZGV4ID0gYmZkX2dldF9zeW1jb3VudCAob3V0cHV0X2JmZCk7Ci0KLSAgICAgIC8qIEVMRiBzeW1ib2xzIGluIHJlbG9jYXRhYmxlIGZpbGVzIGFyZSBzZWN0aW9uIHJlbGF0aXZlLCBidXQKLQkgaW4gZXhlY3V0YWJsZSBmaWxlcyB0aGV5IGFyZSB2aXJ0dWFsIGFkZHJlc3Nlcy4gIE5vdGUgdGhhdAotCSB0aGlzIGNvZGUgYXNzdW1lcyB0aGF0IGFsbCBFTEYgc2VjdGlvbnMgaGF2ZSBhbiBhc3NvY2lhdGVkCi0JIEJGRCBzZWN0aW9uIHdpdGggYSByZWFzb25hYmxlIHZhbHVlIGZvciBvdXRwdXRfb2Zmc2V0OyBiZWxvdwotCSB3ZSBhc3N1bWUgdGhhdCB0aGV5IGFsc28gaGF2ZSBhIHJlYXNvbmFibGUgdmFsdWUgZm9yCi0JIG91dHB1dF9zZWN0aW9uLiAgQW55IHNwZWNpYWwgc2VjdGlvbnMgbXVzdCBiZSBzZXQgdXAgdG8gbWVldAotCSB0aGVzZSByZXF1aXJlbWVudHMuICAqLwotICAgICAgb3N5bS5zdF92YWx1ZSArPSBpc2VjLT5vdXRwdXRfb2Zmc2V0OwotICAgICAgaWYgKCEgZmluZm8tPmluZm8tPnJlbG9jYXRhYmxlKQotCXsKLQkgIG9zeW0uc3RfdmFsdWUgKz0gaXNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYTsKLQkgIGlmIChFTEZfU1RfVFlQRSAob3N5bS5zdF9pbmZvKSA9PSBTVFRfVExTKQotCSAgICB7Ci0JICAgICAgLyogU1RUX1RMUyBzeW1ib2xzIGFyZSByZWxhdGl2ZSB0byBQVF9UTFMgc2VnbWVudCBiYXNlLiAgKi8KLQkgICAgICBCRkRfQVNTRVJUIChlbGZfaGFzaF90YWJsZSAoZmluZm8tPmluZm8pLT50bHNfc2VjICE9IE5VTEwpOwotCSAgICAgIG9zeW0uc3RfdmFsdWUgLT0gZWxmX2hhc2hfdGFibGUgKGZpbmZvLT5pbmZvKS0+dGxzX3NlYy0+dm1hOwotCSAgICB9Ci0JfQotCi0gICAgICBpZiAoISBlbGZfbGlua19vdXRwdXRfc3ltIChmaW5mbywgbmFtZSwgJm9zeW0sIGlzZWMsIE5VTEwpKQotCXJldHVybiBGQUxTRTsKLSAgICB9Ci0KLSAgLyogUmVsb2NhdGUgdGhlIGNvbnRlbnRzIG9mIGVhY2ggc2VjdGlvbi4gICovCi0gIHN5bV9oYXNoZXMgPSBlbGZfc3ltX2hhc2hlcyAoaW5wdXRfYmZkKTsKLSAgZm9yIChvID0gaW5wdXRfYmZkLT5zZWN0aW9uczsgbyAhPSBOVUxMOyBvID0gby0+bmV4dCkKLSAgICB7Ci0gICAgICBiZmRfYnl0ZSAqY29udGVudHM7Ci0KLSAgICAgIGlmICghIG8tPmxpbmtlcl9tYXJrKQotCXsKLQkgIC8qIFRoaXMgc2VjdGlvbiB3YXMgb21pdHRlZCBmcm9tIHRoZSBsaW5rLiAgKi8KLQkgIGNvbnRpbnVlOwotCX0KLQotICAgICAgaWYgKChvLT5mbGFncyAmIFNFQ19IQVNfQ09OVEVOVFMpID09IDAKLQkgIHx8IChvLT5fcmF3X3NpemUgPT0gMCAmJiAoby0+ZmxhZ3MgJiBTRUNfUkVMT0MpID09IDApKQotCWNvbnRpbnVlOwotCi0gICAgICBpZiAoKG8tPmZsYWdzICYgU0VDX0xJTktFUl9DUkVBVEVEKSAhPSAwKQotCXsKLQkgIC8qIFNlY3Rpb24gd2FzIGNyZWF0ZWQgYnkgX2JmZF9lbGZfbGlua19jcmVhdGVfZHluYW1pY19zZWN0aW9ucwotCSAgICAgb3Igc29tZXN1Y2guICAqLwotCSAgY29udGludWU7Ci0JfQotCi0gICAgICAvKiBHZXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzZWN0aW9uLiAgVGhleSBoYXZlIGJlZW4gY2FjaGVkIGJ5IGEKLQkgcmVsYXhhdGlvbiByb3V0aW5lLiAgTm90ZSB0aGF0IG8gaXMgYSBzZWN0aW9uIGluIGFuIGlucHV0Ci0JIGZpbGUsIHNvIHRoZSBjb250ZW50cyBmaWVsZCB3aWxsIG5vdCBoYXZlIGJlZW4gc2V0IGJ5IGFueSBvZgotCSB0aGUgcm91dGluZXMgd2hpY2ggd29yayBvbiBvdXRwdXQgZmlsZXMuICAqLwotICAgICAgaWYgKGVsZl9zZWN0aW9uX2RhdGEgKG8pLT50aGlzX2hkci5jb250ZW50cyAhPSBOVUxMKQotCWNvbnRlbnRzID0gZWxmX3NlY3Rpb25fZGF0YSAobyktPnRoaXNfaGRyLmNvbnRlbnRzOwotICAgICAgZWxzZQotCXsKLQkgIGNvbnRlbnRzID0gZmluZm8tPmNvbnRlbnRzOwotCSAgaWYgKCEgYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIChpbnB1dF9iZmQsIG8sIGNvbnRlbnRzLCAwLAotCQkJCQkgIG8tPl9yYXdfc2l6ZSkpCi0JICAgIHJldHVybiBGQUxTRTsKLQl9Ci0KLSAgICAgIGlmICgoby0+ZmxhZ3MgJiBTRUNfUkVMT0MpICE9IDApCi0JewotCSAgRWxmX0ludGVybmFsX1JlbGEgKmludGVybmFsX3JlbG9jczsKLQotCSAgLyogR2V0IHRoZSBzd2FwcGVkIHJlbG9jcy4gICovCi0JICBpbnRlcm5hbF9yZWxvY3MKLQkgICAgPSBfYmZkX2VsZl9saW5rX3JlYWRfcmVsb2NzIChpbnB1dF9iZmQsIG8sIGZpbmZvLT5leHRlcm5hbF9yZWxvY3MsCi0JCQkJCSBmaW5mby0+aW50ZXJuYWxfcmVsb2NzLCBGQUxTRSk7Ci0JICBpZiAoaW50ZXJuYWxfcmVsb2NzID09IE5VTEwKLQkgICAgICAmJiBvLT5yZWxvY19jb3VudCA+IDApCi0JICAgIHJldHVybiBGQUxTRTsKLQotCSAgLyogUnVuIHRocm91Z2ggdGhlIHJlbG9jcyBsb29raW5nIGZvciBhbnkgYWdhaW5zdCBzeW1ib2xzCi0JICAgICBmcm9tIGRpc2NhcmRlZCBzZWN0aW9ucyBhbmQgc2VjdGlvbiBzeW1ib2xzIGZyb20KLQkgICAgIHJlbW92ZWQgbGluay1vbmNlIHNlY3Rpb25zLiAgQ29tcGxhaW4gYWJvdXQgcmVsb2NzCi0JICAgICBhZ2FpbnN0IGRpc2NhcmRlZCBzZWN0aW9ucy4gIFplcm8gcmVsb2NzIGFnYWluc3QgcmVtb3ZlZAotCSAgICAgbGluay1vbmNlIHNlY3Rpb25zLiAgUHJlc2VydmUgZGVidWcgaW5mb3JtYXRpb24gYXMgbXVjaAotCSAgICAgYXMgd2UgY2FuLiAgKi8KLQkgIGlmICghZWxmX3NlY3Rpb25faWdub3JlX2Rpc2NhcmRlZF9yZWxvY3MgKG8pKQotCSAgICB7Ci0JICAgICAgRWxmX0ludGVybmFsX1JlbGEgKnJlbCwgKnJlbGVuZDsKLQotCSAgICAgIHJlbCA9IGludGVybmFsX3JlbG9jczsKLQkgICAgICByZWxlbmQgPSByZWwgKyBvLT5yZWxvY19jb3VudCAqIGJlZC0+cy0+aW50X3JlbHNfcGVyX2V4dF9yZWw7Ci0JICAgICAgZm9yICggOyByZWwgPCByZWxlbmQ7IHJlbCsrKQotCQl7Ci0JCSAgdW5zaWduZWQgbG9uZyByX3N5bW5keCA9IEVMRl9SX1NZTSAocmVsLT5yX2luZm8pOwotCQkgIGFzZWN0aW9uICpzZWM7Ci0KLQkJICBpZiAocl9zeW1uZHggPj0gbG9jc3ltY291bnQKLQkJICAgICAgfHwgKGVsZl9iYWRfc3ltdGFiIChpbnB1dF9iZmQpCi0JCQkgICYmIGZpbmZvLT5zZWN0aW9uc1tyX3N5bW5keF0gPT0gTlVMTCkpCi0JCSAgICB7Ci0JCSAgICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoOwotCi0JCSAgICAgIGggPSBzeW1faGFzaGVzW3Jfc3ltbmR4IC0gZXh0c3ltb2ZmXTsKLQkJICAgICAgd2hpbGUgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2luZGlyZWN0Ci0JCQkgICAgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0JCQloID0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIGgtPnJvb3QudS5pLmxpbms7Ci0KLQkJICAgICAgLyogQ29tcGxhaW4gaWYgdGhlIGRlZmluaXRpb24gY29tZXMgZnJvbSBhCi0JCQkgZGlzY2FyZGVkIHNlY3Rpb24uICAqLwotCQkgICAgICBzZWMgPSBoLT5yb290LnUuZGVmLnNlY3Rpb247Ci0JCSAgICAgIGlmICgoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmaW5lZAotCQkJICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaykKLQkJCSAgJiYgZWxmX2Rpc2NhcmRlZF9zZWN0aW9uIChzZWMpKQotCQkJewotCQkJICBpZiAoKG8tPmZsYWdzICYgU0VDX0RFQlVHR0lORykgIT0gMCkKLQkJCSAgICB7Ci0JCQkgICAgICBCRkRfQVNTRVJUIChyX3N5bW5keCAhPSAwKTsKLQkJCSAgICAgIC8qIFRyeSB0byBwcmVzZXJ2ZSBkZWJ1ZyBpbmZvcm1hdGlvbi4gICovCi0JCQkgICAgICBpZiAoKG8tPmZsYWdzICYgU0VDX0RFQlVHR0lORykgIT0gMAotCQkJCSAgJiYgc2VjLT5rZXB0X3NlY3Rpb24gIT0gTlVMTAotCQkJCSAgJiYgc2VjLT5fcmF3X3NpemUgPT0gc2VjLT5rZXB0X3NlY3Rpb24tPl9yYXdfc2l6ZSkKLQkJCQloLT5yb290LnUuZGVmLnNlY3Rpb24KLQkJCQkgID0gc2VjLT5rZXB0X3NlY3Rpb247Ci0JCQkgICAgICBlbHNlCi0JCQkJbWVtc2V0IChyZWwsIDAsIHNpemVvZiAoKnJlbCkpOwotCQkJICAgIH0KLQkJCSAgZWxzZQotCQkJICAgIGZpbmZvLT5pbmZvLT5jYWxsYmFja3MtPmVycm9yX2hhbmRsZXIKLQkJCSAgICAgIChMRF9ERUZJTklUSU9OX0lOX0RJU0NBUkRFRF9TRUNUSU9OLAotCQkJICAgICAgIF8oIiVUOiBkaXNjYXJkZWQgaW4gc2VjdGlvbiBgJXMnIGZyb20gJXNcbiIpLAotCQkJICAgICAgIGgtPnJvb3Qucm9vdC5zdHJpbmcsCi0JCQkgICAgICAgaC0+cm9vdC5yb290LnN0cmluZywKLQkJCSAgICAgICBoLT5yb290LnUuZGVmLnNlY3Rpb24tPm5hbWUsCi0JCQkgICAgICAgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKGgtPnJvb3QudS5kZWYuc2VjdGlvbi0+b3duZXIpKTsKLQkJCX0KLQkJICAgIH0KLQkJICBlbHNlCi0JCSAgICB7Ci0JCSAgICAgIHNlYyA9IGZpbmZvLT5zZWN0aW9uc1tyX3N5bW5keF07Ci0KLQkJICAgICAgaWYgKHNlYyAhPSBOVUxMICYmIGVsZl9kaXNjYXJkZWRfc2VjdGlvbiAoc2VjKSkKLQkJCXsKLQkJCSAgaWYgKChvLT5mbGFncyAmIFNFQ19ERUJVR0dJTkcpICE9IDAKLQkJCSAgICAgIHx8IChzZWMtPmZsYWdzICYgU0VDX0xJTktfT05DRSkgIT0gMCkKLQkJCSAgICB7Ci0JCQkgICAgICBCRkRfQVNTRVJUIChyX3N5bW5keCAhPSAwKTsKLQkJCSAgICAgIC8qIFRyeSB0byBwcmVzZXJ2ZSBkZWJ1ZyBpbmZvcm1hdGlvbi4gICovCi0JCQkgICAgICBpZiAoKG8tPmZsYWdzICYgU0VDX0RFQlVHR0lORykgIT0gMAotCQkJCSAgJiYgc2VjLT5rZXB0X3NlY3Rpb24gIT0gTlVMTAotCQkJCSAgJiYgc2VjLT5fcmF3X3NpemUgPT0gc2VjLT5rZXB0X3NlY3Rpb24tPl9yYXdfc2l6ZSkKLQkJCQlmaW5mby0+c2VjdGlvbnNbcl9zeW1uZHhdCi0JCQkJICA9IHNlYy0+a2VwdF9zZWN0aW9uOwotCQkJICAgICAgZWxzZQotCQkJCXsKLQkJCQkgIHJlbC0+cl9pbmZvCi0JCQkJICAgID0gRUxGX1JfSU5GTyAoMCwgRUxGX1JfVFlQRSAocmVsLT5yX2luZm8pKTsKLQkJCQkgIHJlbC0+cl9hZGRlbmQgPSAwOwotCQkJCX0KLQkJCSAgICB9Ci0JCQkgIGVsc2UKLQkJCSAgICB7Ci0JCQkgICAgICBzdGF0aWMgaW50IGNvdW50OwotCQkJICAgICAgaW50IG9rOwotCQkJICAgICAgY2hhciAqYnVmOwotCi0JCQkgICAgICBvayA9IGFzcHJpbnRmICgmYnVmLCAibG9jYWwgc3ltYm9sICVkIiwKLQkJCQkJICAgICBjb3VudCsrKTsKLQkJCSAgICAgIGlmIChvayA8PSAwKQotCQkJCWJ1ZiA9IChjaGFyICopICJsb2NhbCBzeW1ib2wiOwotCQkJICAgICAgZmluZm8tPmluZm8tPmNhbGxiYWNrcy0+ZXJyb3JfaGFuZGxlcgotCQkJCShMRF9ERUZJTklUSU9OX0lOX0RJU0NBUkRFRF9TRUNUSU9OLAotCQkJCSBfKCIlVDogZGlzY2FyZGVkIGluIHNlY3Rpb24gYCVzJyBmcm9tICVzXG4iKSwKLQkJCQkgYnVmLCBidWYsIHNlYy0+bmFtZSwKLQkJCQkgYmZkX2FyY2hpdmVfZmlsZW5hbWUgKGlucHV0X2JmZCkpOwotCQkJICAgICAgaWYgKG9rICE9IC0xKQotCQkJCWZyZWUgKGJ1Zik7Ci0JCQkgICAgfQotCQkJfQotCQkgICAgfQotCQl9Ci0JICAgIH0KLQotCSAgLyogUmVsb2NhdGUgdGhlIHNlY3Rpb24gYnkgaW52b2tpbmcgYSBiYWNrIGVuZCByb3V0aW5lLgotCi0JICAgICBUaGUgYmFjayBlbmQgcm91dGluZSBpcyByZXNwb25zaWJsZSBmb3IgYWRqdXN0aW5nIHRoZQotCSAgICAgc2VjdGlvbiBjb250ZW50cyBhcyBuZWNlc3NhcnksIGFuZCAoaWYgdXNpbmcgUmVsYSByZWxvY3MKLQkgICAgIGFuZCBnZW5lcmF0aW5nIGEgcmVsb2NhdGFibGUgb3V0cHV0IGZpbGUpIGFkanVzdGluZyB0aGUKLQkgICAgIHJlbG9jIGFkZGVuZCBhcyBuZWNlc3NhcnkuCi0KLQkgICAgIFRoZSBiYWNrIGVuZCByb3V0aW5lIGRvZXMgbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgc2V0dGluZwotCSAgICAgdGhlIHJlbG9jIGFkZHJlc3Mgb3IgdGhlIHJlbG9jIHN5bWJvbCBpbmRleC4KLQotCSAgICAgVGhlIGJhY2sgZW5kIHJvdXRpbmUgaXMgZ2l2ZW4gYSBwb2ludGVyIHRvIHRoZSBzd2FwcGVkIGluCi0JICAgICBpbnRlcm5hbCBzeW1ib2xzLCBhbmQgY2FuIGFjY2VzcyB0aGUgaGFzaCB0YWJsZSBlbnRyaWVzCi0JICAgICBmb3IgdGhlIGV4dGVybmFsIHN5bWJvbHMgdmlhIGVsZl9zeW1faGFzaGVzIChpbnB1dF9iZmQpLgotCi0JICAgICBXaGVuIGdlbmVyYXRpbmcgcmVsb2NhdGFibGUgb3V0cHV0LCB0aGUgYmFjayBlbmQgcm91dGluZQotCSAgICAgbXVzdCBoYW5kbGUgU1RCX0xPQ0FML1NUVF9TRUNUSU9OIHN5bWJvbHMgc3BlY2lhbGx5LiAgVGhlCi0JICAgICBvdXRwdXQgc3ltYm9sIGlzIGdvaW5nIHRvIGJlIGEgc2VjdGlvbiBzeW1ib2wKLQkgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG91dHB1dCBzZWN0aW9uLCB3aGljaCB3aWxsIHJlcXVpcmUKLQkgICAgIHRoZSBhZGRlbmQgdG8gYmUgYWRqdXN0ZWQuICAqLwotCi0JICBpZiAoISAoKnJlbG9jYXRlX3NlY3Rpb24pIChvdXRwdXRfYmZkLCBmaW5mby0+aW5mbywKLQkJCQkgICAgIGlucHV0X2JmZCwgbywgY29udGVudHMsCi0JCQkJICAgICBpbnRlcm5hbF9yZWxvY3MsCi0JCQkJICAgICBpc3ltYnVmLAotCQkJCSAgICAgZmluZm8tPnNlY3Rpb25zKSkKLQkgICAgcmV0dXJuIEZBTFNFOwotCi0JICBpZiAoZW1pdF9yZWxvY3MpCi0JICAgIHsKLQkgICAgICBFbGZfSW50ZXJuYWxfUmVsYSAqaXJlbGE7Ci0JICAgICAgRWxmX0ludGVybmFsX1JlbGEgKmlyZWxhZW5kOwotCSAgICAgIGJmZF92bWEgbGFzdF9vZmZzZXQ7Ci0JICAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipyZWxfaGFzaDsKLQkgICAgICBFbGZfSW50ZXJuYWxfU2hkciAqaW5wdXRfcmVsX2hkciwgKmlucHV0X3JlbF9oZHIyOwotCSAgICAgIHVuc2lnbmVkIGludCBuZXh0X2VyZWw7Ci0JICAgICAgYmZkX2Jvb2xlYW4gKCpyZWxvY19lbWl0dGVyKQotCQkoYmZkICosIGFzZWN0aW9uICosIEVsZl9JbnRlcm5hbF9TaGRyICosIEVsZl9JbnRlcm5hbF9SZWxhICopOwotCSAgICAgIGJmZF9ib29sZWFuIHJlbGFfbm9ybWFsOwotCi0JICAgICAgaW5wdXRfcmVsX2hkciA9ICZlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsX2hkcjsKLQkgICAgICByZWxhX25vcm1hbCA9IChiZWQtPnJlbGFfbm9ybWFsCi0JCQkgICAgICYmIChpbnB1dF9yZWxfaGRyLT5zaF9lbnRzaXplCi0JCQkJID09IHNpemVvZiAoRWxmX0V4dGVybmFsX1JlbGEpKSk7Ci0KLQkgICAgICAvKiBBZGp1c3QgdGhlIHJlbG9jIGFkZHJlc3NlcyBhbmQgc3ltYm9sIGluZGljZXMuICAqLwotCi0JICAgICAgaXJlbGEgPSBpbnRlcm5hbF9yZWxvY3M7Ci0JICAgICAgaXJlbGFlbmQgPSBpcmVsYSArIG8tPnJlbG9jX2NvdW50ICogYmVkLT5zLT5pbnRfcmVsc19wZXJfZXh0X3JlbDsKLQkgICAgICByZWxfaGFzaCA9IChlbGZfc2VjdGlvbl9kYXRhIChvLT5vdXRwdXRfc2VjdGlvbiktPnJlbF9oYXNoZXMKLQkJCSAgKyBlbGZfc2VjdGlvbl9kYXRhIChvLT5vdXRwdXRfc2VjdGlvbiktPnJlbF9jb3VudAotCQkJICArIGVsZl9zZWN0aW9uX2RhdGEgKG8tPm91dHB1dF9zZWN0aW9uKS0+cmVsX2NvdW50Mik7Ci0JICAgICAgbGFzdF9vZmZzZXQgPSBvLT5vdXRwdXRfb2Zmc2V0OwotCSAgICAgIGlmICghZmluZm8tPmluZm8tPnJlbG9jYXRhYmxlKQotCQlsYXN0X29mZnNldCArPSBvLT5vdXRwdXRfc2VjdGlvbi0+dm1hOwotCSAgICAgIGZvciAobmV4dF9lcmVsID0gMDsgaXJlbGEgPCBpcmVsYWVuZDsgaXJlbGErKywgbmV4dF9lcmVsKyspCi0JCXsKLQkJICB1bnNpZ25lZCBsb25nIHJfc3ltbmR4OwotCQkgIGFzZWN0aW9uICpzZWM7Ci0JCSAgRWxmX0ludGVybmFsX1N5bSBzeW07Ci0KLQkJICBpZiAobmV4dF9lcmVsID09IGJlZC0+cy0+aW50X3JlbHNfcGVyX2V4dF9yZWwpCi0JCSAgICB7Ci0JCSAgICAgIHJlbF9oYXNoKys7Ci0JCSAgICAgIG5leHRfZXJlbCA9IDA7Ci0JCSAgICB9Ci0KLQkJICBpcmVsYS0+cl9vZmZzZXQgPSBfYmZkX2VsZl9zZWN0aW9uX29mZnNldCAob3V0cHV0X2JmZCwKLQkJCQkJCQkgICAgIGZpbmZvLT5pbmZvLCBvLAotCQkJCQkJCSAgICAgaXJlbGEtPnJfb2Zmc2V0KTsKLQkJICBpZiAoaXJlbGEtPnJfb2Zmc2V0ID49IChiZmRfdm1hKSAtMikKLQkJICAgIHsKLQkJICAgICAgLyogVGhpcyBpcyBhIHJlbG9jIGZvciBhIGRlbGV0ZWQgZW50cnkgb3Igc29tZXN1Y2guCi0JCQkgVHVybiBpdCBpbnRvIGFuIFJfKl9OT05FIHJlbG9jLCBhdCB0aGUgc2FtZQotCQkJIG9mZnNldCBhcyB0aGUgbGFzdCByZWxvYy4gIGVsZl9laF9mcmFtZS5jIGFuZAotCQkJIGVsZl9iZmRfZGlzY2FyZF9pbmZvIHJlbHkgb24gcmVsb2Mgb2Zmc2V0cwotCQkJIGJlaW5nIG9yZGVyZWQuICAqLwotCQkgICAgICBpcmVsYS0+cl9vZmZzZXQgPSBsYXN0X29mZnNldDsKLQkJICAgICAgaXJlbGEtPnJfaW5mbyA9IDA7Ci0JCSAgICAgIGlyZWxhLT5yX2FkZGVuZCA9IDA7Ci0JCSAgICAgIGNvbnRpbnVlOwotCQkgICAgfQotCi0JCSAgaXJlbGEtPnJfb2Zmc2V0ICs9IG8tPm91dHB1dF9vZmZzZXQ7Ci0KLQkJICAvKiBSZWxvY3MgaW4gYW4gZXhlY3V0YWJsZSBoYXZlIHRvIGJlIHZpcnR1YWwgYWRkcmVzc2VzLiAgKi8KLQkJICBpZiAoIWZpbmZvLT5pbmZvLT5yZWxvY2F0YWJsZSkKLQkJICAgIGlyZWxhLT5yX29mZnNldCArPSBvLT5vdXRwdXRfc2VjdGlvbi0+dm1hOwotCi0JCSAgbGFzdF9vZmZzZXQgPSBpcmVsYS0+cl9vZmZzZXQ7Ci0KLQkJICByX3N5bW5keCA9IEVMRl9SX1NZTSAoaXJlbGEtPnJfaW5mbyk7Ci0JCSAgaWYgKHJfc3ltbmR4ID09IFNUTl9VTkRFRikKLQkJICAgIGNvbnRpbnVlOwotCi0JCSAgaWYgKHJfc3ltbmR4ID49IGxvY3N5bWNvdW50Ci0JCSAgICAgIHx8IChlbGZfYmFkX3N5bXRhYiAoaW5wdXRfYmZkKQotCQkJICAmJiBmaW5mby0+c2VjdGlvbnNbcl9zeW1uZHhdID09IE5VTEwpKQotCQkgICAgewotCQkgICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqcmg7Ci0JCSAgICAgIHVuc2lnbmVkIGxvbmcgaW5keDsKLQotCQkgICAgICAvKiBUaGlzIGlzIGEgcmVsb2MgYWdhaW5zdCBhIGdsb2JhbCBzeW1ib2wuICBXZQotCQkJIGhhdmUgbm90IHlldCBvdXRwdXQgYWxsIHRoZSBsb2NhbCBzeW1ib2xzLCBzbwotCQkJIHdlIGRvIG5vdCBrbm93IHRoZSBzeW1ib2wgaW5kZXggb2YgYW55IGdsb2JhbAotCQkJIHN5bWJvbC4gIFdlIHNldCB0aGUgcmVsX2hhc2ggZW50cnkgZm9yIHRoaXMKLQkJCSByZWxvYyB0byBwb2ludCB0byB0aGUgZ2xvYmFsIGhhc2ggdGFibGUgZW50cnkKLQkJCSBmb3IgdGhpcyBzeW1ib2wuICBUaGUgc3ltYm9sIGluZGV4IGlzIHRoZW4KLQkJCSBzZXQgYXQgdGhlIGVuZCBvZiBlbGZfYmZkX2ZpbmFsX2xpbmsuICAqLwotCQkgICAgICBpbmR4ID0gcl9zeW1uZHggLSBleHRzeW1vZmY7Ci0JCSAgICAgIHJoID0gZWxmX3N5bV9oYXNoZXMgKGlucHV0X2JmZClbaW5keF07Ci0JCSAgICAgIHdoaWxlIChyaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKLQkJCSAgICAgfHwgcmgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0JCQlyaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSByaC0+cm9vdC51LmkubGluazsKLQotCQkgICAgICAvKiBTZXR0aW5nIHRoZSBpbmRleCB0byAtMiB0ZWxscwotCQkJIGVsZl9saW5rX291dHB1dF9leHRzeW0gdGhhdCB0aGlzIHN5bWJvbCBpcwotCQkJIHVzZWQgYnkgYSByZWxvYy4gICovCi0JCSAgICAgIEJGRF9BU1NFUlQgKHJoLT5pbmR4IDwgMCk7Ci0JCSAgICAgIHJoLT5pbmR4ID0gLTI7Ci0KLQkJICAgICAgKnJlbF9oYXNoID0gcmg7Ci0KLQkJICAgICAgY29udGludWU7Ci0JCSAgICB9Ci0KLQkJICAvKiBUaGlzIGlzIGEgcmVsb2MgYWdhaW5zdCBhIGxvY2FsIHN5bWJvbC4gICovCi0KLQkJICAqcmVsX2hhc2ggPSBOVUxMOwotCQkgIHN5bSA9IGlzeW1idWZbcl9zeW1uZHhdOwotCQkgIHNlYyA9IGZpbmZvLT5zZWN0aW9uc1tyX3N5bW5keF07Ci0JCSAgaWYgKEVMRl9TVF9UWVBFIChzeW0uc3RfaW5mbykgPT0gU1RUX1NFQ1RJT04pCi0JCSAgICB7Ci0JCSAgICAgIC8qIEkgc3VwcG9zZSB0aGUgYmFja2VuZCBvdWdodCB0byBmaWxsIGluIHRoZQotCQkJIHNlY3Rpb24gb2YgYW55IFNUVF9TRUNUSU9OIHN5bWJvbCBhZ2FpbnN0IGEKLQkJCSBwcm9jZXNzb3Igc3BlY2lmaWMgc2VjdGlvbi4gIElmIHdlIGhhdmUKLQkJCSBkaXNjYXJkZWQgYSBzZWN0aW9uLCB0aGUgb3V0cHV0X3NlY3Rpb24gd2lsbAotCQkJIGJlIHRoZSBhYnNvbHV0ZSBzZWN0aW9uLiAgKi8KLQkJICAgICAgaWYgKGJmZF9pc19hYnNfc2VjdGlvbiAoc2VjKQotCQkJICB8fCAoc2VjICE9IE5VTEwKLQkJCSAgICAgICYmIGJmZF9pc19hYnNfc2VjdGlvbiAoc2VjLT5vdXRwdXRfc2VjdGlvbikpKQotCQkJcl9zeW1uZHggPSAwOwotCQkgICAgICBlbHNlIGlmIChzZWMgPT0gTlVMTCB8fCBzZWMtPm93bmVyID09IE5VTEwpCi0JCQl7Ci0JCQkgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9iYWRfdmFsdWUpOwotCQkJICByZXR1cm4gRkFMU0U7Ci0JCQl9Ci0JCSAgICAgIGVsc2UKLQkJCXsKLQkJCSAgcl9zeW1uZHggPSBzZWMtPm91dHB1dF9zZWN0aW9uLT50YXJnZXRfaW5kZXg7Ci0JCQkgIEJGRF9BU1NFUlQgKHJfc3ltbmR4ICE9IDApOwotCQkJfQotCi0JCSAgICAgIC8qIEFkanVzdCB0aGUgYWRkZW5kIGFjY29yZGluZyB0byB3aGVyZSB0aGUKLQkJCSBzZWN0aW9uIHdpbmRzIHVwIGluIHRoZSBvdXRwdXQgc2VjdGlvbi4gICovCi0JCSAgICAgIGlmIChyZWxhX25vcm1hbCkKLQkJCWlyZWxhLT5yX2FkZGVuZCArPSBzZWMtPm91dHB1dF9vZmZzZXQ7Ci0JCSAgICB9Ci0JCSAgZWxzZQotCQkgICAgewotCQkgICAgICBpZiAoZmluZm8tPmluZGljZXNbcl9zeW1uZHhdID09IC0xKQotCQkJewotCQkJICB1bnNpZ25lZCBsb25nIHNobGluazsKLQkJCSAgY29uc3QgY2hhciAqbmFtZTsKLQkJCSAgYXNlY3Rpb24gKm9zZWM7Ci0KLQkJCSAgaWYgKGZpbmZvLT5pbmZvLT5zdHJpcCA9PSBzdHJpcF9hbGwpCi0JCQkgICAgewotCQkJICAgICAgLyogWW91IGNhbid0IGRvIGxkIC1yIC1zLiAgKi8KLQkJCSAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0JCQkgICAgICByZXR1cm4gRkFMU0U7Ci0JCQkgICAgfQotCi0JCQkgIC8qIFRoaXMgc3ltYm9sIHdhcyBza2lwcGVkIGVhcmxpZXIsIGJ1dAotCQkJICAgICBzaW5jZSBpdCBpcyBuZWVkZWQgYnkgYSByZWxvYywgd2UKLQkJCSAgICAgbXVzdCBvdXRwdXQgaXQgbm93LiAgKi8KLQkJCSAgc2hsaW5rID0gc3ltdGFiX2hkci0+c2hfbGluazsKLQkJCSAgbmFtZSA9IChiZmRfZWxmX3N0cmluZ19mcm9tX2VsZl9zZWN0aW9uCi0JCQkJICAoaW5wdXRfYmZkLCBzaGxpbmssIHN5bS5zdF9uYW1lKSk7Ci0JCQkgIGlmIChuYW1lID09IE5VTEwpCi0JCQkgICAgcmV0dXJuIEZBTFNFOwotCi0JCQkgIG9zZWMgPSBzZWMtPm91dHB1dF9zZWN0aW9uOwotCQkJICBzeW0uc3Rfc2huZHggPQotCQkJICAgIF9iZmRfZWxmX3NlY3Rpb25fZnJvbV9iZmRfc2VjdGlvbiAob3V0cHV0X2JmZCwKLQkJCQkJCQkgICAgICAgb3NlYyk7Ci0JCQkgIGlmIChzeW0uc3Rfc2huZHggPT0gU0hOX0JBRCkKLQkJCSAgICByZXR1cm4gRkFMU0U7Ci0KLQkJCSAgc3ltLnN0X3ZhbHVlICs9IHNlYy0+b3V0cHV0X29mZnNldDsKLQkJCSAgaWYgKCEgZmluZm8tPmluZm8tPnJlbG9jYXRhYmxlKQotCQkJICAgIHsKLQkJCSAgICAgIHN5bS5zdF92YWx1ZSArPSBvc2VjLT52bWE7Ci0JCQkgICAgICBpZiAoRUxGX1NUX1RZUEUgKHN5bS5zdF9pbmZvKSA9PSBTVFRfVExTKQotCQkJCXsKLQkJCQkgIC8qIFNUVF9UTFMgc3ltYm9scyBhcmUgcmVsYXRpdmUgdG8gUFRfVExTCi0JCQkJICAgICBzZWdtZW50IGJhc2UuICAqLwotCQkJCSAgQkZEX0FTU0VSVCAoZWxmX2hhc2hfdGFibGUgKGZpbmZvLT5pbmZvKQotCQkJCQkgICAgICAtPnRsc19zZWMgIT0gTlVMTCk7Ci0JCQkJICBzeW0uc3RfdmFsdWUgLT0gKGVsZl9oYXNoX3RhYmxlIChmaW5mby0+aW5mbykKLQkJCQkJCSAgIC0+dGxzX3NlYy0+dm1hKTsKLQkJCQl9Ci0JCQkgICAgfQotCi0JCQkgIGZpbmZvLT5pbmRpY2VzW3Jfc3ltbmR4XQotCQkJICAgID0gYmZkX2dldF9zeW1jb3VudCAob3V0cHV0X2JmZCk7Ci0KLQkJCSAgaWYgKCEgZWxmX2xpbmtfb3V0cHV0X3N5bSAoZmluZm8sIG5hbWUsICZzeW0sIHNlYywKLQkJCQkJCSAgICAgTlVMTCkpCi0JCQkgICAgcmV0dXJuIEZBTFNFOwotCQkJfQotCi0JCSAgICAgIHJfc3ltbmR4ID0gZmluZm8tPmluZGljZXNbcl9zeW1uZHhdOwotCQkgICAgfQotCi0JCSAgaXJlbGEtPnJfaW5mbyA9IEVMRl9SX0lORk8gKHJfc3ltbmR4LAotCQkJCQkgICAgICBFTEZfUl9UWVBFIChpcmVsYS0+cl9pbmZvKSk7Ci0JCX0KLQotCSAgICAgIC8qIFN3YXAgb3V0IHRoZSByZWxvY3MuICAqLwotCSAgICAgIGlmIChiZWQtPmVsZl9iYWNrZW5kX2VtaXRfcmVsb2NzCi0JCSAgJiYgIShmaW5mby0+aW5mby0+cmVsb2NhdGFibGUKLQkJICAgICAgIHx8IGZpbmZvLT5pbmZvLT5lbWl0cmVsb2NhdGlvbnMpKQotCQlyZWxvY19lbWl0dGVyID0gYmVkLT5lbGZfYmFja2VuZF9lbWl0X3JlbG9jczsKLQkgICAgICBlbHNlCi0JCXJlbG9jX2VtaXR0ZXIgPSBfYmZkX2VsZl9saW5rX291dHB1dF9yZWxvY3M7Ci0KLQkgICAgICBpZiAoaW5wdXRfcmVsX2hkci0+c2hfc2l6ZSAhPSAwCi0JCSAgJiYgISAoKnJlbG9jX2VtaXR0ZXIpIChvdXRwdXRfYmZkLCBvLCBpbnB1dF9yZWxfaGRyLAotCQkJCQkgaW50ZXJuYWxfcmVsb2NzKSkKLQkJcmV0dXJuIEZBTFNFOwotCi0JICAgICAgaW5wdXRfcmVsX2hkcjIgPSBlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsX2hkcjI7Ci0JICAgICAgaWYgKGlucHV0X3JlbF9oZHIyICYmIGlucHV0X3JlbF9oZHIyLT5zaF9zaXplICE9IDApCi0JCXsKLQkJICBpbnRlcm5hbF9yZWxvY3MgKz0gKE5VTV9TSERSX0VOVFJJRVMgKGlucHV0X3JlbF9oZHIpCi0JCQkJICAgICAgKiBiZWQtPnMtPmludF9yZWxzX3Blcl9leHRfcmVsKTsKLQkJICBpZiAoISAoKnJlbG9jX2VtaXR0ZXIpIChvdXRwdXRfYmZkLCBvLCBpbnB1dF9yZWxfaGRyMiwKLQkJCQkJICBpbnRlcm5hbF9yZWxvY3MpKQotCQkgICAgcmV0dXJuIEZBTFNFOwotCQl9Ci0JICAgIH0KLQl9Ci0KLSAgICAgIC8qIFdyaXRlIG91dCB0aGUgbW9kaWZpZWQgc2VjdGlvbiBjb250ZW50cy4gICovCi0gICAgICBpZiAoYmVkLT5lbGZfYmFja2VuZF93cml0ZV9zZWN0aW9uCi0JICAmJiAoKmJlZC0+ZWxmX2JhY2tlbmRfd3JpdGVfc2VjdGlvbikgKG91dHB1dF9iZmQsIG8sIGNvbnRlbnRzKSkKLQl7Ci0JICAvKiBTZWN0aW9uIHdyaXR0ZW4gb3V0LiAgKi8KLQl9Ci0gICAgICBlbHNlIHN3aXRjaCAoby0+c2VjX2luZm9fdHlwZSkKLQl7Ci0JY2FzZSBFTEZfSU5GT19UWVBFX1NUQUJTOgotCSAgaWYgKCEgKF9iZmRfd3JpdGVfc2VjdGlvbl9zdGFicwotCQkgKG91dHB1dF9iZmQsCi0JCSAgJmVsZl9oYXNoX3RhYmxlIChmaW5mby0+aW5mbyktPnN0YWJfaW5mbywKLQkJICBvLCAmZWxmX3NlY3Rpb25fZGF0YSAobyktPnNlY19pbmZvLCBjb250ZW50cykpKQotCSAgICByZXR1cm4gRkFMU0U7Ci0JICBicmVhazsKLQljYXNlIEVMRl9JTkZPX1RZUEVfTUVSR0U6Ci0JICBpZiAoISBfYmZkX3dyaXRlX21lcmdlZF9zZWN0aW9uIChvdXRwdXRfYmZkLCBvLAotCQkJCQkgICBlbGZfc2VjdGlvbl9kYXRhIChvKS0+c2VjX2luZm8pKQotCSAgICByZXR1cm4gRkFMU0U7Ci0JICBicmVhazsKLQljYXNlIEVMRl9JTkZPX1RZUEVfRUhfRlJBTUU6Ci0JICB7Ci0JICAgIGlmICghIF9iZmRfZWxmX3dyaXRlX3NlY3Rpb25fZWhfZnJhbWUgKG91dHB1dF9iZmQsIGZpbmZvLT5pbmZvLAotCQkJCQkJICAgbywgY29udGVudHMpKQotCSAgICAgIHJldHVybiBGQUxTRTsKLQkgIH0KLQkgIGJyZWFrOwotCWRlZmF1bHQ6Ci0JICB7Ci0JICAgIGJmZF9zaXplX3R5cGUgc2VjX3NpemU7Ci0KLQkgICAgc2VjX3NpemUgPSAoby0+X2Nvb2tlZF9zaXplICE9IDAgPyBvLT5fY29va2VkX3NpemUgOiBvLT5fcmF3X3NpemUpOwotCSAgICBpZiAoISAoby0+ZmxhZ3MgJiBTRUNfRVhDTFVERSkKLQkJJiYgISBiZmRfc2V0X3NlY3Rpb25fY29udGVudHMgKG91dHB1dF9iZmQsIG8tPm91dHB1dF9zZWN0aW9uLAotCQkJCQkgICAgICAgY29udGVudHMsCi0JCQkJCSAgICAgICAoZmlsZV9wdHIpIG8tPm91dHB1dF9vZmZzZXQsCi0JCQkJCSAgICAgICBzZWNfc2l6ZSkpCi0JICAgICAgcmV0dXJuIEZBTFNFOwotCSAgfQotCSAgYnJlYWs7Ci0JfQotICAgIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQotLyogR2VuZXJhdGUgYSByZWxvYyB3aGVuIGxpbmtpbmcgYW4gRUxGIGZpbGUuICBUaGlzIGlzIGEgcmVsb2MKLSAgIHJlcXVlc3RlZCBieSB0aGUgbGlua2VyLCBhbmQgZG9lcyBjb21lIGZyb20gYW55IGlucHV0IGZpbGUuICBUaGlzCi0gICBpcyB1c2VkIHRvIGJ1aWxkIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIHRhYmxlcyB3aGVuIGxpbmtpbmcKLSAgIHdpdGggLVVyLiAgKi8KLQotc3RhdGljIGJmZF9ib29sZWFuCi1lbGZfcmVsb2NfbGlua19vcmRlciAoYmZkICpvdXRwdXRfYmZkLAotCQkgICAgICBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKLQkJICAgICAgYXNlY3Rpb24gKm91dHB1dF9zZWN0aW9uLAotCQkgICAgICBzdHJ1Y3QgYmZkX2xpbmtfb3JkZXIgKmxpbmtfb3JkZXIpCi17Ci0gIHJlbG9jX2hvd3RvX3R5cGUgKmhvd3RvOwotICBsb25nIGluZHg7Ci0gIGJmZF92bWEgb2Zmc2V0OwotICBiZmRfdm1hIGFkZGVuZDsKLSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipyZWxfaGFzaF9wdHI7Ci0gIEVsZl9JbnRlcm5hbF9TaGRyICpyZWxfaGRyOwotICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKG91dHB1dF9iZmQpOwotICBFbGZfSW50ZXJuYWxfUmVsYSBpcmVsW01BWF9JTlRfUkVMU19QRVJfRVhUX1JFTF07Ci0gIGJmZF9ieXRlICplcmVsOwotICB1bnNpZ25lZCBpbnQgaTsKLQotICBob3d0byA9IGJmZF9yZWxvY190eXBlX2xvb2t1cCAob3V0cHV0X2JmZCwgbGlua19vcmRlci0+dS5yZWxvYy5wLT5yZWxvYyk7Ci0gIGlmIChob3d0byA9PSBOVUxMKQotICAgIHsKLSAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9iYWRfdmFsdWUpOwotICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLQotICBhZGRlbmQgPSBsaW5rX29yZGVyLT51LnJlbG9jLnAtPmFkZGVuZDsKLQotICAvKiBGaWd1cmUgb3V0IHRoZSBzeW1ib2wgaW5kZXguICAqLwotICByZWxfaGFzaF9wdHIgPSAoZWxmX3NlY3Rpb25fZGF0YSAob3V0cHV0X3NlY3Rpb24pLT5yZWxfaGFzaGVzCi0JCSAgKyBlbGZfc2VjdGlvbl9kYXRhIChvdXRwdXRfc2VjdGlvbiktPnJlbF9jb3VudAotCQkgICsgZWxmX3NlY3Rpb25fZGF0YSAob3V0cHV0X3NlY3Rpb24pLT5yZWxfY291bnQyKTsKLSAgaWYgKGxpbmtfb3JkZXItPnR5cGUgPT0gYmZkX3NlY3Rpb25fcmVsb2NfbGlua19vcmRlcikKLSAgICB7Ci0gICAgICBpbmR4ID0gbGlua19vcmRlci0+dS5yZWxvYy5wLT51LnNlY3Rpb24tPnRhcmdldF9pbmRleDsKLSAgICAgIEJGRF9BU1NFUlQgKGluZHggIT0gMCk7Ci0gICAgICAqcmVsX2hhc2hfcHRyID0gTlVMTDsKLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaDsKLQotICAgICAgLyogVHJlYXQgYSByZWxvYyBhZ2FpbnN0IGEgZGVmaW5lZCBzeW1ib2wgYXMgdGhvdWdoIGl0IHdlcmUKLQkgYWN0dWFsbHkgYWdhaW5zdCB0aGUgc2VjdGlvbi4gICovCi0gICAgICBoID0gKChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKQotCSAgIGJmZF93cmFwcGVkX2xpbmtfaGFzaF9sb29rdXAgKG91dHB1dF9iZmQsIGluZm8sCi0JCQkJCSBsaW5rX29yZGVyLT51LnJlbG9jLnAtPnUubmFtZSwKLQkJCQkJIEZBTFNFLCBGQUxTRSwgVFJVRSkpOwotICAgICAgaWYgKGggIT0gTlVMTAotCSAgJiYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZmluZWQKLQkgICAgICB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKSkKLQl7Ci0JICBhc2VjdGlvbiAqc2VjdGlvbjsKLQotCSAgc2VjdGlvbiA9IGgtPnJvb3QudS5kZWYuc2VjdGlvbjsKLQkgIGluZHggPSBzZWN0aW9uLT5vdXRwdXRfc2VjdGlvbi0+dGFyZ2V0X2luZGV4OwotCSAgKnJlbF9oYXNoX3B0ciA9IE5VTEw7Ci0JICAvKiBJdCBzZWVtcyB0aGF0IHdlIG91Z2h0IHRvIGFkZCB0aGUgc3ltYm9sIHZhbHVlIHRvIHRoZQotCSAgICAgYWRkZW5kIGhlcmUsIGJ1dCBpbiBwcmFjdGljZSBpdCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkCi0JICAgICBiZWNhdXNlIGl0IHdhcyBwYXNzZWQgdG8gY29uc3RydWN0b3JfY2FsbGJhY2suICAqLwotCSAgYWRkZW5kICs9IHNlY3Rpb24tPm91dHB1dF9zZWN0aW9uLT52bWEgKyBzZWN0aW9uLT5vdXRwdXRfb2Zmc2V0OwotCX0KLSAgICAgIGVsc2UgaWYgKGggIT0gTlVMTCkKLQl7Ci0JICAvKiBTZXR0aW5nIHRoZSBpbmRleCB0byAtMiB0ZWxscyBlbGZfbGlua19vdXRwdXRfZXh0c3ltIHRoYXQKLQkgICAgIHRoaXMgc3ltYm9sIGlzIHVzZWQgYnkgYSByZWxvYy4gICovCi0JICBoLT5pbmR4ID0gLTI7Ci0JICAqcmVsX2hhc2hfcHRyID0gaDsKLQkgIGluZHggPSAwOwotCX0KLSAgICAgIGVsc2UKLQl7Ci0JICBpZiAoISAoKCppbmZvLT5jYWxsYmFja3MtPnVuYXR0YWNoZWRfcmVsb2MpCi0JCSAoaW5mbywgbGlua19vcmRlci0+dS5yZWxvYy5wLT51Lm5hbWUsIE5VTEwsIE5VTEwsIDApKSkKLQkgICAgcmV0dXJuIEZBTFNFOwotCSAgaW5keCA9IDA7Ci0JfQotICAgIH0KLQotICAvKiBJZiB0aGlzIGlzIGFuIGlucGxhY2UgcmVsb2MsIHdlIG11c3Qgd3JpdGUgdGhlIGFkZGVuZCBpbnRvIHRoZQotICAgICBvYmplY3QgZmlsZS4gICovCi0gIGlmIChob3d0by0+cGFydGlhbF9pbnBsYWNlICYmIGFkZGVuZCAhPSAwKQotICAgIHsKLSAgICAgIGJmZF9zaXplX3R5cGUgc2l6ZTsKLSAgICAgIGJmZF9yZWxvY19zdGF0dXNfdHlwZSByc3RhdDsKLSAgICAgIGJmZF9ieXRlICpidWY7Ci0gICAgICBiZmRfYm9vbGVhbiBvazsKLSAgICAgIGNvbnN0IGNoYXIgKnN5bV9uYW1lOwotCi0gICAgICBzaXplID0gYmZkX2dldF9yZWxvY19zaXplIChob3d0byk7Ci0gICAgICBidWYgPSBiZmRfem1hbGxvYyAoc2l6ZSk7Ci0gICAgICBpZiAoYnVmID09IE5VTEwpCi0JcmV0dXJuIEZBTFNFOwotICAgICAgcnN0YXQgPSBfYmZkX3JlbG9jYXRlX2NvbnRlbnRzIChob3d0bywgb3V0cHV0X2JmZCwgYWRkZW5kLCBidWYpOwotICAgICAgc3dpdGNoIChyc3RhdCkKLQl7Ci0JY2FzZSBiZmRfcmVsb2Nfb2s6Ci0JICBicmVhazsKLQotCWRlZmF1bHQ6Ci0JY2FzZSBiZmRfcmVsb2Nfb3V0b2ZyYW5nZToKLQkgIGFib3J0ICgpOwotCi0JY2FzZSBiZmRfcmVsb2Nfb3ZlcmZsb3c6Ci0JICBpZiAobGlua19vcmRlci0+dHlwZSA9PSBiZmRfc2VjdGlvbl9yZWxvY19saW5rX29yZGVyKQotCSAgICBzeW1fbmFtZSA9IGJmZF9zZWN0aW9uX25hbWUgKG91dHB1dF9iZmQsCi0JCQkJCSBsaW5rX29yZGVyLT51LnJlbG9jLnAtPnUuc2VjdGlvbik7Ci0JICBlbHNlCi0JICAgIHN5bV9uYW1lID0gbGlua19vcmRlci0+dS5yZWxvYy5wLT51Lm5hbWU7Ci0JICBpZiAoISAoKCppbmZvLT5jYWxsYmFja3MtPnJlbG9jX292ZXJmbG93KQotCQkgKGluZm8sIHN5bV9uYW1lLCBob3d0by0+bmFtZSwgYWRkZW5kLCBOVUxMLCBOVUxMLCAwKSkpCi0JICAgIHsKLQkgICAgICBmcmVlIChidWYpOwotCSAgICAgIHJldHVybiBGQUxTRTsKLQkgICAgfQotCSAgYnJlYWs7Ci0JfQotICAgICAgb2sgPSBiZmRfc2V0X3NlY3Rpb25fY29udGVudHMgKG91dHB1dF9iZmQsIG91dHB1dF9zZWN0aW9uLCBidWYsCi0JCQkJICAgICBsaW5rX29yZGVyLT5vZmZzZXQsIHNpemUpOwotICAgICAgZnJlZSAoYnVmKTsKLSAgICAgIGlmICghIG9rKQotCXJldHVybiBGQUxTRTsKLSAgICB9Ci0KLSAgLyogVGhlIGFkZHJlc3Mgb2YgYSByZWxvYyBpcyByZWxhdGl2ZSB0byB0aGUgc2VjdGlvbiBpbiBhCi0gICAgIHJlbG9jYXRhYmxlIGZpbGUsIGFuZCBpcyBhIHZpcnR1YWwgYWRkcmVzcyBpbiBhbiBleGVjdXRhYmxlCi0gICAgIGZpbGUuICAqLwotICBvZmZzZXQgPSBsaW5rX29yZGVyLT5vZmZzZXQ7Ci0gIGlmICghIGluZm8tPnJlbG9jYXRhYmxlKQotICAgIG9mZnNldCArPSBvdXRwdXRfc2VjdGlvbi0+dm1hOwotCi0gIGZvciAoaSA9IDA7IGkgPCBiZWQtPnMtPmludF9yZWxzX3Blcl9leHRfcmVsOyBpKyspCi0gICAgewotICAgICAgaXJlbFtpXS5yX29mZnNldCA9IG9mZnNldDsKLSAgICAgIGlyZWxbaV0ucl9pbmZvID0gMDsKLSAgICAgIGlyZWxbaV0ucl9hZGRlbmQgPSAwOwotICAgIH0KLSAgaXJlbFswXS5yX2luZm8gPSBFTEZfUl9JTkZPIChpbmR4LCBob3d0by0+dHlwZSk7Ci0KLSAgcmVsX2hkciA9ICZlbGZfc2VjdGlvbl9kYXRhIChvdXRwdXRfc2VjdGlvbiktPnJlbF9oZHI7Ci0gIGVyZWwgPSByZWxfaGRyLT5jb250ZW50czsKLSAgaWYgKHJlbF9oZHItPnNoX3R5cGUgPT0gU0hUX1JFTCkKLSAgICB7Ci0gICAgICBlcmVsICs9IChlbGZfc2VjdGlvbl9kYXRhIChvdXRwdXRfc2VjdGlvbiktPnJlbF9jb3VudAotCSAgICAgICAqIHNpemVvZiAoRWxmX0V4dGVybmFsX1JlbCkpOwotICAgICAgKCpiZWQtPnMtPnN3YXBfcmVsb2Nfb3V0KSAob3V0cHV0X2JmZCwgaXJlbCwgZXJlbCk7Ci0gICAgfQotICBlbHNlCi0gICAgewotICAgICAgaXJlbFswXS5yX2FkZGVuZCA9IGFkZGVuZDsKLSAgICAgIGVyZWwgKz0gKGVsZl9zZWN0aW9uX2RhdGEgKG91dHB1dF9zZWN0aW9uKS0+cmVsX2NvdW50Ci0JICAgICAgICogc2l6ZW9mIChFbGZfRXh0ZXJuYWxfUmVsYSkpOwotICAgICAgKCpiZWQtPnMtPnN3YXBfcmVsb2NhX291dCkgKG91dHB1dF9iZmQsIGlyZWwsIGVyZWwpOwotICAgIH0KLQotICArK2VsZl9zZWN0aW9uX2RhdGEgKG91dHB1dF9zZWN0aW9uKS0+cmVsX2NvdW50OwotCi0gIHJldHVybiBUUlVFOwotfQotDAotLyogR2FyYmFnZSBjb2xsZWN0IHVudXNlZCBzZWN0aW9ucy4gICovCi0KLXN0YXRpYyBiZmRfYm9vbGVhbiBlbGZfZ2Nfc3dlZXBfc3ltYm9sCi0gIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCB2b2lkICopOwotCi1zdGF0aWMgYmZkX2Jvb2xlYW4gZWxmX2djX2FsbG9jYXRlX2dvdF9vZmZzZXRzCi0gIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCB2b2lkICopOwotCi0vKiBUaGUgbWFyayBwaGFzZSBvZiBnYXJiYWdlIGNvbGxlY3Rpb24uICBGb3IgYSBnaXZlbiBzZWN0aW9uLCBtYXJrCi0gICBpdCBhbmQgYW55IHNlY3Rpb25zIGluIHRoaXMgc2VjdGlvbidzIGdyb3VwLCBhbmQgYWxsIHRoZSBzZWN0aW9ucwotICAgd2hpY2ggZGVmaW5lIHN5bWJvbHMgdG8gd2hpY2ggaXQgcmVmZXJzLiAgKi8KLQotdHlwZWRlZiBhc2VjdGlvbiAqICgqZ2NfbWFya19ob29rX2ZuKQotICAoYXNlY3Rpb24gKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgRWxmX0ludGVybmFsX1JlbGEgKiwKLSAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICosIEVsZl9JbnRlcm5hbF9TeW0gKik7Ci0KLXN0YXRpYyBiZmRfYm9vbGVhbgotZWxmX2djX21hcmsgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAotCSAgICAgYXNlY3Rpb24gKnNlYywKLQkgICAgIGdjX21hcmtfaG9va19mbiBnY19tYXJrX2hvb2spCi17Ci0gIGJmZF9ib29sZWFuIHJldDsKLSAgYXNlY3Rpb24gKmdyb3VwX3NlYzsKLQotICBzZWMtPmdjX21hcmsgPSAxOwotCi0gIC8qIE1hcmsgYWxsIHRoZSBzZWN0aW9ucyBpbiB0aGUgZ3JvdXAuICAqLwotICBncm91cF9zZWMgPSBlbGZfc2VjdGlvbl9kYXRhIChzZWMpLT5uZXh0X2luX2dyb3VwOwotICBpZiAoZ3JvdXBfc2VjICYmICFncm91cF9zZWMtPmdjX21hcmspCi0gICAgaWYgKCFlbGZfZ2NfbWFyayAoaW5mbywgZ3JvdXBfc2VjLCBnY19tYXJrX2hvb2spKQotICAgICAgcmV0dXJuIEZBTFNFOwotCi0gIC8qIExvb2sgdGhyb3VnaCB0aGUgc2VjdGlvbiByZWxvY3MuICAqLwotICByZXQgPSBUUlVFOwotICBpZiAoKHNlYy0+ZmxhZ3MgJiBTRUNfUkVMT0MpICE9IDAgJiYgc2VjLT5yZWxvY19jb3VudCA+IDApCi0gICAgewotICAgICAgRWxmX0ludGVybmFsX1JlbGEgKnJlbHN0YXJ0LCAqcmVsLCAqcmVsZW5kOwotICAgICAgRWxmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9oZHI7Ci0gICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKnN5bV9oYXNoZXM7Ci0gICAgICBzaXplX3QgbmxvY3N5bXM7Ci0gICAgICBzaXplX3QgZXh0c3ltb2ZmOwotICAgICAgYmZkICppbnB1dF9iZmQgPSBzZWMtPm93bmVyOwotICAgICAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChpbnB1dF9iZmQpOwotICAgICAgRWxmX0ludGVybmFsX1N5bSAqaXN5bSA9IE5VTEw7Ci0KLSAgICAgIHN5bXRhYl9oZHIgPSAmZWxmX3RkYXRhIChpbnB1dF9iZmQpLT5zeW10YWJfaGRyOwotICAgICAgc3ltX2hhc2hlcyA9IGVsZl9zeW1faGFzaGVzIChpbnB1dF9iZmQpOwotCi0gICAgICAvKiBSZWFkIHRoZSBsb2NhbCBzeW1ib2xzLiAgKi8KLSAgICAgIGlmIChlbGZfYmFkX3N5bXRhYiAoaW5wdXRfYmZkKSkKLQl7Ci0JICBubG9jc3ltcyA9IHN5bXRhYl9oZHItPnNoX3NpemUgLyBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW0pOwotCSAgZXh0c3ltb2ZmID0gMDsKLQl9Ci0gICAgICBlbHNlCi0JZXh0c3ltb2ZmID0gbmxvY3N5bXMgPSBzeW10YWJfaGRyLT5zaF9pbmZvOwotCi0gICAgICBpc3ltID0gKEVsZl9JbnRlcm5hbF9TeW0gKikgc3ltdGFiX2hkci0+Y29udGVudHM7Ci0gICAgICBpZiAoaXN5bSA9PSBOVUxMICYmIG5sb2NzeW1zICE9IDApCi0JewotCSAgaXN5bSA9IGJmZF9lbGZfZ2V0X2VsZl9zeW1zIChpbnB1dF9iZmQsIHN5bXRhYl9oZHIsIG5sb2NzeW1zLCAwLAotCQkJCSAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLQkgIGlmIChpc3ltID09IE5VTEwpCi0JICAgIHJldHVybiBGQUxTRTsKLQl9Ci0KLSAgICAgIC8qIFJlYWQgdGhlIHJlbG9jYXRpb25zLiAgKi8KLSAgICAgIHJlbHN0YXJ0ID0gX2JmZF9lbGZfbGlua19yZWFkX3JlbG9jcyAoaW5wdXRfYmZkLCBzZWMsIE5VTEwsIE5VTEwsCi0JCQkJCSAgICBpbmZvLT5rZWVwX21lbW9yeSk7Ci0gICAgICBpZiAocmVsc3RhcnQgPT0gTlVMTCkKLQl7Ci0JICByZXQgPSBGQUxTRTsKLQkgIGdvdG8gb3V0MTsKLQl9Ci0gICAgICByZWxlbmQgPSByZWxzdGFydCArIHNlYy0+cmVsb2NfY291bnQgKiBiZWQtPnMtPmludF9yZWxzX3Blcl9leHRfcmVsOwotCi0gICAgICBmb3IgKHJlbCA9IHJlbHN0YXJ0OyByZWwgPCByZWxlbmQ7IHJlbCsrKQotCXsKLQkgIHVuc2lnbmVkIGxvbmcgcl9zeW1uZHg7Ci0JICBhc2VjdGlvbiAqcnNlYzsKLQkgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoOwotCi0JICByX3N5bW5keCA9IEVMRl9SX1NZTSAocmVsLT5yX2luZm8pOwotCSAgaWYgKHJfc3ltbmR4ID09IDApCi0JICAgIGNvbnRpbnVlOwotCi0JICBpZiAocl9zeW1uZHggPj0gbmxvY3N5bXMKLQkgICAgICB8fCBFTEZfU1RfQklORCAoaXN5bVtyX3N5bW5keF0uc3RfaW5mbykgIT0gU1RCX0xPQ0FMKQotCSAgICB7Ci0JICAgICAgaCA9IHN5bV9oYXNoZXNbcl9zeW1uZHggLSBleHRzeW1vZmZdOwotCSAgICAgIHJzZWMgPSAoKmdjX21hcmtfaG9vaykgKHNlYywgaW5mbywgcmVsLCBoLCBOVUxMKTsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgcnNlYyA9ICgqZ2NfbWFya19ob29rKSAoc2VjLCBpbmZvLCByZWwsIE5VTEwsICZpc3ltW3Jfc3ltbmR4XSk7Ci0JICAgIH0KLQotCSAgaWYgKHJzZWMgJiYgIXJzZWMtPmdjX21hcmspCi0JICAgIHsKLQkgICAgICBpZiAoYmZkX2dldF9mbGF2b3VyIChyc2VjLT5vd25lcikgIT0gYmZkX3RhcmdldF9lbGZfZmxhdm91cikKLQkJcnNlYy0+Z2NfbWFyayA9IDE7Ci0JICAgICAgZWxzZSBpZiAoIWVsZl9nY19tYXJrIChpbmZvLCByc2VjLCBnY19tYXJrX2hvb2spKQotCQl7Ci0JCSAgcmV0ID0gRkFMU0U7Ci0JCSAgZ290byBvdXQyOwotCQl9Ci0JICAgIH0KLQl9Ci0KLSAgICBvdXQyOgotICAgICAgaWYgKGVsZl9zZWN0aW9uX2RhdGEgKHNlYyktPnJlbG9jcyAhPSByZWxzdGFydCkKLQlmcmVlIChyZWxzdGFydCk7Ci0gICAgb3V0MToKLSAgICAgIGlmIChpc3ltICE9IE5VTEwgJiYgc3ltdGFiX2hkci0+Y29udGVudHMgIT0gKHVuc2lnbmVkIGNoYXIgKikgaXN5bSkKLQl7Ci0JICBpZiAoISBpbmZvLT5rZWVwX21lbW9yeSkKLQkgICAgZnJlZSAoaXN5bSk7Ci0JICBlbHNlCi0JICAgIHN5bXRhYl9oZHItPmNvbnRlbnRzID0gKHVuc2lnbmVkIGNoYXIgKikgaXN5bTsKLQl9Ci0gICAgfQotCi0gIHJldHVybiByZXQ7Ci19Ci0KLS8qIFRoZSBzd2VlcCBwaGFzZSBvZiBnYXJiYWdlIGNvbGxlY3Rpb24uICBSZW1vdmUgYWxsIGdhcmJhZ2Ugc2VjdGlvbnMuICAqLwotCi10eXBlZGVmIGJmZF9ib29sZWFuICgqZ2Nfc3dlZXBfaG9va19mbikKLSAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBhc2VjdGlvbiAqLCBjb25zdCBFbGZfSW50ZXJuYWxfUmVsYSAqKTsKLQotc3RhdGljIGJmZF9ib29sZWFuCi1lbGZfZ2Nfc3dlZXAgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLCBnY19zd2VlcF9ob29rX2ZuIGdjX3N3ZWVwX2hvb2spCi17Ci0gIGJmZCAqc3ViOwotCi0gIGZvciAoc3ViID0gaW5mby0+aW5wdXRfYmZkczsgc3ViICE9IE5VTEw7IHN1YiA9IHN1Yi0+bGlua19uZXh0KQotICAgIHsKLSAgICAgIGFzZWN0aW9uICpvOwotCi0gICAgICBpZiAoYmZkX2dldF9mbGF2b3VyIChzdWIpICE9IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCi0JY29udGludWU7Ci0KLSAgICAgIGZvciAobyA9IHN1Yi0+c2VjdGlvbnM7IG8gIT0gTlVMTDsgbyA9IG8tPm5leHQpCi0JewotCSAgLyogS2VlcCBzcGVjaWFsIHNlY3Rpb25zLiAgS2VlcCAuZGVidWcgc2VjdGlvbnMuICAqLwotCSAgaWYgKChvLT5mbGFncyAmIFNFQ19MSU5LRVJfQ1JFQVRFRCkKLQkgICAgICB8fCAoby0+ZmxhZ3MgJiBTRUNfREVCVUdHSU5HKSkKLQkgICAgby0+Z2NfbWFyayA9IDE7Ci0KLQkgIGlmIChvLT5nY19tYXJrKQotCSAgICBjb250aW51ZTsKLQotCSAgLyogU2tpcCBzd2VlcGluZyBzZWN0aW9ucyBhbHJlYWR5IGV4Y2x1ZGVkLiAgKi8KLQkgIGlmIChvLT5mbGFncyAmIFNFQ19FWENMVURFKQotCSAgICBjb250aW51ZTsKLQotCSAgLyogU2luY2UgdGhpcyBpcyBlYXJseSBpbiB0aGUgbGluayBwcm9jZXNzLCBpdCBpcyBzaW1wbGUKLQkgICAgIHRvIHJlbW92ZSBhIHNlY3Rpb24gZnJvbSB0aGUgb3V0cHV0LiAgKi8KLQkgIG8tPmZsYWdzIHw9IFNFQ19FWENMVURFOwotCi0JICAvKiBCdXQgd2UgYWxzbyBoYXZlIHRvIHVwZGF0ZSBzb21lIG9mIHRoZSByZWxvY2F0aW9uCi0JICAgICBpbmZvIHdlIGNvbGxlY3RlZCBiZWZvcmUuICAqLwotCSAgaWYgKGdjX3N3ZWVwX2hvb2sKLQkgICAgICAmJiAoby0+ZmxhZ3MgJiBTRUNfUkVMT0MpICYmIG8tPnJlbG9jX2NvdW50ID4gMCkKLQkgICAgewotCSAgICAgIEVsZl9JbnRlcm5hbF9SZWxhICppbnRlcm5hbF9yZWxvY3M7Ci0JICAgICAgYmZkX2Jvb2xlYW4gcjsKLQotCSAgICAgIGludGVybmFsX3JlbG9jcwotCQk9IF9iZmRfZWxmX2xpbmtfcmVhZF9yZWxvY3MgKG8tPm93bmVyLCBvLCBOVUxMLCBOVUxMLAotCQkJCQkgICAgIGluZm8tPmtlZXBfbWVtb3J5KTsKLQkgICAgICBpZiAoaW50ZXJuYWxfcmVsb2NzID09IE5VTEwpCi0JCXJldHVybiBGQUxTRTsKLQotCSAgICAgIHIgPSAoKmdjX3N3ZWVwX2hvb2spIChvLT5vd25lciwgaW5mbywgbywgaW50ZXJuYWxfcmVsb2NzKTsKLQotCSAgICAgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChvKS0+cmVsb2NzICE9IGludGVybmFsX3JlbG9jcykKLQkJZnJlZSAoaW50ZXJuYWxfcmVsb2NzKTsKLQotCSAgICAgIGlmICghcikKLQkJcmV0dXJuIEZBTFNFOwotCSAgICB9Ci0JfQotICAgIH0KLQotICAvKiBSZW1vdmUgdGhlIHN5bWJvbHMgdGhhdCB3ZXJlIGluIHRoZSBzd2VwdCBzZWN0aW9ucyBmcm9tIHRoZSBkeW5hbWljCi0gICAgIHN5bWJvbCB0YWJsZS4gIEdDRklYTUU6IEFueW9uZSBrbm93IGhvdyB0byBnZXQgdGhlbSBvdXQgb2YgdGhlCi0gICAgIHN0YXRpYyBzeW1ib2wgdGFibGUgYXMgd2VsbD8gICovCi0gIHsKLSAgICBpbnQgaSA9IDA7Ci0KLSAgICBlbGZfbGlua19oYXNoX3RyYXZlcnNlIChlbGZfaGFzaF90YWJsZSAoaW5mbyksIGVsZl9nY19zd2VlcF9zeW1ib2wsICZpKTsKLQotICAgIGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluc3ltY291bnQgPSBpOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLS8qIFN3ZWVwIHN5bWJvbHMgaW4gc3dlcHQgc2VjdGlvbnMuICBDYWxsZWQgdmlhIGVsZl9saW5rX2hhc2hfdHJhdmVyc2UuICAqLwotCi1zdGF0aWMgYmZkX2Jvb2xlYW4KLWVsZl9nY19zd2VlcF9zeW1ib2wgKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoLCB2b2lkICppZHhwdHIpCi17Ci0gIGludCAqaWR4ID0gaWR4cHRyOwotCi0gIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQotICAgIGggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKLQotICBpZiAoaC0+ZHluaW5keCAhPSAtMQotICAgICAgJiYgKChoLT5yb290LnR5cGUgIT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JICAgJiYgaC0+cm9vdC50eXBlICE9IGJmZF9saW5rX2hhc2hfZGVmd2VhaykKLQkgIHx8IGgtPnJvb3QudS5kZWYuc2VjdGlvbi0+Z2NfbWFyaykpCi0gICAgaC0+ZHluaW5keCA9ICgqaWR4KSsrOwotCi0gIHJldHVybiBUUlVFOwotfQotCi0vKiBQcm9wYWdhdGUgY29sbGVjdGVkIHZ0YWJsZSBpbmZvcm1hdGlvbi4gIFRoaXMgaXMgY2FsbGVkIHRocm91Z2gKLSAgIGVsZl9saW5rX2hhc2hfdHJhdmVyc2UuICAqLwotCi1zdGF0aWMgYmZkX2Jvb2xlYW4KLWVsZl9nY19wcm9wYWdhdGVfdnRhYmxlX2VudHJpZXNfdXNlZCAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgsIHZvaWQgKm9rcCkKLXsKLSAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0gICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOwotCi0gIC8qIFRob3NlIHRoYXQgYXJlIG5vdCB2dGFibGVzLiAgKi8KLSAgaWYgKGgtPnZ0YWJsZV9wYXJlbnQgPT0gTlVMTCkKLSAgICByZXR1cm4gVFJVRTsKLQotICAvKiBUaG9zZSB2dGFibGVzIHRoYXQgZG8gbm90IGhhdmUgcGFyZW50cywgd2UgY2Fubm90IG1lcmdlLiAgKi8KLSAgaWYgKGgtPnZ0YWJsZV9wYXJlbnQgPT0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIC0xKQotICAgIHJldHVybiBUUlVFOwotCi0gIC8qIElmIHdlJ3ZlIGFscmVhZHkgYmVlbiBkb25lLCBleGl0LiAgKi8KLSAgaWYgKGgtPnZ0YWJsZV9lbnRyaWVzX3VzZWQgJiYgaC0+dnRhYmxlX2VudHJpZXNfdXNlZFstMV0pCi0gICAgcmV0dXJuIFRSVUU7Ci0KLSAgLyogTWFrZSBzdXJlIHRoZSBwYXJlbnQncyB0YWJsZSBpcyB1cCB0byBkYXRlLiAgKi8KLSAgZWxmX2djX3Byb3BhZ2F0ZV92dGFibGVfZW50cmllc191c2VkIChoLT52dGFibGVfcGFyZW50LCBva3ApOwotCi0gIGlmIChoLT52dGFibGVfZW50cmllc191c2VkID09IE5VTEwpCi0gICAgewotICAgICAgLyogTm9uZSBvZiB0aGlzIHRhYmxlJ3MgZW50cmllcyB3ZXJlIHJlZmVyZW5jZWQuICBSZS11c2UgdGhlCi0JIHBhcmVudCdzIHRhYmxlLiAgKi8KLSAgICAgIGgtPnZ0YWJsZV9lbnRyaWVzX3VzZWQgPSBoLT52dGFibGVfcGFyZW50LT52dGFibGVfZW50cmllc191c2VkOwotICAgICAgaC0+dnRhYmxlX2VudHJpZXNfc2l6ZSA9IGgtPnZ0YWJsZV9wYXJlbnQtPnZ0YWJsZV9lbnRyaWVzX3NpemU7Ci0gICAgfQotICBlbHNlCi0gICAgewotICAgICAgc2l6ZV90IG47Ci0gICAgICBiZmRfYm9vbGVhbiAqY3UsICpwdTsKLQotICAgICAgLyogT3IgdGhlIHBhcmVudCdzIGVudHJpZXMgaW50byBvdXJzLiAgKi8KLSAgICAgIGN1ID0gaC0+dnRhYmxlX2VudHJpZXNfdXNlZDsKLSAgICAgIGN1Wy0xXSA9IFRSVUU7Ci0gICAgICBwdSA9IGgtPnZ0YWJsZV9wYXJlbnQtPnZ0YWJsZV9lbnRyaWVzX3VzZWQ7Ci0gICAgICBpZiAocHUgIT0gTlVMTCkKLQl7Ci0JICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkOwotCSAgdW5zaWduZWQgaW50IGxvZ19maWxlX2FsaWduOwotCi0JICBiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoaC0+cm9vdC51LmRlZi5zZWN0aW9uLT5vd25lcik7Ci0JICBsb2dfZmlsZV9hbGlnbiA9IGJlZC0+cy0+bG9nX2ZpbGVfYWxpZ247Ci0JICBuID0gaC0+dnRhYmxlX3BhcmVudC0+dnRhYmxlX2VudHJpZXNfc2l6ZSA+PiBsb2dfZmlsZV9hbGlnbjsKLQkgIHdoaWxlIChuLS0pCi0JICAgIHsKLQkgICAgICBpZiAoKnB1KQotCQkqY3UgPSBUUlVFOwotCSAgICAgIHB1Kys7Ci0JICAgICAgY3UrKzsKLQkgICAgfQotCX0KLSAgICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBiZmRfYm9vbGVhbgotZWxmX2djX3NtYXNoX3VudXNlZF92dGVudHJ5X3JlbG9jcyAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgsIHZvaWQgKm9rcCkKLXsKLSAgYXNlY3Rpb24gKnNlYzsKLSAgYmZkX3ZtYSBoc3RhcnQsIGhlbmQ7Ci0gIEVsZl9JbnRlcm5hbF9SZWxhICpyZWxzdGFydCwgKnJlbGVuZCwgKnJlbDsKLSAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKLSAgdW5zaWduZWQgaW50IGxvZ19maWxlX2FsaWduOwotCi0gIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQotICAgIGggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKLQotICAvKiBUYWtlIGNhcmUgb2YgYm90aCB0aG9zZSBzeW1ib2xzIHRoYXQgZG8gbm90IGRlc2NyaWJlIHZ0YWJsZXMgYXMKLSAgICAgd2VsbCBhcyB0aG9zZSB0aGF0IGFyZSBub3QgbG9hZGVkLiAgKi8KLSAgaWYgKGgtPnZ0YWJsZV9wYXJlbnQgPT0gTlVMTCkKLSAgICByZXR1cm4gVFJVRTsKLQotICBCRkRfQVNTRVJUIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JICAgICAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2Vhayk7Ci0KLSAgc2VjID0gaC0+cm9vdC51LmRlZi5zZWN0aW9uOwotICBoc3RhcnQgPSBoLT5yb290LnUuZGVmLnZhbHVlOwotICBoZW5kID0gaHN0YXJ0ICsgaC0+c2l6ZTsKLQotICByZWxzdGFydCA9IF9iZmRfZWxmX2xpbmtfcmVhZF9yZWxvY3MgKHNlYy0+b3duZXIsIHNlYywgTlVMTCwgTlVMTCwgVFJVRSk7Ci0gIGlmICghcmVsc3RhcnQpCi0gICAgcmV0dXJuICooYmZkX2Jvb2xlYW4gKikgb2twID0gRkFMU0U7Ci0gIGJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChzZWMtPm93bmVyKTsKLSAgbG9nX2ZpbGVfYWxpZ24gPSBiZWQtPnMtPmxvZ19maWxlX2FsaWduOwotCi0gIHJlbGVuZCA9IHJlbHN0YXJ0ICsgc2VjLT5yZWxvY19jb3VudCAqIGJlZC0+cy0+aW50X3JlbHNfcGVyX2V4dF9yZWw7Ci0KLSAgZm9yIChyZWwgPSByZWxzdGFydDsgcmVsIDwgcmVsZW5kOyArK3JlbCkKLSAgICBpZiAocmVsLT5yX29mZnNldCA+PSBoc3RhcnQgJiYgcmVsLT5yX29mZnNldCA8IGhlbmQpCi0gICAgICB7Ci0JLyogSWYgdGhlIGVudHJ5IGlzIGluIHVzZSwgZG8gbm90aGluZy4gICovCi0JaWYgKGgtPnZ0YWJsZV9lbnRyaWVzX3VzZWQKLQkgICAgJiYgKHJlbC0+cl9vZmZzZXQgLSBoc3RhcnQpIDwgaC0+dnRhYmxlX2VudHJpZXNfc2l6ZSkKLQkgIHsKLQkgICAgYmZkX3ZtYSBlbnRyeSA9IChyZWwtPnJfb2Zmc2V0IC0gaHN0YXJ0KSA+PiBsb2dfZmlsZV9hbGlnbjsKLQkgICAgaWYgKGgtPnZ0YWJsZV9lbnRyaWVzX3VzZWRbZW50cnldKQotCSAgICAgIGNvbnRpbnVlOwotCSAgfQotCS8qIE90aGVyd2lzZSwga2lsbCBpdC4gICovCi0JcmVsLT5yX29mZnNldCA9IHJlbC0+cl9pbmZvID0gcmVsLT5yX2FkZGVuZCA9IDA7Ci0gICAgICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLS8qIERvIG1hcmsgYW5kIHN3ZWVwIG9mIHVudXNlZCBzZWN0aW9ucy4gICovCi0KLWJmZF9ib29sZWFuCi1lbGZfZ2Nfc2VjdGlvbnMgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCi17Ci0gIGJmZF9ib29sZWFuIG9rID0gVFJVRTsKLSAgYmZkICpzdWI7Ci0gIGFzZWN0aW9uICogKCpnY19tYXJrX2hvb2spCi0gICAgKGFzZWN0aW9uICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIEVsZl9JbnRlcm5hbF9SZWxhICosCi0gICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoLCBFbGZfSW50ZXJuYWxfU3ltICopOwotCi0gIGlmICghZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpLT5jYW5fZ2Nfc2VjdGlvbnMKLSAgICAgIHx8IGluZm8tPnJlbG9jYXRhYmxlCi0gICAgICB8fCBpbmZvLT5lbWl0cmVsb2NhdGlvbnMKLSAgICAgIHx8ICFpc19lbGZfaGFzaF90YWJsZSAoaW5mby0+aGFzaCkKLSAgICAgIHx8IGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHluYW1pY19zZWN0aW9uc19jcmVhdGVkKQotICAgIHsKLSAgICAgICgqX2JmZF9lcnJvcl9oYW5kbGVyKShfKCJXYXJuaW5nOiBnYy1zZWN0aW9ucyBvcHRpb24gaWdub3JlZCIpKTsKLSAgICAgIHJldHVybiBUUlVFOwotICAgIH0KLQotICAvKiBBcHBseSB0cmFuc2l0aXZlIGNsb3N1cmUgdG8gdGhlIHZ0YWJsZSBlbnRyeSB1c2FnZSBpbmZvLiAgKi8KLSAgZWxmX2xpbmtfaGFzaF90cmF2ZXJzZSAoZWxmX2hhc2hfdGFibGUgKGluZm8pLAotCQkJICBlbGZfZ2NfcHJvcGFnYXRlX3Z0YWJsZV9lbnRyaWVzX3VzZWQsCi0JCQkgICZvayk7Ci0gIGlmICghb2spCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIC8qIEtpbGwgdGhlIHZ0YWJsZSByZWxvY2F0aW9ucyB0aGF0IHdlcmUgbm90IHVzZWQuICAqLwotICBlbGZfbGlua19oYXNoX3RyYXZlcnNlIChlbGZfaGFzaF90YWJsZSAoaW5mbyksCi0JCQkgIGVsZl9nY19zbWFzaF91bnVzZWRfdnRlbnRyeV9yZWxvY3MsCi0JCQkgICZvayk7Ci0gIGlmICghb2spCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIC8qIEdyb3ZlbCB0aHJvdWdoIHJlbG9jcyB0byBmaW5kIG91dCB3aG8gc3RheXMgLi4uICAqLwotCi0gIGdjX21hcmtfaG9vayA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChhYmZkKS0+Z2NfbWFya19ob29rOwotICBmb3IgKHN1YiA9IGluZm8tPmlucHV0X2JmZHM7IHN1YiAhPSBOVUxMOyBzdWIgPSBzdWItPmxpbmtfbmV4dCkKLSAgICB7Ci0gICAgICBhc2VjdGlvbiAqbzsKLQotICAgICAgaWYgKGJmZF9nZXRfZmxhdm91ciAoc3ViKSAhPSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQotCWNvbnRpbnVlOwotCi0gICAgICBmb3IgKG8gPSBzdWItPnNlY3Rpb25zOyBvICE9IE5VTEw7IG8gPSBvLT5uZXh0KQotCXsKLQkgIGlmIChvLT5mbGFncyAmIFNFQ19LRUVQKQotCSAgICBpZiAoIWVsZl9nY19tYXJrIChpbmZvLCBvLCBnY19tYXJrX2hvb2spKQotCSAgICAgIHJldHVybiBGQUxTRTsKLQl9Ci0gICAgfQotCi0gIC8qIC4uLiBhbmQgbWFyayBTRUNfRVhDTFVERSBmb3IgdGhvc2UgdGhhdCBnby4gICovCi0gIGlmICghZWxmX2djX3N3ZWVwIChpbmZvLCBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCktPmdjX3N3ZWVwX2hvb2spKQotICAgIHJldHVybiBGQUxTRTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQwKLS8qIENhbGxlZCBmcm9tIGNoZWNrX3JlbG9jcyB0byByZWNvcmQgdGhlIGV4aXN0ZW5jZSBvZiBhIFZUSU5IRVJJVCByZWxvYy4gICovCi0KLWJmZF9ib29sZWFuCi1lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYmZkICphYmZkLAotCQkJIGFzZWN0aW9uICpzZWMsCi0JCQkgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgsCi0JCQkgYmZkX3ZtYSBvZmZzZXQpCi17Ci0gIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqc3ltX2hhc2hlcywgKipzeW1faGFzaGVzX2VuZDsKLSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipzZWFyY2gsICpjaGlsZDsKLSAgYmZkX3NpemVfdHlwZSBleHRzeW1jb3VudDsKLQotICAvKiBUaGUgc2hfaW5mbyBmaWVsZCBvZiB0aGUgc3ltdGFiIGhlYWRlciB0ZWxscyB1cyB3aGVyZSB0aGUKLSAgICAgZXh0ZXJuYWwgc3ltYm9scyBzdGFydC4gIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGxvY2FsIHN5bWJvbHMgYXQKLSAgICAgdGhpcyBwb2ludC4gICovCi0gIGV4dHN5bWNvdW50ID0gZWxmX3RkYXRhIChhYmZkKS0+c3ltdGFiX2hkci5zaF9zaXplL3NpemVvZiAoRWxmX0V4dGVybmFsX1N5bSk7Ci0gIGlmICghZWxmX2JhZF9zeW10YWIgKGFiZmQpKQotICAgIGV4dHN5bWNvdW50IC09IGVsZl90ZGF0YSAoYWJmZCktPnN5bXRhYl9oZHIuc2hfaW5mbzsKLQotICBzeW1faGFzaGVzID0gZWxmX3N5bV9oYXNoZXMgKGFiZmQpOwotICBzeW1faGFzaGVzX2VuZCA9IHN5bV9oYXNoZXMgKyBleHRzeW1jb3VudDsKLQotICAvKiBIdW50IGRvd24gdGhlIGNoaWxkIHN5bWJvbCwgd2hpY2ggaXMgaW4gdGhpcyBzZWN0aW9uIGF0IHRoZSBzYW1lCi0gICAgIG9mZnNldCBhcyB0aGUgcmVsb2NhdGlvbi4gICovCi0gIGZvciAoc2VhcmNoID0gc3ltX2hhc2hlczsgc2VhcmNoICE9IHN5bV9oYXNoZXNfZW5kOyArK3NlYXJjaCkKLSAgICB7Ci0gICAgICBpZiAoKGNoaWxkID0gKnNlYXJjaCkgIT0gTlVMTAotCSAgJiYgKGNoaWxkLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JICAgICAgfHwgY2hpbGQtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZndlYWspCi0JICAmJiBjaGlsZC0+cm9vdC51LmRlZi5zZWN0aW9uID09IHNlYwotCSAgJiYgY2hpbGQtPnJvb3QudS5kZWYudmFsdWUgPT0gb2Zmc2V0KQotCWdvdG8gd2luOwotICAgIH0KLQotICAoKl9iZmRfZXJyb3JfaGFuZGxlcikgKCIlczogJXMrJWx1OiBObyBzeW1ib2wgZm91bmQgZm9yIElOSEVSSVQiLAotCQkJIGJmZF9hcmNoaXZlX2ZpbGVuYW1lIChhYmZkKSwgc2VjLT5uYW1lLAotCQkJICh1bnNpZ25lZCBsb25nKSBvZmZzZXQpOwotICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfaW52YWxpZF9vcGVyYXRpb24pOwotICByZXR1cm4gRkFMU0U7Ci0KLSB3aW46Ci0gIGlmICghaCkKLSAgICB7Ci0gICAgICAvKiBUaGlzICpzaG91bGQqIG9ubHkgYmUgdGhlIGFic29sdXRlIHNlY3Rpb24uICBJdCBjb3VsZCBwb3RlbnRpYWxseQotCSBiZSB0aGF0IHNvbWVvbmUgaGFzIGRlZmluZWQgYSBub24tZ2xvYmFsIHZ0YWJsZSB0aG91Z2gsIHdoaWNoCi0JIHdvdWxkIGJlIGJhZC4gIEl0IGlzbid0IHdvcnRoIHBhZ2luZyBpbiB0aGUgbG9jYWwgc3ltYm9scyB0byBiZQotCSBzdXJlIHRob3VnaDsgdGhhdCBjYXNlIHNob3VsZCBzaW1wbHkgYmUgaGFuZGxlZCBieSB0aGUgYXNzZW1ibGVyLiAgKi8KLQotICAgICAgY2hpbGQtPnZ0YWJsZV9wYXJlbnQgPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgLTE7Ci0gICAgfQotICBlbHNlCi0gICAgY2hpbGQtPnZ0YWJsZV9wYXJlbnQgPSBoOwotCi0gIHJldHVybiBUUlVFOwotfQotCi0vKiBDYWxsZWQgZnJvbSBjaGVja19yZWxvY3MgdG8gcmVjb3JkIHRoZSBleGlzdGVuY2Ugb2YgYSBWVEVOVFJZIHJlbG9jLiAgKi8KLQotYmZkX2Jvb2xlYW4KLWVsZl9nY19yZWNvcmRfdnRlbnRyeSAoYmZkICphYmZkIEFUVFJJQlVURV9VTlVTRUQsCi0JCSAgICAgICBhc2VjdGlvbiAqc2VjIEFUVFJJQlVURV9VTlVTRUQsCi0JCSAgICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwKLQkJICAgICAgIGJmZF92bWEgYWRkZW5kKQotewotICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOwotICB1bnNpZ25lZCBpbnQgbG9nX2ZpbGVfYWxpZ24gPSBiZWQtPnMtPmxvZ19maWxlX2FsaWduOwotCi0gIGlmIChhZGRlbmQgPj0gaC0+dnRhYmxlX2VudHJpZXNfc2l6ZSkKLSAgICB7Ci0gICAgICBzaXplX3Qgc2l6ZSwgYnl0ZXMsIGZpbGVfYWxpZ247Ci0gICAgICBiZmRfYm9vbGVhbiAqcHRyID0gaC0+dnRhYmxlX2VudHJpZXNfdXNlZDsKLQotICAgICAgLyogV2hpbGUgdGhlIHN5bWJvbCBpcyB1bmRlZmluZWQsIHdlIGhhdmUgdG8gYmUgcHJlcGFyZWQgdG8gaGFuZGxlCi0JIGEgemVybyBzaXplLiAgKi8KLSAgICAgIGZpbGVfYWxpZ24gPSAxIDw8IGxvZ19maWxlX2FsaWduOwotICAgICAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3VuZGVmaW5lZCkKLQlzaXplID0gYWRkZW5kICsgZmlsZV9hbGlnbjsKLSAgICAgIGVsc2UKLQl7Ci0JICBzaXplID0gaC0+c2l6ZTsKLQkgIGlmIChhZGRlbmQgPj0gc2l6ZSkKLQkgICAgewotCSAgICAgIC8qIE9vcHMhICBXZSd2ZSBnb3QgYSByZWZlcmVuY2UgcGFzdCB0aGUgZGVmaW5lZCBlbmQgb2YKLQkJIHRoZSB0YWJsZS4gIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgLS0gc2hhbGwgd2Ugd2Fybj8gICovCi0JICAgICAgc2l6ZSA9IGFkZGVuZCArIGZpbGVfYWxpZ247Ci0JICAgIH0KLQl9Ci0gICAgICBzaXplID0gKHNpemUgKyBmaWxlX2FsaWduIC0gMSkgJiAtZmlsZV9hbGlnbjsKLQotICAgICAgLyogQWxsb2NhdGUgb25lIGV4dHJhIGVudHJ5IGZvciB1c2UgYXMgYSAiZG9uZSIgZmxhZyBmb3IgdGhlCi0JIGNvbnNvbGlkYXRpb24gcGFzcy4gICovCi0gICAgICBieXRlcyA9ICgoc2l6ZSA+PiBsb2dfZmlsZV9hbGlnbikgKyAxKSAqIHNpemVvZiAoYmZkX2Jvb2xlYW4pOwotCi0gICAgICBpZiAocHRyKQotCXsKLQkgIHB0ciA9IGJmZF9yZWFsbG9jIChwdHIgLSAxLCBieXRlcyk7Ci0KLQkgIGlmIChwdHIgIT0gTlVMTCkKLQkgICAgewotCSAgICAgIHNpemVfdCBvbGRieXRlczsKLQotCSAgICAgIG9sZGJ5dGVzID0gKCgoaC0+dnRhYmxlX2VudHJpZXNfc2l6ZSA+PiBsb2dfZmlsZV9hbGlnbikgKyAxKQotCQkJICAqIHNpemVvZiAoYmZkX2Jvb2xlYW4pKTsKLQkgICAgICBtZW1zZXQgKCgoY2hhciAqKSBwdHIpICsgb2xkYnl0ZXMsIDAsIGJ5dGVzIC0gb2xkYnl0ZXMpOwotCSAgICB9Ci0JfQotICAgICAgZWxzZQotCXB0ciA9IGJmZF96bWFsbG9jIChieXRlcyk7Ci0KLSAgICAgIGlmIChwdHIgPT0gTlVMTCkKLQlyZXR1cm4gRkFMU0U7Ci0KLSAgICAgIC8qIEFuZCBhcnJhbmdlIGZvciB0aGF0IGRvbmUgZmxhZyB0byBiZSBhdCBpbmRleCAtMS4gICovCi0gICAgICBoLT52dGFibGVfZW50cmllc191c2VkID0gcHRyICsgMTsKLSAgICAgIGgtPnZ0YWJsZV9lbnRyaWVzX3NpemUgPSBzaXplOwotICAgIH0KLQotICBoLT52dGFibGVfZW50cmllc191c2VkW2FkZGVuZCA+PiBsb2dfZmlsZV9hbGlnbl0gPSBUUlVFOwotCi0gIHJldHVybiBUUlVFOwotfQotCi0vKiBBbmQgYW4gYWNjb21wYW55aW5nIGJpdCB0byB3b3JrIG91dCBmaW5hbCBnb3QgZW50cnkgb2Zmc2V0cyBvbmNlCi0gICB3ZSdyZSBkb25lLiAgU2hvdWxkIGJlIGNhbGxlZCBmcm9tIGZpbmFsX2xpbmsuICAqLwotCi1iZmRfYm9vbGVhbgotZWxmX2djX2NvbW1vbl9maW5hbGl6ZV9nb3Rfb2Zmc2V0cyAoYmZkICphYmZkLAotCQkJCSAgICBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbykKLXsKLSAgYmZkICppOwotICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOwotICBiZmRfdm1hIGdvdG9mZjsKLQotICBpZiAoISBpc19lbGZfaGFzaF90YWJsZSAoaW5mby0+aGFzaCkpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIC8qIFRoZSBHT1Qgb2Zmc2V0IGlzIHJlbGF0aXZlIHRvIHRoZSAuZ290IHNlY3Rpb24sIGJ1dCB0aGUgR09UIGhlYWRlciBpcwotICAgICBwdXQgaW50byB0aGUgLmdvdC5wbHQgc2VjdGlvbiwgaWYgdGhlIGJhY2tlbmQgdXNlcyBpdC4gICovCi0gIGlmIChiZWQtPndhbnRfZ290X3BsdCkKLSAgICBnb3RvZmYgPSAwOwotICBlbHNlCi0gICAgZ290b2ZmID0gYmVkLT5nb3RfaGVhZGVyX3NpemU7Ci0KLSAgLyogRG8gdGhlIGxvY2FsIC5nb3QgZW50cmllcyBmaXJzdC4gICovCi0gIGZvciAoaSA9IGluZm8tPmlucHV0X2JmZHM7IGk7IGkgPSBpLT5saW5rX25leHQpCi0gICAgewotICAgICAgYmZkX3NpZ25lZF92bWEgKmxvY2FsX2dvdDsKLSAgICAgIGJmZF9zaXplX3R5cGUgaiwgbG9jc3ltY291bnQ7Ci0gICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFiX2hkcjsKLQotICAgICAgaWYgKGJmZF9nZXRfZmxhdm91ciAoaSkgIT0gYmZkX3RhcmdldF9lbGZfZmxhdm91cikKLQljb250aW51ZTsKLQotICAgICAgbG9jYWxfZ290ID0gZWxmX2xvY2FsX2dvdF9yZWZjb3VudHMgKGkpOwotICAgICAgaWYgKCFsb2NhbF9nb3QpCi0JY29udGludWU7Ci0KLSAgICAgIHN5bXRhYl9oZHIgPSAmZWxmX3RkYXRhIChpKS0+c3ltdGFiX2hkcjsKLSAgICAgIGlmIChlbGZfYmFkX3N5bXRhYiAoaSkpCi0JbG9jc3ltY291bnQgPSBzeW10YWJfaGRyLT5zaF9zaXplIC8gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltKTsKLSAgICAgIGVsc2UKLQlsb2NzeW1jb3VudCA9IHN5bXRhYl9oZHItPnNoX2luZm87Ci0KLSAgICAgIGZvciAoaiA9IDA7IGogPCBsb2NzeW1jb3VudDsgKytqKQotCXsKLQkgIGlmIChsb2NhbF9nb3Rbal0gPiAwKQotCSAgICB7Ci0JICAgICAgbG9jYWxfZ290W2pdID0gZ290b2ZmOwotCSAgICAgIGdvdG9mZiArPSBBUkNIX1NJWkUgLyA4OwotCSAgICB9Ci0JICBlbHNlCi0JICAgIGxvY2FsX2dvdFtqXSA9IChiZmRfdm1hKSAtMTsKLQl9Ci0gICAgfQotCi0gIC8qIFRoZW4gdGhlIGdsb2JhbCAuZ290IGVudHJpZXMuICAucGx0IHJlZmNvdW50cyBhcmUgaGFuZGxlZCBieQotICAgICBhZGp1c3RfZHluYW1pY19zeW1ib2wgICovCi0gIGVsZl9saW5rX2hhc2hfdHJhdmVyc2UgKGVsZl9oYXNoX3RhYmxlIChpbmZvKSwKLQkJCSAgZWxmX2djX2FsbG9jYXRlX2dvdF9vZmZzZXRzLAotCQkJICAmZ290b2ZmKTsKLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLS8qIFdlIG5lZWQgYSBzcGVjaWFsIHRvcC1sZXZlbCBsaW5rIHJvdXRpbmUgdG8gY29udmVydCBnb3QgcmVmZXJlbmNlIGNvdW50cwotICAgdG8gcmVhbCBnb3Qgb2Zmc2V0cy4gICovCi0KLXN0YXRpYyBiZmRfYm9vbGVhbgotZWxmX2djX2FsbG9jYXRlX2dvdF9vZmZzZXRzIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwgdm9pZCAqb2ZmYXJnKQotewotICBiZmRfdm1hICpvZmYgPSBvZmZhcmc7Ci0KLSAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0gICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOwotCi0gIGlmIChoLT5nb3QucmVmY291bnQgPiAwKQotICAgIHsKLSAgICAgIGgtPmdvdC5vZmZzZXQgPSBvZmZbMF07Ci0gICAgICBvZmZbMF0gKz0gQVJDSF9TSVpFIC8gODsKLSAgICB9Ci0gIGVsc2UKLSAgICBoLT5nb3Qub2Zmc2V0ID0gKGJmZF92bWEpIC0xOwotCi0gIHJldHVybiBUUlVFOwotfQotCi0vKiBNYW55IGZvbGsgbmVlZCBubyBtb3JlIGluIHRoZSB3YXkgb2YgZmluYWwgbGluayB0aGFuIHRoaXMsIG9uY2UKLSAgIGdvdCBlbnRyeSByZWZlcmVuY2UgY291bnRpbmcgaXMgZW5hYmxlZC4gICovCi0KLWJmZF9ib29sZWFuCi1lbGZfZ2NfY29tbW9uX2ZpbmFsX2xpbmsgKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCi17Ci0gIGlmICghZWxmX2djX2NvbW1vbl9maW5hbGl6ZV9nb3Rfb2Zmc2V0cyAoYWJmZCwgaW5mbykpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIC8qIEludm9rZSB0aGUgcmVndWxhciBFTEYgYmFja2VuZCBsaW5rZXIgdG8gZG8gYWxsIHRoZSB3b3JrLiAgKi8KLSAgcmV0dXJuIGVsZl9iZmRfZmluYWxfbGluayAoYWJmZCwgaW5mbyk7Ci19Ci0KLS8qIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgdGhvdWdoIGVsZl9saW5rX2hhc2hfdHJhdmVyc2UgdG8gc3RvcmUKLSAgIGFsbCBoYXNoIHZhbHVlIG9mIHRoZSBleHBvcnRlZCBzeW1ib2xzIGluIGFuIGFycmF5LiAgKi8KLQotc3RhdGljIGJmZF9ib29sZWFuCi1lbGZfY29sbGVjdF9oYXNoX2NvZGVzIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwgdm9pZCAqZGF0YSkKLXsKLSAgdW5zaWduZWQgbG9uZyAqKnZhbHVlcCA9IGRhdGE7Ci0gIGNvbnN0IGNoYXIgKm5hbWU7Ci0gIGNoYXIgKnA7Ci0gIHVuc2lnbmVkIGxvbmcgaGE7Ci0gIGNoYXIgKmFsYyA9IE5VTEw7Ci0KLSAgaWYgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0gICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOwotCi0gIC8qIElnbm9yZSBpbmRpcmVjdCBzeW1ib2xzLiAgVGhlc2UgYXJlIGFkZGVkIGJ5IHRoZSB2ZXJzaW9uaW5nIGNvZGUuICAqLwotICBpZiAoaC0+ZHluaW5keCA9PSAtMSkKLSAgICByZXR1cm4gVFJVRTsKLQotICBuYW1lID0gaC0+cm9vdC5yb290LnN0cmluZzsKLSAgcCA9IHN0cmNociAobmFtZSwgRUxGX1ZFUl9DSFIpOwotICBpZiAocCAhPSBOVUxMKQotICAgIHsKLSAgICAgIGFsYyA9IGJmZF9tYWxsb2MgKHAgLSBuYW1lICsgMSk7Ci0gICAgICBtZW1jcHkgKGFsYywgbmFtZSwgcCAtIG5hbWUpOwotICAgICAgYWxjW3AgLSBuYW1lXSA9ICdcMCc7Ci0gICAgICBuYW1lID0gYWxjOwotICAgIH0KLQotICAvKiBDb21wdXRlIHRoZSBoYXNoIHZhbHVlLiAgKi8KLSAgaGEgPSBiZmRfZWxmX2hhc2ggKG5hbWUpOwotCi0gIC8qIFN0b3JlIHRoZSBmb3VuZCBoYXNoIHZhbHVlIGluIHRoZSBhcnJheSBnaXZlbiBhcyB0aGUgYXJndW1lbnQuICAqLwotICAqKCp2YWx1ZXApKysgPSBoYTsKLQotICAvKiBBbmQgc3RvcmUgaXQgaW4gdGhlIHN0cnVjdCBzbyB0aGF0IHdlIGNhbiBwdXQgaXQgaW4gdGhlIGhhc2ggdGFibGUKLSAgICAgbGF0ZXIuICAqLwotICBoLT5lbGZfaGFzaF92YWx1ZSA9IGhhOwotCi0gIGlmIChhbGMgIT0gTlVMTCkKLSAgICBmcmVlIChhbGMpOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1iZmRfYm9vbGVhbgotZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3AgKGJmZF92bWEgb2Zmc2V0LCB2b2lkICpjb29raWUpCi17Ci0gIHN0cnVjdCBlbGZfcmVsb2NfY29va2llICpyY29va2llID0gY29va2llOwotCi0gIGlmIChyY29va2llLT5iYWRfc3ltdGFiKQotICAgIHJjb29raWUtPnJlbCA9IHJjb29raWUtPnJlbHM7Ci0KLSAgZm9yICg7IHJjb29raWUtPnJlbCA8IHJjb29raWUtPnJlbGVuZDsgcmNvb2tpZS0+cmVsKyspCi0gICAgewotICAgICAgdW5zaWduZWQgbG9uZyByX3N5bW5keDsKLQotICAgICAgaWYgKCEgcmNvb2tpZS0+YmFkX3N5bXRhYikKLQlpZiAocmNvb2tpZS0+cmVsLT5yX29mZnNldCA+IG9mZnNldCkKLQkgIHJldHVybiBGQUxTRTsKLSAgICAgIGlmIChyY29va2llLT5yZWwtPnJfb2Zmc2V0ICE9IG9mZnNldCkKLQljb250aW51ZTsKLQotICAgICAgcl9zeW1uZHggPSBFTEZfUl9TWU0gKHJjb29raWUtPnJlbC0+cl9pbmZvKTsKLSAgICAgIGlmIChyX3N5bW5keCA9PSBTSE5fVU5ERUYpCi0JcmV0dXJuIFRSVUU7Ci0KLSAgICAgIGlmIChyX3N5bW5keCA+PSByY29va2llLT5sb2NzeW1jb3VudAotCSAgfHwgRUxGX1NUX0JJTkQgKHJjb29raWUtPmxvY3N5bXNbcl9zeW1uZHhdLnN0X2luZm8pICE9IFNUQl9MT0NBTCkKLQl7Ci0JICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaDsKLQotCSAgaCA9IHJjb29raWUtPnN5bV9oYXNoZXNbcl9zeW1uZHggLSByY29va2llLT5leHRzeW1vZmZdOwotCi0JICB3aGlsZSAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKLQkJIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCi0JICAgIGggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKLQotCSAgaWYgKChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCi0JICAgICAgIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZndlYWspCi0JICAgICAgJiYgZWxmX2Rpc2NhcmRlZF9zZWN0aW9uIChoLT5yb290LnUuZGVmLnNlY3Rpb24pKQotCSAgICByZXR1cm4gVFJVRTsKLQkgIGVsc2UKLQkgICAgcmV0dXJuIEZBTFNFOwotCX0KLSAgICAgIGVsc2UKLQl7Ci0JICAvKiBJdCdzIG5vdCBhIHJlbG9jYXRpb24gYWdhaW5zdCBhIGdsb2JhbCBzeW1ib2wsCi0JICAgICBidXQgaXQgY291bGQgYmUgYSByZWxvY2F0aW9uIGFnYWluc3QgYSBsb2NhbAotCSAgICAgc3ltYm9sIGZvciBhIGRpc2NhcmRlZCBzZWN0aW9uLiAgKi8KLQkgIGFzZWN0aW9uICppc2VjOwotCSAgRWxmX0ludGVybmFsX1N5bSAqaXN5bTsKLQotCSAgLyogTmVlZCB0bzogZ2V0IHRoZSBzeW1ib2w7IGdldCB0aGUgc2VjdGlvbi4gICovCi0JICBpc3ltID0gJnJjb29raWUtPmxvY3N5bXNbcl9zeW1uZHhdOwotCSAgaWYgKGlzeW0tPnN0X3NobmR4IDwgU0hOX0xPUkVTRVJWRSB8fCBpc3ltLT5zdF9zaG5keCA+IFNITl9ISVJFU0VSVkUpCi0JICAgIHsKLQkgICAgICBpc2VjID0gc2VjdGlvbl9mcm9tX2VsZl9pbmRleCAocmNvb2tpZS0+YWJmZCwgaXN5bS0+c3Rfc2huZHgpOwotCSAgICAgIGlmIChpc2VjICE9IE5VTEwgJiYgZWxmX2Rpc2NhcmRlZF9zZWN0aW9uIChpc2VjKSkKLQkJcmV0dXJuIFRSVUU7Ci0JICAgIH0KLQl9Ci0gICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotICByZXR1cm4gRkFMU0U7Ci19Ci0KLS8qIERpc2NhcmQgdW5uZWVkZWQgcmVmZXJlbmNlcyB0byBkaXNjYXJkZWQgc2VjdGlvbnMuCi0gICBSZXR1cm5zIFRSVUUgaWYgYW55IHNlY3Rpb24ncyBzaXplIHdhcyBjaGFuZ2VkLiAgKi8KLS8qIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZSByZWxvY2F0aW9ucyBhcmUgaW4gc29ydGVkIG9yZGVyLAotICAgd2hpY2ggaXMgdHJ1ZSBmb3IgYWxsIGtub3duIGFzc2VtYmxlcnMuICAqLwotCi1iZmRfYm9vbGVhbgotZWxmX2JmZF9kaXNjYXJkX2luZm8gKGJmZCAqb3V0cHV0X2JmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCi17Ci0gIHN0cnVjdCBlbGZfcmVsb2NfY29va2llIGNvb2tpZTsKLSAgYXNlY3Rpb24gKnN0YWIsICplaDsKLSAgRWxmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9oZHI7Ci0gIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQ7Ci0gIGJmZCAqYWJmZDsKLSAgdW5zaWduZWQgaW50IGNvdW50OwotICBiZmRfYm9vbGVhbiByZXQgPSBGQUxTRTsKLQotICBpZiAoaW5mby0+dHJhZGl0aW9uYWxfZm9ybWF0Ci0gICAgICB8fCAhaXNfZWxmX2hhc2hfdGFibGUgKGluZm8tPmhhc2gpKQotICAgIHJldHVybiBGQUxTRTsKLQotICBmb3IgKGFiZmQgPSBpbmZvLT5pbnB1dF9iZmRzOyBhYmZkICE9IE5VTEw7IGFiZmQgPSBhYmZkLT5saW5rX25leHQpCi0gICAgewotICAgICAgaWYgKGJmZF9nZXRfZmxhdm91ciAoYWJmZCkgIT0gYmZkX3RhcmdldF9lbGZfZmxhdm91cikKLQljb250aW51ZTsKLQotICAgICAgYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOwotCi0gICAgICBpZiAoKGFiZmQtPmZsYWdzICYgRFlOQU1JQykgIT0gMCkKLQljb250aW51ZTsKLQotICAgICAgZWggPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgIi5laF9mcmFtZSIpOwotICAgICAgaWYgKGluZm8tPnJlbG9jYXRhYmxlCi0JICB8fCAoZWggIT0gTlVMTAotCSAgICAgICYmIChlaC0+X3Jhd19zaXplID09IDAKLQkJICB8fCBiZmRfaXNfYWJzX3NlY3Rpb24gKGVoLT5vdXRwdXRfc2VjdGlvbikpKSkKLQllaCA9IE5VTEw7Ci0KLSAgICAgIHN0YWIgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgIi5zdGFiIik7Ci0gICAgICBpZiAoc3RhYiAhPSBOVUxMCi0JICAmJiAoc3RhYi0+X3Jhd19zaXplID09IDAKLQkgICAgICB8fCBiZmRfaXNfYWJzX3NlY3Rpb24gKHN0YWItPm91dHB1dF9zZWN0aW9uKQotCSAgICAgIHx8IHN0YWItPnNlY19pbmZvX3R5cGUgIT0gRUxGX0lORk9fVFlQRV9TVEFCUykpCi0Jc3RhYiA9IE5VTEw7Ci0KLSAgICAgIGlmIChzdGFiID09IE5VTEwKLQkgICYmIGVoID09IE5VTEwKLQkgICYmIGJlZC0+ZWxmX2JhY2tlbmRfZGlzY2FyZF9pbmZvID09IE5VTEwpCi0JY29udGludWU7Ci0KLSAgICAgIHN5bXRhYl9oZHIgPSAmZWxmX3RkYXRhIChhYmZkKS0+c3ltdGFiX2hkcjsKLSAgICAgIGNvb2tpZS5hYmZkID0gYWJmZDsKLSAgICAgIGNvb2tpZS5zeW1faGFzaGVzID0gZWxmX3N5bV9oYXNoZXMgKGFiZmQpOwotICAgICAgY29va2llLmJhZF9zeW10YWIgPSBlbGZfYmFkX3N5bXRhYiAoYWJmZCk7Ci0gICAgICBpZiAoY29va2llLmJhZF9zeW10YWIpCi0JewotCSAgY29va2llLmxvY3N5bWNvdW50ID0gc3ltdGFiX2hkci0+c2hfc2l6ZSAvIHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bSk7Ci0JICBjb29raWUuZXh0c3ltb2ZmID0gMDsKLQl9Ci0gICAgICBlbHNlCi0JewotCSAgY29va2llLmxvY3N5bWNvdW50ID0gc3ltdGFiX2hkci0+c2hfaW5mbzsKLQkgIGNvb2tpZS5leHRzeW1vZmYgPSBzeW10YWJfaGRyLT5zaF9pbmZvOwotCX0KLQotICAgICAgY29va2llLmxvY3N5bXMgPSAoRWxmX0ludGVybmFsX1N5bSAqKSBzeW10YWJfaGRyLT5jb250ZW50czsKLSAgICAgIGlmIChjb29raWUubG9jc3ltcyA9PSBOVUxMICYmIGNvb2tpZS5sb2NzeW1jb3VudCAhPSAwKQotCXsKLQkgIGNvb2tpZS5sb2NzeW1zID0gYmZkX2VsZl9nZXRfZWxmX3N5bXMgKGFiZmQsIHN5bXRhYl9oZHIsCi0JCQkJCQkgY29va2llLmxvY3N5bWNvdW50LCAwLAotCQkJCQkJIE5VTEwsIE5VTEwsIE5VTEwpOwotCSAgaWYgKGNvb2tpZS5sb2NzeW1zID09IE5VTEwpCi0JICAgIHJldHVybiBGQUxTRTsKLQl9Ci0KLSAgICAgIGlmIChzdGFiICE9IE5VTEwpCi0JewotCSAgY29va2llLnJlbHMgPSBOVUxMOwotCSAgY291bnQgPSBzdGFiLT5yZWxvY19jb3VudDsKLQkgIGlmIChjb3VudCAhPSAwKQotCSAgICBjb29raWUucmVscyA9IF9iZmRfZWxmX2xpbmtfcmVhZF9yZWxvY3MgKGFiZmQsIHN0YWIsIE5VTEwsIE5VTEwsCi0JCQkJCQkgICAgIGluZm8tPmtlZXBfbWVtb3J5KTsKLQkgIGlmIChjb29raWUucmVscyAhPSBOVUxMKQotCSAgICB7Ci0JICAgICAgY29va2llLnJlbCA9IGNvb2tpZS5yZWxzOwotCSAgICAgIGNvb2tpZS5yZWxlbmQgPSBjb29raWUucmVsczsKLQkgICAgICBjb29raWUucmVsZW5kICs9IGNvdW50ICogYmVkLT5zLT5pbnRfcmVsc19wZXJfZXh0X3JlbDsKLQkgICAgICBpZiAoX2JmZF9kaXNjYXJkX3NlY3Rpb25fc3RhYnMgKGFiZmQsIHN0YWIsCi0JCQkJCSAgICAgIGVsZl9zZWN0aW9uX2RhdGEgKHN0YWIpLT5zZWNfaW5mbywKLQkJCQkJICAgICAgZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3AsCi0JCQkJCSAgICAgICZjb29raWUpKQotCQlyZXQgPSBUUlVFOwotCSAgICAgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChzdGFiKS0+cmVsb2NzICE9IGNvb2tpZS5yZWxzKQotCQlmcmVlIChjb29raWUucmVscyk7Ci0JICAgIH0KLQl9Ci0KLSAgICAgIGlmIChlaCAhPSBOVUxMKQotCXsKLQkgIGNvb2tpZS5yZWxzID0gTlVMTDsKLQkgIGNvdW50ID0gZWgtPnJlbG9jX2NvdW50OwotCSAgaWYgKGNvdW50ICE9IDApCi0JICAgIGNvb2tpZS5yZWxzID0gX2JmZF9lbGZfbGlua19yZWFkX3JlbG9jcyAoYWJmZCwgZWgsIE5VTEwsIE5VTEwsCi0JCQkJCQkgICAgIGluZm8tPmtlZXBfbWVtb3J5KTsKLQkgIGNvb2tpZS5yZWwgPSBjb29raWUucmVsczsKLQkgIGNvb2tpZS5yZWxlbmQgPSBjb29raWUucmVsczsKLQkgIGlmIChjb29raWUucmVscyAhPSBOVUxMKQotCSAgICBjb29raWUucmVsZW5kICs9IGNvdW50ICogYmVkLT5zLT5pbnRfcmVsc19wZXJfZXh0X3JlbDsKLQotCSAgaWYgKF9iZmRfZWxmX2Rpc2NhcmRfc2VjdGlvbl9laF9mcmFtZSAoYWJmZCwgaW5mbywgZWgsCi0JCQkJCQkgZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3AsCi0JCQkJCQkgJmNvb2tpZSkpCi0JICAgIHJldCA9IFRSVUU7Ci0KLQkgIGlmIChjb29raWUucmVscyAhPSBOVUxMCi0JICAgICAgJiYgZWxmX3NlY3Rpb25fZGF0YSAoZWgpLT5yZWxvY3MgIT0gY29va2llLnJlbHMpCi0JICAgIGZyZWUgKGNvb2tpZS5yZWxzKTsKLQl9Ci0KLSAgICAgIGlmIChiZWQtPmVsZl9iYWNrZW5kX2Rpc2NhcmRfaW5mbyAhPSBOVUxMCi0JICAmJiAoKmJlZC0+ZWxmX2JhY2tlbmRfZGlzY2FyZF9pbmZvKSAoYWJmZCwgJmNvb2tpZSwgaW5mbykpCi0JcmV0ID0gVFJVRTsKLQotICAgICAgaWYgKGNvb2tpZS5sb2NzeW1zICE9IE5VTEwKLQkgICYmIHN5bXRhYl9oZHItPmNvbnRlbnRzICE9ICh1bnNpZ25lZCBjaGFyICopIGNvb2tpZS5sb2NzeW1zKQotCXsKLQkgIGlmICghIGluZm8tPmtlZXBfbWVtb3J5KQotCSAgICBmcmVlIChjb29raWUubG9jc3ltcyk7Ci0JICBlbHNlCi0JICAgIHN5bXRhYl9oZHItPmNvbnRlbnRzID0gKHVuc2lnbmVkIGNoYXIgKikgY29va2llLmxvY3N5bXM7Ci0JfQotICAgIH0KLQotICBpZiAoaW5mby0+ZWhfZnJhbWVfaGRyCi0gICAgICAmJiAhaW5mby0+cmVsb2NhdGFibGUKLSAgICAgICYmIF9iZmRfZWxmX2Rpc2NhcmRfc2VjdGlvbl9laF9mcmFtZV9oZHIgKG91dHB1dF9iZmQsIGluZm8pKQotICAgIHJldCA9IFRSVUU7Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGJmZF9ib29sZWFuCi1lbGZfc2VjdGlvbl9pZ25vcmVfZGlzY2FyZGVkX3JlbG9jcyAoYXNlY3Rpb24gKnNlYykKLXsKLSAgY29uc3Qgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKLQotICBzd2l0Y2ggKHNlYy0+c2VjX2luZm9fdHlwZSkKLSAgICB7Ci0gICAgY2FzZSBFTEZfSU5GT19UWVBFX1NUQUJTOgotICAgIGNhc2UgRUxGX0lORk9fVFlQRV9FSF9GUkFNRToKLSAgICAgIHJldHVybiBUUlVFOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgICB9Ci0KLSAgYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKHNlYy0+b3duZXIpOwotICBpZiAoYmVkLT5lbGZfYmFja2VuZF9pZ25vcmVfZGlzY2FyZGVkX3JlbG9jcyAhPSBOVUxMCi0gICAgICAmJiAoKmJlZC0+ZWxmX2JhY2tlbmRfaWdub3JlX2Rpc2NhcmRlZF9yZWxvY3MpIChzZWMpKQotICAgIHJldHVybiBUUlVFOwotCi0gIHJldHVybiBGQUxTRTsKLX0KZGlmZiAtLWdpdCBhL2JmZC9lbGZ4eC1pYTY0LmMgYi9iZmQvZWxmeHgtaWE2NC5jCmluZGV4IDI5OTY0ODUuLmIxOWFhYzIgMTAwNjQ0Ci0tLSBhL2JmZC9lbGZ4eC1pYTY0LmMKKysrIGIvYmZkL2VsZnh4LWlhNjQuYwpAQCAtMSw1ICsxLDYgQEAKIC8qIElBLTY0IHN1cHBvcnQgZm9yIDY0LWJpdCBFTEYKLSAgIENvcHlyaWdodCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgQ29udHJpYnV0ZWQgYnkgRGF2aWQgTW9zYmVyZ2VyLVRhbmcgPGRhdmlkbUBocGwuaHAuY29tPgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCkBAIC05Miw2ICs5Myw5IEBACiAgICAgYXNlY3Rpb24gKnNyZWw7CiAgICAgaW50IHR5cGU7CiAgICAgaW50IGNvdW50OworCisgICAgLyogSXMgdGhpcyByZWxvYyBhZ2FpbnN0IHJlYWRvbmx5IHNlY3Rpb24/ICovCisgICAgYmZkX2Jvb2xlYW4gcmVsdGV4dDsKICAgfSAqcmVsb2NfZW50cmllczsKIAogICAvKiBUUlVFIHdoZW4gdGhlIHNlY3Rpb24gY29udGVudHMgaGF2ZSBiZWVuIHVwZGF0ZWQuICAqLwpAQCAtMTg4LDcgKzE5Miw3IEBACiBzdGF0aWMgdm9pZCBlbGZOTl9pYTY0X2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcKICAgUEFSQU1TICgoYmZkICphYmZkLCBiZmRfYm9vbGVhbiBsaW5rZXIpKTsKIHN0YXRpYyBiZmRfYm9vbGVhbiBlbGZOTl9pYTY0X2FkZF9zeW1ib2xfaG9vawotICBQQVJBTVMgKChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLCBjb25zdCBFbGZfSW50ZXJuYWxfU3ltICpzeW0sCisgIFBBUkFNUyAoKGJmZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sIEVsZl9JbnRlcm5hbF9TeW0gKnN5bSwKIAkgICBjb25zdCBjaGFyICoqbmFtZXAsIGZsYWd3b3JkICpmbGFnc3AsIGFzZWN0aW9uICoqc2VjcCwKIAkgICBiZmRfdm1hICp2YWxwKSk7CiBzdGF0aWMgaW50IGVsZk5OX2lhNjRfYWRkaXRpb25hbF9wcm9ncmFtX2hlYWRlcnMKQEAgLTI0Myw5ICsyNDcsNiBAQAogc3RhdGljIGFzZWN0aW9uICpnZXRfcmVsb2Nfc2VjdGlvbgogICBQQVJBTVMgKChiZmQgKmFiZmQsIHN0cnVjdCBlbGZOTl9pYTY0X2xpbmtfaGFzaF90YWJsZSAqaWE2NF9pbmZvLAogCSAgIGFzZWN0aW9uICpzZWMsIGJmZF9ib29sZWFuIGNyZWF0ZSkpOwotc3RhdGljIGJmZF9ib29sZWFuIGNvdW50X2R5bl9yZWxvYwotICBQQVJBTVMgKChiZmQgKmFiZmQsIHN0cnVjdCBlbGZOTl9pYTY0X2R5bl9zeW1faW5mbyAqZHluX2ksCi0JICAgYXNlY3Rpb24gKnNyZWwsIGludCB0eXBlKSk7CiBzdGF0aWMgYmZkX2Jvb2xlYW4gZWxmTk5faWE2NF9jaGVja19yZWxvY3MKICAgUEFSQU1TICgoYmZkICphYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywgYXNlY3Rpb24gKnNlYywKIAkgICBjb25zdCBFbGZfSW50ZXJuYWxfUmVsYSAqcmVsb2NzKSk7CkBAIC0xNDI5LDcgKzE0MzAsNyBAQAogZWxmTk5faWE2NF9hZGRfc3ltYm9sX2hvb2sgKGFiZmQsIGluZm8sIHN5bSwgbmFtZXAsIGZsYWdzcCwgc2VjcCwgdmFscCkKICAgICAgYmZkICphYmZkOwogICAgICBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbzsKLSAgICAgY29uc3QgRWxmX0ludGVybmFsX1N5bSAqc3ltOworICAgICBFbGZfSW50ZXJuYWxfU3ltICpzeW07CiAgICAgIGNvbnN0IGNoYXIgKipuYW1lcCBBVFRSSUJVVEVfVU5VU0VEOwogICAgICBmbGFnd29yZCAqZmxhZ3NwIEFUVFJJQlVURV9VTlVTRUQ7CiAgICAgIGFzZWN0aW9uICoqc2VjcDsKQEAgLTIxNzUsMTggKzIxNzYsMTIgQEAKIAlyZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgaWYgKHNlYy0+ZmxhZ3MgJiBTRUNfUkVBRE9OTFkpCi0gICAgaWE2NF9pbmZvLT5yZWx0ZXh0ID0gMTsKLQogICByZXR1cm4gc3JlbDsKIH0KIAogc3RhdGljIGJmZF9ib29sZWFuCi1jb3VudF9keW5fcmVsb2MgKGFiZmQsIGR5bl9pLCBzcmVsLCB0eXBlKQotICAgICBiZmQgKmFiZmQ7Ci0gICAgIHN0cnVjdCBlbGZOTl9pYTY0X2R5bl9zeW1faW5mbyAqZHluX2k7Ci0gICAgIGFzZWN0aW9uICpzcmVsOwotICAgICBpbnQgdHlwZTsKK2NvdW50X2R5bl9yZWxvYyAoYmZkICphYmZkLCBzdHJ1Y3QgZWxmTk5faWE2NF9keW5fc3ltX2luZm8gKmR5bl9pLAorCQkgYXNlY3Rpb24gKnNyZWwsIGludCB0eXBlLCBiZmRfYm9vbGVhbiByZWx0ZXh0KQogewogICBzdHJ1Y3QgZWxmTk5faWE2NF9keW5fcmVsb2NfZW50cnkgKnJlbnQ7CiAKQEAgLTIyMDcsNiArMjIwMiw3IEBACiAgICAgICByZW50LT5jb3VudCA9IDA7CiAgICAgICBkeW5faS0+cmVsb2NfZW50cmllcyA9IHJlbnQ7CiAgICAgfQorICByZW50LT5yZWx0ZXh0ID0gcmVsdGV4dDsKICAgcmVudC0+Y291bnQrKzsKIAogICByZXR1cm4gVFJVRTsKQEAgLTI0NjMsNyArMjQ1OSw3IEBACiAJICAgICBkeW5hbWljIHN5bWJvbCB0YWJsZS4gICovCiAJICBpZiAoIWggJiYgaW5mby0+c2hhcmVkKQogCSAgICB7Ci0JICAgICAgaWYgKCEgKF9iZmRfZWxmTk5fbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wKKwkgICAgICBpZiAoISAoYmZkX2VsZl9saW5rX3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbAogCQkgICAgIChpbmZvLCBhYmZkLCAobG9uZykgcl9zeW1uZHgpKSkKIAkJcmV0dXJuIEZBTFNFOwogCSAgICB9CkBAIC0yNDkxLDcgKzI0ODcsOCBAQAogCSAgICAgIGlmICghc3JlbCkKIAkJcmV0dXJuIEZBTFNFOwogCSAgICB9Ci0JICBpZiAoIWNvdW50X2R5bl9yZWxvYyAoYWJmZCwgZHluX2ksIHNyZWwsIGR5bnJlbF90eXBlKSkKKwkgIGlmICghY291bnRfZHluX3JlbG9jIChhYmZkLCBkeW5faSwgc3JlbCwgZHlucmVsX3R5cGUsCisJCQkJKHNlYy0+ZmxhZ3MgJiBTRUNfUkVBRE9OTFkpICE9IDApKQogCSAgICByZXR1cm4gRkFMU0U7CiAJfQogICAgIH0KQEAgLTI2MzQsNyArMjYzMSw3IEBACiAJICAgICAgQkZEX0FTU0VSVCAoKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2RlZmluZWQpCiAJCQkgIHx8IChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrKSk7CiAKLQkgICAgICBpZiAoIV9iZmRfZWxmTk5fbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wKKwkgICAgICBpZiAoIWJmZF9lbGZfbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wKIAkJICAgICh4LT5pbmZvLCBoLT5yb290LnUuZGVmLnNlY3Rpb24tPm93bmVyLAogCQkgICAgIGdsb2JhbF9zeW1faW5kZXggKGgpKSkKIAkJcmV0dXJuIEZBTFNFOwpAQCAtMjc5OCw2ICsyNzk1LDggQEAKIAlkZWZhdWx0OgogCSAgYWJvcnQgKCk7CiAJfQorICAgICAgaWYgKHJlbnQtPnJlbHRleHQpCisJaWE2NF9pbmZvLT5yZWx0ZXh0ID0gMTsKICAgICAgIHJlbnQtPnNyZWwtPl9yYXdfc2l6ZSArPSBzaXplb2YgKEVsZk5OX0V4dGVybmFsX1JlbGEpICogY291bnQ7CiAgICAgfQogCkBAIC0yOTQyLDggKzI5NDEsMTIgQEAKICAgZGF0YS5vZnMgPSAoZGF0YS5vZnMgKyAzMSkgJiAoYmZkX3ZtYSkgLTMyOwogCiAgIGVsZk5OX2lhNjRfZHluX3N5bV90cmF2ZXJzZSAoaWE2NF9pbmZvLCBhbGxvY2F0ZV9wbHQyX2VudHJpZXMsICZkYXRhKTsKLSAgaWYgKGRhdGEub2ZzICE9IDApCisgIGlmIChkYXRhLm9mcyAhPSAwIHx8IGlhNjRfaW5mby0+cm9vdC5keW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQpCiAgICAgeworICAgICAgLyogRklYTUU6IHdlIGFsd2F5cyByZXNlcnZlIHRoZSBtZW1vcnkgZm9yIGR5bmFtaWMgbGlua2VyIGV2ZW4gaWYKKwkgdGhlcmUgYXJlIG5vIFBMVCBlbnRyaWVzIHNpbmNlIGR5bmFtaWMgbGlua2VyIG1heSBhc3N1bWUgdGhlCisJIHJlc2VydmVkIG1lbW9yeSBhbHdheXMgZXhpc3RzLiAgKi8KKwogICAgICAgQkZEX0FTU0VSVCAoaWE2NF9pbmZvLT5yb290LmR5bmFtaWNfc2VjdGlvbnNfY3JlYXRlZCk7CiAKICAgICAgIGlhNjRfaW5mby0+cGx0X3NlYy0+X3Jhd19zaXplID0gZGF0YS5vZnM7CkBAIC0zMDg0LDcgKzMwODcsNyBAQAogCSAgLyogVGhlIERUX0RFQlVHIGVudHJ5IGlzIGZpbGxlZCBpbiBieSB0aGUgZHluYW1pYyBsaW5rZXIgYW5kIHVzZWQKIAkgICAgIGJ5IHRoZSBkZWJ1Z2dlci4gICovCiAjZGVmaW5lIGFkZF9keW5hbWljX2VudHJ5KFRBRywgVkFMKSBcCi0gIGJmZF9lbGZOTl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgKGJmZF92bWEpIChUQUcpLCAoYmZkX3ZtYSkgKFZBTCkpCisgIF9iZmRfZWxmX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCBUQUcsIFZBTCkKIAogCSAgaWYgKCFhZGRfZHluYW1pY19lbnRyeSAoRFRfREVCVUcsIDApKQogCSAgICByZXR1cm4gRkFMU0U7CkBAIC0zODM5LDcgKzM4NDIsNyBAQAogICAgIH0KIAogICAvKiBJbnZva2UgdGhlIHJlZ3VsYXIgRUxGIGJhY2tlbmQgbGlua2VyIHRvIGRvIGFsbCB0aGUgd29yay4gICovCi0gIGlmICghYmZkX2VsZk5OX2JmZF9maW5hbF9saW5rIChhYmZkLCBpbmZvKSkKKyAgaWYgKCFiZmRfZWxmX2ZpbmFsX2xpbmsgKGFiZmQsIGluZm8pKQogICAgIHJldHVybiBGQUxTRTsKIAogICBpZiAodW53aW5kX291dHB1dF9zZWMpCkBAIC0zOTc2LDEyICszOTc5LDEyIEBACiAJewogCSAgYmZkX2Jvb2xlYW4gdW5yZXNvbHZlZF9yZWxvYzsKIAkgIGJmZF9ib29sZWFuIHdhcm5lZDsKKwkgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqc3ltX2hhc2hlcyA9IGVsZl9zeW1faGFzaGVzIChpbnB1dF9iZmQpOwogCi0JICBSRUxPQ19GT1JfR0xPQkFMX1NZTUJPTCAoaCwgZWxmX3N5bV9oYXNoZXMgKGlucHV0X2JmZCksCi0JCQkJICAgcl9zeW1uZHgsCi0JCQkJICAgc3ltdGFiX2hkciwgdmFsdWUsIHN5bV9zZWMsCi0JCQkJICAgdW5yZXNvbHZlZF9yZWxvYywgaW5mbywKLQkJCQkgICB3YXJuZWQpOworCSAgUkVMT0NfRk9SX0dMT0JBTF9TWU1CT0wgKGluZm8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgcmVsLAorCQkJCSAgIHJfc3ltbmR4LCBzeW10YWJfaGRyLCBzeW1faGFzaGVzLAorCQkJCSAgIGgsIHN5bV9zZWMsIHZhbHVlLAorCQkJCSAgIHVucmVzb2x2ZWRfcmVsb2MsIHdhcm5lZCk7CiAKIAkgIGlmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspCiAJICAgIHVuZGVmX3dlYWtfcmVmID0gVFJVRTsKQEAgLTQ1OTcsNyArNDYwMCw3IEBACiAJICAvKiBNYXJrIHRoZSBzeW1ib2wgYXMgdW5kZWZpbmVkLCByYXRoZXIgdGhhbiBhcyBkZWZpbmVkIGluIHRoZQogCSAgICAgcGx0IHNlY3Rpb24uICBMZWF2ZSB0aGUgdmFsdWUgYWxvbmUuICAqLwogCSAgLyogPz8/IFdlIGRpZG4ndCByZWRlZmluZSBpdCBpbiBhZGp1c3RfZHluYW1pY19zeW1ib2wgaW4gdGhlCi0JICAgICBmaXJzdCBwbGFjZS4gIEJ1dCBwZXJoYXBzIGVsZmxpbmsuaCBkaWQgc29tZSBmb3IgdXMuICAqLworCSAgICAgZmlyc3QgcGxhY2UuICBCdXQgcGVyaGFwcyBlbGZsaW5rLmMgZGlkIHNvbWUgZm9yIHVzLiAgKi8KIAkgIGlmICgoaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyAmIEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVIpID09IDApCiAJICAgIHN5bS0+c3Rfc2huZHggPSBTSE5fVU5ERUY7CiAJfQpkaWZmIC0tZ2l0IGEvYmZkL2VsZnh4LW1pcHMuYyBiL2JmZC9lbGZ4eC1taXBzLmMKaW5kZXggZjA3MmYyNi4uYjA2NDUxMSAxMDA2NDQKLS0tIGEvYmZkL2VsZnh4LW1pcHMuYworKysgYi9iZmQvZWxmeHgtbWlwcy5jCkBAIC0xLDYgKzEsNiBAQAogLyogTUlQUy1zcGVjaWZpYyBzdXBwb3J0IGZvciBFTEYKICAgIENvcHlyaWdodCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAotICAgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIE1vc3Qgb2YgdGhlIGluZm9ybWF0aW9uIGFkZGVkIGJ5IElhbiBMYW5jZSBUYXlsb3IsIEN5Z251cyBTdXBwb3J0LAogICAgPGlhbkBjeWdudXMuY29tPi4KQEAgLTUzMCw4ICs1MzAsNyBAQAogICAoTkVXQUJJX1AgKGFiZmQpID8gIi5NSVBTLm9wdGlvbnMiIDogIi5vcHRpb25zIikKIAogLyogVGhlIG5hbWUgb2YgdGhlIHN0dWIgc2VjdGlvbi4gICovCi0jZGVmaW5lIE1JUFNfRUxGX1NUVUJfU0VDVElPTl9OQU1FKGFiZmQpIFwKLSAgKE5FV0FCSV9QIChhYmZkKSA/ICIuTUlQUy5zdHVicyIgOiAiLnN0dWIiKQorI2RlZmluZSBNSVBTX0VMRl9TVFVCX1NFQ1RJT05fTkFNRShhYmZkKSAiLk1JUFMuc3R1YnMiCiAKIC8qIFRoZSBzaXplIG9mIGFuIGV4dGVybmFsIFJFTCByZWxvY2F0aW9uLiAgKi8KICNkZWZpbmUgTUlQU19FTEZfUkVMX1NJWkUoYWJmZCkgXApAQCAtNTY0LDE3ICs1NjMsOCBAQAogICAgOiBiZmRfcHV0XzMyIChhYmZkLCB2YWwsIHB0cikpCiAKIC8qIEFkZCBhIGR5bmFtaWMgc3ltYm9sIHRhYmxlLWVudHJ5LiAgKi8KLSNpZmRlZiBCRkQ2NAogI2RlZmluZSBNSVBTX0VMRl9BRERfRFlOQU1JQ19FTlRSWShpbmZvLCB0YWcsIHZhbCkJXAotICAoQUJJXzY0X1AgKGVsZl9oYXNoX3RhYmxlIChpbmZvKS0+ZHlub2JqKQkJXAotICAgPyBiZmRfZWxmNjRfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIHRhZywgdmFsKQlcCi0gICA6IGJmZF9lbGYzMl9hZGRfZHluYW1pY19lbnRyeSAoaW5mbywgdGFnLCB2YWwpKQotI2Vsc2UKLSNkZWZpbmUgTUlQU19FTEZfQUREX0RZTkFNSUNfRU5UUlkoaW5mbywgdGFnLCB2YWwpCVwKLSAgKEFCSV82NF9QIChlbGZfaGFzaF90YWJsZSAoaW5mbyktPmR5bm9iaikJCVwKLSAgID8gKGFib3J0ICgpLCBGQUxTRSkJCQkJCVwKLSAgIDogYmZkX2VsZjMyX2FkZF9keW5hbWljX2VudHJ5IChpbmZvLCB0YWcsIHZhbCkpCi0jZW5kaWYKKyAgX2JmZF9lbGZfYWRkX2R5bmFtaWNfZW50cnkgKGluZm8sIHRhZywgdmFsKQogCiAjZGVmaW5lIE1JUFNfRUxGX1JUWVBFX1RPX0hPV1RPKGFiZmQsIHJ0eXBlLCByZWxhKQkJCVwKICAgKGdldF9lbGZfYmFja2VuZF9kYXRhIChhYmZkKS0+ZWxmX2JhY2tlbmRfbWlwc19ydHlwZV90b19ob3d0byAocnR5cGUsIHJlbGEpKQpAQCAtMjE1Myw3ICsyMTQzLDcgQEAKIAkgIF9iZmRfbWlwc19lbGZfaGlkZV9zeW1ib2wgKGluZm8sIGgsIFRSVUUpOwogCSAgYnJlYWs7CiAJfQotICAgICAgaWYgKCFiZmRfZWxmMzJfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorICAgICAgaWYgKCFiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAlyZXR1cm4gRkFMU0U7CiAgICAgfQogCkBAIC0yOTY1LDcgKzI5NTUsNyBAQAogICBoLT50eXBlID0gU1RUX09CSkVDVDsKIAogICBpZiAoaW5mby0+c2hhcmVkCi0gICAgICAmJiAhIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisgICAgICAmJiAhIGJmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQogICAgIHJldHVybiBGQUxTRTsKIAogICBhbXQgPSBzaXplb2YgKHN0cnVjdCBtaXBzX2dvdF9pbmZvKTsKQEAgLTMxNTYsOCArMzE0Niw3IEBACiAJICAgYW5kIGNoZWNrIHRvIHNlZSBpZiB0aGV5IGV4aXN0IGJ5IGxvb2tpbmcgYXQgdGhlaXIKIAkgICBhZGRyZXNzZXMuICAqLwogCXN5bWJvbCA9IDA7Ci0gICAgICBlbHNlIGlmIChpbmZvLT5zaGFyZWQKLQkgICAgICAgJiYgaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMgPT0gUk1fSUdOT1JFCisgICAgICBlbHNlIGlmIChpbmZvLT51bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyA9PSBSTV9JR05PUkUKIAkgICAgICAgJiYgRUxGX1NUX1ZJU0lCSUxJVFkgKGgtPnJvb3Qub3RoZXIpID09IFNUVl9ERUZBVUxUKQogCXN5bWJvbCA9IDA7CiAgICAgICBlbHNlIGlmIChzdHJjbXAgKCpuYW1lcCwgIl9EWU5BTUlDX0xJTksiKSA9PSAwIHx8CkBAIC0zMTc4LDkgKzMxNjcsOCBAQAogCSAgaWYgKCEgKCgqaW5mby0+Y2FsbGJhY2tzLT51bmRlZmluZWRfc3ltYm9sKQogCQkgKGluZm8sIGgtPnJvb3Qucm9vdC5yb290LnN0cmluZywgaW5wdXRfYmZkLAogCQkgIGlucHV0X3NlY3Rpb24sIHJlbG9jYXRpb24tPnJfb2Zmc2V0LAotCQkgICgoaW5mby0+c2hhcmVkICYmIGluZm8tPnVucmVzb2x2ZWRfc3ltc19pbl9zaGFyZWRfbGlicyA9PSBSTV9HRU5FUkFURV9FUlJPUikKLQkJICAgfHwgKCFpbmZvLT5zaGFyZWQgJiYgaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMgPT0gUk1fR0VORVJBVEVfRVJST1IpCi0JCSAgIHx8IEVMRl9TVF9WSVNJQklMSVRZIChoLT5yb290Lm90aGVyKSkpKSkKKwkJICAoaW5mby0+dW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMgPT0gUk1fR0VORVJBVEVfRVJST1IpCisJCSAgIHx8IEVMRl9TVF9WSVNJQklMSVRZIChoLT5yb290Lm90aGVyKSkpKQogCSAgICByZXR1cm4gYmZkX3JlbG9jX3VuZGVmaW5lZDsKIAkgIHN5bWJvbCA9IDA7CiAJfQpAQCAtNDcyNiw3ICs0NzE0LDcgQEAKIAogYmZkX2Jvb2xlYW4KIF9iZmRfbWlwc19lbGZfYWRkX3N5bWJvbF9ob29rIChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAotCQkJICAgICAgIGNvbnN0IEVsZl9JbnRlcm5hbF9TeW0gKnN5bSwgY29uc3QgY2hhciAqKm5hbWVwLAorCQkJICAgICAgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bSwgY29uc3QgY2hhciAqKm5hbWVwLAogCQkJICAgICAgIGZsYWd3b3JkICpmbGFnc3AgQVRUUklCVVRFX1VOVVNFRCwKIAkJCSAgICAgICBhc2VjdGlvbiAqKnNlY3AsIGJmZF92bWEgKnZhbHApCiB7CkBAIC00ODU5LDcgKzQ4NDcsNyBAQAogICAgICAgaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyB8PSBFTEZfTElOS19IQVNIX0RFRl9SRUdVTEFSOwogICAgICAgaC0+dHlwZSA9IFNUVF9PQkpFQ1Q7CiAKLSAgICAgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisgICAgICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAlyZXR1cm4gRkFMU0U7CiAKICAgICAgIG1pcHNfZWxmX2hhc2hfdGFibGUgKGluZm8pLT51c2VfcmxkX29ial9oZWFkID0gVFJVRTsKQEAgLTQ4OTEsOSArNDg3OSw4IEBACiAgICAgICAmJiBzdHJjbXAgKGlucHV0X3NlYy0+bmFtZSwgIi5zY29tbW9uIikgPT0gMCkKICAgICBzeW0tPnN0X3NobmR4ID0gU0hOX01JUFNfU0NPTU1PTjsKIAotICBpZiAoc3ltLT5zdF9vdGhlciA9PSBTVE9fTUlQUzE2Ci0gICAgICAmJiAoc3ltLT5zdF92YWx1ZSAmIDEpICE9IDApCi0gICAgLS1zeW0tPnN0X3ZhbHVlOworICBpZiAoc3ltLT5zdF9vdGhlciA9PSBTVE9fTUlQUzE2KQorICAgIHN5bS0+c3RfdmFsdWUgJj0gfjE7CiAKICAgcmV0dXJuIFRSVUU7CiB9CkBAIC00OTcyLDcgKzQ5NTksNyBAQAogCSAgaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyB8PSBFTEZfTElOS19IQVNIX0RFRl9SRUdVTEFSOwogCSAgaC0+dHlwZSA9IFNUVF9TRUNUSU9OOwogCi0JICBpZiAoISBiZmRfZWxmMzJfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAKQEAgLTUwMTcsNyArNTAwNCw3IEBACiAgICAgICBoLT5lbGZfbGlua19oYXNoX2ZsYWdzIHw9IEVMRl9MSU5LX0hBU0hfREVGX1JFR1VMQVI7CiAgICAgICBoLT50eXBlID0gU1RUX1NFQ1RJT047CiAKLSAgICAgIGlmICghIGJmZF9lbGYzMl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCisgICAgICBpZiAoISBiZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sIChpbmZvLCBoKSkKIAlyZXR1cm4gRkFMU0U7CiAKICAgICAgIGlmICghIG1pcHNfZWxmX2hhc2hfdGFibGUgKGluZm8pLT51c2VfcmxkX29ial9oZWFkKQpAQCAtNTA0MSw3ICs1MDI4LDcgQEAKIAkgIGgtPmVsZl9saW5rX2hhc2hfZmxhZ3MgfD0gRUxGX0xJTktfSEFTSF9ERUZfUkVHVUxBUjsKIAkgIGgtPnR5cGUgPSBTVFRfT0JKRUNUOwogCi0JICBpZiAoISBiZmRfZWxmMzJfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wgKGluZm8sIGgpKQorCSAgaWYgKCEgYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCAoaW5mbywgaCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAl9CiAgICAgfQpAQCAtNTM2MCw3ICs1MzQ3LDcgQEAKIAogCSAgICAgIC8qIFdlIG5lZWQgYSBzdHViLCBub3QgYSBwbHQgZW50cnkgZm9yIHRoZSB1bmRlZmluZWQKIAkJIGZ1bmN0aW9uLiAgQnV0IHdlIHJlY29yZCBpdCBhcyBpZiBpdCBuZWVkcyBwbHQuICBTZWUKLQkJIGVsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wgaW4gZWxmbGluay5oLiAgKi8KKwkJIF9iZmRfZWxmX2FkanVzdF9keW5hbWljX3N5bWJvbC4gICovCiAJICAgICAgaC0+ZWxmX2xpbmtfaGFzaF9mbGFncyB8PSBFTEZfTElOS19IQVNIX05FRURTX1BMVDsKIAkgICAgICBoLT50eXBlID0gU1RUX0ZVTkM7CiAJICAgIH0KQEAgLTU0NzIsMTQgKzU0NTksMTQgQEAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgdGhlIEMrKyBvYmplY3QgdnRhYmxlIGhpZXJhcmNoeS4KIAkgICAgIFJlY29uc3RydWN0IGl0IGZvciBsYXRlciB1c2UgZHVyaW5nIEdDLiAgKi8KIAljYXNlIFJfTUlQU19HTlVfVlRJTkhFUklUOgotCSAgaWYgKCFfYmZkX2VsZjMyX2djX3JlY29yZF92dGluaGVyaXQgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisJICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0aW5oZXJpdCAoYWJmZCwgc2VjLCBoLCByZWwtPnJfb2Zmc2V0KSkKIAkgICAgcmV0dXJuIEZBTFNFOwogCSAgYnJlYWs7CiAKIAkgIC8qIFRoaXMgcmVsb2NhdGlvbiBkZXNjcmliZXMgd2hpY2ggQysrIHZ0YWJsZSBlbnRyaWVzIGFyZSBhY3R1YWxseQogCSAgICAgdXNlZC4gIFJlY29yZCBmb3IgbGF0ZXIgdXNlIGR1cmluZyBHQy4gICovCiAJY2FzZSBSX01JUFNfR05VX1ZURU5UUlk6Ci0JICBpZiAoIV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCisJICBpZiAoIWJmZF9lbGZfZ2NfcmVjb3JkX3Z0ZW50cnkgKGFiZmQsIHNlYywgaCwgcmVsLT5yX29mZnNldCkpCiAJICAgIHJldHVybiBGQUxTRTsKIAkgIGJyZWFrOwogCkBAIC02ODE0LDkgKzY4MDEsOCBAQAogICAgIH0KIAogICAvKiBJZiB0aGlzIGlzIGEgbWlwczE2IHN5bWJvbCwgZm9yY2UgdGhlIHZhbHVlIHRvIGJlIGV2ZW4uICAqLwotICBpZiAoc3ltLT5zdF9vdGhlciA9PSBTVE9fTUlQUzE2Ci0gICAgICAmJiAoc3ltLT5zdF92YWx1ZSAmIDEpICE9IDApCi0gICAgLS1zeW0tPnN0X3ZhbHVlOworICBpZiAoc3ltLT5zdF9vdGhlciA9PSBTVE9fTUlQUzE2KQorICAgIHN5bS0+c3RfdmFsdWUgJj0gfjE7CiAKICAgcmV0dXJuIFRSVUU7CiB9CkBAIC03NzQ0LDcgKzc3MzAsNyBAQAogCiAgIGZvciAoaSA9IDAsIHNraXAgPSAwOyBpIDwgby0+X3Jhd19zaXplIC8gUERSX1NJWkU7IGkgKyspCiAgICAgewotICAgICAgaWYgKE1OQU1FKGFiZmQsX2JmZF9lbGYscmVsb2Nfc3ltYm9sX2RlbGV0ZWRfcCkgKGkgKiBQRFJfU0laRSwgY29va2llKSkKKyAgICAgIGlmIChiZmRfZWxmX3JlbG9jX3N5bWJvbF9kZWxldGVkX3AgKGkgKiBQRFJfU0laRSwgY29va2llKSkKIAl7CiAJICB0ZGF0YVtpXSA9IDE7CiAJICBza2lwICsrOwpAQCAtODgwMSw3ICs4Nzg3LDcgQEAKICAgICB9CiAKICAgLyogSW52b2tlIHRoZSByZWd1bGFyIEVMRiBiYWNrZW5kIGxpbmtlciB0byBkbyBhbGwgdGhlIHdvcmsuICAqLwotICBpZiAoIU1OQU1FKGFiZmQsYmZkX2VsZixiZmRfZmluYWxfbGluaykgKGFiZmQsIGluZm8pKQorICBpZiAoIWJmZF9lbGZfZmluYWxfbGluayAoYWJmZCwgaW5mbykpCiAgICAgcmV0dXJuIEZBTFNFOwogCiAgIC8qIE5vdyB3cml0ZSBvdXQgdGhlIGNvbXB1dGVkIHNlY3Rpb25zLiAgKi8KQEAgLTkwMzAsMTAgKzkwMTYsMTAgQEAKIAkgIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBnYXMuICAqLwogICAgICAgaWYgKHN0cmNtcCAoc2VjLT5uYW1lLCAiLnJlZ2luZm8iKQogCSAgJiYgc3RyY21wIChzZWMtPm5hbWUsICIubWRlYnVnIikKLQkgICYmICgoIXN0cmNtcCAoc2VjLT5uYW1lLCAiLnRleHQiKQotCSAgICAgICB8fCAhc3RyY21wIChzZWMtPm5hbWUsICIuZGF0YSIpCi0JICAgICAgIHx8ICFzdHJjbXAgKHNlYy0+bmFtZSwgIi5ic3MiKSkKLQkgICAgICAmJiBzZWMtPl9yYXdfc2l6ZSAhPSAwKSkKKwkgICYmIChzZWMtPl9yYXdfc2l6ZSAhPSAwCisJICAgICAgfHwgKHN0cmNtcCAoc2VjLT5uYW1lLCAiLnRleHQiKQorCQkgICYmIHN0cmNtcCAoc2VjLT5uYW1lLCAiLmRhdGEiKQorCQkgICYmIHN0cmNtcCAoc2VjLT5uYW1lLCAiLmJzcyIpKSkpCiAJewogCSAgbnVsbF9pbnB1dF9iZmQgPSBGQUxTRTsKIAkgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvYmZkL2VsZnh4LW1pcHMuaCBiL2JmZC9lbGZ4eC1taXBzLmgKaW5kZXggOWU1ZDdhZi4uMGE2ODRkOSAxMDA2NDQKLS0tIGEvYmZkL2VsZnh4LW1pcHMuaAorKysgYi9iZmQvZWxmeHgtbWlwcy5oCkBAIC0xLDUgKzEsNSBAQAogLyogTUlQUyBFTEYgc3BlY2lmaWMgYmFja2VuZCByb3V0aW5lcy4KLSAgIENvcHlyaWdodCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEJGRCwgdGhlIEJpbmFyeSBGaWxlIERlc2NyaXB0b3IgbGlicmFyeS4KIApAQCAtMzUsNyArMzUsNyBAQAogZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfbWlwc19lbGZfc2VjdGlvbl9mcm9tX2JmZF9zZWN0aW9uCiAgIChiZmQgKiwgYXNlY3Rpb24gKiwgaW50ICopOwogZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfbWlwc19lbGZfYWRkX3N5bWJvbF9ob29rCi0gIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgY29uc3QgRWxmX0ludGVybmFsX1N5bSAqLAorICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIEVsZl9JbnRlcm5hbF9TeW0gKiwKICAgIGNvbnN0IGNoYXIgKiosIGZsYWd3b3JkICosIGFzZWN0aW9uICoqLCBiZmRfdm1hICopOwogZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfbWlwc19lbGZfbGlua19vdXRwdXRfc3ltYm9sX2hvb2sKICAgKHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNvbnN0IGNoYXIgKiwgRWxmX0ludGVybmFsX1N5bSAqLApkaWZmIC0tZ2l0IGEvYmZkL2VsZnh4LXRhcmdldC5oIGIvYmZkL2VsZnh4LXRhcmdldC5oCmluZGV4IGNhMGU0N2IuLmUyNTBhOTcgMTAwNjQ0Ci0tLSBhL2JmZC9lbGZ4eC10YXJnZXQuaAorKysgYi9iZmQvZWxmeHgtdGFyZ2V0LmgKQEAgLTEyNiw3ICsxMjYsNyBAQAogI2RlZmluZSBlbGZfYmFja2VuZF9nY19zd2VlcF9ob29rCU5VTEwKICNlbmRpZgogI2lmbmRlZiBiZmRfZWxmTk5fYmZkX2djX3NlY3Rpb25zCi0jZGVmaW5lIGJmZF9lbGZOTl9iZmRfZ2Nfc2VjdGlvbnMgX2JmZF9lbGZOTl9nY19zZWN0aW9ucworI2RlZmluZSBiZmRfZWxmTk5fYmZkX2djX3NlY3Rpb25zIGJmZF9lbGZfZ2Nfc2VjdGlvbnMKICNlbmRpZgogCiAjaWZuZGVmIGJmZF9lbGZOTl9iZmRfbWVyZ2Vfc2VjdGlvbnMKQEAgLTE4OSw2ICsxODksMTIgQEAKICNpZm5kZWYgYmZkX2VsZk5OX2JmZF9saW5rX2hhc2hfdGFibGVfY3JlYXRlCiAjZGVmaW5lIGJmZF9lbGZOTl9iZmRfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSBfYmZkX2VsZl9saW5rX2hhc2hfdGFibGVfY3JlYXRlCiAjZW5kaWYKKyNpZm5kZWYgYmZkX2VsZk5OX2JmZF9saW5rX2FkZF9zeW1ib2xzCisjZGVmaW5lIGJmZF9lbGZOTl9iZmRfbGlua19hZGRfc3ltYm9scwliZmRfZWxmX2xpbmtfYWRkX3N5bWJvbHMKKyNlbmRpZgorI2lmbmRlZiBiZmRfZWxmTk5fYmZkX2ZpbmFsX2xpbmsKKyNkZWZpbmUgYmZkX2VsZk5OX2JmZF9maW5hbF9saW5rCWJmZF9lbGZfZmluYWxfbGluaworI2VuZGlmCiAjZWxzZSAvKiAhIGRlZmluZWQgKGVsZl9iYWNrZW5kX3JlbG9jYXRlX3NlY3Rpb24pICovCiAvKiBJZiBubyBiYWNrZW5kIHJlbG9jYXRlX3NlY3Rpb24gcm91dGluZSwgdXNlIHRoZSBnZW5lcmljIGxpbmtlci4KICAgIE5vdGUgLSB0aGlzIHdpbGwgcHJldmVudCB0aGUgcG9ydCBmcm9tIGJlaW5nIGFibGUgdG8gdXNlIHNvbWUgb2YKQEAgLTIzNSw2ICsyNDEsMTAgQEAKICNkZWZpbmUgYmZkX2VsZk5OX21rYXJjaGl2ZSBfYmZkX2dlbmVyaWNfbWthcmNoaXZlCiAjZW5kaWYKIAorI2lmbmRlZiBiZmRfZWxmTk5fcHJpbnRfc3ltYm9sCisjZGVmaW5lIGJmZF9lbGZOTl9wcmludF9zeW1ib2wgYmZkX2VsZl9wcmludF9zeW1ib2wKKyNlbmRpZgorCiAjaWZuZGVmIGVsZl9zeW1ib2xfbGVhZGluZ19jaGFyCiAjZGVmaW5lIGVsZl9zeW1ib2xfbGVhZGluZ19jaGFyIDAKICNlbmRpZgpAQCAtMzkxLDYgKzQwMSwxNSBAQAogI2lmbmRlZiBlbGZfYmFja2VuZF9pZ25vcmVfZGlzY2FyZGVkX3JlbG9jcwogI2RlZmluZSBlbGZfYmFja2VuZF9pZ25vcmVfZGlzY2FyZGVkX3JlbG9jcwlOVUxMCiAjZW5kaWYKKyNpZm5kZWYgZWxmX2JhY2tlbmRfY2FuX21ha2VfcmVsYXRpdmVfZWhfZnJhbWUKKyNkZWZpbmUgZWxmX2JhY2tlbmRfY2FuX21ha2VfcmVsYXRpdmVfZWhfZnJhbWUJX2JmZF9lbGZfY2FuX21ha2VfcmVsYXRpdmUKKyNlbmRpZgorI2lmbmRlZiBlbGZfYmFja2VuZF9jYW5fbWFrZV9sc2RhX3JlbGF0aXZlX2VoX2ZyYW1lCisjZGVmaW5lIGVsZl9iYWNrZW5kX2Nhbl9tYWtlX2xzZGFfcmVsYXRpdmVfZWhfZnJhbWUJX2JmZF9lbGZfY2FuX21ha2VfcmVsYXRpdmUKKyNlbmRpZgorI2lmbmRlZiBlbGZfYmFja2VuZF9lbmNvZGVfZWhfYWRkcmVzcworI2RlZmluZSBlbGZfYmFja2VuZF9lbmNvZGVfZWhfYWRkcmVzcwkJX2JmZF9lbGZfZW5jb2RlX2VoX2FkZHJlc3MKKyNlbmRpZgogI2lmbmRlZiBlbGZfYmFja2VuZF93cml0ZV9zZWN0aW9uCiAjZGVmaW5lIGVsZl9iYWNrZW5kX3dyaXRlX3NlY3Rpb24JCU5VTEwKICNlbmRpZgpAQCAtNDk3LDYgKzUxNiw5IEBACiAgIGVsZl9iYWNrZW5kX3JlbG9jX3R5cGVfY2xhc3MsCiAgIGVsZl9iYWNrZW5kX2Rpc2NhcmRfaW5mbywKICAgZWxmX2JhY2tlbmRfaWdub3JlX2Rpc2NhcmRlZF9yZWxvY3MsCisgIGVsZl9iYWNrZW5kX2Nhbl9tYWtlX3JlbGF0aXZlX2VoX2ZyYW1lLAorICBlbGZfYmFja2VuZF9jYW5fbWFrZV9sc2RhX3JlbGF0aXZlX2VoX2ZyYW1lLAorICBlbGZfYmFja2VuZF9lbmNvZGVfZWhfYWRkcmVzcywKICAgZWxmX2JhY2tlbmRfd3JpdGVfc2VjdGlvbiwKICAgZWxmX2JhY2tlbmRfbWlwc19pcml4X2NvbXBhdCwKICAgZWxmX2JhY2tlbmRfbWlwc19ydHlwZV90b19ob3d0bywKZGlmZiAtLWdpdCBhL2JmZC9saWJhb3V0LmggYi9iZmQvbGliYW91dC5oCmluZGV4IDY3MDU0ZTMuLjg3YjQ5ZTUgMTAwNjQ0Ci0tLSBhL2JmZC9saWJhb3V0LmgKKysrIGIvYmZkL2xpYmFvdXQuaApAQCAtMSw2ICsxLDYgQEAKIC8qIEJGRCBiYWNrLWVuZCBkYXRhIHN0cnVjdHVyZXMgZm9yIGEub3V0IChhbmQgc2ltaWxhcikgZmlsZXMuCiAgICBDb3B5cmlnaHQgMTk5MCwgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKLSAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMKKyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgV3JpdHRlbiBieSBDeWdudXMgU3VwcG9ydC4KIApAQCAtMjIxLDczICsyMjEsNzQgQEAKIAogc3RydWN0IGludGVybmFsX2V4ZWMKIHsKLSAgICBsb25nIGFfaW5mbzsJCS8qIE1hZ2ljIG51bWJlciBhbmQgZmxhZ3MsIHBhY2tlZCAqLwotICAgIGJmZF92bWEgYV90ZXh0OwkJLyogbGVuZ3RoIG9mIHRleHQsIGluIGJ5dGVzICAqLwotICAgIGJmZF92bWEgYV9kYXRhOwkJLyogbGVuZ3RoIG9mIGRhdGEsIGluIGJ5dGVzICAqLwotICAgIGJmZF92bWEgYV9ic3M7CQkvKiBsZW5ndGggb2YgdW5pbml0aWFsaXplZCBkYXRhIGFyZWEgaW4gbWVtICovCi0gICAgYmZkX3ZtYSBhX3N5bXM7CQkvKiBsZW5ndGggb2Ygc3ltYm9sIHRhYmxlIGRhdGEgaW4gZmlsZSAqLwotICAgIGJmZF92bWEgYV9lbnRyeTsJCS8qIHN0YXJ0IGFkZHJlc3MgKi8KLSAgICBiZmRfdm1hIGFfdHJzaXplOwkJLyogbGVuZ3RoIG9mIHRleHQncyByZWxvY2F0aW9uIGluZm8sIGluIGJ5dGVzICovCi0gICAgYmZkX3ZtYSBhX2Ryc2l6ZTsJCS8qIGxlbmd0aCBvZiBkYXRhJ3MgcmVsb2NhdGlvbiBpbmZvLCBpbiBieXRlcyAqLwotICAgIC8qIEFkZGVkIGZvciBpOTYwICovCi0gICAgYmZkX3ZtYSBhX3Rsb2FkOwkJLyogVGV4dCBydW50aW1lIGxvYWQgYWRkcmVzcyAqLwotICAgIGJmZF92bWEgYV9kbG9hZDsJCS8qIERhdGEgcnVudGltZSBsb2FkIGFkZHJlc3MgKi8KLSAgICB1bnNpZ25lZCBjaGFyIGFfdGFsaWduOwkvKiBBbGlnbm1lbnQgb2YgdGV4dCBzZWdtZW50ICovCi0gICAgdW5zaWduZWQgY2hhciBhX2RhbGlnbjsJLyogQWxpZ25tZW50IG9mIGRhdGEgc2VnbWVudCAqLwotICAgIHVuc2lnbmVkIGNoYXIgYV9iYWxpZ247CS8qIEFsaWdubWVudCBvZiBic3Mgc2VnbWVudCAqLwotICAgIGNoYXIgYV9yZWxheGFibGU7ICAgICAgICAgICAvKiBFbm91Z2ggaW5mbyBmb3IgbGlua2VyIHJlbGF4ICovCisgIGxvbmcgYV9pbmZvOwkJCS8qIE1hZ2ljIG51bWJlciBhbmQgZmxhZ3MsIHBhY2tlZC4gICovCisgIGJmZF92bWEgYV90ZXh0OwkJLyogTGVuZ3RoIG9mIHRleHQsIGluIGJ5dGVzLiAgKi8KKyAgYmZkX3ZtYSBhX2RhdGE7CQkvKiBMZW5ndGggb2YgZGF0YSwgaW4gYnl0ZXMuICAqLworICBiZmRfdm1hIGFfYnNzOwkJLyogTGVuZ3RoIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YSBhcmVhIGluIG1lbS4gICovCisgIGJmZF92bWEgYV9zeW1zOwkJLyogTGVuZ3RoIG9mIHN5bWJvbCB0YWJsZSBkYXRhIGluIGZpbGUuICAqLworICBiZmRfdm1hIGFfZW50cnk7CQkvKiBTdGFydCBhZGRyZXNzLiAgKi8KKyAgYmZkX3ZtYSBhX3Ryc2l6ZTsJCS8qIExlbmd0aCBvZiB0ZXh0J3MgcmVsb2NhdGlvbiBpbmZvLCBpbiBieXRlcy4gICovCisgIGJmZF92bWEgYV9kcnNpemU7CQkvKiBMZW5ndGggb2YgZGF0YSdzIHJlbG9jYXRpb24gaW5mbywgaW4gYnl0ZXMuICAqLworICAvKiBBZGRlZCBmb3IgaTk2MCAqLworICBiZmRfdm1hIGFfdGxvYWQ7CQkvKiBUZXh0IHJ1bnRpbWUgbG9hZCBhZGRyZXNzLiAgKi8KKyAgYmZkX3ZtYSBhX2Rsb2FkOwkJLyogRGF0YSBydW50aW1lIGxvYWQgYWRkcmVzcy4gICovCisgIHVuc2lnbmVkIGNoYXIgYV90YWxpZ247CS8qIEFsaWdubWVudCBvZiB0ZXh0IHNlZ21lbnQuICAqLworICB1bnNpZ25lZCBjaGFyIGFfZGFsaWduOwkvKiBBbGlnbm1lbnQgb2YgZGF0YSBzZWdtZW50LiAgKi8KKyAgdW5zaWduZWQgY2hhciBhX2JhbGlnbjsJLyogQWxpZ25tZW50IG9mIGJzcyBzZWdtZW50LiAgKi8KKyAgY2hhciBhX3JlbGF4YWJsZTsgICAgICAgICAgIAkvKiBFbm91Z2ggaW5mbyBmb3IgbGlua2VyIHJlbGF4LiAgKi8KIH07CiAKIC8qIE1hZ2ljIG51bWJlciBpcyB3cml0dGVuCi08IE1TQiAgICAgICAgICA+Ci0zMTMwMjkyODI3MjYyNTI0MjMyMjIxMjAxOTE4MTcxNjE1MTQxMzEyMTExMDA5MDgwNzA2MDUwNDAzMDIwMTAwCi08IEZMQUdTICAgICAgICA+PCBNQUNISU5FIFRZUEUgPjwgIE1BR0lDIE5VTUJFUiAgICAgICAgICAgICAgICA+Ci0qLwotLyogTWFnaWMgbnVtYmVyIGZvciBOZXRCU0QgaXMKLTxNU0IgICAgICAgICAgID4KLTMxMzAyOTI4MjcyNjI1MjQyMzIyMjEyMDE5MTgxNzE2MTUxNDEzMTIxMTEwMDkwODA3MDYwNTA0MDMwMjAxMDAKLTwgRkxBR1MgICAgPjwgTUFDSElORSBUWVBFICAgICA+PCAgTUFHSUMgTlVNQkVSICAgICAgICAgICAgICAgID4KLSovCisgICA8IE1TQiAgICAgICAgICA+CisgICAzMTMwMjkyODI3MjYyNTI0MjMyMjIxMjAxOTE4MTcxNjE1MTQxMzEyMTExMDA5MDgwNzA2MDUwNDAzMDIwMTAwCisgICA8IEZMQUdTICAgICAgICA+PCBNQUNISU5FIFRZUEUgPjwgIE1BR0lDIE5VTUJFUiAgICAgICAgICAgICAgICA+ICAqLwogCi1lbnVtIG1hY2hpbmVfdHlwZSB7CisvKiBNYWdpYyBudW1iZXIgZm9yIE5ldEJTRCBpcworICAgPE1TQiAgICAgICAgICAgPgorICAgMzEzMDI5MjgyNzI2MjUyNDIzMjIyMTIwMTkxODE3MTYxNTE0MTMxMjExMTAwOTA4MDcwNjA1MDQwMzAyMDEwMAorICAgPCBGTEFHUyAgICA+PCBNQUNISU5FIFRZUEUgICAgID48ICBNQUdJQyBOVU1CRVIgICAgICAgICAgICAgICAgPiAgKi8KKworZW51bSBtYWNoaW5lX3R5cGUKK3sKICAgTV9VTktOT1dOID0gMCwKICAgTV82ODAxMCA9IDEsCiAgIE1fNjgwMjAgPSAyLAogICBNX1NQQVJDID0gMywKICAgLyogU2tpcCBhIGJ1bmNoIHNvIHdlIGRvbid0IHJ1biBpbnRvIGFueSBvZiBTVU4ncyBudW1iZXJzLiAgKi8KICAgLyogTWFrZSB0aGVzZSB1cCBmb3IgdGhlIG5zMzJrLiAgKi8KLSAgTV9OUzMyMDMyID0gKDY0KSwJLyogbnMzMjAzMiBydW5uaW5nID8gKi8KLSAgTV9OUzMyNTMyID0gKDY0ICsgNSksCS8qIG5zMzI1MzIgcnVubmluZyBtYWNoICovCi0KKyAgTV9OUzMyMDMyID0gKDY0KSwJICAvKiBOUzMyMDMyIHJ1bm5pbmcgPyAgKi8KKyAgTV9OUzMyNTMyID0gKDY0ICsgNSksCSAgLyogTlMzMjUzMiBydW5uaW5nIG1hY2guICAqLwogICBNXzM4NiA9IDEwMCwKLSAgTV8yOUsgPSAxMDEsICAgICAgICAgIC8qIEFNRCAyOTAwMCAqLwotICBNXzM4Nl9EWU5JWCA9IDEwMiwJLyogU2VxdWVudCBydW5uaW5nIGR5bml4ICovCi0gIE1fQVJNID0gMTAzLAkJLyogQWR2YW5jZWQgUmlzYyBNYWNoaW5lcyBBUk0gKi8KLSAgTV9TUEFSQ0xFVCA9IDEzMSwJLyogU1BBUkNsZXQgPSBNX1NQQVJDICsgMTI4ICovCi0gIE1fMzg2X05FVEJTRCA9IDEzNCwJLyogTmV0QlNEL2kzODYgYmluYXJ5ICovCi0gIE1fNjhLX05FVEJTRCA9IDEzNSwJLyogTmV0QlNEL202OGsgYmluYXJ5ICovCi0gIE1fNjhLNEtfTkVUQlNEID0gMTM2LAkvKiBOZXRCU0QvbTY4azRrIGJpbmFyeSAqLwotICBNXzUzMl9ORVRCU0QgPSAxMzcsCS8qIE5ldEJTRC9uczMyayBiaW5hcnkgKi8KLSAgTV9TUEFSQ19ORVRCU0QgPSAxMzgsCS8qIE5ldEJTRC9zcGFyYyBiaW5hcnkgKi8KLSAgTV9QTUFYX05FVEJTRCA9IDEzOSwJLyogTmV0QlNEL3BtYXggKE1JUFMgbGl0dGxlLWVuZGlhbikgYmluYXJ5ICovCi0gIE1fVkFYX05FVEJTRCA9IDE0MCwJLyogTmV0QlNEL3ZheCBiaW5hcnkgKi8KLSAgTV9BTFBIQV9ORVRCU0QgPSAxNDEsCS8qIE5ldEJTRC9hbHBoYSBiaW5hcnkgKi8KLSAgTV9BUk02X05FVEJTRCA9IDE0MywJLyogTmV0QlNEL2FybTMyIGJpbmFyeSAqLwotICBNX1NQQVJDTEVUXzEgPSAxNDcsCS8qIDB4OTMsIHJlc2VydmVkICovCi0gIE1fVkFYNEtfTkVUQlNEID0gMTUwLAkvKiBOZXRCU0QvdmF4IDRLIHBhZ2VzIGJpbmFyeSAqLwotICBNX01JUFMxID0gMTUxLCAgICAgICAgLyogTUlQUyBSMjAwMC9SMzAwMCBiaW5hcnkgKi8KLSAgTV9NSVBTMiA9IDE1MiwgICAgICAgIC8qIE1JUFMgUjQwMDAvUjYwMDAgYmluYXJ5ICovCi0gIE1fU1BBUkNMRVRfMiA9IDE2MywJLyogMHhhMywgcmVzZXJ2ZWQgKi8KLSAgTV9TUEFSQ0xFVF8zID0gMTc5LAkvKiAweGIzLCByZXNlcnZlZCAqLwotICBNX1NQQVJDTEVUXzQgPSAxOTUsCS8qIDB4YzMsIHJlc2VydmVkICovCi0gIE1fSFAyMDAgPSAyMDAsCS8qIEhQIDIwMCAoNjgwMTApIEJTRCBiaW5hcnkgKi8KLSAgTV9IUDMwMCA9ICgzMDAgJSAyNTYpLCAvKiBIUCAzMDAgKDY4MDIwKzY4ODgxKSBCU0QgYmluYXJ5ICovCi0gIE1fSFBVWCA9ICgweDIwYyAlIDI1NiksIC8qIEhQIDIwMC8zMDAgSFBVWCBiaW5hcnkgKi8KLSAgTV9TUEFSQ0xFVF81ID0gMjExLAkvKiAweGQzLCByZXNlcnZlZCAqLwotICBNX1NQQVJDTEVUXzYgPSAyMjcsCS8qIDB4ZTMsIHJlc2VydmVkICovCi0gIC8qICBNX1NQQVJDTEVUXzcgPSAyNDMJLyAqIDB4ZjMsIHJlc2VydmVkICovCisgIE1fMjlLID0gMTAxLCAgICAgICAgICAgIC8qIEFNRCAyOTAwMC4gICovCisgIE1fMzg2X0RZTklYID0gMTAyLAkgIC8qIFNlcXVlbnQgcnVubmluZyBkeW5peC4gICovCisgIE1fQVJNID0gMTAzLAkJICAvKiBBZHZhbmNlZCBSaXNjIE1hY2hpbmVzIEFSTS4gICovCisgIE1fU1BBUkNMRVQgPSAxMzEsCSAgLyogU1BBUkNsZXQgPSBNX1NQQVJDICsgMTI4LiAgKi8KKyAgTV8zODZfTkVUQlNEID0gMTM0LAkgIC8qIE5ldEJTRC9pMzg2IGJpbmFyeS4gICovCisgIE1fNjhLX05FVEJTRCA9IDEzNSwJICAvKiBOZXRCU0QvbTY4ayBiaW5hcnkuICAqLworICBNXzY4SzRLX05FVEJTRCA9IDEzNiwJICAvKiBOZXRCU0QvbTY4azRrIGJpbmFyeS4gICovCisgIE1fNTMyX05FVEJTRCA9IDEzNywJICAvKiBOZXRCU0QvbnMzMmsgYmluYXJ5LiAgKi8KKyAgTV9TUEFSQ19ORVRCU0QgPSAxMzgsCSAgLyogTmV0QlNEL3NwYXJjIGJpbmFyeS4gICovCisgIE1fUE1BWF9ORVRCU0QgPSAxMzksCSAgLyogTmV0QlNEL3BtYXggKE1JUFMgbGl0dGxlLWVuZGlhbikgYmluYXJ5LiAgKi8KKyAgTV9WQVhfTkVUQlNEID0gMTQwLAkgIC8qIE5ldEJTRC92YXggYmluYXJ5LiAgKi8KKyAgTV9BTFBIQV9ORVRCU0QgPSAxNDEsCSAgLyogTmV0QlNEL2FscGhhIGJpbmFyeS4gICovCisgIE1fQVJNNl9ORVRCU0QgPSAxNDMsCSAgLyogTmV0QlNEL2FybTMyIGJpbmFyeS4gICovCisgIE1fU1BBUkNMRVRfMSA9IDE0NywJICAvKiAweDkzLCByZXNlcnZlZC4gICovCisgIE1fVkFYNEtfTkVUQlNEID0gMTUwLAkgIC8qIE5ldEJTRC92YXggNEsgcGFnZXMgYmluYXJ5LiAgKi8KKyAgTV9NSVBTMSA9IDE1MSwgICAgICAgICAgLyogTUlQUyBSMjAwMC9SMzAwMCBiaW5hcnkuICAqLworICBNX01JUFMyID0gMTUyLCAgICAgICAgICAvKiBNSVBTIFI0MDAwL1I2MDAwIGJpbmFyeS4gICovCisgIE1fU1BBUkM2NF9ORVRCU0QgPSAxNTYsIC8qIE5ldEJTRC9zcGFyYzY0IGJpbmFyeS4gICovCisgIE1fWDg2XzY0X05FVEJTRCA9IDE1NywgIC8qIE5ldEJTRC9hbWQ2NCBiaW5hcnkuICAqLworICBNX1NQQVJDTEVUXzIgPSAxNjMsCSAgLyogMHhhMywgcmVzZXJ2ZWQuICAqLworICBNX1NQQVJDTEVUXzMgPSAxNzksCSAgLyogMHhiMywgcmVzZXJ2ZWQuICAqLworICBNX1NQQVJDTEVUXzQgPSAxOTUsCSAgLyogMHhjMywgcmVzZXJ2ZWQuICAqLworICBNX0hQMjAwID0gMjAwLAkgIC8qIEhQIDIwMCAoNjgwMTApIEJTRCBiaW5hcnkuICAqLworICBNX0hQMzAwID0gKDMwMCAlIDI1NiksICAvKiBIUCAzMDAgKDY4MDIwKzY4ODgxKSBCU0QgYmluYXJ5LiAgKi8KKyAgTV9IUFVYID0gKDB4MjBjICUgMjU2KSwgLyogSFAgMjAwLzMwMCBIUFVYIGJpbmFyeS4gICovCisgIE1fU1BBUkNMRVRfNSA9IDIxMSwJICAvKiAweGQzLCByZXNlcnZlZC4gICovCisgIE1fU1BBUkNMRVRfNiA9IDIyNywJICAvKiAweGUzLCByZXNlcnZlZC4gICovCisvKk1fU1BBUkNMRVRfNyA9IDI0MwkgLyAqIDB4ZjMsIHJlc2VydmVkLiAgKi8KICAgTV9TUEFSQ0xJVEVfTEUgPSAyNDMsCi0gIE1fQ1JJUyA9IDI1NQkJLyogQXhpcyBDUklTIGJpbmFyeS4gICovCisgIE1fQ1JJUyA9IDI1NQkJICAvKiBBeGlzIENSSVMgYmluYXJ5LiAgKi8KIH07CiAKICNkZWZpbmUgTl9EWU5BTUlDKGV4ZWMpICgoZXhlYykuYV9pbmZvICYgMHg4MDAwMDAwMCkKQEAgLTMzNCw3ICszMzUsOCBAQAogICgoZXhlYykuYV9pbmZvJjB4MDBmZmZmZmYpIHwgKCgoZmxhZ3MpICYgMHhmZikgPDwgMjQpKQogI2VuZGlmCiAKLXR5cGVkZWYgc3RydWN0IGFvdXRfc3ltYm9sIHsKK3R5cGVkZWYgc3RydWN0IGFvdXRfc3ltYm9sCit7CiAgIGFzeW1ib2wgc3ltYm9sOwogICBzaG9ydCBkZXNjOwogICBjaGFyIG90aGVyOwpAQCAtMzQ1LDkgKzM0NywxMCBAQAogICAgVmFyaW91cyB0aGluZ3MgZGVwZW5kIG9uIHRoaXMgc3RydWN0IGJlaW5nIGFyb3VuZCBhbnkgdGltZSBhbiBhLm91dAogICAgZmlsZSBpcyBiZWluZyBoYW5kbGVkLiAgQW4gZXhhbXBsZSBpcyBkYnhyZWFkLmMgaW4gR0RCLiAgKi8KIAotc3RydWN0IGFvdXRkYXRhIHsKLSAgc3RydWN0IGludGVybmFsX2V4ZWMgKmhkcjsJCS8qIGV4ZWMgZmlsZSBoZWFkZXIgKi8KLSAgYW91dF9zeW1ib2xfdHlwZSAqc3ltYm9sczsJCS8qIHN5bXRhYiBmb3IgaW5wdXQgYmZkICovCitzdHJ1Y3QgYW91dGRhdGEKK3sKKyAgc3RydWN0IGludGVybmFsX2V4ZWMgKmhkcjsJCS8qIEV4ZWMgZmlsZSBoZWFkZXIuICAqLworICBhb3V0X3N5bWJvbF90eXBlICpzeW1ib2xzOwkJLyogU3ltdGFiIGZvciBpbnB1dCBiZmQuICAqLwogCiAgIC8qIEZvciBlYXNlLCB3ZSBkbyB0aGlzLiAgKi8KICAgYXNlY3Rpb24gKnRleHRzZWM7CkBAIC00MTcsMzAgKzQyMCwzMSBAQAogICBiZmRfdm1hICpsb2NhbF9nb3Rfb2Zmc2V0czsKIH07CiAKLXN0cnVjdCAgYW91dF9kYXRhX3N0cnVjdCB7Ci0gICAgc3RydWN0IGFvdXRkYXRhIGE7Ci0gICAgc3RydWN0IGludGVybmFsX2V4ZWMgZTsKK3N0cnVjdCAgYW91dF9kYXRhX3N0cnVjdAoreworICBzdHJ1Y3QgYW91dGRhdGEgYTsKKyAgc3RydWN0IGludGVybmFsX2V4ZWMgZTsKIH07CiAKLSNkZWZpbmUJYWRhdGEoYmZkKQkJKChiZmQpLT50ZGF0YS5hb3V0X2RhdGEtPmEpCi0jZGVmaW5lCWV4ZWNfaGRyKGJmZCkJCShhZGF0YShiZmQpLmhkcikKLSNkZWZpbmUJb2JqX2FvdXRfc3ltYm9scyhiZmQpCShhZGF0YShiZmQpLnN5bWJvbHMpCi0jZGVmaW5lCW9ial90ZXh0c2VjKGJmZCkJKGFkYXRhKGJmZCkudGV4dHNlYykKLSNkZWZpbmUJb2JqX2RhdGFzZWMoYmZkKQkoYWRhdGEoYmZkKS5kYXRhc2VjKQotI2RlZmluZQlvYmpfYnNzc2VjKGJmZCkJCShhZGF0YShiZmQpLmJzc3NlYykKLSNkZWZpbmUJb2JqX3N5bV9maWxlcG9zKGJmZCkJKGFkYXRhKGJmZCkuc3ltX2ZpbGVwb3MpCi0jZGVmaW5lCW9ial9zdHJfZmlsZXBvcyhiZmQpCShhZGF0YShiZmQpLnN0cl9maWxlcG9zKQotI2RlZmluZQlvYmpfcmVsb2NfZW50cnlfc2l6ZShiZmQpIChhZGF0YShiZmQpLnJlbG9jX2VudHJ5X3NpemUpCi0jZGVmaW5lCW9ial9zeW1ib2xfZW50cnlfc2l6ZShiZmQpIChhZGF0YShiZmQpLnN5bWJvbF9lbnRyeV9zaXplKQotI2RlZmluZSBvYmpfYW91dF9zdWJmb3JtYXQoYmZkKQkoYWRhdGEoYmZkKS5zdWJmb3JtYXQpCi0jZGVmaW5lIG9ial9hb3V0X2V4dGVybmFsX3N5bXMoYmZkKSAoYWRhdGEoYmZkKS5leHRlcm5hbF9zeW1zKQotI2RlZmluZSBvYmpfYW91dF9leHRlcm5hbF9zeW1fY291bnQoYmZkKSAoYWRhdGEoYmZkKS5leHRlcm5hbF9zeW1fY291bnQpCi0jZGVmaW5lIG9ial9hb3V0X3N5bV93aW5kb3coYmZkKSAoYWRhdGEoYmZkKS5zeW1fd2luZG93KQotI2RlZmluZSBvYmpfYW91dF9leHRlcm5hbF9zdHJpbmdzKGJmZCkgKGFkYXRhKGJmZCkuZXh0ZXJuYWxfc3RyaW5ncykKLSNkZWZpbmUgb2JqX2FvdXRfZXh0ZXJuYWxfc3RyaW5nX3NpemUoYmZkKSAoYWRhdGEoYmZkKS5leHRlcm5hbF9zdHJpbmdfc2l6ZSkKLSNkZWZpbmUgb2JqX2FvdXRfc3RyaW5nX3dpbmRvdyhiZmQpIChhZGF0YShiZmQpLnN0cmluZ193aW5kb3cpCi0jZGVmaW5lIG9ial9hb3V0X3N5bV9oYXNoZXMoYmZkKSAoYWRhdGEoYmZkKS5zeW1faGFzaGVzKQotI2RlZmluZSBvYmpfYW91dF9keW5hbWljX2luZm8oYmZkKSAoYWRhdGEoYmZkKS5keW5hbWljX2luZm8pCisjZGVmaW5lCWFkYXRhKGJmZCkJCSAgICAgICAgICAgKChiZmQpLT50ZGF0YS5hb3V0X2RhdGEtPmEpCisjZGVmaW5lCWV4ZWNfaGRyKGJmZCkJCSAgICAgICAgICAgKGFkYXRhIChiZmQpLmhkcikKKyNkZWZpbmUJb2JqX2FvdXRfc3ltYm9scyhiZmQpCSAgICAgICAgICAgKGFkYXRhIChiZmQpLnN5bWJvbHMpCisjZGVmaW5lCW9ial90ZXh0c2VjKGJmZCkJICAgICAgICAgICAoYWRhdGEgKGJmZCkudGV4dHNlYykKKyNkZWZpbmUJb2JqX2RhdGFzZWMoYmZkKQkgICAgICAgICAgIChhZGF0YSAoYmZkKS5kYXRhc2VjKQorI2RlZmluZQlvYmpfYnNzc2VjKGJmZCkJCSAgICAgICAgICAgKGFkYXRhIChiZmQpLmJzc3NlYykKKyNkZWZpbmUJb2JqX3N5bV9maWxlcG9zKGJmZCkJICAgICAgICAgICAoYWRhdGEgKGJmZCkuc3ltX2ZpbGVwb3MpCisjZGVmaW5lCW9ial9zdHJfZmlsZXBvcyhiZmQpCSAgICAgICAgICAgKGFkYXRhIChiZmQpLnN0cl9maWxlcG9zKQorI2RlZmluZQlvYmpfcmVsb2NfZW50cnlfc2l6ZShiZmQpICAgICAgICAgIChhZGF0YSAoYmZkKS5yZWxvY19lbnRyeV9zaXplKQorI2RlZmluZQlvYmpfc3ltYm9sX2VudHJ5X3NpemUoYmZkKSAgICAgICAgIChhZGF0YSAoYmZkKS5zeW1ib2xfZW50cnlfc2l6ZSkKKyNkZWZpbmUgb2JqX2FvdXRfc3ViZm9ybWF0KGJmZCkJICAgICAgICAgICAoYWRhdGEgKGJmZCkuc3ViZm9ybWF0KQorI2RlZmluZSBvYmpfYW91dF9leHRlcm5hbF9zeW1zKGJmZCkgICAgICAgIChhZGF0YSAoYmZkKS5leHRlcm5hbF9zeW1zKQorI2RlZmluZSBvYmpfYW91dF9leHRlcm5hbF9zeW1fY291bnQoYmZkKSAgIChhZGF0YSAoYmZkKS5leHRlcm5hbF9zeW1fY291bnQpCisjZGVmaW5lIG9ial9hb3V0X3N5bV93aW5kb3coYmZkKSAgICAgICAgICAgKGFkYXRhIChiZmQpLnN5bV93aW5kb3cpCisjZGVmaW5lIG9ial9hb3V0X2V4dGVybmFsX3N0cmluZ3MoYmZkKSAgICAgKGFkYXRhIChiZmQpLmV4dGVybmFsX3N0cmluZ3MpCisjZGVmaW5lIG9ial9hb3V0X2V4dGVybmFsX3N0cmluZ19zaXplKGJmZCkgKGFkYXRhIChiZmQpLmV4dGVybmFsX3N0cmluZ19zaXplKQorI2RlZmluZSBvYmpfYW91dF9zdHJpbmdfd2luZG93KGJmZCkgICAgICAgIChhZGF0YSAoYmZkKS5zdHJpbmdfd2luZG93KQorI2RlZmluZSBvYmpfYW91dF9zeW1faGFzaGVzKGJmZCkgICAgICAgICAgIChhZGF0YSAoYmZkKS5zeW1faGFzaGVzKQorI2RlZmluZSBvYmpfYW91dF9keW5hbWljX2luZm8oYmZkKSAgICAgICAgIChhZGF0YSAoYmZkKS5keW5hbWljX2luZm8pCiAKIC8qIFdlIHRha2UgdGhlIGFkZHJlc3Mgb2YgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYW4gYXN5bWJvbCB0byBlbnN1cmUgdGhhdCB0aGUKICAgIG1hY3JvIGlzIG9ubHkgZXZlciBhcHBsaWVkIHRvIGFuIGFzeW1ib2wuICAqLwpAQCAtNjAyLDcgKzYwNiw3IEBACiAjaWZuZGVmIFdSSVRFX0hFQURFUlMKICNkZWZpbmUgV1JJVEVfSEVBREVSUyhhYmZkLCBleGVjcCkJCQkJCSAgICAgIFwKICAgICAgIHsJCQkJCQkJCQkgICAgICBcCi0JYmZkX3NpemVfdHlwZSB0ZXh0X3NpemU7IC8qIGR1bW15IHZhcnMgKi8JCQkgICAgICBcCisJYmZkX3NpemVfdHlwZSB0ZXh0X3NpemU7IC8qIER1bW15IHZhcnMuICAqLwkJCSAgICAgIFwKIAlmaWxlX3B0ciB0ZXh0X2VuZDsJCQkJCQkgICAgICBcCiAJaWYgKGFkYXRhKGFiZmQpLm1hZ2ljID09IHVuZGVjaWRlZF9tYWdpYykJCQkgICAgICBcCiAJICBOQU1FKGFvdXQsYWRqdXN0X3NpemVzX2FuZF92bWFzKSAoYWJmZCwgJnRleHRfc2l6ZSwgJnRleHRfZW5kKTsgICAgIFwKQEAgLTYxNyw3ICs2MjEsNyBAQAogCU5BTUUoYW91dCxzd2FwX2V4ZWNfaGVhZGVyX291dCkgKGFiZmQsIGV4ZWNwLCAmZXhlY19ieXRlcyk7CSAgICAgIFwKIAkJCQkJCQkJCSAgICAgIFwKIAlpZiAoYmZkX3NlZWsgKGFiZmQsIChmaWxlX3B0cikgMCwgU0VFS19TRVQpICE9IDAJCSAgICAgIFwKLQkgICAgfHwgYmZkX2J3cml0ZSAoKFBUUikgJmV4ZWNfYnl0ZXMsIChiZmRfc2l6ZV90eXBlKSBFWEVDX0JZVEVTX1NJWkUsIFwKKwkgICAgfHwgYmZkX2J3cml0ZSAoKFBUUikgJmV4ZWNfYnl0ZXMsIChiZmRfc2l6ZV90eXBlKSBFWEVDX0JZVEVTX1NJWkUsXAogCQkJICBhYmZkKSAhPSBFWEVDX0JZVEVTX1NJWkUpCQkJICAgICAgXAogCSAgcmV0dXJuIEZBTFNFOwkJCQkJCQkgICAgICBcCiAJLyogTm93IHdyaXRlIG91dCByZWxvYyBpbmZvLCBmb2xsb3dlZCBieSBzeW1zIGFuZCBzdHJpbmdzLiAgKi8JICAgICAgXApAQCAtNjMyLDEyICs2MzYsMTIgQEAKIAkgICAgICByZXR1cm4gRkFMU0U7CQkJCQkJICAgICAgXAogCSAgfQkJCQkJCQkJICAgICAgXAogCQkJCQkJCQkJICAgICAgXAotCWlmIChiZmRfc2VlayAoYWJmZCwgKGZpbGVfcHRyKSAoTl9UUkVMT0ZGKCpleGVjcCkpLCBTRUVLX1NFVCkgIT0gMCkgICBcCisJaWYgKGJmZF9zZWVrIChhYmZkLCAoZmlsZV9wdHIpIChOX1RSRUxPRkYgKCpleGVjcCkpLCBTRUVLX1NFVCkgIT0gMCkgIFwKIAkgIHJldHVybiBGQUxTRTsJCQkJCQkgICAgICAJICAgICAgXAogCWlmICghTkFNRShhb3V0LHNxdWlydF9vdXRfcmVsb2NzKSAoYWJmZCwgb2JqX3RleHRzZWMgKGFiZmQpKSkgICAgICAgICBcCiAJICByZXR1cm4gRkFMU0U7CQkJCQkJICAgICAgCSAgICAgIFwKIAkJCQkJCQkJCSAgICAgIFwKLQlpZiAoYmZkX3NlZWsgKGFiZmQsIChmaWxlX3B0cikgKE5fRFJFTE9GRigqZXhlY3ApKSwgU0VFS19TRVQpICE9IDApICAgXAorCWlmIChiZmRfc2VlayAoYWJmZCwgKGZpbGVfcHRyKSAoTl9EUkVMT0ZGICgqZXhlY3ApKSwgU0VFS19TRVQpICE9IDApICBcCiAJICByZXR1cm4gRkFMU0U7CQkJCQkJICAgICAgCSAgICAgIFwKIAlpZiAoIU5BTUUoYW91dCxzcXVpcnRfb3V0X3JlbG9jcykgKGFiZmQsIG9ial9kYXRhc2VjIChhYmZkKSkpICAgICAgICAgXAogCSAgcmV0dXJuIEZBTFNFOwkJCQkJCSAgICAgIAkgICAgICBcCmRpZmYgLS1naXQgYS9iZmQvbGliYmZkLmggYi9iZmQvbGliYmZkLmgKaW5kZXggNjIwNDNmMy4uZTRlMTdmOSAxMDA2NDQKLS0tIGEvYmZkL2xpYmJmZC5oCisrKyBiL2JmZC9saWJiZmQuaApAQCAtMTQzNyw2ICsxNDM3LDQ2IEBACiAgICJCRkRfUkVMT0NfTTY4SEMxMV9QQUdFIiwKICAgIkJGRF9SRUxPQ19NNjhIQzExXzI0IiwKICAgIkJGRF9SRUxPQ19NNjhIQzEyXzVCIiwKKyAgIkJGRF9SRUxPQ18xNkNfTlVNMDgiLAorICAiQkZEX1JFTE9DXzE2Q19OVU0wOF9DIiwKKyAgIkJGRF9SRUxPQ18xNkNfTlVNMTYiLAorICAiQkZEX1JFTE9DXzE2Q19OVU0xNl9DIiwKKyAgIkJGRF9SRUxPQ18xNkNfTlVNMzIiLAorICAiQkZEX1JFTE9DXzE2Q19OVU0zMl9DIiwKKyAgIkJGRF9SRUxPQ18xNkNfRElTUDA0IiwKKyAgIkJGRF9SRUxPQ18xNkNfRElTUDA0X0MiLAorICAiQkZEX1JFTE9DXzE2Q19ESVNQMDgiLAorICAiQkZEX1JFTE9DXzE2Q19ESVNQMDhfQyIsCisgICJCRkRfUkVMT0NfMTZDX0RJU1AxNiIsCisgICJCRkRfUkVMT0NfMTZDX0RJU1AxNl9DIiwKKyAgIkJGRF9SRUxPQ18xNkNfRElTUDI0IiwKKyAgIkJGRF9SRUxPQ18xNkNfRElTUDI0X0MiLAorICAiQkZEX1JFTE9DXzE2Q19ESVNQMjRhIiwKKyAgIkJGRF9SRUxPQ18xNkNfRElTUDI0YV9DIiwKKyAgIkJGRF9SRUxPQ18xNkNfUkVHMDQiLAorICAiQkZEX1JFTE9DXzE2Q19SRUcwNF9DIiwKKyAgIkJGRF9SRUxPQ18xNkNfUkVHMDRhIiwKKyAgIkJGRF9SRUxPQ18xNkNfUkVHMDRhX0MiLAorICAiQkZEX1JFTE9DXzE2Q19SRUcxNCIsCisgICJCRkRfUkVMT0NfMTZDX1JFRzE0X0MiLAorICAiQkZEX1JFTE9DXzE2Q19SRUcxNiIsCisgICJCRkRfUkVMT0NfMTZDX1JFRzE2X0MiLAorICAiQkZEX1JFTE9DXzE2Q19SRUcyMCIsCisgICJCRkRfUkVMT0NfMTZDX1JFRzIwX0MiLAorICAiQkZEX1JFTE9DXzE2Q19BQlMyMCIsCisgICJCRkRfUkVMT0NfMTZDX0FCUzIwX0MiLAorICAiQkZEX1JFTE9DXzE2Q19BQlMyNCIsCisgICJCRkRfUkVMT0NfMTZDX0FCUzI0X0MiLAorICAiQkZEX1JFTE9DXzE2Q19JTU0wNCIsCisgICJCRkRfUkVMT0NfMTZDX0lNTTA0X0MiLAorICAiQkZEX1JFTE9DXzE2Q19JTU0xNiIsCisgICJCRkRfUkVMT0NfMTZDX0lNTTE2X0MiLAorICAiQkZEX1JFTE9DXzE2Q19JTU0yMCIsCisgICJCRkRfUkVMT0NfMTZDX0lNTTIwX0MiLAorICAiQkZEX1JFTE9DXzE2Q19JTU0yNCIsCisgICJCRkRfUkVMT0NfMTZDX0lNTTI0X0MiLAorICAiQkZEX1JFTE9DXzE2Q19JTU0zMiIsCisgICJCRkRfUkVMT0NfMTZDX0lNTTMyX0MiLAogICAiQkZEX1JFTE9DX0NSSVNfQkRJU1A4IiwKICAgIkJGRF9SRUxPQ19DUklTX1VOU0lHTkVEXzUiLAogICAiQkZEX1JFTE9DX0NSSVNfU0lHTkVEXzYiLApkaWZmIC0tZ2l0IGEvYmZkL2xpbmtlci5jIGIvYmZkL2xpbmtlci5jCmluZGV4IGM1NWZiOTMuLjU4YmVmYzMgMTAwNjQ0Ci0tLSBhL2JmZC9saW5rZXIuYworKysgYi9iZmQvbGlua2VyLmMKQEAgLTEsNiArMSw2IEBACiAvKiBsaW5rZXIuYyAtLSBCRkQgbGlua2VyIHJvdXRpbmVzCi0gICBDb3B5cmlnaHQgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMwotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb3B5cmlnaHQgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKKyAgIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBXcml0dGVuIGJ5IFN0ZXZlIENoYW1iZXJsYWluIGFuZCBJYW4gTGFuY2UgVGF5bG9yLCBDeWdudXMgU3VwcG9ydAogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCkBAIC01MjMsMTAgKzUyMywxNCBAQAogICBpZiAoaW5mby0+d3JhcF9oYXNoICE9IE5VTEwpCiAgICAgewogICAgICAgY29uc3QgY2hhciAqbDsKKyAgICAgIGNoYXIgcHJlZml4ID0gJ1wwJzsKIAogICAgICAgbCA9IHN0cmluZzsKLSAgICAgIGlmICgqbCA9PSBiZmRfZ2V0X3N5bWJvbF9sZWFkaW5nX2NoYXIgKGFiZmQpKQotCSsrbDsKKyAgICAgIGlmICgqbCA9PSBiZmRfZ2V0X3N5bWJvbF9sZWFkaW5nX2NoYXIgKGFiZmQpIHx8ICpsID09IGluZm8tPndyYXBfY2hhcikKKwl7CisJICBwcmVmaXggPSAqbDsKKwkgICsrbDsKKwl9CiAKICN1bmRlZiBXUkFQCiAjZGVmaW5lIFdSQVAgIl9fd3JhcF8iCkBAIC01NDQsOCArNTQ4LDcgQEAKIAkgIGlmIChuID09IE5VTEwpCiAJICAgIHJldHVybiBOVUxMOwogCi0JICAvKiBOb3RlIHRoYXQgc3ltYm9sX2xlYWRpbmdfY2hhciBtYXkgYmUgJ1wwJy4gICovCi0JICBuWzBdID0gYmZkX2dldF9zeW1ib2xfbGVhZGluZ19jaGFyIChhYmZkKTsKKwkgIG5bMF0gPSBwcmVmaXg7CiAJICBuWzFdID0gJ1wwJzsKIAkgIHN0cmNhdCAobiwgV1JBUCk7CiAJICBzdHJjYXQgKG4sIGwpOwpAQCAtNTc2LDggKzU3OSw3IEBACiAJICBpZiAobiA9PSBOVUxMKQogCSAgICByZXR1cm4gTlVMTDsKIAotCSAgLyogTm90ZSB0aGF0IHN5bWJvbF9sZWFkaW5nX2NoYXIgbWF5IGJlICdcMCcuICAqLwotCSAgblswXSA9IGJmZF9nZXRfc3ltYm9sX2xlYWRpbmdfY2hhciAoYWJmZCk7CisJICBuWzBdID0gcHJlZml4OwogCSAgblsxXSA9ICdcMCc7CiAJICBzdHJjYXQgKG4sIGwgKyBzaXplb2YgUkVBTCAtIDEpOwogCSAgaCA9IGJmZF9saW5rX2hhc2hfbG9va3VwIChpbmZvLT5oYXNoLCBuLCBjcmVhdGUsIFRSVUUsIGZvbGxvdyk7CmRpZmYgLS1naXQgYS9iZmQvbXB3LWNvbmZpZy5pbiBiL2JmZC9tcHctY29uZmlnLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWFkZGVlLi4wMDAwMDAwCi0tLSBhL2JmZC9tcHctY29uZmlnLmluCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotIyBDb25maWd1cmF0aW9uIGZyYWdtZW50IGZvciBCRkQuCi0KLSMgVGhpcyBpcyBhbG1vc3QgYWx3YXlzIGNvcnJlY3QuCi0KLVNldCBzZWxhcmNocyAiJmJmZF97dGFyZ2V0X2NwdX1fYXJjaCIKLVNldCBkZWZ2ZWMgIiIKLVNldCBzZWx2ZWNzICIiCi1TZXQgaGF2ZXZlY3MgIiIKLQotSWYgInt0YXJnZXRfY2Fub25pY2FsfSIgPX4gL202OGstYXBwbGUtbWFjb3MvCi0JU2V0IEJGRF9CQUNLRU5EUyAnIntvfSJjb2ZmLW02OGsuYy5vICJ7b30iY29mZmxpbmsuYy5vJwotCVNldCBkZWZ2ZWMgbTY4a2NvZmZfdmVjCi0JU2V0IHNlbHZlY3MgJyZtNjhrY29mZl92ZWMnCi0JU2V0IGhhdmV2ZWNzICctZCBIQVZFX202OGtjb2ZmX3ZlYycKLQotRWxzZSBJZiAie3RhcmdldF9jYW5vbmljYWx9IiA9fiAvcG93ZXJwYy1hcHBsZS1tYWNvcy8KLQlTZXQgQkZEX0JBQ0tFTkRTICcie299ImNvZmYtcG1hYy5jLm8gIntvfSJ4Y29mZmxpbmsuYy5vJwotCVNldCBkZWZ2ZWMgcG1hY194Y29mZl92ZWMKLQlTZXQgc2VsdmVjcyAnJnBtYWNfeGNvZmZfdmVjJwotCVNldCBoYXZldmVjcyAnLWQgSEFWRV9wbWFjX3hjb2ZmX3ZlYycKLQlTZXQgc2VsYXJjaHMgIiZiZmRfcG93ZXJwY19hcmNoIgotCi1FbHNlIElmICJ7dGFyZ2V0X2Nhbm9uaWNhbH0iID1+IC9pMzg2LVxPcHRpb24teC1nbzMyLwotCVNldCBCRkRfQkFDS0VORFMgJyJ7b30iY29mZi1pMzg2LmMubycKLQlTZXQgZGVmdmVjIGkzODZjb2ZmX3ZlYwotCVNldCBzZWx2ZWNzICcmaTM4NmNvZmZfdmVjJwotCVNldCBoYXZldmVjcyAnLWQgSEFWRV9pMzg2Y29mZl92ZWMnCi0KLUVsc2UgSWYgInt0YXJnZXRfY2Fub25pY2FsfSIgPX4gL21pcHMtXE9wdGlvbi14LVxPcHRpb24teC8KLQlTZXQgQkZEX0JBQ0tFTkRTICcie299ImNvZmYtbWlwcy5jLm8gIntvfSJlY29mZi5jLm8gIntvfSJlY29mZmxpbmsuYy5vICJ7b30iZWxmMzIuYy5vICJ7b30iZWxmMzItbWlwcy5jLm8gIntvfSJlbGZsaW5rLmMubycKLQlTZXQgZGVmdmVjIGVjb2ZmX2JpZ192ZWMKLQlTZXQgc2VsdmVjcyAnJmVjb2ZmX2JpZ192ZWMsJmVjb2ZmX2xpdHRsZV92ZWMsJmJmZF9lbGYzMl9iaWdtaXBzX3ZlYycKLQlTZXQgaGF2ZXZlY3MgJy1kIEhBVkVfZWNvZmZfYmlnX3ZlYyAtZCBIQVZFX2Vjb2ZmX2xpdHRsZV92ZWMgLWQgSEFWRV9iZmRfZWxmMzJfYmlnbWlwc192ZWMnCi0KLUVsc2UgSWYgInt0YXJnZXRfY2Fub25pY2FsfSIgPX4gL3NoLVxPcHRpb24teC1obXMvCi0JU2V0IEJGRF9CQUNLRU5EUyAnIntvfSJjb2ZmLXNoLmMubyAie299ImNvZmZsaW5rLmMubycKLQlTZXQgZGVmdmVjIHNoY29mZl92ZWMKLQlTZXQgc2VsdmVjcyAnJnNoY29mZl92ZWMsJnNobGNvZmZfdmVjJwotCVNldCBoYXZldmVjcyAnLWQgSEFWRV9zaGNvZmZfdmVjIC1kIEhBVkVfc2hsY29mZl92ZWMnCi1FbmQgSWYKLQotU2V0IHRhIGBlY2hvIHtzZWxhcmNoc30gfCBzZWQgLWUgJ3MvJmJmZF8ve299Y3B1LS9nJyAtZSAncy9fYXJjaC8uYy5vL2cnYAotCi1TZXQgdGRlZmF1bHRzICItZCBERUZBVUxUX1ZFQ1RPUj17ZGVmdmVjfSAtZCBTRUxFQ1RfVkVDUz17c2VsdmVjc30gLWQgU0VMRUNUX0FSQ0hJVEVDVFVSRVM9e3NlbGFyY2hzfSB7aGF2ZXZlY3N9IgotCi1FY2hvICcjIEZyb20gbXB3LWNvbmZpZy5pbicJCQkJID4gIntvfSJtay50bXAKLUVjaG8gJ1dPUkRTSVpFID0gMzInCQkJCQk+PiAie299Im1rLnRtcAotRWNobyAnQkZEX01BQ0hJTkVTID0gJyB7dGF9CQkJCT4+ICJ7b30ibWsudG1wCi1FY2hvICdCRkRfQkFDS0VORFMgPSAnIHtCRkRfQkFDS0VORFN9CQkJPj4gIntvfSJtay50bXAKLUVjaG8gJ1RERUZBVUxUUyA9ICcge3RkZWZhdWx0c30JCQkJPj4gIntvfSJtay50bXAKLUVjaG8gJ0hERVBGSUxFUyA9ICcJCQkJCT4+ICJ7b30ibWsudG1wCi1FY2hvICdUREVQRklMRVMgPSAnCQkJCQk+PiAie299Im1rLnRtcAotRWNobyAnIyBFbmQgZnJvbSBtcHctY29uZmlnLmluJwkJCQk+PiAie299Im1rLnRtcAotCi1FY2hvICcvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBieSBtcHctY29uZmlndXJlLiAgKi8nCSA+ICJ7b30iY29uZmlnLm5ldwotRWNobyAnI2luY2x1ZGUgIm1wdy5oIicJCQkJCT4+ICJ7b30iY29uZmlnLm5ldwotCi1Nb3ZlSWZDaGFuZ2UgIntvfSJjb25maWcubmV3ICJ7b30iY29uZmlnLmgKLQotIyBXZSBjYW4gb25seSBoYW5kbGUgMzItYml0IHRhcmdldHMgcmlnaHQgbm93LgotCi1zZWQgLWUgJ3MvQFdPUkRTSVpFQC8zMi8nIFxPcHRpb24tZAotICAgIC1lICdzL0B3b3Jkc2l6ZUAvMzIvJyBcT3B0aW9uLWQKLSAgICAtZSAicy9AVkVSU0lPTkAvYENhdGVuYXRlIHtzcmNkaXJ9VkVSU0lPTmAvIiBcT3B0aW9uLWQKLSAgICAtZSAncy9AQkZEX0hPU1RfNjRfQklUX0RFRklORURALzAvJyBcT3B0aW9uLWQKLSAgICAtZSAncy9AQkZEX0hPU1RfNjRfQklUQC8vJyBcT3B0aW9uLWQKLSAgICAtZSAncy9AQkZEX0hPU1RfVV82NF9CSVRALy8nIFxPcHRpb24tZAotICAgIC1lICdzL0BCRkRfSE9TVF82NEJJVF9MT05HQC8wLycgXE9wdGlvbi1kCi0gICAgIntzcmNkaXJ9ImJmZC1pbjIuaCA+IntvfSJiZmQuaC1uZXcKLQotTW92ZUlmQ2hhbmdlICJ7b30iYmZkLmgtbmV3ICJ7b30iYmZkLmgKLQotc2VkIC1lICdzL05OLzMyL2cnICJ7c3JjZGlyfSJlbGZ4eC10YXJnZXQuaCA+IntvfSJlbGYzMi10YXJnZXQuaC1uZXcKLU1vdmVJZkNoYW5nZSAie299ImVsZjMyLXRhcmdldC5oLW5ldyAie299ImVsZjMyLXRhcmdldC5oCi0KLSMgUHJlLWV4cGFuZCBzb21lIG1hY3JvcyBpbiBjb2Zmc3dhcC5oLCBzbyBNUFcgQyBkb2Vzbid0IGNob2tlLgotCi1zZWQgLWUgJ3MvXiAgUFVUX0FPVVRIRFJfVFNJWkUgKC8gIGJmZF9oX3B1dF8zMiAoLycgXE9wdGlvbi1kCi0gICAgLWUgJ3MvXiAgUFVUX0FPVVRIRFJfRFNJWkUgKC8gIGJmZF9oX3B1dF8zMiAoLycgXE9wdGlvbi1kCi0gICAgLWUgJ3MvXiAgUFVUX0FPVVRIRFJfQlNJWkUgKC8gIGJmZF9oX3B1dF8zMiAoLycgXE9wdGlvbi1kCi0gICAgLWUgJ3MvXiAgUFVUX0FPVVRIRFJfRU5UUlkgKC8gIGJmZF9oX3B1dF8zMiAoLycgXE9wdGlvbi1kCi0gICAgLWUgJ3MvXiAgUFVUX0FPVVRIRFJfVEVYVF9TVEFSVCAoLyAgYmZkX2hfcHV0XzMyICgvJyBcT3B0aW9uLWQKLSAgICAtZSAncy9eICBQVVRfQU9VVEhEUl9EQVRBX1NUQVJUICgvICBiZmRfaF9wdXRfMzIgKC8nIFxPcHRpb24tZAotICAgICJ7c3JjZGlyfSJjb2Zmc3dhcC5oID4ie299ImNvZmZzd2FwLmgtbmV3Ci0KLU1vdmVJZkNoYW5nZSAie299ImNvZmZzd2FwLmgtbmV3ICJ7b30iY29mZnN3YXAuaApkaWZmIC0tZ2l0IGEvYmZkL21wdy1tYWtlLnNlZCBiL2JmZC9tcHctbWFrZS5zZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyNDYzYzcuLjAwMDAwMDAKLS0tIGEvYmZkL21wdy1tYWtlLnNlZAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLSMgU2VkIGNvbW1hbmRzIHRvIGZpbmlzaCB0cmFuc2xhdGluZyB0aGUgVW5peCBCRkQgTWFrZWZpbGUgaW50byBNUFcgc3ludGF4LgotCi0jIFdoYWNrIG91dCB1bnVzZWQgaG9zdCBhbmQgdGFyZ2V0IGRlZmluZSBiaXRzLgotL0hERUZJTkVTL3MvQEhERUZJTkVTQC8vCi0vVERFRklORVMvcy9AVERFRklORVNALy8KLQotIyBGaXggcGF0aG5hbWVzIHRvIGluY2x1ZGUgZGlyZWN0b3JpZXMuCi0vXklOQ0RJUiA9IC9zL15JTkNESVIgPSAuKiQvSU5DRElSID0gInt0b3BzcmNkaXJ9ImluY2x1ZGUvCi0vXkNTRUFSQ0ggPSAvcy8kLyAtaSAie0lOQ0RJUn0iOm1wdzogLWkgOjpleHRyYS1pbmNsdWRlOi8KLQotIyBDb21tZW50IG91dCBzZXR0aW5nIG9mIHZhcnMsIGNvbmZpZ3VyZSBzY3JpcHQgd2lsbCBhZGQgdGhlc2UgaXRzZWxmLgotL15XT1JEU0laRSA9L3MvXi8jLwotIyAvXkFMTF9CQUNLRU5EUy9zL14vIy8KLS9eQkZEX0JBQ0tFTkRTL3MvXi8jLwotL15CRkRfTUFDSElORVMvcy9eLyMvCi0vXlRERUZBVUxUUy9zL14vIy8KLQotIyBSZW1vdmUgZXh0cmEsIHVzZWxlc3MsICJhbGwiLgotL15hbGwgXFxPcHRpb24tZiBfb2xkZXN0LywvXiQvZAotCi0jIFJlbW92ZSB0aGUgTWFrZWZpbGUgcmVidWlsZCBydWxlLgotL15NYWtlZmlsZSAvLC8tLXJlY2hlY2svZAotCi0jIERvbid0IGRvIGFueSByZWN1cnNpdmUgc3ViZGlyIHN0dWZmLgotLyBzdWJkaXJfZG8vcy97TUFLRX0vbnVsbC1jb21tYW5kLwotCi0vQkZEX0gvcy9ee0JGRF9IfS8je0JGRF9IfS8KLQotIyBBZGQgZXhwbGljaXQgc3JjZGlyIHBhdGhzIHRvIHNwZWNpYWwgZmlsZXMuCi0vY29uZmlnLmJmZC9zLyBjb25maWcuYmZkLyAie3N9ImNvbmZpZy5iZmQvZwotL3RhcmdtYXRjaC5zZWQvcy8gdGFyZ21hdGNoLnNlZC8gIntzfSJ0YXJnbWF0Y2guc2VkL2cKLQotIyBQb2ludCBhdCBpbmNsdWRlIGZpbGVzIHRoYXQgYXJlIGFsd2F5cyBpbiB0aGUgb2JqZGlyLgotL2JmZC9zLyJ7c30iYmZkXC5oLyJ7b30iYmZkLmgvZwotL2NvbmZpZy9zLyJ7c30iY29uZmlnXC5oLyJ7b30iY29uZmlnLmgvZwotL3RhcmdtYXRjaC9zLyJ7c30idGFyZ21hdGNoXC5oLyJ7b30idGFyZ21hdGNoLmgvZwotL3RhcmdtYXRjaC9zL150YXJnbWF0Y2hcLmgvIntvfSJ0YXJnbWF0Y2guaC8KLS9lbGYzMi10YXJnZXQvcy8ie3N9ImVsZjMyLXRhcmdldFwuaC8ie299ImVsZjMyLXRhcmdldC5oL2cKLS9lbGYzMi10YXJnZXQvcy9eZWxmMzItdGFyZ2V0XC5oLyJ7b30iZWxmMzItdGFyZ2V0LmgvCi0vZWxmNjQtdGFyZ2V0L3MvIntzfSJlbGY2NC10YXJnZXRcLmgvIntvfSJlbGY2NC10YXJnZXQuaC9nCi0vZWxmNjQtdGFyZ2V0L3MvXmVsZjY0LXRhcmdldFwuaC8ie299ImVsZjY0LXRhcmdldC5oLwotCi0vIntzfSJ7SU5DRElSfS9zLyJ7c30ie0lOQ0RJUn0vIntJTkNESVJ9Ii9nCi0KLS9kZXAvcy9cLmRlcC9fX2RlcC9nCi0KLSMgUmVtb3ZpbmcgZHVwbGljYXRlcyBpcyBjb29sIGJ1dCBwcmVzZW50bHkgdW5uZWNlc3NhcnksCi0jIHNvIHdoYWNrIHRoaXMgb3V0LgotL15vZmlsZXMgXFxPcHRpb24tZi8sL14kL2QKLS9vZmlsZXMvcy97T0ZJTEVTfSBvZmlsZXMve09GSUxFU30vCi0vZWNobyBvZmlsZXMgPSAvZAotL2NhdCBvZmlsZXMvcy9gY2F0IG9maWxlc2Ave09GSUxFU30vCi0KLSMgTm8gY29yZWZpbGUgc3VwcG9ydC4KLS9DT1JFRklMRS9zL0BDT1JFRklMRUAvLwotL0NPUkVGTEFHL3MvQENPUkVGTEFHQC8vCi0KLSMgTm8gUElDIGZvb2xlcnkgaW4gdGhpcyBlbnZpcm9ubWVudC4KLS9AQUxMTElCU0Avcy9AQUxMTElCU0Ave1RBUkdFVExJQn0vCi0vQFBJQ0xJU1RAL3MvQFBJQ0xJU1RALy8KLS9AUElDRkxBR0Avcy9AUElDRkxBR0AvLwotL157T0ZJTEVTfSBcXE9wdGlvbi1mIHN0YW1wLXBpY2Rpci8sL14kL2QKLQotIyBSZW1vdmUgdGhlIHBpYyB0cmlja2VyeSBmcm9tIHRoZSBkZWZhdWx0IGJ1aWxkIHJ1bGUuCi0vXlwuY1wubyBcXE9wdGlvbi1mIC8sL0VuZCBJZi9jXAotLmMubyBcXE9wdGlvbi1mIC5jCi0KLSMgTVBXIE1ha2UgZG9lc24ndCBrbm93IGFib3V0ICQ8LgotLyJ7b30idGFyZ2V0cy5jLm8gXFxPcHRpb24tZiAie3N9InRhcmdldHMuYyBNYWtlZmlsZS8sL14kL2NcCi0ie299InRhcmdldHMuYy5vIFxcT3B0aW9uLWYgIntzfSJ0YXJnZXRzLmMgTWFrZWZpbGVcCi0Je0NDfSBAREFTSF9DX0ZMQUdAIHtBTExfQ0ZMQUdTfSB7VERFRkFVTFRTfSAie3N9InRhcmdldHMuYyAtbyAie299InRhcmdldHMuYy5vCi0KLS8ie299ImFyY2h1cmVzLmMubyBcXE9wdGlvbi1mICJ7c30iYXJjaHVyZXMuYyBNYWtlZmlsZS8sL14kL2NcCi0ie299ImFyY2h1cmVzLmMubyBcXE9wdGlvbi1mICJ7c30iYXJjaHVyZXMuYyBNYWtlZmlsZVwKLQl7Q0N9IEBEQVNIX0NfRkxBR0Age0FMTF9DRkxBR1N9IHtUREVGQVVMVFN9ICJ7c30iYXJjaHVyZXMuYyAtbyAie299ImFyY2h1cmVzLmMubwotCi0jIFJlbW92ZSB0aGUgLmggcmVidWlsZGluZyBydWxlcywgd2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBkb2Mgc3ViZGlyLAotIyBvciBhIHdheSB0byBidWlsZCB0aGUgcHJvdG90eXBlLWhhY2tpbmcgdG9vbCB0aGF0J3MgaW4gaXQuCi0vXiJ7c3JjZGlyfSJiZmQtaW4yLmggXFxPcHRpb24tZiAvLC9eJC9kCi0vXiJ7c3JjZGlyfSJsaWJiZmQuaCBcXE9wdGlvbi1mIC8sL14kL2QKLS9eIntzcmNkaXJ9ImxpYmNvZmYuaCBcXE9wdGlvbi1mIC8sL14kL2QKZGlmZiAtLWdpdCBhL2JmZC9uZXRic2QtY29yZS5jIGIvYmZkL25ldGJzZC1jb3JlLmMKaW5kZXggOTY0ODhhYy4uZmNhODAxMyAxMDA2NDQKLS0tIGEvYmZkL25ldGJzZC1jb3JlLmMKKysrIGIvYmZkL25ldGJzZC1jb3JlLmMKQEAgLTQsNDEgKzQsNDYgQEAKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgV3JpdHRlbiBieSBQYXVsIEtyYW5lbmJ1cmcsIEVVUgogCi1UaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCiAKLVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLShhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogCi1UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi1NRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi1HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIAotWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi1Gb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCiAKICNpbmNsdWRlICJiZmQuaCIKICNpbmNsdWRlICJzeXNkZXAuaCIKICNpbmNsdWRlICJsaWJiZmQuaCIKLSNpbmNsdWRlICJsaWJhb3V0LmgiICAgICAgICAgICAvKiBCRkQgYS5vdXQgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzICovCisjaW5jbHVkZSAibGliYW91dC5oIiAgICAgICAgICAgLyogQkZEIGEub3V0IGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4gICovCiAKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICNpbmNsdWRlIDxzeXMvZGlyLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8c3lzL2NvcmUuaD4KIAotLyoKLSAqIEZJWE1FOiBPbiBOZXRCU0Qvc3BhcmMgQ09SRV9GUFVfT0ZGU0VUIHNob3VsZCBiZSAoc2l6ZW9mIChzdHJ1Y3QgdHJhcGZyYW1lKSkKLSAqLworLyogVGhlIG1hY2hpbmUgSUQgZm9yIE9wZW5CU0Qvc3BhcmM2NCBhbmQgb2xkZXIgdmVyc2lvbnMgb2YKKyAgIE5ldEJTRC9zcGFyYzY0IG92ZXJsYXBzIHdpdGggTV9NSVBTMS4gICovCisjZGVmaW5lIE1fU1BBUkM2NF9PUEVOQlNECU1fTUlQUzEKIAotc3RydWN0IG5ldGJzZF9jb3JlX3N0cnVjdCB7Ci0Jc3RydWN0IGNvcmUgY29yZTsKKy8qIE9mZnNldCBvZiBTdGFja0dob3N0IGNvb2tpZSB3aXRoaW4gYHN0cnVjdCBtZF9jb3JlZHVtcCcgb24KKyAgIE9wZW5CU0Qvc3BhcmMuICAqLworI2RlZmluZSBDT1JFX1dDT09LSUVfT0ZGU0VUCTM0NAorCitzdHJ1Y3QgbmV0YnNkX2NvcmVfc3RydWN0Cit7CisgIHN0cnVjdCBjb3JlIGNvcmU7CiB9ICpyYXdwdHI7CiAKLS8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucy4gICovCiAKIHN0YXRpYyBjb25zdCBiZmRfdGFyZ2V0ICpuZXRic2RfY29yZV9maWxlX3AKICAgUEFSQU1TICgoYmZkICphYmZkKSk7CkBAIC02MCw3ICs2NSw3IEBACiB7CiAgIGludCBpLCB2YWw7CiAgIGZpbGVfcHRyIG9mZnNldDsKLSAgYXNlY3Rpb24gKmFzZWN0LCAqYXNlY3QyOworICBhc2VjdGlvbiAqYXNlY3Q7CiAgIHN0cnVjdCBjb3JlIGNvcmU7CiAgIHN0cnVjdCBjb3Jlc2VnIGNvcmVzZWc7CiAgIGJmZF9zaXplX3R5cGUgYW10ID0gc2l6ZW9mIGNvcmU7CkBAIC02OCw3ICs3Myw3IEBACiAgIHZhbCA9IGJmZF9icmVhZCAoKHZvaWQgKikgJmNvcmUsIGFtdCwgYWJmZCk7CiAgIGlmICh2YWwgIT0gc2l6ZW9mIGNvcmUpCiAgICAgewotICAgICAgLyogVG9vIHNtYWxsIHRvIGJlIGEgY29yZSBmaWxlICovCisgICAgICAvKiBUb28gc21hbGwgdG8gYmUgYSBjb3JlIGZpbGUuICAqLwogICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX3dyb25nX2Zvcm1hdCk7CiAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xMzksMjcgKzE0NCw0OSBAQAogICAgICAgYXNlY3QtPmZpbGVwb3MgPSBvZmZzZXQ7CiAgICAgICBhc2VjdC0+YWxpZ25tZW50X3Bvd2VyID0gMjsKIAotICAgICAgb2Zmc2V0ICs9IGNvcmVzZWcuY19zaXplOwotCi0jaWZkZWYgQ09SRV9GUFVfT0ZGU0VUCi0gICAgICBzd2l0Y2ggKENPUkVfR0VURkxBRyAoY29yZXNlZykpCisgICAgICBpZiAoQ09SRV9HRVRNSUQgKGNvcmUpID09IE1fU1BBUkNfTkVUQlNECisJICAmJiBDT1JFX0dFVEZMQUcgKGNvcmVzZWcpID09IENPUkVfQ1BVCisJICAmJiBjb3Jlc2VnLmNfc2l6ZSA+IENPUkVfV0NPT0tJRV9PRkZTRVQpCiAJewotCWNhc2UgQ09SRV9DUFU6Ci0JICAvKiBIYWNraXNoLi4uICAqLwotCSAgYXNlY3QtPl9yYXdfc2l6ZSA9IENPUkVfRlBVX09GRlNFVDsKLQkgIGFzZWN0MiA9IGJmZF9tYWtlX3NlY3Rpb25fYW55d2F5IChhYmZkLCAiLnJlZzIiKTsKLQkgIGlmIChhc2VjdDIgPT0gTlVMTCkKKwkgIC8qIFRydW5jYXRlIHRoZSAucmVnIHNlY3Rpb24uICAqLworCSAgYXNlY3QtPl9yYXdfc2l6ZSA9IENPUkVfV0NPT0tJRV9PRkZTRVQ7CisKKwkgIC8qIEFuZCBjcmVhdGUgdGhlIC53Y29va2llIHNlY3Rpb24uICAqLworCSAgYXNlY3QgPSBiZmRfbWFrZV9zZWN0aW9uX2FueXdheSAoYWJmZCwgIi53Y29va2llIik7CisJICBpZiAoYXNlY3QgPT0gTlVMTCkKIAkgICAgZ290byBwdW50OwotCSAgYXNlY3QyLT5fcmF3X3NpemUgPSBjb3Jlc2VnLmNfc2l6ZSAtIENPUkVfRlBVX09GRlNFVDsKLQkgIGFzZWN0Mi0+dm1hID0gMDsKLQkgIGFzZWN0Mi0+ZmlsZXBvcyA9IGFzZWN0LT5maWxlcG9zICsgQ09SRV9GUFVfT0ZGU0VUOwotCSAgYXNlY3QyLT5hbGlnbm1lbnRfcG93ZXIgPSAyOwotCSAgYXNlY3QyLT5mbGFncyA9IFNFQ19BTExPQyArIFNFQ19IQVNfQ09OVEVOVFM7Ci0JICBicmVhazsKKworCSAgYXNlY3QtPmZsYWdzID0gU0VDX0FMTE9DICsgU0VDX0hBU19DT05URU5UUzsKKwkgIGFzZWN0LT5fcmF3X3NpemUgPSA0OworCSAgYXNlY3QtPnZtYSA9IDA7CisJICBhc2VjdC0+ZmlsZXBvcyA9IG9mZnNldCArIENPUkVfV0NPT0tJRV9PRkZTRVQ7CisJICBhc2VjdC0+YWxpZ25tZW50X3Bvd2VyID0gMjsKIAl9Ci0jZW5kaWYKKworICAgICAgb2Zmc2V0ICs9IGNvcmVzZWcuY19zaXplOwogICAgIH0KIAorIC8qIFNldCBhcmNoaXRlY3R1cmUgZnJvbSBtYWNoaW5lIElELiAgKi8KKyBzd2l0Y2ggKENPUkVfR0VUTUlEIChjb3JlKSkKKyAgIHsKKyAgIGNhc2UgTV9YODZfNjRfTkVUQlNEOgorICAgICBiZmRfZGVmYXVsdF9zZXRfYXJjaF9tYWNoIChhYmZkLCBiZmRfYXJjaF9pMzg2LCBiZmRfbWFjaF94ODZfNjQpOworICAgICBicmVhazsKKworICAgY2FzZSBNXzM4Nl9ORVRCU0Q6CisgICAgIGJmZF9kZWZhdWx0X3NldF9hcmNoX21hY2ggKGFiZmQsIGJmZF9hcmNoX2kzODYsIGJmZF9tYWNoX2kzODZfaTM4Nik7CisgICAgIGJyZWFrOworCisgICBjYXNlIE1fU1BBUkNfTkVUQlNEOgorICAgICBiZmRfZGVmYXVsdF9zZXRfYXJjaF9tYWNoIChhYmZkLCBiZmRfYXJjaF9zcGFyYywgYmZkX21hY2hfc3BhcmMpOworICAgICBicmVhazsKKworICAgY2FzZSBNX1NQQVJDNjRfTkVUQlNEOgorICAgY2FzZSBNX1NQQVJDNjRfT1BFTkJTRDoKKyAgICAgYmZkX2RlZmF1bHRfc2V0X2FyY2hfbWFjaCAoYWJmZCwgYmZkX2FyY2hfc3BhcmMsIGJmZF9tYWNoX3NwYXJjX3Y5KTsKKyAgICAgYnJlYWs7CisgICB9CisgCiAgIC8qIE9LLCB3ZSBiZWxpZXZlIHlvdS4gIFlvdSdyZSBhIGNvcmUgZmlsZSAoc3VyZSwgc3VyZSkuICAqLwogICByZXR1cm4gYWJmZC0+eHZlYzsKIApAQCAtMTkxLDE0ICsyMTgsMTcgQEAKICAgICAgYmZkICpjb3JlX2JmZCBBVFRSSUJVVEVfVU5VU0VEOwogICAgICBiZmQgKmV4ZWNfYmZkIEFUVFJJQlVURV9VTlVTRUQ7CiB7Ci0gIHJldHVybiBUUlVFOwkJLyogRklYTUUsIFdlIGhhdmUgbm8gd2F5IG9mIHRlbGxpbmcgYXQgdGhpcyBwb2ludCAqLworICAvKiBGSVhNRSwgV2UgaGF2ZSBubyB3YXkgb2YgdGVsbGluZyBhdCB0aGlzIHBvaW50LiAgKi8KKyAgcmV0dXJuIFRSVUU7CiB9CiAMCiAvKiBJZiBzb21lYm9keSBjYWxscyBhbnkgYnl0ZS1zd2FwcGluZyByb3V0aW5lcywgc2hvb3QgdGhlbS4gICovCisKIHN0YXRpYyB2b2lkCiBzd2FwX2Fib3J0ICgpCiB7Ci0gIGFib3J0ICgpOyAvKiBUaGlzIHdheSBkb2Vzbid0IHJlcXVpcmUgYW55IGRlY2xhcmF0aW9uIGZvciBBTlNJIHRvIGZ1Y2sgdXAgKi8KKyAvKiBUaGlzIHdheSBkb2Vzbid0IHJlcXVpcmUgYW55IGRlY2xhcmF0aW9uIGZvciBBTlNJIHRvIGZ1Y2sgdXAuICAqLworICBhYm9ydCAoKTsKIH0KIAogI2RlZmluZQlOT19HRVQgKChiZmRfdm1hICgqKSAoY29uc3Qgdm9pZCAqKSkgc3dhcF9hYm9ydCkKQEAgLTIxMiwxNSArMjQyLDE1IEBACiAgIHsKICAgICAibmV0YnNkLWNvcmUiLAogICAgIGJmZF90YXJnZXRfdW5rbm93bl9mbGF2b3VyLAotICAgIEJGRF9FTkRJQU5fVU5LTk9XTiwJCS8qIHRhcmdldCBieXRlIG9yZGVyICovCi0gICAgQkZEX0VORElBTl9VTktOT1dOLAkJLyogdGFyZ2V0IGhlYWRlcnMgYnl0ZSBvcmRlciAqLwotICAgIChIQVNfUkVMT0MgfCBFWEVDX1AgfAkvKiBvYmplY3QgZmxhZ3MgKi8KKyAgICBCRkRfRU5ESUFOX1VOS05PV04sCQkvKiBUYXJnZXQgYnl0ZSBvcmRlci4gICovCisgICAgQkZEX0VORElBTl9VTktOT1dOLAkJLyogVGFyZ2V0IGhlYWRlcnMgYnl0ZSBvcmRlci4gICovCisgICAgKEhBU19SRUxPQyB8IEVYRUNfUCB8CS8qIE9iamVjdCBmbGFncy4gICovCiAgICAgIEhBU19MSU5FTk8gfCBIQVNfREVCVUcgfAogICAgICBIQVNfU1lNUyB8IEhBU19MT0NBTFMgfCBXUF9URVhUIHwgRF9QQUdFRCksCi0gICAgKFNFQ19IQVNfQ09OVEVOVFMgfCBTRUNfQUxMT0MgfCBTRUNfTE9BRCB8IFNFQ19SRUxPQyksIC8qIHNlY3Rpb24gZmxhZ3MgKi8KLSAgICAwLAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3ltYm9sIHByZWZpeCAqLwotICAgICcgJywJCQkJCQkgICAvKiBhcl9wYWRfY2hhciAqLwotICAgIDE2LAkJCQkJCQkgICAvKiBhcl9tYXhfbmFtZWxlbiAqLworICAgIChTRUNfSEFTX0NPTlRFTlRTIHwgU0VDX0FMTE9DIHwgU0VDX0xPQUQgfCBTRUNfUkVMT0MpLCAvKiBTZWN0aW9uIGZsYWdzLiAgKi8KKyAgICAwLAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3ltYm9sIHByZWZpeC4gICovCisgICAgJyAnLAkJCQkJCSAgIC8qIGFyX3BhZF9jaGFyLiAgKi8KKyAgICAxNiwJCQkJCQkJICAgLyogYXJfbWF4X25hbWVsZW4uICAqLwogICAgIE5PX0dFVDY0LCBOT19HRVRTNjQsIE5PX1BVVDY0LAkvKiA2NCBiaXQgZGF0YS4gICovCiAgICAgTk9fR0VULCBOT19HRVRTLCBOT19QVVQsCQkvKiAzMiBiaXQgZGF0YS4gICovCiAgICAgTk9fR0VULCBOT19HRVRTLCBOT19QVVQsCQkvKiAxNiBiaXQgZGF0YS4gICovCkBAIC0yMjgsMTcgKzI1OCwxNyBAQAogICAgIE5PX0dFVCwgTk9fR0VUUywgTk9fUFVULAkJLyogMzIgYml0IGhkcnMuICAqLwogICAgIE5PX0dFVCwgTk9fR0VUUywgTk9fUFVULAkJLyogMTYgYml0IGhkcnMuICAqLwogCi0gICAgewkJCQkvKiBiZmRfY2hlY2tfZm9ybWF0ICovCi0gICAgICBfYmZkX2R1bW15X3RhcmdldCwJCS8qIHVua25vd24gZm9ybWF0ICovCi0gICAgICBfYmZkX2R1bW15X3RhcmdldCwJCS8qIG9iamVjdCBmaWxlICovCi0gICAgICBfYmZkX2R1bW15X3RhcmdldCwJCS8qIGFyY2hpdmUgKi8KLSAgICAgIG5ldGJzZF9jb3JlX2ZpbGVfcAkJLyogYSBjb3JlIGZpbGUgKi8KKyAgICB7CQkJCQkvKiBiZmRfY2hlY2tfZm9ybWF0LiAgKi8KKyAgICAgIF9iZmRfZHVtbXlfdGFyZ2V0LAkJLyogVW5rbm93biBmb3JtYXQuICAqLworICAgICAgX2JmZF9kdW1teV90YXJnZXQsCQkvKiBPYmplY3QgZmlsZS4gICovCisgICAgICBfYmZkX2R1bW15X3RhcmdldCwJCS8qIEFyY2hpdmUuICAqLworICAgICAgbmV0YnNkX2NvcmVfZmlsZV9wCQkvKiBBIGNvcmUgZmlsZS4gICovCiAgICAgfSwKLSAgICB7CQkJCS8qIGJmZF9zZXRfZm9ybWF0ICovCisgICAgewkJCQkJLyogYmZkX3NldF9mb3JtYXQuICAqLwogICAgICAgYmZkX2ZhbHNlLCBiZmRfZmFsc2UsCiAgICAgICBiZmRfZmFsc2UsIGJmZF9mYWxzZQogICAgIH0sCi0gICAgewkJCQkvKiBiZmRfd3JpdGVfY29udGVudHMgKi8KKyAgICB7CQkJCQkvKiBiZmRfd3JpdGVfY29udGVudHMuICAqLwogICAgICAgYmZkX2ZhbHNlLCBiZmRfZmFsc2UsCiAgICAgICBiZmRfZmFsc2UsIGJmZF9mYWxzZQogICAgIH0sCkBAIC0yNTUsNSArMjg1LDUgQEAKIAogICAgIE5VTEwsCiAKLSAgICAoUFRSKSAwCQkJLyogYmFja2VuZF9kYXRhICovCisgICAgKFBUUikgMAkJCSAgICAgICAgLyogQmFja2VuZF9kYXRhLiAgKi8KICAgfTsKZGlmZiAtLWdpdCBhL2JmZC9wZVhYaWdlbi5jIGIvYmZkL3BlWFhpZ2VuLmMKaW5kZXggNTU5ZjJhMi4uNTk4YWE3YyAxMDA2NDQKLS0tIGEvYmZkL3BlWFhpZ2VuLmMKKysrIGIvYmZkL3BlWFhpZ2VuLmMKQEAgLTk5MiwxNCArOTkyLDEzIEBACiAgICAgICAgZGVmYXVsdCBXUF9URVhUIGZpbGUgZmxhZyBoYXMgYmVlbiBjbGVhcmVkLiAgV1BfVEVYVCBtYXkgYmUgY2xlYXJlZAogICAgICAgIGJ5IGxkIC0tZW5hYmxlLWF1dG8taW1wb3J0IChpZiBhdXRvLWltcG9ydCBpcyBhY3R1YWxseSBuZWVkZWQpLAogICAgICAgIGJ5IGxkIC0tb21hZ2ljLCBvciBieSBvYmNvcHkgLS13cml0YWJsZS10ZXh0LiAgKi8KLSAgCi0gICAgaWYgKHN0cmNtcCAoc2NuaGRyX2ludC0+c19uYW1lLCAiLnRleHQiKSAKLQl8fCAoYmZkX2dldF9maWxlX2ZsYWdzIChhYmZkKSAmIFdQX1RFWFQpKQotICAgICAgZmxhZ3MgJj0gfklNQUdFX1NDTl9NRU1fV1JJVEU7CiAKICAgICBmb3IgKHAgPSBrbm93bl9zZWN0aW9uczsgcC0+c2VjdGlvbl9uYW1lOyBwKyspCiAgICAgICBpZiAoc3RyY21wIChzY25oZHJfaW50LT5zX25hbWUsIHAtPnNlY3Rpb25fbmFtZSkgPT0gMCkKIAl7CisJICBpZiAoc3RyY21wIChzY25oZHJfaW50LT5zX25hbWUsICIudGV4dCIpCisJICAgICAgfHwgKGJmZF9nZXRfZmlsZV9mbGFncyAoYWJmZCkgJiBXUF9URVhUKSkKKwkgICAgZmxhZ3MgJj0gfklNQUdFX1NDTl9NRU1fV1JJVEU7CiAJICBmbGFncyB8PSBwLT5tdXN0X2hhdmU7CiAJICBicmVhazsKIAl9CmRpZmYgLS1naXQgYS9iZmQvcG8vU1JDLVBPVEZJTEVTLmluIGIvYmZkL3BvL1NSQy1QT1RGSUxFUy5pbgppbmRleCAwNzc0MmRkLi5kMjk1OTNkIDEwMDY0NAotLS0gYS9iZmQvcG8vU1JDLVBPVEZJTEVTLmluCisrKyBiL2JmZC9wby9TUkMtUE9URklMRVMuaW4KQEAgLTE4NSw3ICsxODUsNiBAQAogZWxmLWVoLWZyYW1lLmMKIGVsZi1ocHBhLmgKIGVsZmxpbmsuYwotZWxmbGluay5oCiBlbGYtbTEwMjAwLmMKIGVsZi1tMTAzMDAuYwogZWxmbjMyLW1pcHMuYwpkaWZmIC0tZ2l0IGEvYmZkL3BvL2JmZC5wb3QgYi9iZmQvcG8vYmZkLnBvdAppbmRleCA1ZDRmMjM0Li5kZDM3ZTE1IDEwMDY0NAotLS0gYS9iZmQvcG8vYmZkLnBvdAorKysgYi9iZmQvcG8vYmZkLnBvdApAQCAtMSwxMiArMSwxNCBAQAogIyBTT01FIERFU0NSSVBUSVZFIFRJVExFLgotIyBDb3B5cmlnaHQgKEMpIFlFQVIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgWUVBUiBUSEUgUEFDS0FHRSdTIENPUFlSSUdIVCBIT0xERVIKKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIFBBQ0tBR0UgcGFja2FnZS4KICMgRklSU1QgQVVUSE9SIDxFTUFJTEBBRERSRVNTPiwgWUVBUi4KICMKICMsIGZ1enp5CiBtc2dpZCAiIgogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBQQUNLQUdFIFZFUlNJT05cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwMy0wNy0xNyAxNDo1MiswMTAwXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA0LTAzLTI3IDE1OjM0KzEwMzBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiBZRUFSLU1PLURBIEhPOk1JK1pPTkVcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEZVTEwgTkFNRSA8RU1BSUxAQUREUkVTUz5cbiIKICJMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPlxuIgpAQCAtMzQsMjIgKzM2LDIyIEBACiBtc2dpZCAiJXM6IEJhZCByZWxvY2F0aW9uIHJlY29yZCBpbXBvcnRlZDogJWQiCiBtc2dzdHIgIiIKIAotIzogYW91dHguaDoxMjk1IGFvdXR4Lmg6MTcxNgorIzogYW91dHguaDoxMjk2IGFvdXR4Lmg6MTcxNwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2FuIG5vdCByZXByZXNlbnQgc2VjdGlvbiBgJXMnIGluIGEub3V0IG9iamVjdCBmaWxlIGZvcm1hdCIKIG1zZ3N0ciAiIgogCi0jOiBhb3V0eC5oOjE2ODIKKyM6IGFvdXR4Lmg6MTY4MwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJXM6IGNhbiBub3QgcmVwcmVzZW50IHNlY3Rpb24gZm9yIHN5bWJvbCBgJXMnIGluIGEub3V0IG9iamVjdCBmaWxlIGZvcm1hdCIKIG1zZ3N0ciAiIgogCi0jOiBhb3V0eC5oOjE2ODQKKyM6IGFvdXR4Lmg6MTY4NQogbXNnaWQgIip1bmtub3duKiIKIG1zZ3N0ciAiIgogCi0jOiBhb3V0eC5oOjM3NzYKKyM6IGFvdXR4Lmg6Mzc3NwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogcmVsb2NhdGFibGUgbGluayBmcm9tICVzIHRvICVzIG5vdCBzdXBwb3J0ZWQiCiBtc2dzdHIgIiIKQEAgLTE3MSwxNSArMTczLDE2IEBACiBtc2dzdHIgIiIKIAogIzogYmZkd2luLmM6MjA1CisjLCBjLWZvcm1hdAogbXNnaWQgIm5vdCBtYXBwaW5nOiBlbnYgdmFyIG5vdCBzZXRcbiIKIG1zZ3N0ciAiIgogCi0jOiBiaW5hcnkuYzozMDYKKyM6IGJpbmFyeS5jOjMwOAogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nOiBXcml0aW5nIHNlY3Rpb24gYCVzJyB0byBodWdlIChpZSBuZWdhdGl2ZSkgZmlsZSBvZmZzZXQgMHglbHguIgogbXNnc3RyICIiCiAKLSM6IGNvZmYtcnM2MDAwLmM6MzYxNiBjb2ZmNjQtcnM2MDAwLmM6MjEwOQorIzogY29mZjY0LXJzNjAwMC5jOjIxMDggY29mZi1yczYwMDAuYzozNjE1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBzeW1ib2wgYCVzJyBoYXMgdW5yZWNvZ25pemVkIHNtY2xhcyAlZCIKIG1zZ3N0ciAiIgpAQCAtMjEyLDE2OSArMjE1LDE4MSBAQAogbXNnaWQgInVzaW5nIG11bHRpcGxlIGdwIHZhbHVlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmLWFybS5jOjEwNjYgZWxmMzItYXJtLmg6Mjk0CisjOiBjb2ZmLWFybS5jOjEwNjYgZWxmMzItYXJtLmg6NDY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB1bmFibGUgdG8gZmluZCBUSFVNQiBnbHVlICclcycgZm9yIGAlcyciCiBtc2dzdHIgIiIKIAotIzogY29mZi1hcm0uYzoxMDk2IGVsZjMyLWFybS5oOjMyOQorIzogY29mZi1hcm0uYzoxMDk2IGVsZjMyLWFybS5oOjUwMAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogdW5hYmxlIHRvIGZpbmQgQVJNIGdsdWUgJyVzJyBmb3IgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmLWFybS5jOjEzOTQgY29mZi1hcm0uYzoxNDg5IGVsZjMyLWFybS5oOjg5MiBlbGYzMi1hcm0uaDo5OTkKKyM6IGNvZmYtYXJtLmM6MTQwMCBjb2ZmLWFybS5jOjE0OTUgZWxmMzItYXJtLmg6MTA2MyBlbGYzMi1hcm0uaDoxMTcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzKCVzKTogd2FybmluZzogaW50ZXJ3b3JraW5nIG5vdCBlbmFibGVkLiIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmLWFybS5jOjEzOTggZWxmMzItYXJtLmg6MTAwMgorIzogY29mZi1hcm0uYzoxNDA0IGVsZjMyLWFybS5oOjExNzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBmaXJzdCBvY2N1cnJlbmNlOiAlczogYXJtIGNhbGwgdG8gdGh1bWIiCiBtc2dzdHIgIiIKIAotIzogY29mZi1hcm0uYzoxNDkzIGVsZjMyLWFybS5oOjg5NQorIzogY29mZi1hcm0uYzoxNDk5IGVsZjMyLWFybS5oOjEwNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBmaXJzdCBvY2N1cnJlbmNlOiAlczogdGh1bWIgY2FsbCB0byBhcm0iCiBtc2dzdHIgIiIKIAotIzogY29mZi1hcm0uYzoxNDk2CisjOiBjb2ZmLWFybS5jOjE1MDIKIG1zZ2lkICIgIGNvbnNpZGVyIHJlbGlua2luZyB3aXRoIC0tc3VwcG9ydC1vbGQtY29kZSBlbmFibGVkIgogbXNnc3RyICIiCiAKLSM6IGNvZmYtYXJtLmM6MTc4OCBjb2ZmLXRpYzgwLmM6Njg3IGNvZmZsaW5rLmM6MzAzOAorIzogY29mZi1hcm0uYzoxNzk3IGNvZmZsaW5rLmM6Mjk4NyBjb2ZmLXRpYzgwLmM6Njg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBiYWQgcmVsb2MgYWRkcmVzcyAweCVseCBpbiBzZWN0aW9uIGAlcyciCiBtc2dzdHIgIiIKIAotIzogY29mZi1hcm0uYzoyMTMyCisjOiBjb2ZmLWFybS5jOjIxNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGlsbGVnYWwgc3ltYm9sIGluZGV4IGluIHJlbG9jOiAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmLWFybS5jOjIyNjUKKyM6IGNvZmYtYXJtLmM6MjI3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJFUlJPUjogJXMgaXMgY29tcGlsZWQgZm9yIEFQQ1MtJWQsIHdoZXJlYXMgJXMgaXMgY29tcGlsZWQgZm9yIEFQQ1MtJWQiCiBtc2dzdHIgIiIKIAotIzogY29mZi1hcm0uYzoyMjgwIGVsZjMyLWFybS5oOjIzMjgKKyM6IGNvZmYtYXJtLmM6MjI4OSBlbGYzMi1hcm0uaDoyNDgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJFUlJPUjogJXMgcGFzc2VzIGZsb2F0cyBpbiBmbG9hdCByZWdpc3RlcnMsIHdoZXJlYXMgJXMgcGFzc2VzIHRoZW0gaW4gIgogImludGVnZXIgcmVnaXN0ZXJzIgogbXNnc3RyICIiCiAKLSM6IGNvZmYtYXJtLmM6MjI4MyBlbGYzMi1hcm0uaDoyMzMzCisjOiBjb2ZmLWFybS5jOjIyOTIgZWxmMzItYXJtLmg6MjQ4NwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRVJST1I6ICVzIHBhc3NlcyBmbG9hdHMgaW4gaW50ZWdlciByZWdpc3RlcnMsIHdoZXJlYXMgJXMgcGFzc2VzIHRoZW0gaW4gIgogImZsb2F0IHJlZ2lzdGVycyIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmLWFybS5jOjIyOTgKKyM6IGNvZmYtYXJtLmM6MjMwNwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRVJST1I6ICVzIGlzIGNvbXBpbGVkIGFzIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGUsIHdoZXJlYXMgdGFyZ2V0ICVzIGlzICIKICJhYnNvbHV0ZSBwb3NpdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmLWFybS5jOjIzMDEKKyM6IGNvZmYtYXJtLmM6MjMxMAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRVJST1I6ICVzIGlzIGNvbXBpbGVkIGFzIGFic29sdXRlIHBvc2l0aW9uIGNvZGUsIHdoZXJlYXMgdGFyZ2V0ICVzIGlzICIKICJwb3NpdGlvbiBpbmRlcGVuZGVudCIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmLWFybS5jOjIzMzAgZWxmMzItYXJtLmg6MjQwNQorIzogY29mZi1hcm0uYzoyMzM5IGVsZjMyLWFybS5oOjI1NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiV2FybmluZzogJXMgc3VwcG9ydHMgaW50ZXJ3b3JraW5nLCB3aGVyZWFzICVzIGRvZXMgbm90IgogbXNnc3RyICIiCiAKLSM6IGNvZmYtYXJtLmM6MjMzMyBlbGYzMi1hcm0uaDoyNDEyCisjOiBjb2ZmLWFybS5jOjIzNDIgZWxmMzItYXJtLmg6MjU2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nOiAlcyBkb2VzIG5vdCBzdXBwb3J0IGludGVyd29ya2luZywgd2hlcmVhcyAlcyBkb2VzIgogbXNnc3RyICIiCiAKLSM6IGNvZmYtYXJtLmM6MjM2MAorIzogY29mZi1hcm0uYzoyMzY5CiAjLCBjLWZvcm1hdAogbXNnaWQgInByaXZhdGUgZmxhZ3MgPSAleDoiCiBtc2dzdHIgIiIKIAotIzogY29mZi1hcm0uYzoyMzY4IGVsZjMyLWFybS5oOjI0NjcKKyM6IGNvZmYtYXJtLmM6MjM3NyBlbGYzMi1hcm0uaDoyNjIxCisjLCBjLWZvcm1hdAogbXNnaWQgIiBbZmxvYXRzIHBhc3NlZCBpbiBmbG9hdCByZWdpc3RlcnNdIgogbXNnc3RyICIiCiAKLSM6IGNvZmYtYXJtLmM6MjM3MAorIzogY29mZi1hcm0uYzoyMzc5CisjLCBjLWZvcm1hdAogbXNnaWQgIiBbZmxvYXRzIHBhc3NlZCBpbiBpbnRlZ2VyIHJlZ2lzdGVyc10iCiBtc2dzdHIgIiIKIAotIzogY29mZi1hcm0uYzoyMzczIGVsZjMyLWFybS5oOjI0NzAKKyM6IGNvZmYtYXJtLmM6MjM4MiBlbGYzMi1hcm0uaDoyNjI0CisjLCBjLWZvcm1hdAogbXNnaWQgIiBbcG9zaXRpb24gaW5kZXBlbmRlbnRdIgogbXNnc3RyICIiCiAKLSM6IGNvZmYtYXJtLmM6MjM3NQorIzogY29mZi1hcm0uYzoyMzg0CisjLCBjLWZvcm1hdAogbXNnaWQgIiBbYWJzb2x1dGUgcG9zaXRpb25dIgogbXNnc3RyICIiCiAKLSM6IGNvZmYtYXJtLmM6MjM3OQorIzogY29mZi1hcm0uYzoyMzg4CisjLCBjLWZvcm1hdAogbXNnaWQgIiBbaW50ZXJ3b3JraW5nIGZsYWcgbm90IGluaXRpYWxpc2VkXSIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmLWFybS5jOjIzODEKKyM6IGNvZmYtYXJtLmM6MjM5MAorIywgYy1mb3JtYXQKIG1zZ2lkICIgW2ludGVyd29ya2luZyBzdXBwb3J0ZWRdIgogbXNnc3RyICIiCiAKLSM6IGNvZmYtYXJtLmM6MjM4MworIzogY29mZi1hcm0uYzoyMzkyCisjLCBjLWZvcm1hdAogbXNnaWQgIiBbaW50ZXJ3b3JraW5nIG5vdCBzdXBwb3J0ZWRdIgogbXNnc3RyICIiCiAKLSM6IGNvZmYtYXJtLmM6MjQzMSBlbGYzMi1hcm0uaDoyMTUwCisjOiBjb2ZmLWFybS5jOjI0NDAgZWxmMzItYXJtLmg6MjI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiV2FybmluZzogTm90IHNldHRpbmcgaW50ZXJ3b3JraW5nIGZsYWcgb2YgJXMgc2luY2UgaXQgaGFzIGFscmVhZHkgYmVlbiAiCiAic3BlY2lmaWVkIGFzIG5vbi1pbnRlcndvcmtpbmciCiBtc2dzdHIgIiIKIAotIzogY29mZi1hcm0uYzoyNDM1IGVsZjMyLWFybS5oOjIxNTQKKyM6IGNvZmYtYXJtLmM6MjQ0NCBlbGYzMi1hcm0uaDoyMjkwCiAjLCBjLWZvcm1hdAogbXNnaWQgIldhcm5pbmc6IENsZWFyaW5nIHRoZSBpbnRlcndvcmtpbmcgZmxhZyBvZiAlcyBkdWUgdG8gb3V0c2lkZSByZXF1ZXN0IgogbXNnc3RyICIiCiAKLSM6IGNvZmZjb2RlLmg6MTEwOAorIzogY29mZmNvZGUuaDoxMTEyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzICglcyk6IFNlY3Rpb24gZmxhZyAlcyAoMHgleCkgaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmY29kZS5oOjIyMTQKKyM6IGNvZmZjb2RlLmg6MjIyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbml6ZWQgVEkgQ09GRiB0YXJnZXQgaWQgJzB4JXgnIgogbXNnc3RyICIiCiAKLSM6IGNvZmZjb2RlLmg6NDQzOQorIzogY29mZmNvZGUuaDo0NDI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3YXJuaW5nOiBsaW5lIG51bWJlciB0YWJsZSByZWFkIGZhaWxlZCIKK21zZ3N0ciAiIgorCisjOiBjb2ZmY29kZS5oOjQ0NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHdhcm5pbmc6IGlsbGVnYWwgc3ltYm9sIGluZGV4ICVsZCBpbiBsaW5lIG51bWJlcnMiCiBtc2dzdHIgIiIKIAotIzogY29mZmNvZGUuaDo0NDUzCisjOiBjb2ZmY29kZS5oOjQ0NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHdhcm5pbmc6IGR1cGxpY2F0ZSBsaW5lIG51bWJlciBpbmZvcm1hdGlvbiBmb3IgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmY29kZS5oOjQ4MDcKKyM6IGNvZmZjb2RlLmg6NDgzMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogVW5yZWNvZ25pemVkIHN0b3JhZ2UgY2xhc3MgJWQgZm9yICVzIHN5bWJvbCBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvZmZjb2RlLmg6NDk0MAorIzogY29mZmNvZGUuaDo0OTY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIndhcm5pbmc6ICVzOiBsb2NhbCBzeW1ib2wgYCVzJyBoYXMgbm8gc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmLXRpYzR4LmM6MjE4IGNvZmYtdGljNTR4LmM6MzczIGNvZmZjb2RlLmg6NTA0NworIzogY29mZmNvZGUuaDo1MDcxIGNvZmYtaTg2MC5jOjYxMCBjb2ZmLXRpYzR4LmM6MjE4IGNvZmYtdGljNTR4LmM6MzY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB3YXJuaW5nOiBpbGxlZ2FsIHN5bWJvbCBpbmRleCAlbGQgaW4gcmVsb2NzIgogbXNnc3RyICIiCiAKLSM6IGNvZmZjb2RlLmg6NTA4NQorIzogY29mZmNvZGUuaDo1MTA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBpbGxlZ2FsIHJlbG9jYXRpb24gdHlwZSAlZCBhdCBhZGRyZXNzIDB4JWx4IgogbXNnc3RyICIiCkBAIC0zODQsNDAgKzM5OSw0NSBAQAogbXNnaWQgIiVzOiBiYWQgc3RyaW5nIHRhYmxlIHNpemUgJWx1IgogbXNnc3RyICIiCiAKLSM6IGNvZmYtaDgzMDAuYzoxMDQ3CisjOiBjb2ZmLWg4MzAwLmM6MTEyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgaGFuZGxlIFJfTUVNX0lORElSRUNUIHJlbG9jIHdoZW4gdXNpbmcgJXMgb3V0cHV0IgogbXNnc3RyICIiCiAKKyM6IGNvZmYtaTg2MC5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICJSZWxvY2F0aW9uIGAlcycgbm90IHlldCBpbXBsZW1lbnRlZFxuIgorbXNnc3RyICIiCisKICM6IGNvZmYtaTk2MC5jOjEzNyBjb2ZmLWk5NjAuYzo0ODYKIG1zZ2lkICJ1bmNlcnRhaW4gY2FsbGluZyBjb252ZW50aW9uIGZvciBub24tQ09GRiBzeW1ib2wiCiBtc2dzdHIgIiIKIAotIzogY29mZmxpbmsuYzo1MzggZWxmbGluay5oOjEyNzYKKyM6IGNvZmZsaW5rLmM6NTA2IGVsZmxpbmsuYzozNjY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIldhcm5pbmc6IHR5cGUgb2Ygc3ltYm9sIGAlcycgY2hhbmdlZCBmcm9tICVkIHRvICVkIGluICVzIgogbXNnc3RyICIiCiAKLSM6IGNvZmZsaW5rLmM6MjMyOAorIzogY29mZmxpbmsuYzoyMjkzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiByZWxvY3MgaW4gc2VjdGlvbiBgJXMnLCBidXQgaXQgaGFzIG5vIGNvbnRlbnRzIgogbXNnc3RyICIiCiAKLSM6IGNvZmZsaW5rLmM6MjY3MSBjb2Zmc3dhcC5oOjg5MAorIzogY29mZmxpbmsuYzoyNjI5IGNvZmZzd2FwLmg6ODkwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiAlczogcmVsb2Mgb3ZlcmZsb3c6IDB4JWx4ID4gMHhmZmZmIgogbXNnc3RyICIiCiAKLSM6IGNvZmZsaW5rLmM6MjY4MCBjb2Zmc3dhcC5oOjg3NgorIzogY29mZmxpbmsuYzoyNjM4IGNvZmZzd2FwLmg6ODc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB3YXJuaW5nOiAlczogbGluZSBudW1iZXIgb3ZlcmZsb3c6IDB4JWx4ID4gMHhmZmZmIgogbXNnc3RyICIiCiAKLSM6IGNvZmYtbTY4ay5jOjQ4MiBjb2ZmLW1pcHMuYzoyMzk0IGVsZjMyLW02OGsuYzoyMTkzIGVsZjMyLW1pcHMuYzoxNzgzCisjOiBjb2ZmLW02OGsuYzo0ODIgY29mZi1taXBzLmM6MjM5NCBlbGYzMi1tNjhrLmM6MjE0NSBlbGYzMi1taXBzLmM6MTQwNQogbXNnaWQgInVuc3VwcG9ydGVkIHJlbG9jIHR5cGUiCiBtc2dzdHIgIiIKIAotIzogY29mZi1taXBzLmM6ODM5IGVsZjMyLW1pcHMuYzoxMDg4IGVsZjY0LW1pcHMuYzoxNTkwIGVsZm4zMi1taXBzLmM6MTU1NAorIzogY29mZi1taXBzLmM6ODM5IGVsZjMyLW1pcHMuYzo3OTUgZWxmNjQtbWlwcy5jOjE0OTAgZWxmbjMyLW1pcHMuYzoxMzAxCiBtc2dpZCAiR1AgcmVsYXRpdmUgcmVsb2NhdGlvbiB3aGVuIF9ncCBub3QgZGVmaW5lZCIKIG1zZ3N0ciAiIgogCkBAIC00MzEsMTcgKzQ1MSwxNyBAQAogbXNnaWQgInJlbG9jIG5vdCBwcm9wZXJseSBhbGlnbmVkIgogbXNnc3RyICIiCiAKLSM6IGNvZmYtcnM2MDAwLmM6Mjc5MAorIzogY29mZi1yczYwMDAuYzoyNzg5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB1bnN1cHBvcnRlZCByZWxvY2F0aW9uIHR5cGUgMHglMDJ4IgogbXNnc3RyICIiCiAKLSM6IGNvZmYtcnM2MDAwLmM6Mjg4MworIzogY29mZi1yczYwMDAuYzoyODgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBUT0MgcmVsb2MgYXQgMHgleCB0byBzeW1ib2wgYCVzJyB3aXRoIG5vIFRPQyBlbnRyeSIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmLXRpYzR4LmM6MTcwIGNvZmYtdGljNTR4LmM6Mjg4IGNvZmYtdGljODAuYzo0NTAKKyM6IGNvZmYtdGljNHguYzoxNzAgY29mZi10aWM1NHguYzoyODEgY29mZi10aWM4MC5jOjQ1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbml6ZWQgcmVsb2MgdHlwZSAweCV4IgogbXNnc3RyICIiCkBAIC00NjEsNzIgKzQ4MSw3MiBAQAogbXNnaWQgIndhcm5pbmc6IHVuYWJsZSB0byB1cGRhdGUgY29udGVudHMgb2YgJXMgc2VjdGlvbiBpbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBkd2FyZjIuYzozODAKKyM6IGR3YXJmMi5jOjI4OQogbXNnaWQgIkR3YXJmIEVycm9yOiBDYW4ndCBmaW5kIC5kZWJ1Z19zdHIgc2VjdGlvbi4iCiBtc2dzdHIgIiIKIAotIzogZHdhcmYyLmM6Mzk3CisjOiBkd2FyZjIuYzozMDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkR3YXJmIEVycm9yOiBEV19GT1JNX3N0cnAgb2Zmc2V0ICglbHUpIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAuZGVidWdfc3RyICIKICJzaXplICglbHUpLiIKIG1zZ3N0ciAiIgogCi0jOiBkd2FyZjIuYzo1NDEKKyM6IGR3YXJmMi5jOjQ0MQogbXNnaWQgIkR3YXJmIEVycm9yOiBDYW4ndCBmaW5kIC5kZWJ1Z19hYmJyZXYgc2VjdGlvbi4iCiBtc2dzdHIgIiIKIAotIzogZHdhcmYyLmM6NTU2CisjOiBkd2FyZjIuYzo0NTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkR3YXJmIEVycm9yOiBBYmJyZXYgb2Zmc2V0ICglbHUpIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAuZGVidWdfYWJicmV2IHNpemUgIgogIiglbHUpLiIKIG1zZ3N0ciAiIgogCi0jOiBkd2FyZjIuYzo3NTYKKyM6IGR3YXJmMi5jOjY1NAogIywgYy1mb3JtYXQKIG1zZ2lkICJEd2FyZiBFcnJvcjogSW52YWxpZCBvciB1bmhhbmRsZWQgRk9STSB2YWx1ZTogJXUuIgogbXNnc3RyICIiCiAKLSM6IGR3YXJmMi5jOjkzMworIzogZHdhcmYyLmM6ODI3CiBtc2dpZCAiRHdhcmYgRXJyb3I6IG1hbmdsZWQgbGluZSBudW1iZXIgc2VjdGlvbiAoYmFkIGZpbGUgbnVtYmVyKS4iCiBtc2dzdHIgIiIKIAotIzogZHdhcmYyLmM6MTAzMgorIzogZHdhcmYyLmM6OTIwCiBtc2dpZCAiRHdhcmYgRXJyb3I6IENhbid0IGZpbmQgLmRlYnVnX2xpbmUgc2VjdGlvbi4iCiBtc2dzdHIgIiIKIAotIzogZHdhcmYyLmM6MTA0OQorIzogZHdhcmYyLmM6OTM3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJEd2FyZiBFcnJvcjogTGluZSBvZmZzZXQgKCVsdSkgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIC5kZWJ1Z19saW5lIHNpemUgKCUiCiAibHUpLiIKIG1zZ3N0ciAiIgogCi0jOiBkd2FyZjIuYzoxMjU1CisjOiBkd2FyZjIuYzoxMTQyCiBtc2dpZCAiRHdhcmYgRXJyb3I6IG1hbmdsZWQgbGluZSBudW1iZXIgc2VjdGlvbi4iCiBtc2dzdHIgIiIKIAotIzogZHdhcmYyLmM6MTQ3MCBkd2FyZjIuYzoxNjIwCisjOiBkd2FyZjIuYzoxMzUyIGR3YXJmMi5jOjE1MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRHdhcmYgRXJyb3I6IENvdWxkIG5vdCBmaW5kIGFiYnJldiBudW1iZXIgJXUuIgogbXNnc3RyICIiCiAKLSM6IGR3YXJmMi5jOjE1ODEKKyM6IGR3YXJmMi5jOjE0NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkR3YXJmIEVycm9yOiBmb3VuZCBkd2FyZiB2ZXJzaW9uICcldScsIHRoaXMgcmVhZGVyIG9ubHkgaGFuZGxlcyB2ZXJzaW9uIDIgIgogImluZm9ybWF0aW9uLiIKIG1zZ3N0ciAiIgogCi0jOiBkd2FyZjIuYzoxNTg4CisjOiBkd2FyZjIuYzoxNDY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJEd2FyZiBFcnJvcjogZm91bmQgYWRkcmVzcyBzaXplICcldScsIHRoaXMgcmVhZGVyIGNhbiBub3QgaGFuZGxlIHNpemVzICIKICJncmVhdGVyIHRoYW4gJyV1Jy4iCiBtc2dzdHIgIiIKIAotIzogZHdhcmYyLmM6MTYxMQorIzogZHdhcmYyLmM6MTQ5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJEd2FyZiBFcnJvcjogQmFkIGFiYnJldiBudW1iZXI6ICV1LiIKIG1zZ3N0ciAiIgpAQCAtNTkyLDMyMyArNjEyLDQwNCBAQAogIiAgICAgIFR5cGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWFybS5oOjEyMjgKKyM6IGVsZjMyLWFybS5oOjE0MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IFdhcm5pbmc6IEFybSBCTFggaW5zdHJ1Y3Rpb24gdGFyZ2V0cyBBcm0gZnVuY3Rpb24gJyVzJy4iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItYXJtLmg6MTQyNAorIzogZWxmMzItYXJtLmg6MTYxMgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogV2FybmluZzogVGh1bWIgQkxYIGluc3RydWN0aW9uIHRhcmdldHMgdGh1bWIgZnVuY3Rpb24gJyVzJy4iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItYXJtLmg6MTkxOCBlbGYzMi1zaC5jOjQ3MDYgZWxmNjQtc2g2NC5jOjE2MTMKKyM6IGVsZjMyLWFybS5oOjIwODAgZWxmMzItc2guYzo0ODA4IGVsZjY0LXNoNjQuYzoxNTk2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzKCVzKzB4JWx4KTogJXMgcmVsb2NhdGlvbiBhZ2FpbnN0IFNFQ19NRVJHRSBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWFybS5oOjIwMTIKKyM6IGVsZjMyLWFybS5oOjIxNzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiVzOiB3YXJuaW5nOiB1bnJlc29sdmFibGUgcmVsb2NhdGlvbiAlZCBhZ2FpbnN0IHN5bWJvbCBgJXMnIGZyb20gJXMgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYtbTEwMjAwLmM6NDQyIGVsZi1tMTAzMDAuYzoxNjk1IGVsZjMyLWFybS5oOjIwODggZWxmMzItYXZyLmM6ODEyCi0jOiBlbGYzMi1jcmlzLmM6MTM5MCBlbGYzMi1kMTB2LmM6NDgyIGVsZjMyLWZyMzAuYzo2MzQgZWxmMzItZnJ2LmM6ODE1Ci0jOiBlbGYzMi1oODMwMC5jOjUwOSBlbGYzMi1pODYwLmM6MTAyOCBlbGYzMi1pcDJrLmM6MTU4NiBlbGYzMi1pcTIwMDAuYzo2OTkKLSM6IGVsZjMyLW0zMnIuYzoxMjgzIGVsZjMyLW02OGhjMXguYzoxMzA1IGVsZjMyLW1zcDQzMC5jOjUxMAotIzogZWxmMzItb3BlbnJpc2MuYzo0MzYgZWxmMzItdjg1MC5jOjE3NzcgZWxmMzIteHN0b3JteTE2LmM6OTc2Ci0jOiBlbGY2NC1tbWl4LmM6MTMzMgorIzogZWxmMzItYXJtLmg6MjIyNCBlbGYzMi1hdnIuYzo3OTEgZWxmMzItY3Jpcy5jOjEzNzYgZWxmMzItZDEwdi5jOjU2MworIzogZWxmMzItZnIzMC5jOjU5OSBlbGYzMi1mcnYuYzoyNDk5IGVsZjMyLWg4MzAwLmM6NDkzIGVsZjMyLWk4NjAuYzoxMTk2CisjOiBlbGYzMi1pcDJrLmM6MTU2OCBlbGYzMi1pcTIwMDAuYzo2NjYgZWxmMzItbTMyci5jOjMxOTEgZWxmMzItbTY4aGMxeC5jOjExOTAKKyM6IGVsZjMyLW1zcDQzMC5jOjQ4OSBlbGYzMi1vcGVucmlzYy5jOjQxNSBlbGYzMi12ODUwLmM6MTc0NgorIzogZWxmMzIteHN0b3JteTE2LmM6OTU0IGVsZjY0LW1taXguYzoxNTE4IGVsZi1tMTAyMDAuYzo0MjYgZWxmLW0xMDMwMC5jOjE2NzYKIG1zZ2lkICJpbnRlcm5hbCBlcnJvcjogb3V0IG9mIHJhbmdlIGVycm9yIgogbXNnc3RyICIiCiAKLSM6IGVsZi1tMTAyMDAuYzo0NDYgZWxmLW0xMDMwMC5jOjE2OTkgZWxmMzItYXJtLmg6MjA5MiBlbGYzMi1hdnIuYzo4MTYKLSM6IGVsZjMyLWNyaXMuYzoxMzk0IGVsZjMyLWQxMHYuYzo0ODYgZWxmMzItZnIzMC5jOjYzOCBlbGYzMi1mcnYuYzo4MTkKLSM6IGVsZjMyLWg4MzAwLmM6NTEzIGVsZjMyLWk4NjAuYzoxMDMyIGVsZjMyLWlxMjAwMC5jOjcwMyBlbGYzMi1tMzJyLmM6MTI4NwotIzogZWxmMzItbTY4aGMxeC5jOjEzMDkgZWxmMzItbXNwNDMwLmM6NTE0IGVsZjMyLW9wZW5yaXNjLmM6NDQwCi0jOiBlbGYzMi12ODUwLmM6MTc4MSBlbGYzMi14c3Rvcm15MTYuYzo5ODAgZWxmNjQtbW1peC5jOjEzMzYgZWxmeHgtbWlwcy5jOjY0NTIKKyM6IGVsZjMyLWFybS5oOjIyMjggZWxmMzItYXZyLmM6Nzk1IGVsZjMyLWNyaXMuYzoxMzgwIGVsZjMyLWQxMHYuYzo1NjcKKyM6IGVsZjMyLWZyMzAuYzo2MDMgZWxmMzItZnJ2LmM6MjUwMyBlbGYzMi1oODMwMC5jOjQ5NyBlbGYzMi1pODYwLmM6MTIwMAorIzogZWxmMzItaXEyMDAwLmM6NjcwIGVsZjMyLW0zMnIuYzozMTk1IGVsZjMyLW02OGhjMXguYzoxMTk0CisjOiBlbGYzMi1tc3A0MzAuYzo0OTMgZWxmMzItb3BlbnJpc2MuYzo0MTkgZWxmMzItdjg1MC5jOjE3NTAKKyM6IGVsZjMyLXhzdG9ybXkxNi5jOjk1OCBlbGY2NC1tbWl4LmM6MTUyMiBlbGYtbTEwMjAwLmM6NDMwIGVsZi1tMTAzMDAuYzoxNjgwCisjOiBlbGZ4eC1taXBzLmM6NjQ1OQogbXNnaWQgImludGVybmFsIGVycm9yOiB1bnN1cHBvcnRlZCByZWxvY2F0aW9uIGVycm9yIgogbXNnc3RyICIiCiAKLSM6IGVsZi1tMTAyMDAuYzo0NTAgZWxmLW0xMDMwMC5jOjE3MDMgZWxmMzItYXJtLmg6MjA5NiBlbGYzMi1kMTB2LmM6NDkwCi0jOiBlbGYzMi1oODMwMC5jOjUxNyBlbGYzMi1tMzJyLmM6MTI5MSBlbGYzMi1tNjhoYzF4LmM6MTMxMworIzogZWxmMzItYXJtLmg6MjIzMiBlbGYzMi1kMTB2LmM6NTcxIGVsZjMyLWg4MzAwLmM6NTAxIGVsZjMyLW0zMnIuYzozMTk5CisjOiBlbGYzMi1tNjhoYzF4LmM6MTE5OCBlbGYtbTEwMjAwLmM6NDM0IGVsZi1tMTAzMDAuYzoxNjg0CiBtc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGRhbmdlcm91cyBlcnJvciIKIG1zZ3N0ciAiIgogCi0jOiBlbGYtbTEwMjAwLmM6NDU0IGVsZi1tMTAzMDAuYzoxNzA3IGVsZjMyLWFybS5oOjIxMDAgZWxmMzItYXZyLmM6ODI0Ci0jOiBlbGYzMi1jcmlzLmM6MTQwMiBlbGYzMi1kMTB2LmM6NDk0IGVsZjMyLWZyMzAuYzo2NDYgZWxmMzItZnJ2LmM6ODI3Ci0jOiBlbGYzMi1oODMwMC5jOjUyMSBlbGYzMi1pODYwLmM6MTA0MCBlbGYzMi1pcDJrLmM6MTYwMSBlbGYzMi1pcTIwMDAuYzo3MTEKLSM6IGVsZjMyLW0zMnIuYzoxMjk1IGVsZjMyLW02OGhjMXguYzoxMzE3IGVsZjMyLW1zcDQzMC5jOjUyMgotIzogZWxmMzItb3BlbnJpc2MuYzo0NDggZWxmMzItdjg1MC5jOjE4MDEgZWxmMzIteHN0b3JteTE2LmM6OTg4Ci0jOiBlbGY2NC1tbWl4LmM6MTM0NAorIzogZWxmMzItYXJtLmg6MjIzNiBlbGYzMi1hdnIuYzo4MDMgZWxmMzItY3Jpcy5jOjEzODggZWxmMzItZDEwdi5jOjU3NQorIzogZWxmMzItZnIzMC5jOjYxMSBlbGYzMi1mcnYuYzoyNTExIGVsZjMyLWg4MzAwLmM6NTA1IGVsZjMyLWk4NjAuYzoxMjA4CisjOiBlbGYzMi1pcDJrLmM6MTU4MyBlbGYzMi1pcTIwMDAuYzo2NzggZWxmMzItbTMyci5jOjMyMDMgZWxmMzItbTY4aGMxeC5jOjEyMDIKKyM6IGVsZjMyLW1zcDQzMC5jOjUwMSBlbGYzMi1vcGVucmlzYy5jOjQyNyBlbGYzMi12ODUwLmM6MTc3MAorIzogZWxmMzIteHN0b3JteTE2LmM6OTY2IGVsZjY0LW1taXguYzoxNTMwIGVsZi1tMTAyMDAuYzo0MzggZWxmLW0xMDMwMC5jOjE2ODgKIG1zZ2lkICJpbnRlcm5hbCBlcnJvcjogdW5rbm93biBlcnJvciIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1hcm0uaDoyMjAyCisjOiBlbGYzMi1hcm0uaDoyMzM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJXYXJuaW5nOiBDbGVhcmluZyB0aGUgaW50ZXJ3b3JraW5nIGZsYWcgb2YgJXMgYmVjYXVzZSBub24taW50ZXJ3b3JraW5nIGNvZGUgIgogImluICVzIGhhcyBiZWVuIGxpbmtlZCB3aXRoIGl0IgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWFybS5oOjIzMDIKKyM6IGVsZjMyLWFybS5oOjI0NTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkVSUk9SOiAlcyBpcyBjb21waWxlZCBmb3IgRUFCSSB2ZXJzaW9uICVkLCB3aGVyZWFzICVzIGlzIGNvbXBpbGVkIGZvciAiCiAidmVyc2lvbiAlZCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1hcm0uaDoyMzE2CisjOiBlbGYzMi1hcm0uaDoyNDcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkVSUk9SOiAlcyBpcyBjb21waWxlZCBmb3IgQVBDUy0lZCwgd2hlcmVhcyB0YXJnZXQgJXMgdXNlcyBBUENTLSVkIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWFybS5oOjIzNDQKKyM6IGVsZjMyLWFybS5oOjI0OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRVJST1I6ICVzIHVzZXMgVkZQIGluc3RydWN0aW9ucywgd2hlcmVhcyAlcyBkb2VzIG5vdCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1hcm0uaDoyMzQ5CisjOiBlbGYzMi1hcm0uaDoyNTAzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkVSUk9SOiAlcyB1c2VzIEZQQSBpbnN0cnVjdGlvbnMsIHdoZXJlYXMgJXMgZG9lcyBub3QiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItYXJtLmg6MjM2MCBlbGYzMi1hcm0uaDoyMzY1CisjOiBlbGYzMi1hcm0uaDoyNTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVSUk9SOiAlcyB1c2VzIE1hdmVyaWNrIGluc3RydWN0aW9ucywgd2hlcmVhcyAlcyBkb2VzIG5vdCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1hcm0uaDoyMzg1CisjOiBlbGYzMi1hcm0uaDoyNTE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVSUk9SOiAlcyBkb2VzIG5vdCB1c2UgTWF2ZXJpY2sgaW5zdHJ1Y3Rpb25zLCB3aGVyZWFzICVzIGRvZXMiCittc2dzdHIgIiIKKworIzogZWxmMzItYXJtLmg6MjUzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJFUlJPUjogJXMgdXNlcyBzb2Z0d2FyZSBGUCwgd2hlcmVhcyAlcyB1c2VzIGhhcmR3YXJlIEZQIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWFybS5oOjIzOTAKKyM6IGVsZjMyLWFybS5oOjI1NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRVJST1I6ICVzIHVzZXMgaGFyZHdhcmUgRlAsIHdoZXJlYXMgJXMgdXNlcyBzb2Z0d2FyZSBGUCIKIG1zZ3N0ciAiIgogCiAjLiBJZ25vcmUgaW5pdCBmbGFnIC0gaXQgbWF5IG5vdCBiZSBzZXQsIGRlc3BpdGUgdGhlIGZsYWdzIGZpZWxkCiAjLiBjb250YWluaW5nIHZhbGlkIGRhdGEuCi0jOiBlbGYzMi1hcm0uaDoyNDQzIGVsZjMyLWNyaXMuYzoyOTc1IGVsZjMyLW02OGhjMXguYzoxNDU5IGVsZjMyLW02OGsuYzozOTcKLSM6IGVsZjMyLXZheC5jOjU0NiBlbGZ4eC1taXBzLmM6OTI0MAorIy4gSWdub3JlIGluaXQgZmxhZyAtIGl0IG1heSBub3QgYmUgc2V0LCBkZXNwaXRlIHRoZSBmbGFncyBmaWVsZCBjb250YWluaW5nIHZhbGlkIGRhdGEuCisjOiBlbGYzMi1hcm0uaDoyNTk3IGVsZjMyLWNyaXMuYzoyOTgwIGVsZjMyLW02OGhjMXguYzoxMzM4IGVsZjMyLW02OGsuYzozOTcKKyM6IGVsZjMyLXZheC5jOjU0NiBlbGZ4eC1taXBzLmM6OTE2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJwcml2YXRlIGZsYWdzID0gJWx4OiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1hcm0uaDoyNDUyCisjOiBlbGYzMi1hcm0uaDoyNjA2CisjLCBjLWZvcm1hdAogbXNnaWQgIiBbaW50ZXJ3b3JraW5nIGVuYWJsZWRdIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWFybS5oOjI0NjAKKyM6IGVsZjMyLWFybS5oOjI2MTQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFtWRlAgZmxvYXQgZm9ybWF0XSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1hcm0uaDoyNDYyCisjOiBlbGYzMi1hcm0uaDoyNjE2CisjLCBjLWZvcm1hdAogbXNnaWQgIiBbTWF2ZXJpY2sgZmxvYXQgZm9ybWF0XSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1hcm0uaDoyNDY0CisjOiBlbGYzMi1hcm0uaDoyNjE4CisjLCBjLWZvcm1hdAogbXNnaWQgIiBbRlBBIGZsb2F0IGZvcm1hdF0iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItYXJtLmg6MjQ3MworIzogZWxmMzItYXJtLmg6MjYyNworIywgYy1mb3JtYXQKIG1zZ2lkICIgW25ldyBBQkldIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWFybS5oOjI0NzYKKyM6IGVsZjMyLWFybS5oOjI2MzAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFtvbGQgQUJJXSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1hcm0uaDoyNDc5CisjOiBlbGYzMi1hcm0uaDoyNjMzCisjLCBjLWZvcm1hdAogbXNnaWQgIiBbc29mdHdhcmUgRlBdIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWFybS5oOjI0ODgKKyM6IGVsZjMyLWFybS5oOjI2NDIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFtWZXJzaW9uMSBFQUJJXSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1hcm0uaDoyNDkxIGVsZjMyLWFybS5oOjI1MDIKKyM6IGVsZjMyLWFybS5oOjI2NDUgZWxmMzItYXJtLmg6MjY1NgorIywgYy1mb3JtYXQKIG1zZ2lkICIgW3NvcnRlZCBzeW1ib2wgdGFibGVdIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWFybS5oOjI0OTMgZWxmMzItYXJtLmg6MjUwNAorIzogZWxmMzItYXJtLmg6MjY0NyBlbGYzMi1hcm0uaDoyNjU4CisjLCBjLWZvcm1hdAogbXNnaWQgIiBbdW5zb3J0ZWQgc3ltYm9sIHRhYmxlXSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1hcm0uaDoyNDk5CisjOiBlbGYzMi1hcm0uaDoyNjUzCisjLCBjLWZvcm1hdAogbXNnaWQgIiBbVmVyc2lvbjIgRUFCSV0iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItYXJtLmg6MjUwNworIzogZWxmMzItYXJtLmg6MjY2MQorIywgYy1mb3JtYXQKIG1zZ2lkICIgW2R5bmFtaWMgc3ltYm9scyB1c2Ugc2VnbWVudCBpbmRleF0iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItYXJtLmg6MjUxMAorIzogZWxmMzItYXJtLmg6MjY2NAorIywgYy1mb3JtYXQKIG1zZ2lkICIgW21hcHBpbmcgc3ltYm9scyBwcmVjZWRlIG90aGVyc10iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItYXJtLmg6MjUxNworIzogZWxmMzItYXJtLmg6MjY3MQorIywgYy1mb3JtYXQKK21zZ2lkICIgW1ZlcnNpb24zIEVBQkldIgorbXNnc3RyICIiCisKKyM6IGVsZjMyLWFybS5oOjI2NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIFtCRThdIgorbXNnc3RyICIiCisKKyM6IGVsZjMyLWFybS5oOjI2NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIFtMRThdIgorbXNnc3RyICIiCisKKyM6IGVsZjMyLWFybS5oOjI2ODMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIDxFQUJJIHZlcnNpb24gdW5yZWNvZ25pc2VkPiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1hcm0uaDoyNTI0CisjOiBlbGYzMi1hcm0uaDoyNjkwCisjLCBjLWZvcm1hdAogbXNnaWQgIiBbcmVsb2NhdGFibGUgZXhlY3V0YWJsZV0iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItYXJtLmg6MjUyNworIzogZWxmMzItYXJtLmg6MjY5MworIywgYy1mb3JtYXQKIG1zZ2lkICIgW2hhcyBlbnRyeSBwb2ludF0iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItYXJtLmg6MjUzMgorIzogZWxmMzItYXJtLmg6MjY5OAorIywgYy1mb3JtYXQKIG1zZ2lkICI8VW5yZWNvZ25pc2VkIGZsYWcgYml0cyBzZXQ+IgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWF2ci5jOjgyMCBlbGYzMi1jcmlzLmM6MTM5OCBlbGYzMi1mcjMwLmM6NjQyIGVsZjMyLWZydi5jOjgyMwotIzogZWxmMzItaTg2MC5jOjEwMzYgZWxmMzItaXAyay5jOjE1OTcgZWxmMzItaXEyMDAwLmM6NzA3IGVsZjMyLW1zcDQzMC5jOjUxOAotIzogZWxmMzItb3BlbnJpc2MuYzo0NDQgZWxmMzItdjg1MC5jOjE3ODUgZWxmMzIteHN0b3JteTE2LmM6OTg0Ci0jOiBlbGY2NC1tbWl4LmM6MTM0MAorIzogZWxmMzItYXZyLmM6Nzk5IGVsZjMyLWNyaXMuYzoxMzg0IGVsZjMyLWZyMzAuYzo2MDcgZWxmMzItZnJ2LmM6MjUwNworIzogZWxmMzItaTg2MC5jOjEyMDQgZWxmMzItaXAyay5jOjE1NzkgZWxmMzItaXEyMDAwLmM6Njc0IGVsZjMyLW1zcDQzMC5jOjQ5NworIzogZWxmMzItb3BlbnJpc2MuYzo0MjMgZWxmMzItdjg1MC5jOjE3NTQgZWxmMzIteHN0b3JteTE2LmM6OTYyCisjOiBlbGY2NC1tbWl4LmM6MTUyNgogbXNnaWQgImludGVybmFsIGVycm9yOiBkYW5nZXJvdXMgcmVsb2NhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1jcmlzLmM6OTMxCisjOiBlbGYzMi1jcmlzLmM6OTIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB1bnJlc29sdmFibGUgcmVsb2NhdGlvbiAlcyBhZ2FpbnN0IHN5bWJvbCBgJXMnIGZyb20gJXMgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1jcmlzLmM6OTkzCisjOiBlbGYzMi1jcmlzLmM6OTc4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIlczogTm8gUExUIG5vciBHT1QgZm9yIHJlbG9jYXRpb24gJXMgYWdhaW5zdCBzeW1ib2wgYCVzJyBmcm9tICVzIHNlY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItY3Jpcy5jOjk5NiBlbGYzMi1jcmlzLmM6MTEyMgorIzogZWxmMzItY3Jpcy5jOjk4MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogTm8gUExUIGZvciByZWxvY2F0aW9uICVzIGFnYWluc3Qgc3ltYm9sIGAlcycgZnJvbSAlcyBzZWN0aW9uIgorbXNnc3RyICIiCisKKyM6IGVsZjMyLWNyaXMuYzo5ODQgZWxmMzItY3Jpcy5jOjExMTcKIG1zZ2lkICJbd2hvc2UgbmFtZSBpcyBsb3N0XSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1jcmlzLmM6MTExMQorIzogZWxmMzItY3Jpcy5jOjExMDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiVzOiByZWxvY2F0aW9uICVzIHdpdGggbm9uLXplcm8gYWRkZW5kICVkIGFnYWluc3QgbG9jYWwgc3ltYm9sIGZyb20gJXMgIgogInNlY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItY3Jpcy5jOjExMTgKKyM6IGVsZjMyLWNyaXMuYzoxMTEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIlczogcmVsb2NhdGlvbiAlcyB3aXRoIG5vbi16ZXJvIGFkZGVuZCAlZCBhZ2FpbnN0IHN5bWJvbCBgJXMnIGZyb20gJXMgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1jcmlzLmM6MTE0MworIzogZWxmMzItY3Jpcy5jOjExMzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiVzOiByZWxvY2F0aW9uICVzIGlzIG5vdCBhbGxvd2VkIGZvciBnbG9iYWwgc3ltYm9sOiBgJXMnIGZyb20gJXMgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1jcmlzLmM6MTE1OAorIzogZWxmMzItY3Jpcy5jOjExNTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHJlbG9jYXRpb24gJXMgaW4gc2VjdGlvbiAlcyB3aXRoIG5vIEdPVCBjcmVhdGVkIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWNyaXMuYzoxMjc3CisjOiBlbGYzMi1jcmlzLmM6MTI3MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogSW50ZXJuYWwgaW5jb25zaXN0ZW5jeTsgbm8gcmVsb2NhdGlvbiBzZWN0aW9uICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWNyaXMuYzoyNTAwCisjOiBlbGYzMi1jcmlzLmM6MjUwMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJXMsIHNlY3Rpb24gJXM6XG4iCiAiICByZWxvY2F0aW9uICVzIHNob3VsZCBub3QgYmUgdXNlZCBpbiBhIHNoYXJlZCBvYmplY3Q7IHJlY29tcGlsZSB3aXRoIC1mUElDIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWNyaXMuYzoyOTc4CisjOiBlbGYzMi1jcmlzLmM6Mjk4MworIywgYy1mb3JtYXQKIG1zZ2lkICIgW3N5bWJvbHMgaGF2ZSBhIF8gcHJlZml4XSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1jcmlzLmM6MzAxNworIzogZWxmMzItY3Jpcy5jOjMwMjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHVzZXMgXy1wcmVmaXhlZCBzeW1ib2xzLCBidXQgd3JpdGluZyBmaWxlIHdpdGggbm9uLXByZWZpeGVkIHN5bWJvbHMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItY3Jpcy5jOjMwMTgKKyM6IGVsZjMyLWNyaXMuYzozMDIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB1c2VzIG5vbi1wcmVmaXhlZCBzeW1ib2xzLCBidXQgd3JpdGluZyBmaWxlIHdpdGggXy1wcmVmaXhlZCBzeW1ib2xzIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWZydi5jOjEyMjMKKyM6IGVsZjMyLWZydi5jOjIwMTMKK21zZ2lkICJEeW5hbWljIHJlbG9jYXRpb24gcmVmZXJlbmNlcyBzeW1ib2wgd2l0aCBub256ZXJvIGFkZGVuZCIKK21zZ3N0ciAiIgorCisjOiBlbGYzMi1mcnYuYzoyMDI2Cittc2dpZCAicmVsb2NhdGlvbiByZWZlcmVuY2VzIHN5bWJvbCBub3QgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIgorbXNnc3RyICIiCisKKyM6IGVsZjMyLWZydi5jOjIxMjAKK21zZ2lkICJSX0ZSVl9GVU5DREVTQyByZWZlcmVuY2VzIGR5bmFtaWMgc3ltYm9sIHdpdGggbm9uemVybyBhZGRlbmQiCittc2dzdHIgIiIKKworIzogZWxmMzItZnJ2LmM6MjE1OCBlbGYzMi1mcnYuYzoyMjU3Cittc2dpZCAiY2Fubm90IGVtaXQgZml4dXBzIGluIHJlYWQtb25seSBzZWN0aW9uIgorbXNnc3RyICIiCisKKyM6IGVsZjMyLWZydi5jOjIxODEgZWxmMzItZnJ2LmM6MjI5NAorbXNnaWQgImNhbm5vdCBlbWl0IGR5bmFtaWMgcmVsb2NhdGlvbnMgaW4gcmVhZC1vbmx5IHNlY3Rpb24iCittc2dzdHIgIiIKKworIzogZWxmMzItZnJ2LmM6MjIxNgorbXNnaWQgIlJfRlJWX0ZVTkNERVNDX1ZBTFVFIHJlZmVyZW5jZXMgZHluYW1pYyBzeW1ib2wgd2l0aCBub256ZXJvIGFkZGVuZCIKK21zZ3N0ciAiIgorCisjOiBlbGYzMi1mcnYuYzoyMzg2Cittc2dpZCAicmVsb2NhdGlvbnMgYmV0d2VlbiBkaWZmZXJlbnQgc2VnbWVudHMgYXJlIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIiIKKworIzogZWxmMzItZnJ2LmM6MjM4NworbXNnaWQgIndhcm5pbmc6IHJlbG9jYXRpb24gcmVmZXJlbmNlcyBhIGRpZmZlcmVudCBzZWdtZW50IgorbXNnc3RyICIiCisKKyM6IGVsZjMyLWZydi5jOjQzOTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiVzOiBjb21waWxlZCB3aXRoICVzIGFuZCBsaW5rZWQgd2l0aCBtb2R1bGVzIHRoYXQgdXNlIG5vbi1waWMgcmVsb2NhdGlvbnMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItZnJ2LmM6MTI3MyBlbGYzMi1pcTIwMDAuYzo4OTUKKyM6IGVsZjMyLWZydi5jOjQ0NDMgZWxmMzItaXEyMDAwLmM6ODYyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjb21waWxlZCB3aXRoICVzIGFuZCBsaW5rZWQgd2l0aCBtb2R1bGVzIGNvbXBpbGVkIHdpdGggJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItZnJ2LmM6MTI4NQorIzogZWxmMzItZnJ2LmM6NDQ1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJXM6IHVzZXMgZGlmZmVyZW50IHVua25vd24gZV9mbGFncyAoMHglbHgpIGZpZWxkcyB0aGFuIHByZXZpb3VzIG1vZHVsZXMgKDB4JSIKICJseCkiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItZnJ2LmM6MTMyMSBlbGYzMi1pcTIwMDAuYzo5MzMKKyM6IGVsZjMyLWZydi5jOjQ0OTEgZWxmMzItaXEyMDAwLmM6OTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgInByaXZhdGUgZmxhZ3MgPSAweCVseDoiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItZ2VuLmM6ODMgZWxmNjQtZ2VuLmM6ODIKKyM6IGVsZjMyLWdlbi5jOjgzIGVsZjY0LWdlbi5jOjgzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBSZWxvY2F0aW9ucyBpbiBnZW5lcmljIEVMRiAoRU06ICVkKSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1ocHBhLmM6NjcyIGVsZjMyLW02OGhjMXguYzoxNzYgZWxmNjQtcHBjLmM6MzExOAorIzogZWxmMzItaHBwYS5jOjU0MiBlbGYzMi1tNjhoYzF4LmM6MTYxIGVsZjY0LXBwYy5jOjMxODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbm5vdCBjcmVhdGUgc3R1YiBlbnRyeSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1ocHBhLmM6OTU3IGVsZjMyLWhwcGEuYzozNTM4CisjOiBlbGYzMi1ocHBhLmM6Nzk1IGVsZjMyLWhwcGEuYzozMzE1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzKCVzKzB4JWx4KTogY2Fubm90IHJlYWNoICVzLCByZWNvbXBpbGUgd2l0aCAtZmZ1bmN0aW9uLXNlY3Rpb25zIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWhwcGEuYzoxMzQwIGVsZjY0LXg4Ni02NC5jOjY3MiBlbGY2NC14ODYtNjQuYzo3OTcKKyM6IGVsZjMyLWhwcGEuYzoxMTY3IGVsZjY0LXg4Ni02NC5jOjY2NSBlbGY2NC14ODYtNjQuYzo3OTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiVzOiByZWxvY2F0aW9uICVzIGNhbiBub3QgYmUgdXNlZCB3aGVuIG1ha2luZyBhIHNoYXJlZCBvYmplY3Q7IHJlY29tcGlsZSAiCiAid2l0aCAtZlBJQyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1ocHBhLmM6MTM2MAorIzogZWxmMzItaHBwYS5jOjExODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiVzOiByZWxvY2F0aW9uICVzIHNob3VsZCBub3QgYmUgdXNlZCB3aGVuIG1ha2luZyBhIHNoYXJlZCBvYmplY3Q7IHJlY29tcGlsZSAiCiAid2l0aCAtZlBJQyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1ocHBhLmM6MTU1MworIzogZWxmMzItaHBwYS5jOjEzNzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZpbmQgcmVsb2NhdGlvbiBzZWN0aW9uIGZvciAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1ocHBhLmM6MjgyOAorIzogZWxmMzItaHBwYS5jOjI1NzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGR1cGxpY2F0ZSBleHBvcnQgc3R1YiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1ocHBhLmM6MzQxNgorIzogZWxmMzItaHBwYS5jOjMxNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzKCVzKzB4JWx4KTogJXMgZml4dXAgZm9yIGluc24gMHgleCBpcyBub3Qgc3VwcG9ydGVkIGluIGEgbm9uLXNoYXJlZCBsaW5rIgorbXNnc3RyICIiCisKKyM6IGVsZjMyLWhwcGEuYzozMTkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzKCVzKzB4JWx4KTogZml4aW5nICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWhwcGEuYzo0MDM5CisjOiBlbGYzMi1ocHBhLmM6MzgxMAogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyglcysweCVseCk6IGNhbm5vdCBoYW5kbGUgJXMgZm9yICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWhwcGEuYzo0MzU3CisjOiBlbGYzMi1ocHBhLmM6NDEwMwogbXNnaWQgIi5nb3Qgc2VjdGlvbiBub3QgaW1tZWRpYXRlbHkgYWZ0ZXIgLnBsdCBzZWN0aW9uIgogbXNnc3RyICIiCiAKQEAgLTkxNywzMyArMTAxOCwzMyBAQAogbXNnaWQgIiVzOiBpbnZhbGlkIHJlbG9jYXRpb24gdHlwZSAlZCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1pMzg2LmM6ODQxIGVsZjMyLXMzOTAuYzo5OTAgZWxmMzItc3BhcmMuYzo4ODcgZWxmMzIteHRlbnNhLmM6NjM3Ci0jOiBlbGY2NC1zMzkwLmM6OTQzIGVsZjY0LXg4Ni02NC5jOjY1MAorIzogZWxmMzItaTM4Ni5jOjg2NCBlbGYzMi1zMzkwLmM6OTgzIGVsZjMyLXNwYXJjLmM6OTE2IGVsZjMyLXh0ZW5zYS5jOjY0MQorIzogZWxmNjQtczM5MC5jOjkzNiBlbGY2NC14ODYtNjQuYzo2NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGJhZCBzeW1ib2wgaW5kZXg6ICVkIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWkzODYuYzo5NDkgZWxmMzItczM5MC5jOjExNjggZWxmMzItc2guYzo2NDI2IGVsZjMyLXNwYXJjLmM6MTAxMQotIzogZWxmNjQtczM5MC5jOjExMjkKKyM6IGVsZjMyLWkzODYuYzo5NzIgZWxmMzItczM5MC5jOjExNjEgZWxmMzItc2guYzo2NTkwIGVsZjMyLXNwYXJjLmM6MTA0MAorIzogZWxmNjQtczM5MC5jOjExMjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGAlcycgYWNjZXNzZWQgYm90aCBhcyBub3JtYWwgYW5kIHRocmVhZCBsb2NhbCBzeW1ib2wiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItaTM4Ni5jOjEwNjQgZWxmMzItczM5MC5jOjEyNzkgZWxmNjQtcHBjLmM6MzkyOSBlbGY2NC1zMzkwLmM6MTI0MwotIzogZWxmNjQteDg2LTY0LmM6ODg2CisjOiBlbGYzMi1pMzg2LmM6MTA4OSBlbGYzMi1zMzkwLmM6MTI3MiBlbGY2NC1wcGMuYzo0MDM2IGVsZjY0LXMzOTAuYzoxMjM2CisjOiBlbGY2NC14ODYtNjQuYzo4NzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGJhZCByZWxvY2F0aW9uIHNlY3Rpb24gbmFtZSBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWkzODYuYzoyOTA4IGVsZjMyLW02OGsuYzoxNzU3IGVsZjMyLXMzOTAuYzozMDIyIGVsZjMyLXNwYXJjLmM6Mjg3OQotIzogZWxmMzIteHRlbnNhLmM6MjE5MyBlbGY2NC1zMzkwLmM6MzAxOCBlbGY2NC1zcGFyYy5jOjI2NjQKLSM6IGVsZjY0LXg4Ni02NC5jOjI0NTIKKyM6IGVsZjMyLWkzODYuYzoyODg5IGVsZjMyLW02OGsuYzoxNzA5IGVsZjMyLXMzOTAuYzoyOTk2IGVsZjMyLXNwYXJjLmM6Mjg1NworIzogZWxmMzIteHRlbnNhLmM6MjEwNiBlbGY2NC1zMzkwLmM6Mjk5MiBlbGY2NC1zcGFyYy5jOjI2MjAKKyM6IGVsZjY0LXg4Ni02NC5jOjIzODkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMoJXMrMHglbHgpOiB1bnJlc29sdmFibGUgcmVsb2NhdGlvbiBhZ2FpbnN0IHN5bWJvbCBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWkzODYuYzoyOTQ3IGVsZjMyLW02OGsuYzoxNzk2IGVsZjMyLXMzOTAuYzozMDcyIGVsZjY0LXMzOTAuYzozMDY4Ci0jOiBlbGY2NC14ODYtNjQuYzoyNDkwCisjOiBlbGYzMi1pMzg2LmM6MjkyOCBlbGYzMi1tNjhrLmM6MTc0OCBlbGYzMi1zMzkwLmM6MzA0NiBlbGY2NC1zMzkwLmM6MzA0MgorIzogZWxmNjQteDg2LTY0LmM6MjQyNwogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyglcysweCVseCk6IHJlbG9jIGFnYWluc3QgYCVzJzogZXJyb3IgJWQiCiBtc2dzdHIgIiIKQEAgLTk2OCwxMzAgKzEwNjksMTU1IEBACiBtc2dzdHIgIiIKIAogIy4gT25seSBpZiBpdCdzIG5vdCBhbiB1bnJlc29sdmVkIHN5bWJvbC4KLSM6IGVsZjMyLWlwMmsuYzoxNTkzCisjOiBlbGYzMi1pcDJrLmM6MTU3NQogbXNnaWQgInVuc3VwcG9ydGVkIHJlbG9jYXRpb24gYmV0d2VlbiBkYXRhL2luc24gYWRkcmVzcyBzcGFjZXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItaXEyMDAwLmM6OTA3IGVsZjMyLW02OGhjMXguYzoxNDMxIGVsZjMyLXBwYy5jOjIxNzUgZWxmNjQtc3BhcmMuYzozMDcyCi0jOiBlbGZ4eC1taXBzLmM6OTE5NworIzogZWxmMzItaXEyMDAwLmM6ODc0IGVsZjMyLW02OGhjMXguYzoxMzEyIGVsZjMyLXBwYy5jOjIyOTMgZWxmNjQtc3BhcmMuYzozMDI4CisjOiBlbGZ4eC1taXBzLmM6OTEyOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogdXNlcyBkaWZmZXJlbnQgZV9mbGFncyAoMHglbHgpIGZpZWxkcyB0aGFuIHByZXZpb3VzIG1vZHVsZXMgKDB4JWx4KSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1tMzJyLmM6OTMwCisjOiBlbGYzMi1tMzJyLmM6MTQ4NwogbXNnaWQgIlNEQSByZWxvY2F0aW9uIHdoZW4gX1NEQV9CQVNFXyBub3QgZGVmaW5lZCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1pYTY0LmM6MzgxNyBlbGYzMi1tMzJyLmM6MTAxOCBlbGY2NC1hbHBoYS5jOjQyNzkgZWxmNjQtYWxwaGEuYzo0NDA3Ci0jOiBlbGY2NC1pYTY0LmM6MzgxNworIzogZWxmMzItbTMyci5jOjI1NjQgZWxmNjQtYWxwaGEuYzo0MTk5IGVsZjY0LWFscGhhLmM6NDMyNSBlbGYzMi1pYTY0LmM6MzkyMQorIzogZWxmNjQtaWE2NC5jOjM5MjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHVua25vd24gcmVsb2NhdGlvbiB0eXBlICVkIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLW0zMnIuYzoxMjI2CisjOiBlbGYzMi1tMzJyLmM6Mjc1MyBlbGY2NC1zaDY0LmM6MTY4OSBlbGYtaHBwYS5oOjE0MDYgZWxmLWhwcGEuaDoxNDMzCisjOiBlbGYtaHBwYS5oOjE0NDkgZWxmLW0xMDMwMC5jOjE2MzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiB3YXJuaW5nOiB1bnJlc29sdmFibGUgcmVsb2NhdGlvbiBhZ2FpbnN0IHN5bWJvbCBgJXMnIGZyb20gJXMgc2VjdGlvbiIKK21zZ3N0ciAiIgorCisjOiBlbGYzMi1tMzJyLmM6MzEyOAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogVGhlIHRhcmdldCAoJXMpIG9mIGFuICVzIHJlbG9jYXRpb24gaXMgaW4gdGhlIHdyb25nIHNlY3Rpb24gKCVzKSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1tMzJyLmM6MTk1MgorIzogZWxmMzItbTMyci5jOjQyMTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IEluc3RydWN0aW9uIHNldCBtaXNtYXRjaCB3aXRoIHByZXZpb3VzIG1vZHVsZXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItbTMyci5jOjE5NzUKKyM6IGVsZjMyLW0zMnIuYzo0MjM0CiAjLCBjLWZvcm1hdAogbXNnaWQgInByaXZhdGUgZmxhZ3MgPSAlbHgiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItbTMyci5jOjE5ODAKKyM6IGVsZjMyLW0zMnIuYzo0MjM5CisjLCBjLWZvcm1hdAogbXNnaWQgIjogbTMyciBpbnN0cnVjdGlvbnMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItbTMyci5jOjE5ODEKKyM6IGVsZjMyLW0zMnIuYzo0MjQwCisjLCBjLWZvcm1hdAogbXNnaWQgIjogbTMycnggaW5zdHJ1Y3Rpb25zIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLW02OGhjMXguYzoxMjE3CisjOiBlbGYzMi1tMzJyLmM6NDI0MQorIywgYy1mb3JtYXQKK21zZ2lkICI6IG0zMnIyIGluc3RydWN0aW9ucyIKK21zZ3N0ciAiIgorCisjOiBlbGYzMi1tNjhoYzF4LmM6MTEwMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUmVmZXJlbmNlIHRvIHRoZSBmYXIgc3ltYm9sIGAlcycgdXNpbmcgYSB3cm9uZyByZWxvY2F0aW9uIG1heSByZXN1bHQgaW4gIgogImluY29ycmVjdCBleGVjdXRpb24iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItbTY4aGMxeC5jOjEyNDAKKyM6IGVsZjMyLW02OGhjMXguYzoxMTI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJiYW5rZWQgYWRkcmVzcyBbJWx4OiUwNGx4XSAoJWx4KSBpcyBub3QgaW4gdGhlIHNhbWUgYmFuayBhcyBjdXJyZW50IGJhbmtlZCAiCiAiYWRkcmVzcyBbJWx4OiUwNGx4XSAoJWx4KSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1tNjhoYzF4LmM6MTI1OQorIzogZWxmMzItbTY4aGMxeC5jOjExNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogInJlZmVyZW5jZSB0byBhIGJhbmtlZCBhZGRyZXNzIFslbHg6JTA0bHhdIGluIHRoZSBub3JtYWwgYWRkcmVzcyBzcGFjZSBhdCAlIgogIjA0bHgiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItbTY4aGMxeC5jOjEzOTYKKyM6IGVsZjMyLW02OGhjMXguYzoxMjc3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIlczogbGlua2luZyBmaWxlcyBjb21waWxlZCBmb3IgMTYtYml0IGludGVnZXJzICgtbXNob3J0KSBhbmQgb3RoZXJzIGZvciAzMi0iCiAiYml0IGludGVnZXJzIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLW02OGhjMXguYzoxNDA0CisjOiBlbGYzMi1tNjhoYzF4LmM6MTI4NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJXM6IGxpbmtpbmcgZmlsZXMgY29tcGlsZWQgZm9yIDMyLWJpdCBkb3VibGUgKC1mc2hvcnQtZG91YmxlKSBhbmQgb3RoZXJzIGZvciAiCiAiNjQtYml0IGRvdWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1tNjhoYzF4LmM6MTQxNAorIzogZWxmMzItbTY4aGMxeC5jOjEyOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGxpbmtpbmcgZmlsZXMgY29tcGlsZWQgZm9yIEhDUzEyIHdpdGggb3RoZXJzIGNvbXBpbGVkIGZvciBIQzEyIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLW02OGhjMXguYzoxNDYyCisjOiBlbGYzMi1tNjhoYzF4LmM6MTM0MQorIywgYy1mb3JtYXQKIG1zZ2lkICJbYWJpPTMyLWJpdCBpbnQsICIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1tNjhoYzF4LmM6MTQ2NAorIzogZWxmMzItbTY4aGMxeC5jOjEzNDMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiW2FiaT0xNi1iaXQgaW50LCAiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItbTY4aGMxeC5jOjE0NjcKKyM6IGVsZjMyLW02OGhjMXguYzoxMzQ2CisjLCBjLWZvcm1hdAogbXNnaWQgIjY0LWJpdCBkb3VibGUsICIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1tNjhoYzF4LmM6MTQ2OQorIzogZWxmMzItbTY4aGMxeC5jOjEzNDgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiMzItYml0IGRvdWJsZSwgIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLW02OGhjMXguYzoxNDcyCisjOiBlbGYzMi1tNjhoYzF4LmM6MTM1MQorIywgYy1mb3JtYXQKIG1zZ2lkICJjcHU9SEMxMV0iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItbTY4aGMxeC5jOjE0NzQKKyM6IGVsZjMyLW02OGhjMXguYzoxMzUzCisjLCBjLWZvcm1hdAogbXNnaWQgImNwdT1IQ1MxMl0iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItbTY4aGMxeC5jOjE0NzYKKyM6IGVsZjMyLW02OGhjMXguYzoxMzU1CisjLCBjLWZvcm1hdAogbXNnaWQgImNwdT1IQzEyXSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1tNjhoYzF4LmM6MTQ3OQorIzogZWxmMzItbTY4aGMxeC5jOjEzNTgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFttZW1vcnk9YmFuay1tb2RlbF0iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItbTY4aGMxeC5jOjE0ODEKKyM6IGVsZjMyLW02OGhjMXguYzoxMzYwCisjLCBjLWZvcm1hdAogbXNnaWQgIiBbbWVtb3J5PWZsYXRdIgogbXNnc3RyICIiCiAKICM6IGVsZjMyLW02OGsuYzo0MDAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFtjcHUzMl0iCiBtc2dzdHIgIiIKIAogIzogZWxmMzItbTY4ay5jOjQwMworIywgYy1mb3JtYXQKIG1zZ2lkICIgW202ODAwMF0iCiBtc2dzdHIgIiIKIApAQCAtMTEwNSwyMzAgKzEyMzEsMjM5IEBACiBtc2dpZCAiJXM6IFVua25vd24gcmVsb2NhdGlvbiB0eXBlICVkXG4iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItbWlwcy5jOjExNzAgZWxmNjQtbWlwcy5jOjE3MTcgZWxmbjMyLW1pcHMuYzoxNjY0Ci1tc2dpZCAiMzJiaXRzIGdwIHJlbGF0aXZlIHJlbG9jYXRpb24gb2NjdXJzIGZvciBhbiBleHRlcm5hbCBzeW1ib2wiCi1tc2dzdHIgIiIKLQotIzogZWxmMzItbWlwcy5jOjEzMTQgZWxmNjQtbWlwcy5jOjE4MzAgZWxmbjMyLW1pcHMuYzoxNzgzCisjOiBlbGYzMi1taXBzLmM6OTY4IGVsZjY0LW1pcHMuYzoxNjkzIGVsZm4zMi1taXBzLmM6MTQ4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJMaW5raW5nIG1pcHMxNiBvYmplY3RzIGludG8gJXMgZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItcHBjLmM6MjA1NgorIzogZWxmMzItcHBjLmM6MjE3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJnZW5lcmljIGxpbmtlciBjYW4ndCBoYW5kbGUgJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItcHBjLmM6MjEzOAorIzogZWxmMzItcHBjLmM6MjI1NgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJXM6IGNvbXBpbGVkIHdpdGggLW1yZWxvY2F0YWJsZSBhbmQgbGlua2VkIHdpdGggbW9kdWxlcyBjb21waWxlZCBub3JtYWxseSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1wcGMuYzoyMTQ3CisjOiBlbGYzMi1wcGMuYzoyMjY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIlczogY29tcGlsZWQgbm9ybWFsbHkgYW5kIGxpbmtlZCB3aXRoIG1vZHVsZXMgY29tcGlsZWQgd2l0aCAtbXJlbG9jYXRhYmxlIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXBwYy5jOjM0MTMKKyM6IGVsZjMyLXBwYy5jOjM1MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHJlbG9jYXRpb24gJXMgY2Fubm90IGJlIHVzZWQgd2hlbiBtYWtpbmcgYSBzaGFyZWQgb2JqZWN0IgogbXNnc3RyICIiCiAKLSMuIEl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gaGF2ZSBhIHByb2NlZHVyZSBsaW5rYWdlCi0jLiB0YWJsZSBlbnRyeSBmb3IgYSBsb2NhbCBzeW1ib2wuCi0jOiBlbGYzMi1wcGMuYzozNjE5CisjOiBlbGYzMi1wcGMuYzozNzQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzKCVzKzB4JWx4KTogJXMgcmVsb2MgYWdhaW5zdCBsb2NhbCBzeW1ib2wiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItcHBjLmM6NDg2MiBlbGY2NC1wcGMuYzo3Nzg5CisjOiBlbGYzMi1wcGMuYzo0OTQ1IGVsZjY0LXBwYy5jOjgwMjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHVua25vd24gcmVsb2NhdGlvbiB0eXBlICVkIGZvciBzeW1ib2wgJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItcHBjLmM6NTExMworIzogZWxmMzItcHBjLmM6NTE5NgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyglcysweCVseCk6IG5vbi16ZXJvIGFkZGVuZCBvbiAlcyByZWxvYyBhZ2FpbnN0IGAlcyciCiBtc2dzdHIgIiIKIAotIzogZWxmMzItcHBjLmM6NTM5OSBlbGYzMi1wcGMuYzo1NDI1IGVsZjMyLXBwYy5jOjU0ODQKKyM6IGVsZjMyLXBwYy5jOjU1MDcgZWxmMzItcHBjLmM6NTUzMyBlbGYzMi1wcGMuYzo1NTkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIlczogdGhlIHRhcmdldCAoJXMpIG9mIGEgJXMgcmVsb2NhdGlvbiBpcyBpbiB0aGUgd3Jvbmcgb3V0cHV0IHNlY3Rpb24gKCVzKSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1wcGMuYzo1NTM5CisjOiBlbGYzMi1wcGMuYzo1NjQ3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiByZWxvY2F0aW9uICVzIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGZvciBzeW1ib2wgJXMuIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXBwYy5jOjU1OTQgZWxmNjQtcHBjLmM6ODQ2MQorIzogZWxmMzItcHBjLmM6NTcwMiBlbGY2NC1wcGMuYzo4Njk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzKCVzKzB4JWx4KTogdW5yZXNvbHZhYmxlICVzIHJlbG9jYXRpb24gYWdhaW5zdCBzeW1ib2wgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1wcGMuYzo1NjQ0IGVsZjY0LXBwYy5jOjg1MDcKKyM6IGVsZjMyLXBwYy5jOjU3NTIgZWxmNjQtcHBjLmM6ODc0MAogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyglcysweCVseCk6ICVzIHJlbG9jIGFnYWluc3QgYCVzJzogZXJyb3IgJWQiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItcHBjLmM6NTg4OAorIzogZWxmMzItcHBjLmM6NTk5NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3JydXB0IG9yIGVtcHR5ICVzIHNlY3Rpb24gaW4gJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItcHBjLmM6NTg5NQorIzogZWxmMzItcHBjLmM6NjAwMwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCBpbiAlcyBzZWN0aW9uIGZyb20gJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItcHBjLmM6NTkwMQorIzogZWxmMzItcHBjLmM6NjAwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3JydXB0ICVzIHNlY3Rpb24gaW4gJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItcHBjLmM6NTk0NAorIzogZWxmMzItcHBjLmM6NjA1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJ3YXJuaW5nOiB1bmFibGUgdG8gc2V0IHNpemUgb2YgJXMgc2VjdGlvbiBpbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1wcGMuYzo1OTk0CisjOiBlbGYzMi1wcGMuYzo2MTAyCiBtc2dpZCAiZmFpbGVkIHRvIGFsbG9jYXRlIHNwYWNlIGZvciBuZXcgQVBVaW5mbyBzZWN0aW9uLiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1wcGMuYzo2MDEzCisjOiBlbGYzMi1wcGMuYzo2MTIxCiBtc2dpZCAiZmFpbGVkIHRvIGNvbXB1dGUgbmV3IEFQVWluZm8gc2VjdGlvbi4iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItcHBjLmM6NjAxNgorIzogZWxmMzItcHBjLmM6NjEyNAogbXNnaWQgImZhaWxlZCB0byBpbnN0YWxsIG5ldyBBUFVpbmZvIHNlY3Rpb24uIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXMzOTAuYzoyMjU2IGVsZjY0LXMzOTAuYzoyMjI2CisjOiBlbGYzMi1zMzkwLmM6MjIzNCBlbGY2NC1zMzkwLmM6MjIwNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyglcysweCVseCk6IGludmFsaWQgaW5zdHJ1Y3Rpb24gZm9yIFRMUyByZWxvY2F0aW9uICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXNoNjQuYzoyMjEgZWxmNjQtc2g2NC5jOjI0MDcKKyM6IGVsZjMyLXNoNjQuYzoyMTUgZWxmNjQtc2g2NC5jOjIzODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNvbXBpbGVkIGFzIDMyLWJpdCBvYmplY3QgYW5kICVzIGlzIDY0LWJpdCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1zaDY0LmM6MjI0IGVsZjY0LXNoNjQuYzoyNDEwCisjOiBlbGYzMi1zaDY0LmM6MjE4IGVsZjY0LXNoNjQuYzoyMzg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjb21waWxlZCBhcyA2NC1iaXQgb2JqZWN0IGFuZCAlcyBpcyAzMi1iaXQiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItc2g2NC5jOjIyNiBlbGY2NC1zaDY0LmM6MjQxMgorIzogZWxmMzItc2g2NC5jOjIyMCBlbGY2NC1zaDY0LmM6MjM4OAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogb2JqZWN0IHNpemUgZG9lcyBub3QgbWF0Y2ggdGhhdCBvZiB0YXJnZXQgJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItc2g2NC5jOjQ2MSBlbGY2NC1zaDY0LmM6Mjk5MAorIzogZWxmMzItc2g2NC5jOjQ0MiBlbGY2NC1zaDY0LmM6Mjk1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZW5jb3VudGVyZWQgZGF0YWxhYmVsIHN5bWJvbCBpbiBpbnB1dCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1zaDY0LmM6NTQ0CisjOiBlbGYzMi1zaDY0LmM6NTE5CiBtc2dpZCAiUFRCIG1pc21hdGNoOiBhIFNIbWVkaWEgYWRkcmVzcyAoYml0IDAgPT0gMSkiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItc2g2NC5jOjU0NworIzogZWxmMzItc2g2NC5jOjUyMgogbXNnaWQgIlBUQSBtaXNtYXRjaDogYSBTSGNvbXBhY3QgYWRkcmVzcyAoYml0IDAgPT0gMCkiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItc2g2NC5jOjU2NQorIzogZWxmMzItc2g2NC5jOjU0MAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogR0FTIGVycm9yOiB1bmV4cGVjdGVkIFBUQiBpbnNuIHdpdGggUl9TSF9QVF8xNiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1zaDY0LmM6NjE0IGVsZjY0LXNoNjQuYzoxNzQ4CisjOiBlbGYzMi1zaDY0LmM6NTg5IGVsZjY0LXNoNjQuYzoxNzM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBlcnJvcjogdW5hbGlnbmVkIHJlbG9jYXRpb24gdHlwZSAlZCBhdCAlMDh4IHJlbG9jICUwOHhcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1zaDY0LmM6Njk4CisjOiBlbGYzMi1zaDY0LmM6NjcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjb3VsZCBub3Qgd3JpdGUgb3V0IGFkZGVkIC5jcmFuZ2VzIGVudHJpZXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItc2g2NC5jOjc2MAorIzogZWxmMzItc2g2NC5jOjczMgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY291bGQgbm90IHdyaXRlIG91dCBzb3J0ZWQgLmNyYW5nZXMgZW50cmllcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1zaC5jOjIxMDMKKyM6IGVsZjMyLXNoLmM6MjI1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogMHglbHg6IHdhcm5pbmc6IGJhZCBSX1NIX1VTRVMgb2Zmc2V0IgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXNoLmM6MjExNQorIzogZWxmMzItc2guYzoyMjY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiAweCVseDogd2FybmluZzogUl9TSF9VU0VTIHBvaW50cyB0byB1bnJlY29nbml6ZWQgaW5zbiAweCV4IgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXNoLmM6MjEzMgorIzogZWxmMzItc2guYzoyMjgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiAweCVseDogd2FybmluZzogYmFkIFJfU0hfVVNFUyBsb2FkIG9mZnNldCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1zaC5jOjIxNDcKKyM6IGVsZjMyLXNoLmM6MjI5NgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogMHglbHg6IHdhcm5pbmc6IGNvdWxkIG5vdCBmaW5kIGV4cGVjdGVkIHJlbG9jIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXNoLmM6MjE3NQorIzogZWxmMzItc2guYzoyMzI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiAweCVseDogd2FybmluZzogc3ltYm9sIGluIHVuZXhwZWN0ZWQgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1zaC5jOjIzMDAKKyM6IGVsZjMyLXNoLmM6MjQ0OQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogMHglbHg6IHdhcm5pbmc6IGNvdWxkIG5vdCBmaW5kIGV4cGVjdGVkIENPVU5UIHJlbG9jIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXNoLmM6MjMwOQorIzogZWxmMzItc2guYzoyNDU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiAweCVseDogd2FybmluZzogYmFkIGNvdW50IgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXNoLmM6MjcxMiBlbGYzMi1zaC5jOjMwODgKKyM6IGVsZjMyLXNoLmM6Mjg1OCBlbGYzMi1zaC5jOjMyMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IDB4JWx4OiBmYXRhbDogcmVsb2Mgb3ZlcmZsb3cgd2hpbGUgcmVsYXhpbmciCiBtc2dzdHIgIiIKIAotIzogZWxmMzItc2guYzo0NjU0IGVsZjY0LXNoNjQuYzoxNTg1CisjOiBlbGYzMi1zaC5jOjQ3NTYgZWxmNjQtc2g2NC5jOjE1NjgKIG1zZ2lkICJVbmV4cGVjdGVkIFNUT19TSDVfSVNBMzIgb24gbG9jYWwgc3ltYm9sIGlzIG5vdCBoYW5kbGVkIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXNoLmM6NDgwOQorIzogZWxmMzItc2guYzo0OTEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB1bnJlc29sdmFibGUgcmVsb2NhdGlvbiBhZ2FpbnN0IHN5bWJvbCBgJXMnIGZyb20gJXMgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1zaC5jOjQ4ODEKKyM6IGVsZjMyLXNoLmM6NDk4NAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogMHglbHg6IGZhdGFsOiB1bmFsaWduZWQgYnJhbmNoIHRhcmdldCBmb3IgcmVsYXgtc3VwcG9ydCByZWxvY2F0aW9uIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXNoLmM6NjYyNyBlbGY2NC1hbHBoYS5jOjQ4NDgKKyM6IGVsZjMyLXNoLmM6NTAxNyBlbGYzMi1zaC5jOjUwMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IDB4JWx4OiBmYXRhbDogdW5hbGlnbmVkICVzIHJlbG9jYXRpb24gMHglbHgiCittc2dzdHIgIiIKKworIzogZWxmMzItc2guYzo1MDQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAweCVseDogZmF0YWw6IFJfU0hfUFNIQSByZWxvY2F0aW9uICVkIG5vdCBpbiByYW5nZSAtMzIuLjMyIgorbXNnc3RyICIiCisKKyM6IGVsZjMyLXNoLmM6NTA2MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogMHglbHg6IGZhdGFsOiBSX1NIX1BTSEwgcmVsb2NhdGlvbiAlZCBub3QgaW4gcmFuZ2UgLTMyLi4zMiIKK21zZ3N0ciAiIgorCisjOiBlbGYzMi1zaC5jOjY4MDIgZWxmNjQtYWxwaGEuYzo0NzQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBUTFMgbG9jYWwgZXhlYyBjb2RlIGNhbm5vdCBiZSBsaW5rZWQgaW50byBzaGFyZWQgb2JqZWN0cyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1zcGFyYy5jOjI1MjEgZWxmNjQtc3BhcmMuYzoyMzE0CisjOiBlbGYzMi1zcGFyYy5jOjI0OTkgZWxmNjQtc3BhcmMuYzoyMjcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBwcm9iYWJseSBjb21waWxlZCB3aXRob3V0IC1mUElDPyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1zcGFyYy5jOjMzNDgKKyM6IGVsZjMyLXNwYXJjLmM6MzMyNQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY29tcGlsZWQgZm9yIGEgNjQgYml0IHN5c3RlbSBhbmQgdGFyZ2V0IGlzIDMyIGJpdCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1zcGFyYy5jOjMzNjIKKyM6IGVsZjMyLXNwYXJjLmM6MzMzOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogbGlua2luZyBsaXR0bGUgZW5kaWFuIGZpbGVzIHdpdGggYmlnIGVuZGlhbiBmaWxlcyIKIG1zZ3N0ciAiIgpAQCAtMTM2Myw0OCArMTQ5OCw1OSBAQAogbXNnc3RyICIiCiAKICM6IGVsZjMyLXY4NTAuYzoxMTQ0CisjLCBjLWZvcm1hdAogbXNnaWQgIkZBSUxFRCB0byBmaW5kIHByZXZpb3VzIEhJMTYgcmVsb2NcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi12ODUwLmM6MTc4OQorIzogZWxmMzItdjg1MC5jOjE3NTgKIG1zZ2lkICJjb3VsZCBub3QgbG9jYXRlIHNwZWNpYWwgbGlua2VyIHN5bWJvbCBfX2dwIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXY4NTAuYzoxNzkzCisjOiBlbGYzMi12ODUwLmM6MTc2MgogbXNnaWQgImNvdWxkIG5vdCBsb2NhdGUgc3BlY2lhbCBsaW5rZXIgc3ltYm9sIF9fZXAiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItdjg1MC5jOjE3OTcKKyM6IGVsZjMyLXY4NTAuYzoxNzY2CiBtc2dpZCAiY291bGQgbm90IGxvY2F0ZSBzcGVjaWFsIGxpbmtlciBzeW1ib2wgX19jdGJwIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXY4NTAuYzoxOTYzCisjOiBlbGYzMi12ODUwLmM6MTk1MQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogQXJjaGl0ZWN0dXJlIG1pc21hdGNoIHdpdGggcHJldmlvdXMgbW9kdWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi12ODUwLmM6MTk4MworIzogZWxmMzItdjg1MC5jOjE5NzIKICMsIGMtZm9ybWF0CiBtc2dpZCAicHJpdmF0ZSBmbGFncyA9ICVseDogIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXY4NTAuYzoxOTg4CisjOiBlbGYzMi12ODUwLmM6MTk3NworIywgYy1mb3JtYXQKIG1zZ2lkICJ2ODUwIGFyY2hpdGVjdHVyZSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi12ODUwLmM6MTk4OQorIzogZWxmMzItdjg1MC5jOjE5NzgKKyMsIGMtZm9ybWF0CiBtc2dpZCAidjg1MGUgYXJjaGl0ZWN0dXJlIgogbXNnc3RyICIiCiAKKyM6IGVsZjMyLXY4NTAuYzoxOTc5CisjLCBjLWZvcm1hdAorbXNnaWQgInY4NTBlMSBhcmNoaXRlY3R1cmUiCittc2dzdHIgIiIKKwogIzogZWxmMzItdmF4LmM6NTQ5CisjLCBjLWZvcm1hdAogbXNnaWQgIiBbbm9ucGljXSIKIG1zZ3N0ciAiIgogCiAjOiBlbGYzMi12YXguYzo1NTIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFtkLWZsb2F0XSIKIG1zZ3N0ciAiIgogCiAjOiBlbGYzMi12YXguYzo1NTUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFtnLWZsb2F0XSIKIG1zZ3N0ciAiIgogCkBAIC0xNDE1LDc5ICsxNTYxLDkyIEBACiAiJWxkIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXZheC5jOjE2NjcKKyM6IGVsZjMyLXZheC5jOjE2NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHdhcm5pbmc6IFBMVCBhZGRlbmQgb2YgJWQgdG8gYCVzJyBmcm9tICVzIHNlY3Rpb24gaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi12YXguYzoxODAyCisjOiBlbGYzMi12YXguYzoxNzcxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB3YXJuaW5nOiAlcyByZWxvY2F0aW9uIGFnYWluc3Qgc3ltYm9sIGAlcycgZnJvbSAlcyBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLXZheC5jOjE4MDgKKyM6IGVsZjMyLXZheC5jOjE3NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHdhcm5pbmc6ICVzIHJlbG9jYXRpb24gdG8gMHgleCBmcm9tICVzIHNlY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogZWxmMzItaWE2NC5jOjIzMjYgZWxmMzIteHN0b3JteTE2LmM6NDYyIGVsZjY0LWlhNjQuYzoyMzI2CisjOiBlbGYzMi14c3Rvcm15MTYuYzo0NjIgZWxmMzItaWE2NC5jOjI0MTggZWxmNjQtaWE2NC5jOjI0MTgKIG1zZ2lkICJub24temVybyBhZGRlbmQgaW4gQGZwdHIgcmVsb2MiCiBtc2dzdHIgIiIKIAotIzogZWxmNjQtYWxwaGEuYzoxMTA4CisjOiBlbGYzMi14dGVuc2EuYzoyMDUxCittc2dpZCAiZHluYW1pYyByZWxvY2F0aW9uIGluIHJlYWQtb25seSBzZWN0aW9uIgorbXNnc3RyICIiCisKKyM6IGVsZjY0LWFscGhhLmM6MTA2NwogbXNnaWQgIkdQRElTUCByZWxvY2F0aW9uIGRpZCBub3QgZmluZCBsZGFoIGFuZCBsZGEgaW5zdHJ1Y3Rpb25zIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LWFscGhhLmM6MzczMQorIzogZWxmNjQtYWxwaGEuYzozNTY1CisjLCBjLWZvcm1hdAorbXNnaWQgIlN5bWJvbCAlcyBoYXMgbm8gR09UIHN1YnNlY3Rpb24gZm9yIG9mZnNldCAweCV4IgorbXNnc3RyICIiCisKKyM6IGVsZjY0LWFscGhhLmM6MzY1MQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogLmdvdCBzdWJzZWdtZW50IGV4Y2VlZHMgNjRLIChzaXplICVkKSIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1hbHBoYS5jOjQ2MDIgZWxmNjQtYWxwaGEuYzo0NjE0CisjOiBlbGY2NC1hbHBoYS5jOjQ0OTggZWxmNjQtYWxwaGEuYzo0NTEwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBncC1yZWxhdGl2ZSByZWxvY2F0aW9uIGFnYWluc3QgZHluYW1pYyBzeW1ib2wgJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmNjQtYWxwaGEuYzo0NjQwIGVsZjY0LWFscGhhLmM6NDc3MworIzogZWxmNjQtYWxwaGEuYzo0NTM2IGVsZjY0LWFscGhhLmM6NDY2OQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogcGMtcmVsYXRpdmUgcmVsb2NhdGlvbiBhZ2FpbnN0IGR5bmFtaWMgc3ltYm9sICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LWFscGhhLmM6NDY2OAorIzogZWxmNjQtYWxwaGEuYzo0NTY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjaGFuZ2UgaW4gZ3A6IEJSU0dQICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LWFscGhhLmM6NDY5MworIzogZWxmNjQtYWxwaGEuYzo0NTg5CiBtc2dpZCAiPHVua25vd24+IgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LWFscGhhLmM6NDY5OAorIzogZWxmNjQtYWxwaGEuYzo0NTk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiAhc2FtZWdwIHJlbG9jIGFnYWluc3Qgc3ltYm9sIHdpdGhvdXQgLnByb2xvZ3VlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1hbHBoYS5jOjQ3NDkKKyM6IGVsZjY0LWFscGhhLmM6NDY0NQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogdW5oYW5kbGVkIGR5bmFtaWMgcmVsb2NhdGlvbiBhZ2FpbnN0ICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LWFscGhhLmM6NDgzMgorIzogZWxmNjQtYWxwaGEuYzo0NzI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBkdHAtcmVsYXRpdmUgcmVsb2NhdGlvbiBhZ2FpbnN0IGR5bmFtaWMgc3ltYm9sICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LWFscGhhLmM6NDg1NQorIzogZWxmNjQtYWxwaGEuYzo0NzUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB0cC1yZWxhdGl2ZSByZWxvY2F0aW9uIGFnYWluc3QgZHluYW1pYyBzeW1ib2wgJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmNjQtaHBwYS5jOjIwODYKKyM6IGVsZjY0LWhwcGEuYzoyMDgzCiAjLCBjLWZvcm1hdAogbXNnaWQgInN0dWIgZW50cnkgZm9yICVzIGNhbm5vdCBsb2FkIC5wbHQsIGRwIG9mZnNldCA9ICVsZCIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1tbWl4LmM6MTAzMgorIzogZWxmNjQtbWlwcy5jOjE1OTkgZWxmbjMyLW1pcHMuYzoxMzg4Cittc2dpZCAiMzJiaXRzIGdwIHJlbGF0aXZlIHJlbG9jYXRpb24gb2NjdXJzIGZvciBhbiBleHRlcm5hbCBzeW1ib2wiCittc2dzdHIgIiIKKworIzogZWxmNjQtbW1peC5jOjExNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiVzOiBJbnRlcm5hbCBpbmNvbnNpc3RlbmN5IGVycm9yIGZvciB2YWx1ZSBmb3JcbiIKQEAgLTE0OTUsMTA2ICsxNjU0LDExMyBAQAogIjA4bHhcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1tbWl4LmM6MTQxNgorIzogZWxmNjQtbW1peC5jOjE2MDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiVzOiBiYXNlLXBsdXMtb2Zmc2V0IHJlbG9jYXRpb24gYWdhaW5zdCByZWdpc3RlciBzeW1ib2w6ICh1bmtub3duKSBpbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1tbWl4LmM6MTQyMQorIzogZWxmNjQtbW1peC5jOjE2MDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGJhc2UtcGx1cy1vZmZzZXQgcmVsb2NhdGlvbiBhZ2FpbnN0IHJlZ2lzdGVyIHN5bWJvbDogJXMgaW4gJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmNjQtbW1peC5jOjE0NjUKKyM6IGVsZjY0LW1taXguYzoxNjUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiByZWdpc3RlciByZWxvY2F0aW9uIGFnYWluc3Qgbm9uLXJlZ2lzdGVyIHN5bWJvbDogKHVua25vd24pIGluICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LW1taXguYzoxNDcwCisjOiBlbGY2NC1tbWl4LmM6MTY1NwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogcmVnaXN0ZXIgcmVsb2NhdGlvbiBhZ2FpbnN0IG5vbi1yZWdpc3RlciBzeW1ib2w6ICVzIGluICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LW1taXguYzoxNTA3CisjOiBlbGY2NC1tbWl4LmM6MTY5NAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZGlyZWN0aXZlIExPQ0FMIHZhbGlkIG9ubHkgd2l0aCBhIHJlZ2lzdGVyIG9yIGFic29sdXRlIHZhbHVlIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LW1taXguYzoxNTM1CisjOiBlbGY2NC1tbWl4LmM6MTcyMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJXM6IExPQ0FMIGRpcmVjdGl2ZTogUmVnaXN0ZXIgJCVsZCBpcyBub3QgYSBsb2NhbCByZWdpc3Rlci4gIEZpcnN0IGdsb2JhbCAiCiAicmVnaXN0ZXIgaXMgJCVsZC4iCiBtc2dzdHIgIiIKIAotIzogZWxmNjQtbW1peC5jOjE5OTQKKyM6IGVsZjY0LW1taXguYzoyMjAyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIlczogRXJyb3I6IG11bHRpcGxlIGRlZmluaXRpb24gb2YgYCVzJzsgc3RhcnQgb2YgJXMgaXMgc2V0IGluIGEgZWFybGllciAiCiAibGlua2VkIGZpbGVcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1tbWl4LmM6MjA1MworIzogZWxmNjQtbW1peC5jOjIyNjEKIG1zZ2lkICJSZWdpc3RlciBzZWN0aW9uIGhhcyBjb250ZW50c1xuIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LW1taXguYzoyMjE2CisjOiBlbGY2NC1tbWl4LmM6MjQ2NwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiSW50ZXJuYWwgaW5jb25zaXN0ZW5jeTogcmVtYWluaW5nICV1ICE9IG1heCAldS5cbiIKICIgIFBsZWFzZSByZXBvcnQgdGhpcyBidWcuIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LXBwYy5jOjIzODggbGliYmZkLmM6ODMxCisjOiBlbGY2NC1wcGMuYzoyNDMzIGxpYmJmZC5jOjgyMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY29tcGlsZWQgZm9yIGEgYmlnIGVuZGlhbiBzeXN0ZW0gYW5kIHRhcmdldCBpcyBsaXR0bGUgZW5kaWFuIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LXBwYy5jOjIzOTEgbGliYmZkLmM6ODMzCisjOiBlbGY2NC1wcGMuYzoyNDM2IGxpYmJmZC5jOjgyMwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY29tcGlsZWQgZm9yIGEgbGl0dGxlIGVuZGlhbiBzeXN0ZW0gYW5kIHRhcmdldCBpcyBiaWcgZW5kaWFuIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LXBwYy5jOjQ4NTcKKyM6IGVsZjY0LXBwYy5jOjQ2NTYKICMsIGMtZm9ybWF0Ci1tc2dpZCAiJXM6IHVuZXhwZWN0ZWQgcmVsb2MgdHlwZSAldSBpbiAub3BkIHNlY3Rpb24iCittc2dpZCAiIgorImNvcHkgcmVsb2MgYWdhaW5zdCBgJXMnIHJlcXVpcmVzIGxhenkgcGx0IGxpbmtpbmc7IGF2b2lkIHNldHRpbmcgIgorIkxEX0JJTkRfTk9XPTEgb3IgdXBncmFkZSBnY2MiCiBtc2dzdHIgIiIKIAotIzogZWxmNjQtcHBjLmM6NDg3NworIzogZWxmNjQtcHBjLmM6NTAyNwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogLm9wZCBpcyBub3QgYSByZWd1bGFyIGFycmF5IG9mIG9wZCBlbnRyaWVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LXBwYy5jOjQ4OTcKKyM6IGVsZjY0LXBwYy5jOjUwMzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHVuZXhwZWN0ZWQgcmVsb2MgdHlwZSAldSBpbiAub3BkIHNlY3Rpb24iCittc2dzdHIgIiIKKworIzogZWxmNjQtcHBjLmM6NTA1NwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogdW5kZWZpbmVkIHN5bSBgJXMnIGluIC5vcGQgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1wcGMuYzo2MTM2CisjOiBlbGY2NC1wcGMuYzo2MjcyCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IGZpbmQgYnJhbmNoIHN0dWIgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1wcGMuYzo2MTc1IGVsZjY0LXBwYy5jOjYyNTAKKyM6IGVsZjY0LXBwYy5jOjYzMTEgZWxmNjQtcHBjLmM6NjM4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJsaW5rYWdlIHRhYmxlIGVycm9yIGFnYWluc3QgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1wcGMuYzo2MzQwCisjOiBlbGY2NC1wcGMuYzo2NTAzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IGJ1aWxkIGJyYW5jaCBzdHViIGAlcyciCiBtc2dzdHIgIiIKIAotIzogZWxmNjQtcHBjLmM6NzA0NworIzogZWxmNjQtcHBjLmM6NzIyMgogbXNnaWQgIi5nbGluayBhbmQgLnBsdCB0b28gZmFyIGFwYXJ0IgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LXBwYy5jOjcxMzUKKyM6IGVsZjY0LXBwYy5jOjczMzQKIG1zZ2lkICJzdHVicyBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIHNpemUiCiBtc2dzdHIgIiIKIAotIzogZWxmNjQtcHBjLmM6NzE0NworIzogZWxmNjQtcHBjLmM6NzM0NgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibGlua2VyIHN0dWJzIGluICV1IGdyb3Vwc1xuIgpAQCAtMTYwNSwxNCArMTc3MSwyNCBAQAogIiAgcGx0IGNhbGwgICAgICVsdSIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1wcGMuYzo3NzIzCisjOiBlbGY2NC1wcGMuYzo3NTQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzKCVzKzB4JWx4KTogJXMgdXNlZCB3aXRoIFRMUyBzeW1ib2wgJXMiCittc2dzdHIgIiIKKworIzogZWxmNjQtcHBjLmM6NzU0NQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyglcysweCVseCk6ICVzIHVzZWQgd2l0aCBub24tVExTIHN5bWJvbCAlcyIKK21zZ3N0ciAiIgorCisjOiBlbGY2NC1wcGMuYzo3OTU2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIlcyglcysweCVseCk6IGF1dG9tYXRpYyBtdWx0aXBsZSBUT0NzIG5vdCBzdXBwb3J0ZWQgdXNpbmcgeW91ciBjcnQgZmlsZXM7ICIKICJyZWNvbXBpbGUgd2l0aCAtbW1pbmltYWwtdG9jIG9yIHVwZ3JhZGUgZ2NjIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LXBwYy5jOjc3MzEKKyM6IGVsZjY0LXBwYy5jOjc5NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiVzKCVzKzB4JWx4KTogc2libGluZyBjYWxsIG9wdGltaXphdGlvbiB0byBgJXMnIGRvZXMgbm90IGFsbG93IGF1dG9tYXRpYyAiCkBAIC0xNjIwLDEwNyArMTc5NiwxMDUgQEAKICJvciBtYWtlIGAlcycgZXh0ZXJuIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LXBwYy5jOjgzMjkKKyM6IGVsZjY0LXBwYy5jOjg1NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHJlbG9jYXRpb24gJXMgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3ltYm9sICVzLiIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1wcGMuYzo4NDA4CisjOiBlbGY2NC1wcGMuYzo4NjQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBlcnJvcjogcmVsb2NhdGlvbiAlcyBub3QgYSBtdWx0aXBsZSBvZiAlZCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYtaHBwYS5oOjE0NTggZWxmLWhwcGEuaDoxNDkxIGVsZi1tMTAzMDAuYzoxNjI4IGVsZjY0LXNoNjQuYzoxNzA0Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiIKLSIlczogd2FybmluZzogdW5yZXNvbHZhYmxlIHJlbG9jYXRpb24gYWdhaW5zdCBzeW1ib2wgYCVzJyBmcm9tICVzIHNlY3Rpb24iCi1tc2dzdHIgIiIKLQotIzogZWxmNjQtc3BhcmMuYzoxMzcwCisjOiBlbGY2NC1zcGFyYy5jOjEzNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNoZWNrX3JlbG9jczogdW5oYW5kbGVkIHJlbG9jIHR5cGUgJWQiCiBtc2dzdHIgIiIKIAotIzogZWxmNjQtc3BhcmMuYzoxNDA3CisjOiBlbGY2NC1zcGFyYy5jOjE0MDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IE9ubHkgcmVnaXN0ZXJzICUlZ1syMzY3XSBjYW4gYmUgZGVjbGFyZWQgdXNpbmcgU1RUX1JFR0lTVEVSIgogbXNnc3RyICIiCiAKLSM6IGVsZjY0LXNwYXJjLmM6MTQyNworIzogZWxmNjQtc3BhcmMuYzoxNDI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlZ2lzdGVyICUlZyVkIHVzZWQgaW5jb21wYXRpYmx5OiAlcyBpbiAlcywgcHJldmlvdXNseSAlcyBpbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1zcGFyYy5jOjE0NTAKKyM6IGVsZjY0LXNwYXJjLmM6MTQ1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJTeW1ib2wgYCVzJyBoYXMgZGlmZmVyaW5nIHR5cGVzOiBSRUdJU1RFUiBpbiAlcywgcHJldmlvdXNseSAlcyBpbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1zcGFyYy5jOjE0OTYKKyM6IGVsZjY0LXNwYXJjLmM6MTQ5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJTeW1ib2wgYCVzJyBoYXMgZGlmZmVyaW5nIHR5cGVzOiAlcyBpbiAlcywgcHJldmlvdXNseSBSRUdJU1RFUiBpbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGY2NC1zcGFyYy5jOjMwNTMKKyM6IGVsZjY0LXNwYXJjLmM6MzAwOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogbGlua2luZyBVbHRyYVNQQVJDIHNwZWNpZmljIHdpdGggSEFMIHNwZWNpZmljIGNvZGUiCiBtc2dzdHIgIiIKIAotIzogZWxmNjQteDg2LTY0LmM6NzM5CisjOiBlbGY2NC14ODYtNjQuYzo3MzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzJyBhY2Nlc3NlZCBib3RoIGFzIG5vcm1hbCBhbmQgdGhyZWFkIGxvY2FsIHN5bWJvbCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYuYzozNzIKKyM6IGVsZi5jOjI5NQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogaW52YWxpZCBzdHJpbmcgb2Zmc2V0ICV1ID49ICVsdSBmb3Igc2VjdGlvbiBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGVsZi5jOjYyNAorIzogZWxmLmM6NTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBpbnZhbGlkIFNIVF9HUk9VUCBlbnRyeSIKIG1zZ3N0ciAiIgogCi0jOiBlbGYuYzo2OTUKKyM6IGVsZi5jOjYwOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogbm8gZ3JvdXAgaW5mbyBmb3Igc2VjdGlvbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYuYzoxMDU1CisjOiBlbGYuYzo5NTIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlByb2dyYW0gSGVhZGVyOlxuIgogbXNnc3RyICIiCiAKLSM6IGVsZi5jOjExMDYKKyM6IGVsZi5jOjEwMDMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIkR5bmFtaWMgU2VjdGlvbjpcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYuYzoxMjM1CisjOiBlbGYuYzoxMTMxCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJWZXJzaW9uIGRlZmluaXRpb25zOlxuIgogbXNnc3RyICIiCiAKLSM6IGVsZi5jOjEyNTgKKyM6IGVsZi5jOjExNTQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlZlcnNpb24gUmVmZXJlbmNlczpcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYuYzoxMjYzCisjOiBlbGYuYzoxMTU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgcmVxdWlyZWQgZnJvbSAlczpcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYuYzoxOTQ0CisjOiBlbGYuYzoxODI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBpbnZhbGlkIGxpbmsgJWx1IGZvciByZWxvYyBzZWN0aW9uICVzIChpbmRleCAldSkiCiBtc2dzdHIgIiIKIAotIzogZWxmLmM6MzY4NgorIzogZWxmLmM6MzY4NAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogTm90IGVub3VnaCByb29tIGZvciBwcm9ncmFtIGhlYWRlcnMgKGFsbG9jYXRlZCAldSwgbmVlZCAldSkiCiBtc2dzdHIgIiIKQEAgLTE3MzAsMjcxICsxOTA0LDMxMSBAQAogbXNnaWQgIiVzOiBOb3QgZW5vdWdoIHJvb20gZm9yIHByb2dyYW0gaGVhZGVycywgdHJ5IGxpbmtpbmcgd2l0aCAtTiIKIG1zZ3N0ciAiIgogCi0jOiBlbGYuYzozOTIyCisjOiBlbGYuYzozOTI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJFcnJvcjogRmlyc3Qgc2VjdGlvbiBpbiBzZWdtZW50ICglcykgc3RhcnRzIGF0IDB4JXggd2hlcmVhcyB0aGUgc2VnbWVudCAiCiAic3RhcnRzIGF0IDB4JXgiCiBtc2dzdHIgIiIKIAotIzogZWxmLmM6NDI0MgorIzogZWxmLmM6NDI0MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogd2FybmluZzogYWxsb2NhdGVkIHNlY3Rpb24gYCVzJyBub3QgaW4gc2VnbWVudCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYuYzo0NTY2CisjOiBlbGYuYzo0NTU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBzeW1ib2wgYCVzJyByZXF1aXJlZCBidXQgbm90IHByZXNlbnQiCiBtc2dzdHIgIiIKIAotIzogZWxmLmM6NDg1NAorIzogZWxmLmM6NDg0NQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogd2FybmluZzogRW1wdHkgbG9hZGFibGUgc2VnbWVudCBkZXRlY3RlZCwgaXMgdGhpcyBpbnRlbnRpb25hbCA/XG4iCiBtc2dzdHIgIiIKIAotIzogZWxmLmM6NTQ4NQorIzogZWxmLmM6NTQ3OQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVW5hYmxlIHRvIGZpbmQgZXF1aXZhbGVudCBvdXRwdXQgc2VjdGlvbiBmb3Igc3ltYm9sICclcycgZnJvbSBzZWN0aW9uICclcyciCiBtc2dzdHIgIiIKIAotIzogZWxmLmM6NjI5OAorIzogZWxmLmM6NjI2NAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogdW5zdXBwb3J0ZWQgcmVsb2NhdGlvbiB0eXBlICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZmNvZGUuaDoxMTEzCisjOiBlbGZjb2RlLmg6MTA1MAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogdmVyc2lvbiBjb3VudCAoJWxkKSBkb2VzIG5vdCBtYXRjaCBzeW1ib2wgY291bnQgKCVsZCkiCiBtc2dzdHIgIiIKIAotIzogZWxmY29kZS5oOjEzNDIKKyM6IGVsZmNvZGUuaDoxMjc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzKCVzKTogcmVsb2NhdGlvbiAlZCBoYXMgaW52YWxpZCBzeW1ib2wgaW5kZXggJWxkIgogbXNnc3RyICIiCiAKLSM6IGVsZmxpbmsuYzoxNDU2CisjOiBlbGZsaW5rLmM6MTM1MAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogd2FybmluZzogdW5leHBlY3RlZCByZWRlZmluaXRpb24gb2YgaW5kaXJlY3QgdmVyc2lvbmVkIHN5bWJvbCBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGVsZmxpbmsuYzoxODA3CisjOiBlbGZsaW5rLmM6MTY2OQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogdW5kZWZpbmVkIHZlcnNpb25lZCBzeW1ib2wgbmFtZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGZsaW5rLmM6MjE0MgorIzogZWxmbGluay5jOjE4MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBiYWQgcmVsb2Mgc3ltYm9sIGluZGV4ICgweCVseCA+PSAweCVseCkgZm9yIG9mZnNldCAweCVseCBpbiBzZWN0aW9uIGAlcyciCittc2dzdHIgIiIKKworIzogZWxmbGluay5jOjIwMDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHJlbG9jYXRpb24gc2l6ZSBtaXNtYXRjaCBpbiAlcyBzZWN0aW9uICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZmxpbmsuYzoyNDM0CisjOiBlbGZsaW5rLmM6MjI5NgogIywgYy1mb3JtYXQKIG1zZ2lkICJ3YXJuaW5nOiB0eXBlIGFuZCBzaXplIG9mIGR5bmFtaWMgc3ltYm9sIGAlcycgYXJlIG5vdCBkZWZpbmVkIgogbXNnc3RyICIiCiAKLSM6IGVsZmxpbmsuaDoxMDIyCisjOiBlbGZsaW5rLmM6MjkxNworbXNnaWQgIndhcm5pbmc6ICIKK21zZ3N0ciAiIgorCisjOiBlbGZsaW5rLmM6MzQxMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogJXM6IGludmFsaWQgdmVyc2lvbiAldSAobWF4ICVkKSIKIG1zZ3N0ciAiIgogCi0jOiBlbGZsaW5rLmg6MTA2MworIzogZWxmbGluay5jOjM0NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzOiBpbnZhbGlkIG5lZWRlZCB2ZXJzaW9uICVkIgogbXNnc3RyICIiCiAKLSM6IGVsZmxpbmsuaDoxMjM4CisjOiBlbGZsaW5rLmM6MzYyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nOiBhbGlnbm1lbnQgJXUgb2Ygc3ltYm9sIGAlcycgaW4gJXMgaXMgc21hbGxlciB0aGFuICV1IGluICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZmxpbmsuaDoxMjUyCisjOiBlbGZsaW5rLmM6MzY0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nOiBzaXplIG9mIHN5bWJvbCBgJXMnIGNoYW5nZWQgZnJvbSAlbHUgaW4gJXMgdG8gJWx1IGluICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZmxpbmsuaDoyMTYwCisjOiBlbGZsaW5rLmM6NDgzNwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogdW5kZWZpbmVkIHZlcnNpb246ICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZmxpbmsuaDoyMjI2CisjOiBlbGZsaW5rLmM6NDkwMwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogLnByZWluaXRfYXJyYXkgc2VjdGlvbiBpcyBub3QgYWxsb3dlZCBpbiBEU08iCiBtc2dzdHIgIiIKIAotIzogZWxmbGluay5oOjMwNzgKKyM6IGVsZmxpbmsuYzo1NTk0CiBtc2dpZCAiTm90IGVub3VnaCBtZW1vcnkgdG8gc29ydCByZWxvY2F0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBlbGZsaW5rLmg6Mzk1OCBlbGZsaW5rLmg6NDAwMQotIywgYy1mb3JtYXQKLW1zZ2lkICIlczogY291bGQgbm90IGZpbmQgb3V0cHV0IHNlY3Rpb24gJXMiCi1tc2dzdHIgIiIKLQotIzogZWxmbGluay5oOjM5NjQKLSMsIGMtZm9ybWF0Ci1tc2dpZCAid2FybmluZzogJXMgc2VjdGlvbiBoYXMgemVybyBzaXplIgotbXNnc3RyICIiCi0KLSM6IGVsZmxpbmsuaDo0NDgzCisjOiBlbGZsaW5rLmM6NTk3NgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogJXMgc3ltYm9sIGAlcycgaW4gJXMgaXMgcmVmZXJlbmNlZCBieSBEU08iCiBtc2dzdHIgIiIKIAotIzogZWxmbGluay5oOjQ1NjQKKyM6IGVsZmxpbmsuYzo2MDU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjb3VsZCBub3QgZmluZCBvdXRwdXQgc2VjdGlvbiAlcyBmb3IgaW5wdXQgc2VjdGlvbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGZsaW5rLmg6NDY2NgorIzogZWxmbGluay5jOjYxNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzIHN5bWJvbCBgJXMnIGlzbid0IGRlZmluZWQiCiBtc2dzdHIgIiIKIAotIzogZWxmbGluay5oOjUwNTMgZWxmbGluay5oOjUwOTUKKyM6IGVsZmxpbmsuYzo2NTc1IGVsZmxpbmsuYzo2NjE2CiBtc2dpZCAiJVQ6IGRpc2NhcmRlZCBpbiBzZWN0aW9uIGAlcycgZnJvbSAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGVsZnh4LW1pcHMuYzo4ODcKKyM6IGVsZmxpbmsuYzo3ODcwIGVsZmxpbmsuYzo3OTEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBjb3VsZCBub3QgZmluZCBvdXRwdXQgc2VjdGlvbiAlcyIKK21zZ3N0ciAiIgorCisjOiBlbGZsaW5rLmM6Nzg3NgorIywgYy1mb3JtYXQKK21zZ2lkICJ3YXJuaW5nOiAlcyBzZWN0aW9uIGhhcyB6ZXJvIHNpemUiCittc2dzdHIgIiIKKworIzogZWxmbGluay5jOjg0MjcKK21zZ2lkICJXYXJuaW5nOiBnYy1zZWN0aW9ucyBvcHRpb24gaWdub3JlZCIKK21zZ3N0ciAiIgorCisjOiBlbGZ4eC1taXBzLmM6ODkwCiBtc2dpZCAic3RhdGljIHByb2NlZHVyZSAobm8gbmFtZSkiCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjE4OTcKKyM6IGVsZnh4LW1pcHMuYzoyMDI4CiBtc2dpZCAibm90IGVub3VnaCBHT1Qgc3BhY2UgZm9yIGxvY2FsIEdPVCBlbnRyaWVzIgogbXNnc3RyICIiCiAKLSM6IGVsZnh4LW1pcHMuYzozNjkxCisjOiBlbGZ4eC1taXBzLmM6Mzc3NQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogJXMrMHglbHg6IGp1bXAgdG8gc3R1YiByb3V0aW5lIHdoaWNoIGlzIG5vdCBqYWwiCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjUxOTIKKyM6IGVsZnh4LW1pcHMuYzo1MjYwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBNYWxmb3JtZWQgcmVsb2MgZGV0ZWN0ZWQgZm9yIHNlY3Rpb24gJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjUyNjYKKyM6IGVsZnh4LW1pcHMuYzo1MzM0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBDQUxMMTYgcmVsb2MgYXQgMHglbHggbm90IGFnYWluc3QgZ2xvYmFsIHN5bWJvbCIKIG1zZ3N0ciAiIgogCi0jOiBlbGZ4eC1taXBzLmM6ODY5MworIzogZWxmeHgtbWlwcy5jOjg2MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGlsbGVnYWwgc2VjdGlvbiBuYW1lIGAlcyciCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjkwMjcKKyM6IGVsZnh4LW1pcHMuYzo4OTU0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBlbmRpYW5uZXNzIGluY29tcGF0aWJsZSB3aXRoIHRoYXQgb2YgdGhlIHNlbGVjdGVkIGVtdWxhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBlbGZ4eC1taXBzLmM6OTAzOQorIzogZWxmeHgtbWlwcy5jOjg5NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IEFCSSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGF0IG9mIHRoZSBzZWxlY3RlZCBlbXVsYXRpb24iCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjkxMDYKKyM6IGVsZnh4LW1pcHMuYzo5MDM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB3YXJuaW5nOiBsaW5raW5nIFBJQyBmaWxlcyB3aXRoIG5vbi1QSUMgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjkxMjMKKyM6IGVsZnh4LW1pcHMuYzo5MDU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBsaW5raW5nIDMyLWJpdCBjb2RlIHdpdGggNjQtYml0IGNvZGUiCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjkxNTEKKyM6IGVsZnh4LW1pcHMuYzo5MDgzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBsaW5raW5nICVzIG1vZHVsZSB3aXRoIHByZXZpb3VzICVzIG1vZHVsZXMiCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjkxNzQKKyM6IGVsZnh4LW1pcHMuYzo5MTA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBBQkkgbWlzbWF0Y2g6IGxpbmtpbmcgJXMgbW9kdWxlIHdpdGggcHJldmlvdXMgJXMgbW9kdWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBlbGZ4eC1taXBzLmM6OTI0MworIzogZWxmeHgtbWlwcy5jOjkxNzEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFthYmk9TzMyXSIKIG1zZ3N0ciAiIgogCi0jOiBlbGZ4eC1taXBzLmM6OTI0NQorIzogZWxmeHgtbWlwcy5jOjkxNzMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFthYmk9TzY0XSIKIG1zZ3N0ciAiIgogCi0jOiBlbGZ4eC1taXBzLmM6OTI0NworIzogZWxmeHgtbWlwcy5jOjkxNzUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFthYmk9RUFCSTMyXSIKIG1zZ3N0ciAiIgogCi0jOiBlbGZ4eC1taXBzLmM6OTI0OQorIzogZWxmeHgtbWlwcy5jOjkxNzcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFthYmk9RUFCSTY0XSIKIG1zZ3N0ciAiIgogCi0jOiBlbGZ4eC1taXBzLmM6OTI1MQorIzogZWxmeHgtbWlwcy5jOjkxNzkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFthYmkgdW5rbm93bl0iCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjkyNTMKKyM6IGVsZnh4LW1pcHMuYzo5MTgxCisjLCBjLWZvcm1hdAogbXNnaWQgIiBbYWJpPU4zMl0iCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjkyNTUKKyM6IGVsZnh4LW1pcHMuYzo5MTgzCisjLCBjLWZvcm1hdAogbXNnaWQgIiBbYWJpPTY0XSIKIG1zZ3N0ciAiIgogCi0jOiBlbGZ4eC1taXBzLmM6OTI1NworIzogZWxmeHgtbWlwcy5jOjkxODUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFtubyBhYmkgc2V0XSIKIG1zZ3N0ciAiIgogCi0jOiBlbGZ4eC1taXBzLmM6OTI2MAorIzogZWxmeHgtbWlwcy5jOjkxODgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFttaXBzMV0iCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjkyNjIKKyM6IGVsZnh4LW1pcHMuYzo5MTkwCisjLCBjLWZvcm1hdAogbXNnaWQgIiBbbWlwczJdIgogbXNnc3RyICIiCiAKLSM6IGVsZnh4LW1pcHMuYzo5MjY0CisjOiBlbGZ4eC1taXBzLmM6OTE5MgorIywgYy1mb3JtYXQKIG1zZ2lkICIgW21pcHMzXSIKIG1zZ3N0ciAiIgogCi0jOiBlbGZ4eC1taXBzLmM6OTI2NgorIzogZWxmeHgtbWlwcy5jOjkxOTQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFttaXBzNF0iCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjkyNjgKKyM6IGVsZnh4LW1pcHMuYzo5MTk2CisjLCBjLWZvcm1hdAogbXNnaWQgIiBbbWlwczVdIgogbXNnc3RyICIiCiAKLSM6IGVsZnh4LW1pcHMuYzo5MjcwCisjOiBlbGZ4eC1taXBzLmM6OTE5OAorIywgYy1mb3JtYXQKIG1zZ2lkICIgW21pcHMzMl0iCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjkyNzIKKyM6IGVsZnh4LW1pcHMuYzo5MjAwCisjLCBjLWZvcm1hdAogbXNnaWQgIiBbbWlwczY0XSIKIG1zZ3N0ciAiIgogCi0jOiBlbGZ4eC1taXBzLmM6OTI3NAorIzogZWxmeHgtbWlwcy5jOjkyMDIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFttaXBzMzJyMl0iCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjkyNzYKKyM6IGVsZnh4LW1pcHMuYzo5MjA0CisjLCBjLWZvcm1hdAorbXNnaWQgIiBbbWlwczY0cjJdIgorbXNnc3RyICIiCisKKyM6IGVsZnh4LW1pcHMuYzo5MjA2CisjLCBjLWZvcm1hdAogbXNnaWQgIiBbdW5rbm93biBJU0FdIgogbXNnc3RyICIiCiAKLSM6IGVsZnh4LW1pcHMuYzo5Mjc5CisjOiBlbGZ4eC1taXBzLmM6OTIwOQorIywgYy1mb3JtYXQKIG1zZ2lkICIgW21kbXhdIgogbXNnc3RyICIiCiAKLSM6IGVsZnh4LW1pcHMuYzo5MjgyCisjOiBlbGZ4eC1taXBzLmM6OTIxMgorIywgYy1mb3JtYXQKIG1zZ2lkICIgW21pcHMxNl0iCiBtc2dzdHIgIiIKIAotIzogZWxmeHgtbWlwcy5jOjkyODUKKyM6IGVsZnh4LW1pcHMuYzo5MjE1CisjLCBjLWZvcm1hdAogbXNnaWQgIiBbMzJiaXRtb2RlXSIKIG1zZ3N0ciAiIgogCi0jOiBlbGZ4eC1taXBzLmM6OTI4NworIzogZWxmeHgtbWlwcy5jOjkyMTcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFtub3QgMzJiaXRtb2RlXSIKIG1zZ3N0ciAiIgogCkBAIC0yMDkzLDI3ICsyMzA3LDI3IEBACiBtc2dpZCAiJXM6IGFkZHJlc3MgMHglcyBvdXQgb2YgcmFuZ2UgZm9yIEludGVsIEhleCBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGxpYmJmZC5jOjg2MQorIzogbGliYmZkLmM6ODUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkRlcHJlY2F0ZWQgJXMgY2FsbGVkIGF0ICVzIGxpbmUgJWQgaW4gJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBsaWJiZmQuYzo4NjQKKyM6IGxpYmJmZC5jOjg1NAogIywgYy1mb3JtYXQKIG1zZ2lkICJEZXByZWNhdGVkICVzIGNhbGxlZFxuIgogbXNnc3RyICIiCiAKLSM6IGxpbmtlci5jOjE4MjkKKyM6IGxpbmtlci5jOjE4MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGluZGlyZWN0IHN5bWJvbCBgJXMnIHRvIGAlcycgaXMgYSBsb29wIgogbXNnc3RyICIiCiAKLSM6IGxpbmtlci5jOjI2OTcKKyM6IGxpbmtlci5jOjI2OTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXR0ZW1wdCB0byBkbyByZWxvY2F0YWJsZSBsaW5rIHdpdGggJXMgaW5wdXQgYW5kICVzIG91dHB1dCIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS5jOjg5NgorIzogbWVyZ2UuYzo3OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGFjY2VzcyBiZXlvbmQgZW5kIG9mIG1lcmdlZCBzZWN0aW9uICglbGQgKyAlbGQpIgogbXNnc3RyICIiCkBAIC0yMjg2LDI0ICsyNTAwLDI0IEBACiBtc2dpZCAiJXM6IFVucmVjb2duaXNlZCBpbXBvcnQgbmFtZSB0eXBlOyAleCIKIG1zZ3N0ciAiIgogCi0jOiBwZWljb2RlLmg6MTE2NAorIzogcGVpY29kZS5oOjExOTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IFVucmVjb2duaXNlZCBtYWNoaW5lIHR5cGUgKDB4JXgpIGluIEltcG9ydCBMaWJyYXJ5IEZvcm1hdCBhcmNoaXZlIgogbXNnc3RyICIiCiAKLSM6IHBlaWNvZGUuaDoxMTc2CisjOiBwZWljb2RlLmg6MTIwNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJXM6IFJlY29nbmlzZWQgYnV0IHVuaGFuZGxlZCBtYWNoaW5lIHR5cGUgKDB4JXgpIGluIEltcG9ydCBMaWJyYXJ5IEZvcm1hdCAiCiAiYXJjaGl2ZSIKIG1zZ3N0ciAiIgogCi0jOiBwZWljb2RlLmg6MTE5MworIzogcGVpY29kZS5oOjEyMjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHNpemUgZmllbGQgaXMgemVybyBpbiBJbXBvcnQgTGlicmFyeSBGb3JtYXQgaGVhZGVyIgogbXNnc3RyICIiCiAKLSM6IHBlaWNvZGUuaDoxMjI0CisjOiBwZWljb2RlLmg6MTI1NAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogc3RyaW5nIG5vdCBudWxsIHRlcm1pbmF0ZWQgaW4gSUxGIG9iamVjdCBmaWxlLiIKIG1zZ3N0ciAiIgpAQCAtMjMzNCw2ICsyNTQ4LDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBwcGNib290LmM6NDE2CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJwcGNib290IGhlYWRlcjpcbiIKQEAgLTIzOTAsNyArMjYwNSw3IEBACiBtc2dpZCAiJXM6JWQ6IFVuZXhwZWN0ZWQgY2hhcmFjdGVyIGAlcycgaW4gUy1yZWNvcmQgZmlsZVxuIgogbXNnc3RyICIiCiAKLSM6IHN0YWJzLmM6MzE5CisjOiBzdGFicy5jOjMyNgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyglcysweCVseCk6IFN0YWJzIGVudHJ5IGhhcyBpbnZhbGlkIHN0cmluZyBpbmRleC4iCiBtc2dzdHIgIiIKQEAgLTI2NDIsMjI0ICsyODU3LDIzMCBAQAogbXNnaWQgIiVzOiBsb2FkZXIgcmVsb2MgaW4gcmVhZC1vbmx5IHNlY3Rpb24gJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItaWE2NC5jOjIyNzEgZWxmNjQtaWE2NC5jOjIyNzEKKyM6IGVsZjMyLWlhNjQuYzoyMzYzIGVsZjY0LWlhNjQuYzoyMzYzCiBtc2dpZCAiQHBsdG9mZiByZWxvYyBhZ2FpbnN0IGxvY2FsIHN5bWJvbCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1pYTY0LmM6MzY2MyBlbGY2NC1pYTY0LmM6MzY2MworIzogZWxmMzItaWE2NC5jOjM3NjggZWxmNjQtaWE2NC5jOjM3NjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHNob3J0IGRhdGEgc2VnbWVudCBvdmVyZmxvd2VkICgweCVseCA+PSAweDQwMDAwMCkiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItaWE2NC5jOjM2NzQgZWxmNjQtaWE2NC5jOjM2NzQKKyM6IGVsZjMyLWlhNjQuYzozNzc5IGVsZjY0LWlhNjQuYzozNzc5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBfX2dwIGRvZXMgbm90IGNvdmVyIHNob3J0IGRhdGEgc2VnbWVudCIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1pYTY0LmM6Mzk4NiBlbGY2NC1pYTY0LmM6Mzk4NgorIzogZWxmMzItaWE2NC5jOjQwMjcgZWxmNjQtaWE2NC5jOjQwMjcKICMsIGMtZm9ybWF0Ci1tc2dpZCAiJXM6IGxpbmtpbmcgbm9uLXBpYyBjb2RlIGluIGEgc2hhcmVkIGxpYnJhcnkiCittc2dpZCAiJXM6IG5vbi1waWMgY29kZSB3aXRoIGltbSByZWxvY2F0aW9uIGFnYWluc3QgZHluYW1pYyBzeW1ib2wgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBlbGYzMi1pYTY0LmM6NDAxNyBlbGY2NC1pYTY0LmM6NDAxNworIzogZWxmMzItaWE2NC5jOjQwOTIgZWxmNjQtaWE2NC5jOjQwOTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IEBncHJlbCByZWxvY2F0aW9uIGFnYWluc3QgZHluYW1pYyBzeW1ib2wgJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItaWE2NC5jOjQwNzcgZWxmNjQtaWE2NC5jOjQwNzcKKyM6IGVsZjMyLWlhNjQuYzo0MTUyIGVsZjY0LWlhNjQuYzo0MTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBsaW5raW5nIG5vbi1waWMgY29kZSBpbiBhIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItaWE2NC5jOjQyMTQgZWxmNjQtaWE2NC5jOjQyMTQKKyM6IGVsZjMyLWlhNjQuYzo0Mjg5IGVsZjY0LWlhNjQuYzo0Mjg5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBAaW50ZXJuYWwgYnJhbmNoIHRvIGR5bmFtaWMgc3ltYm9sICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWlhNjQuYzo0MjE2IGVsZjY0LWlhNjQuYzo0MjE2CisjOiBlbGYzMi1pYTY0LmM6NDI5MSBlbGY2NC1pYTY0LmM6NDI5MQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogc3BlY3VsYXRpb24gZml4dXAgdG8gZHluYW1pYyBzeW1ib2wgJXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItaWE2NC5jOjQyMTggZWxmNjQtaWE2NC5jOjQyMTgKKyM6IGVsZjMyLWlhNjQuYzo0MjkzIGVsZjY0LWlhNjQuYzo0MjkzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBAcGNyZWwgcmVsb2NhdGlvbiBhZ2FpbnN0IGR5bmFtaWMgc3ltYm9sICVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWlhNjQuYzo0NDMwIGVsZjY0LWlhNjQuYzo0NDMwCisjOiBlbGYzMi1pYTY0LmM6NDUwNSBlbGY2NC1pYTY0LmM6NDUwNQogbXNnaWQgInVuc3VwcG9ydGVkIHJlbG9jIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWlhNjQuYzo0NzA5IGVsZjY0LWlhNjQuYzo0NzA5CisjOiBlbGYzMi1pYTY0LmM6NDc4NCBlbGY2NC1pYTY0LmM6NDc4NAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogbGlua2luZyB0cmFwLW9uLU5VTEwtZGVyZWZlcmVuY2Ugd2l0aCBub24tdHJhcHBpbmcgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItaWE2NC5jOjQ3MTggZWxmNjQtaWE2NC5jOjQ3MTgKKyM6IGVsZjMyLWlhNjQuYzo0NzkzIGVsZjY0LWlhNjQuYzo0NzkzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBsaW5raW5nIGJpZy1lbmRpYW4gZmlsZXMgd2l0aCBsaXR0bGUtZW5kaWFuIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWlhNjQuYzo0NzI3IGVsZjY0LWlhNjQuYzo0NzI3CisjOiBlbGYzMi1pYTY0LmM6NDgwMiBlbGY2NC1pYTY0LmM6NDgwMgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogbGlua2luZyA2NC1iaXQgZmlsZXMgd2l0aCAzMi1iaXQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogZWxmMzItaWE2NC5jOjQ3MzYgZWxmNjQtaWE2NC5jOjQ3MzYKKyM6IGVsZjMyLWlhNjQuYzo0ODExIGVsZjY0LWlhNjQuYzo0ODExCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBsaW5raW5nIGNvbnN0YW50LWdwIGZpbGVzIHdpdGggbm9uLWNvbnN0YW50LWdwIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGVsZjMyLWlhNjQuYzo0NzQ2IGVsZjY0LWlhNjQuYzo0NzQ2CisjOiBlbGYzMi1pYTY0LmM6NDgyMSBlbGY2NC1pYTY0LmM6NDgyMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogbGlua2luZyBhdXRvLXBpYyBmaWxlcyB3aXRoIG5vbi1hdXRvLXBpYyBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzo5ODUgcGVwaWdlbi5jOjk4NQorIzogcGVpZ2VuLmM6MTAzMSBwZXBpZ2VuLmM6MTAzMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogbGluZSBudW1iZXIgb3ZlcmZsb3c6IDB4JWx4ID4gMHhmZmZmIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjEwMDIgcGVwaWdlbi5jOjEwMDIKKyM6IHBlaWdlbi5jOjEwNTIgcGVwaWdlbi5jOjEwNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHJlbG9jIG92ZXJmbG93IDE6IDB4JWx4ID4gMHhmZmZmIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjEwMTYgcGVwaWdlbi5jOjEwMTYKKyM6IHBlaWdlbi5jOjEwNjYgcGVwaWdlbi5jOjEwNjYKIG1zZ2lkICJFeHBvcnQgRGlyZWN0b3J5IFsuZWRhdGEgKG9yIHdoZXJlIGV2ZXIgd2UgZm91bmQgaXQpXSIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxMDE3IHBlcGlnZW4uYzoxMDE3CisjOiBwZWlnZW4uYzoxMDY3IHBlcGlnZW4uYzoxMDY3CiBtc2dpZCAiSW1wb3J0IERpcmVjdG9yeSBbcGFydHMgb2YgLmlkYXRhXSIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxMDE4IHBlcGlnZW4uYzoxMDE4CisjOiBwZWlnZW4uYzoxMDY4IHBlcGlnZW4uYzoxMDY4CiBtc2dpZCAiUmVzb3VyY2UgRGlyZWN0b3J5IFsucnNyY10iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTAxOSBwZXBpZ2VuLmM6MTAxOQorIzogcGVpZ2VuLmM6MTA2OSBwZXBpZ2VuLmM6MTA2OQogbXNnaWQgIkV4Y2VwdGlvbiBEaXJlY3RvcnkgWy5wZGF0YV0iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTAyMCBwZXBpZ2VuLmM6MTAyMAorIzogcGVpZ2VuLmM6MTA3MCBwZXBpZ2VuLmM6MTA3MAogbXNnaWQgIlNlY3VyaXR5IERpcmVjdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxMDIxIHBlcGlnZW4uYzoxMDIxCisjOiBwZWlnZW4uYzoxMDcxIHBlcGlnZW4uYzoxMDcxCiBtc2dpZCAiQmFzZSBSZWxvY2F0aW9uIERpcmVjdG9yeSBbLnJlbG9jXSIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxMDIyIHBlcGlnZW4uYzoxMDIyCisjOiBwZWlnZW4uYzoxMDcyIHBlcGlnZW4uYzoxMDcyCiBtc2dpZCAiRGVidWcgRGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjEwMjMgcGVwaWdlbi5jOjEwMjMKKyM6IHBlaWdlbi5jOjEwNzMgcGVwaWdlbi5jOjEwNzMKIG1zZ2lkICJEZXNjcmlwdGlvbiBEaXJlY3RvcnkiCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTAyNCBwZXBpZ2VuLmM6MTAyNAorIzogcGVpZ2VuLmM6MTA3NCBwZXBpZ2VuLmM6MTA3NAogbXNnaWQgIlNwZWNpYWwgRGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjEwMjUgcGVwaWdlbi5jOjEwMjUKKyM6IHBlaWdlbi5jOjEwNzUgcGVwaWdlbi5jOjEwNzUKIG1zZ2lkICJUaHJlYWQgU3RvcmFnZSBEaXJlY3RvcnkgWy50bHNdIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjEwMjYgcGVwaWdlbi5jOjEwMjYKKyM6IHBlaWdlbi5jOjEwNzYgcGVwaWdlbi5jOjEwNzYKIG1zZ2lkICJMb2FkIENvbmZpZ3VyYXRpb24gRGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjEwMjcgcGVwaWdlbi5jOjEwMjcKKyM6IHBlaWdlbi5jOjEwNzcgcGVwaWdlbi5jOjEwNzcKIG1zZ2lkICJCb3VuZCBJbXBvcnQgRGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjEwMjggcGVwaWdlbi5jOjEwMjgKKyM6IHBlaWdlbi5jOjEwNzggcGVwaWdlbi5jOjEwNzgKIG1zZ2lkICJJbXBvcnQgQWRkcmVzcyBUYWJsZSBEaXJlY3RvcnkiCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTAyOSBwZXBpZ2VuLmM6MTAyOQorIzogcGVpZ2VuLmM6MTA3OSBwZXBpZ2VuLmM6MTA3OQogbXNnaWQgIkRlbGF5IEltcG9ydCBEaXJlY3RvcnkiCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTAzMCBwZWlnZW4uYzoxMDMxIHBlcGlnZW4uYzoxMDMwIHBlcGlnZW4uYzoxMDMxCisjOiBwZWlnZW4uYzoxMDgwIHBlaWdlbi5jOjEwODEgcGVwaWdlbi5jOjEwODAgcGVwaWdlbi5jOjEwODEKIG1zZ2lkICJSZXNlcnZlZCIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxMDk0IHBlcGlnZW4uYzoxMDk0CisjOiBwZWlnZW4uYzoxMTQ0IHBlcGlnZW4uYzoxMTQ0CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJUaGVyZSBpcyBhbiBpbXBvcnQgdGFibGUsIGJ1dCB0aGUgc2VjdGlvbiBjb250YWluaW5nIGl0IGNvdWxkIG5vdCBiZSBmb3VuZFxuIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjEwOTkgcGVwaWdlbi5jOjEwOTkKKyM6IHBlaWdlbi5jOjExNDkgcGVwaWdlbi5jOjExNDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlRoZXJlIGlzIGFuIGltcG9ydCB0YWJsZSBpbiAlcyBhdCAweCVseFxuIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjExMzYgcGVwaWdlbi5jOjExMzYKKyM6IHBlaWdlbi5jOjExODYgcGVwaWdlbi5jOjExODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIkZ1bmN0aW9uIGRlc2NyaXB0b3IgbG9jYXRlZCBhdCB0aGUgc3RhcnQgYWRkcmVzczogJTA0bHhcbiIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxMTM5IHBlcGlnZW4uYzoxMTM5CisjOiBwZWlnZW4uYzoxMTg5IHBlcGlnZW4uYzoxMTg5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlx0Y29kZS1iYXNlICUwOGx4IHRvYyAobG9hZGFibGUvYWN0dWFsKSAlMDhseC8lMDhseFxuIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjExNDUgcGVwaWdlbi5jOjExNDUKKyM6IHBlaWdlbi5jOjExOTUgcGVwaWdlbi5jOjExOTUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIk5vIHJlbGRhdGEgc2VjdGlvbiEgRnVuY3Rpb24gZGVzY3JpcHRvciBub3QgZGVjb2RlZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxMTUwIHBlcGlnZW4uYzoxMTUwCisjOiBwZWlnZW4uYzoxMjAwIHBlcGlnZW4uYzoxMjAwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJUaGUgSW1wb3J0IFRhYmxlcyAoaW50ZXJwcmV0ZWQgJXMgc2VjdGlvbiBjb250ZW50cylcbiIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxMTUzIHBlcGlnZW4uYzoxMTUzCisjOiBwZWlnZW4uYzoxMjAzIHBlcGlnZW4uYzoxMjAzCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgdm1hOiAgICAgICAgICAgIEhpbnQgICAgVGltZSAgICAgIEZvcndhcmQgIERMTCAgICAgICBGaXJzdFxuIgogIiAgICAgICAgICAgICAgICAgVGFibGUgICBTdGFtcCAgICAgQ2hhaW4gICAgTmFtZSAgICAgIFRodW5rXG4iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTIwNCBwZXBpZ2VuLmM6MTIwNAorIzogcGVpZ2VuLmM6MTI1NCBwZXBpZ2VuLmM6MTI1NAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiXHRETEwgTmFtZTogJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxMjE1IHBlcGlnZW4uYzoxMjE1CisjOiBwZWlnZW4uYzoxMjY1IHBlcGlnZW4uYzoxMjY1CisjLCBjLWZvcm1hdAogbXNnaWQgIlx0dm1hOiAgSGludC9PcmQgTWVtYmVyLU5hbWUgQm91bmQtVG9cbiIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxMjQwIHBlcGlnZW4uYzoxMjQwCisjOiBwZWlnZW4uYzoxMjkwIHBlcGlnZW4uYzoxMjkwCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJUaGVyZSBpcyBhIGZpcnN0IHRodW5rLCBidXQgdGhlIHNlY3Rpb24gY29udGFpbmluZyBpdCBjb3VsZCBub3QgYmUgZm91bmRcbiIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxMzgwIHBlcGlnZW4uYzoxMzgwCisjOiBwZWlnZW4uYzoxNDMwIHBlcGlnZW4uYzoxNDMwCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJUaGVyZSBpcyBhbiBleHBvcnQgdGFibGUsIGJ1dCB0aGUgc2VjdGlvbiBjb250YWluaW5nIGl0IGNvdWxkIG5vdCBiZSBmb3VuZFxuIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjEzODUgcGVwaWdlbi5jOjEzODUKKyM6IHBlaWdlbi5jOjE0MzUgcGVwaWdlbi5jOjE0MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlRoZXJlIGlzIGFuIGV4cG9ydCB0YWJsZSBpbiAlcyBhdCAweCVseFxuIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjE0MTYgcGVwaWdlbi5jOjE0MTYKKyM6IHBlaWdlbi5jOjE0NjYgcGVwaWdlbi5jOjE0NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMjg2NywxMjkgKzMwODgsMTQzIEBACiAiXG4iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTQyMCBwZXBpZ2VuLmM6MTQyMAorIzogcGVpZ2VuLmM6MTQ3MCBwZXBpZ2VuLmM6MTQ3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJFeHBvcnQgRmxhZ3MgXHRcdFx0JWx4XG4iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTQyMyBwZXBpZ2VuLmM6MTQyMworIzogcGVpZ2VuLmM6MTQ3MyBwZXBpZ2VuLmM6MTQ3MwogIywgYy1mb3JtYXQKIG1zZ2lkICJUaW1lL0RhdGUgc3RhbXAgXHRcdCVseFxuIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjE0MjYgcGVwaWdlbi5jOjE0MjYKKyM6IHBlaWdlbi5jOjE0NzYgcGVwaWdlbi5jOjE0NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFqb3IvTWlub3IgXHRcdFx0JWQvJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxNDI5IHBlcGlnZW4uYzoxNDI5CisjOiBwZWlnZW4uYzoxNDc5IHBlcGlnZW4uYzoxNDc5CisjLCBjLWZvcm1hdAogbXNnaWQgIk5hbWUgXHRcdFx0XHQiCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTQzNSBwZXBpZ2VuLmM6MTQzNQorIzogcGVpZ2VuLmM6MTQ4NSBwZXBpZ2VuLmM6MTQ4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJPcmRpbmFsIEJhc2UgXHRcdFx0JWxkXG4iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTQzOCBwZXBpZ2VuLmM6MTQzOAorIzogcGVpZ2VuLmM6MTQ4OCBwZXBpZ2VuLmM6MTQ4OAorIywgYy1mb3JtYXQKIG1zZ2lkICJOdW1iZXIgaW46XG4iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTQ0MSBwZXBpZ2VuLmM6MTQ0MQorIzogcGVpZ2VuLmM6MTQ5MSBwZXBpZ2VuLmM6MTQ5MQogIywgYy1mb3JtYXQKIG1zZ2lkICJcdEV4cG9ydCBBZGRyZXNzIFRhYmxlIFx0XHQlMDhseFxuIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjE0NDUgcGVwaWdlbi5jOjE0NDUKKyM6IHBlaWdlbi5jOjE0OTUgcGVwaWdlbi5jOjE0OTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiXHRbTmFtZSBQb2ludGVyL09yZGluYWxdIFRhYmxlXHQlMDhseFxuIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjE0NDggcGVwaWdlbi5jOjE0NDgKKyM6IHBlaWdlbi5jOjE0OTggcGVwaWdlbi5jOjE0OTgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiVGFibGUgQWRkcmVzc2VzXG4iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTQ1MSBwZXBpZ2VuLmM6MTQ1MQorIzogcGVpZ2VuLmM6MTUwMSBwZXBpZ2VuLmM6MTUwMQorIywgYy1mb3JtYXQKIG1zZ2lkICJcdEV4cG9ydCBBZGRyZXNzIFRhYmxlIFx0XHQiCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTQ1NiBwZXBpZ2VuLmM6MTQ1NgorIzogcGVpZ2VuLmM6MTUwNiBwZXBpZ2VuLmM6MTUwNgorIywgYy1mb3JtYXQKIG1zZ2lkICJcdE5hbWUgUG9pbnRlciBUYWJsZSBcdFx0IgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjE0NjEgcGVwaWdlbi5jOjE0NjEKKyM6IHBlaWdlbi5jOjE1MTEgcGVwaWdlbi5jOjE1MTEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiXHRPcmRpbmFsIFRhYmxlIFx0XHRcdCIKIG1zZ3N0ciAiIgogCi0jOiBwZWlnZW4uYzoxNDc2IHBlcGlnZW4uYzoxNDc2CisjOiBwZWlnZW4uYzoxNTI2IHBlcGlnZW4uYzoxNTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJFeHBvcnQgQWRkcmVzcyBUYWJsZSAtLSBPcmRpbmFsIEJhc2UgJWxkXG4iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTQ5NSBwZXBpZ2VuLmM6MTQ5NQorIzogcGVpZ2VuLmM6MTU0NSBwZXBpZ2VuLmM6MTU0NQogbXNnaWQgIkZvcndhcmRlciBSVkEiCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTUwNiBwZXBpZ2VuLmM6MTUwNgorIzogcGVpZ2VuLmM6MTU1NiBwZXBpZ2VuLmM6MTU1NgogbXNnaWQgIkV4cG9ydCBSVkEiCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTUxMyBwZXBpZ2VuLmM6MTUxMworIzogcGVpZ2VuLmM6MTU2MyBwZXBpZ2VuLmM6MTU2MworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiW09yZGluYWwvTmFtZSBQb2ludGVyXSBUYWJsZVxuIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjE1NjggcGVwaWdlbi5jOjE1NjgKKyM6IHBlaWdlbi5jOjE2MTggcGVwaWdlbi5jOjE2MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiV2FybmluZywgLnBkYXRhIHNlY3Rpb24gc2l6ZSAoJWxkKSBpcyBub3QgYSBtdWx0aXBsZSBvZiAlZFxuIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjE1NzIgcGVwaWdlbi5jOjE1NzIKKyM6IHBlaWdlbi5jOjE2MjIgcGVwaWdlbi5jOjE2MjIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlRoZSBGdW5jdGlvbiBUYWJsZSAoaW50ZXJwcmV0ZWQgLnBkYXRhIHNlY3Rpb24gY29udGVudHMpXG4iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTU3NSBwZXBpZ2VuLmM6MTU3NQorIzogcGVpZ2VuLmM6MTYyNSBwZXBpZ2VuLmM6MTYyNQorIywgYy1mb3JtYXQKIG1zZ2lkICIgdm1hOlx0XHRcdEJlZ2luIEFkZHJlc3MgICAgRW5kIEFkZHJlc3MgICAgICBVbndpbmQgSW5mb1xuIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjE1NzcgcGVwaWdlbi5jOjE1NzcKKyM6IHBlaWdlbi5jOjE2MjcgcGVwaWdlbi5jOjE2MjcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiB2bWE6XHRcdEJlZ2luICAgIEVuZCAgICAgIEVIICAgICAgIEVIICAgICAgIFByb2xvZ0VuZCAgRXhjZXB0aW9uXG4iCiAiICAgICBcdFx0QWRkcmVzcyAgQWRkcmVzcyAgSGFuZGxlciAgRGF0YSAgICAgQWRkcmVzcyAgICBNYXNrXG4iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTY0NyBwZXBpZ2VuLmM6MTY0NworIzogcGVpZ2VuLmM6MTY5NyBwZXBpZ2VuLmM6MTY5NworIywgYy1mb3JtYXQKIG1zZ2lkICIgUmVnaXN0ZXIgc2F2ZSBtaWxsaWNvZGUiCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTY1MCBwZXBpZ2VuLmM6MTY1MAorIzogcGVpZ2VuLmM6MTcwMCBwZXBpZ2VuLmM6MTcwMAorIywgYy1mb3JtYXQKIG1zZ2lkICIgUmVnaXN0ZXIgcmVzdG9yZSBtaWxsaWNvZGUiCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTY1MyBwZXBpZ2VuLmM6MTY1MworIzogcGVpZ2VuLmM6MTcwMyBwZXBpZ2VuLmM6MTcwMworIywgYy1mb3JtYXQKIG1zZ2lkICIgR2x1ZSBjb2RlIHNlcXVlbmNlIgogbXNnc3RyICIiCiAKLSM6IHBlaWdlbi5jOjE3MDUgcGVwaWdlbi5jOjE3MDUKKyM6IHBlaWdlbi5jOjE3NTUgcGVwaWdlbi5jOjE3NTUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlxuIgogIlBFIEZpbGUgQmFzZSBSZWxvY2F0aW9ucyAoaW50ZXJwcmV0ZWQgLnJlbG9jIHNlY3Rpb24gY29udGVudHMpXG4iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTczNSBwZXBpZ2VuLmM6MTczNQorIzogcGVpZ2VuLmM6MTc4NSBwZXBpZ2VuLmM6MTc4NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiVmlydHVhbCBBZGRyZXNzOiAlMDhseCBDaHVuayBzaXplICVsZCAoMHglbHgpIE51bWJlciBvZiBmaXh1cHMgJWxkXG4iCiBtc2dzdHIgIiIKIAotIzogcGVpZ2VuLmM6MTc0OCBwZXBpZ2VuLmM6MTc0OAorIzogcGVpZ2VuLmM6MTc5OCBwZXBpZ2VuLmM6MTc5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJcdHJlbG9jICU0ZCBvZmZzZXQgJTR4IFslNGx4XSAlcyIKIG1zZ3N0ciAiIgpAQCAtMjk5Nyw3ICszMjMyLDcgQEAKICMuIFRoZSBNUyBkdW1wYmluIHByb2dyYW0gcmVwb3J0ZWRseSBhbmRzIHdpdGggMHhmZjBmIGJlZm9yZQogIy4gcHJpbnRpbmcgdGhlIGNoYXJhY3RlcmlzdGljcyBmaWVsZC4gIE5vdCBzdXJlIHdoeS4gIE5vIHJlYXNvbiB0bwogIy4gZW11bGF0ZSBpdCBoZXJlLgotIzogcGVpZ2VuLmM6MTc4OCBwZXBpZ2VuLmM6MTc4OAorIzogcGVpZ2VuLmM6MTgzOCBwZXBpZ2VuLmM6MTgzOAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCmRpZmYgLS1naXQgYS9iZmQvcmVsb2MuYyBiL2JmZC9yZWxvYy5jCmluZGV4IDliZmZhYTMuLmNjNGY2YTcgMTAwNjQ0Ci0tLSBhL2JmZC9yZWxvYy5jCisrKyBiL2JmZC9yZWxvYy5jCkBAIC0zNzcxLDYgKzM3NzEsODkgQEAKICAgVGhpcyBpcyB0aGUgNSBiaXRzIG9mIGEgdmFsdWUuCiAKIEVOVU0KKyAgQkZEX1JFTE9DXzE2Q19OVU0wOAorRU5VTVgKKyAgQkZEX1JFTE9DXzE2Q19OVU0wOF9DCitFTlVNWAorICBCRkRfUkVMT0NfMTZDX05VTTE2CitFTlVNWAorICBCRkRfUkVMT0NfMTZDX05VTTE2X0MKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfTlVNMzIKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfTlVNMzJfQworRU5VTVgKKyAgQkZEX1JFTE9DXzE2Q19ESVNQMDQKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfRElTUDA0X0MKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfRElTUDA4CitFTlVNWAorICBCRkRfUkVMT0NfMTZDX0RJU1AwOF9DCitFTlVNWAorICBCRkRfUkVMT0NfMTZDX0RJU1AxNgorRU5VTVgKKyAgQkZEX1JFTE9DXzE2Q19ESVNQMTZfQworRU5VTVgKKyAgQkZEX1JFTE9DXzE2Q19ESVNQMjQKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfRElTUDI0X0MKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfRElTUDI0YQorRU5VTVgKKyAgQkZEX1JFTE9DXzE2Q19ESVNQMjRhX0MKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfUkVHMDQKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfUkVHMDRfQworRU5VTVgKKyAgQkZEX1JFTE9DXzE2Q19SRUcwNGEKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfUkVHMDRhX0MKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfUkVHMTQKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfUkVHMTRfQworRU5VTVgKKyAgQkZEX1JFTE9DXzE2Q19SRUcxNgorRU5VTVgKKyAgQkZEX1JFTE9DXzE2Q19SRUcxNl9DCitFTlVNWAorICBCRkRfUkVMT0NfMTZDX1JFRzIwCitFTlVNWAorICBCRkRfUkVMT0NfMTZDX1JFRzIwX0MKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfQUJTMjAKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfQUJTMjBfQworRU5VTVgKKyAgQkZEX1JFTE9DXzE2Q19BQlMyNAorRU5VTVgKKyAgQkZEX1JFTE9DXzE2Q19BQlMyNF9DCitFTlVNWAorICBCRkRfUkVMT0NfMTZDX0lNTTA0CitFTlVNWAorICBCRkRfUkVMT0NfMTZDX0lNTTA0X0MKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfSU1NMTYKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfSU1NMTZfQworRU5VTVgKKyAgQkZEX1JFTE9DXzE2Q19JTU0yMAorRU5VTVgKKyAgQkZEX1JFTE9DXzE2Q19JTU0yMF9DCitFTlVNWAorICBCRkRfUkVMT0NfMTZDX0lNTTI0CitFTlVNWAorICBCRkRfUkVMT0NfMTZDX0lNTTI0X0MKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfSU1NMzIKK0VOVU1YCisgIEJGRF9SRUxPQ18xNkNfSU1NMzJfQworRU5VTURPQworICBOUyBDUjE2QyBSZWxvY2F0aW9ucy4KKworRU5VTQogICBCRkRfUkVMT0NfQ1JJU19CRElTUDgKIEVOVU1YCiAgIEJGRF9SRUxPQ19DUklTX1VOU0lHTkVEXzUKZGlmZiAtLWdpdCBhL2JmZC9zdGFicy5jIGIvYmZkL3N0YWJzLmMKaW5kZXggNDI5NDRhNC4uMDRiOTFmNiAxMDA2NDQKLS0tIGEvYmZkL3N0YWJzLmMKKysrIGIvYmZkL3N0YWJzLmMKQEAgLTEsNSArMSw1IEBACiAvKiBTdGFicyBpbiBzZWN0aW9ucyBsaW5raW5nIHN1cHBvcnQuCi0gICBDb3B5cmlnaHQgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMworICAgQ29weXJpZ2h0IDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgV3JpdHRlbiBieSBJYW4gTGFuY2UgVGF5bG9yLCBDeWdudXMgU3VwcG9ydC4KIApAQCAtNTYsMTIgKzU2LDE5IEBACiB9OwogCiAvKiBBIGxpbmtlZCBsaXN0IG9mIHRvdGFscyB0aGF0IHdlIGhhdmUgZm91bmQgZm9yIGEgcGFydGljdWxhciBoZWFkZXIKLSAgIGZpbGUuICAqLworICAgZmlsZS4gIEEgdG90YWwgaXMgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBwYXJ0aWN1bGFyIEJJTkNMLi4uRUlOQ0wKKyAgIHNlcXVlbmNlIG9mIFNUQUJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgZHVwbGljYXRlIHNlcXVlbmNlcy4KKyAgIEl0IGNvbnNpc3RzIG9mIHRocmVlIGZpZWxkcywgJ3N1bV9jaGFycycgd2hpY2ggaXMgdGhlIHN1bSBvZiBhbGwgdGhlCisgICBTVEFCUyBjaGFyYWN0ZXJzOyAnbnVtX2NoYXJzJyB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIHRoZXNlIGNoYXJhY3RlcworICAgYW5kICdzeW1iJyB3aGljaCBpcyBhIGJ1ZmZlciBvZiBhbGwgdGhlIHN5bWJvbHMgaW4gdGhlIHNlcXVlbmNlLiAgVGhpcworICAgYnVmZmVyIGlzIG9ubHkgY2hlY2tlZCBhcyBhIGxhc3QgcmVzb3J0LiAgKi8KIAogc3RydWN0IHN0YWJfbGlua19pbmNsdWRlc190b3RhbHMKIHsKICAgc3RydWN0IHN0YWJfbGlua19pbmNsdWRlc190b3RhbHMgKm5leHQ7Ci0gIGJmZF92bWEgdG90YWw7CisgIGJmZF92bWEgc3VtX2NoYXJzOyAgLyogQWNjdW11bGF0ZWQgc3VtIG9mIFNUQUJTIGNoYXJhY3RlcnMuICAqLworICBiZmRfdm1hIG51bV9jaGFyczsgIC8qIE51bWJlciBvZiBTVEFCUyBjaGFyYWN0ZXJzLiAgKi8KKyAgY29uc3QgY2hhciogc3ltYjsgICAvKiBUaGUgU1RBQlMgY2hhcmFjdGVycyB0aGVtc2VsdmVzLiAgKi8KIH07CiAKIC8qIEFuIGVudHJ5IGluIHRoZSBoZWFkZXIgZmlsZSBoYXNoIHRhYmxlLiAgKi8KQEAgLTM0MCwxNSArMzQ3LDIxIEBACiAJIGZpcnN0IG51bWJlciBhZnRlciBhbiBvcGVuIHBhcmVudGhlc2lzKS4gICovCiAgICAgICBpZiAodHlwZSA9PSAoaW50KSBOX0JJTkNMKQogCXsKLQkgIGJmZF92bWEgdmFsOworCSAgYmZkX3ZtYSBzdW1fY2hhcnM7CisJICBiZmRfdm1hIG51bV9jaGFyczsKKwkgIGJmZF92bWEgYnVmX2xlbiA9IDA7CisJICBjaGFyICogc3ltYjsKKwkgIGNoYXIgKiBzeW1iX3JvdmVyOwogCSAgaW50IG5lc3Q7Ci0JICBiZmRfYnl0ZSAqaW5jbF9zeW07Ci0JICBzdHJ1Y3Qgc3RhYl9saW5rX2luY2x1ZGVzX2VudHJ5ICppbmNsX2VudHJ5OwotCSAgc3RydWN0IHN0YWJfbGlua19pbmNsdWRlc190b3RhbHMgKnQ7Ci0JICBzdHJ1Y3Qgc3RhYl9leGNsX2xpc3QgKm5lOworCSAgYmZkX2J5dGUgKiBpbmNsX3N5bTsKKwkgIHN0cnVjdCBzdGFiX2xpbmtfaW5jbHVkZXNfZW50cnkgKiBpbmNsX2VudHJ5OworCSAgc3RydWN0IHN0YWJfbGlua19pbmNsdWRlc190b3RhbHMgKiB0OworCSAgc3RydWN0IHN0YWJfZXhjbF9saXN0ICogbmU7CiAKLQkgIHZhbCA9IDA7CisJICBzeW1iID0gc3ltYl9yb3ZlciA9IE5VTEw7CisJICBzdW1fY2hhcnMgPSBudW1fY2hhcnMgPSAwOwogCSAgbmVzdCA9IDA7CisKIAkgIGZvciAoaW5jbF9zeW0gPSBzeW0gKyBTVEFCU0laRTsKIAkgICAgICAgaW5jbF9zeW0gPCBzeW1lbmQ7CiAJICAgICAgIGluY2xfc3ltICs9IFNUQUJTSVpFKQpAQCAtMzc3LDcgKzM5MCwxNyBAQAogCQkJICsgYmZkX2dldF8zMiAoYWJmZCwgaW5jbF9zeW0gKyBTVFJEWE9GRikpOwogCQkgIGZvciAoOyAqc3RyICE9ICdcMCc7IHN0cisrKQogCQkgICAgewotCQkgICAgICB2YWwgKz0gKnN0cjsKKwkJICAgICAgaWYgKG51bV9jaGFycyA+PSBidWZfbGVuKQorCQkJeworCQkJICBidWZfbGVuICs9IDMyICogMTAyNDsKKwkJCSAgc3ltYiA9IGJmZF9yZWFsbG9jIChzeW1iLCBidWZfbGVuKTsKKwkJCSAgaWYgKHN5bWIgPT0gTlVMTCkKKwkJCSAgICBnb3RvIGVycm9yX3JldHVybjsKKwkJCSAgc3ltYl9yb3ZlciA9IHN5bWIgKyBudW1fY2hhcnM7CisJCQl9CisJCSAgICAgICogc3ltYl9yb3ZlciArKyA9ICogc3RyOworCQkgICAgICBzdW1fY2hhcnMgKz0gKnN0cjsKKwkJICAgICAgbnVtX2NoYXJzICsrOwogCQkgICAgICBpZiAoKnN0ciA9PSAnKCcpCiAJCQl7CiAJCQkgIC8qIFNraXAgdGhlIGZpbGUgbnVtYmVyLiAgKi8KQEAgLTM5MCw2ICs0MTMsOCBAQAogCQl9CiAJICAgIH0KIAorCSAgQkZEX0FTU0VSVCAobnVtX2NoYXJzID09IChiZmRfdm1hKSAoc3ltYl9yb3ZlciAtIHN5bWIpKTsKKwogCSAgLyogSWYgd2UgaGF2ZSBhbHJlYWR5IGluY2x1ZGVkIGEgaGVhZGVyIGZpbGUgd2l0aCB0aGUgc2FtZQogCSAgICAgdmFsdWUsIHRoZW4gcmVwbGFjZWQgdGhpcyBvbmUgd2l0aCBhbiBOX0VYQ0wgc3ltYm9sLiAgKi8KIAkgIGluY2xfZW50cnkgPSBzdGFiX2xpbmtfaW5jbHVkZXNfbG9va3VwICgmc2luZm8tPmluY2x1ZGVzLCBzdHJpbmcsCkBAIC0zOTgsNyArNDIzLDkgQEAKIAkgICAgZ290byBlcnJvcl9yZXR1cm47CiAKIAkgIGZvciAodCA9IGluY2xfZW50cnktPnRvdGFsczsgdCAhPSBOVUxMOyB0ID0gdC0+bmV4dCkKLQkgICAgaWYgKHQtPnRvdGFsID09IHZhbCkKKwkgICAgaWYgKHQtPnN1bV9jaGFycyA9PSBzdW1fY2hhcnMKKwkJJiYgdC0+bnVtX2NoYXJzID09IG51bV9jaGFycworCQkmJiBtZW1jbXAgKHQtPnN5bWIsIHN5bWIsIG51bV9jaGFycykgPT0gMCkKIAkgICAgICBicmVhazsKIAogCSAgLyogUmVjb3JkIHRoaXMgc3ltYm9sLCBzbyB0aGF0IHdlIGNhbiBzZXQgdGhlIHZhbHVlCkBAIC00MDgsNyArNDM1LDcgQEAKIAkgIGlmIChuZSA9PSBOVUxMKQogCSAgICBnb3RvIGVycm9yX3JldHVybjsKIAkgIG5lLT5vZmZzZXQgPSBzeW0gLSBzdGFiYnVmOwotCSAgbmUtPnZhbCA9IHZhbDsKKwkgIG5lLT52YWwgPSBzdW1fY2hhcnM7CiAJICBuZS0+dHlwZSA9IChpbnQpIE5fQklOQ0w7CiAJICBuZS0+bmV4dCA9IHNlY2luZm8tPmV4Y2xzOwogCSAgc2VjaW5mby0+ZXhjbHMgPSBuZTsKQEAgLTQyMSw3ICs0NDgsOSBAQAogCQkgICBiZmRfaGFzaF9hbGxvY2F0ZSAoJnNpbmZvLT5pbmNsdWRlcy5yb290LCBzaXplb2YgKnQpKTsKIAkgICAgICBpZiAodCA9PSBOVUxMKQogCQlnb3RvIGVycm9yX3JldHVybjsKLQkgICAgICB0LT50b3RhbCA9IHZhbDsKKwkgICAgICB0LT5zdW1fY2hhcnMgPSBzdW1fY2hhcnM7CisJICAgICAgdC0+bnVtX2NoYXJzID0gbnVtX2NoYXJzOworCSAgICAgIHQtPnN5bWIgPSBiZmRfcmVhbGxvYyAoc3ltYiwgbnVtX2NoYXJzKTsgLyogVHJpbSBkYXRhIGRvd24uICAqLwogCSAgICAgIHQtPm5leHQgPSBpbmNsX2VudHJ5LT50b3RhbHM7CiAJICAgICAgaW5jbF9lbnRyeS0+dG90YWxzID0gdDsKIAkgICAgfQpAQCAtNDMzLDYgKzQ2Miw5IEBACiAJCSBwYXNzIHRvIGNoYW5nZSB0aGUgdHlwZSB0byBOX0VYQ0wuICAqLwogCSAgICAgIG5lLT50eXBlID0gKGludCkgTl9FWENMOwogCisJICAgICAgLyogRnJlZSBvZmYgc3VwZXJmbHVvdXMgc3ltYm9scy4gICovCisJICAgICAgZnJlZSAoc3ltYik7CisKIAkgICAgICAvKiBNYXJrIHRoZSBza2lwcGVkIHN5bWJvbHMuICAqLwogCiAJICAgICAgbmVzdCA9IDA7CkBAIC00NTYsNiArNDg4LDkgQEAKIAkJICAgIH0KIAkJICBlbHNlIGlmIChpbmNsX3R5cGUgPT0gKGludCkgTl9CSU5DTCkKIAkJICAgICsrbmVzdDsKKwkJICBlbHNlIGlmIChpbmNsX3R5cGUgPT0gKGludCkgTl9FWENMKQorCQkgICAgLyogS2VlcCBleGlzdGluZyBleGNsdXNpb24gbWFya3MuICAqLworCQkgICAgY29udGludWU7ICAgCiAJCSAgZWxzZSBpZiAobmVzdCA9PSAwKQogCQkgICAgewogCQkgICAgICAqaW5jbF9wc3RyaWR4ID0gKGJmZF9zaXplX3R5cGUpIC0xOwpkaWZmIC0tZ2l0IGEvYmZkL3RhcmdldHMuYyBiL2JmZC90YXJnZXRzLmMKaW5kZXggOWQ4MWM1Ni4uMjU2YTJhZiAxMDA2NDQKLS0tIGEvYmZkL3RhcmdldHMuYworKysgYi9iZmQvdGFyZ2V0cy5jCkBAIC01MTcsNiArNTE3LDcgQEAKIGV4dGVybiBjb25zdCBiZmRfdGFyZ2V0IGJmZF9lbGYzMl9iaWdhcm1fb2FiaV92ZWM7CiBleHRlcm4gY29uc3QgYmZkX3RhcmdldCBiZmRfZWxmMzJfYmlnYXJtX3ZlYzsKIGV4dGVybiBjb25zdCBiZmRfdGFyZ2V0IGJmZF9lbGYzMl9iaWdtaXBzX3ZlYzsKK2V4dGVybiBjb25zdCBiZmRfdGFyZ2V0IGJmZF9lbGYzMl9jcjE2Y192ZWM7CiBleHRlcm4gY29uc3QgYmZkX3RhcmdldCBiZmRfZWxmMzJfY3Jpc192ZWM7CiBleHRlcm4gY29uc3QgYmZkX3RhcmdldCBiZmRfZWxmMzJfZDEwdl92ZWM7CiBleHRlcm4gY29uc3QgYmZkX3RhcmdldCBiZmRfZWxmMzJfZDMwdl92ZWM7CkBAIC04MDcsNiArODA4LDcgQEAKIAkmYmZkX2VsZjMyX2JpZ2FybV9vYWJpX3ZlYywKIAkmYmZkX2VsZjMyX2JpZ2FybV92ZWMsCiAJJmJmZF9lbGYzMl9iaWdtaXBzX3ZlYywKKwkmYmZkX2VsZjMyX2NyMTZjX3ZlYywKIAkmYmZkX2VsZjMyX2NyaXNfdmVjLAogCSZiZmRfZWxmMzJfZDEwdl92ZWMsCiAJJmJmZF9lbGYzMl9kMzB2X3ZlYywKZGlmZiAtLWdpdCBhL2JmZC92ZXJzaW9uLmggYi9iZmQvdmVyc2lvbi5oCmluZGV4IDQ4M2JhZTAuLmEyODc4NmIgMTAwNjQ0Ci0tLSBhL2JmZC92ZXJzaW9uLmgKKysrIGIvYmZkL3ZlcnNpb24uaApAQCAtMSwzICsxLDMgQEAKLSNkZWZpbmUgQkZEX1ZFUlNJT05fREFURSAyMDA0MDMyMgorI2RlZmluZSBCRkRfVkVSU0lPTl9EQVRFIDIwMDQwNDA5CiAjZGVmaW5lIEJGRF9WRVJTSU9OIEBiZmRfdmVyc2lvbkAKICNkZWZpbmUgQkZEX1ZFUlNJT05fU1RSSU5HIEBiZmRfdmVyc2lvbl9zdHJpbmdACmRpZmYgLS1naXQgYS9iaW51dGlscy9DaGFuZ2VMb2cgYi9iaW51dGlscy9DaGFuZ2VMb2cKaW5kZXggOWM5Y2U4NS4uMGZiY2I1ZiAxMDA2NDQKLS0tIGEvYmludXRpbHMvQ2hhbmdlTG9nCisrKyBiL2JpbnV0aWxzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDA0LTA0LTA3ICBCZW5qYW1pbiBNb25hdGUgIDxiZW5qYW1pbi5tb25hdGVAY2VhLmZyPgorCisJUFIgODYKKwkqIGFyc3VwLmMgKGFyX3NhdmUpOiBVc2Ugc21hcnRfcmVuYW1lLgorCisyMDA0LTA0LTAxICBEZWFuIEx1aWNrIDxsdWlja0BjcmF5LmNvbT4KKworCSogcmVhZGVsZi5jIChkaXNwbGF5X2RlYnVnX3B1Ym5hbWVzKTogQWxpZ24gb2Zmc2V0IGFuZCBkYXRhCisJY29sdW1ucy4KKwkocmVhZF9hbmRfZGlzcGxheV9hdHRyX3ZhbHVlKTogQWRkIG1pc3NpbmcgYnJlYWs7CisJKGRlYnVnX2Rpc3BsYXlzKTogRW5hYmxlIHRoZSBkaXNwbGF5IG9mIHRoZSAuZGVidWdfcHVidHlwZXMKKwlzZWN0aW9uLgorCisyMDA0LTAzLTMwICBTdGFuIFNoZWJzICA8c2hlYnNAYXBwbGUuY29tPgorCisJKiBtcHctY29uZmlnLmluLCBtcHctbWFrZS5zZWQsIG1hYy1iaW51dGlscy5yOiBSZW1vdmUgTVBXCisJc3VwcG9ydCBmaWxlcywgbm8gbG9uZ2VyIHVzZWQuCisKKzIwMDQtMDMtMjMgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CisKKwkqIHJlYWRlbGYuYyAoZGVjb2RlX0FSTV9tYWNoaW5lX2ZsYWdzKTogQWRkIEVBQkkgdjMuCisKKzIwMDQtMDMtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CisKKwkqIHJlYWRlbGYuYyAoZGlzcGxheV9kZWJ1Z19mcmFtZXMpOiBEb24ndCBjcmFzaCBmb3IgbWlzbWF0Y2hlZAorCURXX0NGQV9yZXN0b3JlX3N0YXRlLgorCisyMDA0LTAzLTE5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgorCisJKiBNYWtlZmlsZS5hbTogUnVuICJtYWtlIGRlcC1hbSIuCisJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKwkqIGFjbG9jYWwubTQ6IFJlZ2VuZXJhdGUuCisJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiBwby9iaW51dGlscy5wb3Q6IFJlZ2VuZXJhdGUuCisKKzIwMDQtMDMtMTUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CisKKwkqIG9iamR1bXAuYyAoc3RydWN0IFNGSUxFKTogUmVwbGFjZSBjdXJyZW50IHBvaW50ZXIgd2l0aCBwb3MKKwlvZmZzZXQsIHJlbmFtZSBzaXplIHRvIGFsbG9jLgorCShvYmpkdW1wX3NwcmludGYpOiBBdm9pZCB1bm5lY2Vzc2FyeSBjb3BpZXMgaW4gdGhlIGNvbW1vbiBjYXNlCisJKGRpc2Fzc2VtYmxlX2J5dGVzKTogS2VlcCBzZmlsZSBsaXZlIHRocm91Z2hvdXQgdGhlCisJZnVuY3Rpb24uIEFkanVzdCB1c2FnZSBhcHByb3ByaWF0ZWx5LgorCisyMDA0LTAzLTEwICBCZW4gRWxsaXN0b24gIDxiamVAZ251Lm9yZz4KKworCSogTUFJTlRBSU5FUlM6IFVwZGF0ZSBteSBtYWlsIGFkZHJlc3MuCisKKzIwMDQtMDMtMDggIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGRlZmxleC5sOiBIYW5kbGUgIlBSSVZBVEUiIHN0cmluZy4KKwkqIGRlZnBhcnNlLnkgKCV0b2tlbik6IEFkZCBQUklWQVRFLgorCSgldHlwZSk6IEFkZCBvcHRfUFJJVkFURS4KKwkoZXhwbGluZSk6IFBhc3Mgb3B0X1BSSVZBVEUgdG8gZGVmX2V4cG9ydHMuCisJKG9wdF9QUklWQVRFKTogSGFuZGxlIFBSSVZBVEUgdG9rZW4uCisJKiBkbGx0b29sLmggKGRlZl9leHBvcnRzKTogQWRkIDd0aCBwYXJhbSBmb3IgcHJpdmF0ZSBmbGFnIHRvCisJZGVjbGFyYXRpb24uCisJKiBkbGx0b29sLmM6IEFkZCBQUklWQVRFIHRvIGNvbW1lbnQgb24gRVhQT1JUUyBzeW50YXguCisJKHN0cnVjdCBleHBvcnQpOiBBZGQgJ3ByaXZhdGUnIGZpZWxkLgorCShkZWZfZXhwb3J0cyk6IFNldCAncHJpdmF0ZScgZmllbGQgb2Ygc3RydWN0IGV4cG9ydHMuCisJKHNjYW5fZHJlY3R2ZV9zeW1ib2xzKTogQWRqdXN0IGNhbGxzIHRvIGRlZl9leHBvcnRzLgorCShzY2FuX2ZpbHRlcmVkX3N5bWJvbHMpOiBMaWtld2lzZS4KKwkoZHVtcF9kZWZfaW5mbyk6IFByaW50ICdwcml2YXRlJyBmaWVsZC4KKwkoZ2VuX2RlZl9maWxlKTogTGlrZXdpc2UuCisJKGdlbl9saWJfZmlsZSk6IFNraXAgZ2VuZXJhdGlvbiBvZiBsaWIgb2JqZWN0IGlmIHByaXZhdGUuCisJRGVsZXRlIHRtcCBvYmplY3QgZmlsZXMgaW4gc2FtZSBvcmRlciBhcyB0aGV5IHdlcmUgZ2VuZXJhdGVkLgorCURvbid0IGRlbGV0ZSBub24tZXhpc3RlbnQgcHJpdmF0ZSBvYmplY3QgZmlsZXMuCisKKzIwMDQtMDItMjcgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CisKKwkqIGFyLmMgKG1haW4pOiBTdXBwb3J0IFBPU0lYLWNvbXBhdGlibGUgYXJndW1lbnQgcGFyc2luZy4KKworMjAwNC0wMi0yMyAgRGFuaWVsIEx1Y3EgIDxkYW5pZWxAbHVjcS5vcmc+CisKKwkqIHJlYWRlbGYuYyAocHJvY2Vzc19taXBzX3NwZWNpZmljKTogUHJpbnQgY29uZmxpY3Rzbm8gYXMgYW4KKwl1bnNpZ25lZCBsb25nLgorCisyMDA0LTAyLTIxICBEbWl0cnkgVGltb3Noa292ICA8ZG1pdHJ5QGJhaWthbC5ydT4KKworCSogZGxsdG9vbC5jIChnZW5fZXhwX2ZpbGUpOiBBbHdheXMgb3V0cHV0IG5hbWVzIGZvciBmb3J3YXJkZWQgc3ltYm9scy4KKworMjAwNC0wMi0xOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwkqIG9iamNvcHkuYyAoY29weV9zZWN0aW9uKTogQXZvaWQgd2FybmluZ3MuCisKIDIwMDQtMDItMTQgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAcmVkaGF0LmNvbT4KIAogCSogYXIuYyAocmVtb3ZlX291dHB1dCk6IFVzZSBiZmRfY2FjaGVfY2xvc2UuCmRpZmYgLS1naXQgYS9iaW51dGlscy9NQUlOVEFJTkVSUyBiL2JpbnV0aWxzL01BSU5UQUlORVJTCmluZGV4IDc5Y2FiYWEuLjI4YzkxNDQgMTAwNjQ0Ci0tLSBhL2JpbnV0aWxzL01BSU5UQUlORVJTCisrKyBiL2JpbnV0aWxzL01BSU5UQUlORVJTCkBAIC01OSw3ICs1OSw3IEBACiAgIEFSTQkJICAgUmljaGFyZCBFYXJuc2hhdyA8cmVhcm5zaGFAYXJtLmNvbT4KICAgQVZSCQkgICBEZW5pcyBDaGVydHlrb3YgPGRlbmlzY0BvdmVydGEucnU+CiAgIEFWUgkJICAgTWFyZWsgTWljaGFsa2lld2ljeiA8bWFyZWttQGFtZWxlay5nZGEucGw+Ci0gIEJVSUxEIFNZU1RFTQkgICBCZW4gRWxsaXN0b24gPGJqZUB3YXNhYmlzeXN0ZW1zLmNvbT4KKyAgQlVJTEQgU1lTVEVNCSAgIEJlbiBFbGxpc3RvbiA8YmplQGdudS5vcmc+CiAgIEJVSUxEIFNZU1RFTQkgICBEYW5pZWwgSmFjb2Jvd2l0eiA8ZGFuQGRlYmlhbi5vcmc+CiAgIENSSVMJCSAgIEhhbnMtUGV0ZXIgTmlsc3NvbiA8aHBAYXhpcy5jb20+CiAgIERXQVJGMgkgICBKYXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpAQCAtNzcsNyArNzcsNyBAQAogICBpeDg2CQkgICBILkouTHUgPGhqbEBnbnUub3JnPgogICBpeDg2IElOVEVMIE1PREUgIERpZWdvIE5vdmlsbG8gPGRub3ZpbGxvQHJlZGhhdC5jb20+CiAgIE02OEhDMTEgTTY4SEMxMiAgU3RlcGhhbmUgQ2FycmV6IDxzdGNhcnJlekBuZXJpbS5mcj4KLSAgTTY4awkJICAgQmVuIEVsbGlzdG9uIDxiamVAd2FzYWJpc3lzdGVtcy5jb20+CisgIE02OGsJCSAgIEJlbiBFbGxpc3RvbiA8YmplQGdudS5vcmc+CiAgIE1JUFMJCSAgIEVyaWMgQ2hyaXN0b3BoZXIgPGVjaHJpc3RvQHJlZGhhdC5jb20+CiAgIE1JUFMJCSAgIFRoaWVtbyBTZXVmZXIgPHNldWZlckBjc3YuaWNhLnVuaS1zdHV0dGdhcnQuZGU+CiAgIE1NSVgJCSAgIEhhbnMtUGV0ZXIgTmlsc3NvbiA8aHBAYml0cmFuZ2UuY29tPgpAQCAtOTAsNyArOTAsNyBAQAogICBTSAkJICAgQWxleGFuZHJlIE9saXZhIDxhb2xpdmFAcmVkaGF0LmNvbT4KICAgU0gJCSAgIEtheiBLb2ppbWEgPGtrb2ppbWFAcnIuaWlqNHUub3IuanA+CiAgIFNQQVJDCQkgICBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgotICBURVNUU1VJVEVTCSAgIEJlbiBFbGxpc3RvbiA8YmplQHdhc2FiaXN5c3RlbXMuY29tPgorICBURVNUU1VJVEVTCSAgIEJlbiBFbGxpc3RvbiA8YmplQGdudS5vcmc+CiAgIFRJQzRYICAgICAgICAgICAgU3ZlaW4gU2VsZGFsIDxzdmVpbi5zZWxkYWxAc29saWRhcy5jb20+CiAgIFRJQzU0WCAgICAgICAgICAgVGltb3RoeSBXYWxsIDx0d2FsbEBhbHVtLm1pdC5lZHU+CiAgIFZBWAkJICAgSmFzb24gUiBUaG9ycGUgPHRob3JwZWpAd2FzYWJpc3lzdGVtcy5jb20+CmRpZmYgLS1naXQgYS9iaW51dGlscy9NYWtlZmlsZS5hbSBiL2JpbnV0aWxzL01ha2VmaWxlLmFtCmluZGV4IDMyNGMwZWEuLmQxMjgwMDEgMTAwNjQ0Ci0tLSBhL2JpbnV0aWxzL01ha2VmaWxlLmFtCisrKyBiL2JpbnV0aWxzL01ha2VmaWxlLmFtCkBAIC00NDAsNyArNDQwLDkgQEAKIG9iamNvcHkubzogb2JqY29weS5jIC4uL2JmZC9iZmQuaCAkKElOQ0RJUikvYW5zaWRlY2wuaCBcCiAgICQoSU5DRElSKS9zeW1jYXQuaCAkKElOQ0RJUikvcHJvZ3Jlc3MuaCBidWNvbW0uaCBjb25maWcuaCBcCiAgICQoSU5DRElSKS9iaW4tYnVncy5oICQoSU5DRElSKS9mb3Blbi1zYW1lLmggJChJTkNESVIpL2xpYmliZXJ0eS5oIFwKLSAgYnVkYmcuaCAkKElOQ0RJUikvZmlsZW5hbWVzLmggJChJTkNESVIpL2ZubWF0Y2guaAorICBidWRiZy5oICQoSU5DRElSKS9maWxlbmFtZXMuaCAkKElOQ0RJUikvZm5tYXRjaC5oICQoQkZERElSKS9lbGYtYmZkLmggXAorICAkKElOQ0RJUikvZWxmL2NvbW1vbi5oICQoSU5DRElSKS9lbGYvaW50ZXJuYWwuaCAkKElOQ0RJUikvZWxmL2V4dGVybmFsLmggXAorICAkKElOQ0RJUikvYmZkbGluay5oCiBvYmpkdW1wLm86IG9iamR1bXAuYyAuLi9iZmQvYmZkLmggJChJTkNESVIpL2Fuc2lkZWNsLmggXAogICAkKElOQ0RJUikvc3ltY2F0LmggLi4vYmZkL2JmZHZlci5oICQoSU5DRElSKS9wcm9ncmVzcy5oIFwKICAgYnVjb21tLmggY29uZmlnLmggJChJTkNESVIpL2Jpbi1idWdzLmggJChJTkNESVIpL2ZvcGVuLXNhbWUuaCBcCmRpZmYgLS1naXQgYS9iaW51dGlscy9NYWtlZmlsZS5pbiBiL2JpbnV0aWxzL01ha2VmaWxlLmluCmluZGV4IDQ2ZWVhYzguLmM0ZTM2YjggMTAwNjQ0Ci0tLSBhL2JpbnV0aWxzL01ha2VmaWxlLmluCisrKyBiL2JpbnV0aWxzL01ha2VmaWxlLmluCkBAIC0xMTY4LDcgKzExNjgsOSBAQAogb2JqY29weS5vOiBvYmpjb3B5LmMgLi4vYmZkL2JmZC5oICQoSU5DRElSKS9hbnNpZGVjbC5oIFwKICAgJChJTkNESVIpL3N5bWNhdC5oICQoSU5DRElSKS9wcm9ncmVzcy5oIGJ1Y29tbS5oIGNvbmZpZy5oIFwKICAgJChJTkNESVIpL2Jpbi1idWdzLmggJChJTkNESVIpL2ZvcGVuLXNhbWUuaCAkKElOQ0RJUikvbGliaWJlcnR5LmggXAotICBidWRiZy5oICQoSU5DRElSKS9maWxlbmFtZXMuaCAkKElOQ0RJUikvZm5tYXRjaC5oCisgIGJ1ZGJnLmggJChJTkNESVIpL2ZpbGVuYW1lcy5oICQoSU5DRElSKS9mbm1hdGNoLmggJChCRkRESVIpL2VsZi1iZmQuaCBcCisgICQoSU5DRElSKS9lbGYvY29tbW9uLmggJChJTkNESVIpL2VsZi9pbnRlcm5hbC5oICQoSU5DRElSKS9lbGYvZXh0ZXJuYWwuaCBcCisgICQoSU5DRElSKS9iZmRsaW5rLmgKIG9iamR1bXAubzogb2JqZHVtcC5jIC4uL2JmZC9iZmQuaCAkKElOQ0RJUikvYW5zaWRlY2wuaCBcCiAgICQoSU5DRElSKS9zeW1jYXQuaCAuLi9iZmQvYmZkdmVyLmggJChJTkNESVIpL3Byb2dyZXNzLmggXAogICBidWNvbW0uaCBjb25maWcuaCAkKElOQ0RJUikvYmluLWJ1Z3MuaCAkKElOQ0RJUikvZm9wZW4tc2FtZS5oIFwKZGlmZiAtLWdpdCBhL2JpbnV0aWxzL2FjbG9jYWwubTQgYi9iaW51dGlscy9hY2xvY2FsLm00CmluZGV4IGQxZjRhMzYuLjQ5Y2ZjNGMgMTAwNjQ0Ci0tLSBhL2JpbnV0aWxzL2FjbG9jYWwubTQKKysrIGIvYmludXRpbHMvYWNsb2NhbC5tNApAQCAtMSw0ICsxLDQgQEAKLWRubCBhY2xvY2FsLm00IGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGFjbG9jYWwgMS40LXA1CitkbmwgYWNsb2NhbC5tNCBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBhY2xvY2FsIDEuNC1wNgogCiBkbmwgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LTgsIDE5OTksIDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KQEAgLTMxLDEzICszMSwyMiBAQAogCiBkbmwgQU1fUFJPR19MRVgKIGRubCBMb29rIGZvciBmbGV4LCBsZXggb3IgbWlzc2luZywgdGhlbiBydW4gQUNfUFJPR19MRVggYW5kIEFDX0RFQ0xfWVlURVhUCi1BQ19ERUZVTihBTV9QUk9HX0xFWCwKK0FDX0RFRlVOKFtBTV9QUk9HX0xFWF0sCiBbbWlzc2luZ19kaXI9aWZlbHNlKFskMV0sLGBjZCAkYWNfYXV4X2RpciAmJiBwd2RgLCQxKQogQUNfQ0hFQ0tfUFJPR1MoTEVYLCBmbGV4IGxleCwgWyRtaXNzaW5nX2Rpci9taXNzaW5nIGZsZXhdKQogQUNfUFJPR19MRVgKIEFDX0RFQ0xfWVlURVhUXSkKIAotI3NlcmlhbCAxCisjIGlzYy1wb3NpeC5tNCBzZXJpYWwgMiAoZ2V0dGV4dC0wLjExLjIpCitkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCitkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCitkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgorZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKyMgVGhpcyBmaWxlIGlzIG5vdCBuZWVkZWQgd2l0aCBhdXRvY29uZi0yLjUzIGFuZCBuZXdlci4gIFJlbW92ZSBpdCBpbiAyMDA1LgorCiAjIFRoaXMgdGVzdCByZXBsYWNlcyB0aGUgb25lIGluIGF1dG9jb25mLgogIyBDdXJyZW50bHkgdGhpcyBtYWNybyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZSBhdXRvY29uZiBtYWNybwogIyBiZWNhdXNlIGdldHRleHQncyBnZXR0ZXh0Lm00IChkaXN0cmlidXRlZCBpbiB0aGUgYXV0b21ha2UgcGFja2FnZSkKQEAgLTY1LDcgKzc0LDggQEAKIGRubCBBTV9JTklUX0FVVE9NQUtFKHBhY2thZ2UsdmVyc2lvbiwgW25vLWRlZmluZV0pCiAKIEFDX0RFRlVOKFtBTV9JTklUX0FVVE9NQUtFXSwKLVtBQ19SRVFVSVJFKFtBQ19QUk9HX0lOU1RBTExdKQorW0FDX1JFUVVJUkUoW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT05dKWRubAorQUNfUkVRVUlSRShbQUNfUFJPR19JTlNUQUxMXSkKIFBBQ0tBR0U9WyQxXQogQUNfU1VCU1QoUEFDS0FHRSkKIFZFUlNJT049WyQyXQpAQCAtODEsMTMgKzkxLDQyIEBACiBBQ19SRVFVSVJFKFtBQ19BUkdfUFJPR1JBTV0pCiBkbmwgRklYTUUgVGhpcyBpcyB0cnVseSBncm9zcy4KIG1pc3NpbmdfZGlyPWBjZCAkYWNfYXV4X2RpciAmJiBwd2RgCi1BTV9NSVNTSU5HX1BST0coQUNMT0NBTCwgYWNsb2NhbCwgJG1pc3NpbmdfZGlyKQorQU1fTUlTU0lOR19QUk9HKEFDTE9DQUwsIGFjbG9jYWwtJHthbV9fYXBpX3ZlcnNpb259LCAkbWlzc2luZ19kaXIpCiBBTV9NSVNTSU5HX1BST0coQVVUT0NPTkYsIGF1dG9jb25mLCAkbWlzc2luZ19kaXIpCi1BTV9NSVNTSU5HX1BST0coQVVUT01BS0UsIGF1dG9tYWtlLCAkbWlzc2luZ19kaXIpCitBTV9NSVNTSU5HX1BST0coQVVUT01BS0UsIGF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSwgJG1pc3NpbmdfZGlyKQogQU1fTUlTU0lOR19QUk9HKEFVVE9IRUFERVIsIGF1dG9oZWFkZXIsICRtaXNzaW5nX2RpcikKIEFNX01JU1NJTkdfUFJPRyhNQUtFSU5GTywgbWFrZWluZm8sICRtaXNzaW5nX2RpcikKIEFDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKV0pCiAKKyMgQ29weXJpZ2h0IDIwMDIgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyMgYW55IGxhdGVyIHZlcnNpb24uCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKworIyBBTV9BVVRPTUFLRV9WRVJTSU9OKFZFUlNJT04pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQXV0b21ha2UgWC5ZIHRyYWNlcyB0aGlzIG1hY3JvIHRvIGVuc3VyZSBhY2xvY2FsLm00IGhhcyBiZWVuCisjIGdlbmVyYXRlZCBmcm9tIHRoZSBtNCBmaWxlcyBhY2NvbXBhbnlpbmcgQXV0b21ha2UgWC5ZLgorQUNfREVGVU4oW0FNX0FVVE9NQUtFX1ZFUlNJT05dLFthbV9fYXBpX3ZlcnNpb249IjEuNCJdKQorCisjIEFNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT04KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDYWxsIEFNX0FVVE9NQUtFX1ZFUlNJT04gc28gaXQgY2FuIGJlIHRyYWNlZC4KKyMgVGhpcyBmdW5jdGlvbiBpcyBBQ19SRVFVSVJFZCBieSBBQ19JTklUX0FVVE9NQUtFLgorQUNfREVGVU4oW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT05dLAorCSBbQU1fQVVUT01BS0VfVkVSU0lPTihbMS40LXA2XSldKQorCiAjCiAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lLgogIwpkaWZmIC0tZ2l0IGEvYmludXRpbHMvYXIuYyBiL2JpbnV0aWxzL2FyLmMKaW5kZXggYjg1ZDYyZS4uZWMwNjU3ZCAxMDA2NDQKLS0tIGEvYmludXRpbHMvYXIuYworKysgYi9iaW51dGlscy9hci5jCkBAIC0xLDYgKzEsNiBAQAogLyogYXIuYyAtIEFyY2hpdmUgbW9kaWZ5IGFuZCBleHRyYWN0LgogICAgQ29weXJpZ2h0IDE5OTEsIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCi0gICAyMDAxLCAyMDAyLCAyMDAzCisgICAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0CiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEJpbnV0aWxzLgpAQCAtMzUzLDYgKzM1Myw3IEBACiAgIGNoYXIgKmluYXJjaF9maWxlbmFtZTsKICAgaW50IHNob3dfdmVyc2lvbjsKICAgaW50IGk7CisgIGludCBkb19wb3NpeCA9IDA7CiAKICNpZiBkZWZpbmVkIChIQVZFX1NFVExPQ0FMRSkgJiYgZGVmaW5lZCAoSEFWRV9MQ19NRVNTQUdFUykKICAgc2V0bG9jYWxlIChMQ19NRVNTQUdFUywgIiIpOwpAQCAtNDU5LDEwNyArNDYwLDEyNSBAQAogICBpZiAoYXJnYyA8IDIpCiAgICAgdXNhZ2UgKDApOwogCi0gIGFyZ19wdHIgPSBhcmd2WzFdOworICBhcmdfaW5kZXggPSAxOworICBhcmdfcHRyID0gYXJndlthcmdfaW5kZXhdOwogCiAgIGlmICgqYXJnX3B0ciA9PSAnLScpCi0gICAgKythcmdfcHRyOwkJCS8qIGNvbXBhdGliaWxpdHkgKi8KLQotICB3aGlsZSAoKGMgPSAqYXJnX3B0cisrKSAhPSAnXDAnKQogICAgIHsKLSAgICAgIHN3aXRjaCAoYykKKyAgICAgIC8qIFdoZW4gdGhlIGZpcnN0IG9wdGlvbiBzdGFydHMgd2l0aCAnLScgd2Ugc3VwcG9ydCBQT1NJWC1jb21wYXRpYmxlCisJIG9wdGlvbiBwYXJzaW5nLiAgKi8KKyAgICAgIGRvX3Bvc2l4ID0gMTsKKyAgICAgICsrYXJnX3B0cjsJCQkvKiBjb21wYXRpYmlsaXR5ICovCisgICAgfQorCisgIGRvCisgICAgeworICAgICAgd2hpbGUgKChjID0gKmFyZ19wdHIrKykgIT0gJ1wwJykKIAl7Ci0JY2FzZSAnZCc6Ci0JY2FzZSAnbSc6Ci0JY2FzZSAncCc6Ci0JY2FzZSAncSc6Ci0JY2FzZSAncic6Ci0JY2FzZSAndCc6Ci0JY2FzZSAneCc6Ci0JICBpZiAob3BlcmF0aW9uICE9IG5vbmUpCi0JICAgIGZhdGFsIChfKCJ0d28gZGlmZmVyZW50IG9wZXJhdGlvbiBvcHRpb25zIHNwZWNpZmllZCIpKTsKIAkgIHN3aXRjaCAoYykKIAkgICAgewogCSAgICBjYXNlICdkJzoKLQkgICAgICBvcGVyYXRpb24gPSBkZWxldGU7Ci0JICAgICAgb3BlcmF0aW9uX2FsdGVyc19hcmNoID0gVFJVRTsKLQkgICAgICBicmVhazsKIAkgICAgY2FzZSAnbSc6Ci0JICAgICAgb3BlcmF0aW9uID0gbW92ZTsKLQkgICAgICBvcGVyYXRpb25fYWx0ZXJzX2FyY2ggPSBUUlVFOwotCSAgICAgIGJyZWFrOwogCSAgICBjYXNlICdwJzoKLQkgICAgICBvcGVyYXRpb24gPSBwcmludF9maWxlczsKLQkgICAgICBicmVhazsKIAkgICAgY2FzZSAncSc6Ci0JICAgICAgb3BlcmF0aW9uID0gcXVpY2tfYXBwZW5kOwotCSAgICAgIG9wZXJhdGlvbl9hbHRlcnNfYXJjaCA9IFRSVUU7Ci0JICAgICAgYnJlYWs7CiAJICAgIGNhc2UgJ3InOgotCSAgICAgIG9wZXJhdGlvbiA9IHJlcGxhY2U7Ci0JICAgICAgb3BlcmF0aW9uX2FsdGVyc19hcmNoID0gVFJVRTsKLQkgICAgICBicmVhazsKIAkgICAgY2FzZSAndCc6Ci0JICAgICAgb3BlcmF0aW9uID0gcHJpbnRfdGFibGU7Ci0JICAgICAgYnJlYWs7CiAJICAgIGNhc2UgJ3gnOgotCSAgICAgIG9wZXJhdGlvbiA9IGV4dHJhY3Q7CisJICAgICAgaWYgKG9wZXJhdGlvbiAhPSBub25lKQorCQlmYXRhbCAoXygidHdvIGRpZmZlcmVudCBvcGVyYXRpb24gb3B0aW9ucyBzcGVjaWZpZWQiKSk7CisJICAgICAgc3dpdGNoIChjKQorCQl7CisJCWNhc2UgJ2QnOgorCQkgIG9wZXJhdGlvbiA9IGRlbGV0ZTsKKwkJICBvcGVyYXRpb25fYWx0ZXJzX2FyY2ggPSBUUlVFOworCQkgIGJyZWFrOworCQljYXNlICdtJzoKKwkJICBvcGVyYXRpb24gPSBtb3ZlOworCQkgIG9wZXJhdGlvbl9hbHRlcnNfYXJjaCA9IFRSVUU7CisJCSAgYnJlYWs7CisJCWNhc2UgJ3AnOgorCQkgIG9wZXJhdGlvbiA9IHByaW50X2ZpbGVzOworCQkgIGJyZWFrOworCQljYXNlICdxJzoKKwkJICBvcGVyYXRpb24gPSBxdWlja19hcHBlbmQ7CisJCSAgb3BlcmF0aW9uX2FsdGVyc19hcmNoID0gVFJVRTsKKwkJICBicmVhazsKKwkJY2FzZSAncic6CisJCSAgb3BlcmF0aW9uID0gcmVwbGFjZTsKKwkJICBvcGVyYXRpb25fYWx0ZXJzX2FyY2ggPSBUUlVFOworCQkgIGJyZWFrOworCQljYXNlICd0JzoKKwkJICBvcGVyYXRpb24gPSBwcmludF90YWJsZTsKKwkJICBicmVhazsKKwkJY2FzZSAneCc6CisJCSAgb3BlcmF0aW9uID0gZXh0cmFjdDsKKwkJICBicmVhazsKKwkJfQorCSAgICBjYXNlICdsJzoKIAkgICAgICBicmVhazsKKwkgICAgY2FzZSAnYyc6CisJICAgICAgc2lsZW50X2NyZWF0ZSA9IDE7CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgJ28nOgorCSAgICAgIHByZXNlcnZlX2RhdGVzID0gMTsKKwkgICAgICBicmVhazsKKwkgICAgY2FzZSAnVic6CisJICAgICAgc2hvd192ZXJzaW9uID0gVFJVRTsKKwkgICAgICBicmVhazsKKwkgICAgY2FzZSAncyc6CisJICAgICAgd3JpdGVfYXJtYXAgPSAxOworCSAgICAgIGJyZWFrOworCSAgICBjYXNlICdTJzoKKwkgICAgICB3cml0ZV9hcm1hcCA9IC0xOworCSAgICAgIGJyZWFrOworCSAgICBjYXNlICd1JzoKKwkgICAgICBuZXdlcl9vbmx5ID0gMTsKKwkgICAgICBicmVhazsKKwkgICAgY2FzZSAndic6CisJICAgICAgdmVyYm9zZSA9IDE7CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgJ2EnOgorCSAgICAgIHBvc3R5cGUgPSBwb3NfYWZ0ZXI7CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgJ2InOgorCSAgICAgIHBvc3R5cGUgPSBwb3NfYmVmb3JlOworCSAgICAgIGJyZWFrOworCSAgICBjYXNlICdpJzoKKwkgICAgICBwb3N0eXBlID0gcG9zX2JlZm9yZTsKKwkgICAgICBicmVhazsKKwkgICAgY2FzZSAnTSc6CisJICAgICAgbXJpX21vZGUgPSAxOworCSAgICAgIGJyZWFrOworCSAgICBjYXNlICdOJzoKKwkgICAgICBjb3VudGVkX25hbWVfbW9kZSA9IFRSVUU7CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgJ2YnOgorCSAgICAgIGFyX3RydW5jYXRlID0gVFJVRTsKKwkgICAgICBicmVhazsKKwkgICAgY2FzZSAnUCc6CisJICAgICAgZnVsbF9wYXRobmFtZSA9IFRSVUU7CisJICAgICAgYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJICAgICAgLyogeGdldHRleHQ6Yy1mb3JtYXQgKi8KKwkgICAgICBub25fZmF0YWwgKF8oImlsbGVnYWwgb3B0aW9uIC0tICVjIiksIGMpOworCSAgICAgIHVzYWdlICgwKTsKIAkgICAgfQotCWNhc2UgJ2wnOgotCSAgYnJlYWs7Ci0JY2FzZSAnYyc6Ci0JICBzaWxlbnRfY3JlYXRlID0gMTsKLQkgIGJyZWFrOwotCWNhc2UgJ28nOgotCSAgcHJlc2VydmVfZGF0ZXMgPSAxOwotCSAgYnJlYWs7Ci0JY2FzZSAnVic6Ci0JICBzaG93X3ZlcnNpb24gPSBUUlVFOwotCSAgYnJlYWs7Ci0JY2FzZSAncyc6Ci0JICB3cml0ZV9hcm1hcCA9IDE7Ci0JICBicmVhazsKLQljYXNlICdTJzoKLQkgIHdyaXRlX2FybWFwID0gLTE7Ci0JICBicmVhazsKLQljYXNlICd1JzoKLQkgIG5ld2VyX29ubHkgPSAxOwotCSAgYnJlYWs7Ci0JY2FzZSAndic6Ci0JICB2ZXJib3NlID0gMTsKLQkgIGJyZWFrOwotCWNhc2UgJ2EnOgotCSAgcG9zdHlwZSA9IHBvc19hZnRlcjsKLQkgIGJyZWFrOwotCWNhc2UgJ2InOgotCSAgcG9zdHlwZSA9IHBvc19iZWZvcmU7Ci0JICBicmVhazsKLQljYXNlICdpJzoKLQkgIHBvc3R5cGUgPSBwb3NfYmVmb3JlOwotCSAgYnJlYWs7Ci0JY2FzZSAnTSc6Ci0JICBtcmlfbW9kZSA9IDE7Ci0JICBicmVhazsKLQljYXNlICdOJzoKLQkgIGNvdW50ZWRfbmFtZV9tb2RlID0gVFJVRTsKLQkgIGJyZWFrOwotCWNhc2UgJ2YnOgotCSAgYXJfdHJ1bmNhdGUgPSBUUlVFOwotCSAgYnJlYWs7Ci0JY2FzZSAnUCc6Ci0JICBmdWxsX3BhdGhuYW1lID0gVFJVRTsKLQkgIGJyZWFrOwotCWRlZmF1bHQ6Ci0JICAvKiB4Z2V0dGV4dDpjLWZvcm1hdCAqLwotCSAgbm9uX2ZhdGFsIChfKCJpbGxlZ2FsIG9wdGlvbiAtLSAlYyIpLCBjKTsKLQkgIHVzYWdlICgwKTsKIAl9CisKKyAgICAgIC8qIFdpdGggUE9TSVgtY29tcGF0aWJsZSBvcHRpb24gcGFyc2luZyBjb250aW51ZSB3aXRoIHRoZSBuZXh0CisJIGFyZ3VtZW50IGlmIGl0IHN0YXJ0cyB3aXRoICctJy4gICovCisgICAgICBpZiAoZG9fcG9zaXggJiYgYXJnX2luZGV4ICsgMSA8IGFyZ2MgJiYgYXJndlthcmdfaW5kZXggKyAxXVswXSA9PSAnLScpCisJYXJnX3B0ciA9IGFyZ3ZbKythcmdfaW5kZXhdICsgMTsKKyAgICAgIGVsc2UKKwlkb19wb3NpeCA9IDA7CiAgICAgfQorICB3aGlsZSAoZG9fcG9zaXgpOwogCiAgIGlmIChzaG93X3ZlcnNpb24pCiAgICAgcHJpbnRfdmVyc2lvbiAoImFyIik7CiAKLSAgaWYgKGFyZ2MgPCAzKQorICArK2FyZ19pbmRleDsKKyAgaWYgKGFyZ19pbmRleCA+PSBhcmdjKQogICAgIHVzYWdlICgwKTsKIAogICBpZiAobXJpX21vZGUpCkBAIC01NzgsNyArNTk3LDcgQEAKICAgICAgIGlmICgob3BlcmF0aW9uID09IG5vbmUgfHwgb3BlcmF0aW9uID09IHByaW50X3RhYmxlKQogCSAgJiYgd3JpdGVfYXJtYXAgPT0gMSkKIAl7Ci0JICByYW5saWJfb25seSAoYXJndlsyXSk7CisJICByYW5saWJfb25seSAoYXJndlthcmdfaW5kZXhdKTsKIAkgIHhleGl0ICgwKTsKIAl9CiAKQEAgLTU4OCw4ICs2MDcsNiBAQAogICAgICAgaWYgKG5ld2VyX29ubHkgJiYgb3BlcmF0aW9uICE9IHJlcGxhY2UpCiAJZmF0YWwgKF8oImB1JyBpcyBvbmx5IG1lYW5pbmdmdWwgd2l0aCB0aGUgYHInIG9wdGlvbi4iKSk7CiAKLSAgICAgIGFyZ19pbmRleCA9IDI7Ci0KICAgICAgIGlmIChwb3N0eXBlICE9IHBvc19kZWZhdWx0KQogCXBvc25hbWUgPSBhcmd2W2FyZ19pbmRleCsrXTsKIApkaWZmIC0tZ2l0IGEvYmludXRpbHMvYXJzdXAuYyBiL2JpbnV0aWxzL2Fyc3VwLmMKaW5kZXggYTYyMWJmOS4uNTE2MGRjNCAxMDA2NDQKLS0tIGEvYmludXRpbHMvYXJzdXAuYworKysgYi9iaW51dGlscy9hcnN1cC5jCkBAIC0xLDUgKzEsNSBAQAogLyogYXJzdXAuYyAtIEFyY2hpdmUgc3VwcG9ydCBmb3IgTVJJIGNvbXBhdGliaWxpdHkKLSAgIENvcHlyaWdodCAxOTkyLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAyMDAwLCAyMDAyLCAyMDAzCisgICBDb3B5cmlnaHQgMTk5MiwgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMjAwMCwgMjAwMiwgMjAwMywgMjAwNAogICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBCaW51dGlscy4KQEAgLTMzMyw3ICszMzMsNyBAQAogCiAgICAgICBiZmRfY2xvc2UgKG9iZmQpOwogCi0gICAgICByZW5hbWUgKG9maWxlbmFtZSwgcmVhbF9uYW1lKTsKKyAgICAgIHNtYXJ0X3JlbmFtZSAob2ZpbGVuYW1lLCByZWFsX25hbWUsIDApOwogICAgICAgb2JmZCA9IDA7CiAgICAgICBmcmVlIChvZmlsZW5hbWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL2JpbnV0aWxzL2NvbmZpZy5pbiBiL2JpbnV0aWxzL2NvbmZpZy5pbgppbmRleCBmMmJkMDQ5Li41M2UyMjg3IDEwMDY0NAotLS0gYS9iaW51dGlscy9jb25maWcuaW4KKysrIGIvYmludXRpbHMvY29uZmlnLmluCkBAIC0xMzMsNiArMTMzLDEyIEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvcGFyYW0uaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfU1lTX1BBUkFNX0gKIAorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICAqLworI3VuZGVmIEhBVkVfU1lTX1NUQVRfSAorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICAqLworI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0gKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAgKi8KICN1bmRlZiBIQVZFX1VOSVNURF9ICiAKZGlmZiAtLWdpdCBhL2JpbnV0aWxzL2NvbmZpZ3VyZSBiL2JpbnV0aWxzL2NvbmZpZ3VyZQppbmRleCA4MjEwOTEwLi5kNTI4MDdlIDEwMDc1NQotLS0gYS9iaW51dGlscy9jb25maWd1cmUKKysrIGIvYmludXRpbHMvY29uZmlndXJlCkBAIC01Myw3ICs1Myw2IEBACiBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPXMseCx4LAogc2lsZW50PQogc2l0ZT0KLXNpdGVmaWxlPQogc3JjZGlyPQogdGFyZ2V0PU5PTkUKIHZlcmJvc2U9CkBAIC0xNjgsNyArMTY3LDYgQEAKICAgLS1oZWxwICAgICAgICAgICAgICAgICAgcHJpbnQgdGhpcyBtZXNzYWdlCiAgIC0tbm8tY3JlYXRlICAgICAgICAgICAgIGRvIG5vdCBjcmVhdGUgb3V0cHV0IGZpbGVzCiAgIC0tcXVpZXQsIC0tc2lsZW50ICAgICAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nLi4uJyBtZXNzYWdlcwotICAtLXNpdGUtZmlsZT1GSUxFICAgICAgICB1c2UgRklMRSBhcyB0aGUgc2l0ZSBmaWxlCiAgIC0tdmVyc2lvbiAgICAgICAgICAgICAgIHByaW50IHRoZSB2ZXJzaW9uIG9mIGF1dG9jb25mIHRoYXQgY3JlYXRlZCBjb25maWd1cmUKIERpcmVjdG9yeSBhbmQgZmlsZSBuYW1lczoKICAgLS1wcmVmaXg9UFJFRklYICAgICAgICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMgaW4gUFJFRklYCkBAIC0zMzksMTEgKzMzNyw2IEBACiAgIC1zaXRlPSogfCAtLXNpdGU9KiB8IC0tc2l0PSopCiAgICAgc2l0ZT0iJGFjX29wdGFyZyIgOzsKIAotICAtc2l0ZS1maWxlIHwgLS1zaXRlLWZpbGUgfCAtLXNpdGUtZmlsIHwgLS1zaXRlLWZpIHwgLS1zaXRlLWYpCi0gICAgYWNfcHJldj1zaXRlZmlsZSA7OwotICAtc2l0ZS1maWxlPSogfCAtLXNpdGUtZmlsZT0qIHwgLS1zaXRlLWZpbD0qIHwgLS1zaXRlLWZpPSogfCAtLXNpdGUtZj0qKQotICAgIHNpdGVmaWxlPSIkYWNfb3B0YXJnIiA7OwotCiAgIC1zcmNkaXIgfCAtLXNyY2RpciB8IC0tc3JjZGkgfCAtLXNyY2QgfCAtLXNyYyB8IC0tc3IpCiAgICAgYWNfcHJldj1zcmNkaXIgOzsKICAgLXNyY2Rpcj0qIHwgLS1zcmNkaXI9KiB8IC0tc3JjZGk9KiB8IC0tc3JjZD0qIHwgLS1zcmM9KiB8IC0tc3I9KikKQEAgLTUwOSwxNiArNTAyLDEyIEBACiBzcmNkaXI9YGVjaG8gIiR7c3JjZGlyfSIgfCBzZWQgJ3MlXChbXi9dXCkvKiQlXDElJ2AKIAogIyBQcmVmZXIgZXhwbGljaXRseSBzZWxlY3RlZCBmaWxlIHRvIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgb25lcy4KLWlmIHRlc3QgLXogIiRzaXRlZmlsZSI7IHRoZW4KLSAgaWYgdGVzdCAteiAiJENPTkZJR19TSVRFIjsgdGhlbgotICAgIGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgotICAgICAgQ09ORklHX1NJVEU9IiRwcmVmaXgvc2hhcmUvY29uZmlnLnNpdGUgJHByZWZpeC9ldGMvY29uZmlnLnNpdGUiCi0gICAgZWxzZQotICAgICAgQ09ORklHX1NJVEU9IiRhY19kZWZhdWx0X3ByZWZpeC9zaGFyZS9jb25maWcuc2l0ZSAkYWNfZGVmYXVsdF9wcmVmaXgvZXRjL2NvbmZpZy5zaXRlIgotICAgIGZpCitpZiB0ZXN0IC16ICIkQ09ORklHX1NJVEUiOyB0aGVuCisgIGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgorICAgIENPTkZJR19TSVRFPSIkcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlICRwcmVmaXgvZXRjL2NvbmZpZy5zaXRlIgorICBlbHNlCisgICAgQ09ORklHX1NJVEU9IiRhY19kZWZhdWx0X3ByZWZpeC9zaGFyZS9jb25maWcuc2l0ZSAkYWNfZGVmYXVsdF9wcmVmaXgvZXRjL2NvbmZpZy5zaXRlIgogICBmaQotZWxzZQotICBDT05GSUdfU0lURT0iJHNpdGVmaWxlIgogZmkKIGZvciBhY19zaXRlX2ZpbGUgaW4gJENPTkZJR19TSVRFOyBkbwogICBpZiB0ZXN0IC1yICIkYWNfc2l0ZV9maWxlIjsgdGhlbgpAQCAtNTU3LDEyICs1NDYsMTIgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBDeWd3aW4gZW52aXJvbm1lbnQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjU2MTogY2hlY2tpbmcgZm9yIEN5Z3dpbiBlbnZpcm9ubWVudCIgPiY1CitlY2hvICJjb25maWd1cmU6NTUwOiBjaGVja2luZyBmb3IgQ3lnd2luIGVudmlyb25tZW50IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9jeWd3aW4nK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1NjYgImNvbmZpZ3VyZSIKKyNsaW5lIDU1NSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewpAQCAtNTczLDcgKzU2Miw3IEBACiByZXR1cm4gX19DWUdXSU5fXzsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1Nzc6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTY2OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3ZfY3lnd2luPXllcwogZWxzZQpAQCAtNTkwLDE5ICs1NzksMTkgQEAKIENZR1dJTj0KIHRlc3QgIiRhY19jdl9jeWd3aW4iID0geWVzICYmIENZR1dJTj15ZXMKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtaW5ndzMyIGVudmlyb25tZW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1OTQ6IGNoZWNraW5nIGZvciBtaW5ndzMyIGVudmlyb25tZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1ODM6IGNoZWNraW5nIGZvciBtaW5ndzMyIGVudmlyb25tZW50IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9taW5ndzMyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTk5ICJjb25maWd1cmUiCisjbGluZSA1ODggImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKIHJldHVybiBfX01JTkdXMzJfXzsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MDY6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTk1OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3ZfbWluZ3czMj15ZXMKIGVsc2UKQEAgLTY2Nyw3ICs2NTYsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NjcxOiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2NjA6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQogCiBob3N0X2FsaWFzPSRob3N0CiBjYXNlICIkaG9zdF9hbGlhcyIgaW4KQEAgLTY4OCw3ICs2NzcsNyBAQAogZWNobyAiJGFjX3QiIiRob3N0IiAxPiY2CiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NjkyOiBjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUiID4mNQorZWNobyAiY29uZmlndXJlOjY4MTogY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlIiA+JjUKIAogdGFyZ2V0X2FsaWFzPSR0YXJnZXQKIGNhc2UgIiR0YXJnZXRfYWxpYXMiIGluCkBAIC03MDYsNyArNjk1LDcgQEAKIGVjaG8gIiRhY190IiIkdGFyZ2V0IiAxPiY2CiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3MTA6IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2OTk6IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKIAogYnVpbGRfYWxpYXM9JGJ1aWxkCiBjYXNlICIkYnVpbGRfYWxpYXMiIGluCkBAIC03MzAsNyArNzE5LDcgQEAKIAogCiAgICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBzdHJlcnJvciBpbiAtbGNwb3NpeCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NzM0OiBjaGVja2luZyBmb3Igc3RyZXJyb3IgaW4gLWxjcG9zaXgiID4mNQorZWNobyAiY29uZmlndXJlOjcyMzogY2hlY2tpbmcgZm9yIHN0cmVycm9yIGluIC1sY3Bvc2l4IiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gY3Bvc2l4J18nc3RyZXJyb3IgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTczOCw3ICs3MjcsNyBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxjcG9zaXggICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNzQyICJjb25maWd1cmUiCisjbGluZSA3MzEgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTc0OSw3ICs3MzgsNyBAQAogc3RyZXJyb3IoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc1MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc0MjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTc3Myw2ICs3NjIsNyBAQAogCiAKIEJGRF9WRVJTSU9OPWBzZWQgLW4gLWUgJ3MvXi4uX0lOSVRfQVVUT01BS0UuKixbIAldKlwoW14gCV0qXClbIAldKikuKi9cMS9wJyA8ICR7c3JjZGlyfS8uLi9iZmQvY29uZmlndXJlLmluYAorYW1fX2FwaV92ZXJzaW9uPSIxLjQiCiAjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwKICMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcgogIyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6CkBAIC03ODUsNyArNzc1LDcgQEAKICMgU1ZSNCAvdXNyL3VjYi9pbnN0YWxsLCB3aGljaCB0cmllcyB0byB1c2UgdGhlIG5vbmV4aXN0ZW50IGdyb3VwICJzdGFmZiIKICMgLi9pbnN0YWxsLCB3aGljaCBjYW4gYmUgZXJyb25lb3VzbHkgY3JlYXRlZCBieSBtYWtlIGZyb20gLi9pbnN0YWxsLnNoLgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGEgQlNEIGNvbXBhdGlibGUgaW5zdGFsbCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Nzg5OiBjaGVja2luZyBmb3IgYSBCU0QgY29tcGF0aWJsZSBpbnN0YWxsIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo3Nzk6IGNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwiID4mNQogaWYgdGVzdCAteiAiJElOU1RBTEwiOyB0aGVuCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF9pbnN0YWxsJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTgzOCw3ICs4MjgsNyBAQAogdGVzdCAteiAiJElOU1RBTExfREFUQSIgJiYgSU5TVEFMTF9EQVRBPScke0lOU1RBTEx9IC1tIDY0NCcKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4NDI6IGNoZWNraW5nIHdoZXRoZXIgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2FuZSIgPiY1CitlY2hvICJjb25maWd1cmU6ODMyOiBjaGVja2luZyB3aGV0aGVyIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmUiID4mNQogIyBKdXN0IGluIGNhc2UKIHNsZWVwIDEKIGVjaG8gdGltZXN0YW1wID4gY29uZnRlc3RmaWxlCkBAIC04OTUsNyArODg1LDcgQEAKIHRlc3QgIiRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIiA9ICIiICYmIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9InMseCx4LCIKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJHtNQUtFfSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6ODk5OiBjaGVja2luZyB3aGV0aGVyICR7TUFLRS1tYWtlfSBzZXRzIFwke01BS0V9IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo4ODk6IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCR7TUFLRX0iID4mNQogc2V0IGR1bW15ICR7TUFLRS1tYWtlfTsgYWNfbWFrZT1gZWNobyAiJDIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC05NDAsMjEgKzkzMCwyMSBAQAogCiAKIG1pc3NpbmdfZGlyPWBjZCAkYWNfYXV4X2RpciAmJiBwd2RgCi1lY2hvICRhY19uICJjaGVja2luZyBmb3Igd29ya2luZyBhY2xvY2FsIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo5NDU6IGNoZWNraW5nIGZvciB3b3JraW5nIGFjbG9jYWwiID4mNQorZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWNsb2NhbC0ke2FtX19hcGlfdmVyc2lvbn0iIi4uLiAkYWNfYyIgMT4mNgorZWNobyAiY29uZmlndXJlOjkzNTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWNsb2NhbC0ke2FtX19hcGlfdmVyc2lvbn0iID4mNQogIyBSdW4gdGVzdCBpbiBhIHN1YnNoZWxsOyBzb21lIHZlcnNpb25zIG9mIHNoIHdpbGwgcHJpbnQgYW4gZXJyb3IgaWYKICMgYW4gZXhlY3V0YWJsZSBpcyBub3QgZm91bmQsIGV2ZW4gaWYgc3RkZXJyIGlzIHJlZGlyZWN0ZWQuCiAjIFJlZGlyZWN0IHN0ZGluIHRvIHBsYWNhdGUgb2xkZXIgdmVyc2lvbnMgb2YgYXV0b2NvbmYuICBTaWdoLgotaWYgKGFjbG9jYWwgLS12ZXJzaW9uKSA8IC9kZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICBBQ0xPQ0FMPWFjbG9jYWwKK2lmIChhY2xvY2FsLSR7YW1fX2FwaV92ZXJzaW9ufSAtLXZlcnNpb24pIDwgL2Rldi9udWxsID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgIEFDTE9DQUw9YWNsb2NhbC0ke2FtX19hcGlfdmVyc2lvbn0KICAgIGVjaG8gIiRhY190IiJmb3VuZCIgMT4mNgogZWxzZQotICAgQUNMT0NBTD0iJG1pc3NpbmdfZGlyL21pc3NpbmcgYWNsb2NhbCIKKyAgIEFDTE9DQUw9IiRtaXNzaW5nX2Rpci9taXNzaW5nIGFjbG9jYWwtJHthbV9fYXBpX3ZlcnNpb259IgogICAgZWNobyAiJGFjX3QiIm1pc3NpbmciIDE+JjYKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9jb25mIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo5NTg6IGNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9jb25mIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo5NDg6IGNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9jb25mIiA+JjUKICMgUnVuIHRlc3QgaW4gYSBzdWJzaGVsbDsgc29tZSB2ZXJzaW9ucyBvZiBzaCB3aWxsIHByaW50IGFuIGVycm9yIGlmCiAjIGFuIGV4ZWN1dGFibGUgaXMgbm90IGZvdW5kLCBldmVuIGlmIHN0ZGVyciBpcyByZWRpcmVjdGVkLgogIyBSZWRpcmVjdCBzdGRpbiB0byBwbGFjYXRlIG9sZGVyIHZlcnNpb25zIG9mIGF1dG9jb25mLiAgU2lnaC4KQEAgLTk2NiwyMSArOTU2LDIxIEBACiAgICBlY2hvICIkYWNfdCIibWlzc2luZyIgMT4mNgogZmkKIAotZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgYXV0b21ha2UiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjk3MTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYXV0b21ha2UiID4mNQorZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgYXV0b21ha2UtJHthbV9fYXBpX3ZlcnNpb259IiIuLi4gJGFjX2MiIDE+JjYKK2VjaG8gImNvbmZpZ3VyZTo5NjE6IGNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSIgPiY1CiAjIFJ1biB0ZXN0IGluIGEgc3Vic2hlbGw7IHNvbWUgdmVyc2lvbnMgb2Ygc2ggd2lsbCBwcmludCBhbiBlcnJvciBpZgogIyBhbiBleGVjdXRhYmxlIGlzIG5vdCBmb3VuZCwgZXZlbiBpZiBzdGRlcnIgaXMgcmVkaXJlY3RlZC4KICMgUmVkaXJlY3Qgc3RkaW4gdG8gcGxhY2F0ZSBvbGRlciB2ZXJzaW9ucyBvZiBhdXRvY29uZi4gIFNpZ2guCi1pZiAoYXV0b21ha2UgLS12ZXJzaW9uKSA8IC9kZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICBBVVRPTUFLRT1hdXRvbWFrZQoraWYgKGF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSAtLXZlcnNpb24pIDwgL2Rldi9udWxsID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgIEFVVE9NQUtFPWF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufQogICAgZWNobyAiJGFjX3QiImZvdW5kIiAxPiY2CiBlbHNlCi0gICBBVVRPTUFLRT0iJG1pc3NpbmdfZGlyL21pc3NpbmcgYXV0b21ha2UiCisgICBBVVRPTUFLRT0iJG1pc3NpbmdfZGlyL21pc3NpbmcgYXV0b21ha2UtJHthbV9fYXBpX3ZlcnNpb259IgogICAgZWNobyAiJGFjX3QiIm1pc3NpbmciIDE+JjYKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9oZWFkZXIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjk4NDogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYXV0b2hlYWRlciIgPiY1CitlY2hvICJjb25maWd1cmU6OTc0OiBjaGVja2luZyBmb3Igd29ya2luZyBhdXRvaGVhZGVyIiA+JjUKICMgUnVuIHRlc3QgaW4gYSBzdWJzaGVsbDsgc29tZSB2ZXJzaW9ucyBvZiBzaCB3aWxsIHByaW50IGFuIGVycm9yIGlmCiAjIGFuIGV4ZWN1dGFibGUgaXMgbm90IGZvdW5kLCBldmVuIGlmIHN0ZGVyciBpcyByZWRpcmVjdGVkLgogIyBSZWRpcmVjdCBzdGRpbiB0byBwbGFjYXRlIG9sZGVyIHZlcnNpb25zIG9mIGF1dG9jb25mLiAgU2lnaC4KQEAgLTk5Myw3ICs5ODMsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgbWFrZWluZm8iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjk5NzogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbWFrZWluZm8iID4mNQorZWNobyAiY29uZmlndXJlOjk4NzogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbWFrZWluZm8iID4mNQogIyBSdW4gdGVzdCBpbiBhIHN1YnNoZWxsOyBzb21lIHZlcnNpb25zIG9mIHNoIHdpbGwgcHJpbnQgYW4gZXJyb3IgaWYKICMgYW4gZXhlY3V0YWJsZSBpcyBub3QgZm91bmQsIGV2ZW4gaWYgc3RkZXJyIGlzIHJlZGlyZWN0ZWQuCiAjIFJlZGlyZWN0IHN0ZGluIHRvIHBsYWNhdGUgb2xkZXIgdmVyc2lvbnMgb2YgYXV0b2NvbmYuICBTaWdoLgpAQCAtMTA3OSw3ICsxMDY5LDcgQEAKICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZ2NjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBnY2M7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTA4MzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxMDczOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ0MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTEwOSw3ICsxMDk5LDcgQEAKICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgY2M7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTExMzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxMTAzOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ0MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTE2MCw3ICsxMTUwLDcgQEAKICAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGNsOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjExNjQ6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MTE1NDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NDJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTExOTIsNyArMTE4Miw3IEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgd29ya3MiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjExOTY6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSB3b3JrcyIgPiY1CitlY2hvICJjb25maWd1cmU6MTE4NjogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIHdvcmtzIiA+JjUKIAogYWNfZXh0PWMKICMgQ0ZMQUdTIGlzIG5vdCBpbiBhY19jcHAgYmVjYXVzZSAtZywgLU8sIGV0Yy4gYXJlIG5vdCB2YWxpZCBjcHAgb3B0aW9ucy4KQEAgLTEyMDMsMTIgKzExOTMsMTIgQEAKIAogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PCBFT0YKIAotI2xpbmUgMTIwNyAiY29uZmlndXJlIgorI2xpbmUgMTE5NyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIG1haW4oKXtyZXR1cm4oMCk7fQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEyMTI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjAyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgYWNfY3ZfcHJvZ19jY193b3Jrcz15ZXMKICAgIyBJZiB3ZSBjYW4ndCBydW4gYSB0cml2aWFsIHByb2dyYW0sIHdlIGFyZSBwcm9iYWJseSB1c2luZyBhIGNyb3NzIGNvbXBpbGVyLgogICBpZiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGw7IHRoZW4KQEAgLTEyMzQsMTIgKzEyMjQsMTIgQEAKICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBpbnN0YWxsYXRpb24gb3IgY29uZmlndXJhdGlvbiBwcm9ibGVtOiBDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMuIiAxPiYyOyBleGl0IDE7IH0KIGZpCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgaXMgYSBjcm9zcy1jb21waWxlciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTIzODogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIGlzIGEgY3Jvc3MtY29tcGlsZXIiID4mNQorZWNobyAiY29uZmlndXJlOjEyMjg6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSBpcyBhIGNyb3NzLWNvbXBpbGVyIiA+JjUKIGVjaG8gIiRhY190IiIkYWNfY3ZfcHJvZ19jY19jcm9zcyIgMT4mNgogY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdOVSBDIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxMjQzOiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyBHTlUgQyIgPiY1CitlY2hvICJjb25maWd1cmU6MTIzMzogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfZ2NjJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTEyNDgsNyArMTIzOCw3IEBACiAgIHllczsKICNlbmRpZgogRU9GCi1pZiB7IGFjX3RyeT0nJHtDQy1jY30gLUUgY29uZnRlc3QuYyc7IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTI1MjogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH07IH0gfCBlZ3JlcCB5ZXMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCitpZiB7IGFjX3RyeT0nJHtDQy1jY30gLUUgY29uZnRlc3QuYyc7IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTI0MjogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH07IH0gfCBlZ3JlcCB5ZXMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgIGFjX2N2X3Byb2dfZ2NjPXllcwogZWxzZQogICBhY19jdl9wcm9nX2djYz1ubwpAQCAtMTI2Nyw3ICsxMjU3LDcgQEAKIGFjX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgogQ0ZMQUdTPQogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1nIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxMjcxOiBjaGVja2luZyB3aGV0aGVyICR7Q0MtY2N9IGFjY2VwdHMgLWciID4mNQorZWNobyAiY29uZmlndXJlOjEyNjE6IGNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gYWNjZXB0cyAtZyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19jY19nJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTEzMTAsNyArMTMwMCw3IEBACiBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAjIENoZWNrIGlmIGdjYyAtcHJpbnQtcHJvZy1uYW1lPWxkIGdpdmVzIGEgcGF0aC4KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGxkIHVzZWQgYnkgR0NDIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxMzE0OiBjaGVja2luZyBmb3IgbGQgdXNlZCBieSBHQ0MiID4mNQorZWNobyAiY29uZmlndXJlOjEzMDQ6IGNoZWNraW5nIGZvciBsZCB1c2VkIGJ5IEdDQyIgPiY1CiAgIGNhc2UgJGhvc3QgaW4KICAgKi0qLW1pbmd3KikKICAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gd2hpY2ggdXBzZXRzIG1pbmd3CkBAIC0xMzQwLDEwICsxMzMwLDEwIEBACiAgIGVzYWMKIGVsaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgR05VIGxkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxMzQ0OiBjaGVja2luZyBmb3IgR05VIGxkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxMzM0OiBjaGVja2luZyBmb3IgR05VIGxkIiA+JjUKIGVsc2UKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG5vbi1HTlUgbGQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjEzNDc6IGNoZWNraW5nIGZvciBub24tR05VIGxkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxMzM3OiBjaGVja2luZyBmb3Igbm9uLUdOVSBsZCIgPiY1CiBmaQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2x0X2N2X3BhdGhfTEQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMTM3OCw3ICsxMzY4LDcgQEAKIGZpCiB0ZXN0IC16ICIkTEQiICYmIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogbm8gYWNjZXB0YWJsZSBsZCBmb3VuZCBpbiBcJFBBVEgiIDE+JjI7IGV4aXQgMTsgfQogZWNobyAkYWNfbiAiY2hlY2tpbmcgaWYgdGhlIGxpbmtlciAoJExEKSBpcyBHTlUgbGQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjEzODI6IGNoZWNraW5nIGlmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxMzcyOiBjaGVja2luZyBpZiB0aGUgbGlua2VyICgkTEQpIGlzIEdOVSBsZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snbHRfY3ZfcHJvZ19nbnVfbGQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTM5NSw3ICsxMzg1LDcgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxMzk5OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxMzg5OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydsdF9jdl9sZF9yZWxvYWRfZmxhZycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0xNDA3LDcgKzEzOTcsNyBAQAogdGVzdCAtbiAiJHJlbG9hZF9mbGFnIiAmJiByZWxvYWRfZmxhZz0iICRyZWxvYWRfZmxhZyIKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIEJTRC1jb21wYXRpYmxlIG5tIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxNDExOiBjaGVja2luZyBmb3IgQlNELWNvbXBhdGlibGUgbm0iID4mNQorZWNobyAiY29uZmlndXJlOjE0MDE6IGNoZWNraW5nIGZvciBCU0QtY29tcGF0aWJsZSBubSIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snbHRfY3ZfcGF0aF9OTScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0xNDQ1LDcgKzE0MzUsNyBAQAogZWNobyAiJGFjX3QiIiROTSIgMT4mNgogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxNDQ5OiBjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNDM5OiBjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0xOX1MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTQ2Niw3ICsxNDU2LDcgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGhvdyB0byByZWNvZ25pc2UgZGVwZW5kYW50IGxpYnJhcmllcyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTQ3MDogY2hlY2tpbmcgaG93IHRvIHJlY29nbmlzZSBkZXBlbmRhbnQgbGlicmFyaWVzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNDYwOiBjaGVja2luZyBob3cgdG8gcmVjb2duaXNlIGRlcGVuZGFudCBsaWJyYXJpZXMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTE2MzksMTMgKzE2MjksMTMgQEAKIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igb2JqZWN0IHN1ZmZpeCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTY0MzogY2hlY2tpbmcgZm9yIG9iamVjdCBzdWZmaXgiID4mNQorZWNobyAiY29uZmlndXJlOjE2MzM6IGNoZWNraW5nIGZvciBvYmplY3Qgc3VmZml4IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9vYmpleHQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBybSAtZiBjb25mdGVzdCoKIGVjaG8gJ2ludCBpID0gMTsnID4gY29uZnRlc3QuJGFjX2V4dAotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNjQ5OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE2Mzk6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgZm9yIGFjX2ZpbGUgaW4gY29uZnRlc3QuKjsgZG8KICAgICBjYXNlICRhY19maWxlIGluCiAgICAgKi5jKSA7OwpAQCAtMTY2NSw3ICsxNjU1LDcgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZXhlY3V0YWJsZSBzdWZmaXgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE2Njk6IGNoZWNraW5nIGZvciBleGVjdXRhYmxlIHN1ZmZpeCIgPiY1CitlY2hvICJjb25maWd1cmU6MTY1OTogY2hlY2tpbmcgZm9yIGV4ZWN1dGFibGUgc3VmZml4IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9leGVleHQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTY3NSwxMCArMTY2NSwxMCBAQAogICBybSAtZiBjb25mdGVzdCoKICAgZWNobyAnaW50IG1haW4gKCkgeyByZXR1cm4gMDsgfScgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGFjX2N2X2V4ZWV4dD0KLSAgaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNjc5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9OyB0aGVuCisgIGlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTY2OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfTsgdGhlbgogICAgIGZvciBmaWxlIGluIGNvbmZ0ZXN0Lio7IGRvCiAgICAgICBjYXNlICRmaWxlIGluCi0gICAgICAqLmMgfCAqLm8gfCAqLm9iaiB8ICouaWxrIHwgKi5wZGIpIDs7CisgICAgICAqLmMgfCAqLm8gfCAqLm9iaikgOzsKICAgICAgICopIGFjX2N2X2V4ZWV4dD1gZWNobyAkZmlsZSB8IHNlZCAtZSBzL2NvbmZ0ZXN0Ly9gIDs7CiAgICAgICBlc2FjCiAgICAgZG9uZQpAQCAtMTcwOCw3ICsxNjk4LDcgQEAKIGZpbGVfbWFnaWMqKQogICBpZiB0ZXN0ICIkZmlsZV9tYWdpY19jbWQiID0gJyRNQUdJQ19DTUQnOyB0aGVuCiAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICR7YWNfdG9vbF9wcmVmaXh9ZmlsZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTcxMjogY2hlY2tpbmcgZm9yICR7YWNfdG9vbF9wcmVmaXh9ZmlsZSIgPiY1CitlY2hvICJjb25maWd1cmU6MTcwMjogY2hlY2tpbmcgZm9yICR7YWNfdG9vbF9wcmVmaXh9ZmlsZSIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snbHRfY3ZfcGF0aF9NQUdJQ19DTUQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTc3MCw3ICsxNzYwLDcgQEAKIGlmIHRlc3QgLXogIiRsdF9jdl9wYXRoX01BR0lDX0NNRCI7IHRoZW4KICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBmaWxlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxNzc0OiBjaGVja2luZyBmb3IgZmlsZSIgPiY1CitlY2hvICJjb25maWd1cmU6MTc2NDogY2hlY2tpbmcgZm9yIGZpbGUiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2x0X2N2X3BhdGhfTUFHSUNfQ01EJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTE4NDEsNyArMTgzMSw3IEBACiAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXJhbmxpYjsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxODQ1OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjE4MzU6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19SQU5MSUInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTg3Myw3ICsxODYzLDcgQEAKICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJyYW5saWIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IHJhbmxpYjsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxODc3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjE4Njc6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19SQU5MSUInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTkwOCw3ICsxODk4LDcgQEAKICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxOTEyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjE5MDI6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19TVFJJUCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0xOTQwLDcgKzE5MzAsNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBzdHJpcDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxOTQ0OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjE5MzQ6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19TVFJJUCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yMDA3LDggKzE5OTcsOCBAQAogY2FzZSAkaG9zdCBpbgogKi0qLWlyaXg2KikKICAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgotICBlY2hvICcjbGluZSAyMDExICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyMDEyOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCisgIGVjaG8gJyNsaW5lIDIwMDEgImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAorICBpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIwMDI6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgIGlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KICAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCiAgICAgKjMyLWJpdCopCkBAIC0yMDQxLDcgKzIwMzEsNyBAQAogaWE2NC0qLWhwdXgqKQogICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCiAgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0Ci0gIGlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjA0NTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgorICBpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIwMzU6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgICBjYXNlICJgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC5vYCIgaW4KICAgICAqRUxGLTMyKikKICAgICAgIEhQVVhfSUE2NF9NT0RFPSIzMiIKQEAgLTIwNTksNyArMjA0OSw3IEBACiAgIFNBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgogICBDRkxBR1M9IiRDRkxBR1MgLWJlbGYiCiAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGYiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjIwNjM6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGYiID4mNQorZWNobyAiY29uZmlndXJlOjIwNTM6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGYiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2x0X2N2X2NjX25lZWRzX2JlbGYnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjA3MiwxNCArMjA2MiwxNCBAQAogY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCiAKICAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjA3NiAiY29uZmlndXJlIgorI2xpbmUgMjA2NiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjA4MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIwNzM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGx0X2N2X2NjX25lZWRzX2JlbGY9eWVzCiBlbHNlCkBAIC0yMjUyLDcgKzIyNDIsNyBAQAogIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGdjYzsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyMjU2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjIyNDY6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DQycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yMjgyLDcgKzIyNzIsNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBjYzsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyMjg2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjIyNzY6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DQycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yMzMzLDcgKzIzMjMsNyBAQAogICAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgY2w7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjMzNzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyMzI3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ0MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjM2NSw3ICsyMzU1LDcgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSB3b3JrcyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjM2OTogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIHdvcmtzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyMzU5OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgd29ya3MiID4mNQogCiBhY19leHQ9YwogIyBDRkxBR1MgaXMgbm90IGluIGFjX2NwcCBiZWNhdXNlIC1nLCAtTywgZXRjLiBhcmUgbm90IHZhbGlkIGNwcCBvcHRpb25zLgpAQCAtMjM3NiwxMiArMjM2NiwxMiBAQAogCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8IEVPRgogCi0jbGluZSAyMzgwICJjb25maWd1cmUiCisjbGluZSAyMzcwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogbWFpbigpe3JldHVybigwKTt9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjM4NTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIzNzU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBhY19jdl9wcm9nX2NjX3dvcmtzPXllcwogICAjIElmIHdlIGNhbid0IHJ1biBhIHRyaXZpYWwgcHJvZ3JhbSwgd2UgYXJlIHByb2JhYmx5IHVzaW5nIGEgY3Jvc3MgY29tcGlsZXIuCiAgIGlmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbDsgdGhlbgpAQCAtMjQwNywxMiArMjM5NywxMiBAQAogICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGluc3RhbGxhdGlvbiBvciBjb25maWd1cmF0aW9uIHByb2JsZW06IEMgY29tcGlsZXIgY2Fubm90IGNyZWF0ZSBleGVjdXRhYmxlcy4iIDE+JjI7IGV4aXQgMTsgfQogZmkKIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSBpcyBhIGNyb3NzLWNvbXBpbGVyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNDExOiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgaXMgYSBjcm9zcy1jb21waWxlciIgPiY1CitlY2hvICJjb25maWd1cmU6MjQwMTogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIGlzIGEgY3Jvc3MtY29tcGlsZXIiID4mNQogZWNobyAiJGFjX3QiIiRhY19jdl9wcm9nX2NjX2Nyb3NzIiAxPiY2CiBjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY2NfY3Jvc3MKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI0MTY6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdOVSBDIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyNDA2OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyBHTlUgQyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19nY2MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjQyMSw3ICsyNDExLDcgQEAKICAgeWVzOwogI2VuZGlmCiBFT0YKLWlmIHsgYWNfdHJ5PScke0NDLWNjfSAtRSBjb25mdGVzdC5jJzsgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNDI1OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfTsgfSB8IGVncmVwIHllcyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KK2lmIHsgYWNfdHJ5PScke0NDLWNjfSAtRSBjb25mdGVzdC5jJzsgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNDE1OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfTsgfSB8IGVncmVwIHllcyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgYWNfY3ZfcHJvZ19nY2M9eWVzCiBlbHNlCiAgIGFjX2N2X3Byb2dfZ2NjPW5vCkBAIC0yNDQwLDcgKzI0MzAsNyBAQAogYWNfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCiBDRkxBR1M9CiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyICR7Q0MtY2N9IGFjY2VwdHMgLWciIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI0NDQ6IGNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gYWNjZXB0cyAtZyIgPiY1CitlY2hvICJjb25maWd1cmU6MjQzNDogY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1nIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX2NjX2cnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjQ3Nyw3ICsyNDY3LDcgQEAKICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI0ODE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MjQ3MTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX1lBQ0MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjUwOCw3ICsyNDk4LDcgQEAKIHRlc3QgLW4gIiRZQUNDIiB8fCBZQUNDPSJ5YWNjIgogCiBlY2hvICRhY19uICJjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjUxMjogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IiID4mNQorZWNobyAiY29uZmlndXJlOjI1MDI6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKICMgT24gU3Vucywgc29tZXRpbWVzICRDUFAgbmFtZXMgYSBkaXJlY3RvcnkuCiBpZiB0ZXN0IC1uICIkQ1BQIiAmJiB0ZXN0IC1kICIkQ1BQIjsgdGhlbgogICBDUFA9CkBAIC0yNTIzLDEzICsyNTEzLDEzIEBACiAgICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCiAgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI1MjcgImNvbmZpZ3VyZSIKKyNsaW5lIDI1MTcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGFzc2VydC5oPgogU3ludGF4IEVycm9yCiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjI1MzM6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjI1MjM6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICA6CkBAIC0yNTQwLDEzICsyNTMwLDEzIEBACiAgIHJtIC1yZiBjb25mdGVzdCoKICAgQ1BQPSIke0NDLWNjfSAtRSAtdHJhZGl0aW9uYWwtY3BwIgogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyNTQ0ICJjb25maWd1cmUiCisjbGluZSAyNTM0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxhc3NlcnQuaD4KIFN5bnRheCBFcnJvcgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNTUwOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNTQwOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgOgpAQCAtMjU1NywxMyArMjU0NywxMyBAQAogICBybSAtcmYgY29uZnRlc3QqCiAgIENQUD0iJHtDQy1jY30gLW5vbG9nbyAtRSIKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjU2MSAiY29uZmlndXJlIgorI2xpbmUgMjU1MSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiBTeW50YXggRXJyb3IKIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6MjU2NzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MjU1NzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIDoKQEAgLTI1OTMsNyArMjU4Myw3IEBACiAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNTk3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjI1ODc6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19MRVgnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjYyNiw3ICsyNjE2LDcgQEAKICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZmxleCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgZmxleDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNjMwOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjI2MjA6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19MRVgnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjY2MCw3ICsyNjUwLDcgQEAKICAgKikgYWNfbGliPWwgOzsKICAgZXNhYwogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgeXl3cmFwIGluIC1sJGFjX2xpYiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjY2NDogY2hlY2tpbmcgZm9yIHl5d3JhcCBpbiAtbCRhY19saWIiID4mNQorZWNobyAiY29uZmlndXJlOjI2NTQ6IGNoZWNraW5nIGZvciB5eXdyYXAgaW4gLWwkYWNfbGliIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gJGFjX2xpYidfJ3l5d3JhcCB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMjY2OCw3ICsyNjU4LDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sJGFjX2xpYiAgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyNjcyICJjb25maWd1cmUiCisjbGluZSAyNjYyICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0yNjc5LDcgKzI2NjksNyBAQAogeXl3cmFwKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNjgzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjY3MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTI3MDIsNyArMjY5Miw3IEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyBsZXggb3V0cHV0IGZpbGUgcm9vdCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjcwNjogY2hlY2tpbmcgbGV4IG91dHB1dCBmaWxlIHJvb3QiID4mNQorZWNobyAiY29uZmlndXJlOjI2OTY6IGNoZWNraW5nIGxleCBvdXRwdXQgZmlsZSByb290IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX2xleF9yb290JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTI3MjMsNyArMjcxMyw3IEBACiBMRVhfT1VUUFVUX1JPT1Q9JGFjX2N2X3Byb2dfbGV4X3Jvb3QKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB5eXRleHQgaXMgYSBwb2ludGVyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNzI3OiBjaGVja2luZyB3aGV0aGVyIHl5dGV4dCBpcyBhIHBvaW50ZXIiID4mNQorZWNobyAiY29uZmlndXJlOjI3MTc6IGNoZWNraW5nIHdoZXRoZXIgeXl0ZXh0IGlzIGEgcG9pbnRlciIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19sZXhfeXl0ZXh0X3BvaW50ZXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjczNSwxNCArMjcyNSwxNCBAQAogYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9IiRMSUJTICRMRVhMSUIiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyNzM5ICJjb25maWd1cmUiCisjbGluZSAyNzI5ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIGBjYXQgJExFWF9PVVRQVVRfUk9PVC5jYAogaW50IG1haW4oKSB7CiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNzQ2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjczNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3ZfcHJvZ19sZXhfeXl0ZXh0X3BvaW50ZXI9eWVzCiBlbHNlCkBAIC0yNzY4LDcgKzI3NTgsNyBAQAogIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJyYW5saWIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IHJhbmxpYjsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNzcyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjI3NjI6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19SQU5MSUInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjc5NiwxMiArMjc4NiwxMiBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI4MDA6IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyNzkwOiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyX3N0ZGMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyODA1ICJjb25maWd1cmUiCisjbGluZSAyNzk1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRhcmcuaD4KQEAgLTI4MDksNyArMjc5OSw3IEBACiAjaW5jbHVkZSA8ZmxvYXQuaD4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6MjgxMzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MjgwMzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTI4MjYsNyArMjgxNiw3IEBACiBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgogICAjIFN1bk9TIDQueCBzdHJpbmcuaCBkb2VzIG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFOU0kuCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyODMwICJjb25maWd1cmUiCisjbGluZSAyODIwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzdHJpbmcuaD4KIEVPRgpAQCAtMjg0NCw3ICsyODM0LDcgQEAKIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCiAgICMgSVNDIDIuMC4yIHN0ZGxpYi5oIGRvZXMgbm90IGRlY2xhcmUgZnJlZSwgY29udHJhcnkgdG8gQU5TSS4KIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI4NDggImNvbmZpZ3VyZSIKKyNsaW5lIDI4MzggImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogRU9GCkBAIC0yODY1LDcgKzI4NTUsNyBAQAogICA6CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI4NjkgImNvbmZpZ3VyZSIKKyNsaW5lIDI4NTkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGN0eXBlLmg+CiAjZGVmaW5lIElTTE9XRVIoYykgKCdhJyA8PSAoYykgJiYgKGMpIDw9ICd6JykKQEAgLTI4NzYsNyArMjg2Niw3IEBACiBleGl0ICgwKTsgfQogCiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mjg4MDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyODcwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIDoKIGVsc2UKQEAgLTI5MDAsMTIgKzI4OTAsMTIgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB3b3JraW5nIGNvbnN0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyOTA0OiBjaGVja2luZyBmb3Igd29ya2luZyBjb25zdCIgPiY1CitlY2hvICJjb25maWd1cmU6Mjg5NDogY2hlY2tpbmcgZm9yIHdvcmtpbmcgY29uc3QiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2NfY29uc3QnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyOTA5ICJjb25maWd1cmUiCisjbGluZSAyODk5ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CkBAIC0yOTU0LDcgKzI5NDQsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mjk1ODogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyOTQ4OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3ZfY19jb25zdD15ZXMKIGVsc2UKQEAgLTI5NzUsMjEgKzI5NjUsMjEgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBpbmxpbmUiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI5Nzk6IGNoZWNraW5nIGZvciBpbmxpbmUiID4mNQorZWNobyAiY29uZmlndXJlOjI5Njk6IGNoZWNraW5nIGZvciBpbmxpbmUiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2NfaW5saW5lJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgYWNfY3ZfY19pbmxpbmU9bm8KIGZvciBhY19rdyBpbiBpbmxpbmUgX19pbmxpbmVfXyBfX2lubGluZTsgZG8KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjk4NiAiY29uZmlndXJlIgorI2xpbmUgMjk3NiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewogfSAkYWNfa3cgZm9vKCkgewogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI5OTM6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mjk4MzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGFjX2N2X2NfaW5saW5lPSRhY19rdzsgYnJlYWsKIGVsc2UKQEAgLTMwMTUsMTIgKzMwMDUsMTIgQEAKIGVzYWMKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG9mZl90IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMDE5OiBjaGVja2luZyBmb3Igb2ZmX3QiID4mNQorZWNobyAiY29uZmlndXJlOjMwMDk6IGNoZWNraW5nIGZvciBvZmZfdCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfdHlwZV9vZmZfdCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMwMjQgImNvbmZpZ3VyZSIKKyNsaW5lIDMwMTQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmIFNURENfSEVBREVSUwpAQCAtMzA0OCwxMiArMzAzOCwxMiBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHNpemVfdCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzA1MjogY2hlY2tpbmcgZm9yIHNpemVfdCIgPiY1CitlY2hvICJjb25maWd1cmU6MzA0MjogY2hlY2tpbmcgZm9yIHNpemVfdCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfdHlwZV9zaXplX3QnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzMDU3ICJjb25maWd1cmUiCisjbGluZSAzMDQ3ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZiBTVERDX0hFQURFUlMKQEAgLTMwODMsMTkgKzMwNzMsMTkgQEAKICMgVGhlIFVsdHJpeCA0LjIgbWlwcyBidWlsdGluIGFsbG9jYSBkZWNsYXJlZCBieSBhbGxvY2EuaCBvbmx5IHdvcmtzCiAjIGZvciBjb25zdGFudCBhcmd1bWVudHMuICBVc2VsZXNzIQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWxsb2NhLmgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMwODc6IGNoZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozMDc3OiBjaGVja2luZyBmb3Igd29ya2luZyBhbGxvY2EuaCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyX2FsbG9jYV9oJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzA5MiAiY29uZmlndXJlIgorI2xpbmUgMzA4MiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8YWxsb2NhLmg+CiBpbnQgbWFpbigpIHsKIGNoYXIgKnAgPSBhbGxvY2EoMiAqIHNpemVvZihpbnQpKTsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMDk5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzA4OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3ZfaGVhZGVyX2FsbG9jYV9oPXllcwogZWxzZQpAQCAtMzExNiwxMiArMzEwNiwxMiBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGFsbG9jYSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzEyMDogY2hlY2tpbmcgZm9yIGFsbG9jYSIgPiY1CitlY2hvICJjb25maWd1cmU6MzExMDogY2hlY2tpbmcgZm9yIGFsbG9jYSIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzMTI1ICJjb25maWd1cmUiCisjbGluZSAzMTE1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2lmZGVmIF9fR05VQ19fCkBAIC0zMTQ5LDcgKzMxMzksNyBAQAogY2hhciAqcCA9IChjaGFyICopIGFsbG9jYSgxKTsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMTUzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzE0MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3M9eWVzCiBlbHNlCkBAIC0zMTgxLDEyICszMTcxLDEyIEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBhbGxvY2EgbmVlZHMgQ3JheSBob29rcyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgd2hldGhlciBhbGxvY2EgbmVlZHMgQ3JheSBob29rcyIgPiY1CitlY2hvICJjb25maWd1cmU6MzE3NTogY2hlY2tpbmcgd2hldGhlciBhbGxvY2EgbmVlZHMgQ3JheSBob29rcyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3Zfb3NfY3JheScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMxOTAgImNvbmZpZ3VyZSIKKyNsaW5lIDMxODAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2lmIGRlZmluZWQoQ1JBWSkgJiYgISBkZWZpbmVkKENSQVkyKQogd2ViZWNyYXkKQEAgLTMyMTEsMTIgKzMyMDEsMTIgQEAKIGlmIHRlc3QgJGFjX2N2X29zX2NyYXkgPSB5ZXM7IHRoZW4KIGZvciBhY19mdW5jIGluIF9nZXRiNjcgR0VUQjY3IGdldGI2NzsgZG8KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19mdW5jIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMjE1OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQorZWNobyAiY29uZmlndXJlOjMyMDU6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY18kYWNfZnVuYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMyMjAgImNvbmZpZ3VyZSIKKyNsaW5lIDMyMTAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMoKTsgYmVsb3cuICAqLwpAQCAtMzIzOSw3ICszMjI5LDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMyNDM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMjMzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jXyRhY19mdW5jPXllcyIKIGVsc2UKQEAgLTMyNjYsNyArMzI1Niw3IEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyBzdGFjayBkaXJlY3Rpb24gZm9yIEMgYWxsb2NhIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMjcwOiBjaGVja2luZyBzdGFjayBkaXJlY3Rpb24gZm9yIEMgYWxsb2NhIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozMjYwOiBjaGVja2luZyBzdGFjayBkaXJlY3Rpb24gZm9yIEMgYWxsb2NhIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9jX3N0YWNrX2RpcmVjdGlvbicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zMjc0LDcgKzMyNjQsNyBAQAogICBhY19jdl9jX3N0YWNrX2RpcmVjdGlvbj0wCiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMyNzggImNvbmZpZ3VyZSIKKyNsaW5lIDMyNjggImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogZmluZF9zdGFja19kaXJlY3Rpb24gKCkKIHsKQEAgLTMyOTMsNyArMzI4Myw3IEBACiAgIGV4aXQgKGZpbmRfc3RhY2tfZGlyZWN0aW9uKCkgPCAwKTsKIH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMjk3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMyODc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgYWNfY3ZfY19zdGFja19kaXJlY3Rpb249MQogZWxzZQpAQCAtMzMxNCwyMSArMzMwNCwyMSBAQAogCiBmaQogCi1mb3IgYWNfaGRyIGluIHVuaXN0ZC5oCitmb3IgYWNfaGRyIGluIHN0ZGxpYi5oIHVuaXN0ZC5oIHN5cy9zdGF0Lmggc3lzL3R5cGVzLmgKIGRvCiBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMzIyOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CitlY2hvICJjb25maWd1cmU6MzMxMjogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMzMjcgImNvbmZpZ3VyZSIKKyNsaW5lIDMzMTcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZHI+CiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjMzMzI6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjMzMjI6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC0zMzU3LDEyICszMzQ3LDEyIEBACiBmb3IgYWNfZnVuYyBpbiBnZXRwYWdlc2l6ZQogZG8KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzM2MTogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozMzUxOiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzMzY2ICJjb25maWd1cmUiCisjbGluZSAzMzU2ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8KQEAgLTMzODUsNyArMzM3NSw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMzg5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzM3OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiCiBlbHNlCkBAIC0zNDEwLDcgKzM0MDAsNyBAQAogZG9uZQogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igd29ya2luZyBtbWFwIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNDE0OiBjaGVja2luZyBmb3Igd29ya2luZyBtbWFwIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNDA0OiBjaGVja2luZyBmb3Igd29ya2luZyBtbWFwIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTM0MTgsNyArMzQwOCw3IEBACiAgIGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9bm8KIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzQyMiAiY29uZmlndXJlIgorI2xpbmUgMzQxMiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIC8qIFRoYW5rcyB0byBNaWtlIEhhZXJ0ZWwgYW5kIEppbSBBdmVyYSBmb3IgdGhpcyB0ZXN0LgpAQCAtMzQ0NiwxMSArMzQzNiwyNCBAQAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KIAorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2lmIEhBVkVfU1RETElCX0gKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKworI2lmIEhBVkVfU1lTX1NUQVRfSAorIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisKKyNpZiBIQVZFX1VOSVNURF9ICisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKIC8qIFRoaXMgbWVzcyB3YXMgY29waWVkIGZyb20gdGhlIEdOVSBnZXRwYWdlc2l6ZS5oLiAgKi8KICNpZm5kZWYgSEFWRV9HRVRQQUdFU0laRQotIyBpZmRlZiBIQVZFX1VOSVNURF9ICi0jICBpbmNsdWRlIDx1bmlzdGQuaD4KLSMgZW5kaWYKIAogLyogQXNzdW1lIHRoYXQgYWxsIHN5c3RlbXMgdGhhdCBjYW4gcnVuIGNvbmZpZ3VyZSBoYXZlIHN5cy9wYXJhbS5oLiAgKi8KICMgaWZuZGVmIEhBVkVfU1lTX1BBUkFNX0gKQEAgLTM1NTgsNyArMzU2MSw3IEBACiB9CiAKIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNTYyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM1NjU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXMKIGVsc2UKQEAgLTM1ODYsMTcgKzM1ODksMTcgQEAKIGRvCiBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNTkwOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CitlY2hvICJjb25maWd1cmU6MzU5MzogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM1OTUgImNvbmZpZ3VyZSIKKyNsaW5lIDM1OTggImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZHI+CiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjM2MDA6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjM2MDM6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC0zNjI2LDEyICszNjI5LDEyIEBACiBfX2FyZ3pfY291bnQgX19hcmd6X3N0cmluZ2lmeSBfX2FyZ3pfbmV4dAogZG8KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzYzMDogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNjMzOiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzNjM1ICJjb25maWd1cmUiCisjbGluZSAzNjM4ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8KQEAgLTM2NTQsNyArMzY1Nyw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNjU4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzY2MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiCiBlbHNlCkBAIC0zNjgzLDEyICszNjg2LDEyIEBACiAgICAgIGZvciBhY19mdW5jIGluIHN0cGNweQogZG8KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzY4NzogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNjkwOiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzNjkyICJjb25maWd1cmUiCisjbGluZSAzNjk1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8KQEAgLTM3MTEsNyArMzcxNCw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNzE1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzcxODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiCiBlbHNlCkBAIC0zNzQ1LDE5ICszNzQ4LDE5IEBACiAKICAgIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9sb2NhbGVfaCA9IHllczsgdGhlbgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBMQ19NRVNTQUdFUyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Mzc0OTogY2hlY2tpbmcgZm9yIExDX01FU1NBR0VTIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNzUyOiBjaGVja2luZyBmb3IgTENfTUVTU0FHRVMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FtX2N2X3ZhbF9MQ19NRVNTQUdFUycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM3NTQgImNvbmZpZ3VyZSIKKyNsaW5lIDM3NTcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGxvY2FsZS5oPgogaW50IG1haW4oKSB7CiByZXR1cm4gTENfTUVTU0FHRVMKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNzYxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzc2NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPXllcwogZWxzZQpAQCAtMzc3OCw3ICszNzgxLDcgQEAKICAgICBmaQogICBmaQogICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBOTFMgaXMgcmVxdWVzdGVkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNzgyOiBjaGVja2luZyB3aGV0aGVyIE5MUyBpcyByZXF1ZXN0ZWQiID4mNQorZWNobyAiY29uZmlndXJlOjM3ODU6IGNoZWNraW5nIHdoZXRoZXIgTkxTIGlzIHJlcXVlc3RlZCIgPiY1CiAgICAgICAgICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1ubHMgb3IgLS1kaXNhYmxlLW5scyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9ubHMrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZW5hYmxldmFsPSIkZW5hYmxlX25scyIKQEAgLTM3OTgsNyArMzgwMSw3IEBACiBFT0YKIAogICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBpbmNsdWRlZCBnZXR0ZXh0IGlzIHJlcXVlc3RlZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzgwMjogY2hlY2tpbmcgd2hldGhlciBpbmNsdWRlZCBnZXR0ZXh0IGlzIHJlcXVlc3RlZCIgPiY1CitlY2hvICJjb25maWd1cmU6MzgwNTogY2hlY2tpbmcgd2hldGhlciBpbmNsdWRlZCBnZXR0ZXh0IGlzIHJlcXVlc3RlZCIgPiY1CiAgICAgICAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWluY2x1ZGVkLWdldHRleHQgb3IgLS13aXRob3V0LWluY2x1ZGVkLWdldHRleHQgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHt3aXRoX2luY2x1ZGVkX2dldHRleHQrc2V0fSIgPSBzZXQ7IHRoZW4KICAgd2l0aHZhbD0iJHdpdGhfaW5jbHVkZWRfZ2V0dGV4dCIKQEAgLTM4MTcsMTcgKzM4MjAsMTcgQEAKIAogCWFjX3NhZmU9YGVjaG8gImxpYmludGwuaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgbGliaW50bC5oIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozODIxOiBjaGVja2luZyBmb3IgbGliaW50bC5oIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozODI0OiBjaGVja2luZyBmb3IgbGliaW50bC5oIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzODI2ICJjb25maWd1cmUiCisjbGluZSAzODI5ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjM4MzE6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjM4MzQ6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC0zODQ0LDE5ICszODQ3LDE5IEBACiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9oZWFkZXJfJyRhY19zYWZlYFwiID0geWVzIjsgdGhlbgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2CiAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBnZXR0ZXh0IGluIGxpYmMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM4NDg6IGNoZWNraW5nIGZvciBnZXR0ZXh0IGluIGxpYmMiID4mNQorZWNobyAiY29uZmlndXJlOjM4NTE6IGNoZWNraW5nIGZvciBnZXR0ZXh0IGluIGxpYmMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2d0X2N2X2Z1bmNfZ2V0dGV4dF9saWJjJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzg1MyAiY29uZmlndXJlIgorI2xpbmUgMzg1NiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8bGliaW50bC5oPgogaW50IG1haW4oKSB7CiByZXR1cm4gKGludCkgZ2V0dGV4dCAoIiIpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzg2MDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM4NjM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGd0X2N2X2Z1bmNfZ2V0dGV4dF9saWJjPXllcwogZWxzZQpAQCAtMzg3Miw3ICszODc1LDcgQEAKIAogCSAgIGlmIHRlc3QgIiRndF9jdl9mdW5jX2dldHRleHRfbGliYyIgIT0gInllcyI7IHRoZW4KIAkgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBiaW5kdGV4dGRvbWFpbiBpbiAtbGludGwiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM4NzY6IGNoZWNraW5nIGZvciBiaW5kdGV4dGRvbWFpbiBpbiAtbGludGwiID4mNQorZWNobyAiY29uZmlndXJlOjM4Nzk6IGNoZWNraW5nIGZvciBiaW5kdGV4dGRvbWFpbiBpbiAtbGludGwiID4mNQogYWNfbGliX3Zhcj1gZWNobyBpbnRsJ18nYmluZHRleHRkb21haW4gfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTM4ODAsNyArMzg4Myw3IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbGludGwgICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzg4NCAiY29uZmlndXJlIgorI2xpbmUgMzg4NyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtMzg5MSw3ICszODk0LDcgQEAKIGJpbmR0ZXh0ZG9tYWluKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozODk1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzg5ODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTM5MDcsMTkgKzM5MTAsMTkgQEAKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2xpYl8nJGFjX2xpYl92YXJgXCIgPSB5ZXMiOyB0aGVuCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGdldHRleHQgaW4gbGliaW50bCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzkxMTogY2hlY2tpbmcgZm9yIGdldHRleHQgaW4gbGliaW50bCIgPiY1CitlY2hvICJjb25maWd1cmU6MzkxNDogY2hlY2tpbmcgZm9yIGdldHRleHQgaW4gbGliaW50bCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snZ3RfY3ZfZnVuY19nZXR0ZXh0X2xpYmludGwnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzOTE2ICJjb25maWd1cmUiCisjbGluZSAzOTE5ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CiByZXR1cm4gKGludCkgZ2V0dGV4dCAoIiIpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzkyMzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM5MjY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGd0X2N2X2Z1bmNfZ2V0dGV4dF9saWJpbnRsPXllcwogZWxzZQpAQCAtMzk0Nyw3ICszOTUwLDcgQEAKIAkgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm1zZ2ZtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgbXNnZm10OyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM5NTE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6Mzk1NDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX01TR0ZNVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zOTgxLDEyICszOTg0LDEyIEBACiAJCWZvciBhY19mdW5jIGluIGRjZ2V0dGV4dAogZG8KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Mzk4NTogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozOTg4OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzOTkwICJjb25maWd1cmUiCisjbGluZSAzOTkzICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8KQEAgLTQwMDksNyArNDAxMiw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0MDEzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDAxNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiCiBlbHNlCkBAIC00MDM2LDcgKzQwMzksNyBAQAogCQkjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdtc2dmbXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGdtc2dmbXQ7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDA0MDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0MDQzOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfR01TR0ZNVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC00MDcyLDcgKzQwNzUsNyBAQAogCQkjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInhnZXR0ZXh0Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSB4Z2V0dGV4dDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MDc2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjQwNzk6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF9YR0VUVEVYVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC00MTA0LDcgKzQxMDcsNyBAQAogZmkKIAogCQljYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0MTA4ICJjb25maWd1cmUiCisjbGluZSA0MTExICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CkBAIC00MTEyLDcgKzQxMTUsNyBAQAogCQkJICAgICAgIHJldHVybiBfbmxfbXNnX2NhdF9jbnRyCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDExNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQxMTk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIENBVE9CSkVYVD0uZ21vCiAJCSAgIERBVEFESVJOQU1FPXNoYXJlCkBAIC00MTQ0LDcgKzQxNDcsNyBAQAogICAgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm1zZ2ZtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgbXNnZm10OyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQxNDg6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6NDE1MTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX01TR0ZNVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC00MTc4LDcgKzQxODEsNyBAQAogICAgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdtc2dmbXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGdtc2dmbXQ7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDE4MjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0MTg1OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfR01TR0ZNVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC00MjE0LDcgKzQyMTcsNyBAQAogICAgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInhnZXR0ZXh0Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSB4Z2V0dGV4dDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MjE4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjQyMjE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF9YR0VUVEVYVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC00MzA0LDcgKzQzMDcsNyBAQAogICAgICAgIExJTkdVQVM9CiAgICAgIGVsc2UKICAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgY2F0YWxvZ3MgdG8gYmUgaW5zdGFsbGVkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MzA4OiBjaGVja2luZyBmb3IgY2F0YWxvZ3MgdG8gYmUgaW5zdGFsbGVkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0MzExOiBjaGVja2luZyBmb3IgY2F0YWxvZ3MgdG8gYmUgaW5zdGFsbGVkIiA+JjUKICAgICAgICBORVdfTElOR1VBUz0KICAgICAgICBmb3IgbGFuZyBpbiAke0xJTkdVQVM9JEFMTF9MSU5HVUFTfTsgZG8KICAgICAgICAgIGNhc2UgIiRBTExfTElOR1VBUyIgaW4KQEAgLTQzMzIsMTcgKzQzMzUsMTcgQEAKICAgICAgIGlmIHRlc3QgIiRDQVRPQkpFWFQiID0gIi5jYXQiOyB0aGVuCiAJIGFjX3NhZmU9YGVjaG8gImxpbnV4L3ZlcnNpb24uaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgbGludXgvdmVyc2lvbi5oIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MzM2OiBjaGVja2luZyBmb3IgbGludXgvdmVyc2lvbi5oIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0MzM5OiBjaGVja2luZyBmb3IgbGludXgvdmVyc2lvbi5oIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0MzQxICJjb25maWd1cmUiCisjbGluZSA0MzQ0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjQzNDY6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjQzNDk6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC00NDA1LDcgKzQ0MDgsNyBAQAogICAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ0MDk6IGNoZWNraW5nIHdoZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0NDEyOiBjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1ha2VmaWxlcyIgPiY1CiAgICAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSBvciAtLWRpc2FibGUtbWFpbnRhaW5lci1tb2RlIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX21haW50YWluZXJfbW9kZStzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfbWFpbnRhaW5lcl9tb2RlIgpAQCAtNDQzMCw3ICs0NDMzLDcgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZXhlY3V0YWJsZSBzdWZmaXgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ0MzQ6IGNoZWNraW5nIGZvciBleGVjdXRhYmxlIHN1ZmZpeCIgPiY1CitlY2hvICJjb25maWd1cmU6NDQzNzogY2hlY2tpbmcgZm9yIGV4ZWN1dGFibGUgc3VmZml4IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9leGVleHQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtNDQ0MCwxMCArNDQ0MywxMCBAQAogICBybSAtZiBjb25mdGVzdCoKICAgZWNobyAnaW50IG1haW4gKCkgeyByZXR1cm4gMDsgfScgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGFjX2N2X2V4ZWV4dD0KLSAgaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NDQ0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9OyB0aGVuCisgIGlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDQ0NzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfTsgdGhlbgogICAgIGZvciBmaWxlIGluIGNvbmZ0ZXN0Lio7IGRvCiAgICAgICBjYXNlICRmaWxlIGluCi0gICAgICAqLmMgfCAqLm8gfCAqLm9iaiB8ICouaWxrIHwgKi5wZGIpIDs7CisgICAgICAqLmMgfCAqLm8gfCAqLm9iaikgOzsKICAgICAgICopIGFjX2N2X2V4ZWV4dD1gZWNobyAkZmlsZSB8IHNlZCAtZSBzL2NvbmZ0ZXN0Ly9gIDs7CiAgICAgICBlc2FjCiAgICAgZG9uZQpAQCAtNDQ4Myw3ICs0NDg2LDcgQEAKICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDQ4NzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0NDkwOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfUkFOTElCJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTQ1MjIsNyArNDUyNSw3IEBACiAjIFNWUjQgL3Vzci91Y2IvaW5zdGFsbCwgd2hpY2ggdHJpZXMgdG8gdXNlIHRoZSBub25leGlzdGVudCBncm91cCAic3RhZmYiCiAjIC4vaW5zdGFsbCwgd2hpY2ggY2FuIGJlIGVycm9uZW91c2x5IGNyZWF0ZWQgYnkgbWFrZSBmcm9tIC4vaW5zdGFsbC5zaC4KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ1MjY6IGNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwiID4mNQorZWNobyAiY29uZmlndXJlOjQ1Mjk6IGNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwiID4mNQogaWYgdGVzdCAteiAiJElOU1RBTEwiOyB0aGVuCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF9pbnN0YWxsJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTQ1ODksNyArNDU5Miw3IEBACiAgIEVYRUVYVF9GT1JfQlVJTEQ9JyQoRVhFRVhUKScKIGVsc2UKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGJ1aWxkIHN5c3RlbSBleGVjdXRhYmxlIHN1ZmZpeCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDU5MzogY2hlY2tpbmcgZm9yIGJ1aWxkIHN5c3RlbSBleGVjdXRhYmxlIHN1ZmZpeCIgPiY1CitlY2hvICJjb25maWd1cmU6NDU5NjogY2hlY2tpbmcgZm9yIGJ1aWxkIHN5c3RlbSBleGVjdXRhYmxlIHN1ZmZpeCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYmZkX2N2X2J1aWxkX2V4ZWV4dCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC00NjI0LDE3ICs0NjI3LDE3IEBACiBkbwogYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDYyODogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQorZWNobyAiY29uZmlndXJlOjQ2MzE6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0NjMzICJjb25maWd1cmUiCisjbGluZSA0NjM2ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDwkYWNfaGRyPgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NjM4OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NjQxOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAtNDY2MSwxMiArNDY2NCwxMiBAQAogZG9uZQogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igc3lzL3dhaXQuaCB0aGF0IGlzIFBPU0lYLjEgY29tcGF0aWJsZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDY2NTogY2hlY2tpbmcgZm9yIHN5cy93YWl0LmggdGhhdCBpcyBQT1NJWC4xIGNvbXBhdGlibGUiID4mNQorZWNobyAiY29uZmlndXJlOjQ2Njg6IGNoZWNraW5nIGZvciBzeXMvd2FpdC5oIHRoYXQgaXMgUE9TSVguMSBjb21wYXRpYmxlIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfc3lzX3dhaXRfaCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDQ2NzAgImNvbmZpZ3VyZSIKKyNsaW5lIDQ2NzMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy93YWl0Lmg+CkBAIC00NjgyLDcgKzQ2ODUsNyBAQAogcyA9IFdJRkVYSVRFRCAocykgPyBXRVhJVFNUQVRVUyAocykgOiAxOwogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ2ODY6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDY4OTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGFjX2N2X2hlYWRlcl9zeXNfd2FpdF9oPXllcwogZWxzZQpAQCAtNDcwNSwxOSArNDcwOCwxOSBAQAogIyBUaGUgVWx0cml4IDQuMiBtaXBzIGJ1aWx0aW4gYWxsb2NhIGRlY2xhcmVkIGJ5IGFsbG9jYS5oIG9ubHkgd29ya3MKICMgZm9yIGNvbnN0YW50IGFyZ3VtZW50cy4gIFVzZWxlc3MhCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igd29ya2luZyBhbGxvY2EuaCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDcwOTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWxsb2NhLmgiID4mNQorZWNobyAiY29uZmlndXJlOjQ3MTI6IGNoZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfYWxsb2NhX2gnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0NzE0ICJjb25maWd1cmUiCisjbGluZSA0NzE3ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxhbGxvY2EuaD4KIGludCBtYWluKCkgewogY2hhciAqcCA9IGFsbG9jYSgyICogc2l6ZW9mKGludCkpOwogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ3MjE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NzI0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBhY19jdl9oZWFkZXJfYWxsb2NhX2g9eWVzCiBlbHNlCkBAIC00NzM4LDEyICs0NzQxLDEyIEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgYWxsb2NhIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0NzQyOiBjaGVja2luZyBmb3IgYWxsb2NhIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0NzQ1OiBjaGVja2luZyBmb3IgYWxsb2NhIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX2FsbG9jYV93b3Jrcycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDQ3NDcgImNvbmZpZ3VyZSIKKyNsaW5lIDQ3NTAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWZkZWYgX19HTlVDX18KQEAgLTQ3NzEsNyArNDc3NCw3IEBACiBjaGFyICpwID0gKGNoYXIgKikgYWxsb2NhKDEpOwogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ3NzU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0Nzc4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBhY19jdl9mdW5jX2FsbG9jYV93b3Jrcz15ZXMKIGVsc2UKQEAgLTQ4MDMsMTIgKzQ4MDYsMTIgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIGFsbG9jYSBuZWVkcyBDcmF5IGhvb2tzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0ODA3OiBjaGVja2luZyB3aGV0aGVyIGFsbG9jYSBuZWVkcyBDcmF5IGhvb2tzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0ODEwOiBjaGVja2luZyB3aGV0aGVyIGFsbG9jYSBuZWVkcyBDcmF5IGhvb2tzIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9vc19jcmF5JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDgxMiAiY29uZmlndXJlIgorI2xpbmUgNDgxNSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaWYgZGVmaW5lZChDUkFZKSAmJiAhIGRlZmluZWQoQ1JBWTIpCiB3ZWJlY3JheQpAQCAtNDgzMywxMiArNDgzNiwxMiBAQAogaWYgdGVzdCAkYWNfY3Zfb3NfY3JheSA9IHllczsgdGhlbgogZm9yIGFjX2Z1bmMgaW4gX2dldGI2NyBHRVRCNjcgZ2V0YjY3OyBkbwogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2Z1bmMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ4Mzc6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CitlY2hvICJjb25maWd1cmU6NDg0MDogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jXyRhY19mdW5jJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDg0MiAiY29uZmlndXJlIgorI2xpbmUgNDg0NSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYygpOyBiZWxvdy4gICovCkBAIC00ODYxLDcgKzQ4NjQsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDg2NTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ4Njg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNfJGFjX2Z1bmM9eWVzIgogZWxzZQpAQCAtNDg4OCw3ICs0ODkxLDcgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ4OTI6IGNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EiID4mNQorZWNobyAiY29uZmlndXJlOjQ4OTU6IGNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTQ4OTYsNyArNDg5OSw3IEBACiAgIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uPTAKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDkwMCAiY29uZmlndXJlIgorI2xpbmUgNDkwMyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiBmaW5kX3N0YWNrX2RpcmVjdGlvbiAoKQogewpAQCAtNDkxNSw3ICs0OTE4LDcgQEAKICAgZXhpdCAoZmluZF9zdGFja19kaXJlY3Rpb24oKSA8IDApOwogfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ5MTk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDkyMjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBhY19jdl9jX3N0YWNrX2RpcmVjdGlvbj0xCiBlbHNlCkBAIC00OTM5LDEyICs0OTQyLDEyIEBACiBmb3IgYWNfZnVuYyBpbiBzYnJrIHV0aW1lcyBzZXRtb2RlIGdldGNfdW5sb2NrZWQgc3RyY29sbAogZG8KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDk0MzogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0OTQ2OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0OTQ4ICJjb25maWd1cmUiCisjbGluZSA0OTUxICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8KQEAgLTQ5NjcsNyArNDk3MCw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0OTcxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDk3NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiCiBlbHNlCkBAIC00OTk1LDE5ICs0OTk4LDE5IEBACiAjIENoZWNrIHdoZXRoZXIgZm9wZW42NCBpcyBhdmFpbGFibGUgYW5kIHdoZXRoZXIgX0xBUkdFRklMRTY0X1NPVVJDRQogIyBuZWVkcyB0byBiZSBkZWZpbmVkIGZvciBpdAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGZvcGVuNjQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ5OTk6IGNoZWNraW5nIGZvciBmb3BlbjY0IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1MDAyOiBjaGVja2luZyBmb3IgZm9wZW42NCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYnVfY3ZfaGF2ZV9mb3BlbjY0JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTAwNCAiY29uZmlndXJlIgorI2xpbmUgNTAwNyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIGludCBtYWluKCkgewogRklMRSAqZiA9IGZvcGVuNjQgKCIvdG1wL2ZvbyIsInIiKTsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MDExOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTAxNDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYnVfY3ZfaGF2ZV9mb3BlbjY0PXllcwogZWxzZQpAQCAtNTAxNywxNCArNTAyMCwxNCBAQAogICBzYXZlZF9DUFBGTEFHUz0kQ1BQRkxBR1MKICBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX0xBUkdFRklMRTY0X1NPVVJDRSIKICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1MDIxICJjb25maWd1cmUiCisjbGluZSA1MDI0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogaW50IG1haW4oKSB7CiBGSUxFICpmID0gZm9wZW42NCAoIi90bXAvZm9vIiwiciIpOwogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUwMjg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MDMxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBidV9jdl9oYXZlX2ZvcGVuNjQ9Im5lZWQgLURfTEFSR0VGSUxFNjRfU09VUkNFIgogZWxzZQpAQCAtNTA1NiwxNCArNTA1OSwxNCBAQAogIyBTb21lIHN5c3RlbXMgaGF2ZSBmcmV4cCBvbmx5IGluIC1sbSwgbm90IGluIC1sYy4KIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGxpYnJhcnkgY29udGFpbmluZyBmcmV4cCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTA2MDogY2hlY2tpbmcgZm9yIGxpYnJhcnkgY29udGFpbmluZyBmcmV4cCIgPiY1CitlY2hvICJjb25maWd1cmU6NTA2MzogY2hlY2tpbmcgZm9yIGxpYnJhcnkgY29udGFpbmluZyBmcmV4cCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3Zfc2VhcmNoX2ZyZXhwJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgYWNfZnVuY19zZWFyY2hfc2F2ZV9MSUJTPSIkTElCUyIKIGFjX2N2X3NlYXJjaF9mcmV4cD0ibm8iCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1MDY3ICJjb25maWd1cmUiCisjbGluZSA1MDcwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC01MDc0LDcgKzUwNzcsNyBAQAogZnJleHAoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUwNzg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MDgxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBhY19jdl9zZWFyY2hfZnJleHA9Im5vbmUgcmVxdWlyZWQiCiBlbHNlCkBAIC01MDg1LDcgKzUwODgsNyBAQAogdGVzdCAiJGFjX2N2X3NlYXJjaF9mcmV4cCIgPSAibm8iICYmIGZvciBpIGluIG07IGRvCiBMSUJTPSItbCRpICAkYWNfZnVuY19zZWFyY2hfc2F2ZV9MSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTA4OSAiY29uZmlndXJlIgorI2xpbmUgNTA5MiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtNTA5Niw3ICs1MDk5LDcgQEAKIGZyZXhwKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MTAwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTEwMzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3Zfc2VhcmNoX2ZyZXhwPSItbCRpIgogYnJlYWsKQEAgLTUxMTgsMTkgKzUxMjEsMTkgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB0aW1lX3QgaW4gdGltZS5oIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1MTIyOiBjaGVja2luZyBmb3IgdGltZV90IGluIHRpbWUuaCIgPiY1CitlY2hvICJjb25maWd1cmU6NTEyNTogY2hlY2tpbmcgZm9yIHRpbWVfdCBpbiB0aW1lLmgiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2J1X2N2X2RlY2xfdGltZV90X3RpbWVfaCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDUxMjcgImNvbmZpZ3VyZSIKKyNsaW5lIDUxMzAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHRpbWUuaD4KIGludCBtYWluKCkgewogdGltZV90IGk7CiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTEzNDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MTM3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYnVfY3ZfZGVjbF90aW1lX3RfdGltZV9oPXllcwogZWxzZQpAQCAtNTE1MSwxOSArNTE1NCwxOSBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHRpbWVfdCBpbiBzeXMvdHlwZXMuaCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTE1NTogY2hlY2tpbmcgZm9yIHRpbWVfdCBpbiBzeXMvdHlwZXMuaCIgPiY1CitlY2hvICJjb25maWd1cmU6NTE1ODogY2hlY2tpbmcgZm9yIHRpbWVfdCBpbiBzeXMvdHlwZXMuaCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYnVfY3ZfZGVjbF90aW1lX3RfdHlwZXNfaCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDUxNjAgImNvbmZpZ3VyZSIKKyNsaW5lIDUxNjMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogaW50IG1haW4oKSB7CiB0aW1lX3QgaTsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MTY3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUxNzA6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBidV9jdl9kZWNsX3RpbWVfdF90eXBlc19oPXllcwogZWxzZQpAQCAtNTE4NiwxMiArNTE4OSwxMiBAQAogIyBVbmRlciBOZXh0IDMuMiA8dXRpbWUuaD4gYXBwYXJlbnRseSBkb2VzIG5vdCBkZWZpbmUgc3RydWN0IHV0aW1idWYKICMgYnkgZGVmYXVsdC4KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB1dGltZS5oIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1MTkwOiBjaGVja2luZyBmb3IgdXRpbWUuaCIgPiY1CitlY2hvICJjb25maWd1cmU6NTE5MzogY2hlY2tpbmcgZm9yIHV0aW1lLmgiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2J1X2N2X2hlYWRlcl91dGltZV9oJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTE5NSAiY29uZmlndXJlIgorI2xpbmUgNTE5OCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWZkZWYgSEFWRV9USU1FX0gKQEAgLTUyMDIsNyArNTIwNSw3IEBACiBzdHJ1Y3QgdXRpbWJ1ZiBzOwogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUyMDY6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTIwOTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGJ1X2N2X2hlYWRlcl91dGltZV9oPXllcwogZWxzZQpAQCAtNTIyMywxMiArNTIyNiwxMiBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBmcHJpbnRmIG11c3QgYmUgZGVjbGFyZWQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjUyMjc6IGNoZWNraW5nIHdoZXRoZXIgZnByaW50ZiBtdXN0IGJlIGRlY2xhcmVkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1MjMwOiBjaGVja2luZyB3aGV0aGVyIGZwcmludGYgbXVzdCBiZSBkZWNsYXJlZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYmZkX2N2X2RlY2xfbmVlZGVkX2ZwcmludGYnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1MjMyICJjb25maWd1cmUiCisjbGluZSA1MjM1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC01MjQ5LDcgKzUyNTIsNyBAQAogY2hhciAqKCpwZm4pID0gKGNoYXIgKigqKSkgZnByaW50ZgogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUyNTM6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTI1NjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGJmZF9jdl9kZWNsX25lZWRlZF9mcHJpbnRmPW5vCiBlbHNlCkBAIC01MjcwLDEyICs1MjczLDEyIEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHN0cnN0ciBtdXN0IGJlIGRlY2xhcmVkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1Mjc0OiBjaGVja2luZyB3aGV0aGVyIHN0cnN0ciBtdXN0IGJlIGRlY2xhcmVkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1Mjc3OiBjaGVja2luZyB3aGV0aGVyIHN0cnN0ciBtdXN0IGJlIGRlY2xhcmVkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydiZmRfY3ZfZGVjbF9uZWVkZWRfc3Ryc3RyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTI3OSAiY29uZmlndXJlIgorI2xpbmUgNTI4MiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNTI5Niw3ICs1Mjk5LDcgQEAKIGNoYXIgKigqcGZuKSA9IChjaGFyICooKikpIHN0cnN0cgogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUzMDA6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTMwMzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGJmZF9jdl9kZWNsX25lZWRlZF9zdHJzdHI9bm8KIGVsc2UKQEAgLTUzMTcsMTIgKzUzMjAsMTIgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgc2JyayBtdXN0IGJlIGRlY2xhcmVkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1MzIxOiBjaGVja2luZyB3aGV0aGVyIHNicmsgbXVzdCBiZSBkZWNsYXJlZCIgPiY1CitlY2hvICJjb25maWd1cmU6NTMyNDogY2hlY2tpbmcgd2hldGhlciBzYnJrIG11c3QgYmUgZGVjbGFyZWQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2JmZF9jdl9kZWNsX25lZWRlZF9zYnJrJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTMyNiAiY29uZmlndXJlIgorI2xpbmUgNTMyOSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNTM0Myw3ICs1MzQ2LDcgQEAKIGNoYXIgKigqcGZuKSA9IChjaGFyICooKikpIHNicmsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MzQ3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUzNTA6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBiZmRfY3ZfZGVjbF9uZWVkZWRfc2Jyaz1ubwogZWxzZQpAQCAtNTM2NCwxMiArNTM2NywxMiBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBnZXRlbnYgbXVzdCBiZSBkZWNsYXJlZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTM2ODogY2hlY2tpbmcgd2hldGhlciBnZXRlbnYgbXVzdCBiZSBkZWNsYXJlZCIgPiY1CitlY2hvICJjb25maWd1cmU6NTM3MTogY2hlY2tpbmcgd2hldGhlciBnZXRlbnYgbXVzdCBiZSBkZWNsYXJlZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYmZkX2N2X2RlY2xfbmVlZGVkX2dldGVudicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDUzNzMgImNvbmZpZ3VyZSIKKyNsaW5lIDUzNzYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTUzOTAsNyArNTM5Myw3IEBACiBjaGFyICooKnBmbikgPSAoY2hhciAqKCopKSBnZXRlbnYKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1Mzk0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUzOTc6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBiZmRfY3ZfZGVjbF9uZWVkZWRfZ2V0ZW52PW5vCiBlbHNlCkBAIC01NDExLDEyICs1NDE0LDEyIEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIGVudmlyb24gbXVzdCBiZSBkZWNsYXJlZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTQxNTogY2hlY2tpbmcgd2hldGhlciBlbnZpcm9uIG11c3QgYmUgZGVjbGFyZWQiID4mNQorZWNobyAiY29uZmlndXJlOjU0MTg6IGNoZWNraW5nIHdoZXRoZXIgZW52aXJvbiBtdXN0IGJlIGRlY2xhcmVkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydiZmRfY3ZfZGVjbF9uZWVkZWRfZW52aXJvbicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU0MjAgImNvbmZpZ3VyZSIKKyNsaW5lIDU0MjMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU0MzcsNyArNTQ0MCw3IEBACiBjaGFyICooKnBmbikgPSAoY2hhciAqKCopKSBlbnZpcm9uCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTQ0MTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1NDQ0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYmZkX2N2X2RlY2xfbmVlZGVkX2Vudmlyb249bm8KIGVsc2UKZGlmZiAtLWdpdCBhL2JpbnV0aWxzL2RlZmxleC5sIGIvYmludXRpbHMvZGVmbGV4LmwKaW5kZXggMTA2Y2M3Yi4uYmRmMTVkMyAxMDA2NDQKLS0tIGEvYmludXRpbHMvZGVmbGV4LmwKKysrIGIvYmludXRpbHMvZGVmbGV4LmwKQEAgLTEsMjggKzEsMjcgQEAKICV7LyogZGVmbGV4LmwgLSBMZXhlciBmb3IgLmRlZiBmaWxlcyAqLwogCi0vKiAgIENvcHlyaWdodCAxOTk1LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLyogIENvcHlyaWdodCAxOTk1LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAyLCAyMDAzLCAyMDA0CisgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLVRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBCaW51dGlscy4KKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgQmludXRpbHMuCiAKLVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLShhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIAotVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi1idXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogCi1Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KIAogCi0vKiBDb250cmlidXRlZCBieSBTdGV2ZSBDaGFtYmVybGFpbgotICAgCQkgIHNhY0BjeWdudXMuY29tCisvKiBDb250cmlidXRlZCBieSBTdGV2ZSBDaGFtYmVybGFpbjogc2FjQGN5Z251cy5jb20gICovCiAKLSovCiAjZGVmaW5lIERPTlRERUNMQVJFX01BTExPQwogI2luY2x1ZGUgImxpYmliZXJ0eS5oIgogI2luY2x1ZGUgImRlZnBhcnNlLmgiCkBAIC00Niw2ICs0NSw3IEBACiAiQkFTRSIJCXsgcmV0dXJuIEJBU0U7fQogIkNPTlNUQU5UIgl7IHJldHVybiBDT05TVEFOVDsgfQogIk5PTkFNRSIJeyByZXR1cm4gTk9OQU1FOyB9CisiUFJJVkFURSIJeyByZXR1cm4gUFJJVkFURTsgfQogIlJFQUQiCQl7IHJldHVybiBSRUFEO30KICJXUklURSIJCXsgcmV0dXJuIFdSSVRFO30KICJFWEVDVVRFIgl7IHJldHVybiBFWEVDVVRFO30KZGlmZiAtLWdpdCBhL2JpbnV0aWxzL2RlZnBhcnNlLnkgYi9iaW51dGlscy9kZWZwYXJzZS55CmluZGV4IGQwYmNjZDkuLmI1OGFhZWUgMTAwNjQ0Ci0tLSBhL2JpbnV0aWxzL2RlZnBhcnNlLnkKKysrIGIvYmludXRpbHMvZGVmcGFyc2UueQpAQCAtMSwyMiArMSwyMyBAQAogJXsgLyogZGVmcGFyc2UueSAtIHBhcnNlciBmb3IgLmRlZiBmaWxlcyAqLwogCi0vKiAgIENvcHlyaWdodCAxOTk1LCAxOTk3LCAxOTk4LCAxOTk5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLyogIENvcHlyaWdodCAxOTk1LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDA0CisgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLVRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBCaW51dGlscy4KKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgQmludXRpbHMuCiAKLVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLShhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIAotVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi1idXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogCi1Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KIAogI2luY2x1ZGUgImJmZC5oIgogI2luY2x1ZGUgImJ1Y29tbS5oIgpAQCAtMzAsMTEgKzMxLDExIEBACiAKICV0b2tlbiBOQU1FLCBMSUJSQVJZLCBERVNDUklQVElPTiwgU1RBQ0tTSVpFLCBIRUFQU0laRSwgQ09ERSwgREFUQQogJXRva2VuIFNFQ1RJT05TLCBFWFBPUlRTLCBJTVBPUlRTLCBWRVJTSU9OSywgQkFTRSwgQ09OU1RBTlQKLSV0b2tlbiBSRUFEIFdSSVRFIEVYRUNVVEUgU0hBUkVEIE5PTlNIQVJFRCBOT05BTUUKKyV0b2tlbiBSRUFEIFdSSVRFIEVYRUNVVEUgU0hBUkVEIE5PTlNIQVJFRCBOT05BTUUgUFJJVkFURQogJXRva2VuIFNJTkdMRSBNVUxUSVBMRSBJTklUSU5TVEFOQ0UgSU5JVEdMT0JBTCBURVJNSU5TVEFOQ0UgVEVSTUdMT0JBTAogJXRva2VuIDxpZD4gSUQKICV0b2tlbiA8bnVtYmVyPiBOVU1CRVIKLSV0eXBlICA8bnVtYmVyPiBvcHRfYmFzZSBvcHRfb3JkaW5hbCBvcHRfTk9OQU1FIG9wdF9DT05TVEFOVCBvcHRfREFUQQorJXR5cGUgIDxudW1iZXI+IG9wdF9iYXNlIG9wdF9vcmRpbmFsIG9wdF9OT05BTUUgb3B0X0NPTlNUQU5UIG9wdF9EQVRBIG9wdF9QUklWQVRFCiAldHlwZSAgPG51bWJlcj4gYXR0ciBhdHRyX2xpc3Qgb3B0X251bWJlcgogJXR5cGUgIDxpZD4gb3B0X25hbWUgb3B0X2VxdWFsX25hbWUgCiAKQEAgLTY2LDggKzY3LDggQEAKIAk7CiAKIGV4cGxpbmU6Ci0JCUlEIG9wdF9lcXVhbF9uYW1lIG9wdF9vcmRpbmFsIG9wdF9OT05BTUUgb3B0X0NPTlNUQU5UIG9wdF9EQVRBCi0JCQl7IGRlZl9leHBvcnRzICgkMSwgJDIsICQzLCAkNCwgJDUsICQ2KTt9CisJCUlEIG9wdF9lcXVhbF9uYW1lIG9wdF9vcmRpbmFsIG9wdF9OT05BTUUgb3B0X0NPTlNUQU5UIG9wdF9EQVRBIG9wdF9QUklWQVRFCisJCQl7IGRlZl9leHBvcnRzICgkMSwgJDIsICQzLCAkNCwgJDUsICQ2LCAkNyk7fQogCTsKIGltcGxpc3Q6CQogCQlpbXBsaXN0IGltcGxpbmUKQEAgLTEzMiw2ICsxMzMsMTEgQEAKIAl8CSAgICAgeyAkJCA9IDA7IH0KIAk7CiAKK29wdF9QUklWQVRFOgorCQlQUklWQVRFIHsgJCQgPSAxOyB9CisJfAkJeyAkJCA9IDA7IH0KKwk7CisKIG9wdF9uYW1lOiBJRAkJeyAkJCA9JDE7IH0KIAl8IElEICcuJyBJRAkKIAkgIHsgCmRpZmYgLS1naXQgYS9iaW51dGlscy9kbGx0b29sLmMgYi9iaW51dGlscy9kbGx0b29sLmMKaW5kZXggOWQyNTg2MS4uNWY5MjFhZSAxMDA2NDQKLS0tIGEvYmludXRpbHMvZGxsdG9vbC5jCisrKyBiL2JpbnV0aWxzL2RsbHRvb2wuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIGRsbHRvb2wuYyAtLSB0b29sIHRvIGdlbmVyYXRlIHN0dWZmIGZvciBQRSBzdHlsZSBETExzCi0gICBDb3B5cmlnaHQgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMworICAgQ29weXJpZ2h0IDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgQmludXRpbHMuCkBAIC00OSw3ICs0OSw3IEBACiAKICAgIEVYUE9SVFMgICggKCAgKCA8bmFtZTE+IFsgPSA8bmFtZTI+IF0gKQogICAgICAgICAgICAgICAgfCAoIDxuYW1lMT4gPSA8bW9kdWxlLW5hbWU+IC4gPGV4dGVybmFsLW5hbWU+KSkKLSAgICAgICAgICAgIFsgQCA8aW50ZWdlcj4gXSBbIE5PTkFNRSBdIFtDT05TVEFOVF0gW0RBVEFdICkgKgorICAgICAgICAgICAgWyBAIDxpbnRlZ2VyPiBdIFsgTk9OQU1FIF0gW0NPTlNUQU5UXSBbREFUQV0gW1BSSVZBVEVdICkgKgogICAgRGVjbGFyZXMgbmFtZTEgYXMgYW4gZXhwb3J0ZWQgc3ltYm9sIGZyb20gdGhlCiAgICBETEwsIHdpdGggb3B0aW9uYWwgb3JkaW5hbCBudW1iZXIgPGludGVnZXI+LgogICAgT3IgZGVjbGFyZXMgbmFtZTEgYXMgYW4gYWxpYXMgKGZvcndhcmQpIG9mIHRoZSBmdW5jdGlvbiA8ZXh0ZXJuYWwtbmFtZT4KQEAgLTY0Myw3ICs2NDMsOCBAQAogICAgIGNvbnN0IGNoYXIgKmludGVybmFsX25hbWU7CiAgICAgaW50IG9yZGluYWw7CiAgICAgaW50IGNvbnN0YW50OwotICAgIGludCBub25hbWU7CisgICAgaW50IG5vbmFtZTsJCS8qIERvbid0IHB1dCBuYW1lIGluIGltYWdlIGZpbGUuICAqLworICAgIGludCBwcml2YXRlOwkvKiBEb24ndCBwdXQgcmVmZXJlbmNlIGluIGltcG9ydCBsaWIuICAqLwogICAgIGludCBkYXRhOwogICAgIGludCBoaW50OwogICAgIGludCBmb3J3YXJkOwkvKiBOdW1iZXIgb2YgZm9yd2FyZCBsYWJlbCwgMCBtZWFucyBubyBmb3J3YXJkLiAgKi8KQEAgLTg4OSw3ICs4OTAsNyBAQAogCiB2b2lkCiBkZWZfZXhwb3J0cyAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqaW50ZXJuYWxfbmFtZSwgaW50IG9yZGluYWwsCi0JICAgICBpbnQgbm9uYW1lLCBpbnQgY29uc3RhbnQsIGludCBkYXRhKQorCSAgICAgaW50IG5vbmFtZSwgaW50IGNvbnN0YW50LCBpbnQgZGF0YSwgaW50IHByaXZhdGUpCiB7CiAgIHN0cnVjdCBleHBvcnQgKnAgPSAoc3RydWN0IGV4cG9ydCAqKSB4bWFsbG9jIChzaXplb2YgKCpwKSk7CiAKQEAgLTg5OCw2ICs4OTksNyBAQAogICBwLT5vcmRpbmFsID0gb3JkaW5hbDsKICAgcC0+Y29uc3RhbnQgPSBjb25zdGFudDsKICAgcC0+bm9uYW1lID0gbm9uYW1lOworICBwLT5wcml2YXRlID0gcHJpdmF0ZTsKICAgcC0+ZGF0YSA9IGRhdGE7CiAgIHAtPm5leHQgPSBkX2V4cG9ydHM7CiAgIGRfZXhwb3J0cyA9IHA7CkBAIC0xMjQ2LDcgKzEyNDgsNyBAQAogCSAgLyogRklYTUU6IFRoZSA1dGggYXJnIGlzIGZvciB0aGUgYGNvbnN0YW50JyBmaWVsZC4KIAkgICAgIFdoYXQgc2hvdWxkIGl0IGJlPyAgTm90IHRoYXQgaXQgbWF0dGVycyBzaW5jZSBpdCdzIG5vdAogCSAgICAgY3VycmVudGx5IHVzZWZ1bC4gICovCi0JICBkZWZfZXhwb3J0cyAoYywgMCwgLTEsIDAsIDAsICEgKGZsYWdzICYgQlNGX0ZVTkNUSU9OKSk7CisJICBkZWZfZXhwb3J0cyAoYywgMCwgLTEsIDAsIDAsICEgKGZsYWdzICYgQlNGX0ZVTkNUSU9OKSwgMCk7CiAKIAkgIGlmIChhZGRfc3RkY2FsbF9hbGlhcyAmJiBzdHJjaHIgKGMsICdAJykpCiAJICAgIHsKQEAgLTEyNTUsNyArMTI1Nyw3IEBACiAJICAgICAgY2hhciAqYXRzeW0gPSBzdHJjaHIgKGV4cG9ydGVkX25hbWUsICdAJyk7CiAJICAgICAgKmF0c3ltID0gJ1wwJzsKIAkgICAgICAvKiBOb3RlOiBzdGRjYWxsIGFsaWFzIHN5bWJvbHMgY2FuIG5ldmVyIGJlIGRhdGEuICAqLwotCSAgICAgIGRlZl9leHBvcnRzIChleHBvcnRlZF9uYW1lLCB4c3RyZHVwIChjKSwgLTEsIDAsIDAsIDApOworCSAgICAgIGRlZl9leHBvcnRzIChleHBvcnRlZF9uYW1lLCB4c3RyZHVwIChjKSwgLTEsIDAsIDAsIDAsIDApOwogCSAgICB9CiAJfQogICAgICAgZWxzZQpAQCAtMTI5NCw3ICsxMjk2LDcgQEAKIAkrK3N5bWJvbF9uYW1lOwogCiAgICAgICBkZWZfZXhwb3J0cyAoeHN0cmR1cCAoc3ltYm9sX25hbWUpICwgMCwgLTEsIDAsIDAsCi0JCSAgICEgKHN5bS0+ZmxhZ3MgJiBCU0ZfRlVOQ1RJT04pKTsKKwkJICAgISAoc3ltLT5mbGFncyAmIEJTRl9GVU5DVElPTiksIDApOwogCiAgICAgICBpZiAoYWRkX3N0ZGNhbGxfYWxpYXMgJiYgc3RyY2hyIChzeW1ib2xfbmFtZSwgJ0AnKSkKICAgICAgICAgewpAQCAtMTMwMyw3ICsxMzA1LDcgQEAKIAkgIGNoYXIgKmF0c3ltID0gc3RyY2hyIChleHBvcnRlZF9uYW1lLCAnQCcpOwogCSAgKmF0c3ltID0gJ1wwJzsKIAkgIC8qIE5vdGU6IHN0ZGNhbGwgYWxpYXMgc3ltYm9scyBjYW4gbmV2ZXIgYmUgZGF0YS4gICovCi0JICBkZWZfZXhwb3J0cyAoZXhwb3J0ZWRfbmFtZSwgeHN0cmR1cCAoc3ltYm9sX25hbWUpLCAtMSwgMCwgMCwgMCk7CisJICBkZWZfZXhwb3J0cyAoZXhwb3J0ZWRfbmFtZSwgeHN0cmR1cCAoc3ltYm9sX25hbWUpLCAtMSwgMCwgMCwgMCwgMCk7CiAJfQogICAgIH0KIH0KQEAgLTE1MTgsMTMgKzE1MjAsMTQgQEAKICAgZnByaW50ZiAoZiwgIlxuIik7CiAgIGZvciAoaSA9IDAsIGV4cCA9IGRfZXhwb3J0czsgZXhwOyBpKyssIGV4cCA9IGV4cC0+bmV4dCkKICAgICB7Ci0gICAgICBmcHJpbnRmIChmLCAiJXMgICVkID0gJXMgJXMgQCAlZCAlcyVzJXNcbiIsCisgICAgICBmcHJpbnRmIChmLCAiJXMgICVkID0gJXMgJXMgQCAlZCAlcyVzJXMlc1xuIiwKIAkgICAgICAgQVNNX0MsCiAJICAgICAgIGksCiAJICAgICAgIGV4cC0+bmFtZSwKIAkgICAgICAgZXhwLT5pbnRlcm5hbF9uYW1lLAogCSAgICAgICBleHAtPm9yZGluYWwsCiAJICAgICAgIGV4cC0+bm9uYW1lID8gIk5PTkFNRSAiIDogIiIsCisJICAgICAgIGV4cC0+cHJpdmF0ZSA/ICJQUklWQVRFICIgOiAiIiwKIAkgICAgICAgZXhwLT5jb25zdGFudCA/ICJDT05TVEFOVCIgOiAiIiwKIAkgICAgICAgZXhwLT5kYXRhID8gIkRBVEEiIDogIiIpOwogICAgIH0KQEAgLTE1OTUsMjAgKzE1OTgsMjAgQEAKIAogICAgICAgaWYgKHN0cmNtcCAoZXhwLT5uYW1lLCBleHAtPmludGVybmFsX25hbWUpID09IDApCiAJewotCi0JICBmcHJpbnRmIChvdXRwdXRfZGVmLCAiXHQlcyVzJXMgQCAlZCVzJXNcbiIsCisJICBmcHJpbnRmIChvdXRwdXRfZGVmLCAiXHQlcyVzJXMgQCAlZCVzJXMlc1xuIiwKIAkJICAgcXVvdGUsCiAJCSAgIGV4cC0+bmFtZSwKIAkJICAgcXVvdGUsCiAJCSAgIGV4cC0+b3JkaW5hbCwKIAkJICAgZXhwLT5ub25hbWUgPyAiIE5PTkFNRSIgOiAiIiwKKwkJICAgZXhwLT5wcml2YXRlID8gIlBSSVZBVEUgIiA6ICIiLAogCQkgICBleHAtPmRhdGEgPyAiIERBVEEiIDogIiIpOwogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBjaGFyICpxdW90ZTEgPSBzdHJjaHIgKGV4cC0+aW50ZXJuYWxfbmFtZSwgJy4nKSA/ICJcIiIgOiAiIjsKKwkgIGNoYXIgKiBxdW90ZTEgPSBzdHJjaHIgKGV4cC0+aW50ZXJuYWxfbmFtZSwgJy4nKSA/ICJcIiIgOiAiIjsKIAkgIC8qIGNoYXIgKmFsaWFzID0gICovCi0JICBmcHJpbnRmIChvdXRwdXRfZGVmLCAiXHQlcyVzJXMgPSAlcyVzJXMgQCAlZCVzJXNcbiIsCisJICBmcHJpbnRmIChvdXRwdXRfZGVmLCAiXHQlcyVzJXMgPSAlcyVzJXMgQCAlZCVzJXMlc1xuIiwKIAkJICAgcXVvdGUsCiAJCSAgIGV4cC0+bmFtZSwKIAkJICAgcXVvdGUsCkBAIC0xNjE3LDYgKzE2MjAsNyBAQAogCQkgICBxdW90ZTEsCiAJCSAgIGV4cC0+b3JkaW5hbCwKIAkJICAgZXhwLT5ub25hbWUgPyAiIE5PTkFNRSIgOiAiIiwKKwkJICAgZXhwLT5wcml2YXRlID8gIlBSSVZBVEUgIiA6ICIiLAogCQkgICBleHAtPmRhdGEgPyAiIERBVEEiIDogIiIpOwogCX0KICAgICB9CkBAIC0xODQxLDE0ICsxODQ1LDE0IEBACiAKICAgICAgIGZwcmludGYoZiwiJXMgRXhwb3J0IE5hbWUgVGFibGVcbiIsIEFTTV9DKTsKICAgICAgIGZvciAoaSA9IDA7IChleHAgPSBkX2V4cG9ydHNfbGV4aWNhbGx5W2ldKTsgaSsrKQotCWlmICghZXhwLT5ub25hbWUgfHwgc2hvd19hbGxuYW1lcykKLQkgIHsKKwl7CisJICBpZiAoIWV4cC0+bm9uYW1lIHx8IHNob3dfYWxsbmFtZXMpCiAJICAgIGZwcmludGYgKGYsICJuJWQ6CSVzCVwiJXNcIlxuIiwKIAkJICAgICBleHAtPm9yZGluYWwsIEFTTV9URVhULCB4bGF0ZSAoZXhwLT5uYW1lKSk7Ci0JICAgIGlmIChleHAtPmZvcndhcmQgIT0gMCkKLQkgICAgICBmcHJpbnRmIChmLCAiZiVkOgklcwlcIiVzXCJcbiIsCi0JCSAgICAgICBleHAtPmZvcndhcmQsIEFTTV9URVhULCBleHAtPmludGVybmFsX25hbWUpOwotCSAgfQorCSAgaWYgKGV4cC0+Zm9yd2FyZCAhPSAwKQorCSAgICBmcHJpbnRmIChmLCAiZiVkOgklcwlcIiVzXCJcbiIsCisJCSAgICAgZXhwLT5mb3J3YXJkLCBBU01fVEVYVCwgZXhwLT5pbnRlcm5hbF9uYW1lKTsKKwl9CiAKICAgICAgIGlmIChhX2xpc3QpCiAJewpAQCAtMjc5NCw3ICsyNzk4LDExIEBACiAKICAgZm9yIChpID0gMDsgKGV4cCA9IGRfZXhwb3J0c19sZXhpY2FsbHlbaV0pOyBpKyspCiAgICAgewotICAgICAgYmZkICpuID0gbWFrZV9vbmVfbGliX2ZpbGUgKGV4cCwgaSk7CisgICAgICBiZmQgKm47CisgICAgICAvKiBEb24ndCBhZGQgUFJJVkFURSBlbnRyaWVzIHRvIGltcG9ydCBsaWIuICAqLworICAgICAgaWYgKGV4cC0+cHJpdmF0ZSkKKwljb250aW51ZTsKKyAgICAgIG4gPSBtYWtlX29uZV9saWJfZmlsZSAoZXhwLCBpKTsKICAgICAgIG4tPm5leHQgPSBoZWFkOwogICAgICAgaGVhZCA9IG47CiAgICAgfQpAQCAtMjgzMSw4ICsyODM5LDExIEBACiAgICAgICBjaGFyICpuYW1lOwogCiAgICAgICBuYW1lID0gKGNoYXIgKikgYWxsb2NhIChzdHJsZW4gKFRNUF9TVFVCKSArIDEwKTsKLSAgICAgIGZvciAoaSA9IDAsIGV4cCA9IGRfZXhwb3J0czsgZXhwOyBpKyssIGV4cCA9IGV4cC0+bmV4dCkKKyAgICAgIGZvciAoaSA9IDA7IChleHAgPSBkX2V4cG9ydHNfbGV4aWNhbGx5W2ldKTsgaSsrKQogCXsKKwkgIC8qIERvbid0IGRlbGV0ZSBub24tZXhpc3RlbnQgc3R1YnMgZm9yIFBSSVZBVEUgZW50cmllcy4gICovCisgICAgICAgICAgaWYgKGV4cC0+cHJpdmF0ZSkKKwkgICAgY29udGludWU7CiAJICBzcHJpbnRmIChuYW1lLCAiJXMlMDVkLm8iLCBUTVBfU1RVQiwgaSk7CiAJICBpZiAodW5saW5rIChuYW1lKSA8IDApCiAJICAgIC8qIHhnZXR0ZXh0OmMtZm9ybWF0ICovCkBAIC0yODQzLDEwICsyODU0LDkgQEAKICAgaW5mb3JtIChfKCJDcmVhdGVkIGxpYiBmaWxlIikpOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogLyogUnVuIHRocm91Z2ggdGhlIGluZm9ybWF0aW9uIGdhdGhlcmVkIGZyb20gdGhlIC5vIGZpbGVzIGFuZCB0aGUKICAgIC5kZWYgZmlsZSBhbmQgd29yayBvdXQgdGhlIGJlc3Qgc3R1ZmYuICAqLworCiBzdGF0aWMgaW50CiBwZnVuYyAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIHsKQEAgLTI4OTAsMTEgKzI5MDAsNyBAQAogfQogCiBzdGF0aWMgdm9pZAotZHRhYiAoZXhwb3J0X3R5cGUgKipwdHIKLSNpZm5kZWYgU0FDREVCVUcKLUFUVFJJQlVURV9VTlVTRUQKLSNlbmRpZgotICAgICAgKQorZHRhYiAoZXhwb3J0X3R5cGUgKipwdHIgQVRUUklCVVRFX1VOVVNFRCkKIHsKICNpZmRlZiBTQUNERUJVRwogICBpbnQgaTsKQEAgLTI5MjIsNyArMjkyOCw2IEBACiAKICAgd2hpbGUgKG1vcmUpCiAgICAgewotCiAgICAgICBtb3JlID0gMDsKICAgICAgIC8qIFJlbW92ZSBkdXBsaWNhdGVzLiAgKi8KICAgICAgIHFzb3J0IChkX2V4cG9ydF92ZWMsIGRfbmZ1bmNzLCBzaXplb2YgKGV4cG9ydF90eXBlICopLCBuZnVuYyk7CkBAIC0yOTMzLDcgKzI5MzgsNiBAQAogCSAgaWYgKHN0cmNtcCAoZF9leHBvcnRfdmVjW2ldLT5uYW1lLAogCQkgICAgICBkX2V4cG9ydF92ZWNbaSArIDFdLT5uYW1lKSA9PSAwKQogCSAgICB7Ci0KIAkgICAgICBleHBvcnRfdHlwZSAqYSA9IGRfZXhwb3J0X3ZlY1tpXTsKIAkgICAgICBleHBvcnRfdHlwZSAqYiA9IGRfZXhwb3J0X3ZlY1tpICsgMV07CiAKQEAgLTI5NjMsMTMgKzI5NjcsMTAgQEAKIAl9CiAgICAgfQogCi0KICAgLyogQ291bnQgdGhlIG5hbWVzLiAgKi8KICAgZm9yIChpID0gMDsgaSA8IGRfbmZ1bmNzOyBpKyspCi0gICAgewotICAgICAgaWYgKCFkX2V4cG9ydF92ZWNbaV0tPm5vbmFtZSkKLQlkX25hbWVkX25mdW5jcysrOwotICAgIH0KKyAgICBpZiAoIWRfZXhwb3J0X3ZlY1tpXS0+bm9uYW1lKQorICAgICAgZF9uYW1lZF9uZnVuY3MrKzsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTMwMDgsNyArMzAwOSw3IEBACiAgICAgewogICAgICAgaWYgKGRfZXhwb3J0X3ZlY1tpXS0+b3JkaW5hbCA9PSAtMSkKIAl7Ci0JICByZWdpc3RlciBpbnQgajsKKwkgIGludCBqOwogCiAJICAvKiBGaXJzdCB0cnkgd2l0aGluIG9yIGFmdGVyIGFueSB1c2VyIHN1cHBsaWVkIHJhbmdlLiAgKi8KIAkgIGZvciAoaiA9IGxvd2VzdDsgaiA8IHNpemU7IGorKykKQEAgLTMwNjMsOCArMzA2NCw3IEBACiAKICAgaW50IGk7CiAgIGludCBoaW50ID0gMDsKLSAgZXhwb3J0X3R5cGUgKipkX2V4cG9ydF92ZWMKLSAgPSAoZXhwb3J0X3R5cGUgKiopIHhtYWxsb2MgKHNpemVvZiAoZXhwb3J0X3R5cGUgKikgKiBkX25mdW5jcyk7CisgIGV4cG9ydF90eXBlICoqZF9leHBvcnRfdmVjID0geG1hbGxvYyAoc2l6ZW9mIChleHBvcnRfdHlwZSAqKSAqIGRfbmZ1bmNzKTsKIAogICBpbmZvcm0gKF8oIlByb2Nlc3NpbmcgZGVmaW5pdGlvbnMiKSk7CiAKQEAgLTMxMDEsOCArMzEwMSw2IEBACiAgIGluZm9ybSAoXygiUHJvY2Vzc2VkIGRlZmluaXRpb25zIikpOwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogc3RhdGljIHZvaWQKIHVzYWdlIChGSUxFICpmaWxlLCBpbnQgc3RhdHVzKQogewpAQCAtMzIzOSw3ICszMjM3LDcgQEAKIAkgIGFzX2ZsYWdzID0gb3B0YXJnOwogCSAgYnJlYWs7CiAKLQkgIC8qIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgKi8KKwkgIC8qIElnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkuICAqLwogCWNhc2UgJ3UnOgogCSAgYnJlYWs7CiAJY2FzZSAnYSc6CmRpZmYgLS1naXQgYS9iaW51dGlscy9kbGx0b29sLmggYi9iaW51dGlscy9kbGx0b29sLmgKaW5kZXggYzJlYWVhNi4uZjQ4OGQ5NiAxMDA2NDQKLS0tIGEvYmludXRpbHMvZGxsdG9vbC5oCisrKyBiL2JpbnV0aWxzL2RsbHRvb2wuaApAQCAtMSw1ICsxLDUgQEAKIC8qIGRsbHRvb2wuaCAtLSBoZWFkZXIgZmlsZSBmb3IgZGxsdG9vbAotICAgQ29weXJpZ2h0IDE5OTcsIDE5OTgsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb3B5cmlnaHQgMTk5NywgMTk5OCwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEJpbnV0aWxzLgogCkBAIC0yNCw3ICsyNCw3IEBACiBleHRlcm4gdm9pZCBkZWZfY29kZSAoaW50KTsKIGV4dGVybiB2b2lkIGRlZl9kYXRhIChpbnQpOwogZXh0ZXJuIHZvaWQgZGVmX2Rlc2NyaXB0aW9uIChjb25zdCBjaGFyICopOwotZXh0ZXJuIHZvaWQgZGVmX2V4cG9ydHMgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQpOworZXh0ZXJuIHZvaWQgZGVmX2V4cG9ydHMgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCk7CiBleHRlcm4gdm9pZCBkZWZfaGVhcHNpemUgKGludCwgaW50KTsKIGV4dGVybiB2b2lkIGRlZl9pbXBvcnQKICAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKQEAgLTMzLDkgKzMzLDEwIEBACiBleHRlcm4gdm9pZCBkZWZfc2VjdGlvbiAoY29uc3QgY2hhciAqLCBpbnQpOwogZXh0ZXJuIHZvaWQgZGVmX3N0YWNrc2l6ZSAoaW50LCBpbnQpOwogZXh0ZXJuIHZvaWQgZGVmX3ZlcnNpb24gKGludCwgaW50KTsKLWV4dGVybiBpbnQgeXlwYXJzZSAodm9pZCk7Ci1leHRlcm4gaW50IHl5ZXJyb3IgKGNvbnN0IGNoYXIgKik7CitleHRlcm4gaW50ICB5eXBhcnNlICh2b2lkKTsKK2V4dGVybiBpbnQgIHl5ZXJyb3IgKGNvbnN0IGNoYXIgKik7CitleHRlcm4gaW50ICB5eWxleCAodm9pZCk7CisKIGV4dGVybiBpbnQgeXlkZWJ1ZzsKLWV4dGVybiBpbnQgeXlsZXggKHZvaWQpOwogZXh0ZXJuIEZJTEUgKnl5aW47CiBleHRlcm4gaW50IGxpbmVudW1iZXI7CmRpZmYgLS1naXQgYS9iaW51dGlscy9tYWMtYmludXRpbHMuciBiL2JpbnV0aWxzL21hYy1iaW51dGlscy5yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjFhMzAzLi4wMDAwMDAwCi0tLSBhL2JpbnV0aWxzL21hYy1iaW51dGlscy5yCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyogUmVzb3VyY2VzIGZvciBHTlUgYmludXRpbHMuICovCi0KLSNpbmNsdWRlICJTeXNUeXBlcy5yIgotCi0vKiBWZXJzaW9uIHJlc291cmNlcy4gKi8KLQotcmVzb3VyY2UgJ3ZlcnMnICgxKSAgewotCTAsCi0JMCwKLQkwLAotCTAsCi0JdmVyVXMsCi0JVkVSU0lPTl9TVFJJTkcsCi0JVkVSU0lPTl9TVFJJTkcgICIgKEMpIDE5ODYtOTUgRlNGLCBJbmMuIgotfTsKLQotcmVzb3VyY2UgJ3ZlcnMnICgyLCBwdXJnZWFibGUpICB7Ci0JMCwKLQkwLAotCTAsCi0JMCwKLQl2ZXJVcywKLQlWRVJTSU9OX1NUUklORywKLQkiYmludXRpbHMgIiBWRVJTSU9OX1NUUklORyAiIGZvciBNUFciCi19OwotCi0jaWZkZWYgV0FOVF9DRlJHCi0KLSNpbmNsdWRlICJDb2RlRnJhZ21lbnRUeXBlcy5yIgotCi1yZXNvdXJjZSAnY2ZyZycgKDApIHsKLQl7Ci0JCWtQb3dlclBDLAotCQlrRnVsbExpYiwKLQkJa05vVmVyc2lvbk51bSwga05vVmVyc2lvbk51bSwKLQkJMCwwLAotCQlrSXNBcHAsIGtPbkRpc2tGbGF0LCBrWmVyb09mZnNldCwga1dob2xlRm9yaywKLQkJUFJPR19OQU1FCi0JfQotfTsKLQotI2VuZGlmIC8qIFdBTlRfQ0ZSRyAqLwpkaWZmIC0tZ2l0IGEvYmludXRpbHMvbXB3LWNvbmZpZy5pbiBiL2JpbnV0aWxzL21wdy1jb25maWcuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYTA2N2QuLjAwMDAwMDAKLS0tIGEvYmludXRpbHMvbXB3LWNvbmZpZy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLSMgQ29uZmlndXJhdGlvbiBmcmFnbWVudCBmb3IgYmludXRpbHMuCi0KLVNldCB0YXJnZXRfYXJjaCBgZWNobyB7dGFyZ2V0X2Nhbm9uaWNhbH0gfCBzZWQgLWUgJ3MvLS4qLS4qLy8nYAotCi0jIChzaG91bGQgY2Fub25pY2FsaXplIGFyY2ggbmFtZSkgKi8KLQotU2V0IGFyY2huYW1lIEFSQ0hfe3RhcmdldF9hcmNofQotCi1TZXQgdW5kZXJzY29yZSAwCi0KLUlmICJ7dGFyZ2V0X2Nhbm9uaWNhbH0iID1+IC9zaC1oaXRhY2hpLWhtcy8KLQlTZXQgdW5kZXJzY29yZSAxCi1FbmQgSWYKLQotRWNobyAnIyBGcm9tIG1wdy1jb25maWcuaW4nCQkJCSA+ICJ7b30ibWsudG1wCi1FY2hvICJBUkNIREVGUyA9IC1kIiB7YXJjaG5hbWV9CQkJCT4+ICJ7b30ibWsudG1wCi1FY2hvICJVTkRFUlNDT1JFID0gIiB7dW5kZXJzY29yZX0JCQk+PiAie299Im1rLnRtcAotRWNobyAiQlVJTERfTkxNQ09OViA9ICIJCQkJCT4+ICJ7b30ibWsudG1wCi1FY2hvICJCVUlMRF9TUkNPTlYgPSAiCQkJCQk+PiAie299Im1rLnRtcAotRWNobyAiU1lTSU5GT19QUk9HID0gIgkJCQkJPj4gIntvfSJtay50bXAKLUVjaG8gIkJVSUxEX0RMTFRPT0wgPSAiCQkJCQk+PiAie299Im1rLnRtcAotRWNobyAnIyBFbmQgZnJvbSBtcHctY29uZmlnLmluJwkJCQk+PiAie299Im1rLnRtcAotCi1FY2hvICcvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBieSBtcHctY29uZmlndXJlLiAgKi8nCSA+ICJ7b30iY29uZmlnLm5ldwotRWNobyAnI2luY2x1ZGUgIm1wdy5oIicJCQkJCT4+ICJ7b30iY29uZmlnLm5ldwotCi1Nb3ZlSWZDaGFuZ2UgIntvfSJjb25maWcubmV3ICJ7b30iY29uZmlnLmgKZGlmZiAtLWdpdCBhL2JpbnV0aWxzL21wdy1tYWtlLnNlZCBiL2JpbnV0aWxzL21wdy1tYWtlLnNlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNhYmZmZS4uMDAwMDAwMAotLS0gYS9iaW51dGlscy9tcHctbWFrZS5zZWQKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotIyBTZWQgY29tbWFuZHMgdG8gZmluaXNoIHRyYW5zbGF0aW5nIHRoZSBiaW51dGlscyBVbml4IG1ha2VmaWxlIGludG8gTVBXIHN5bnRheC4KLQotIyBBZGQgYSBydWxlLgotL14jIyMjIC4qL2FcCi1cCi0ie299InVuZGVyc2NvcmUuYy5vIFxcT3B0aW9uLWYgIntvfSJ1bmRlcnNjb3JlLmNcCi0KLSMgQ29tbWVudCBvdXQgYW55IGFsaWFzIHNldHRpbmdzLgotL15ob3N0X2FsaWFzID0vcy9eLyMvCi0vXnRhcmdldF9hbGlhcyA9L3MvXi8jLwotCi0jIFdoYWNrIG91dCB1bnVzZWQgaG9zdCBkZWZpbmUgYml0cy4KLS9IREVGSU5FUy9zL0BIREVGSU5FU0AvLwotCi0jIERvbid0IGJ1aWxkIHNwZWNpYWxpemVkIHRvb2xzLgotL0JVSUxEX05MTUNPTlYvcy9AQlVJTERfTkxNQ09OVkAvLwotL0JVSUxEX1NSQ09OVi9zL0BCVUlMRF9TUkNPTlZALy8KLS9CVUlMRF9ETExUT09ML3MvQEJVSUxEX0RMTFRPT0xALy8KLQotL1VOREVSU0NPUkUvcy9AVU5ERVJTQ09SRUAve1VOREVSU0NPUkV9LwotCi0jIERvbid0IG5lZWQgdGhpcy4KLS9ASExERkxBR1NAL3MvQEhMREZMQUdTQC8vCi0KLSMgUG9pbnQgYXQgdGhlIGxpYnJhcmllcyBkaXJlY3RseS4KLS9AQkZETElCQC9zL0BCRkRMSUJALzo6YmZkOmxpYmJmZC5vLwotL0BPUENPREVTQC9zL0BPUENPREVTQC86Om9wY29kZXM6bGlib3Bjb2Rlcy5vLwotCi0jIFdoYWNrIG91dCB0YXJnZXQgbWFrZWZpbGUgZnJhZ21lbnQuCi0vdGFyZ2V0X21ha2VmaWxlX2ZyYWdtZW50L3MvdGFyZ2V0X21ha2VmaWxlX2ZyYWdtZW50QC8vCi0KLSMgRml4IGFuZCBhZGQgdG8gdGhlIGluY2x1ZGUgcGF0aHMuCi0vXklOQ0xVREVTID0gLiokL3MvJC8gLWkgIntJTkNESVJ9IjptcHc6IC1pIDo6ZXh0cmEtaW5jbHVkZTovCi0vQkZERElSL3MvLWkge0JGRERJUn0gLy1pICJ7QkZERElSfSI6IC8KLS9JTkNESVIvcy8taSB7SU5DRElSfSAvLWkgIntJTkNESVJ9IjogLwotCi0jIFVzZSBieWFjYyBpbnN0ZWFkIG9mIGJpc29uIChmb3Igbm93IGFueXdheSkuCi0vQklTT04vcy9eQklTT04gPS4qJC9CSVNPTiA9IGJ5YWNjLwotIy9CSVNPTkZMQUdTL3MvXkJJU09ORkxBR1MgPS4qJC9CSVNPTkZMQUdTID0gLwotCi0jIEVtYmVkIHRoZSB2ZXJzaW9uIGluIHN5bWJvbGljIGRvdWJsZXF1b3RlcyB0aGF0IHdpbGwgZXhwYW5kIHRvCi0jIHRoZSByaWdodCB0aGluZyBmb3IgZWFjaCBjb21waWxlci4KLS9WRVJTSU9OL3MvJyJ7VkVSU0lPTn0iJy97ZHF9e1ZFUlNJT059e2RxfS8KLQotIyAnKycgaXMgYSBzcGVjaWFsIGNoYXIgdG8gTVBXLCBkb24ndCB1c2UgaXQgZXZlci4KLS9jKytmaWx0L3MvYysrZmlsdC9jcGx1c2ZpbHQvCi0KLSMgQWxsIG9mIHRoZSBiaW51dGlscyB1c2UgdGhlIHNhbWUgUmV6IGZpbGUsIGNoYW5nZSBuYW1lcyB0byByZWZlciB0byBpdC4KLS9ee1tBLVpdKl9QUk9HfS9zLyQvICJ7c30ibWFjLWJpbnV0aWxzLnIvCi0ve1tBLVpdKl9QUk9HfVwuci9zL3tbQS1aXSpfUFJPR31cLnIvbWFjLWJpbnV0aWxzLnIvCi0KLSMgVGhlcmUgYXJlIGF1dG8tZ2VuZXJhdGVkIHJlZmVyZW5jZXMgdG8gQkZEIC5oIGZpbGVzIHRoYXQgYXJlIG5vdAotIyBpbiB0aGUgb2JqZGlyIChsaWtlIGJmZC5oKSBidXQgYXJlIGluIHRoZSBzb3VyY2UgZGlyLgotLzo6YmZkOmxpYi9zLzo6YmZkOmxpYlwoW2Etel0qXClcLmgve0JGRERJUn06bGliXDEuaC9nCi0KLSMgRml4IHRoZSBsb2NhdGlvbnMgb2YgZ2VuZXJhdGVkIGZpbGVzLgotL2NvbmZpZy9zLyJ7c30iY29uZmlnXC5oLyJ7b30iY29uZmlnLmgvZwotL2NvbmZpZy9zL15jb25maWdcLmgvIntvfSJjb25maWdcLmgvCi0vdW5kZXJzY29yZS9zLyJ7c30idW5kZXJzY29yZVwuYy8ie299InVuZGVyc2NvcmUuYy9nCi0vdW5kZXJzY29yZS9zL151bmRlcnNjb3JlXC5jLyJ7b30idW5kZXJzY29yZVwuYy8KLQotIyBGaXggcGF0aHMgdG8gZ2VuZXJhdGVkIHNvdXJjZSBmaWxlcy4KLS9sZXgueXkuYy9zLyJ7c30ibGV4XC55eVwuYy8ie299ImxleC55eS5jL2cKLS9sZXgueXkuYy9zL15sZXhcLnl5XC5jLyJ7b30ibGV4Lnl5LmMvCi0vYXJsZXguYy9zLyJ7c30iYXJsZXhcLmMvIntvfSJhcmxleC5jL2cKLS9hcmxleC5jL3MvXmFybGV4XC5jLyJ7b30iYXJsZXguYy8KLS95LnRhYi5jL3MvIntzfSJ5XC50YWJcLmMvIntvfSJ5LnRhYi5jL2cKLS95LnRhYi5jL3MvXnlcLnRhYlwuYy8ie299InkudGFiLmMvCi0vYXJwYXJzZS5jL3MvIntzfSJhcnBhcnNlXC5jLyJ7b30iYXJwYXJzZS5jL2cKLS9hcnBhcnNlLmMvcy9eYXJwYXJzZVwuYy8ie299ImFycGFyc2UuYy8KLS95LnRhYi5oL3MvIntzfSJ5XC50YWJcLmgvIntvfSJ5LnRhYi5oL2cKLS95LnRhYi5oL3MvXnlcLnRhYlwuaC8ie299InkudGFiLmgvCi0vYXJwYXJzZS5oL3MvIntzfSJhcnBhcnNlXC5oLyJ7b30iYXJwYXJzZS5oL2cKLS9hcnBhcnNlLmgvcy9eYXJwYXJzZVwuaC8ie299ImFycGFyc2UuaC8KLQotLyJ7c30ie0lOQ0RJUn0vcy8ie3N9IntJTkNESVJ9LyJ7SU5DRElSfSIvZwotCi0jIFRoZSBnZW5lcmF0ZWQgbGV4ZXIgbWF5IGluY2x1ZGUgYW4gaWZkZWYgZm9yIG9sZGVyIE1hYyBjb21waWxlcnMgdGhhdAotIyBuZWVkcyB0byB3b3JrIHdpdGggbmV3ZXIgY29tcGlsZXJzIGFsc28uCi0vbGV4Lnl5LmMvcy9SZW5hbWUgLXkgXChbXiBdKlwpIFwoW14gXSpcKSQvc2VkIC1lICdzLGlmZGVmIG1hY2ludG9zaCxpZiBkZWZpbmVkKG1hY2ludG9zaCkgfHwgZGVmaW5lZChfX01XRVJLU19fKSwnIFwxID4gXDIvCi0KLSMgRml4IGFuIG92ZXItZWFnZXJuZXNzLgotL2VjaG8uKldBUk5JTkcuKlRoaXMgZmlsZS9zLycuKicvJyAnLwotCi0jIEFkZCBhICJzdGFtcHMiIHRhcmdldC4KLSRhXAotc3RhbXBzIFxcT3B0aW9uLWYgc3RhbXAtdW5kZXJcCi0KLS9eaW5zdGFsbCBcXE9wdGlvbi1mIC8sL14kL2NcCi1pbnN0YWxsIFxcT3B0aW9uLWYgIGFsbCBpbnN0YWxsLW9ubHlcCi1cCi1pbnN0YWxsLW9ubHkgXFxPcHRpb24tZlwKLQlOZXdGb2xkZXJSZWN1cnNpdmUgIntiaW5kaXJ9IlwKLQkjIE5lZWQgdG8gY29weSBhbGwgdGhlIHRvb2xzXAotCUZvciBwcm9nIGluIHtQUk9HU31cCi0JCVNldCBwcm9nbmFtZSBgZWNobyB7cHJvZ30gfCBzZWQgLWUgJ3MvLm5ldy8vJ2BcCi0JCUR1cGxpY2F0ZSAteSA6e3Byb2d9ICJ7YmluZGlyfSJ7cHJvZ25hbWV9XAotCUVuZCBGb3JcCi0KLQotL3RydWUvcy8gOyBAdHJ1ZSQvLwotCi0jIGRvdCBmaWxlcyBhcmUgdHJvdWJsZSwgcmVtb3ZlIHRoZW0gYW5kIHRoZWlyIGFjdGlvbnMuCi0vXlwuZGVwLywvXiQvZAotCi0jIFJlbW92ZSB1bi11c2VmdWwgdGFyZ2V0cy4KLS9eTWFrZWZpbGUgXFxPcHRpb24tZi8sL14kL2QKLS9eIntvfSJjb25maWcuaCBcXE9wdGlvbi1mLywvXiQvZAotL15jb25maWcuc3RhdHVzIFxcT3B0aW9uLWYvLC9eJC9kCi0KLSMgRG9uJ3QgdHJ5IHRvIG1ha2UgdGhlIGRlbWFuZ2xlcidzIG1hbiBwYWdlLCBpdCdzIHVzZWxlc3MuCi0vXntERU1BTkdMRVJfUFJPR31cLjEgXFxPcHRpb24tZi8sL14kL2QKLSMgRG9uJ3QgZGVwZW5kIG9uIGl0IGVpdGhlci4KLS97REVNQU5HTEVSX1BST0d9L3MvIHtERU1BTkdMRVJfUFJPR31cLjEvLwotCmRpZmYgLS1naXQgYS9iaW51dGlscy9vYmpjb3B5LmMgYi9iaW51dGlscy9vYmpjb3B5LmMKaW5kZXggZDMxZWI4Zi4uOTYyMzM5OCAxMDA2NDQKLS0tIGEvYmludXRpbHMvb2JqY29weS5jCisrKyBiL2JpbnV0aWxzL29iamNvcHkuYwpAQCAtMjA1NSw5ICsyMDU1LDkgQEAKICAgICAgIGlmIChjb3B5X2J5dGUgPj0gMCkKIAl7CiAJICAvKiBLZWVwIG9ubHkgZXZlcnkgYGNvcHlfYnl0ZSd0aCBieXRlIGluIE1FTUhVTksuICAqLwotCSAgY2hhciAqZnJvbSA9IG1lbWh1bmsgKyBjb3B5X2J5dGU7CisJICBjaGFyICpmcm9tID0gKGNoYXIgKikgbWVtaHVuayArIGNvcHlfYnl0ZTsKIAkgIGNoYXIgKnRvID0gbWVtaHVuazsKLQkgIGNoYXIgKmVuZCA9IG1lbWh1bmsgKyBzaXplOworCSAgY2hhciAqZW5kID0gKGNoYXIgKikgbWVtaHVuayArIHNpemU7CiAKIAkgIGZvciAoOyBmcm9tIDwgZW5kOyBmcm9tICs9IGludGVybGVhdmUpCiAJICAgICp0bysrID0gKmZyb207CmRpZmYgLS1naXQgYS9iaW51dGlscy9vYmpkdW1wLmMgYi9iaW51dGlscy9vYmpkdW1wLmMKaW5kZXggZjY3YWFjYi4uMWU5ZDk3MCAxMDA2NDQKLS0tIGEvYmludXRpbHMvb2JqZHVtcC5jCisrKyBiL2JpbnV0aWxzL29iamR1bXAuYwpAQCAtMTE0Miw4ICsxMTQyLDggQEAKIHR5cGVkZWYgc3RydWN0CiB7CiAgIGNoYXIgKmJ1ZmZlcjsKLSAgc2l6ZV90IHNpemU7Ci0gIGNoYXIgKmN1cnJlbnQ7CisgIHNpemVfdCBwb3M7CisgIHNpemVfdCBhbGxvYzsKIH0gU0ZJTEU7CiAKIC8qIHNwcmludGYgdG8gYSAic3RyZWFtIi4gICovCkBAIC0xMTUxLDM5ICsxMTUxLDI1IEBACiBzdGF0aWMgaW50CiBvYmpkdW1wX3NwcmludGYgKFNGSUxFICpmLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKLSAgY2hhciAqYnVmOwogICBzaXplX3QgbjsKICAgdmFfbGlzdCBhcmdzOwogCi0gIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotCi0gIHZhc3ByaW50ZiAoJmJ1ZiwgZm9ybWF0LCBhcmdzKTsKLQotICBpZiAoYnVmID09IE5VTEwpCisgIHdoaWxlICgxKQogICAgIHsKKyAgICAgIHNpemVfdCBzcGFjZSA9IGYtPmFsbG9jIC0gZi0+cG9zOworICAKKyAgICAgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOworICAgICAgbiA9IHZzbnByaW50ZiAoZi0+YnVmZmVyICsgZi0+cG9zLCBzcGFjZSwgZm9ybWF0LCBhcmdzKTsKICAgICAgIHZhX2VuZCAoYXJncyk7Ci0gICAgICBmYXRhbCAoXygiT3V0IG9mIHZpcnR1YWwgbWVtb3J5IikpOworCisgICAgICBpZiAoc3BhY2UgPiBuKQorCWJyZWFrOworICAgICAgCisgICAgICBmLT5hbGxvYyA9IChmLT5hbGxvYyArIG4pICogMjsKKyAgICAgIGYtPmJ1ZmZlciA9IHhyZWFsbG9jIChmLT5idWZmZXIsIGYtPmFsbG9jKTsKICAgICB9Ci0KLSAgbiA9IHN0cmxlbiAoYnVmKTsKLQotICB3aGlsZSAoKHNpemVfdCkgKChmLT5idWZmZXIgKyBmLT5zaXplKSAtIGYtPmN1cnJlbnQpIDwgbiArIDEpCi0gICAgewotICAgICAgc2l6ZV90IGN1cnJvZmY7Ci0KLSAgICAgIGN1cnJvZmYgPSBmLT5jdXJyZW50IC0gZi0+YnVmZmVyOwotICAgICAgZi0+c2l6ZSAqPSAyOwotICAgICAgZi0+YnVmZmVyID0geHJlYWxsb2MgKGYtPmJ1ZmZlciwgZi0+c2l6ZSk7Ci0gICAgICBmLT5jdXJyZW50ID0gZi0+YnVmZmVyICsgY3Vycm9mZjsKLSAgICB9Ci0KLSAgbWVtY3B5IChmLT5jdXJyZW50LCBidWYsIG4pOwotICBmLT5jdXJyZW50ICs9IG47Ci0gIGYtPmN1cnJlbnRbMF0gPSAnXDAnOwotCi0gIGZyZWUgKGJ1Zik7Ci0KLSAgdmFfZW5kIChhcmdzKTsKKyAgZi0+cG9zICs9IG47CisgIAogICByZXR1cm4gbjsKIH0KIApAQCAtMTI0MywxMCArMTIyOSwxNSBAQAogICBpbnQgc2tpcF9hZGRyX2NoYXJzOwogICBiZmRfdm1hIGFkZHJfb2Zmc2V0OwogICBpbnQgb3BiID0gaW5mby0+b2N0ZXRzX3Blcl9ieXRlOworICBTRklMRSBzZmlsZTsKIAogICBhdXggPSAoc3RydWN0IG9iamR1bXBfZGlzYXNtX2luZm8gKikgaW5mby0+YXBwbGljYXRpb25fZGF0YTsKICAgc2VjdGlvbiA9IGF1eC0+c2VjOwogCisgIHNmaWxlLmFsbG9jID0gMTIwOworICBzZmlsZS5idWZmZXIgPSB4bWFsbG9jIChzZmlsZS5hbGxvYyk7CisgIHNmaWxlLnBvcyA9IDA7CisgIAogICBpZiAoaW5zbnMpCiAgICAgb2N0ZXRzX3Blcl9saW5lID0gNDsKICAgZWxzZQpAQCAtMTMxMSw3ICsxMzAyLDYgQEAKICAgICAgIGVsc2UKIAl7CiAJICBjaGFyIGJ1Zls1MF07Ci0JICBTRklMRSBzZmlsZTsKIAkgIGludCBicGMgPSAwOwogCSAgaW50IHBiID0gMDsKIApAQCAtMTM0NCw5ICsxMzM0LDcgQEAKIAogCSAgaWYgKGluc25zKQogCSAgICB7Ci0JICAgICAgc2ZpbGUuc2l6ZSA9IDEyMDsKLQkgICAgICBzZmlsZS5idWZmZXIgPSB4bWFsbG9jIChzZmlsZS5zaXplKTsKLQkgICAgICBzZmlsZS5jdXJyZW50ID0gc2ZpbGUuYnVmZmVyOworCSAgICAgIHNmaWxlLnBvcyA9IDA7CiAJICAgICAgaW5mby0+ZnByaW50Zl9mdW5jID0gKGZwcmludGZfZnR5cGUpIG9iamR1bXBfc3ByaW50ZjsKIAkgICAgICBpbmZvLT5zdHJlYW0gPSAoRklMRSAqKSAmc2ZpbGU7CiAJICAgICAgaW5mby0+Ynl0ZXNfcGVyX2xpbmUgPSAwOwpAQCAtMTM3MSw5ICsxMzU5LDggQEAKIAkJb2N0ZXRzX3Blcl9saW5lID0gaW5mby0+Ynl0ZXNfcGVyX2xpbmU7CiAJICAgICAgaWYgKG9jdGV0cyA8IDApCiAJCXsKLQkJICBpZiAoc2ZpbGUuY3VycmVudCAhPSBzZmlsZS5idWZmZXIpCisJCSAgaWYgKHNmaWxlLnBvcykKIAkJICAgIHByaW50ZiAoIiVzXG4iLCBzZmlsZS5idWZmZXIpOwotCQkgIGZyZWUgKHNmaWxlLmJ1ZmZlcik7CiAJCSAgYnJlYWs7CiAJCX0KIAkgICAgfQpAQCAtMTQ0NywxMSArMTQzNCw4IEBACiAKIAkgIGlmICghIGluc25zKQogCSAgICBwcmludGYgKCIlcyIsIGJ1Zik7Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICBwcmludGYgKCIlcyIsIHNmaWxlLmJ1ZmZlcik7Ci0JICAgICAgZnJlZSAoc2ZpbGUuYnVmZmVyKTsKLQkgICAgfQorCSAgZWxzZSBpZiAoc2ZpbGUucG9zKQorCSAgICBwcmludGYgKCIlcyIsIHNmaWxlLmJ1ZmZlcik7CiAKIAkgIGlmIChwcmVmaXhfYWRkcmVzc2VzCiAJICAgICAgPyBzaG93X3Jhd19pbnNuID4gMApAQCAtMTU1OCw2ICsxNTQyLDggQEAKIAogICAgICAgYWRkcl9vZmZzZXQgKz0gb2N0ZXRzIC8gb3BiOwogICAgIH0KKworICBmcmVlIChzZmlsZS5idWZmZXIpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvYmludXRpbHMvcG8vYmludXRpbHMucG90IGIvYmludXRpbHMvcG8vYmludXRpbHMucG90CmluZGV4IDczYzYwYjMuLjY2Y2NmMWEgMTAwNjQ0Ci0tLSBhL2JpbnV0aWxzL3BvL2JpbnV0aWxzLnBvdAorKysgYi9iaW51dGlscy9wby9iaW51dGlscy5wb3QKQEAgLTcsNyArNyw4IEBACiBtc2dpZCAiIgogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBQQUNLQUdFIFZFUlNJT05cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwMy0wNy0xMSAxMzo1NiswOTMwXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA0LTAzLTE5IDE1OjAxKzEwMzBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiBZRUFSLU1PLURBIEhPOk1JK1pPTkVcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEZVTEwgTkFNRSA8RU1BSUxAQUREUkVTUz5cbiIKICJMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPlxuIgpAQCAtMTUsMjIgKzE2LDI1IEBACiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUNIQVJTRVRcbiIKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAKLSM6IGFkZHIybGluZS5jOjc0CisjOiBhZGRyMmxpbmUuYzo3MwogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2FnZTogJXMgW29wdGlvbihzKV0gW2FkZHIocyldXG4iCiBtc2dzdHIgIiIKIAotIzogYWRkcjJsaW5lLmM6NzUKKyM6IGFkZHIybGluZS5jOjc0CisjLCBjLWZvcm1hdAogbXNnaWQgIiBDb252ZXJ0IGFkZHJlc3NlcyBpbnRvIGxpbmUgbnVtYmVyL2ZpbGUgbmFtZSBwYWlycy5cbiIKIG1zZ3N0ciAiIgogCi0jOiBhZGRyMmxpbmUuYzo3NgorIzogYWRkcjJsaW5lLmM6NzUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiBJZiBubyBhZGRyZXNzZXMgYXJlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLCB0aGV5IHdpbGwgYmUgcmVhZCBmcm9tICIKICJzdGRpblxuIgogbXNnc3RyICIiCiAKLSM6IGFkZHIybGluZS5jOjc3CisjOiBhZGRyMmxpbmUuYzo3NgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiIFRoZSBvcHRpb25zIGFyZTpcbiIKICIgIC1iIC0tdGFyZ2V0PTxiZmRuYW1lPiAgU2V0IHRoZSBiaW5hcnkgZmlsZSBmb3JtYXRcbiIKQEAgLTQzLDM0NCArNDcsMzg3IEBACiAiXG4iCiBtc2dzdHIgIiIKIAotIzogYWRkcjJsaW5lLmM6ODkgYXIuYzoyOTcgY29mZmR1bXAuYzo0NzkgbmxtY29udi5jOjExMjEgb2JqY29weS5jOjQ4NAotIzogb2JqY29weS5jOjUxOCByZWFkZWxmLmM6MjY0OSBzaXplLmM6MTA0IHNyY29udi5jOjE5NjIgc3RyaW5ncy5jOjY3MwotIzogc3lzZHVtcC5jOjc3NCB3aW5kcmVzLmM6NzAyCisjOiBhZGRyMmxpbmUuYzo4OCBhci5jOjI2OCBjb2ZmZHVtcC5jOjQ2NyBubG1jb252LmM6MTEwOCBvYmpjb3B5LmM6NDY2CisjOiBvYmpjb3B5LmM6NTAwIHJlYWRlbGYuYzoyNDI2IHNpemUuYzoxMDIgc3Jjb252LmM6MTg2NiBzdHJpbmdzLmM6NjQ5CisjOiBzeXNkdW1wLmM6NzQ3IHdpbmRyZXMuYzo2NjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVwb3J0IGJ1Z3MgdG8gJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBhZGRyMmxpbmUuYzoyNDUKKyM6IGFkZHIybGluZS5jOjI0MQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2FuIG5vdCBnZXQgYWRkcmVzc2VzIGZyb20gYXJjaGl2ZSIKIG1zZ3N0ciAiIgogCi0jOiBhZGRyMmxpbmUuYzozMTcgbm0uYzo0MzMgb2JqZHVtcC5jOjI2OTMKKyM6IGFkZHIybGluZS5jOjMxMSBubS5jOjM5MyBvYmpkdW1wLmM6Mjc1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIGRlbWFuZ2xpbmcgc3R5bGUgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBhci5jOjIzOAorIzogYXIuYzoyMTAKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gZW50cnkgJXMgaW4gYXJjaGl2ZVxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6MjU1CisjOiBhci5jOjIyNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVXNhZ2U6ICVzIFtlbXVsYXRpb24gb3B0aW9uc10gWy1de2RtcHFyc3R4fVthYmNmaWxOb1BzU3V2Vl0gW21lbWJlci1uYW1lXSAiCiAiW2NvdW50XSBhcmNoaXZlLWZpbGUgZmlsZS4uLlxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6MjU4CisjOiBhci5jOjIyOQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAgICAgJXMgLU0gWzxtcmktc2NyaXB0XVxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6MjU5CisjOiBhci5jOjIzMAorIywgYy1mb3JtYXQKIG1zZ2lkICIgY29tbWFuZHM6XG4iCiBtc2dzdHIgIiIKIAotIzogYXIuYzoyNjAKKyM6IGFyLmM6MjMxCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgZCAgICAgICAgICAgIC0gZGVsZXRlIGZpbGUocykgZnJvbSB0aGUgYXJjaGl2ZVxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6MjYxCisjOiBhci5jOjIzMgorIywgYy1mb3JtYXQKIG1zZ2lkICIgIG1bYWJdICAgICAgICAtIG1vdmUgZmlsZShzKSBpbiB0aGUgYXJjaGl2ZVxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6MjYyCisjOiBhci5jOjIzMworIywgYy1mb3JtYXQKIG1zZ2lkICIgIHAgICAgICAgICAgICAtIHByaW50IGZpbGUocykgZm91bmQgaW4gdGhlIGFyY2hpdmVcbiIKIG1zZ3N0ciAiIgogCi0jOiBhci5jOjI2MworIzogYXIuYzoyMzQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBxW2ZdICAgICAgICAgLSBxdWljayBhcHBlbmQgZmlsZShzKSB0byB0aGUgYXJjaGl2ZVxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6MjY0CisjOiBhci5jOjIzNQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICByW2FiXVtmXVt1XSAgLSByZXBsYWNlIGV4aXN0aW5nIG9yIGluc2VydCBuZXcgZmlsZShzKSBpbnRvIHRoZSBhcmNoaXZlXG4iCiBtc2dzdHIgIiIKIAotIzogYXIuYzoyNjUKKyM6IGFyLmM6MjM2CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgdCAgICAgICAgICAgIC0gZGlzcGxheSBjb250ZW50cyBvZiBhcmNoaXZlXG4iCiBtc2dzdHIgIiIKIAotIzogYXIuYzoyNjYKKyM6IGFyLmM6MjM3CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgeFtvXSAgICAgICAgIC0gZXh0cmFjdCBmaWxlKHMpIGZyb20gdGhlIGFyY2hpdmVcbiIKIG1zZ3N0ciAiIgogCi0jOiBhci5jOjI2NworIzogYXIuYzoyMzgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIGNvbW1hbmQgc3BlY2lmaWMgbW9kaWZpZXJzOlxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6MjY4CisjOiBhci5jOjIzOQorIywgYy1mb3JtYXQKIG1zZ2lkICIgIFthXSAgICAgICAgICAtIHB1dCBmaWxlKHMpIGFmdGVyIFttZW1iZXItbmFtZV1cbiIKIG1zZ3N0ciAiIgogCi0jOiBhci5jOjI2OQorIzogYXIuYzoyNDAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBbYl0gICAgICAgICAgLSBwdXQgZmlsZShzKSBiZWZvcmUgW21lbWJlci1uYW1lXSAoc2FtZSBhcyBbaV0pXG4iCiBtc2dzdHIgIiIKIAotIzogYXIuYzoyNzAKKyM6IGFyLmM6MjQxCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgW05dICAgICAgICAgIC0gdXNlIGluc3RhbmNlIFtjb3VudF0gb2YgbmFtZVxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6MjcxCisjOiBhci5jOjI0MgorIywgYy1mb3JtYXQKIG1zZ2lkICIgIFtmXSAgICAgICAgICAtIHRydW5jYXRlIGluc2VydGVkIGZpbGUgbmFtZXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBhci5jOjI3MgorIzogYXIuYzoyNDMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBbUF0gICAgICAgICAgLSB1c2UgZnVsbCBwYXRoIG5hbWVzIHdoZW4gbWF0Y2hpbmdcbiIKIG1zZ3N0ciAiIgogCi0jOiBhci5jOjI3MworIzogYXIuYzoyNDQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBbb10gICAgICAgICAgLSBwcmVzZXJ2ZSBvcmlnaW5hbCBkYXRlc1xuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6Mjc0CisjOiBhci5jOjI0NQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICBbdV0gICAgICAgICAgLSBvbmx5IHJlcGxhY2UgZmlsZXMgdGhhdCBhcmUgbmV3ZXIgdGhhbiBjdXJyZW50IGFyY2hpdmUgIgogImNvbnRlbnRzXG4iCiBtc2dzdHIgIiIKIAotIzogYXIuYzoyNzUKKyM6IGFyLmM6MjQ2CisjLCBjLWZvcm1hdAogbXNnaWQgIiBnZW5lcmljIG1vZGlmaWVyczpcbiIKIG1zZ3N0ciAiIgogCi0jOiBhci5jOjI3NgorIzogYXIuYzoyNDcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBbY10gICAgICAgICAgLSBkbyBub3Qgd2FybiBpZiB0aGUgbGlicmFyeSBoYWQgdG8gYmUgY3JlYXRlZFxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6Mjc3CisjOiBhci5jOjI0OAorIywgYy1mb3JtYXQKIG1zZ2lkICIgIFtzXSAgICAgICAgICAtIGNyZWF0ZSBhbiBhcmNoaXZlIGluZGV4IChjZi4gcmFubGliKVxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6Mjc4CisjOiBhci5jOjI0OQorIywgYy1mb3JtYXQKIG1zZ2lkICIgIFtTXSAgICAgICAgICAtIGRvIG5vdCBidWlsZCBhIHN5bWJvbCB0YWJsZVxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6Mjc5CisjOiBhci5jOjI1MAorIywgYy1mb3JtYXQKIG1zZ2lkICIgIFt2XSAgICAgICAgICAtIGJlIHZlcmJvc2VcbiIKIG1zZ3N0ciAiIgogCi0jOiBhci5jOjI4MAorIzogYXIuYzoyNTEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBbVl0gICAgICAgICAgLSBkaXNwbGF5IHRoZSB2ZXJzaW9uIG51bWJlclxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6Mjg3CisjOiBhci5jOjI1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2FnZTogJXMgW29wdGlvbnNdIGFyY2hpdmVcbiIKIG1zZ3N0ciAiIgogCi0jOiBhci5jOjI4OAorIzogYXIuYzoyNTkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIEdlbmVyYXRlIGFuIGluZGV4IHRvIHNwZWVkIGFjY2VzcyB0byBhcmNoaXZlc1xuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6Mjg5CisjOiBhci5jOjI2MAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiIFRoZSBvcHRpb25zIGFyZTpcbiIKICIgIC1oIC0taGVscCAgICAgICAgICAgICAgICAgICAgUHJpbnQgdGhpcyBoZWxwIG1lc3NhZ2VcbiIKICIgIC1WIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgUHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvblxuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6NTEyCisjOiBhci5jOjQ4OAogbXNnaWQgInR3byBkaWZmZXJlbnQgb3BlcmF0aW9uIG9wdGlvbnMgc3BlY2lmaWVkIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6NTg3CisjOiBhci5jOjU2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbGxlZ2FsIG9wdGlvbiAtLSAlYyIKIG1zZ3N0ciAiIgogCi0jOiBhci5jOjYxOQorIzogYXIuYzo2MDUKIG1zZ2lkICJubyBvcGVyYXRpb24gc3BlY2lmaWVkIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6NjIyCisjOiBhci5jOjYwOAogbXNnaWQgImB1JyBpcyBvbmx5IG1lYW5pbmdmdWwgd2l0aCB0aGUgYHInIG9wdGlvbi4iCiBtc2dzdHIgIiIKIAotIzogYXIuYzo2MzIKKyM6IGFyLmM6NjE2CiBtc2dpZCAiYE4nIGlzIG9ubHkgbWVhbmluZ2Z1bCB3aXRoIHRoZSBgeCcgYW5kIGBkJyBvcHRpb25zLiIKIG1zZ3N0ciAiIgogCi0jOiBhci5jOjYzNQorIzogYXIuYzo2MTkKIG1zZ2lkICJWYWx1ZSBmb3IgYE4nIG11c3QgYmUgcG9zaXRpdmUuIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6NzE4CisjOiBhci5jOjcwMgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnRlcm5hbCBlcnJvciAtLSB0aGlzIG9wdGlvbiBub3QgaW1wbGVtZW50ZWQiCiBtc2dzdHIgIiIKIAotIzogYXIuYzo4MzcgYXIuYzo4ODggYXIuYzoxMzMzIG9iamNvcHkuYzoxNTc5Ci0jLCBjLWZvcm1hdAotbXNnaWQgImludGVybmFsIHN0YXQgZXJyb3Igb24gJXMiCi1tc2dzdHIgIiIKLQotIzogYXIuYzo4NDEKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiIgotIlxuIgotIjxtZW1iZXIgJXM+XG4iCi0iXG4iCi1tc2dzdHIgIiIKLQotIzogYXIuYzo4NTcgYXIuYzo5MjUKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiJXMgaXMgbm90IGEgdmFsaWQgYXJjaGl2ZSIKLW1zZ3N0ciAiIgotCi0jOiBhci5jOjg5MwotIywgYy1mb3JtYXQKLW1zZ2lkICJzdGF0IHJldHVybnMgbmVnYXRpdmUgc2l6ZSBmb3IgJXMiCi1tc2dzdHIgIiIKLQotIzogYXIuYzoxMDIwCi0jLCBjLWZvcm1hdAotbXNnaWQgIiVzIGlzIG5vdCBhbiBhcmNoaXZlIgotbXNnc3RyICIiCi0KLSM6IGFyLmM6MTAyNworIzogYXIuYzo3NzEgYXIuYzoxMDA3CiAjLCBjLWZvcm1hdAogbXNnaWQgImNyZWF0aW5nICVzIgogbXNnc3RyICIiCiAKLSM6IGFyLmM6MTIzMworIzogYXIuYzo4MjAgYXIuYzo4NzAgYXIuYzoxMzAyIG9iamNvcHkuYzoxNTg1CisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIHN0YXQgZXJyb3Igb24gJXMiCittc2dzdHIgIiIKKworIzogYXIuYzo4MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIjwlcz5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBhci5jOjg0MCBhci5jOjkwNworIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBub3QgYSB2YWxpZCBhcmNoaXZlIgorbXNnc3RyICIiCisKKyM6IGFyLmM6ODc1CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXQgcmV0dXJucyBuZWdhdGl2ZSBzaXplIGZvciAlcyIKK21zZ3N0ciAiIgorCisjOiBhci5jOjEwMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbm90IGFuIGFyY2hpdmUiCittc2dzdHIgIiIKKworIzogYXIuYzoxMjA3CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIG1lbWJlciBuYW1lZCBgJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogYXIuYzoxMjg1CisjOiBhci5jOjEyNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gZW50cnkgJXMgaW4gYXJjaGl2ZSAlcyEiCiBtc2dzdHIgIiIKIAotIzogYXIuYzoxNDIyCisjOiBhci5jOjEzOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IG5vIGFyY2hpdmUgbWFwIHRvIHVwZGF0ZSIKIG1zZ3N0ciAiIgogCi0jOiBhcnN1cC5jOjg2CisjOiBhcnN1cC5jOjgzCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIGVudHJ5ICVzIGluIGFyY2hpdmUuXG4iCiBtc2dzdHIgIiIKIAotIzogYXJzdXAuYzoxMTcKKyM6IGFyc3VwLmM6MTA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbid0IG9wZW4gZmlsZSAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGFyc3VwLmM6MTcyCisjOiBhcnN1cC5jOjE2MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogQ2FuJ3Qgb3BlbiBvdXRwdXQgYXJjaGl2ZSAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGFyc3VwLmM6MTg5CisjOiBhcnN1cC5jOjE3OQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogQ2FuJ3Qgb3BlbiBpbnB1dCBhcmNoaXZlICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYXJzdXAuYzoxOTgKKyM6IGFyc3VwLmM6MTg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBmaWxlICVzIGlzIG5vdCBhbiBhcmNoaXZlXG4iCiBtc2dzdHIgIiIKIAotIzogYXJzdXAuYzoyNDEKKyM6IGFyc3VwLmM6MjI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBubyBvdXRwdXQgYXJjaGl2ZSBzcGVjaWZpZWQgeWV0XG4iCiBtc2dzdHIgIiIKIAotIzogYXJzdXAuYzoyNjIgYXJzdXAuYzozMDEgYXJzdXAuYzozNDMgYXJzdXAuYzozNjQgYXJzdXAuYzo0MzAKKyM6IGFyc3VwLmM6MjQ3IGFyc3VwLmM6Mjg1IGFyc3VwLmM6MzI3IGFyc3VwLmM6MzQ3IGFyc3VwLmM6NDEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBubyBvcGVuIG91dHB1dCBhcmNoaXZlXG4iCiBtc2dzdHIgIiIKIAotIzogYXJzdXAuYzoyNzMgYXJzdXAuYzozODUgYXJzdXAuYzo0MTEKKyM6IGFyc3VwLmM6MjU4IGFyc3VwLmM6MzY4IGFyc3VwLmM6Mzk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW4ndCBvcGVuIGZpbGUgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBhcnN1cC5jOjMyOCBhcnN1cC5jOjQwNyBhcnN1cC5jOjQ4OQorIzogYXJzdXAuYzozMTIgYXJzdXAuYzozOTAgYXJzdXAuYzo0NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbid0IGZpbmQgbW9kdWxlIGZpbGUgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBhcnN1cC5jOjQzOQorIzogYXJzdXAuYzo0MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ3VycmVudCBvcGVuIGFyY2hpdmUgaXMgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBhcnN1cC5jOjQ2NAorIzogYXJzdXAuYzo0NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IG5vIG9wZW4gYXJjaGl2ZVxuIgogbXNnc3RyICIiCiAKLSM6IGJpbmVtdWwuYzozOQorIzogYmluZW11bC5jOjM3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgTm8gZW11bGF0aW9uIHNwZWNpZmljIG9wdGlvbnNcbiIKIG1zZ3N0ciAiIgogCiAjLiBNYWNyb3MgZm9yIGNvbW1vbiBvdXRwdXQuCi0jOiBiaW5lbXVsLmg6NTIKKyM6IGJpbmVtdWwuaDo0MgogIywgYy1mb3JtYXQKIG1zZ2lkICIgZW11bGF0aW9uIG9wdGlvbnM6IFxuIgogbXNnc3RyICIiCiAKLSM6IGJ1Y29tbS5jOjExMworIzogYnVjb21tLmM6MTA5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IHNldCBCRkQgZGVmYXVsdCB0YXJnZXQgdG8gYCVzJzogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVjb21tLmM6MTI1CisjOiBidWNvbW0uYzoxMjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IE1hdGNoaW5nIGZvcm1hdHM6IgogbXNnc3RyICIiCiAKLSM6IGJ1Y29tbS5jOjE0MgorIzogYnVjb21tLmM6MTM1CisjLCBjLWZvcm1hdAogbXNnaWQgIlN1cHBvcnRlZCB0YXJnZXRzOiIKIG1zZ3N0ciAiIgogCi0jOiBidWNvbW0uYzoxNDQKKyM6IGJ1Y29tbS5jOjEzNwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogc3VwcG9ydGVkIHRhcmdldHM6IgogbXNnc3RyICIiCiAKLSM6IGJ1Y29tbS5jOjE2MgorIzogYnVjb21tLmM6MTUzCisjLCBjLWZvcm1hdAogbXNnaWQgIlN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzOiIKIG1zZ3N0ciAiIgogCi0jOiBidWNvbW0uYzoxNjQKKyM6IGJ1Y29tbS5jOjE1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXM6IgogbXNnc3RyICIiCiAKLSM6IGJ1Y29tbS5jOjM2MAorIzogYnVjb21tLmM6MzQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJGRCBoZWFkZXIgZmlsZSB2ZXJzaW9uICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVjb21tLmM6NDY3CisjOiBidWNvbW0uYzo0NDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGJhZCBudW1iZXI6ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvZmZkdW1wLmM6MTA3CisjOiBidWNvbW0uYzo0NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJzogTm8gc3VjaCBmaWxlIgorbXNnc3RyICIiCisKKyM6IGJ1Y29tbS5jOjQ2OAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgbG9jYXRlICclcycuICByZWFzb246ICVzIgorbXNnc3RyICIiCisKKyM6IGJ1Y29tbS5jOjQ3MgorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiAnJXMnIGlzIG5vdCBhbiBvcmRpbmFyeSBmaWxlIgorbXNnc3RyICIiCisKKyM6IGNvZmZkdW1wLmM6MTA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiNsaW5lcyAlZCAiCiBtc2dzdHIgIiIKIAotIzogY29mZmR1bXAuYzo0NzEgc3lzZHVtcC5jOjc2NworIzogY29mZmR1bXAuYzo0NTkgc3lzZHVtcC5jOjc0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2FnZTogJXMgW29wdGlvbihzKV0gaW4tZmlsZVxuIgogbXNnc3RyICIiCiAKLSM6IGNvZmZkdW1wLmM6NDcyCisjOiBjb2ZmZHVtcC5jOjQ2MAorIywgYy1mb3JtYXQKIG1zZ2lkICIgUHJpbnQgYSBodW1hbiByZWFkYWJsZSBpbnRlcnByZXRhdGlvbiBvZiBhIFNZU1JPRkYgb2JqZWN0IGZpbGVcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmZHVtcC5jOjQ3MworIzogY29mZmR1bXAuYzo0NjEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiBUaGUgb3B0aW9ucyBhcmU6XG4iCiAiICAtaCAtLWhlbHAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBpbmZvcm1hdGlvblxuIgpAQCAtMzg4LDk5NiArNDM1LDEwNjkgQEAKICJcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb2ZmZHVtcC5jOjU0MSBzcmNvbnYuYzoyMDUyIHN5c2R1bXAuYzo4MzEKKyM6IGNvZmZkdW1wLmM6NTI3IHNyY29udi5jOjE5NTQgc3lzZHVtcC5jOjgwMgogbXNnaWQgIm5vIGlucHV0IGZpbGUgc3BlY2lmaWVkIgogbXNnc3RyICIiCiAKLSM6IGRlYnVnLmM6NjU0CisjOiBkZWJ1Zy5jOjY0NwogbXNnaWQgImRlYnVnX2FkZF90b19jdXJyZW50X25hbWVzcGFjZTogbm8gY3VycmVudCBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGRlYnVnLmM6NzM3CisjOiBkZWJ1Zy5jOjcyNgogbXNnaWQgImRlYnVnX3N0YXJ0X3NvdXJjZTogbm8gZGVidWdfc2V0X2ZpbGVuYW1lIGNhbGwiCiBtc2dzdHIgIiIKIAotIzogZGVidWcuYzo3OTYKKyM6IGRlYnVnLmM6NzgyCiBtc2dpZCAiZGVidWdfcmVjb3JkX2Z1bmN0aW9uOiBubyBkZWJ1Z19zZXRfZmlsZW5hbWUgY2FsbCIKIG1zZ3N0ciAiIgogCi0jOiBkZWJ1Zy5jOjg1MgorIzogZGVidWcuYzo4MzQKIG1zZ2lkICJkZWJ1Z19yZWNvcmRfcGFyYW1ldGVyOiBubyBjdXJyZW50IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGRlYnVnLmM6ODg2CisjOiBkZWJ1Zy5jOjg2NgogbXNnaWQgImRlYnVnX2VuZF9mdW5jdGlvbjogbm8gY3VycmVudCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBkZWJ1Zy5jOjg5MgorIzogZGVidWcuYzo4NzIKIG1zZ2lkICJkZWJ1Z19lbmRfZnVuY3Rpb246IHNvbWUgYmxvY2tzIHdlcmUgbm90IGNsb3NlZCIKIG1zZ3N0ciAiIgogCi0jOiBkZWJ1Zy5jOjkyMgorIzogZGVidWcuYzo5MDAKIG1zZ2lkICJkZWJ1Z19zdGFydF9ibG9jazogbm8gY3VycmVudCBibG9jayIKIG1zZ3N0ciAiIgogCi0jOiBkZWJ1Zy5jOjk2MAorIzogZGVidWcuYzo5MzYKIG1zZ2lkICJkZWJ1Z19lbmRfYmxvY2s6IG5vIGN1cnJlbnQgYmxvY2siCiBtc2dzdHIgIiIKIAotIzogZGVidWcuYzo5NjcKKyM6IGRlYnVnLmM6OTQzCiBtc2dpZCAiZGVidWdfZW5kX2Jsb2NrOiBhdHRlbXB0IHRvIGNsb3NlIHRvcCBsZXZlbCBibG9jayIKIG1zZ3N0ciAiIgogCi0jOiBkZWJ1Zy5jOjk5MworIzogZGVidWcuYzo5NjYKIG1zZ2lkICJkZWJ1Z19yZWNvcmRfbGluZTogbm8gY3VycmVudCB1bml0IgogbXNnc3RyICIiCiAKICMuIEZJWE1FCi0jOiBkZWJ1Zy5jOjEwNDcKKyM6IGRlYnVnLmM6MTAxOQogbXNnaWQgImRlYnVnX3N0YXJ0X2NvbW1vbl9ibG9jazogbm90IGltcGxlbWVudGVkIgogbXNnc3RyICIiCiAKICMuIEZJWE1FCi0jOiBkZWJ1Zy5jOjEwNTkKKyM6IGRlYnVnLmM6MTAzMAogbXNnaWQgImRlYnVnX2VuZF9jb21tb25fYmxvY2s6IG5vdCBpbXBsZW1lbnRlZCIKIG1zZ3N0ciAiIgogCiAjLiBGSVhNRS4KLSM6IGRlYnVnLmM6MTE1MworIzogZGVidWcuYzoxMTE0CiBtc2dpZCAiZGVidWdfcmVjb3JkX2xhYmVsOiBub3QgaW1wbGVtZW50ZWQiCiBtc2dzdHIgIiIKIAotIzogZGVidWcuYzoxMTc5CisjOiBkZWJ1Zy5jOjExMzYKIG1zZ2lkICJkZWJ1Z19yZWNvcmRfdmFyaWFibGU6IG5vIGN1cnJlbnQgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBkZWJ1Zy5jOjE3NjIKKyM6IGRlYnVnLmM6MTY2NAogbXNnaWQgImRlYnVnX21ha2VfdW5kZWZpbmVkX3R5cGU6IHVuc3VwcG9ydGVkIGtpbmQiCiBtc2dzdHIgIiIKIAotIzogZGVidWcuYzoxOTYzCisjOiBkZWJ1Zy5jOjE4NDEKIG1zZ2lkICJkZWJ1Z19uYW1lX3R5cGU6IG5vIGN1cnJlbnQgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBkZWJ1Zy5jOjIwMTEKKyM6IGRlYnVnLmM6MTg4NgogbXNnaWQgImRlYnVnX3RhZ190eXBlOiBubyBjdXJyZW50IGZpbGUiCiBtc2dzdHIgIiIKIAotIzogZGVidWcuYzoyMDE5CisjOiBkZWJ1Zy5jOjE4OTQKIG1zZ2lkICJkZWJ1Z190YWdfdHlwZTogZXh0cmEgdGFnIGF0dGVtcHRlZCIKIG1zZ3N0ciAiIgogCi0jOiBkZWJ1Zy5jOjIwNTgKKyM6IGRlYnVnLmM6MTkzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nOiBjaGFuZ2luZyB0eXBlIHNpemUgZnJvbSAlZCB0byAlZFxuIgogbXNnc3RyICIiCiAKLSM6IGRlYnVnLmM6MjA4MgorIzogZGVidWcuYzoxOTUzCiBtc2dpZCAiZGVidWdfZmluZF9uYW1lZF90eXBlOiBubyBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQiCiBtc2dzdHIgIiIKIAotIzogZGVidWcuYzoyMTg5CisjOiBkZWJ1Zy5jOjIwNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiZGVidWdfZ2V0X3JlYWxfdHlwZTogY2lyY3VsYXIgZGVidWcgaW5mb3JtYXRpb24gZm9yICVzXG4iCiBtc2dzdHIgIiIKIAotIzogZGVidWcuYzoyNjUwCisjOiBkZWJ1Zy5jOjI0ODMKIG1zZ2lkICJkZWJ1Z193cml0ZV90eXBlOiBpbGxlZ2FsIHR5cGUgZW5jb3VudGVyZWQiCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjgxMiBkbGx0b29sLmM6ODM3IGRsbHRvb2wuYzo4NjMKKyM6IGRsbHRvb2wuYzo3NjcgZGxsdG9vbC5jOjc5MSBkbGx0b29sLmM6ODE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludGVybmFsIGVycm9yOiBVbmtub3duIG1hY2hpbmUgdHlwZTogJWQiCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjkwMAorIzogZGxsdG9vbC5jOjg1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW4ndCBvcGVuIGRlZiBmaWxlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6OTA1CisjOiBkbGx0b29sLmM6ODU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlByb2Nlc3NpbmcgZGVmIGZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzo5MDkKKyM6IGRsbHRvb2wuYzo4NjEKIG1zZ2lkICJQcm9jZXNzZWQgZGVmIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjkzNQorIzogZGxsdG9vbC5jOjg4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJTeW50YXggZXJyb3IgaW4gZGVmIGZpbGUgJXM6JWQiCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjk3NAorIzogZGxsdG9vbC5jOjkxOQogIywgYy1mb3JtYXQKIG1zZ2lkICJOQU1FOiAlcyBiYXNlOiAleCIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6OTc3IGRsbHRvb2wuYzo5OTYKKyM6IGRsbHRvb2wuYzo5MjIgZGxsdG9vbC5jOjkzOQogbXNnaWQgIkNhbid0IGhhdmUgTElCUkFSWSBhbmQgTkFNRSIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6OTkzCisjOiBkbGx0b29sLmM6OTM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkxJQlJBUlk6ICVzIGJhc2U6ICV4IgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzoxMjUxIHJlc3JjLmM6MjcxCisjOiBkbGx0b29sLmM6MTE3MyByZXNyYy5jOjI2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ3YWl0OiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MTI1NiBkbGx3cmFwLmM6NDMwIHJlc3JjLmM6Mjc2CisjOiBkbGx0b29sLmM6MTE3OCBkbGx3cmFwLmM6NDIxIHJlc3JjLmM6MjczCiAjLCBjLWZvcm1hdAogbXNnaWQgInN1YnByb2Nlc3MgZ290IGZhdGFsIHNpZ25hbCAlZCIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MTI2MiBkbGx3cmFwLmM6NDM3IHJlc3JjLmM6MjgzCisjOiBkbGx0b29sLmM6MTE4NCBkbGx3cmFwLmM6NDI4IHJlc3JjLmM6MjgwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGV4aXRlZCB3aXRoIHN0YXR1cyAlZCIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MTI5NAorIzogZGxsdG9vbC5jOjEyMTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3Vja2luZyBpbiBpbmZvIGZyb20gJXMgc2VjdGlvbiBpbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MTQyMworIzogZGxsdG9vbC5jOjEzNDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXhjbHVkaW5nIHN5bWJvbDogJXMiCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjE1MTggZGxsdG9vbC5jOjE1Mjkgbm0uYzoxMDA0IG5tLmM6MTAxNQorIzogZGxsdG9vbC5jOjE0MjkgZGxsdG9vbC5jOjE0NDAgbm0uYzo5NDYgbm0uYzo5NTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IG5vIHN5bWJvbHMiCiBtc2dzdHIgIiIKIAogIy4gRklYTUU6IHdlIG91Z2h0IHRvIHJlYWQgaW4gYW5kIGJsb2NrIG91dCB0aGUgYmFzZSByZWxvY2F0aW9ucy4KLSM6IGRsbHRvb2wuYzoxNTU2CisjOiBkbGx0b29sLmM6MTQ2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJEb25lIHJlYWRpbmcgJXMiCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjE1NjcKKyM6IGRsbHRvb2wuYzoxNDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBvcGVuIG9iamVjdCBmaWxlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MTU3MAorIzogZGxsdG9vbC5jOjE0NzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiU2Nhbm5pbmcgb2JqZWN0IGZpbGUgJXMiCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjE1ODUKKyM6IGRsbHRvb2wuYzoxNDk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBwcm9kdWNlIG1jb3JlLWVsZiBkbGwgZnJvbSBhcmNoaXZlIGZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzoxNjc3CisjOiBkbGx0b29sLmM6MTU4MAogbXNnaWQgIkFkZGluZyBleHBvcnRzIHRvIG91dHB1dCBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzoxNzI0CisjOiBkbGx0b29sLmM6MTYyOAogbXNnaWQgIkFkZGVkIGV4cG9ydHMgdG8gb3V0cHV0IGZpbGUiCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjE4NDgKKyM6IGRsbHRvb2wuYzoxNzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkdlbmVyYXRpbmcgZXhwb3J0IGZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzoxODUzCisjOiBkbGx0b29sLmM6MTc1NAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gb3BlbiB0ZW1wb3JhcnkgYXNzZW1ibGVyIGZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzoxODU2CisjOiBkbGx0b29sLmM6MTc1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJPcGVuZWQgdGVtcG9yYXJ5IGZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzoyMDg2CisjOiBkbGx0b29sLmM6MTk4NwogbXNnaWQgIkdlbmVyYXRlZCBleHBvcnRzIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjIzNzgKKyM6IGRsbHRvb2wuYzoyMjcwCiAjLCBjLWZvcm1hdAogbXNnaWQgImJmZF9vcGVuIGZhaWxlZCBvcGVuIHN0dWIgZmlsZTogJXMiCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjIzODEKKyM6IGRsbHRvb2wuYzoyMjczCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNyZWF0aW5nIHN0dWIgZmlsZTogJXMiCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjI3NjYKKyM6IGRsbHRvb2wuYzoyNjU4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBvcGVuIHRlbXBvcmFyeSBoZWFkIGZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzoyODI1CisjOiBkbGx0b29sLmM6MjcxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gb3BlbiB0ZW1wb3JhcnkgdGFpbCBmaWxlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6Mjg5MgorIzogZGxsdG9vbC5jOjI3ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2FuJ3Qgb3BlbiAubGliIGZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzoyODk1CisjOiBkbGx0b29sLmM6Mjc4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJDcmVhdGluZyBsaWJyYXJ5IGZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzoyOTUxCisjOiBkbGx0b29sLmM6Mjg1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgZGVsZXRlICVzOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6Mjk1NQorIzogZGxsdG9vbC5jOjI4NTQKIG1zZ2lkICJDcmVhdGVkIGxpYiBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMDYyCisjOiBkbGx0b29sLmM6Mjk0NwogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nLCBpZ25vcmluZyBkdXBsaWNhdGUgRVhQT1JUICVzICVkLCVkIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMDY4CisjOiBkbGx0b29sLmM6Mjk1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciwgZHVwbGljYXRlIEVYUE9SVCB3aXRoIG9yaWRpbmFsczogJXMiCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjMxOTEKKyM6IGRsbHRvb2wuYzozMDY5CiBtc2dpZCAiUHJvY2Vzc2luZyBkZWZpbml0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MzIyMworIzogZGxsdG9vbC5jOjMxMDEKIG1zZ2lkICJQcm9jZXNzZWQgZGVmaW5pdGlvbnMiCiBtc2dzdHIgIiIKIAogIy4geGdldGV4dDpjLWZvcm1hdAotIzogZGxsdG9vbC5jOjMyMzQgZGxsd3JhcC5jOjQ5NQorIzogZGxsdG9vbC5jOjMxMDggZGxsd3JhcC5jOjQ4MgogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2FnZSAlcyA8b3B0aW9uKHMpPiA8b2JqZWN0LWZpbGUocyk+XG4iCiBtc2dzdHIgIiIKIAogIy4geGdldGV4dDpjLWZvcm1hdAotIzogZGxsdG9vbC5jOjMyMzYKKyM6IGRsbHRvb2wuYzozMTEwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgICAtbSAtLW1hY2hpbmUgPG1hY2hpbmU+ICAgIENyZWF0ZSBhcyBETEwgZm9yIDxtYWNoaW5lPi4gIFtkZWZhdWx0OiAlc11cbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MzIzNworIzogZGxsdG9vbC5jOjMxMTEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgICAgICAgcG9zc2libGUgPG1hY2hpbmU+OiBhcm1bX2ludGVyd29ya10sIGkzODYsIG1jb3JlWy1lbGZdey1sZXwtYmV9LCAiCiAicHBjLCB0aHVtYlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjM4CisjOiBkbGx0b29sLmM6MzExMgorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtZSAtLW91dHB1dC1leHAgPG91dG5hbWU+IEdlbmVyYXRlIGFuIGV4cG9ydCBmaWxlLlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjM5CisjOiBkbGx0b29sLmM6MzExMworIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtbCAtLW91dHB1dC1saWIgPG91dG5hbWU+IEdlbmVyYXRlIGFuIGludGVyZmFjZSBsaWJyYXJ5LlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjQwCisjOiBkbGx0b29sLmM6MzExNAorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtYSAtLWFkZC1pbmRpcmVjdCAgICAgICAgIEFkZCBkbGwgaW5kaXJlY3RzIHRvIGV4cG9ydCBmaWxlLlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjQxCisjOiBkbGx0b29sLmM6MzExNQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAgLUQgLS1kbGxuYW1lIDxuYW1lPiAgICAgICBOYW1lIG9mIGlucHV0IGRsbCB0byBwdXQgaW50byBpbnRlcmZhY2UgbGliLlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjQyCisjOiBkbGx0b29sLmM6MzExNgorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtZCAtLWlucHV0LWRlZiA8ZGVmZmlsZT4gIE5hbWUgb2YgLmRlZiBmaWxlIHRvIGJlIHJlYWQgaW4uXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjMyNDMKKyM6IGRsbHRvb2wuYzozMTE3CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC16IC0tb3V0cHV0LWRlZiA8ZGVmZmlsZT4gTmFtZSBvZiAuZGVmIGZpbGUgdG8gYmUgY3JlYXRlZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MzI0NAorIzogZGxsdG9vbC5jOjMxMTgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgICAgLS1leHBvcnQtYWxsLXN5bWJvbHMgICBFeHBvcnQgYWxsIHN5bWJvbHMgdG8gLmRlZlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjQ1CisjOiBkbGx0b29sLmM6MzExOQorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAgICAtLW5vLWV4cG9ydC1hbGwtc3ltYm9scyAgT25seSBleHBvcnQgbGlzdGVkIHN5bWJvbHNcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MzI0NgorIzogZGxsdG9vbC5jOjMxMjAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgICAgLS1leGNsdWRlLXN5bWJvbHMgPGxpc3Q+IERvbid0IGV4cG9ydCA8bGlzdD5cbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MzI0NworIzogZGxsdG9vbC5jOjMxMjEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgICAgLS1uby1kZWZhdWx0LWV4Y2x1ZGVzICBDbGVhciBkZWZhdWx0IGV4Y2x1ZGUgc3ltYm9sc1xuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjQ4CisjOiBkbGx0b29sLmM6MzEyMgorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtYiAtLWJhc2UtZmlsZSA8YmFzZWZpbGU+IFJlYWQgbGlua2VyIGdlbmVyYXRlZCBiYXNlIGZpbGUuXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjMyNDkKKyM6IGRsbHRvb2wuYzozMTIzCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC14IC0tbm8taWRhdGE0ICAgICAgICAgICAgRG9uJ3QgZ2VuZXJhdGUgaWRhdGEkNCBzZWN0aW9uLlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjUwCisjOiBkbGx0b29sLmM6MzEyNAorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtYyAtLW5vLWlkYXRhNSAgICAgICAgICAgIERvbid0IGdlbmVyYXRlIGlkYXRhJDUgc2VjdGlvbi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MzI1MQorIzogZGxsdG9vbC5jOjMxMjUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgIC1VIC0tYWRkLXVuZGVyc2NvcmUgICAgICAgQWRkIHVuZGVyc2NvcmVzIHRvIHN5bWJvbHMgaW4gaW50ZXJmYWNlICIKICJsaWJyYXJ5LlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjUyCisjOiBkbGx0b29sLmM6MzEyNgorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtayAtLWtpbGwtYXQgICAgICAgICAgICAgIEtpbGwgQDxuPiBmcm9tIGV4cG9ydGVkIG5hbWVzLlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjUzCisjOiBkbGx0b29sLmM6MzEyNworIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtQSAtLWFkZC1zdGRjYWxsLWFsaWFzICAgIEFkZCBhbGlhc2VzIHdpdGhvdXQgQDxuPi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MzI1NAorIzogZGxsdG9vbC5jOjMxMjgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgLVMgLS1hcyA8bmFtZT4gICAgICAgICAgICBVc2UgPG5hbWU+IGZvciBhc3NlbWJsZXIuXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjMyNTUKKyM6IGRsbHRvb2wuYzozMTI5CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC1mIC0tYXMtZmxhZ3MgPGZsYWdzPiAgICAgUGFzcyA8ZmxhZ3M+IHRvIHRoZSBhc3NlbWJsZXIuXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjMyNTYKKyM6IGRsbHRvb2wuYzozMTMwCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgICAtQyAtLWNvbXBhdC1pbXBsaWIgICAgICAgIENyZWF0ZSBiYWNrd2FyZCBjb21wYXRpYmxlIGltcG9ydCBsaWJyYXJ5LlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjU3CisjOiBkbGx0b29sLmM6MzEzMQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAgLW4gLS1uby1kZWxldGUgICAgICAgICAgICBLZWVwIHRlbXAgZmlsZXMgKHJlcGVhdCBmb3IgZXh0cmEgIgogInByZXNlcnZhdGlvbikuXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjMyNTgKKyM6IGRsbHRvb2wuYzozMTMyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIgICAtdCAtLXRlbXAtcHJlZml4IDxwcmVmaXg+IFVzZSA8cHJlZml4PiB0byBjb25zdHJ1Y3QgdGVtcCBmaWxlIG5hbWVzLlxuIgorbXNnc3RyICIiCisKKyM6IGRsbHRvb2wuYzozMTMzCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC12IC0tdmVyYm9zZSAgICAgICAgICAgICAgQmUgdmVyYm9zZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MzI1OQorIzogZGxsdG9vbC5jOjMxMzQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgLVYgLS12ZXJzaW9uICAgICAgICAgICAgICBEaXNwbGF5IHRoZSBwcm9ncmFtIHZlcnNpb24uXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjMyNjAKKyM6IGRsbHRvb2wuYzozMTM1CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC1oIC0taGVscCAgICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGluZm9ybWF0aW9uLlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjYyCisjOiBkbGx0b29sLmM6MzEzNworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAgLU0gLS1tY29yZS1lbGYgPG91dG5hbWU+ICBQcm9jZXNzIG1jb3JlLWVsZiBvYmplY3QgZmlsZXMgaW50byA8b3V0bmFtZT4uXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsdG9vbC5jOjMyNjMKKyM6IGRsbHRvb2wuYzozMTM4CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC1MIC0tbGlua2VyIDxuYW1lPiAgICAgICAgVXNlIDxuYW1lPiBhcyB0aGUgbGlua2VyLlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozMjY0CisjOiBkbGx0b29sLmM6MzEzOQorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtRiAtLWxpbmtlci1mbGFncyA8ZmxhZ3M+IFBhc3MgPGZsYWdzPiB0byB0aGUgbGlua2VyLlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozNDE4CisjOiBkbGx0b29sLmM6MzI5MQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gb3BlbiBiYXNlLWZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozNDUwCisjOiBkbGx0b29sLmM6MzMyMwogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWNoaW5lICclcycgbm90IHN1cHBvcnRlZCIKIG1zZ3N0ciAiIgogCi0jOiBkbGx0b29sLmM6MzU1MyBkbGx3cmFwLmM6MjE0CisjOiBkbGx0b29sLmM6MzQyMyBkbGx3cmFwLmM6MjA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRyaWVkIGZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGRsbHRvb2wuYzozNTYwIGRsbHdyYXAuYzoyMjEKKyM6IGRsbHRvb2wuYzozNDMwIGRsbHdyYXAuYzoyMTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgZmlsZTogJXMiCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjMwOAorIzogZGxsd3JhcC5jOjMwMgogIywgYy1mb3JtYXQKIG1zZ2lkICJLZWVwaW5nIHRlbXBvcmFyeSBiYXNlIGZpbGUgJXMiCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjMxMAorIzogZGxsd3JhcC5jOjMwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJEZWxldGluZyB0ZW1wb3JhcnkgYmFzZSBmaWxlICVzIgogbXNnc3RyICIiCiAKLSM6IGRsbHdyYXAuYzozMjQKKyM6IGRsbHdyYXAuYzozMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiS2VlcGluZyB0ZW1wb3JhcnkgZXhwIGZpbGUgJXMiCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjMyNgorIzogZGxsd3JhcC5jOjMyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJEZWxldGluZyB0ZW1wb3JhcnkgZXhwIGZpbGUgJXMiCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjMzOQorIzogZGxsd3JhcC5jOjMzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJLZWVwaW5nIHRlbXBvcmFyeSBkZWYgZmlsZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6MzQxCisjOiBkbGx3cmFwLmM6MzM1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRlbGV0aW5nIHRlbXBvcmFyeSBkZWYgZmlsZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NDk2CisjOiBkbGx3cmFwLmM6NDgzCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgR2VuZXJpYyBvcHRpb25zOlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHdyYXAuYzo0OTcKKyM6IGRsbHdyYXAuYzo0ODQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgLS1xdWlldCwgLXEgICAgICAgICAgICBXb3JrIHF1aWV0bHlcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NDk4CisjOiBkbGx3cmFwLmM6NDg1CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0tdmVyYm9zZSwgLXYgICAgICAgICAgVmVyYm9zZVxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHdyYXAuYzo0OTkKKyM6IGRsbHdyYXAuYzo0ODYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgLS12ZXJzaW9uICAgICAgICAgICAgICBQcmludCBkbGx3cmFwIHZlcnNpb25cbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTAwCisjOiBkbGx3cmFwLmM6NDg3CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0taW1wbGliIDxvdXRuYW1lPiAgICAgU3lub255bSBmb3IgLS1vdXRwdXQtbGliXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjUwMQorIzogZGxsd3JhcC5jOjQ4OAogIywgYy1mb3JtYXQKIG1zZ2lkICIgIE9wdGlvbnMgZm9yICVzOlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHdyYXAuYzo1MDIKKyM6IGRsbHdyYXAuYzo0ODkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgLS1kcml2ZXItbmFtZSA8ZHJpdmVyPiBEZWZhdWx0cyB0byBcImdjY1wiXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjUwMworIzogZGxsd3JhcC5jOjQ5MAorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtLWRyaXZlci1mbGFncyA8ZmxhZ3M+IE92ZXJyaWRlIGRlZmF1bHQgbGQgZmxhZ3NcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTA0CisjOiBkbGx3cmFwLmM6NDkxCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0tZGxsdG9vbC1uYW1lIDxkbGx0b29sPiBEZWZhdWx0cyB0byBcImRsbHRvb2xcIlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHdyYXAuYzo1MDUKKyM6IGRsbHdyYXAuYzo0OTIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgLS1lbnRyeSA8ZW50cnk+ICAgICAgICBTcGVjaWZ5IGFsdGVybmF0ZSBETEwgZW50cnkgcG9pbnRcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTA2CisjOiBkbGx3cmFwLmM6NDkzCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0taW1hZ2UtYmFzZSA8YmFzZT4gICAgU3BlY2lmeSBpbWFnZSBiYXNlIGFkZHJlc3NcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTA3CisjOiBkbGx3cmFwLmM6NDk0CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0tdGFyZ2V0IDxtYWNoaW5lPiAgICAgaTM4Ni1jeWd3aW4zMiBvciBpMzg2LW1pbmd3MzJcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTA4CisjOiBkbGx3cmFwLmM6NDk1CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0tZHJ5LXJ1biAgICAgICAgICAgICAgU2hvdyB3aGF0IG5lZWRzIHRvIGJlIHJ1blxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHdyYXAuYzo1MDkKKyM6IGRsbHdyYXAuYzo0OTYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgLS1tbm8tY3lnd2luICAgICAgICAgICBDcmVhdGUgTWluZ3cgRExMXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjUxMAorIzogZGxsd3JhcC5jOjQ5NworIywgYy1mb3JtYXQKIG1zZ2lkICIgIE9wdGlvbnMgcGFzc2VkIHRvIERMTFRPT0w6XG4iCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjUxMQorIzogZGxsd3JhcC5jOjQ5OAorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtLW1hY2hpbmUgPG1hY2hpbmU+XG4iCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjUxMgorIzogZGxsd3JhcC5jOjQ5OQorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtLW91dHB1dC1leHAgPG91dG5hbWU+IEdlbmVyYXRlIGV4cG9ydCBmaWxlLlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHdyYXAuYzo1MTMKKyM6IGRsbHdyYXAuYzo1MDAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgLS1vdXRwdXQtbGliIDxvdXRuYW1lPiBHZW5lcmF0ZSBpbnB1dCBsaWJyYXJ5LlxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHdyYXAuYzo1MTQKKyM6IGRsbHdyYXAuYzo1MDEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgLS1hZGQtaW5kaXJlY3QgICAgICAgICBBZGQgZGxsIGluZGlyZWN0cyB0byBleHBvcnQgZmlsZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTE1CisjOiBkbGx3cmFwLmM6NTAyCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0tZGxsbmFtZSA8bmFtZT4gICAgICAgTmFtZSBvZiBpbnB1dCBkbGwgdG8gcHV0IGludG8gb3V0cHV0IGxpYi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTE2CisjOiBkbGx3cmFwLmM6NTAzCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0tZGVmIDxkZWZmaWxlPiAgICAgICAgTmFtZSBpbnB1dCAuZGVmIGZpbGVcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTE3CisjOiBkbGx3cmFwLmM6NTA0CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0tb3V0cHV0LWRlZiA8ZGVmZmlsZT4gTmFtZSBvdXRwdXQgLmRlZiBmaWxlXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjUxOAorIzogZGxsd3JhcC5jOjUwNQorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtLWV4cG9ydC1hbGwtc3ltYm9scyAgICAgRXhwb3J0IGFsbCBzeW1ib2xzIHRvIC5kZWZcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTE5CisjOiBkbGx3cmFwLmM6NTA2CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0tbm8tZXhwb3J0LWFsbC1zeW1ib2xzICBPbmx5IGV4cG9ydCAuZHJlY3R2ZSBzeW1ib2xzXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjUyMAorIzogZGxsd3JhcC5jOjUwNworIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtLWV4Y2x1ZGUtc3ltYm9scyA8bGlzdD4gRXhjbHVkZSA8bGlzdD4gZnJvbSAuZGVmXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjUyMQorIzogZGxsd3JhcC5jOjUwOAorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtLW5vLWRlZmF1bHQtZXhjbHVkZXMgICAgWmFwIGRlZmF1bHQgZXhjbHVkZSBzeW1ib2xzXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjUyMgorIzogZGxsd3JhcC5jOjUwOQorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtLWJhc2UtZmlsZSA8YmFzZWZpbGU+IFJlYWQgbGlua2VyIGdlbmVyYXRlZCBiYXNlIGZpbGVcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTIzCisjOiBkbGx3cmFwLmM6NTEwCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0tbm8taWRhdGE0ICAgICAgICAgICBEb24ndCBnZW5lcmF0ZSBpZGF0YSQ0IHNlY3Rpb25cbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTI0CisjOiBkbGx3cmFwLmM6NTExCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0tbm8taWRhdGE1ICAgICAgICAgICBEb24ndCBnZW5lcmF0ZSBpZGF0YSQ1IHNlY3Rpb25cbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTI1CisjOiBkbGx3cmFwLmM6NTEyCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC1VICAgICAgICAgICAgICAgICAgICAgQWRkIHVuZGVyc2NvcmVzIHRvIC5saWJcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTI2CisjOiBkbGx3cmFwLmM6NTEzCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC1rICAgICAgICAgICAgICAgICAgICAgS2lsbCBAPG4+IGZyb20gZXhwb3J0ZWQgbmFtZXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6NTI3CisjOiBkbGx3cmFwLmM6NTE0CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIC0tYWRkLXN0ZGNhbGwtYWxpYXMgICAgQWRkIGFsaWFzZXMgd2l0aG91dCBAPG4+XG4iCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjUyOAorIzogZGxsd3JhcC5jOjUxNQorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAtLWFzIDxuYW1lPiAgICAgICAgICAgIFVzZSA8bmFtZT4gZm9yIGFzc2VtYmxlclxuIgogbXNnc3RyICIiCiAKLSM6IGRsbHdyYXAuYzo1MjkKKyM6IGRsbHdyYXAuYzo1MTYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgLS1ub2RlbGV0ZSAgICAgICAgICAgICBLZWVwIHRlbXAgZmlsZXMuXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjUzMAorIzogZGxsd3JhcC5jOjUxNworIywgYy1mb3JtYXQKIG1zZ2lkICIgIFJlc3QgYXJlIHBhc3NlZCB1bm1vZGlmaWVkIHRvIHRoZSBsYW5ndWFnZSBkcml2ZXJcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6ODAyCisjOiBkbGx3cmFwLmM6Nzg3CiBtc2dpZCAiTXVzdCBwcm92aWRlIGF0IGxlYXN0IG9uZSBvZiAtbyBvciAtLWRsbG5hbWUgb3B0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6ODMwCisjOiBkbGx3cmFwLmM6ODE1CiBtc2dpZCAiIgogIm5vIGV4cG9ydCBkZWZpbml0aW9uIGZpbGUgcHJvdmlkZWQuXG4iCiAiQ3JlYXRpbmcgb25lLCBidXQgdGhhdCBtYXkgbm90IGJlIHdoYXQgeW91IHdhbnQiCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjk5MgorIzogZGxsd3JhcC5jOjk3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJETExUT09MIG5hbWUgICAgOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGRsbHdyYXAuYzo5OTMKKyM6IGRsbHdyYXAuYzo5NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRExMVE9PTCBvcHRpb25zIDogJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBkbGx3cmFwLmM6OTk0CisjOiBkbGx3cmFwLmM6OTc5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRSSVZFUiBuYW1lICAgICA6ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogZGxsd3JhcC5jOjk5NQorIzogZGxsd3JhcC5jOjk4MAogIywgYy1mb3JtYXQKIG1zZ2lkICJEUklWRVIgb3B0aW9ucyAgOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGVtdWxfYWl4LmM6NTgKKyM6IGVtdWxfYWl4LmM6NTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBbLWddICAgICAgICAgLSAzMiBiaXQgc21hbGwgYXJjaGl2ZVxuIgogbXNnc3RyICIiCiAKLSM6IGVtdWxfYWl4LmM6NTkKKyM6IGVtdWxfYWl4LmM6NTIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBbLVgzMl0gICAgICAgLSBpZ25vcmVzIDY0IGJpdCBvYmplY3RzXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bF9haXguYzo2MAorIzogZW11bF9haXguYzo1MworIywgYy1mb3JtYXQKIG1zZ2lkICIgIFstWDY0XSAgICAgICAtIGlnbm9yZXMgMzIgYml0IG9iamVjdHNcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsX2FpeC5jOjYxCisjOiBlbXVsX2FpeC5jOjU0CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgWy1YMzJfNjRdICAgIC0gYWNjZXB0cyAzMiBhbmQgNjQgYml0IG9iamVjdHNcbiIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6MzI2CisjOiBpZWVlLmM6MzEwCiBtc2dpZCAidW5leHBlY3RlZCBlbmQgb2YgZGVidWdnaW5nIGluZm9ybWF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzo0MjEKKyM6IGllZWUuYzozOTcKIG1zZ2lkICJpbnZhbGlkIG51bWJlciIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6NDgwCisjOiBpZWVlLmM6NDUwCiBtc2dpZCAiaW52YWxpZCBzdHJpbmcgbGVuZ3RoIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzo1MzcgaWVlZS5jOjU3OAorIzogaWVlZS5jOjUwNSBpZWVlLmM6NTQ2CiBtc2dpZCAiZXhwcmVzc2lvbiBzdGFjayBvdmVyZmxvdyIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6NTU3CisjOiBpZWVlLmM6NTI1CiBtc2dpZCAidW5zdXBwb3J0ZWQgSUVFRSBleHByZXNzaW9uIG9wZXJhdG9yIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzo1NzIKKyM6IGllZWUuYzo1NDAKIG1zZ2lkICJ1bmtub3duIHNlY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjU5MworIzogaWVlZS5jOjU2MQogbXNnaWQgImV4cHJlc3Npb24gc3RhY2sgdW5kZXJmbG93IgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzo2MDcKKyM6IGllZWUuYzo1NzUKIG1zZ2lkICJleHByZXNzaW9uIHN0YWNrIG1pc21hdGNoIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzo2NDYKKyM6IGllZWUuYzo2MTIKIG1zZ2lkICJ1bmtub3duIGJ1aWx0aW4gdHlwZSIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6NzkxCisjOiBpZWVlLmM6NzU3CiBtc2dpZCAiQkNEIGZsb2F0IHR5cGUgbm90IHN1cHBvcnRlZCIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6OTM3CisjOiBpZWVlLmM6ODk0CiBtc2dpZCAidW5leHBlY3RlZCBudW1iZXIiCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjk0NAorIzogaWVlZS5jOjkwMQogbXNnaWQgInVuZXhwZWN0ZWQgcmVjb3JkIHR5cGUiCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjk3NworIzogaWVlZS5jOjkzNAogbXNnaWQgImJsb2NrcyBsZWZ0IG9uIHN0YWNrIGF0IGVuZCIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6MTI0MgorIzogaWVlZS5jOjExOTcKIG1zZ2lkICJ1bmtub3duIEJCIHR5cGUiCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjEyNTEKKyM6IGllZWUuYzoxMjA2CiBtc2dpZCAic3RhY2sgb3ZlcmZsb3ciCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjEyNzYKKyM6IGllZWUuYzoxMjI5CiBtc2dpZCAic3RhY2sgdW5kZXJmbG93IgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzoxMzkwIGllZWUuYzoxNDYyIGllZWUuYzoyMTYxCisjOiBpZWVlLmM6MTM0MSBpZWVlLmM6MTQxMSBpZWVlLmM6MjEwOAogbXNnaWQgImlsbGVnYWwgdmFyaWFibGUgaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjE0NDAKKyM6IGllZWUuYzoxMzg5CiBtc2dpZCAiaWxsZWdhbCB0eXBlIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzoxNDUwIGllZWUuYzoxNDg3CisjOiBpZWVlLmM6MTM5OSBpZWVlLmM6MTQzNgogbXNnaWQgInVua25vd24gVFkgY29kZSIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6MTQ2OQorIzogaWVlZS5jOjE0MTgKIG1zZ2lkICJ1bmRlZmluZWQgdmFyaWFibGUgaW4gVFkiCiBtc2dzdHIgIiIKIAogIy4gUGFzY2FsIGZpbGUgbmFtZS4gIEZJWE1FLgotIzogaWVlZS5jOjE4ODAKKyM6IGllZWUuYzoxODI5CiBtc2dpZCAiUGFzY2FsIGZpbGUgbmFtZSBub3Qgc3VwcG9ydGVkIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzoxOTI4CisjOiBpZWVlLmM6MTg3NwogbXNnaWQgInVuc3VwcG9ydGVkIHF1YWxpZmllciIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6MjE5OQorIzogaWVlZS5jOjIxNDYKIG1zZ2lkICJ1bmRlZmluZWQgdmFyaWFibGUgaW4gQVROIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzoyMjQyCisjOiBpZWVlLmM6MjE4OQogbXNnaWQgInVua25vd24gQVROIHR5cGUiCiBtc2dzdHIgIiIKIAogIy4gUmVzZXJ2ZWQgZm9yIEZPUlRSQU4gY29tbW9uLgotIzogaWVlZS5jOjIzNjQKKyM6IGllZWUuYzoyMzExCiBtc2dpZCAidW5zdXBwb3J0ZWQgQVROMTEiCiBtc2dzdHIgIiIKIAogIy4gV2UgaGF2ZSBubyB3YXkgdG8gcmVjb3JkIHRoaXMgaW5mb3JtYXRpb24uICBGSVhNRS4KLSM6IGllZWUuYzoyMzkxCisjOiBpZWVlLmM6MjMzOAogbXNnaWQgInVuc3VwcG9ydGVkIEFUTjEyIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzoyNDUxCisjOiBpZWVlLmM6MjM5OAogbXNnaWQgInVuZXhwZWN0ZWQgc3RyaW5nIGluIEMrKyBtaXNjIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzoyNDY0CisjOiBpZWVlLmM6MjQxMQogbXNnaWQgImJhZCBtaXNjIHJlY29yZCIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6MjUwNworIzogaWVlZS5jOjI0NTIKIG1zZ2lkICJ1bnJlY29nbml6ZWQgQysrIG1pc2MgcmVjb3JkIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzoyNjI0CisjOiBpZWVlLmM6MjU2NwogbXNnaWQgInVuZGVmaW5lZCBDKysgb2JqZWN0IgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzoyNjU4CisjOiBpZWVlLmM6MjYwMQogbXNnaWQgInVucmVjb2duaXplZCBDKysgb2JqZWN0IHNwZWMiCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjI2OTQKKyM6IGllZWUuYzoyNjM3CiBtc2dpZCAidW5zdXBwb3J0ZWQgQysrIG9iamVjdCB0eXBlIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzoyNzA0CisjOiBpZWVlLmM6MjY0NwogbXNnaWQgIkMrKyBiYXNlIGNsYXNzIG5vdCBkZWZpbmVkIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzoyNzE2IGllZWUuYzoyODIxCisjOiBpZWVlLmM6MjY1OSBpZWVlLmM6Mjc2NAogbXNnaWQgIkMrKyBvYmplY3QgaGFzIG5vIGZpZWxkcyIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6MjczNQorIzogaWVlZS5jOjI2NzgKIG1zZ2lkICJDKysgYmFzZSBjbGFzcyBub3QgZm91bmQgaW4gY29udGFpbmVyIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzoyODQyCisjOiBpZWVlLmM6Mjc4NQogbXNnaWQgIkMrKyBkYXRhIG1lbWJlciBub3QgZm91bmQgaW4gY29udGFpbmVyIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzoyODgzIGllZWUuYzozMDMzCisjOiBpZWVlLmM6MjgyNiBpZWVlLmM6Mjk3NgogbXNnaWQgInVua25vd24gQysrIHZpc2liaWxpdHkiCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjI5MTcKKyM6IGllZWUuYzoyODYwCiBtc2dpZCAiYmFkIEMrKyBmaWVsZCBiaXQgcG9zIG9yIHNpemUiCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjMwMDkKKyM6IGllZWUuYzoyOTUyCiBtc2dpZCAiYmFkIHR5cGUgZm9yIEMrKyBtZXRob2QgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjMwMTkKKyM6IGllZWUuYzoyOTYyCiBtc2dpZCAibm8gdHlwZSBpbmZvcm1hdGlvbiBmb3IgQysrIG1ldGhvZCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6MzA1OAorIzogaWVlZS5jOjMwMDEKIG1zZ2lkICJDKysgc3RhdGljIHZpcnR1YWwgbWV0aG9kIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzozMTUzCisjOiBpZWVlLmM6MzA5NgogbXNnaWQgInVucmVjb2duaXplZCBDKysgb2JqZWN0IG92ZXJoZWFkIHNwZWMiCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjMxOTIKKyM6IGllZWUuYzozMTM1CiBtc2dpZCAidW5kZWZpbmVkIEMrKyB2dGFibGUiCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjMyNjMKKyM6IGllZWUuYzozMjA0CiBtc2dpZCAiQysrIGRlZmF1bHQgdmFsdWVzIG5vdCBpbiBhIGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzozMzAzCisjOiBpZWVlLmM6MzI0NAogbXNnaWQgInVucmVjb2duaXplZCBDKysgZGVmYXVsdCB0eXBlIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzozMzM0CisjOiBpZWVlLmM6MzI3NQogbXNnaWQgInJlZmVyZW5jZSBwYXJhbWV0ZXIgaXMgbm90IGEgcG9pbnRlciIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6MzQxOQorIzogaWVlZS5jOjMzNTgKIG1zZ2lkICJ1bnJlY29nbml6ZWQgQysrIHJlZmVyZW5jZSB0eXBlIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzozNTAxCisjOiBpZWVlLmM6MzQ0MAogbXNnaWQgIkMrKyByZWZlcmVuY2Ugbm90IGZvdW5kIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzozNTA5CisjOiBpZWVlLmM6MzQ0OAogbXNnaWQgIkMrKyByZWZlcmVuY2UgaXMgbm90IHBvaW50ZXIiCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjM1MzggaWVlZS5jOjM1NDYKKyM6IGllZWUuYzozNDc0IGllZWUuYzozNDgyCiBtc2dpZCAibWlzc2luZyByZXF1aXJlZCBBU04iCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjM1NzYgaWVlZS5jOjM1ODQKKyM6IGllZWUuYzozNTA5IGllZWUuYzozNTE3CiBtc2dpZCAibWlzc2luZyByZXF1aXJlZCBBVE42NSIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6MzU5OAorIzogaWVlZS5jOjM1MzEKIG1zZ2lkICJiYWQgQVRONjUgcmVjb3JkIgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzo0Mjg2CisjOiBpZWVlLmM6NDE1OQorIywgYy1mb3JtYXQKIG1zZ2lkICJJRUVFIG51bWVyaWMgb3ZlcmZsb3c6IDB4IgogbXNnc3RyICIiCiAKLSM6IGllZWUuYzo0MzMyCisjOiBpZWVlLmM6NDIwMwogIywgYy1mb3JtYXQKIG1zZ2lkICJJRUVFIHN0cmluZyBsZW5ndGggb3ZlcmZsb3c6ICV1XG4iCiBtc2dzdHIgIiIKIAotIzogaWVlZS5jOjUzODIKKyM6IGllZWUuYzo1MjAyCiAjLCBjLWZvcm1hdAogbXNnaWQgIklFRUUgdW5zdXBwb3J0ZWQgaW50ZWdlciB0eXBlIHNpemUgJXVcbiIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6NTQxOAorIzogaWVlZS5jOjUyMzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiSUVFRSB1bnN1cHBvcnRlZCBmbG9hdCB0eXBlIHNpemUgJXVcbiIKIG1zZ3N0ciAiIgogCi0jOiBpZWVlLmM6NTQ1NAorIzogaWVlZS5jOjUyNzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiSUVFRSB1bnN1cHBvcnRlZCBjb21wbGV4IHR5cGUgc2l6ZSAldVxuIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzoyODIgc3Jjb252LmM6MjA0MworIzogbmxtY29udi5jOjI3MSBzcmNvbnYuYzoxOTQ1CiBtc2dpZCAiaW5wdXQgYW5kIG91dHB1dCBmaWxlcyBtdXN0IGJlIGRpZmZlcmVudCIKIG1zZ3N0ciAiIgogCi0jOiBubG1jb252LmM6MzI5CisjOiBubG1jb252LmM6MzE4CiBtc2dpZCAiaW5wdXQgZmlsZSBuYW1lZCBib3RoIG9uIGNvbW1hbmQgbGluZSBhbmQgd2l0aCBJTlBVVCIKIG1zZ3N0ciAiIgogCi0jOiBubG1jb252LmM6MzM4CisjOiBubG1jb252LmM6MzI3CiBtc2dpZCAibm8gaW5wdXQgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBubG1jb252LmM6MzY4CisjOiBubG1jb252LmM6MzU3CiBtc2dpZCAibm8gbmFtZSBmb3Igb3V0cHV0IGZpbGUiCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjM4MgorIzogbmxtY29udi5jOjM3MQogbXNnaWQgIndhcm5pbmc6IGlucHV0IGFuZCBvdXRwdXQgZm9ybWF0cyBhcmUgbm90IGNvbXBhdGlibGUiCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjQxMQorIzogbmxtY29udi5jOjQwMAogbXNnaWQgIm1ha2UgLmJzcyBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzo0MjAKKyM6IG5sbWNvbnYuYzo0MDkKIG1zZ2lkICJtYWtlIC5ubG1zZWN0aW9ucyBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzo0MjIKKyM6IG5sbWNvbnYuYzo0MTEKIG1zZ2lkICJzZXQgLm5sbXNlY3Rpb25zIGZsYWdzIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzo0NTAKKyM6IG5sbWNvbnYuYzo0MzkKIG1zZ2lkICJzZXQgLmJzcyB2bWEiCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjQ1NworIzogbmxtY29udi5jOjQ0NgogbXNnaWQgInNldCAuZGF0YSBzaXplIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzo2MzcKKyM6IG5sbWNvbnYuYzo2MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAid2FybmluZzogc3ltYm9sICVzIGltcG9ydGVkIGJ1dCBub3QgaW4gaW1wb3J0IGxpc3QiCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjY1NworIzogbmxtY29udi5jOjY0NgogbXNnaWQgInNldCBzdGFydCBhZGRyZXNzIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzo3MDYKKyM6IG5sbWNvbnYuYzo2OTUKICMsIGMtZm9ybWF0CiBtc2dpZCAid2FybmluZzogU1RBUlQgcHJvY2VkdXJlICVzIG5vdCBkZWZpbmVkIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzo3MDgKKyM6IG5sbWNvbnYuYzo2OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAid2FybmluZzogRVhJVCBwcm9jZWR1cmUgJXMgbm90IGRlZmluZWQiCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjcxMAorIzogbmxtY29udi5jOjY5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ3YXJuaW5nOiBDSEVDSyBwcm9jZWR1cmUgJXMgbm90IGRlZmluZWQiCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjczMSBubG1jb252LmM6OTIwCisjOiBubG1jb252LmM6NzIwIG5sbWNvbnYuYzo5MDkKIG1zZ2lkICJjdXN0b20gc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBubG1jb252LmM6NzUyIG5sbWNvbnYuYzo5NDkKKyM6IG5sbWNvbnYuYzo3NDEgbmxtY29udi5jOjkzOAogbXNnaWQgImhlbHAgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBubG1jb252LmM6Nzc0IG5sbWNvbnYuYzo5NjcKKyM6IG5sbWNvbnYuYzo3NjMgbmxtY29udi5jOjk1NgogbXNnaWQgIm1lc3NhZ2Ugc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBubG1jb252LmM6NzkwIG5sbWNvbnYuYzoxMDAwCisjOiBubG1jb252LmM6Nzc5IG5sbWNvbnYuYzo5ODkKIG1zZ2lkICJtb2R1bGUgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBubG1jb252LmM6ODEwIG5sbWNvbnYuYzoxMDE2CisjOiBubG1jb252LmM6Nzk5IG5sbWNvbnYuYzoxMDA1CiBtc2dpZCAicnBjIHNlY3Rpb24iCiBtc2dzdHIgIiIKIAogIy4gVGhlcmUgaXMgbm8gcGxhY2UgdG8gcmVjb3JkIHRoaXMgaW5mb3JtYXRpb24uCi0jOiBubG1jb252LmM6ODQ2CisjOiBubG1jb252LmM6ODM1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB3YXJuaW5nOiBzaGFyZWQgbGlicmFyaWVzIGNhbiBub3QgaGF2ZSB1bmluaXRpYWxpemVkIGRhdGEiCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjg2NyBubG1jb252LmM6MTAzNQorIzogbmxtY29udi5jOjg1NiBubG1jb252LmM6MTAyNAogbXNnaWQgInNoYXJlZCBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzo4NzUKKyM6IG5sbWNvbnYuYzo4NjQKIG1zZ2lkICJ3YXJuaW5nOiBObyB2ZXJzaW9uIG51bWJlciBnaXZlbiIKIG1zZ3N0ciAiIgogCi0jOiBubG1jb252LmM6OTE1IG5sbWNvbnYuYzo5NDQgbmxtY29udi5jOjk2MiBubG1jb252LmM6MTAxMSBubG1jb252LmM6MTAzMAorIzogbmxtY29udi5jOjkwNCBubG1jb252LmM6OTMzIG5sbWNvbnYuYzo5NTEgbmxtY29udi5jOjEwMDAgbmxtY29udi5jOjEwMTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHJlYWQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzo5MzcKKyM6IG5sbWNvbnYuYzo5MjYKIG1zZ2lkICJ3YXJuaW5nOiBNQVAgYW5kIEZVTExNQVAgYXJlIG5vdCBzdXBwb3J0ZWQ7IHRyeSBsZCAtTSIKIG1zZ3N0ciAiIgogCi0jOiBubG1jb252LmM6MTEwOQorIzogbmxtY29udi5jOjEwOTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNhZ2U6ICVzIFtvcHRpb24ocyldIFtpbi1maWxlIFtvdXQtZmlsZV1dXG4iCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjExMTAKKyM6IG5sbWNvbnYuYzoxMDk3CisjLCBjLWZvcm1hdAogbXNnaWQgIiBDb252ZXJ0IGFuIG9iamVjdCBmaWxlIGludG8gYSBOZXRXYXJlIExvYWRhYmxlIE1vZHVsZVxuIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzoxMTExCisjOiBubG1jb252LmM6MTA5OAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiIFRoZSBvcHRpb25zIGFyZTpcbiIKICIgIC1JIC0taW5wdXQtdGFyZ2V0PTxiZmRuYW1lPiAgIFNldCB0aGUgaW5wdXQgYmluYXJ5IGZpbGUgZm9ybWF0XG4iCkBAIC0xMzg5LDczICsxNTA5LDc1IEBACiAiICAtdiAtLXZlcnNpb24gICAgICAgICAgICAgICAgICBEaXNwbGF5IHRoZSBwcm9ncmFtJ3MgdmVyc2lvblxuIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzoxMTUzCisjOiBubG1jb252LmM6MTEzOAogIywgYy1mb3JtYXQKIG1zZ2lkICJzdXBwb3J0IG5vdCBjb21waWxlZCBpbiBmb3IgJXMiCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjExOTMKKyM6IG5sbWNvbnYuYzoxMTc1CiBtc2dpZCAibWFrZSBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzoxMjA3CisjOiBubG1jb252LmM6MTE4OQogbXNnaWQgInNldCBzZWN0aW9uIHNpemUiCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjEyMTMKKyM6IG5sbWNvbnYuYzoxMTk1CiBtc2dpZCAic2V0IHNlY3Rpb24gYWxpZ25tZW50IgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzoxMjE3CisjOiBubG1jb252LmM6MTE5OQogbXNnaWQgInNldCBzZWN0aW9uIGZsYWdzIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzoxMjI4CisjOiBubG1jb252LmM6MTIxMAogbXNnaWQgInNldCAubmxtc2VjdGlvbnMgc2l6ZSIKIG1zZ3N0ciAiIgogCi0jOiBubG1jb252LmM6MTMxNiBubG1jb252LmM6MTMyNCBubG1jb252LmM6MTMzMyBubG1jb252LmM6MTMzOAorIzogbmxtY29udi5jOjEyOTUgbmxtY29udi5jOjEzMDMgbmxtY29udi5jOjEzMTIgbmxtY29udi5jOjEzMTcKIG1zZ2lkICJzZXQgLm5sbXNlY3Rpb24gY29udGVudHMiCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjE4MzkKKyM6IG5sbWNvbnYuYzoxNzk2CiBtc2dpZCAic3R1YiBzZWN0aW9uIHNpemVzIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzoxODg4CisjOiBubG1jb252LmM6MTg0MwogbXNnaWQgIndyaXRpbmcgc3R1YiIKIG1zZ3N0ciAiIgogCi0jOiBubG1jb252LmM6MTk3NworIzogbmxtY29udi5jOjE5MjgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZXNvbHZlZCBQQyByZWxhdGl2ZSByZWxvYyBhZ2FpbnN0ICVzIgogbXNnc3RyICIiCiAKLSM6IG5sbWNvbnYuYzoyMDQxCisjOiBubG1jb252LmM6MTk5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJvdmVyZmxvdyB3aGVuIGFkanVzdGluZyByZWxvY2F0aW9uIGFnYWluc3QgJXMiCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjIxNTgKKyM6IG5sbWNvbnYuYzoyMTA3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBleGVjdXRpb24gb2YgJXMgZmFpbGVkOiAiCiBtc2dzdHIgIiIKIAotIzogbmxtY29udi5jOjIxNzMKKyM6IG5sbWNvbnYuYzoyMTIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkV4ZWN1dGlvbiBvZiAlcyBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogbm0uYzoyODMgc2l6ZS5jOjg1IHN0cmluZ3MuYzo2NTcKKyM6IG5tLmM6MjQ3IHNpemUuYzo4MyBzdHJpbmdzLmM6NjMzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzYWdlOiAlcyBbb3B0aW9uKHMpXSBbZmlsZShzKV1cbiIKIG1zZ3N0ciAiIgogCi0jOiBubS5jOjI4NAorIzogbm0uYzoyNDgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIExpc3Qgc3ltYm9scyBpbiBbZmlsZShzKV0gKGEub3V0IGJ5IGRlZmF1bHQpLlxuIgogbXNnc3RyICIiCiAKLSM6IG5tLmM6Mjg1CisjOiBubS5jOjI0OQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiIFRoZSBvcHRpb25zIGFyZTpcbiIKICIgIC1hLCAtLWRlYnVnLXN5bXMgICAgICAgRGlzcGxheSBkZWJ1Z2dlci1vbmx5IHN5bWJvbHNcbiIKQEAgLTE0OTUsNTQgKzE2MTcsNTQgQEAKICJcbiIKIG1zZ3N0ciAiIgogCi0jOiBubS5jOjMxOSBvYmpkdW1wLmM6MjUwCisjOiBubS5jOjI4MyBvYmpkdW1wLmM6MjIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlcG9ydCBidWdzIHRvICVzLlxuIgogbXNnc3RyICIiCiAKLSM6IG5tLmM6MzUyCisjOiBubS5jOjMxNQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogaW52YWxpZCByYWRpeCIKIG1zZ3N0ciAiIgogCi0jOiBubS5jOjM3NworIzogbm0uYzozMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGludmFsaWQgb3V0cHV0IGZvcm1hdCIKIG1zZ3N0ciAiIgogCi0jOiBubS5jOjQ5NAorIzogbm0uYzo0NTQKIG1zZ2lkICJPbmx5IC1YIDMyXzY0IGlzIHN1cHBvcnRlZCIKIG1zZ3N0ciAiIgogCi0jOiBubS5jOjUxNAorIzogbm0uYzo0NzQKIG1zZ2lkICJVc2luZyB0aGUgLS1zaXplLXNvcnQgYW5kIC0tdW5kZWZpbmVkLW9ubHkgb3B0aW9ucyB0b2dldGhlciIKIG1zZ3N0ciAiIgogCi0jOiBubS5jOjUxNQorIzogbm0uYzo0NzUKIG1zZ2lkICJ3aWxsIHByb2R1Y2Ugbm8gb3V0cHV0LCBzaW5jZSB1bmRlZmluZWQgc3ltYm9scyBoYXZlIG5vIHNpemUuIgogbXNnc3RyICIiCiAKLSM6IG5tLmM6NTQzCisjOiBubS5jOjUwMwogIywgYy1mb3JtYXQKIG1zZ2lkICJkYXRhIHNpemUgJWxkIgogbXNnc3RyICIiCiAKLSM6IG5tLmM6NTY4IHJlYWRlbGYuYzo1ODA5IHJlYWRlbGYuYzo1ODQ1CisjOiBubS5jOjUyNyByZWFkZWxmLmM6NTQ5NyByZWFkZWxmLmM6NTUzMgogIywgYy1mb3JtYXQKIG1zZ2lkICI8cHJvY2Vzc29yIHNwZWNpZmljPjogJWQiCiBtc2dzdHIgIiIKIAotIzogbm0uYzo1NzAgcmVhZGVsZi5jOjU4MTEgcmVhZGVsZi5jOjU4NTcKKyM6IG5tLmM6NTI5IHJlYWRlbGYuYzo1NDk5IHJlYWRlbGYuYzo1NTQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgIjxPUyBzcGVjaWZpYz46ICVkIgogbXNnc3RyICIiCiAKLSM6IG5tLmM6NTcyIHJlYWRlbGYuYzo1ODEzIHJlYWRlbGYuYzo1ODYwCisjOiBubS5jOjUzMSByZWFkZWxmLmM6NTUwMSByZWFkZWxmLmM6NTU0NwogIywgYy1mb3JtYXQKIG1zZ2lkICI8dW5rbm93bj46ICVkIgogbXNnc3RyICIiCiAKLSM6IG5tLmM6MTM3NgorIzogbm0uYzoxMjk3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTE1NTEsNyArMTY3Myw3IEBACiAiXG4iCiBtc2dzdHIgIiIKIAotIzogbm0uYzoxMzc4CisjOiBubS5jOjEyOTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMTU2MCwyMSArMTY4MiwyMyBAQAogIlxuIgogbXNnc3RyICIiCiAKLSM6IG5tLmM6MTM4MCBubS5jOjE0MzgKKyM6IG5tLmM6MTMwMSBubS5jOjEzNTIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk5hbWUgICAgICAgICAgICAgICAgICBWYWx1ZSAgIENsYXNzICAgICAgICBUeXBlICAgICAgICAgU2l6ZSAgICAgTGluZSAgIgogIlNlY3Rpb25cbiIKICJcbiIKIG1zZ3N0ciAiIgogCi0jOiBubS5jOjEzODMgbm0uYzoxNDQxCisjOiBubS5jOjEzMDQgbm0uYzoxMzU1CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJOYW1lICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgIENsYXNzICAgICAgICBUeXBlICAgICAgICAgIgogIlNpemUgICAgICAgICAgICAgTGluZSAgU2VjdGlvblxuIgogIlxuIgogbXNnc3RyICIiCiAKLSM6IG5tLmM6MTQzNAorIzogbm0uYzoxMzQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTE1ODMsNyArMTcwNyw3IEBACiAiXG4iCiBtc2dzdHIgIiIKIAotIzogbm0uYzoxNDM2CisjOiBubS5jOjEzNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMTU5MiwyNiArMTcxNiwzMCBAQAogIlxuIgogbXNnc3RyICIiCiAKLSM6IG5tLmM6MTY1OAorIzogbm0uYzoxNTU4CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJBcmNoaXZlIGluZGV4OlxuIgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzo0MTQgc3Jjb252LmM6MTk1MgorIzogb2JqY29weS5jOjM5MCBzcmNvbnYuYzoxODU2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzYWdlOiAlcyBbb3B0aW9uKHMpXSBpbi1maWxlIFtvdXQtZmlsZV1cbiIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6NDE1CisjOiBvYmpjb3B5LmM6MzkxCisjLCBjLWZvcm1hdAogbXNnaWQgIiBDb3BpZXMgYSBiaW5hcnkgZmlsZSwgcG9zc2libHkgdHJhbnNmb3JtaW5nIGl0IGluIHRoZSBwcm9jZXNzXG4iCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjQxNiBvYmpjb3B5LmM6NDk1CisjOiBvYmpjb3B5LmM6MzkyIG9iamNvcHkuYzo0NzUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFRoZSBvcHRpb25zIGFyZTpcbiIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6NDE3CisjOiBvYmpjb3B5LmM6MzkzCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC1JIC0taW5wdXQtdGFyZ2V0IDxiZmRuYW1lPiAgICAgIEFzc3VtZSBpbnB1dCBmaWxlIGlzIGluIGZvcm1hdCA8YmZkbmFtZT5cbiIKICIgIC1PIC0tb3V0cHV0LXRhcmdldCA8YmZkbmFtZT4gICAgIENyZWF0ZSBhbiBvdXRwdXQgZmlsZSBpbiBmb3JtYXQgIgpAQCAtMTYzNCw2ICsxNzYyLDggQEAKICIgICAgIC0tc3RyaXAtdW5uZWVkZWQgICAgICAgICAgICAgIFJlbW92ZSBhbGwgc3ltYm9scyBub3QgbmVlZGVkIGJ5ICIKICJyZWxvY2F0aW9uc1xuIgogIiAgLU4gLS1zdHJpcC1zeW1ib2wgPG5hbWU+ICAgICAgICAgRG8gbm90IGNvcHkgc3ltYm9sIDxuYW1lPlxuIgorIiAgICAgLS1vbmx5LWtlZXAtZGVidWcgICAgICAgICAgICAgU3RyaXAgZXZlcnl0aGluZyBidXQgdGhlIGRlYnVnICIKKyJpbmZvcm1hdGlvblxuIgogIiAgLUsgLS1rZWVwLXN5bWJvbCA8bmFtZT4gICAgICAgICAgT25seSBjb3B5IHN5bWJvbCA8bmFtZT5cbiIKICIgIC1MIC0tbG9jYWxpemUtc3ltYm9sIDxuYW1lPiAgICAgIEZvcmNlIHN5bWJvbCA8bmFtZT4gdG8gYmUgbWFya2VkIGFzIGEgIgogImxvY2FsXG4iCkBAIC0xNjQyLDYgKzE3NzIsNyBAQAogIndlYWtcbiIKICIgICAgIC0td2Vha2VuICAgICAgICAgICAgICAgICAgICAgIEZvcmNlIGFsbCBnbG9iYWwgc3ltYm9scyB0byBiZSBtYXJrZWQgYXMgIgogIndlYWtcbiIKKyIgIC13IC0td2lsZGNhcmQgICAgICAgICAgICAgICAgICAgIFBlcm1pdCB3aWxkY2FyZCBpbiBzeW1ib2wgY29tcGFyYXNpb25cbiIKICIgIC14IC0tZGlzY2FyZC1hbGwgICAgICAgICAgICAgICAgIFJlbW92ZSBhbGwgbm9uLWdsb2JhbCBzeW1ib2xzXG4iCiAiICAtWCAtLWRpc2NhcmQtbG9jYWxzICAgICAgICAgICAgICBSZW1vdmUgYW55IGNvbXBpbGVyLWdlbmVyYXRlZCBzeW1ib2xzXG4iCiAiICAtaSAtLWludGVybGVhdmUgPG51bWJlcj4gICAgICAgICBPbmx5IGNvcHkgb25lIG91dCBvZiBldmVyeSA8bnVtYmVyPiAiCkBAIC0xNjkxLDYgKzE4MjIsMTAgQEAKICIgICAgIC0ta2VlcC1nbG9iYWwtc3ltYm9scyA8ZmlsZT4gIC1HIGZvciBhbGwgc3ltYm9scyBsaXN0ZWQgaW4gPGZpbGU+XG4iCiAiICAgICAtLXdlYWtlbi1zeW1ib2xzIDxmaWxlPiAgICAgICAtVyBmb3IgYWxsIHN5bWJvbHMgbGlzdGVkIGluIDxmaWxlPlxuIgogIiAgICAgLS1hbHQtbWFjaGluZS1jb2RlIDxpbmRleD4gICAgVXNlIGFsdGVybmF0ZSBtYWNoaW5lIGNvZGUgZm9yIG91dHB1dFxuIgorIiAgICAgLS13cml0YWJsZS10ZXh0ICAgICAgICAgICAgICAgTWFyayB0aGUgb3V0cHV0IHRleHQgYXMgd3JpdGFibGVcbiIKKyIgICAgIC0tcmVhZG9ubHktdGV4dCAgICAgICAgICAgICAgIE1ha2UgdGhlIG91dHB1dCB0ZXh0IHdyaXRlIHByb3RlY3RlZFxuIgorIiAgICAgLS1wdXJlICAgICAgICAgICAgICAgICAgICAgICAgTWFyayB0aGUgb3V0cHV0IGZpbGUgYXMgZGVtYW5kIHBhZ2VkXG4iCisiICAgICAtLWltcHVyZSAgICAgICAgICAgICAgICAgICAgICBNYXJrIHRoZSBvdXRwdXQgZmlsZSBhcyBpbXB1cmVcbiIKICIgICAgIC0tcHJlZml4LXN5bWJvbHMgPHByZWZpeD4gICAgIEFkZCA8cHJlZml4PiB0byBzdGFydCBvZiBldmVyeSBzeW1ib2wgIgogIm5hbWVcbiIKICIgICAgIC0tcHJlZml4LXNlY3Rpb25zIDxwcmVmaXg+ICAgIEFkZCA8cHJlZml4PiB0byBzdGFydCBvZiBldmVyeSBzZWN0aW9uICIKQEAgLTE3MDYsMTYgKzE4NDEsMTggQEAKICJzdXBwb3J0ZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6NDkzCisjOiBvYmpjb3B5LmM6NDczCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzYWdlOiAlcyA8b3B0aW9uKHMpPiBpbi1maWxlKHMpXG4iCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjQ5NAorIzogb2JqY29weS5jOjQ3NAorIywgYy1mb3JtYXQKIG1zZ2lkICIgUmVtb3ZlcyBzeW1ib2xzIGFuZCBzZWN0aW9ucyBmcm9tIGZpbGVzXG4iCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjQ5NgorIzogb2JqY29weS5jOjQ3NgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtSSAtLWlucHV0LXRhcmdldD08YmZkbmFtZT4gICAgICBBc3N1bWUgaW5wdXQgZmlsZSBpcyBpbiBmb3JtYXQgPGJmZG5hbWU+XG4iCiAiICAtTyAtLW91dHB1dC10YXJnZXQ9PGJmZG5hbWU+ICAgICBDcmVhdGUgYW4gb3V0cHV0IGZpbGUgaW4gZm9ybWF0ICIKQEAgLTE3MzAsOCArMTg2NywxMSBAQAogIiAgLWcgLVMgLWQgLS1zdHJpcC1kZWJ1ZyAgICAgICAgICAgUmVtb3ZlIGFsbCBkZWJ1Z2dpbmcgc3ltYm9scyAmIHNlY3Rpb25zXG4iCiAiICAgICAtLXN0cmlwLXVubmVlZGVkICAgICAgICAgICAgICBSZW1vdmUgYWxsIHN5bWJvbHMgbm90IG5lZWRlZCBieSAiCiAicmVsb2NhdGlvbnNcbiIKKyIgICAgIC0tb25seS1rZWVwLWRlYnVnICAgICAgICAgICAgIFN0cmlwIGV2ZXJ5dGhpbmcgYnV0IHRoZSBkZWJ1ZyAiCisiaW5mb3JtYXRpb25cbiIKICIgIC1OIC0tc3RyaXAtc3ltYm9sPTxuYW1lPiAgICAgICAgIERvIG5vdCBjb3B5IHN5bWJvbCA8bmFtZT5cbiIKICIgIC1LIC0ta2VlcC1zeW1ib2w9PG5hbWU+ICAgICAgICAgIE9ubHkgY29weSBzeW1ib2wgPG5hbWU+XG4iCisiICAtdyAtLXdpbGRjYXJkICAgICAgICAgICAgICAgICAgICBQZXJtaXQgd2lsZGNhcmQgaW4gc3ltYm9sIGNvbXBhcmFzaW9uXG4iCiAiICAteCAtLWRpc2NhcmQtYWxsICAgICAgICAgICAgICAgICBSZW1vdmUgYWxsIG5vbi1nbG9iYWwgc3ltYm9sc1xuIgogIiAgLVggLS1kaXNjYXJkLWxvY2FscyAgICAgICAgICAgICAgUmVtb3ZlIGFueSBjb21waWxlci1nZW5lcmF0ZWQgc3ltYm9sc1xuIgogIiAgLXYgLS12ZXJib3NlICAgICAgICAgICAgICAgICAgICAgTGlzdCBhbGwgb2JqZWN0IGZpbGVzIG1vZGlmaWVkXG4iCkBAIC0xNzQyLDIzNCArMTg4MiwyNDEgQEAKICIgIC1vIDxmaWxlPiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWNlIHN0cmlwcGVkIG91dHB1dCBpbnRvIDxmaWxlPlxuIgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzo1NjcKKyM6IG9iamNvcHkuYzo1NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIHNlY3Rpb24gZmxhZyBgJXMnIgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzo1NjgKKyM6IG9iamNvcHkuYzo1NDkKICMsIGMtZm9ybWF0CiBtc2dpZCAic3VwcG9ydGVkIGZsYWdzOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6NjQ1IG9iamNvcHkuYzoyNTI2CisjOiBvYmpjb3B5LmM6NjI2CiAjLCBjLWZvcm1hdAotbXNnaWQgImNhbm5vdCBzdGF0OiAlczogJXMiCittc2dpZCAiY2Fubm90IG9wZW4gJyVzJzogJXMiCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjY1MiBvYmpjb3B5LmM6MjU0NAotIywgYy1mb3JtYXQKLW1zZ2lkICJjYW5ub3Qgb3BlbjogJXM6ICVzIgotbXNnc3RyICIiCi0KLSM6IG9iamNvcHkuYzo2NTUgb2JqY29weS5jOjI1NDgKKyM6IG9iamNvcHkuYzo2Mjkgb2JqY29weS5jOjI1ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGZyZWFkIGZhaWxlZCIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6NzI4CisjOiBvYmpjb3B5LmM6NzAyCiAjLCBjLWZvcm1hdAogbXNnaWQgIklnbm9yaW5nIHJ1YmJpc2ggZm91bmQgb24gbGluZSAlZCBvZiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6OTc5CisjOiBvYmpjb3B5LmM6OTYwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBNdWx0aXBsZSByZWRlZmluaXRpb24gb2Ygc3ltYm9sIFwiJXNcIiIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6OTgzCisjOiBvYmpjb3B5LmM6OTY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBTeW1ib2wgXCIlc1wiIGlzIHRhcmdldCBvZiBtb3JlIHRoYW4gb25lIHJlZGVmaW5pdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6MTAxMAorIzogb2JqY29weS5jOjk5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZG4ndCBvcGVuIHN5bWJvbCByZWRlZmluaXRpb24gZmlsZSAlcyAoZXJyb3I6ICVzKSIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6MTA4OAorIzogb2JqY29weS5jOjEwNzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGdhcmJhZ2UgYXQgZW5kIG9mIGxpbmUgJWQiCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjEwOTEKKyM6IG9iamNvcHkuYzoxMDczCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBtaXNzaW5nIG5ldyBzeW1ib2wgbmFtZSBhdCBsaW5lICVkIgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzoxMTAxCisjOiBvYmpjb3B5LmM6MTA4MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogcHJlbWF0dXJlIGVuZCBvZiBmaWxlIGF0IGxpbmUgJWQiCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjExNDcKKyM6IG9iamNvcHkuYzoxMTA4CiBtc2dpZCAiVW5hYmxlIHRvIGNoYW5nZSBlbmRpYW5uZXNzIG9mIGlucHV0IGZpbGUocykiCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjExNTUKKyM6IG9iamNvcHkuYzoxMTE3CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcHkgZnJvbSAlcyglcykgdG8gJXMoJXMpXG4iCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjExODIKKyM6IG9iamNvcHkuYzoxMTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byByZWNvZ25pc2UgdGhlIGZvcm1hdCBvZiB0aGUgaW5wdXQgZmlsZSAlcyIKK21zZ3N0ciAiIgorCisjOiBvYmpjb3B5LmM6MTE1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nOiBPdXRwdXQgZmlsZSBjYW5ub3QgcmVwcmVzZW50IGFyY2hpdGVjdHVyZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6MTIxMQorIzogb2JqY29weS5jOjExOTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FuJ3QgY3JlYXRlIHNlY3Rpb24gYCVzJzogJXMiCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjEzMDQKKyM6IG9iamNvcHkuYzoxMjU5Cittc2dpZCAidGhlcmUgYXJlIG5vIHNlY3Rpb25zIHRvIGJlIGNvcGllZCEiCittc2dzdHIgIiIKKworIzogb2JqY29weS5jOjEzMDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2FuJ3QgZmlsbCBnYXAgYWZ0ZXIgJXM6ICVzIgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzoxMzI5CisjOiBvYmpjb3B5LmM6MTMzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW4ndCBhZGQgcGFkZGluZyB0byAlczogJXMiCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjE0ODUKKyM6IG9iamNvcHkuYzoxNDk2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBlcnJvciBjb3B5aW5nIHByaXZhdGUgQkZEIGRhdGE6ICVzIgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzoxNDk4CisjOiBvYmpjb3B5LmM6MTUwNwogbXNnaWQgInVua25vd24gYWx0ZXJuYXRlIG1hY2hpbmUgY29kZSwgaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6MTUzMSBvYmpjb3B5LmM6MTU2MQorIzogb2JqY29weS5jOjE1Mzcgb2JqY29weS5jOjE1NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG1rZGlyICVzIGZvciBhcmNoaXZlIGNvcHlpbmcgKGVycm9yOiAlcykiCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjE3NDkKKyM6IG9iamNvcHkuYzoxNzcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIk11bHRpcGxlIHJlbmFtZXMgb2Ygc2VjdGlvbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6MTg0MAorIzogb2JqY29weS5jOjE4NTkKIG1zZ2lkICJtYWtpbmciCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjE4NDkKKyM6IG9iamNvcHkuYzoxODY4CiBtc2dpZCAic2l6ZSIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6MTg2MworIzogb2JqY29weS5jOjE4ODIKIG1zZ2lkICJ2bWEiCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjE4ODgKKyM6IG9iamNvcHkuYzoxOTA3CiBtc2dpZCAiYWxpZ25tZW50IgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzoxODk2CisjOiBvYmpjb3B5LmM6MTkyMgogbXNnaWQgImZsYWdzIgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzoxOTE4CisjOiBvYmpjb3B5LmM6MTk0NAogbXNnaWQgInByaXZhdGUgZGF0YSIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6MTkyNgorIzogb2JqY29weS5jOjE5NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHNlY3Rpb24gYCVzJzogZXJyb3IgaW4gJXM6ICVzIgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzoyMTk5CisjOiBvYmpjb3B5LmM6MjIzMwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2FuJ3QgY3JlYXRlIGRlYnVnZ2luZyBzZWN0aW9uOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6MjIxNAorIzogb2JqY29weS5jOjIyNDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbid0IHNldCBkZWJ1Z2dpbmcgc2VjdGlvbiBjb250ZW50czogJXMiCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjIyMjMKKyM6IG9iamNvcHkuYzoyMjU2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBkb24ndCBrbm93IGhvdyB0byB3cml0ZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZm9yICVzIgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzoyMzQ2Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiVzOiBjYW5ub3Qgc3RhdDogJXMiCi1tc2dzdHIgIiIKLQotIzogb2JqY29weS5jOjI0MDAKKyM6IG9iamNvcHkuYzoyNDMxCiBtc2dpZCAiYnl0ZSBudW1iZXIgbXVzdCBiZSBub24tbmVnYXRpdmUiCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjI0MTAKKyM6IG9iamNvcHkuYzoyNDQxCiBtc2dpZCAiaW50ZXJsZWF2ZSBtdXN0IGJlIHBvc2l0aXZlIgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzoyNDMwIG9iamNvcHkuYzoyNDM4CisjOiBvYmpjb3B5LmM6MjQ2MSBvYmpjb3B5LmM6MjQ2OQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBib3RoIGNvcGllZCBhbmQgcmVtb3ZlZCIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6MjUyMyBvYmpjb3B5LmM6MjU5MyBvYmpjb3B5LmM6MjY5MyBvYmpjb3B5LmM6MjcyNCBvYmpjb3B5LmM6Mjc0OAotIzogb2JqY29weS5jOjI3NTIgb2JqY29weS5jOjI3NzIKKyM6IG9iamNvcHkuYzoyNTU4IG9iamNvcHkuYzoyNjI5IG9iamNvcHkuYzoyNzI5IG9iamNvcHkuYzoyNzYwIG9iamNvcHkuYzoyNzg0CisjOiBvYmpjb3B5LmM6Mjc4OCBvYmpjb3B5LmM6MjgwOAogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgZm9ybWF0IGZvciAlcyIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6MjY2MgorIzogb2JqY29weS5jOjI1NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2Fubm90IG9wZW46ICVzOiAlcyIKK21zZ3N0ciAiIgorCisjOiBvYmpjb3B5LmM6MjY5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nOiB0cnVuY2F0aW5nIGdhcC1maWxsIGZyb20gMHglcyB0byAweCV4IgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzoyODE4CisjOiBvYmpjb3B5LmM6Mjg1NAogbXNnaWQgImFsdGVybmF0ZSBtYWNoaW5lIGNvZGUgaW5kZXggbXVzdCBiZSBwb3NpdGl2ZSIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6Mjg1NgorIzogb2JqY29weS5jOjI5MTIKIG1zZ2lkICJieXRlIG51bWJlciBtdXN0IGJlIGxlc3MgdGhhbiBpbnRlcmxlYXZlIgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzoyODgzCisjOiBvYmpjb3B5LmM6Mjk0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJhcmNoaXRlY3R1cmUgJXMgdW5rbm93biIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6Mjg4NworIzogb2JqY29weS5jOjI5NDYKIG1zZ2lkICIiCiAiV2FybmluZzogaW5wdXQgdGFyZ2V0ICdiaW5hcnknIHJlcXVpcmVkIGZvciBiaW5hcnkgYXJjaGl0ZWN0dXJlIHBhcmFtZXRlci4iCiBtc2dzdHIgIiIKIAotIzogb2JqY29weS5jOjI4ODgKKyM6IG9iamNvcHkuYzoyOTQ3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiBBcmd1bWVudCAlcyBpZ25vcmVkIgogbXNnc3RyICIiCiAKLSM6IG9iamNvcHkuYzoyODk0CisjOiBvYmpjb3B5LmM6Mjk1MwogIywgYy1mb3JtYXQKLW1zZ2lkICJDYW5ub3Qgc3RhdDogJXM6ICVzIgorbXNnaWQgIndhcm5pbmc6IGNvdWxkIG5vdCBsb2NhdGUgJyVzJy4gIFN5c3RlbSBlcnJvciBtZXNzYWdlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBvYmpjb3B5LmM6MjkzNCBvYmpjb3B5LmM6Mjk0OAorIzogb2JqY29weS5jOjI5OTMgb2JqY29weS5jOjMwMDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgJXMlYzB4JXMgbmV2ZXIgdXNlZCIKIG1zZ3N0ciAiIgogCi0jOiBvYmpkdW1wLmM6MTk3CisjOiBvYmpkdW1wLmM6MTY4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzYWdlOiAlcyA8b3B0aW9uKHMpPiA8ZmlsZShzKT5cbiIKIG1zZ3N0ciAiIgogCi0jOiBvYmpkdW1wLmM6MTk4CisjOiBvYmpkdW1wLmM6MTY5CisjLCBjLWZvcm1hdAogbXNnaWQgIiBEaXNwbGF5IGluZm9ybWF0aW9uIGZyb20gb2JqZWN0IDxmaWxlKHMpPi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBvYmpkdW1wLmM6MTk5CisjOiBvYmpkdW1wLmM6MTcwCisjLCBjLWZvcm1hdAogbXNnaWQgIiBBdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZyBzd2l0Y2hlcyBtdXN0IGJlIGdpdmVuOlxuIgogbXNnc3RyICIiCiAKLSM6IG9iamR1bXAuYzoyMDAKKyM6IG9iamR1bXAuYzoxNzEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLWEsIC0tYXJjaGl2ZS1oZWFkZXJzICAgIERpc3BsYXkgYXJjaGl2ZSBoZWFkZXIgaW5mb3JtYXRpb25cbiIKICIgIC1mLCAtLWZpbGUtaGVhZGVycyAgICAgICBEaXNwbGF5IHRoZSBjb250ZW50cyBvZiB0aGUgb3ZlcmFsbCBmaWxlIGhlYWRlclxuIgpAQCAtMTk4NCw2ICsyMTMxLDcgQEAKICIgIC1zLCAtLWZ1bGwtY29udGVudHMgICAgICBEaXNwbGF5IHRoZSBmdWxsIGNvbnRlbnRzIG9mIGFsbCBzZWN0aW9ucyAiCiAicmVxdWVzdGVkXG4iCiAiICAtZywgLS1kZWJ1Z2dpbmcgICAgICAgICAgRGlzcGxheSBkZWJ1ZyBpbmZvcm1hdGlvbiBpbiBvYmplY3QgZmlsZVxuIgorIiAgLWUsIC0tZGVidWdnaW5nLXRhZ3MgICAgIERpc3BsYXkgZGVidWcgaW5mb3JtYXRpb24gdXNpbmcgY3RhZ3Mgc3R5bGVcbiIKICIgIC1HLCAtLXN0YWJzICAgICAgICAgICAgICBEaXNwbGF5IChpbiByYXcgZm9ybSkgYW55IFNUQUJTIGluZm8gaW4gdGhlIGZpbGVcbiIKICIgIC10LCAtLXN5bXMgICAgICAgICAgICAgICBEaXNwbGF5IHRoZSBjb250ZW50cyBvZiB0aGUgc3ltYm9sIHRhYmxlKHMpXG4iCiAiICAtVCwgLS1keW5hbWljLXN5bXMgICAgICAgRGlzcGxheSB0aGUgY29udGVudHMgb2YgdGhlIGR5bmFtaWMgc3ltYm9sIHRhYmxlXG4iCkBAIC0xOTk1LDEzICsyMTQzLDE1IEBACiAiICAtSCwgLS1oZWxwICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGluZm9ybWF0aW9uXG4iCiBtc2dzdHIgIiIKIAotIzogb2JqZHVtcC5jOjIyMgorIzogb2JqZHVtcC5jOjE5NAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiIFRoZSBmb2xsb3dpbmcgc3dpdGNoZXMgYXJlIG9wdGlvbmFsOlxuIgogbXNnc3RyICIiCiAKLSM6IG9iamR1bXAuYzoyMjMKKyM6IG9iamR1bXAuYzoxOTUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLWIsIC0tdGFyZ2V0PUJGRE5BTUUgICAgICAgICAgIFNwZWNpZnkgdGhlIHRhcmdldCBvYmplY3QgZm9ybWF0IGFzICIKICJCRkROQU1FXG4iCkBAIC0yMDE0LDYgKzIxNjQsNyBAQAogImRpc2Fzc2VtYmxpbmdcbiIKICIgICAgICAtLWZpbGUtc3RhcnQtY29udGV4dCAgICAgICBJbmNsdWRlIGNvbnRleHQgZnJvbSBzdGFydCBvZiBmaWxlICh3aXRoIC0iCiAiUylcbiIKKyIgIC1JLCAtLWluY2x1ZGU9RElSICAgICAgICAgICAgICBBZGQgRElSIHRvIHNlYXJjaCBsaXN0IGZvciBzb3VyY2UgZmlsZXNcbiIKICIgIC1sLCAtLWxpbmUtbnVtYmVycyAgICAgICAgICAgICBJbmNsdWRlIGxpbmUgbnVtYmVycyBhbmQgZmlsZW5hbWVzIGluICIKICJvdXRwdXRcbiIKICIgIC1DLCAtLWRlbWFuZ2xlWz1TVFlMRV0gICAgICAgICBEZWNvZGUgbWFuZ2xlZC9wcm9jZXNzZWQgc3ltYm9sIG5hbWVzXG4iCkBAIC0yMDM1LDMyMiArMjE4NiwzNDYgQEAKICJcbiIKIG1zZ3N0ciAiIgogCi0jOiBvYmpkdW1wLmM6MzkxCisjOiBvYmpkdW1wLmM6MzY0CisjLCBjLWZvcm1hdAogbXNnaWQgIlNlY3Rpb25zOlxuIgogbXNnc3RyICIiCiAKLSM6IG9iamR1bXAuYzozOTQgb2JqZHVtcC5jOjM5OAorIzogb2JqZHVtcC5jOjM2NyBvYmpkdW1wLmM6MzcxCisjLCBjLWZvcm1hdAogbXNnaWQgIklkeCBOYW1lICAgICAgICAgIFNpemUgICAgICBWTUEgICAgICAgTE1BICAgICAgIEZpbGUgb2ZmICBBbGduIgogbXNnc3RyICIiCiAKLSM6IG9iamR1bXAuYzo0MDAKKyM6IG9iamR1bXAuYzozNzMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIklkeCBOYW1lICAgICAgICAgIFNpemUgICAgICBWTUEgICAgICAgICAgICAgICBMTUEgICAgICAgICAgICAgICBGaWxlIG9mZiAgIgogIkFsZ24iCiBtc2dzdHIgIiIKIAotIzogb2JqZHVtcC5jOjQwNAorIzogb2JqZHVtcC5jOjM3NworIywgYy1mb3JtYXQKIG1zZ2lkICIgIEZsYWdzIgogbXNnc3RyICIiCiAKLSM6IG9iamR1bXAuYzo0MDYKKyM6IG9iamR1bXAuYzozNzkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBQZyIKIG1zZ3N0ciAiIgogCi0jOiBvYmpkdW1wLmM6NDUxCisjOiBvYmpkdW1wLmM6NDIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBub3QgYSBkeW5hbWljIG9iamVjdCIKIG1zZ3N0ciAiIgogCi0jOiBvYmpkdW1wLmM6MTE0NAotbXNnaWQgIk91dCBvZiB2aXJ0dWFsIG1lbW9yeSIKLW1zZ3N0ciAiIgotCi0jOiBvYmpkdW1wLmM6MTU3NAotIywgYy1mb3JtYXQKLW1zZ2lkICJDYW4ndCB1c2Ugc3VwcGxpZWQgbWFjaGluZSAlcyIKLW1zZ3N0ciAiIgotCi0jOiBvYmpkdW1wLmM6MTU5MgotIywgYy1mb3JtYXQKLW1zZ2lkICJDYW4ndCBkaXNhc3NlbWJsZSBmb3IgYXJjaGl0ZWN0dXJlICVzXG4iCi1tc2dzdHIgIiIKLQotIzogb2JqZHVtcC5jOjE2ODIKKyM6IG9iamR1bXAuYzoxNjU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gJXM6XG4iCiBtc2dzdHIgIiIKIAotIzogb2JqZHVtcC5jOjE4NDcKKyM6IG9iamR1bXAuYzoxODA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbid0IHVzZSBzdXBwbGllZCBtYWNoaW5lICVzIgorbXNnc3RyICIiCisKKyM6IG9iamR1bXAuYzoxODI4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbid0IGRpc2Fzc2VtYmxlIGZvciBhcmNoaXRlY3R1cmUgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBvYmpkdW1wLmM6MTg5NgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiTm8gJXMgc2VjdGlvbiBwcmVzZW50XG4iCiAiXG4iCiBtc2dzdHIgIiIKIAotIzogb2JqZHVtcC5jOjE4NTQKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiJXMgaGFzIG5vICVzIHNlY3Rpb24iCi1tc2dzdHIgIiIKLQotIzogb2JqZHVtcC5jOjE4NjgKKyM6IG9iamR1bXAuYzoxOTA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlYWRpbmcgJXMgc2VjdGlvbiBvZiAlcyBmYWlsZWQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IG9iamR1bXAuYzoxODgwCi0jLCBjLWZvcm1hdAotbXNnaWQgIlJlYWRpbmcgJXMgc2VjdGlvbiBvZiAlcyBmYWlsZWQ6ICVzXG4iCi1tc2dzdHIgIiIKLQotIzogb2JqZHVtcC5jOjE5MjMKKyM6IG9iamR1bXAuYzoxOTQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDb250ZW50cyBvZiAlcyBzZWN0aW9uOlxuIgogIlxuIgogbXNnc3RyICIiCiAKLSM6IG9iamR1bXAuYzoyMDIxCisjOiBvYmpkdW1wLmM6MjA3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJhcmNoaXRlY3R1cmU6ICVzLCAiCiBtc2dzdHIgIiIKIAotIzogb2JqZHVtcC5jOjIwMjQKKyM6IG9iamR1bXAuYzoyMDc4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZsYWdzIDB4JTA4eDpcbiIKIG1zZ3N0ciAiIgogCi0jOiBvYmpkdW1wLmM6MjAzOAorIzogb2JqZHVtcC5jOjIwOTIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogInN0YXJ0IGFkZHJlc3MgMHgiCiBtc2dzdHIgIiIKIAotIzogb2JqZHVtcC5jOjIwNzEKKyM6IG9iamR1bXAuYzoyMTMyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbnRlbnRzIG9mIHNlY3Rpb24gJXM6XG4iCittc2dzdHIgIiIKKworIzogb2JqZHVtcC5jOjIyNTcKKyMsIGMtZm9ybWF0Cittc2dpZCAibm8gc3ltYm9sc1xuIgorbXNnc3RyICIiCisKKyM6IG9iamR1bXAuYzoyMjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIm5vIGluZm9ybWF0aW9uIGZvciB0aGUgJWxkJ3RoIHN5bWJvbCIKK21zZ3N0ciAiIgorCisjOiBvYmpkdW1wLmM6MjI2NworIywgYy1mb3JtYXQKK21zZ2lkICJjb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoZSAlbGQndGggc3ltYm9sIgorbXNnc3RyICIiCisKKyM6IG9iamR1bXAuYzoyNTMzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIlczogICAgIGZpbGUgZm9ybWF0ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogb2JqZHVtcC5jOjIxMTEKKyM6IG9iamR1bXAuYzoyNTc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBwcmludGluZyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmFpbGVkIgogbXNnc3RyICIiCiAKLSM6IG9iamR1bXAuYzoyMTkwCisjOiBvYmpkdW1wLmM6MjY1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJJbiBhcmNoaXZlICVzOlxuIgogbXNnc3RyICIiCiAKLSM6IG9iamR1bXAuYzoyMjQ5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIkNvbnRlbnRzIG9mIHNlY3Rpb24gJXM6XG4iCi1tc2dzdHIgIiIKLQotIzogb2JqZHVtcC5jOjIzNjkKLW1zZ2lkICJubyBzeW1ib2xzXG4iCi1tc2dzdHIgIiIKLQotIzogb2JqZHVtcC5jOjI3MTgKKyM6IG9iamR1bXAuYzoyNzc3CiBtc2dpZCAidW5yZWNvZ25pemVkIC1FIG9wdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBvYmpkdW1wLmM6MjcyOQorIzogb2JqZHVtcC5jOjI3ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIC0tZW5kaWFuIHR5cGUgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiByZGNvZmYuYzoyMDYKKyM6IHJkY29mZi5jOjE5NgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXJzZV9jb2ZmX3R5cGU6IEJhZCB0eXBlIGNvZGUgMHgleCIKIG1zZ3N0ciAiIgogCi0jOiByZGNvZmYuYzo0MjQgcmRjb2ZmLmM6NTMyIHJkY29mZi5jOjczMQorIzogcmRjb2ZmLmM6NDA0IHJkY29mZi5jOjUwOSByZGNvZmYuYzo2OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmZkX2NvZmZfZ2V0X3N5bWVudCBmYWlsZWQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IHJkY29mZi5jOjQ0MCByZGNvZmYuYzo3NTEKKyM6IHJkY29mZi5jOjQyMCByZGNvZmYuYzo3MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmZkX2NvZmZfZ2V0X2F1eGVudCBmYWlsZWQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IHJkY29mZi5jOjgxOAorIzogcmRjb2ZmLmM6Nzg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVsZDogLmJmIHdpdGhvdXQgcHJlY2VkaW5nIGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLSM6IHJkY29mZi5jOjg2OAorIzogcmRjb2ZmLmM6ODM0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVsZDogdW5leHBlY3RlZCAuZWZcbiIKIG1zZ3N0ciAiIgogCi0jOiByZGRiZy5jOjkxCisjOiByZGRiZy5jOjg1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBubyByZWNvZ25pemVkIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiByZGRiZy5jOjQxNQorIzogcmRkYmcuYzozOTQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiTGFzdCBzdGFicyBlbnRyaWVzIGJlZm9yZSBlcnJvcjpcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NDU1CisjOiByZWFkZWxmLmM6MjQ1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBFcnJvcjogIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo0NjYKKyM6IHJlYWRlbGYuYzoyNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IFdhcm5pbmc6ICIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NDg4CisjOiByZWFkZWxmLmM6MjcxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBzZWVrIHRvIDB4JXggZm9yICVzXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjQ5OQorIzogcmVhZGVsZi5jOjI4MwogIywgYy1mb3JtYXQKIG1zZ2lkICJPdXQgb2YgbWVtb3J5IGFsbG9jYXRpbmcgMHgleCBieXRlcyBmb3IgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTA3CisjOiByZWFkZWxmLmM6MjkxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byByZWFkIGluIDB4JXggYnl0ZXMgb2YgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTYwIHJlYWRlbGYuYzo2MTQgcmVhZGVsZi5jOjc5OCByZWFkZWxmLmM6ODMzCisjOiByZWFkZWxmLmM6MzQyIHJlYWRlbGYuYzozOTEgcmVhZGVsZi5jOjU2OSByZWFkZWxmLmM6NjAxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuaGFuZGxlZCBkYXRhIGxlbmd0aDogJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6OTI0CisjOiByZWFkZWxmLmM6NjkxCiBtc2dpZCAiRG9uJ3Qga25vdyBhYm91dCByZWxvY2F0aW9ucyBvbiB0aGlzIG1hY2hpbmUgYXJjaGl0ZWN0dXJlXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjk0NiByZWFkZWxmLmM6OTc1IHJlYWRlbGYuYzoxMDIxIHJlYWRlbGYuYzoxMDQ5CisjOiByZWFkZWxmLmM6NzExIHJlYWRlbGYuYzo3MzggcmVhZGVsZi5jOjc4MSByZWFkZWxmLmM6ODA4CiBtc2dpZCAicmVsb2NzIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo5NTcgcmVhZGVsZi5jOjk4NiByZWFkZWxmLmM6MTAzMSByZWFkZWxmLmM6MTA1OQorIzogcmVhZGVsZi5jOjcyMSByZWFkZWxmLmM6NzQ4IHJlYWRlbGYuYzo3OTEgcmVhZGVsZi5jOjgxOAogbXNnaWQgIm91dCBvZiBtZW1vcnkgcGFyc2luZyByZWxvY3MiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjExMTIKKyM6IHJlYWRlbGYuYzo4NzEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiBPZmZzZXQgICAgIEluZm8gICAgVHlwZSAgICAgICAgICAgICAgICBTeW0uIFZhbHVlICBTeW1ib2wncyBOYW1lICsgQWRkZW5kXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjExMTQKKyM6IHJlYWRlbGYuYzo4NzMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIE9mZnNldCAgICAgSW5mbyAgICBUeXBlICAgICAgICAgICAgU3ltLlZhbHVlICBTeW0uIE5hbWUgKyBBZGRlbmRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTExOQorIzogcmVhZGVsZi5jOjg3OAorIywgYy1mb3JtYXQKIG1zZ2lkICIgT2Zmc2V0ICAgICBJbmZvICAgIFR5cGUgICAgICAgICAgICAgICAgU3ltLiBWYWx1ZSAgU3ltYm9sJ3MgTmFtZVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMTIxCisjOiByZWFkZWxmLmM6ODgwCisjLCBjLWZvcm1hdAogbXNnaWQgIiBPZmZzZXQgICAgIEluZm8gICAgVHlwZSAgICAgICAgICAgIFN5bS5WYWx1ZSAgU3ltLiBOYW1lXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjExMjkKKyM6IHJlYWRlbGYuYzo4ODgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgICBPZmZzZXQgICAgICAgICAgICAgSW5mbyAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgU3ltYm9sJ3MgVmFsdWUgICIKICJTeW1ib2wncyBOYW1lICsgQWRkZW5kXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjExMzEKKyM6IHJlYWRlbGYuYzo4OTAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgT2Zmc2V0ICAgICAgICAgIEluZm8gICAgICAgICAgIFR5cGUgICAgICAgICAgIFN5bS4gVmFsdWUgICAgU3ltLiBOYW1lICsgIgogIkFkZGVuZFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMTM2CisjOiByZWFkZWxmLmM6ODk1CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgICAgT2Zmc2V0ICAgICAgICAgICAgIEluZm8gICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgIFN5bWJvbCdzIFZhbHVlICAiCiAiU3ltYm9sJ3MgTmFtZVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMTM4CisjOiByZWFkZWxmLmM6ODk3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIE9mZnNldCAgICAgICAgICBJbmZvICAgICAgICAgICBUeXBlICAgICAgICAgICBTeW0uIFZhbHVlICAgIFN5bS4gTmFtZVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxNDE0IHJlYWRlbGYuYzoxNDE2IHJlYWRlbGYuYzoxNDkyIHJlYWRlbGYuYzoxNDk0IHJlYWRlbGYuYzoxNTAzCi0jOiByZWFkZWxmLmM6MTUwNQorIzogcmVhZGVsZi5jOjExNzMgcmVhZGVsZi5jOjExNzUgcmVhZGVsZi5jOjEyNTUgcmVhZGVsZi5jOjEyNTcgcmVhZGVsZi5jOjEyNjYKKyM6IHJlYWRlbGYuYzoxMjY4CiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZDogJS03bHgiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjE0NjYKKyM6IHJlYWRlbGYuYzoxMjI5CiAjLCBjLWZvcm1hdAogbXNnaWQgIjxzdHJpbmcgdGFibGUgaW5kZXggJTNsZD4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjE3NDMKKyM6IHJlYWRlbGYuYzoxNTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgIlByb2Nlc3NvciBTcGVjaWZpYzogJWx4IgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxNzYyCisjOiByZWFkZWxmLmM6MTUxOQogIywgYy1mb3JtYXQKIG1zZ2lkICJPcGVyYXRpbmcgU3lzdGVtIHNwZWNpZmljOiAlbHgiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjE3NjUgcmVhZGVsZi5jOjI0MTcKKyM6IHJlYWRlbGYuYzoxNTIyIHJlYWRlbGYuYzoyMTk4CiAjLCBjLWZvcm1hdAogbXNnaWQgIjx1bmtub3duPjogJWx4IgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxNzc5CisjOiByZWFkZWxmLmM6MTUzNQogbXNnaWQgIk5PTkUgKE5vbmUpIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxNzgwCisjOiByZWFkZWxmLmM6MTUzNgogbXNnaWQgIlJFTCAoUmVsb2NhdGFibGUgZmlsZSkiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjE3ODEKKyM6IHJlYWRlbGYuYzoxNTM3CiBtc2dpZCAiRVhFQyAoRXhlY3V0YWJsZSBmaWxlKSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTc4MgorIzogcmVhZGVsZi5jOjE1MzgKIG1zZ2lkICJEWU4gKFNoYXJlZCBvYmplY3QgZmlsZSkiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjE3ODMKKyM6IHJlYWRlbGYuYzoxNTM5CiBtc2dpZCAiQ09SRSAoQ29yZSBmaWxlKSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTc4NworIzogcmVhZGVsZi5jOjE1NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiUHJvY2Vzc29yIFNwZWNpZmljOiAoJXgpIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxNzg5CisjOiByZWFkZWxmLmM6MTU0NQogIywgYy1mb3JtYXQKIG1zZ2lkICJPUyBTcGVjaWZpYzogKCV4KSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTc5MSByZWFkZWxmLmM6MTg5OCByZWFkZWxmLmM6MjU3NAorIzogcmVhZGVsZi5jOjE1NDcgcmVhZGVsZi5jOjE2NTMgcmVhZGVsZi5jOjIzNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiPHVua25vd24+OiAleCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTgwNAorIzogcmVhZGVsZi5jOjE1NTkKIG1zZ2lkICJOb25lIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoyNjE2CisjOiByZWFkZWxmLmM6MjA1OAorbXNnaWQgIlN0YW5kYWxvbmUgQXBwIgorbXNnc3RyICIiCisKKyM6IHJlYWRlbGYuYzoyMDYxIHJlYWRlbGYuYzoyNzQyIHJlYWRlbGYuYzoyNzU4CisjLCBjLWZvcm1hdAorbXNnaWQgIjx1bmtub3duOiAleD4iCittc2dzdHIgIiIKKworIzogcmVhZGVsZi5jOjIzOTMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiVXNhZ2U6IHJlYWRlbGYgPG9wdGlvbihzKT4gZWxmLWZpbGUocylcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MjYxNworIzogcmVhZGVsZi5jOjIzOTQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIERpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnRlbnRzIG9mIEVMRiBmb3JtYXQgZmlsZXNcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MjYxOAorIzogcmVhZGVsZi5jOjIzOTUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiBPcHRpb25zIGFyZTpcbiIKICIgIC1hIC0tYWxsICAgICAgICAgICAgICAgRXF1aXZhbGVudCB0bzogLWggLWwgLVMgLXMgLXIgLWQgLVYgLUEgLUlcbiIKQEAgLTIzNzgsMTMgKzI1NTMsMTUgQEAKICIgICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheSB0aGUgY29udGVudHMgb2YgRFdBUkYyIGRlYnVnIHNlY3Rpb25zXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjI2NDAKKyM6IHJlYWRlbGYuYzoyNDE3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC1pIC0taW5zdHJ1Y3Rpb24tZHVtcD08bnVtYmVyPlxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICBEaXNhc3NlbWJsZSB0aGUgY29udGVudHMgb2Ygc2VjdGlvbiA8bnVtYmVyPlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoyNjQ0CisjOiByZWFkZWxmLmM6MjQyMQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtSSAtLWhpc3RvZ3JhbSAgICAgICAgIERpc3BsYXkgaGlzdG9ncmFtIG9mIGJ1Y2tldCBsaXN0IGxlbmd0aHNcbiIKICIgIC1XIC0td2lkZSAgICAgICAgICAgICAgQWxsb3cgb3V0cHV0IHdpZHRoIHRvIGV4Y2VlZCA4MCBjaGFyYWN0ZXJzXG4iCkBAIC0yMzkyLDMyMSArMjU2OSwzMzUgQEAKICIgIC12IC0tdmVyc2lvbiAgICAgICAgICAgRGlzcGxheSB0aGUgdmVyc2lvbiBudW1iZXIgb2YgcmVhZGVsZlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoyNjY2IHJlYWRlbGYuYzoxMDc2NQorIzogcmVhZGVsZi5jOjI0NDEgcmVhZGVsZi5jOjEwNjE3CiBtc2dpZCAiT3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIGR1bXAgcmVxdWVzdCB0YWJsZS4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjI4MzAgcmVhZGVsZi5jOjI5MDYKKyM6IHJlYWRlbGYuYzoyNjAzIHJlYWRlbGYuYzoyNjc5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucmVjb2duaXplZCBkZWJ1ZyBvcHRpb24gJyVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoyOTQwCisjOiByZWFkZWxmLmM6MjcxMwogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIG9wdGlvbiAnLSVjJ1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoyOTUzCisjOiByZWFkZWxmLmM6MjcyNgogbXNnaWQgIk5vdGhpbmcgdG8gZG8uXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjI5NjYgcmVhZGVsZi5jOjI5ODMgcmVhZGVsZi5jOjUzNjYKKyM6IHJlYWRlbGYuYzoyNzM4IHJlYWRlbGYuYzoyNzU0IHJlYWRlbGYuYzo1MDYxCiBtc2dpZCAibm9uZSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Mjk3MCByZWFkZWxmLmM6Mjk4NyByZWFkZWxmLmM6MzAxOAotIywgYy1mb3JtYXQKLW1zZ2lkICI8dW5rbm93bjogJXg+IgotbXNnc3RyICIiCi0KLSM6IHJlYWRlbGYuYzoyOTg0CisjOiByZWFkZWxmLmM6Mjc1NQogbXNnaWQgIjIncyBjb21wbGVtZW50LCBsaXR0bGUgZW5kaWFuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoyOTg1CisjOiByZWFkZWxmLmM6Mjc1NgogbXNnaWQgIjIncyBjb21wbGVtZW50LCBiaWcgZW5kaWFuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMDE1Ci1tc2dpZCAiU3RhbmRhbG9uZSBBcHAiCi1tc2dzdHIgIiIKLQotIzogcmVhZGVsZi5jOjMwMzQKKyM6IHJlYWRlbGYuYzoyNzc0CiBtc2dpZCAiTm90IGFuIEVMRiBmaWxlIC0gaXQgaGFzIHRoZSB3cm9uZyBtYWdpYyBieXRlcyBhdCB0aGUgc3RhcnRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzA0MgorIzogcmVhZGVsZi5jOjI3ODIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiRUxGIEhlYWRlcjpcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzA0MworIzogcmVhZGVsZi5jOjI3ODMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBNYWdpYzogICAiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjMwNDcKKyM6IHJlYWRlbGYuYzoyNzg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgQ2xhc3M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMDQ5CisjOiByZWFkZWxmLmM6Mjc4OQogIywgYy1mb3JtYXQKIG1zZ2lkICIgIERhdGE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzA1MQorIzogcmVhZGVsZi5jOjI3OTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBWZXJzaW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICVkICVzXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjMwNTgKKyM6IHJlYWRlbGYuYzoyNzk4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgT1MvQUJJOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMDYwCisjOiByZWFkZWxmLmM6MjgwMAogIywgYy1mb3JtYXQKIG1zZ2lkICIgIEFCSSBWZXJzaW9uOiAgICAgICAgICAgICAgICAgICAgICAgJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzA2MgorIzogcmVhZGVsZi5jOjI4MDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVzXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjMwNjQKKyM6IHJlYWRlbGYuYzoyODA0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgTWFjaGluZTogICAgICAgICAgICAgICAgICAgICAgICAgICAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMDY2CisjOiByZWFkZWxmLmM6MjgwNgogIywgYy1mb3JtYXQKIG1zZ2lkICIgIFZlcnNpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHglbHhcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzA2OQorIzogcmVhZGVsZi5jOjI4MDkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBFbnRyeSBwb2ludCBhZGRyZXNzOiAgICAgICAgICAgICAgICIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzA3MQorIzogcmVhZGVsZi5jOjI4MTEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiAgU3RhcnQgb2YgcHJvZ3JhbSBoZWFkZXJzOiAgICAgICAgICAiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjMwNzMKKyM6IHJlYWRlbGYuYzoyODEzCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgKGJ5dGVzIGludG8gZmlsZSlcbiIKICIgIFN0YXJ0IG9mIHNlY3Rpb24gaGVhZGVyczogICAgICAgICAgIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMDc1CisjOiByZWFkZWxmLmM6MjgxNQorIywgYy1mb3JtYXQKIG1zZ2lkICIgKGJ5dGVzIGludG8gZmlsZSlcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzA3NworIzogcmVhZGVsZi5jOjI4MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBGbGFnczogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4JWx4JXNcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzA4MAorIzogcmVhZGVsZi5jOjI4MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBTaXplIG9mIHRoaXMgaGVhZGVyOiAgICAgICAgICAgICAgICVsZCAoYnl0ZXMpXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjMwODIKKyM6IHJlYWRlbGYuYzoyODIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgU2l6ZSBvZiBwcm9ncmFtIGhlYWRlcnM6ICAgICAgICAgICAlbGQgKGJ5dGVzKVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMDg0CisjOiByZWFkZWxmLmM6MjgyNAogIywgYy1mb3JtYXQKIG1zZ2lkICIgIE51bWJlciBvZiBwcm9ncmFtIGhlYWRlcnM6ICAgICAgICAgJWxkXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjMwODYKKyM6IHJlYWRlbGYuYzoyODI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgU2l6ZSBvZiBzZWN0aW9uIGhlYWRlcnM6ICAgICAgICAgICAlbGQgKGJ5dGVzKVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMDg4CisjOiByZWFkZWxmLmM6MjgyOAogIywgYy1mb3JtYXQKIG1zZ2lkICIgIE51bWJlciBvZiBzZWN0aW9uIGhlYWRlcnM6ICAgICAgICAgJWxkIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMDkzCisjOiByZWFkZWxmLmM6MjgzMwogIywgYy1mb3JtYXQKIG1zZ2lkICIgIFNlY3Rpb24gaGVhZGVyIHN0cmluZyB0YWJsZSBpbmRleDogJWxkIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMTI3IHJlYWRlbGYuYzozMTYzCisjOiByZWFkZWxmLmM6Mjg2NCByZWFkZWxmLmM6Mjg5NwogbXNnaWQgInByb2dyYW0gaGVhZGVycyIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzIwMyByZWFkZWxmLmM6MzQ4MCByZWFkZWxmLmM6MzUyNiByZWFkZWxmLmM6MzU4OSByZWFkZWxmLmM6MzY1NgotIzogcmVhZGVsZi5jOjQ3MTUgcmVhZGVsZi5jOjQ3NTggcmVhZGVsZi5jOjQ5NDggcmVhZGVsZi5jOjU5MTcgcmVhZGVsZi5jOjU5MzEKLSM6IHJlYWRlbGYuYzoxMDQxMQorIzogcmVhZGVsZi5jOjI5MzUgcmVhZGVsZi5jOjMyMDQgcmVhZGVsZi5jOjMyNDUgcmVhZGVsZi5jOjMzMDQgcmVhZGVsZi5jOjMzNjcKKyM6IHJlYWRlbGYuYzo0NDA0IHJlYWRlbGYuYzo0NDQ1IHJlYWRlbGYuYzo0NjQ0IHJlYWRlbGYuYzo1NjA0IHJlYWRlbGYuYzo1NjE4CisjOiByZWFkZWxmLmM6MTAwNjUgcmVhZGVsZi5jOjEwNDA1IHJlYWRlbGYuYzoxMDQ3MgogbXNnaWQgIk91dCBvZiBtZW1vcnlcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzIzMQorIzogcmVhZGVsZi5jOjI5NjIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlRoZXJlIGFyZSBubyBwcm9ncmFtIGhlYWRlcnMgaW4gdGhpcyBmaWxlLlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMjM3CisjOiByZWFkZWxmLmM6Mjk2OAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiRWxmIGZpbGUgdHlwZSBpcyAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMjM4CisjOiByZWFkZWxmLmM6Mjk2OQorIywgYy1mb3JtYXQKIG1zZ2lkICJFbnRyeSBwb2ludCAiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjMyNDAKKyM6IHJlYWRlbGYuYzoyOTcxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJUaGVyZSBhcmUgJWQgcHJvZ3JhbSBoZWFkZXJzLCBzdGFydGluZyBhdCBvZmZzZXQgIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMjUyIHJlYWRlbGYuYzozMjU0CisjOiByZWFkZWxmLmM6Mjk4MyByZWFkZWxmLmM6Mjk4NQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiUHJvZ3JhbSBIZWFkZXJzOlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMjU4CisjOiByZWFkZWxmLmM6Mjk4OQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRkciAgIFBoeXNBZGRyICAgRmlsZVNpeiBNZW1TaXogIEZsZyBBbGlnblxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozMjYxCisjOiByZWFkZWxmLmM6Mjk5MgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRkciAgICAgICAgICAgUGh5c0FkZHIgICAgICAgICAgIEZpbGVTaXogICIKICJNZW1TaXogICBGbGcgQWxpZ25cbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzI2NQorIzogcmVhZGVsZi5jOjI5OTYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBUeXBlICAgICAgICAgICBPZmZzZXQgICAgICAgICAgICAgVmlydEFkZHIgICAgICAgICAgIFBoeXNBZGRyXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjMyNjcKKyM6IHJlYWRlbGYuYzoyOTk4CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgICAgICAgICAgICAgICAgRmlsZVNpeiAgICAgICAgICAgIE1lbVNpeiAgICAgICAgICAgICAgRmxhZ3MgIEFsaWduXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjMzNjAKKyM6IHJlYWRlbGYuYzozMDkxCiBtc2dpZCAibW9yZSB0aGFuIG9uZSBkeW5hbWljIHNlZ21lbnRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzM2OAorIzogcmVhZGVsZi5jOjMxMDAKIG1zZ2lkICJVbmFibGUgdG8gZmluZCBwcm9ncmFtIGludGVycHJldGVyIG5hbWVcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzM3NQorIzogcmVhZGVsZi5jOjMxMDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiAgICAgIFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6ICVzXSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzM4NworIzogcmVhZGVsZi5jOjMxMTkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiBTZWN0aW9uIHRvIFNlZ21lbnQgbWFwcGluZzpcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzM4OAorIzogcmVhZGVsZi5jOjMxMjAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBTZWdtZW50IFNlY3Rpb25zLi4uXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjM0MzcKKyM6IHJlYWRlbGYuYzozMTY2CiBtc2dpZCAiQ2Fubm90IGludGVycHJldCB2aXJ0dWFsIGFkZHJlc3NlcyB3aXRob3V0IHByb2dyYW0gaGVhZGVycy5cbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MzQ1MworIzogcmVhZGVsZi5jOjMxODIKICMsIGMtZm9ybWF0CiBtc2dpZCAiVmlydHVhbCBhZGRyZXNzIDB4JWx4IG5vdCBsb2NhdGVkIGluIGFueSBQVF9MT0FEIHNlZ21lbnQuXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjM0NzEgcmVhZGVsZi5jOjM1MTcKKyM6IHJlYWRlbGYuYzozMTk2IHJlYWRlbGYuYzozMjM3CiBtc2dpZCAic2VjdGlvbiBoZWFkZXJzIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozNTY1IHJlYWRlbGYuYzozNjMyCisjOiByZWFkZWxmLmM6MzI4MSByZWFkZWxmLmM6MzM0NAogbXNnaWQgInN5bWJvbHMiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjM1NzYgcmVhZGVsZi5jOjM2NDMKKyM6IHJlYWRlbGYuYzozMjkxIHJlYWRlbGYuYzozMzU0CiBtc2dpZCAic3ltdGFiIHNobmR4IgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozNzQ1CisjOiByZWFkZWxmLmM6MzQ1NAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiVGhlcmUgYXJlIG5vIHNlY3Rpb25zIGluIHRoaXMgZmlsZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Mzc1MQorIzogcmVhZGVsZi5jOjM0NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiVGhlcmUgYXJlICVkIHNlY3Rpb24gaGVhZGVycywgc3RhcnRpbmcgYXQgb2Zmc2V0IDB4JWx4OlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozNzY4IHJlYWRlbGYuYzo0MDk4IHJlYWRlbGYuYzo0NDMzIHJlYWRlbGYuYzo2MDcwCisjOiByZWFkZWxmLmM6MzQ3NyByZWFkZWxmLmM6MzgwNCByZWFkZWxmLmM6NDEyNyByZWFkZWxmLmM6NTc1NwogbXNnaWQgInN0cmluZyB0YWJsZSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Mzc5MworIzogcmVhZGVsZi5jOjM1MDIKIG1zZ2lkICJGaWxlIGNvbnRhaW5zIG11bHRpcGxlIGR5bmFtaWMgc3ltYm9sIHRhYmxlc1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozODA1CisjOiByZWFkZWxmLmM6MzUxNAogbXNnaWQgIkZpbGUgY29udGFpbnMgbXVsdGlwbGUgZHluYW1pYyBzdHJpbmcgdGFibGVzXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjM4MTEKKyM6IHJlYWRlbGYuYzozNTE5CiBtc2dpZCAiZHluYW1pYyBzdHJpbmdzIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozODE3CisjOiByZWFkZWxmLmM6MzUyNQogbXNnaWQgIkZpbGUgY29udGFpbnMgbXVsdGlwbGUgc3ltdGFiIHNobmR4IHRhYmxlc1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozODU1CisjOiByZWFkZWxmLmM6MzU2MworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiU2VjdGlvbiBIZWFkZXJzOlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozODU3CisjOiByZWFkZWxmLmM6MzU2NQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiU2VjdGlvbiBIZWFkZXI6XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjM4NjEKKyM6IHJlYWRlbGYuYzozNTY5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIFtOcl0gTmFtZSAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgIEFkZHIgICAgIE9mZiAgICBTaXplICAgRVMgRmxnIExrICIKICJJbmYgQWxcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Mzg2NAorIzogcmVhZGVsZi5jOjM1NzIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgW05yXSBOYW1lICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgQWRkcmVzcyAgICAgICAgICBPZmYgICAgU2l6ZSAgIEVTICIKICJGbGcgTGsgSW5mIEFsXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjM4NjcKKyM6IHJlYWRlbGYuYzozNTc1CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgW05yXSBOYW1lICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgIEFkZHJlc3MgICAgICAgICAgIE9mZnNldFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzozODY4CisjOiByZWFkZWxmLmM6MzU3NgorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAgICAgU2l6ZSAgICAgICAgICAgICAgRW50U2l6ZSAgICAgICAgICBGbGFncyAgTGluayAgSW5mbyAgQWxpZ25cbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Mzk2MworIzogcmVhZGVsZi5jOjM2NzEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIktleSB0byBGbGFnczpcbiIKICIgIFcgKHdyaXRlKSwgQSAoYWxsb2MpLCBYIChleGVjdXRlKSwgTSAobWVyZ2UpLCBTIChzdHJpbmdzKVxuIgpAQCAtMjcxNCw1MDAgKzI5MDUsNTQzIEBACiAiICBPIChleHRyYSBPUyBwcm9jZXNzaW5nIHJlcXVpcmVkKSBvIChPUyBzcGVjaWZpYyksIHAgKHByb2Nlc3NvciBzcGVjaWZpYylcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NDAzMQorIzogcmVhZGVsZi5jOjM3MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiclcycgcmVsb2NhdGlvbiBzZWN0aW9uIGF0IG9mZnNldCAweCVseCBjb250YWlucyAlbGQgYnl0ZXM6XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjQwNDMKKyM6IHJlYWRlbGYuYzozNzUwCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJUaGVyZSBhcmUgbm8gZHluYW1pYyByZWxvY2F0aW9ucyBpbiB0aGlzIGZpbGUuXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjQwNzAKKyM6IHJlYWRlbGYuYzozNzc3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJSZWxvY2F0aW9uIHNlY3Rpb24gIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo0MDc1IHJlYWRlbGYuYzo0NDk2IHJlYWRlbGYuYzo0NTEwCisjOiByZWFkZWxmLmM6Mzc4MiByZWFkZWxmLmM6NDE5MCByZWFkZWxmLmM6NDIwNAogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo0MDc3IHJlYWRlbGYuYzo0NTEyCisjOiByZWFkZWxmLmM6Mzc4NCByZWFkZWxmLmM6NDIwNgogIywgYy1mb3JtYXQKIG1zZ2lkICIgYXQgb2Zmc2V0IDB4JWx4IGNvbnRhaW5zICVsdSBlbnRyaWVzOlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo0MTE1CisjOiByZWFkZWxmLmM6MzgyMQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiVGhlcmUgYXJlIG5vIHJlbG9jYXRpb25zIGluIHRoaXMgZmlsZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NDI5OQorIzogcmVhZGVsZi5jOjM5OTQKIG1zZ2lkICJ1bndpbmQgdGFibGUiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjQzNTAgcmVhZGVsZi5jOjQzNjIgcmVhZGVsZi5jOjg0OTkgcmVhZGVsZi5jOjg1MTEKKyM6IHJlYWRlbGYuYzo0MDQ1IHJlYWRlbGYuYzo0MDU3IHJlYWRlbGYuYzo4Mjg0IHJlYWRlbGYuYzo4Mjk2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlNraXBwaW5nIHVuZXhwZWN0ZWQgc3ltYm9sIHR5cGUgJXVcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NDM3MAorIzogcmVhZGVsZi5jOjQwNjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiU2tpcHBpbmcgdW5leHBlY3RlZCByZWxvY2F0aW9uIHR5cGUgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NDQxNSByZWFkZWxmLmM6NDQ0MAorIzogcmVhZGVsZi5jOjQxMDkgcmVhZGVsZi5jOjQxMzQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlRoZXJlIGFyZSBubyB1bndpbmQgc2VjdGlvbnMgaW4gdGhpcyBmaWxlLlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo0NDkxCisjOiByZWFkZWxmLmM6NDE4NQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiQ291bGQgbm90IGZpbmQgdW53aW5kIGluZm8gc2VjdGlvbiBmb3IgIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo0NTAzCisjOiByZWFkZWxmLmM6NDE5NwogbXNnaWQgInVud2luZCBpbmZvIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo0NTA1CisjOiByZWFkZWxmLmM6NDE5OQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiVW53aW5kIHNlY3Rpb24gIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo0Njk5IHJlYWRlbGYuYzo0NzQyCisjOiByZWFkZWxmLmM6NDM4OSByZWFkZWxmLmM6NDQzMAogbXNnaWQgImR5bmFtaWMgc2VnbWVudCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NDgyMAorIzogcmVhZGVsZi5jOjQ1MDUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlRoZXJlIGlzIG5vIGR5bmFtaWMgc2VnbWVudCBpbiB0aGlzIGZpbGUuXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjQ4NTQKKyM6IHJlYWRlbGYuYzo0NTQzCiBtc2dpZCAiVW5hYmxlIHRvIHNlZWsgdG8gZW5kIG9mIGZpbGUhIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo0ODY1CisjOiByZWFkZWxmLmM6NDU1NgogbXNnaWQgIlVuYWJsZSB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBzeW1ib2xzIHRvIGxvYWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NDg5NQorIzogcmVhZGVsZi5jOjQ1OTEKIG1zZ2lkICJVbmFibGUgdG8gc2VlayB0byBlbmQgb2YgZmlsZVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo0OTAxCisjOiByZWFkZWxmLmM6NDU5OAogbXNnaWQgIlVuYWJsZSB0byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgZHluYW1pYyBzdHJpbmcgdGFibGVcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NDkwNgorIzogcmVhZGVsZi5jOjQ2MDMKIG1zZ2lkICJkeW5hbWljIHN0cmluZyB0YWJsZSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NDk0MQorIzogcmVhZGVsZi5jOjQ2MzcKIG1zZ2lkICJzeW1ib2wgaW5mb3JtYXRpb24iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjQ5NjUKKyM6IHJlYWRlbGYuYzo0NjYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJEeW5hbWljIHNlZ21lbnQgYXQgb2Zmc2V0IDB4JWx4IGNvbnRhaW5zICVsZCBlbnRyaWVzOlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo0OTY4CisjOiByZWFkZWxmLmM6NDY2NAorIywgYy1mb3JtYXQKIG1zZ2lkICIgIFRhZyAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lL1ZhbHVlXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjUwMDQKKyM6IHJlYWRlbGYuYzo0NzAwCisjLCBjLWZvcm1hdAogbXNnaWQgIkF1eGlsaWFyeSBsaWJyYXJ5IgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1MDA4CisjOiByZWFkZWxmLmM6NDcwNAorIywgYy1mb3JtYXQKIG1zZ2lkICJGaWx0ZXIgbGlicmFyeSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTAxMgorIzogcmVhZGVsZi5jOjQ3MDgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiQ29uZmlndXJhdGlvbiBmaWxlIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1MDE2CisjOiByZWFkZWxmLmM6NDcxMgorIywgYy1mb3JtYXQKIG1zZ2lkICJEZXBlbmRlbmN5IGF1ZGl0IGxpYnJhcnkiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjUwMjAKKyM6IHJlYWRlbGYuYzo0NzE2CisjLCBjLWZvcm1hdAogbXNnaWQgIkF1ZGl0IGxpYnJhcnkiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjUwMzggcmVhZGVsZi5jOjUwNjYgcmVhZGVsZi5jOjUwOTQKKyM6IHJlYWRlbGYuYzo0NzM0IHJlYWRlbGYuYzo0NzYyIHJlYWRlbGYuYzo0NzkwCisjLCBjLWZvcm1hdAogbXNnaWQgIkZsYWdzOiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTA0MSByZWFkZWxmLmM6NTA2OSByZWFkZWxmLmM6NTA5NgorIzogcmVhZGVsZi5jOjQ3MzcgcmVhZGVsZi5jOjQ3NjUgcmVhZGVsZi5jOjQ3OTIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIE5vbmVcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTIxNworIzogcmVhZGVsZi5jOjQ5MTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiU2hhcmVkIGxpYnJhcnk6IFslc10iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjUyMjAKKyM6IHJlYWRlbGYuYzo0OTE2CisjLCBjLWZvcm1hdAogbXNnaWQgIiBwcm9ncmFtIGludGVycHJldGVyIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1MjI0CisjOiByZWFkZWxmLmM6NDkyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJMaWJyYXJ5IHNvbmFtZTogWyVzXSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTIyOAorIzogcmVhZGVsZi5jOjQ5MjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiTGlicmFyeSBycGF0aDogWyVzXSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTIzMgorIzogcmVhZGVsZi5jOjQ5MjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiTGlicmFyeSBydW5wYXRoOiBbJXNdIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1Mjk2CisjOiByZWFkZWxmLmM6NDk5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgbmVlZGVkIG9iamVjdDogWyVzXVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NDEyCisjOiByZWFkZWxmLmM6NTEwNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiVmVyc2lvbiBkZWZpbml0aW9uIHNlY3Rpb24gJyVzJyBjb250YWlucyAlbGQgZW50cmllczpcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTQxNQorIzogcmVhZGVsZi5jOjUxMDkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBBZGRyOiAweCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTQxNyByZWFkZWxmLmM6NTYxMgorIzogcmVhZGVsZi5jOjUxMTEgcmVhZGVsZi5jOjUzMDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBPZmZzZXQ6ICUjMDhseCAgTGluazogJWx4ICglcylcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTQyNAorIzogcmVhZGVsZi5jOjUxMTYKIG1zZ2lkICJ2ZXJzaW9uIGRlZmluaXRpb24gc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTQ1MAorIzogcmVhZGVsZi5jOjUxNDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAlIzA2eDogUmV2OiAlZCAgRmxhZ3M6ICVzIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NDUzCisjOiByZWFkZWxmLmM6NTE0NQogIywgYy1mb3JtYXQKIG1zZ2lkICIgIEluZGV4OiAlZCAgQ250OiAlZCAgIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NDY0CisjOiByZWFkZWxmLmM6NTE1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJOYW1lOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NDY2CisjOiByZWFkZWxmLmM6NTE1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJOYW1lIGluZGV4OiAlbGRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTQ4MQorIzogcmVhZGVsZi5jOjUxNzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAlIzA2eDogUGFyZW50ICVkOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NDg0CisjOiByZWFkZWxmLmM6NTE3NgogIywgYy1mb3JtYXQKIG1zZ2lkICIgICUjMDZ4OiBQYXJlbnQgJWQsIG5hbWUgaW5kZXg6ICVsZFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NTAzCisjOiByZWFkZWxmLmM6NTE5NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiVmVyc2lvbiBuZWVkcyBzZWN0aW9uICclcycgY29udGFpbnMgJWxkIGVudHJpZXM6XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjU1MDYKKyM6IHJlYWRlbGYuYzo1MTk4CisjLCBjLWZvcm1hdAogbXNnaWQgIiBBZGRyOiAweCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTUwOAorIzogcmVhZGVsZi5jOjUyMDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBPZmZzZXQ6ICUjMDhseCAgTGluayB0byBzZWN0aW9uOiAlbGQgKCVzKVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NTE0CisjOiByZWFkZWxmLmM6NTIwNQogbXNnaWQgInZlcnNpb24gbmVlZCBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NTM2CisjOiByZWFkZWxmLmM6NTIyNwogIywgYy1mb3JtYXQKIG1zZ2lkICIgICUjMDZ4OiBWZXJzaW9uOiAlZCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTUzOQorIzogcmVhZGVsZi5jOjUyMzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBGaWxlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTU0MQorIzogcmVhZGVsZi5jOjUyMzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBGaWxlOiAlbHgiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjU1NDMKKyM6IHJlYWRlbGYuYzo1MjM0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgQ250OiAlZFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NTYxCisjOiByZWFkZWxmLmM6NTI1MgogIywgYy1mb3JtYXQKLW1zZ2lkICIgICUjMDZ4OiBOYW1lOiAlcyIKK21zZ2lkICIgICUjMDZ4OiAgIE5hbWU6ICVzIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NTY0CisjOiByZWFkZWxmLmM6NTI1NQogIywgYy1mb3JtYXQKLW1zZ2lkICIgICUjMDZ4OiBOYW1lIGluZGV4OiAlbHgiCittc2dpZCAiICAlIzA2eDogICBOYW1lIGluZGV4OiAlbHgiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjU1NjcKKyM6IHJlYWRlbGYuYzo1MjU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgRmxhZ3M6ICVzICBWZXJzaW9uOiAlZFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NjAzCisjOiByZWFkZWxmLmM6NTI5NAogbXNnaWQgInZlcnNpb24gc3RyaW5nIHRhYmxlIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NjA3CisjOiByZWFkZWxmLmM6NTI5OAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiVmVyc2lvbiBzeW1ib2xzIHNlY3Rpb24gJyVzJyBjb250YWlucyAlZCBlbnRyaWVzOlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NjEwCisjOiByZWFkZWxmLmM6NTMwMQorIywgYy1mb3JtYXQKIG1zZ2lkICIgQWRkcjogIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NjIyCisjOiByZWFkZWxmLmM6NTMxMQogbXNnaWQgInZlcnNpb24gc3ltYm9sIGRhdGEiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjU2NDkKKyM6IHJlYWRlbGYuYzo1MzM4CiBtc2dpZCAiICAgMCAoKmxvY2FsKikgICAgIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NjUzCisjOiByZWFkZWxmLmM6NTM0MgogbXNnaWQgIiAgIDEgKCpnbG9iYWwqKSAgICIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTY4OSByZWFkZWxmLmM6NjEyOQorIzogcmVhZGVsZi5jOjUzNzggcmVhZGVsZi5jOjU4MTYKIG1zZ2lkICJ2ZXJzaW9uIG5lZWQiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjU2OTkKKyM6IHJlYWRlbGYuYzo1Mzg4CiBtc2dpZCAidmVyc2lvbiBuZWVkIGF1eCAoMikiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjU3NDEgcmVhZGVsZi5jOjYxOTIKKyM6IHJlYWRlbGYuYzo1NDMwIHJlYWRlbGYuYzo1ODc5CiBtc2dpZCAidmVyc2lvbiBkZWYiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjU3NjAgcmVhZGVsZi5jOjYyMDcKKyM6IHJlYWRlbGYuYzo1NDQ5IHJlYWRlbGYuYzo1ODk0CiBtc2dpZCAidmVyc2lvbiBkZWYgYXV4IgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1NzkxCisjOiByZWFkZWxmLmM6NTQ4MAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiTm8gdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3VuZCBpbiB0aGlzIGZpbGUuXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjU5MjMKKyM6IHJlYWRlbGYuYzo1NjEwCiBtc2dpZCAiVW5hYmxlIHRvIHJlYWQgaW4gZHluYW1pYyBkYXRhXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjU5NjcKKyM6IHJlYWRlbGYuYzo1NjU1CiBtc2dpZCAiVW5hYmxlIHRvIHNlZWsgdG8gc3RhcnQgb2YgZHluYW1pYyBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTk3MworIzogcmVhZGVsZi5jOjU2NjEKIG1zZ2lkICJGYWlsZWQgdG8gcmVhZCBpbiBudW1iZXIgb2YgYnVja2V0c1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo1OTc5CisjOiByZWFkZWxmLmM6NTY2NwogbXNnaWQgIkZhaWxlZCB0byByZWFkIGluIG51bWJlciBvZiBjaGFpbnNcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NTk5OQorIzogcmVhZGVsZi5jOjU2ODcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlN5bWJvbCB0YWJsZSBmb3IgaW1hZ2U6XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjYwMDEKKyM6IHJlYWRlbGYuYzo1Njg5CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgTnVtIEJ1YzogICAgVmFsdWUgIFNpemUgICBUeXBlICAgQmluZCBWaXMgICAgICBOZHggTmFtZVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2MDAzCisjOiByZWFkZWxmLmM6NTY5MQorIywgYy1mb3JtYXQKIG1zZ2lkICIgIE51bSBCdWM6ICAgIFZhbHVlICAgICAgICAgIFNpemUgICBUeXBlICAgQmluZCBWaXMgICAgICBOZHggTmFtZVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2MDQ4CisjOiByZWFkZWxmLmM6NTczNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiU3ltYm9sIHRhYmxlICclcycgY29udGFpbnMgJWx1IGVudHJpZXM6XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjYwNTIKKyM6IHJlYWRlbGYuYzo1NzQwCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgIE51bTogICAgVmFsdWUgIFNpemUgVHlwZSAgICBCaW5kICAgVmlzICAgICAgTmR4IE5hbWVcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjA1NAorIzogcmVhZGVsZi5jOjU3NDIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgTnVtOiAgICBWYWx1ZSAgICAgICAgICBTaXplIFR5cGUgICAgQmluZCAgIFZpcyAgICAgIE5keCBOYW1lXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjYxMDEKKyM6IHJlYWRlbGYuYzo1Nzg4CiBtc2dpZCAidmVyc2lvbiBkYXRhIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2MTQyCisjOiByZWFkZWxmLmM6NTgyOQogbXNnaWQgInZlcnNpb24gbmVlZCBhdXggKDMpIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2MTY3CisjOiByZWFkZWxmLmM6NTg1NAogbXNnaWQgImJhZCBkeW5hbWljIHN5bWJvbCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjIzMAorIzogcmVhZGVsZi5jOjU5MTcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIkR5bmFtaWMgc3ltYm9sIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgZm9yIGRpc3BsYXlpbmcgc3ltYm9scy5cbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjI0MgorIzogcmVhZGVsZi5jOjU5MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIkhpc3RvZ3JhbSBmb3IgYnVja2V0IGxpc3QgbGVuZ3RoICh0b3RhbCBvZiAlZCBidWNrZXRzKTpcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjI0NAorIzogcmVhZGVsZi5jOjU5MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIExlbmd0aCAgTnVtYmVyICAgICAlJSBvZiB0b3RhbCAgQ292ZXJhZ2VcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjI0OSByZWFkZWxmLmM6NjI2OCByZWFkZWxmLmM6OTg5OCByZWFkZWxmLmM6MTAwOTAKKyM6IHJlYWRlbGYuYzo1OTM2IHJlYWRlbGYuYzo1OTU1IHJlYWRlbGYuYzo5NTY1IHJlYWRlbGYuYzo5NzU3CiBtc2dpZCAiT3V0IG9mIG1lbW9yeSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjMxNworIzogcmVhZGVsZi5jOjYwMDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIkR5bmFtaWMgaW5mbyBzZWdtZW50IGF0IG9mZnNldCAweCVseCBjb250YWlucyAlZCBlbnRyaWVzOlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2MzIwCisjOiByZWFkZWxmLmM6NjAwNgorIywgYy1mb3JtYXQKIG1zZ2lkICIgTnVtOiBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgQm91bmRUbyAgICAgRmxhZ3NcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjM3MworIzogcmVhZGVsZi5jOjYwNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIkFzc2VtYmx5IGR1bXAgb2Ygc2VjdGlvbiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2Mzk2CisjOiByZWFkZWxmLmM6NjA3OAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiU2VjdGlvbiAnJXMnIGhhcyBubyBkYXRhIHRvIGR1bXAuXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY0MDEKKyM6IHJlYWRlbGYuYzo2MDgzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJIZXggZHVtcCBvZiBzZWN0aW9uICclcyc6XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY0MDYKKyM6IHJlYWRlbGYuYzo2MDg3CiBtc2dpZCAic2VjdGlvbiBkYXRhIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2NTU1CisjOiByZWFkZWxmLmM6NjIyOQogbXNnaWQgImJhZGx5IGZvcm1lZCBleHRlbmRlZCBsaW5lIG9wIGVuY291bnRlcmVkIVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2NTYyCisjOiByZWFkZWxmLmM6NjIzNgogIywgYy1mb3JtYXQKIG1zZ2lkICIgIEV4dGVuZGVkIG9wY29kZSAlZDogIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2NTY3CisjOiByZWFkZWxmLmM6NjI0MQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRW5kIG9mIFNlcXVlbmNlXG4iCiAiXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY1NzMKKyM6IHJlYWRlbGYuYzo2MjQ3CiAjLCBjLWZvcm1hdAogbXNnaWQgInNldCBBZGRyZXNzIHRvIDB4JWx4XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY1NzgKKyM6IHJlYWRlbGYuYzo2MjUyCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgZGVmaW5lIG5ldyBGaWxlIFRhYmxlIGVudHJ5XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY1NzkgcmVhZGVsZi5jOjY3MjYKKyM6IHJlYWRlbGYuYzo2MjUzIHJlYWRlbGYuYzo2NTQxCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgRW50cnlcdERpclx0VGltZVx0U2l6ZVx0TmFtZVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2NTgxCisjOiByZWFkZWxmLmM6NjI1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAlZFx0IgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2NTg0IHJlYWRlbGYuYzo2NTg2IHJlYWRlbGYuYzo2NTg4IHJlYWRlbGYuYzo2NzM4IHJlYWRlbGYuYzo2NzQwCi0jOiByZWFkZWxmLmM6Njc0MgorIzogcmVhZGVsZi5jOjYyNTggcmVhZGVsZi5jOjYyNjAgcmVhZGVsZi5jOjYyNjIgcmVhZGVsZi5jOjY1NTMgcmVhZGVsZi5jOjY1NTUKKyM6IHJlYWRlbGYuYzo2NTU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVsdVx0IgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2NTg5CisjOiByZWFkZWxmLmM6NjI2MwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJXNcbiIKICJcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjU5MworIzogcmVhZGVsZi5jOjYyNjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiVU5LTk9XTjogbGVuZ3RoICVkXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY2MjEKKyM6IHJlYWRlbGYuYzo2MzIzCittc2dpZCAiZXh0cmFjdGluZyBwb2ludGVyIHNpemVzIGZyb20gLmRlYnVnX2luZm8gc2VjdGlvbiIKK21zZ3N0ciAiIgorCisjOiByZWFkZWxmLmM6NjM0NworbXNnaWQgIk5vIGNvbXAgdW5pdHMgaW4gLmRlYnVnX2luZm8gc2VjdGlvbiA/IgorbXNnc3RyICIiCisKKyM6IHJlYWRlbGYuYzo2MzU2CisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCBlbm91Z2ggbWVtb3J5IGZvciBhIHBvaW50ZXIgc2l6ZSBhcnJheSBvZiAldSBlbnRyaWVzIgorbXNnc3RyICIiCisKKyM6IHJlYWRlbGYuYzo2NDE3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTMyMTUsMTA1MyArMzQ0OSwxMTQwIEBACiAiXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY2NDkKKyM6IHJlYWRlbGYuYzo2NDUwCiBtc2dpZCAiVGhlIGxpbmUgaW5mbyBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQgLSB0aGUgc2VjdGlvbiBpcyB0b28gc21hbGxcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjY1OAorIzogcmVhZGVsZi5jOjY0NTkKIG1zZ2lkICJPbmx5IERXQVJGIHZlcnNpb24gMiBhbmQgMyBsaW5lIGluZm8gaXMgY3VycmVudGx5IHN1cHBvcnRlZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjY3OQorIzogcmVhZGVsZi5jOjY0ODQKK21zZ2lkICJOb3QgZW5vdWdoIGNvbXAgdW5pdHMgZm9yIC5kZWJ1Z19saW5lcyBzZWN0aW9uXG4iCittc2dzdHIgIiIKKworIzogcmVhZGVsZi5jOjY0OTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBMZW5ndGg6ICAgICAgICAgICAgICAgICAgICAgICVsZFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2NjgwCisjOiByZWFkZWxmLmM6NjQ5NAogIywgYy1mb3JtYXQKIG1zZ2lkICIgIERXQVJGIFZlcnNpb246ICAgICAgICAgICAgICAgJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjY4MQorIzogcmVhZGVsZi5jOjY0OTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBQcm9sb2d1ZSBMZW5ndGg6ICAgICAgICAgICAgICVkXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY2ODIKKyM6IHJlYWRlbGYuYzo2NDk2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgTWluaW11bSBJbnN0cnVjdGlvbiBMZW5ndGg6ICAlZFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2NjgzCisjOiByZWFkZWxmLmM6NjQ5NwogIywgYy1mb3JtYXQKIG1zZ2lkICIgIEluaXRpYWwgdmFsdWUgb2YgJ2lzX3N0bXQnOiAgJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjY4NAorIzogcmVhZGVsZi5jOjY0OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBMaW5lIEJhc2U6ICAgICAgICAgICAgICAgICAgICVkXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY2ODUKKyM6IHJlYWRlbGYuYzo2NDk5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgTGluZSBSYW5nZTogICAgICAgICAgICAgICAgICAlZFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2Njg2CisjOiByZWFkZWxmLmM6NjUwMAogIywgYy1mb3JtYXQKIG1zZ2lkICIgIE9wY29kZSBCYXNlOiAgICAgICAgICAgICAgICAgJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjY5NQorIzogcmVhZGVsZi5jOjY1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAoUG9pbnRlciBzaXplOiAgICAgICAgICAgICAgICV1KVxuIgorbXNnc3RyICIiCisKKyM6IHJlYWRlbGYuYzo2NTEwCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIgT3Bjb2RlczpcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjY5OAorIzogcmVhZGVsZi5jOjY1MTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBPcGNvZGUgJWQgaGFzICVkIGFyZ3NcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjcwNAorIzogcmVhZGVsZi5jOjY1MTkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiBUaGUgRGlyZWN0b3J5IFRhYmxlIGlzIGVtcHR5LlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2NzA3CisjOiByZWFkZWxmLmM6NjUyMgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiIFRoZSBEaXJlY3RvcnkgVGFibGU6XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY3MTEKKyM6IHJlYWRlbGYuYzo2NTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjcyMgorIzogcmVhZGVsZi5jOjY1MzcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiBUaGUgRmlsZSBOYW1lIFRhYmxlIGlzIGVtcHR5LlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2NzI1CisjOiByZWFkZWxmLmM6NjU0MAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiIFRoZSBGaWxlIE5hbWUgVGFibGU6XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY3MzMKKyM6IHJlYWRlbGYuYzo2NTQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgJWRcdCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Njc0NAorIzogcmVhZGVsZi5jOjY1NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXNcbiIKIG1zZ3N0ciAiIgogCiAjLiBOb3cgZGlzcGxheSB0aGUgc3RhdGVtZW50cy4KLSM6IHJlYWRlbGYuYzo2NzUyCisjOiByZWFkZWxmLmM6NjU2NworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiIExpbmUgTnVtYmVyIFN0YXRlbWVudHM6XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY3NjgKKyM6IHJlYWRlbGYuYzo2NTgzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgU3BlY2lhbCBvcGNvZGUgJWQ6IGFkdmFuY2UgQWRkcmVzcyBieSAlZCB0byAweCVseCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Njc3MgorIzogcmVhZGVsZi5jOjY1ODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIGFuZCBMaW5lIGJ5ICVkIHRvICVkXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY3ODMKKyM6IHJlYWRlbGYuYzo2NTk4CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgQ29weVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2NzkwCisjOiByZWFkZWxmLmM6NjYwNQogIywgYy1mb3JtYXQKIG1zZ2lkICIgIEFkdmFuY2UgUEMgYnkgJWQgdG8gJWx4XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY3OTgKKyM6IHJlYWRlbGYuYzo2NjEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgQWR2YW5jZSBMaW5lIGJ5ICVkIHRvICVkXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY4MDUKKyM6IHJlYWRlbGYuYzo2NjIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgU2V0IEZpbGUgTmFtZSB0byBlbnRyeSAlZCBpbiB0aGUgRmlsZSBOYW1lIFRhYmxlXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY4MTMKKyM6IHJlYWRlbGYuYzo2NjI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgU2V0IGNvbHVtbiB0byAlZFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2ODIwCisjOiByZWFkZWxmLmM6NjYzNQogIywgYy1mb3JtYXQKIG1zZ2lkICIgIFNldCBpc19zdG10IHRvICVkXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY4MjUKKyM6IHJlYWRlbGYuYzo2NjQwCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgU2V0IGJhc2ljIGJsb2NrXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY4MzMKKyM6IHJlYWRlbGYuYzo2NjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgQWR2YW5jZSBQQyBieSBjb25zdGFudCAlZCB0byAweCVseFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2ODQxCisjOiByZWFkZWxmLmM6NjY1NgogIywgYy1mb3JtYXQKIG1zZ2lkICIgIEFkdmFuY2UgUEMgYnkgZml4ZWQgc2l6ZSBhbW91bnQgJWQgdG8gMHglbHhcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Njg0NgorIzogcmVhZGVsZi5jOjY2NjEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBTZXQgcHJvbG9ndWVfZW5kIHRvIHRydWVcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Njg1MAorIzogcmVhZGVsZi5jOjY2NjUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBTZXQgZXBpbG9ndWVfYmVnaW4gdG8gdHJ1ZVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2ODU2CisjOiByZWFkZWxmLmM6NjY3MQogIywgYy1mb3JtYXQKIG1zZ2lkICIgIFNldCBJU0EgdG8gJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Njg2MAorIzogcmVhZGVsZi5jOjY2NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBVbmtub3duIG9wY29kZSAlZCB3aXRoIG9wZXJhbmRzOiAiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY4OTEgcmVhZGVsZi5jOjczNzEgcmVhZGVsZi5jOjc0NDMKKyM6IHJlYWRlbGYuYzo2NzA1IHJlYWRlbGYuYzo3MTc0IHJlYWRlbGYuYzo3MjQ1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDb250ZW50cyBvZiB0aGUgJXMgc2VjdGlvbjpcbiIKICJcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjkzMQorIzogcmVhZGVsZi5jOjY3NDUKIG1zZ2lkICJPbmx5IERXQVJGIDIgYW5kIDMgcHVibmFtZXMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NjkzOAorIzogcmVhZGVsZi5jOjY3NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBMZW5ndGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWxkXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY5NDAKKyM6IHJlYWRlbGYuYzo2NzU0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgVmVyc2lvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICVkXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjY5NDIKKyM6IHJlYWRlbGYuYzo2NzU2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgT2Zmc2V0IGludG8gLmRlYnVnX2luZm8gc2VjdGlvbjogICAgICVsZFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo2OTQ0CisjOiByZWFkZWxmLmM6Njc1OAogIywgYy1mb3JtYXQKIG1zZ2lkICIgIFNpemUgb2YgYXJlYSBpbiAuZGVidWdfaW5mbyBzZWN0aW9uOiAlbGRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Njk0NworIzogcmVhZGVsZi5jOjY3NjEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiAgICBPZmZzZXRcdE5hbWVcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NzA0MgorIzogcmVhZGVsZi5jOjY4NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBUQUcgdmFsdWU6ICVseCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NzE1NgorIzogcmVhZGVsZi5jOjY5NjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBBVCB2YWx1ZTogJWx4IgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo3MTkzCisjOiByZWFkZWxmLmM6NzAwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIEZPUk0gdmFsdWU6ICVseCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NzM5MgorIzogcmVhZGVsZi5jOjcxOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiIERXX01BQ0lORk9fc3RhcnRfZmlsZSAtIGxpbmVubzogJWQgZmlsZW51bTogJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NzM5NworIzogcmVhZGVsZi5jOjcyMDAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIERXX01BQ0lORk9fZW5kX2ZpbGVcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NzQwNQorIzogcmVhZGVsZi5jOjcyMDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIERXX01BQ0lORk9fZGVmaW5lIC0gbGluZW5vIDogJWQgbWFjcm8gOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo3NDEzCisjOiByZWFkZWxmLmM6NzIxNgogIywgYy1mb3JtYXQKIG1zZ2lkICIgRFdfTUFDSU5GT191bmRlZiAtIGxpbmVubyA6ICVkIG1hY3JvIDogJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NzQyNAorIzogcmVhZGVsZi5jOjcyMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIERXX01BQ0lORk9fdmVuZG9yX2V4dCAtIGNvbnN0YW50IDogJWQgc3RyaW5nIDogJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NzQ1MgorIzogcmVhZGVsZi5jOjcyNTQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBOdW1iZXIgVEFHXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjc0NTgKKyM6IHJlYWRlbGYuYzo3MjYwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICVsZCAgICAgICVzICAgIFslc11cbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NzQ2MQorIzogcmVhZGVsZi5jOjcyNjMKIG1zZ2lkICJoYXMgY2hpbGRyZW4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjc0NjEKKyM6IHJlYWRlbGYuYzo3MjYzCiBtc2dpZCAibm8gY2hpbGRyZW4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjc0NjUKKyM6IHJlYWRlbGYuYzo3MjY3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICAlLTE4cyAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo3NDg2CisjOiByZWFkZWxmLmM6NzI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICIgJWx1IGJ5dGUgYmxvY2s6ICIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6NzgxNAorIzogcmVhZGVsZi5jOjc2MTMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiKFVzZXIgZGVmaW5lZCBsb2NhdGlvbiBvcCkiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjc4MTYKKyM6IHJlYWRlbGYuYzo3NjE1CisjLCBjLWZvcm1hdAogbXNnaWQgIihVbmtub3duIGxvY2F0aW9uIG9wKSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Nzg1NQorIzogcmVhZGVsZi5jOjc2NDYKIG1zZ2lkICJkZWJ1Z19sb2Mgc2VjdGlvbiBkYXRhIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo3ODg3CisjOiByZWFkZWxmLmM6NzY3NworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiVGhlIC5kZWJ1Z19sb2Mgc2VjdGlvbiBpcyBlbXB0eS5cbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6Nzg5MQorIzogcmVhZGVsZi5jOjc2ODQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNvbnRlbnRzIG9mIHRoZSAuZGVidWdfbG9jIHNlY3Rpb246XG4iCiAiXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjc4OTIKKyM6IHJlYWRlbGYuYzo3Njg1CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIgICAgT2Zmc2V0ICAgQmVnaW4gICAgRW5kICAgICAgRXhwcmVzc2lvblxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo3OTY4CisjOiByZWFkZWxmLmM6NzcwMQorbXNnaWQgIk5vdCBlbm91Z2ggY29tcCB1bml0cyBmb3IgLmRlYnVnX2xvYyBzZWN0aW9uXG4iCittc2dzdHIgIiIKKworIzogcmVhZGVsZi5jOjc3NjEKIG1zZ2lkICJkZWJ1Z19zdHIgc2VjdGlvbiBkYXRhIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo3OTg3CisjOiByZWFkZWxmLmM6Nzc3OQogbXNnaWQgIjxubyAuZGVidWdfc3RyIHNlY3Rpb24+IgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo3OTkwCisjOiByZWFkZWxmLmM6Nzc4MgogbXNnaWQgIjxvZmZzZXQgaXMgdG9vIGJpZz4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjgwMDkKKyM6IHJlYWRlbGYuYzo3ODAwCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJUaGUgLmRlYnVnX3N0ciBzZWN0aW9uIGlzIGVtcHR5LlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo4MDEzCisjOiByZWFkZWxmLmM6NzgwNAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ29udGVudHMgb2YgdGhlIC5kZWJ1Z19zdHIgc2VjdGlvbjpcbiIKICJcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6ODA4OAorIzogcmVhZGVsZi5jOjc4NzcKIG1zZ2lkICJJbnRlcm5hbCBlcnJvcjogRFdBUkYgdmVyc2lvbiBpcyBub3QgMiBvciAzLlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo4MjAzCisjOiByZWFkZWxmLmM6Nzk5MgogIywgYy1mb3JtYXQKIG1zZ2lkICIgKGluZGlyZWN0IHN0cmluZywgb2Zmc2V0OiAweCVseCk6ICVzIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo4MjEyCisjOiByZWFkZWxmLmM6ODAwMQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbml6ZWQgZm9ybTogJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6ODIyNgorIzogcmVhZGVsZi5jOjgwMTUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiKG5vdCBpbmxpbmVkKSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6ODIyOQorIzogcmVhZGVsZi5jOjgwMTgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiKGlubGluZWQpIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo4MjMyCisjOiByZWFkZWxmLmM6ODAyMQorIywgYy1mb3JtYXQKIG1zZ2lkICIoZGVjbGFyZWQgYXMgaW5saW5lIGJ1dCBpZ25vcmVkKSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6ODIzNQorIzogcmVhZGVsZi5jOjgwMjQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiKGRlY2xhcmVkIGFzIGlubGluZSBhbmQgaW5saW5lZCkiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjgyMzgKKyM6IHJlYWRlbGYuYzo4MDI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgKFVua25vd24gaW5saW5lIGF0dHJpYnV0ZSB2YWx1ZTogJWx4KSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6ODQxOSByZWFkZWxmLmM6ODY0NgorIzogcmVhZGVsZi5jOjgyMDUgcmVhZGVsZi5jOjg0MjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSBzZWN0aW9uICVzIGNvbnRhaW5zOlxuIgogIlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo4NTM1CisjOiByZWFkZWxmLmM6ODMyMAogIywgYy1mb3JtYXQKIG1zZ2lkICIgIENvbXBpbGF0aW9uIFVuaXQgQCAlbHg6XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjg1MzYKKyM6IHJlYWRlbGYuYzo4MzIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgIExlbmd0aDogICAgICAgICVsZFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo4NTM3CisjOiByZWFkZWxmLmM6ODMyMgogIywgYy1mb3JtYXQKIG1zZ2lkICIgICBWZXJzaW9uOiAgICAgICAlZFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo4NTM4CisjOiByZWFkZWxmLmM6ODMyMwogIywgYy1mb3JtYXQKIG1zZ2lkICIgICBBYmJyZXYgT2Zmc2V0OiAlbGRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6ODUzOQorIzogcmVhZGVsZi5jOjgzMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgUG9pbnRlciBTaXplOiAgJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6ODU0MworIzogcmVhZGVsZi5jOjgzMjgKIG1zZ2lkICJPbmx5IHZlcnNpb24gMiBhbmQgMyBEV0FSRiBkZWJ1ZyBpbmZvcm1hdGlvbiBpcyBjdXJyZW50bHkgc3VwcG9ydGVkLlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo4NTYzCisjOiByZWFkZWxmLmM6ODM0MwogbXNnaWQgIlVuYWJsZSB0byBsb2NhdGUgLmRlYnVnX2FiYnJldiBzZWN0aW9uIVxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo4NTY5CisjOiByZWFkZWxmLmM6ODM0OAogbXNnaWQgImRlYnVnX2FiYnJldiBzZWN0aW9uIGRhdGEiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjg2MDYKKyM6IHJlYWRlbGYuYzo4Mzg1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBsb2NhdGUgZW50cnkgJWx1IGluIHRoZSBhYmJyZXZpYXRpb24gdGFibGVcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6ODYxMQorIzogcmVhZGVsZi5jOjgzOTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIDwlZD48JWx4PjogQWJicmV2IE51bWJlcjogJWx1ICglcylcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6ODY5MQorIzogcmVhZGVsZi5jOjg0NjkKIG1zZ2lkICJPbmx5IERXQVJGIDIgYW5kIDMgYXJhbmdlcyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6ODY5NQorIzogcmVhZGVsZi5jOjg0NzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBMZW5ndGg6ICAgICAgICAgICAgICAgICAgICVsZFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo4Njk2CisjOiByZWFkZWxmLmM6ODQ3NAogIywgYy1mb3JtYXQKIG1zZ2lkICIgIFZlcnNpb246ICAgICAgICAgICAgICAgICAgJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6ODY5NworIzogcmVhZGVsZi5jOjg0NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBPZmZzZXQgaW50byAuZGVidWdfaW5mbzogICVseFxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo4Njk4CisjOiByZWFkZWxmLmM6ODQ3NgogIywgYy1mb3JtYXQKIG1zZ2lkICIgIFBvaW50ZXIgU2l6ZTogICAgICAgICAgICAgJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6ODY5OQorIzogcmVhZGVsZi5jOjg0NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBTZWdtZW50IFNpemU6ICAgICAgICAgICAgICVkXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjg3MDEKKyM6IHJlYWRlbGYuYzo4NDc5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIgICAgQWRkcmVzcyAgTGVuZ3RoXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjg5MDMKKyM6IHJlYWRlbGYuYzo4NjY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRoZSBzZWN0aW9uICVzIGNvbnRhaW5zOlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo5NTM4CisjOiByZWFkZWxmLmM6OTI5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJEaXNwbGF5aW5nIHRoZSBkZWJ1ZyBjb250ZW50cyBvZiBzZWN0aW9uICVzIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo5NjM0CisjOiByZWFkZWxmLmM6OTM0MwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiU2VjdGlvbiAnJXMnIGhhcyBubyBkZWJ1Z2dpbmcgZGF0YS5cbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6OTYzOSByZWFkZWxmLmM6OTcwMQorIzogcmVhZGVsZi5jOjkzNDgKIG1zZ2lkICJkZWJ1ZyBzZWN0aW9uIGRhdGEiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjk2NTUKKyM6IHJlYWRlbGYuYzo5MzY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucmVjb2duaXplZCBkZWJ1ZyBzZWN0aW9uOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzo5NzI5CisjOiByZWFkZWxmLmM6OTQwMAogbXNnaWQgIlNvbWUgc2VjdGlvbnMgd2VyZSBub3QgZHVtcGVkIGJlY2F1c2UgdGhleSBkbyBub3QgZXhpc3QhXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjk4MDYgcmVhZGVsZi5jOjEwMTcwCisjOiByZWFkZWxmLmM6OTQ3NCByZWFkZWxmLmM6OTgzMQogbXNnaWQgImxpYmxpc3QiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjk4OTEKKyM6IHJlYWRlbGYuYzo5NTU5CiBtc2dpZCAib3B0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6OTkyMgorIzogcmVhZGVsZi5jOjk1ODkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlNlY3Rpb24gJyVzJyBjb250YWlucyAlZCBlbnRyaWVzOlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMDA4MworIzogcmVhZGVsZi5jOjk3NTAKIG1zZ2lkICJjb25mbGljdCBsaXN0IGZvdW5kIHdpdGhvdXQgYSBkeW5hbWljIHN5bWJvbCB0YWJsZSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTAxMDEgcmVhZGVsZi5jOjEwMTE3CisjOiByZWFkZWxmLmM6OTc2NiByZWFkZWxmLmM6OTc4MAogbXNnaWQgImNvbmZsaWN0IgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMDEyNworIzogcmVhZGVsZi5jOjk3OTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgotIlNlY3Rpb24gJy5jb25mbGljdCcgY29udGFpbnMgJWxkIGVudHJpZXM6XG4iCisiU2VjdGlvbiAnLmNvbmZsaWN0JyBjb250YWlucyAlbHUgZW50cmllczpcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTAxMjkKKyM6IHJlYWRlbGYuYzo5NzkyCiBtc2dpZCAiICBOdW06ICAgIEluZGV4ICAgICAgIFZhbHVlICBOYW1lIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMDE3OAorIzogcmVhZGVsZi5jOjk4MzgKIG1zZ2lkICJsaWJsaXN0IHN0cmluZyB0YWJsZSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTAxODcKKyM6IHJlYWRlbGYuYzo5ODQ3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJMaWJyYXJ5IGxpc3Qgc2VjdGlvbiAnJXMnIGNvbnRhaW5zICVsdSBlbnRyaWVzOlxuIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMDIzNgorIzogcmVhZGVsZi5jOjk4OTUKK21zZ2lkICJOVF9BVVhWIChhdXhpbGlhcnkgdmVjdG9yKSIKK21zZ3N0ciAiIgorCisjOiByZWFkZWxmLmM6OTg5NgogbXNnaWQgIk5UX1BSU1RBVFVTIChwcnN0YXR1cyBzdHJ1Y3R1cmUpIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMDIzNworIzogcmVhZGVsZi5jOjk4OTcKIG1zZ2lkICJOVF9GUFJFR1NFVCAoZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzKSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTAyMzgKKyM6IHJlYWRlbGYuYzo5ODk4CiBtc2dpZCAiTlRfUFJQU0lORk8gKHBycHNpbmZvIHN0cnVjdHVyZSkiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjEwMjM5CisjOiByZWFkZWxmLmM6OTg5OQogbXNnaWQgIk5UX1RBU0tTVFJVQ1QgKHRhc2sgc3RydWN0dXJlKSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTAyNDAKKyM6IHJlYWRlbGYuYzo5OTAwCiBtc2dpZCAiTlRfUFJYRlBSRUcgKHVzZXJfeGZwcmVncyBzdHJ1Y3R1cmUpIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMDI0MQorIzogcmVhZGVsZi5jOjk5MDEKIG1zZ2lkICJOVF9QU1RBVFVTIChwc3RhdHVzIHN0cnVjdHVyZSkiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjEwMjQyCisjOiByZWFkZWxmLmM6OTkwMgogbXNnaWQgIk5UX0ZQUkVHUyAoZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzKSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTAyNDMKKyM6IHJlYWRlbGYuYzo5OTAzCiBtc2dpZCAiTlRfUFNJTkZPIChwc2luZm8gc3RydWN0dXJlKSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTAyNDQKKyM6IHJlYWRlbGYuYzo5OTA0CiBtc2dpZCAiTlRfTFdQU1RBVFVTIChsd3BzdGF0dXNfdCBzdHJ1Y3R1cmUpIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMDI0NQorIzogcmVhZGVsZi5jOjk5MDUKIG1zZ2lkICJOVF9MV1BTSU5GTyAobHdwc2luZm9fdCBzdHJ1Y3R1cmUpIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMDI0NgorIzogcmVhZGVsZi5jOjk5MDYKIG1zZ2lkICJOVF9XSU4zMlBTVEFUVVMgKHdpbjMyX3BzdGF0dXMgc3RydWN0dXJlKSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTAyNDggcmVhZGVsZi5jOjEwMjcyCisjOiByZWFkZWxmLmM6OTkwOCByZWFkZWxmLmM6OTkzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIG5vdGUgdHlwZTogKDB4JTA4eCkiCiBtc2dzdHIgIiIKIAogIy4gTmV0QlNEIGNvcmUgInByb2NpbmZvIiBzdHJ1Y3R1cmUuCi0jOiByZWFkZWxmLmM6MTAyNjIKKyM6IHJlYWRlbGYuYzo5OTIxCiBtc2dpZCAiTmV0QlNEIHByb2NpbmZvIHN0cnVjdHVyZSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTAyODkgcmVhZGVsZi5jOjEwMzAzCisjOiByZWFkZWxmLmM6OTk0OCByZWFkZWxmLmM6OTk2MgogbXNnaWQgIlBUX0dFVFJFR1MgKHJlZyBzdHJ1Y3R1cmUpIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMDI5MSByZWFkZWxmLmM6MTAzMDUKKyM6IHJlYWRlbGYuYzo5OTUwIHJlYWRlbGYuYzo5OTY0CiBtc2dpZCAiUFRfR0VURlBSRUdTIChmcHJlZyBzdHJ1Y3R1cmUpIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMDMxMQorIzogcmVhZGVsZi5jOjk5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiUFRfRklSU1RNQUNIKyVkIgogbXNnc3RyICIiCiAKLSM6IHJlYWRlbGYuYzoxMDM2NQorIzogcmVhZGVsZi5jOjEwMDE5CiBtc2dpZCAibm90ZXMiCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjEwMzcxCisjOiByZWFkZWxmLmM6MTAwMjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIk5vdGVzIGF0IG9mZnNldCAweCUwOGx4IHdpdGggbGVuZ3RoIDB4JTA4bHg6XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjEwMzczCisjOiByZWFkZWxmLmM6MTAwMjcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBPd25lclx0XHREYXRhIHNpemVcdERlc2NyaXB0aW9uXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjEwMzkyCisjOiByZWFkZWxmLmM6MTAwNDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29ycnVwdCBub3RlIGZvdW5kIGF0IG9mZnNldCAleCBpbnRvIGNvcmUgbm90ZXNcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTAzOTQKKyM6IHJlYWRlbGYuYzoxMDA0OAogIywgYy1mb3JtYXQKIG1zZ2lkICIgdHlwZTogJXgsIG5hbWVzaXplOiAlMDhseCwgZGVzY3NpemU6ICUwOGx4XG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjEwNDc2CisjOiByZWFkZWxmLmM6MTAxMjgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbm90ZSBzZWdtZW50cyBwcmVzZW50IGluIHRoZSBjb3JlIGZpbGUuXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjEwNTYwCisjOiByZWFkZWxmLmM6MTAyMTAKIG1zZ2lkICIiCiAiVGhpcyBpbnN0YW5jZSBvZiByZWFkZWxmIGhhcyBiZWVuIGJ1aWx0IHdpdGhvdXQgc3VwcG9ydCBmb3IgYVxuIgogIjY0IGJpdCBkYXRhIHR5cGUgYW5kIHNvIGl0IGNhbm5vdCByZWFkIDY0IGJpdCBFTEYgZmlsZXMuXG4iCiBtc2dzdHIgIiIKIAotIzogcmVhZGVsZi5jOjEwNjA2Ci0jLCBjLWZvcm1hdAotbXNnaWQgIkNhbm5vdCBzdGF0IGlucHV0IGZpbGUgJXMuXG4iCi1tc2dzdHIgIiIKLQotIzogcmVhZGVsZi5jOjEwNjEzCi0jLCBjLWZvcm1hdAotbXNnaWQgIklucHV0IGZpbGUgJXMgbm90IGZvdW5kLlxuIgotbXNnc3RyICIiCi0KLSM6IHJlYWRlbGYuYzoxMDYxOQorIzogcmVhZGVsZi5jOjEwMjU3IHJlYWRlbGYuYzoxMDU1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogRmFpbGVkIHRvIHJlYWQgZmlsZSBoZWFkZXJcbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkZWxmLmM6MTA2MzMKKyM6IHJlYWRlbGYuYzoxMDI3MAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiRmlsZTogJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiByZW5hbWUuYzoxMzIKKyM6IHJlYWRlbGYuYzoxMDM2OSByZWFkZWxmLmM6MTAzOTAgcmVhZGVsZi5jOjEwNDI3IHJlYWRlbGYuYzoxMDUwNworIywgYy1mb3JtYXQKK21zZ2lkICIlczogZmFpbGVkIHRvIHJlYWQgYXJjaGl2ZSBoZWFkZXJcbiIKK21zZ3N0ciAiIgorCisjOiByZWFkZWxmLmM6MTAzODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGZhaWxlZCB0byBza2lwIGFyY2hpdmUgc3ltYm9sIHRhYmxlXG4iCittc2dzdHIgIiIKKworIzogcmVhZGVsZi5jOjEwNDEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBmYWlsZWQgdG8gcmVhZCBzdHJpbmcgdGFibGVcbiIKK21zZ3N0ciAiIgorCisjOiByZWFkZWxmLmM6MTA0NDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGludmFsaWQgYXJjaGl2ZSBzdHJpbmcgdGFibGUgb2Zmc2V0ICVsdVxuIgorbXNnc3RyICIiCisKKyM6IHJlYWRlbGYuYzoxMDQ2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogYmFkIGFyY2hpdmUgZmlsZSBuYW1lXG4iCittc2dzdHIgIiIKKworIzogcmVhZGVsZi5jOjEwNDk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBmYWlsZWQgdG8gc2VlayB0byBuZXh0IGFyY2hpdmUgaGVhZGVyXG4iCittc2dzdHIgIiIKKworIzogcmVhZGVsZi5jOjEwNTMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcyc6IE5vIHN1Y2ggZmlsZVxuIgorbXNnc3RyICIiCisKKyM6IHJlYWRlbGYuYzoxMDUzMgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgbG9jYXRlICclcycuICBTeXN0ZW0gZXJyb3IgbWVzc2FnZTogJXNcbiIKK21zZ3N0ciAiIgorCisjOiByZWFkZWxmLmM6MTA1MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBub3QgYW4gb3JkaW5hcnkgZmlsZVxuIgorbXNnc3RyICIiCisKKyM6IHJlYWRlbGYuYzoxMDU0NgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnB1dCBmaWxlICclcycgaXMgbm90IHJlYWRhYmxlLlxuIgorbXNnc3RyICIiCisKKyM6IHJlbmFtZS5jOjEyNwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2Fubm90IHNldCB0aW1lOiAlcyIKIG1zZ3N0ciAiIgogCiAjLiBXZSBoYXZlIHRvIGNsZWFuIHVwIGhlcmUuCi0jOiByZW5hbWUuYzoxNzEgcmVuYW1lLmM6MjA0CisjOiByZW5hbWUuYzoxNjIgcmVuYW1lLmM6MjAwCiAjLCBjLWZvcm1hdAotbXNnaWQgIiVzOiByZW5hbWU6ICVzIgorbXNnaWQgInVuYWJsZSB0byByZW5hbWUgJyVzJyByZWFzb246ICVzIgogbXNnc3RyICIiCiAKLSM6IHJlbmFtZS5jOjIxMgorIzogcmVuYW1lLmM6MjA4CiAjLCBjLWZvcm1hdAotbXNnaWQgIiVzOiBzaW1wbGVfY29weTogJXMiCittc2dpZCAidW5hYmxlIHRvIGNvcHkgZmlsZSAnJXMnIHJlYXNvbjogJXMiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6MTM0CisjOiByZXNiaW4uYzoxMzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IG5vdCBlbm91Z2ggYmluYXJ5IGRhdGEiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6MTUzCisjOiByZXNiaW4uYzoxNDgKIG1zZ2lkICJudWxsIHRlcm1pbmF0ZWQgdW5pY29kZSBzdHJpbmciCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6MTgzIHJlc2Jpbi5jOjE4OQorIzogcmVzYmluLmM6MTc1IHJlc2Jpbi5jOjE4MQogbXNnaWQgInJlc291cmNlIElEIgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjIzMworIzogcmVzYmluLmM6MjIxCiBtc2dpZCAiY3Vyc29yIgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjI2NyByZXNiaW4uYzoyNzQKKyM6IHJlc2Jpbi5jOjI1MyByZXNiaW4uYzoyNjAKIG1zZ2lkICJtZW51IGhlYWRlciIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzoyODQKKyM6IHJlc2Jpbi5jOjI3MAogbXNnaWQgIm1lbnVleCBoZWFkZXIiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6Mjg4CisjOiByZXNiaW4uYzoyNzQKIG1zZ2lkICJtZW51ZXggb2Zmc2V0IgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjI5NQorIzogcmVzYmluLmM6MjgxCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuc3VwcG9ydGVkIG1lbnUgdmVyc2lvbiAlZCIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzozMjMgcmVzYmluLmM6MzM4IHJlc2Jpbi5jOjQwNAorIzogcmVzYmluLmM6MzA2IHJlc2Jpbi5jOjMyMSByZXNiaW4uYzozODQKIG1zZ2lkICJtZW51aXRlbSBoZWFkZXIiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6NDM0CisjOiByZXNiaW4uYzo0MTQKIG1zZ2lkICJtZW51aXRlbSIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzo0NzUgcmVzYmluLmM6NTAzCisjOiByZXNiaW4uYzo0NTMgcmVzYmluLmM6NDgxCiBtc2dpZCAiZGlhbG9nIGhlYWRlciIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzo0OTMKKyM6IHJlc2Jpbi5jOjQ3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmV4cGVjdGVkIERJQUxPR0VYIHZlcnNpb24gJWQiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6NTM4CisjOiByZXNiaW4uYzo1MTYKIG1zZ2lkICJkaWFsb2cgZm9udCBwb2ludCBzaXplIgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjU0NgorIzogcmVzYmluLmM6NTI0CiBtc2dpZCAiZGlhbG9nZXggZm9udCBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzo1NzIgcmVzYmluLmM6NTkwCisjOiByZXNiaW4uYzo1NTAgcmVzYmluLmM6NTY4CiBtc2dpZCAiZGlhbG9nIGNvbnRyb2wiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6NTgyCisjOiByZXNiaW4uYzo1NjAKIG1zZ2lkICJkaWFsb2dleCBjb250cm9sIgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjYxMQorIzogcmVzYmluLmM6NTg5CiBtc2dpZCAiZGlhbG9nIGNvbnRyb2wgZW5kIgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjYyMworIzogcmVzYmluLmM6NjAxCiBtc2dpZCAiZGlhbG9nIGNvbnRyb2wgZGF0YSIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzo2NjYKKyM6IHJlc2Jpbi5jOjY0MgogbXNnaWQgInN0cmluZ3RhYmxlIHN0cmluZyBsZW5ndGgiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6Njc2CisjOiByZXNiaW4uYzo2NTIKIG1zZ2lkICJzdHJpbmd0YWJsZSBzdHJpbmciCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6NzA5CisjOiByZXNiaW4uYzo2ODMKIG1zZ2lkICJmb250ZGlyIGhlYWRlciIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzo3MjIKKyM6IHJlc2Jpbi5jOjY5NgogbXNnaWQgImZvbnRkaXIiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6NzM4CisjOiByZXNiaW4uYzo3MTIKIG1zZ2lkICJmb250ZGlyIGRldmljZSBuYW1lIgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjc0NAorIzogcmVzYmluLmM6NzE4CiBtc2dpZCAiZm9udGRpciBmYWNlIG5hbWUiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6Nzg3CisjOiByZXNiaW4uYzo3NTkKIG1zZ2lkICJhY2NlbGVyYXRvciIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzo4NTEKKyM6IHJlc2Jpbi5jOjgxOQogbXNnaWQgImdyb3VwIGN1cnNvciBoZWFkZXIiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6ODU1CisjOiByZXNiaW4uYzo4MjMKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBncm91cCBjdXJzb3IgdHlwZSAlZCIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzo4NzAKKyM6IHJlc2Jpbi5jOjgzOAogbXNnaWQgImdyb3VwIGN1cnNvciIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzo5MDkKKyM6IHJlc2Jpbi5jOjg3NQogbXNnaWQgImdyb3VwIGljb24gaGVhZGVyIgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjkxMworIzogcmVzYmluLmM6ODc5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuZXhwZWN0ZWQgZ3JvdXAgaWNvbiB0eXBlICVkIgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjkyOAorIzogcmVzYmluLmM6ODk0CiBtc2dpZCAiZ3JvdXAgaWNvbiIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzo5OTkgcmVzYmluLmM6MTIxOAorIzogcmVzYmluLmM6OTU3IHJlc2Jpbi5jOjExNzQKIG1zZ2lkICJ1bmV4cGVjdGVkIHZlcnNpb24gc3RyaW5nIgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjEwMzMKKyM6IHJlc2Jpbi5jOjk4OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ2ZXJzaW9uIGxlbmd0aCAlZCBkb2VzIG5vdCBtYXRjaCByZXNvdXJjZSBsZW5ndGggJWx1IgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjEwMzcKKyM6IHJlc2Jpbi5jOjk5MwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmV4cGVjdGVkIHZlcnNpb24gdHlwZSAlZCIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzoxMDQ5CisjOiByZXNiaW4uYzoxMDA1CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuZXhwZWN0ZWQgZml4ZWQgdmVyc2lvbiBpbmZvcm1hdGlvbiBsZW5ndGggJWQiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6MTA1MgorIzogcmVzYmluLmM6MTAwOAogbXNnaWQgImZpeGVkIHZlcnNpb24gaW5mbyIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzoxMDU2CisjOiByZXNiaW4uYzoxMDEyCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuZXhwZWN0ZWQgZml4ZWQgdmVyc2lvbiBzaWduYXR1cmUgJWx1IgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjEwNjAKKyM6IHJlc2Jpbi5jOjEwMTYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBmaXhlZCB2ZXJzaW9uIGluZm8gdmVyc2lvbiAlbHUiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6MTA4OQorIzogcmVzYmluLmM6MTA0NQogbXNnaWQgInZlcnNpb24gdmFyIGluZm8iCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6MTEwNgorIzogcmVzYmluLmM6MTA2MgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmV4cGVjdGVkIHN0cmluZ2ZpbGVpbmZvIHZhbHVlIGxlbmd0aCAlZCIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzoxMTE2CisjOiByZXNiaW4uYzoxMDcyCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuZXhwZWN0ZWQgdmVyc2lvbiBzdHJpbmd0YWJsZSB2YWx1ZSBsZW5ndGggJWQiCiBtc2dzdHIgIiIKIAotIzogcmVzYmluLmM6MTE1MAorIzogcmVzYmluLmM6MTEwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmV4cGVjdGVkIHZlcnNpb24gc3RyaW5nIGxlbmd0aCAlZCAhPSAlZCArICVkIgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjExNjEKKyM6IHJlc2Jpbi5jOjExMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCB2ZXJzaW9uIHN0cmluZyBsZW5ndGggJWQgPCAlZCIKIG1zZ3N0ciAiIgogCi0jOiByZXNiaW4uYzoxMTc4CisjOiByZXNiaW4uYzoxMTM0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuZXhwZWN0ZWQgdmFyZmlsZWluZm8gdmFsdWUgbGVuZ3RoICVkIgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjExOTcKKyM6IHJlc2Jpbi5jOjExNTMKIG1zZ2lkICJ2ZXJzaW9uIHZhcmZpbGVpbmZvIgogbXNnc3RyICIiCiAKLSM6IHJlc2Jpbi5jOjEyMTIKKyM6IHJlc2Jpbi5jOjExNjgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCB2ZXJzaW9uIHZhbHVlIGxlbmd0aCAlZCIKIG1zZ3N0ciAiIgogCi0jOiByZXNjb2ZmLmM6MTI4CisjOiByZXNjb2ZmLmM6MTI2CiBtc2dpZCAiZmlsZW5hbWUgcmVxdWlyZWQgZm9yIENPRkYgaW5wdXQiCiBtc2dzdHIgIiIKIAotIzogcmVzY29mZi5jOjE0NQorIzogcmVzY29mZi5jOjE0MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogbm8gcmVzb3VyY2Ugc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiByZXNjb2ZmLmM6MTUyCisjOiByZXNjb2ZmLmM6MTUwCiBtc2dpZCAiY2FuJ3QgcmVhZCByZXNvdXJjZSBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IHJlc2NvZmYuYzoxNzgKKyM6IHJlc2NvZmYuYzoxNzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzOiBhZGRyZXNzIG91dCBvZiBib3VuZHMiCiBtc2dzdHIgIiIKIAotIzogcmVzY29mZi5jOjE5NworIzogcmVzY29mZi5jOjE5MAogbXNnaWQgImRpcmVjdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiByZXNjb2ZmLmM6MjI1CisjOiByZXNjb2ZmLmM6MjE4CiBtc2dpZCAibmFtZWQgZGlyZWN0b3J5IGVudHJ5IgogbXNnc3RyICIiCiAKLSM6IHJlc2NvZmYuYzoyMzQKKyM6IHJlc2NvZmYuYzoyMjcKIG1zZ2lkICJkaXJlY3RvcnkgZW50cnkgbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiByZXNjb2ZmLmM6MjU0CisjOiByZXNjb2ZmLmM6MjQ3CiBtc2dpZCAibmFtZWQgc3ViZGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IHJlc2NvZmYuYzoyNjIKKyM6IHJlc2NvZmYuYzoyNTUKIG1zZ2lkICJuYW1lZCByZXNvdXJjZSIKIG1zZ3N0ciAiIgogCi0jOiByZXNjb2ZmLmM6Mjc3CisjOiByZXNjb2ZmLmM6MjcwCiBtc2dpZCAiSUQgZGlyZWN0b3J5IGVudHJ5IgogbXNnc3RyICIiCiAKLSM6IHJlc2NvZmYuYzoyOTQKKyM6IHJlc2NvZmYuYzoyODcKIG1zZ2lkICJJRCBzdWJkaXJlY3RvcnkiCiBtc2dzdHIgIiIKIAotIzogcmVzY29mZi5jOjMwMgorIzogcmVzY29mZi5jOjI5NQogbXNnaWQgIklEIHJlc291cmNlIgogbXNnc3RyICIiCiAKLSM6IHJlc2NvZmYuYzozMjgKKyM6IHJlc2NvZmYuYzozMTgKIG1zZ2lkICJyZXNvdXJjZSB0eXBlIHVua25vd24iCiBtc2dzdHIgIiIKIAotIzogcmVzY29mZi5jOjMzMQorIzogcmVzY29mZi5jOjMyMQogbXNnaWQgImRhdGEgZW50cnkiCiBtc2dzdHIgIiIKIAotIzogcmVzY29mZi5jOjMzOQorIzogcmVzY29mZi5jOjMyOQogbXNnaWQgInJlc291cmNlIGRhdGEiCiBtc2dzdHIgIiIKIAotIzogcmVzY29mZi5jOjM0NAorIzogcmVzY29mZi5jOjMzNAogbXNnaWQgInJlc291cmNlIGRhdGEgc2l6ZSIKIG1zZ3N0ciAiIgogCi0jOiByZXNjb2ZmLmM6NDM5CisjOiByZXNjb2ZmLmM6NDI3CiBtc2dpZCAiZmlsZW5hbWUgcmVxdWlyZWQgZm9yIENPRkYgb3V0cHV0IgogbXNnc3RyICIiCiAKLSM6IHJlc2NvZmYuYzo3MzgKKyM6IHJlc2NvZmYuYzo3MTkKIG1zZ2lkICJjYW4ndCBnZXQgQkZEX1JFTE9DX1JWQSByZWxvY2F0aW9uIHR5cGUiCiBtc2dzdHIgIiIKIAotIzogcmVzcmMuYzoyNDAgcmVzcmMuYzozMTIKKyM6IHJlc3JjLmM6MjM3IHJlc3JjLmM6MzA4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IG9wZW4gdGVtcG9yYXJ5IGZpbGUgYCVzJzogJXMiCiBtc2dzdHIgIiIKIAotIzogcmVzcmMuYzoyNDYKKyM6IHJlc3JjLmM6MjQzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IHJlZGlyZWN0IHN0ZG91dDogYCVzJzogJXMiCiBtc2dzdHIgIiIKIAotIzogcmVzcmMuYzoyNjIKKyM6IHJlc3JjLmM6MjU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzICVzOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiByZXNyYy5jOjMwOAorIzogcmVzcmMuYzozMDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FuJ3QgZXhlY3V0ZSBgJXMnOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiByZXNyYy5jOjMxNworIzogcmVzcmMuYzozMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgdGVtcG9yYXJ5IGZpbGUgYCVzJyB0byByZWFkIHByZXByb2Nlc3NvciBvdXRwdXRcbiIKIG1zZ3N0ciAiIgogCi0jOiByZXNyYy5jOjMyNAorIzogcmVzcmMuYzozMjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FuJ3QgcG9wZW4gYCVzJzogJXMiCiBtc2dzdHIgIiIKIAotIzogcmVzcmMuYzozMjYKKyM6IHJlc3JjLmM6MzIyCisjLCBjLWZvcm1hdAogbXNnaWQgIlVzaW5nIHBvcGVuIHRvIHJlYWQgcHJlcHJvY2Vzc29yIG91dHB1dFxuIgogbXNnc3RyICIiCiAKLSM6IHJlc3JjLmM6MzY5CisjOiByZXNyYy5jOjM2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJUcmllZCBgJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogcmVzcmMuYzozODAKKyM6IHJlc3JjLmM6MzcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzaW5nIGAlcydcbiIKIG1zZ3N0ciAiIgogCi0jOiByZXNyYy5jOjU0MgorIzogcmVzcmMuYzo1MjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6JWQ6ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogcmVzcmMuYzo1NTEKKyM6IHJlc3JjLmM6NTM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB1bmV4cGVjdGVkIEVPRiIKIG1zZ3N0ciAiIgogCi0jOiByZXNyYy5jOjYwOAorIzogcmVzcmMuYzo1ODUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHJlYWQgb2YgJWx1IHJldHVybmVkICVsdSIKIG1zZ3N0ciAiIgogCi0jOiByZXNyYy5jOjY1MCByZXNyYy5jOjkwNSByZXNyYy5jOjExNzggcmVzcmMuYzoxMzMyCisjOiByZXNyYy5jOjYyMyByZXNyYy5jOjg2MCByZXNyYy5jOjExMzMgcmVzcmMuYzoxMjc0CiAjLCBjLWZvcm1hdAogbXNnaWQgInN0YXQgZmFpbGVkIG9uIGJpdG1hcCBmaWxlIGAlcyc6ICVzIgogbXNnc3RyICIiCiAKLSM6IHJlc3JjLmM6NzAzCisjOiByZXNyYy5jOjY3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJjdXJzb3IgZmlsZSBgJXMnIGRvZXMgbm90IGNvbnRhaW4gY3Vyc29yIGRhdGEiCiBtc2dzdHIgIiIKIAotIzogcmVzcmMuYzo3MzUgcmVzcmMuYzoxMDQ5CisjOiByZXNyYy5jOjcwNiByZXNyYy5jOjEwMDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGZzZWVrIHRvICVsdSBmYWlsZWQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IHJlc3JjLmM6ODczCisjOiByZXNyYy5jOjgzMAogbXNnaWQgImhlbHAgSUQgcmVxdWlyZXMgRElBTE9HRVgiCiBtc2dzdHIgIiIKIAotIzogcmVzcmMuYzo4NzUKKyM6IHJlc3JjLmM6ODMyCiBtc2dpZCAiY29udHJvbCBkYXRhIHJlcXVpcmVzIERJQUxPR0VYIgogbXNnc3RyICIiCiAKLSM6IHJlc3JjLmM6MTAxOAorIzogcmVzcmMuYzo5NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiaWNvbiBmaWxlIGAlcycgZG9lcyBub3QgY29udGFpbiBpY29uIGRhdGEiCiBtc2dzdHIgIiIKIAotIzogcmVzcmMuYzoxNTM3CisjOiByZXNyYy5jOjE0NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FuJ3Qgb3BlbiBgJXMnIGZvciBvdXRwdXQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IHNpemUuYzo4NgorIzogc2l6ZS5jOjg0CisjLCBjLWZvcm1hdAogbXNnaWQgIiBEaXNwbGF5cyB0aGUgc2l6ZXMgb2Ygc2VjdGlvbnMgaW5zaWRlIGJpbmFyeSBmaWxlc1xuIgogbXNnc3RyICIiCiAKLSM6IHNpemUuYzo4NworIzogc2l6ZS5jOjg1CisjLCBjLWZvcm1hdAogbXNnaWQgIiBJZiBubyBpbnB1dCBmaWxlKHMpIGFyZSBzcGVjaWZpZWQsIGEub3V0IGlzIGFzc3VtZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBzaXplLmM6ODgKKyM6IHNpemUuYzo4NgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiIFRoZSBvcHRpb25zIGFyZTpcbiIKQEAgLTQyNzYsMjEgKzQ1OTcsMjMgQEAKICJcbiIKIG1zZ3N0ciAiIgogCi0jOiBzaXplLmM6MTYwCisjOiBzaXplLmM6MTU2CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgYXJndW1lbnQgdG8gLS1mb3JtYXQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IHNpemUuYzoxODcKKyM6IHNpemUuYzoxODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCByYWRpeDogJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBzcmNvbnYuYzoxOTUzCisjOiBzcmNvbnYuYzoxODU3CisjLCBjLWZvcm1hdAogbXNnaWQgIkNvbnZlcnQgYSBDT0ZGIG9iamVjdCBmaWxlIGludG8gYSBTWVNST0ZGIG9iamVjdCBmaWxlXG4iCiBtc2dzdHIgIiIKIAotIzogc3Jjb252LmM6MTk1NAorIzogc3Jjb252LmM6MTg1OAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiIFRoZSBvcHRpb25zIGFyZTpcbiIKICIgIC1xIC0tcXVpY2sgICAgICAgKE9ic29sZXRlIC0gaWdub2VyZClcbiIKQEAgLTQzMDAsMTIxICs0NjIzLDE2MSBAQAogIiAgLXYgLS12ZXJzaW9uICAgICBQcmludCB0aGUgcHJvZ3JhbSdzIHZlcnNpb24gbnVtYmVyXG4iCiBtc2dzdHIgIiIKIAotIzogc3Jjb252LmM6MjA5OQorIzogc3Jjb252LmM6MjAwMQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gb3BlbiBvdXRwdXQgZmlsZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzdGFicy5jOjM0NiBzdGFicy5jOjE3NTUKKyM6IHN0YWJzLmM6MzI4IHN0YWJzLmM6MTcwNgogbXNnaWQgIm51bWVyaWMgb3ZlcmZsb3ciCiBtc2dzdHIgIiIKIAotIzogc3RhYnMuYzozNTcKKyM6IHN0YWJzLmM6MzM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCBzdGFiOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHN0YWJzLmM6MzY3CisjOiBzdGFicy5jOjM0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nOiAlczogJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBzdGFicy5jOjQ4OAorIzogc3RhYnMuYzo0NTYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiTl9MQlJBQyBub3Qgd2l0aGluIGZ1bmN0aW9uXG4iCiBtc2dzdHIgIiIKIAotIzogc3RhYnMuYzo1MjcKKyM6IHN0YWJzLmM6NDk1CisjLCBjLWZvcm1hdAogbXNnaWQgIlRvbyBtYW55IE5fUkJSQUNzXG4iCiBtc2dzdHIgIiIKIAotIzogc3RhYnMuYzo3NzMKKyM6IHN0YWJzLmM6NzM2CiBtc2dpZCAidW5rbm93biBDKysgZW5jb2RlZCBuYW1lIgogbXNnc3RyICIiCiAKICMuIENvbXBsYWluIGFuZCBrZWVwIGdvaW5nLCBzbyBjb21waWxlcnMgY2FuIGludmVudCBuZXcKICMuIGNyb3NzLXJlZmVyZW5jZSB0eXBlcy4KLSM6IHN0YWJzLmM6MTI5MworIzogc3RhYnMuYzoxMjUxCiBtc2dpZCAidW5yZWNvZ25pemVkIGNyb3NzIHJlZmVyZW5jZSB0eXBlIgogbXNnc3RyICIiCiAKICMuIERvZXMgdGhpcyBhY3R1YWxseSBldmVyIGhhcHBlbj8gIElzIHRoYXQgd2h5IHdlIGFyZSB3b3JyeWluZwogIy4gYWJvdXQgZGVhbGluZyB3aXRoIGl0IHJhdGhlciB0aGFuIGp1c3QgY2FsbGluZyBlcnJvcl90eXBlPwotIzogc3RhYnMuYzoxODQ3CisjOiBzdGFicy5jOjE3OTgKIG1zZ2lkICJtaXNzaW5nIGluZGV4IHR5cGUiCiBtc2dzdHIgIiIKIAotIzogc3RhYnMuYzoyMTc0CisjOiBzdGFicy5jOjIxMTIKIG1zZ2lkICJ1bmtub3duIHZpcnR1YWwgY2hhcmFjdGVyIGZvciBiYXNlY2xhc3MiCiBtc2dzdHIgIiIKIAotIzogc3RhYnMuYzoyMTkyCisjOiBzdGFicy5jOjIxMzAKIG1zZ2lkICJ1bmtub3duIHZpc2liaWxpdHkgY2hhcmFjdGVyIGZvciBiYXNlY2xhc3MiCiBtc2dzdHIgIiIKIAotIzogc3RhYnMuYzoyMzg0CisjOiBzdGFicy5jOjIzMTYKIG1zZ2lkICJ1bm5hbWVkICR2YiB0eXBlIgogbXNnc3RyICIiCiAKLSM6IHN0YWJzLmM6MjM5MAorIzogc3RhYnMuYzoyMzIyCiBtc2dpZCAidW5yZWNvZ25pemVkIEMrKyBhYmJyZXZpYXRpb24iCiBtc2dzdHIgIiIKIAotIzogc3RhYnMuYzoyNDcwCisjOiBzdGFicy5jOjIzOTgKIG1zZ2lkICJ1bmtub3duIHZpc2liaWxpdHkgY2hhcmFjdGVyIGZvciBmaWVsZCIKIG1zZ3N0ciAiIgogCi0jOiBzdGFicy5jOjI3MjYKKyM6IHN0YWJzLmM6MjY1MAogbXNnaWQgImNvbnN0L3ZvbGF0aWxlIGluZGljYXRvciBtaXNzaW5nIgogbXNnc3RyICIiCiAKLSM6IHN0YWJzLmM6Mjk2NworIzogc3RhYnMuYzoyODg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIG1hbmdsaW5nIGZvciBcIiVzXCJcbiIKIG1zZ3N0ciAiIgogCi0jOiBzdGFicy5jOjMyODEKKyM6IHN0YWJzLmM6MzE4NgogbXNnaWQgIlVuZGVmaW5lZCBOX0VYQ0wiCiBtc2dzdHIgIiIKIAotIzogc3RhYnMuYzozMzY5CisjOiBzdGFicy5jOjMyNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVHlwZSBmaWxlIG51bWJlciAlZCBvdXQgb2YgcmFuZ2VcbiIKIG1zZ3N0ciAiIgogCi0jOiBzdGFicy5jOjMzNzQKKyM6IHN0YWJzLmM6MzI3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJUeXBlIGluZGV4IG51bWJlciAlZCBvdXQgb2YgcmFuZ2VcbiIKIG1zZ3N0ciAiIgogCi0jOiBzdGFicy5jOjM0NjEKKyM6IHN0YWJzLmM6MzM1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbml6ZWQgWENPRkYgdHlwZSAlZFxuIgogbXNnc3RyICIiCiAKLSM6IHN0YWJzLmM6Mzc2MgorIzogc3RhYnMuYzozNjQyCiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCBtYW5nbGVkIG5hbWUgYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IHN0YWJzLmM6Mzg1OQorIzogc3RhYnMuYzozNzM3CisjLCBjLWZvcm1hdAogbXNnaWQgIm5vIGFyZ3VtZW50IHR5cGVzIGluIG1hbmdsZWQgc3RyaW5nXG4iCiBtc2dzdHIgIiIKIAotIzogc3RyaW5ncy5jOjIwOAorIzogc3RhYnMuYzo1MDkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkRlbWFuZ2xlZCBuYW1lIGlzIG5vdCBhIGZ1bmN0aW9uXG4iCittc2dzdHIgIiIKKworIzogc3RhYnMuYzo1MTExCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZXhwZWN0ZWQgdHlwZSBpbiBkZW1hbmdsZSB0cmVlXG4iCittc2dzdHIgIiIKKworIzogc3RhYnMuYzo1MTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIlVucmVjb2duaXplZCBkZW1hbmdsZSBjb21wb25lbnRcbiIKK21zZ3N0ciAiIgorCisjOiBzdGFicy5jOjUyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHByaW50IGRlbWFuZ2xlZCB0ZW1wbGF0ZVxuIgorbXNnc3RyICIiCisKKyM6IHN0YWJzLmM6NTI4NAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBnZXQgZGVtYW5nbGVkIGJ1aWx0aW4gdHlwZVxuIgorbXNnc3RyICIiCisKKyM6IHN0YWJzLmM6NTMzMworIywgYy1mb3JtYXQKK21zZ2lkICJVbmV4cGVjdGVkIGRlbWFuZ2xlZCB2YXJhcmdzXG4iCittc2dzdHIgIiIKKworIzogc3RhYnMuYzo1MzQwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVucmVjb2duaXplZCBkZW1hbmdsZWQgYnVpbHRpbiB0eXBlXG4iCittc2dzdHIgIiIKKworIzogc3RyaW5ncy5jOjE5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG51bWJlciAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzdHJpbmdzLmM6NjQ3CisjOiBzdHJpbmdzLmM6NjI1CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgaW50ZWdlciBhcmd1bWVudCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzdHJpbmdzLmM6NjU4CisjOiBzdHJpbmdzLmM6NjM0CisjLCBjLWZvcm1hdAogbXNnaWQgIiBEaXNwbGF5IHByaW50YWJsZSBzdHJpbmdzIGluIFtmaWxlKHMpXSAoc3RkaW4gYnkgZGVmYXVsdClcbiIKIG1zZ3N0ciAiIgogCi0jOiBzdHJpbmdzLmM6NjU5CisjOiBzdHJpbmdzLmM6NjM1CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgVGhlIG9wdGlvbnMgYXJlOlxuIgogIiAgLWEgLSAtLWFsbCAgICAgICAgICAgICAgICBTY2FuIHRoZSBlbnRpcmUgZmlsZSwgbm90IGp1c3QgdGhlIGRhdGEgc2VjdGlvblxuIgpAQCAtNDQzMyw3NiArNDc5Niw4NCBAQAogIiAgLXYgLS12ZXJzaW9uICAgICAgICAgICAgICBQcmludCB0aGUgcHJvZ3JhbSdzIHZlcnNpb24gbnVtYmVyXG4iCiBtc2dzdHIgIiIKIAotIzogc3lzZHVtcC5jOjc2OAorIzogc3lzZHVtcC5jOjc0MQorIywgYy1mb3JtYXQKIG1zZ2lkICJQcmludCBhIGh1bWFuIHJlYWRhYmxlIGludGVycHJldGF0aW9uIG9mIGEgU1lTUk9GRiBvYmplY3QgZmlsZVxuIgogbXNnc3RyICIiCiAKLSM6IHN5c2R1bXAuYzo3NjkKKyM6IHN5c2R1bXAuYzo3NDIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiBUaGUgb3B0aW9ucyBhcmU6XG4iCiAiICAtaCAtLWhlbHAgICAgICAgIERpc3BsYXkgdGhpcyBpbmZvcm1hdGlvblxuIgogIiAgLXYgLS12ZXJzaW9uICAgICBQcmludCB0aGUgcHJvZ3JhbSdzIHZlcnNpb24gbnVtYmVyXG4iCiBtc2dzdHIgIiIKIAotIzogc3lzZHVtcC5jOjgzNgorIzogc3lzZHVtcC5jOjgwNwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiBpbnB1dCBmaWxlICVzIgogbXNnc3RyICIiCiAKLSM6IHZlcnNpb24uYzozNgotbXNnaWQgIkNvcHlyaWdodCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLlxuIgorIzogdmVyc2lvbi5jOjM1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcHlyaWdodCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLlxuIgogbXNnc3RyICIiCiAKLSM6IHZlcnNpb24uYzozNworIzogdmVyc2lvbi5jOjM2CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IG1heSByZWRpc3RyaWJ1dGUgaXQgdW5kZXIgdGhlIHRlcm1zIG9mXG4iCiAidGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBwcm9ncmFtIGhhcyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5LlxuIgogbXNnc3RyICIiCiAKLSM6IHdpbmRyZXMuYzoyMDUKKyM6IHdpbmRyZXMuYzoyMDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FuJ3Qgb3BlbiAlcyBgJXMnOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiB3aW5kcmVzLmM6Mzg0CisjOiB3aW5kcmVzLmM6MzY2CisjLCBjLWZvcm1hdAogbXNnaWQgIjogZXhwZWN0ZWQgdG8gYmUgYSBkaXJlY3RvcnlcbiIKIG1zZ3N0ciAiIgogCi0jOiB3aW5kcmVzLmM6Mzk2CisjOiB3aW5kcmVzLmM6Mzc4CisjLCBjLWZvcm1hdAogbXNnaWQgIjogZXhwZWN0ZWQgdG8gYmUgYSBsZWFmXG4iCiBtc2dzdHIgIiIKIAotIzogd2luZHJlcy5jOjQwNQorIzogd2luZHJlcy5jOjM4NwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogd2FybmluZzogIgogbXNnc3RyICIiCiAKLSM6IHdpbmRyZXMuYzo0MDcKKyM6IHdpbmRyZXMuYzozODkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiOiBkdXBsaWNhdGUgdmFsdWVcbiIKIG1zZ3N0ciAiIgogCi0jOiB3aW5kcmVzLmM6NTY5CisjOiB3aW5kcmVzLmM6NTM5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gZm9ybWF0IHR5cGUgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiB3aW5kcmVzLmM6NTcwCisjOiB3aW5kcmVzLmM6NTQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBzdXBwb3J0ZWQgZm9ybWF0czoiCiBtc2dzdHIgIiIKIAogIy4gT3RoZXJ3aXNlLCB3ZSBnaXZlIHVwLgotIzogd2luZHJlcy5jOjY1NQorIzogd2luZHJlcy5jOjYyMwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW4gbm90IGRldGVybWluZSB0eXBlIG9mIGZpbGUgYCVzJzsgdXNlIHRoZSAtSSBvcHRpb24iCiBtc2dzdHIgIiIKIAotIzogd2luZHJlcy5jOjY2OQorIzogd2luZHJlcy5jOjYzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2FnZTogJXMgW29wdGlvbihzKV0gW2lucHV0LWZpbGVdIFtvdXRwdXQtZmlsZV1cbiIKIG1zZ3N0ciAiIgogCi0jOiB3aW5kcmVzLmM6NjcxCisjOiB3aW5kcmVzLmM6NjM3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgVGhlIG9wdGlvbnMgYXJlOlxuIgogIiAgLWkgLS1pbnB1dD08ZmlsZT4gICAgICAgICAgICBOYW1lIGlucHV0IGZpbGVcbiIKQEAgLTQ1MjIsNTMgKzQ4OTMsNTcgQEAKICIgICAgIC0tbm8tdXNlLXRlbXAtZmlsZSAgICAgICAgVXNlIHBvcGVuIChkZWZhdWx0KVxuIgogbXNnc3RyICIiCiAKLSM6IHdpbmRyZXMuYzo2ODcKKyM6IHdpbmRyZXMuYzo2NTMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAgICAtLXl5ZGVidWcgICAgICAgICAgICAgICAgIFR1cm4gb24gcGFyc2VyIGRlYnVnZ2luZ1xuIgogbXNnc3RyICIiCiAKLSM6IHdpbmRyZXMuYzo2OTAKKyM6IHdpbmRyZXMuYzo2NTYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLXIgICAgICAgICAgICAgICAgICAgICAgICAgICBJZ25vcmVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggcmNcbiIKICIgIC1oIC0taGVscCAgICAgICAgICAgICAgICAgICAgUHJpbnQgdGhpcyBoZWxwIG1lc3NhZ2VcbiIKICIgIC1WIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgUHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvblxuIgogbXNnc3RyICIiCiAKLSM6IHdpbmRyZXMuYzo2OTQKKyM6IHdpbmRyZXMuYzo2NjAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkZPUk1BVCBpcyBvbmUgb2YgcmMsIHJlcywgb3IgY29mZiwgYW5kIGlzIGRlZHVjZWQgZnJvbSB0aGUgZmlsZSBuYW1lXG4iCiAiZXh0ZW5zaW9uIGlmIG5vdCBzcGVjaWZpZWQuICBBIHNpbmdsZSBmaWxlIG5hbWUgaXMgYW4gaW5wdXQgZmlsZS5cbiIKICJObyBpbnB1dC1maWxlIGlzIHN0ZGluLCBkZWZhdWx0IHJjLiAgTm8gb3V0cHV0LWZpbGUgaXMgc3Rkb3V0LCBkZWZhdWx0IHJjLlxuIgogbXNnc3RyICIiCiAKLSM6IHdpbmRyZXMuYzo4MzMKKyM6IHdpbmRyZXMuYzo3OTYKIG1zZ2lkICJpbnZhbGlkIG9wdGlvbiAtZlxuIgogbXNnc3RyICIiCiAKLSM6IHdpbmRyZXMuYzo4MzgKKyM6IHdpbmRyZXMuYzo4MDEKIG1zZ2lkICJObyBmaWxlbmFtZSBmb2xsb3dpbmcgdGhlIC1mbyBvcHRpb24uXG4iCiBtc2dzdHIgIiIKIAotIzogd2luZHJlcy5jOjg5NgorIzogd2luZHJlcy5jOjg1OQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiT3B0aW9uIC1JIGlzIGRlcHJlY2F0ZWQgZm9yIHNldHRpbmcgdGhlIGlucHV0IGZvcm1hdCwgcGxlYXNlIHVzZSAtSiAiCiAiaW5zdGVhZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiB3aW5kcmVzLmM6MTAxNAorIzogd2luZHJlcy5jOjk3NwogbXNnaWQgIm5vIHJlc291cmNlcyIKIG1zZ3N0ciAiIgogCi0jOiB3cnN0YWJzLmM6Mzk1IHdyc3RhYnMuYzoyMDU1CisjOiB3cnN0YWJzLmM6MzU0IHdyc3RhYnMuYzoxOTE1CiAjLCBjLWZvcm1hdAogbXNnaWQgInN0cmluZ19oYXNoX2xvb2t1cCBmYWlsZWQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IHdyc3RhYnMuYzo2OTUKKyM6IHdyc3RhYnMuYzo2MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAic3RhYl9pbnRfdHlwZTogYmFkIHNpemUgJXUiCiBtc2dzdHIgIiIKIAotIzogd3JzdGFicy5jOjE0OTUKKyM6IHdyc3RhYnMuYzoxMzkzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB3YXJuaW5nOiB1bmtub3duIHNpemUgZm9yIGZpZWxkIGAlcycgaW4gc3RydWN0IgogbXNnc3RyICIiCmRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKaW5kZXggMjU4Yzc0Ni4uNGRiMGExMCAxMDA2NDQKLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCisrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwpAQCAtMTc0MCw2ICsxNzQwLDMzIEBACiAJfQogICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEVGX0FSTV9FQUJJX1ZFUjM6CisgICAgICBzdHJjYXQgKGJ1ZiwgIiwgVmVyc2lvbjMgRUFCSSIpOworICAgICAgd2hpbGUgKGVfZmxhZ3MpCisJeworCSAgdW5zaWduZWQgZmxhZzsKKworCSAgLyogUHJvY2VzcyBmbGFncyBvbmUgYml0IGF0IGEgdGltZS4gICovCisJICBmbGFnID0gZV9mbGFncyAmIC0gZV9mbGFnczsKKwkgIGVfZmxhZ3MgJj0gfiBmbGFnOworCisJICBzd2l0Y2ggKGZsYWcpCisJICAgIHsKKwkgICAgY2FzZSBFRl9BUk1fQkU4OgorCSAgICAgIHN0cmNhdCAoYnVmLCAiLCBCRTgiKTsKKwkgICAgICBicmVhazsKKworCSAgICBjYXNlIEVGX0FSTV9MRTg6CisJICAgICAgc3RyY2F0IChidWYsICIsIExFOCIpOworCSAgICAgIGJyZWFrOworCisJICAgIGRlZmF1bHQ6CisJICAgICAgdW5rbm93biA9IDE7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwl9CisgICAgICBicmVhazsKKwogICAgIGNhc2UgRUZfQVJNX0VBQklfVU5LTk9XTjoKICAgICAgIHN0cmNhdCAoYnVmLCAiLCBHTlUgRUFCSSIpOwogICAgICAgd2hpbGUgKGVfZmxhZ3MpCkBAIC02NzY3LDcgKzY3OTQsNyBAQAogCSAgaWYgKG9mZnNldCAhPSAwKQogCSAgICB7CiAJICAgICAgZGF0YSArPSBvZmZzZXRfc2l6ZTsKLQkgICAgICBwcmludGYgKCIgICAgJWxkXHRcdCVzXG4iLCBvZmZzZXQsIGRhdGEpOworCSAgICAgIHByaW50ZiAoIiAgICAlLTZsZFx0XHQlc1xuIiwgb2Zmc2V0LCBkYXRhKTsKIAkgICAgICBkYXRhICs9IHN0cmxlbiAoKGNoYXIgKikgZGF0YSkgKyAxOwogCSAgICB9CiAJfQpAQCAtNzk0MSw2ICs3OTY4LDcgQEAKIAogICAgIGNhc2UgRFdfRk9STV9hZGRyOgogICAgICAgcHJpbnRmICgiICUjbHgiLCB1dmFsdWUpOworICAgICAgYnJlYWs7CiAKICAgICBjYXNlIERXX0ZPUk1fZmxhZzoKICAgICBjYXNlIERXX0ZPUk1fZGF0YTE6CkBAIC05MTUwLDEzICs5MTc4LDE5IEBACiAJICAgICAgaWYgKCEgZG9fZGVidWdfZnJhbWVzX2ludGVycCkKIAkJcHJpbnRmICgiICBEV19DRkFfcmVzdG9yZV9zdGF0ZVxuIik7CiAJICAgICAgcnMgPSByZW1lbWJlcmVkX3N0YXRlOwotCSAgICAgIHJlbWVtYmVyZWRfc3RhdGUgPSBycy0+bmV4dDsKLQkgICAgICBmcmFtZV9uZWVkX3NwYWNlIChmYywgcnMtPm5jb2xzLTEpOwotCSAgICAgIG1lbWNweSAoZmMtPmNvbF90eXBlLCBycy0+Y29sX3R5cGUsIHJzLT5uY29scyk7Ci0JICAgICAgbWVtY3B5IChmYy0+Y29sX29mZnNldCwgcnMtPmNvbF9vZmZzZXQsIHJzLT5uY29scyAqIHNpemVvZiAoaW50KSk7Ci0JICAgICAgZnJlZSAocnMtPmNvbF90eXBlKTsKLQkgICAgICBmcmVlIChycy0+Y29sX29mZnNldCk7Ci0JICAgICAgZnJlZSAocnMpOworCSAgICAgIGlmIChycykKKwkJeworCQkgIHJlbWVtYmVyZWRfc3RhdGUgPSBycy0+bmV4dDsKKwkJICBmcmFtZV9uZWVkX3NwYWNlIChmYywgcnMtPm5jb2xzLTEpOworCQkgIG1lbWNweSAoZmMtPmNvbF90eXBlLCBycy0+Y29sX3R5cGUsIHJzLT5uY29scyk7CisJCSAgbWVtY3B5IChmYy0+Y29sX29mZnNldCwgcnMtPmNvbF9vZmZzZXQsCisJCQkgIHJzLT5uY29scyAqIHNpemVvZiAoaW50KSk7CisJCSAgZnJlZSAocnMtPmNvbF90eXBlKTsKKwkJICBmcmVlIChycy0+Y29sX29mZnNldCk7CisJCSAgZnJlZSAocnMpOworCQl9CisJICAgICAgZWxzZSBpZiAoZG9fZGVidWdfZnJhbWVzX2ludGVycCkKKwkJcHJpbnRmICgiTWlzbWF0Y2hlZCBEV19DRkFfcmVzdG9yZV9zdGF0ZVxuIik7CiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBEV19DRkFfZGVmX2NmYToKQEAgLTkzMjEsNyArOTM1NSw3IEBACiAgIHsgIi5kZWJ1Z19tYWNpbmZvIiwJCWRpc3BsYXlfZGVidWdfbWFjaW5mbyB9LAogICB7ICIuZGVidWdfc3RyIiwJCWRpc3BsYXlfZGVidWdfc3RyIH0sCiAgIHsgIi5kZWJ1Z19sb2MiLAkJZGlzcGxheV9kZWJ1Z19sb2MgfSwKLSAgeyAiLmRlYnVnX3B1YnR5cGVzIiwJCWRpc3BsYXlfZGVidWdfbm90X3N1cHBvcnRlZCB9LAorICB7ICIuZGVidWdfcHVidHlwZXMiLAkJZGlzcGxheV9kZWJ1Z19wdWJuYW1lcyB9LAogICB7ICIuZGVidWdfcmFuZ2VzIiwJCWRpc3BsYXlfZGVidWdfbm90X3N1cHBvcnRlZCB9LAogICB7ICIuZGVidWdfc3RhdGljX2Z1bmMiLAlkaXNwbGF5X2RlYnVnX25vdF9zdXBwb3J0ZWQgfSwKICAgeyAiLmRlYnVnX3N0YXRpY192YXJzIiwJZGlzcGxheV9kZWJ1Z19ub3Rfc3VwcG9ydGVkIH0sCkBAIC05Nzg3LDggKzk4MjEsOCBAQAogCSAgZnJlZSAoZWNvbmY2NCk7CiAJfQogCi0gICAgICBwcmludGYgKF8oIlxuU2VjdGlvbiAnLmNvbmZsaWN0JyBjb250YWlucyAlbGQgZW50cmllczpcbiIpLAotCSAgICAgIChsb25nKSBjb25mbGljdHNubyk7CisgICAgICBwcmludGYgKF8oIlxuU2VjdGlvbiAnLmNvbmZsaWN0JyBjb250YWlucyAlbHUgZW50cmllczpcbiIpLAorCSAgICAgICh1bnNpZ25lZCBsb25nKSBjb25mbGljdHNubyk7CiAgICAgICBwdXRzIChfKCIgIE51bTogICAgSW5kZXggICAgICAgVmFsdWUgIE5hbWUiKSk7CiAKICAgICAgIGZvciAoY250ID0gMDsgY250IDwgY29uZmxpY3Rzbm87ICsrY250KQpkaWZmIC0tZ2l0IGEvYmludXRpbHMvdGVzdHN1aXRlL0NoYW5nZUxvZyBiL2JpbnV0aWxzL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKaW5kZXggMTcxNjZlNC4uOGM0NjY1ZSAxMDA2NDQKLS0tIGEvYmludXRpbHMvdGVzdHN1aXRlL0NoYW5nZUxvZworKysgYi9iaW51dGlscy90ZXN0c3VpdGUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDQtMDMtMzAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJKiBiaW51dGlscy1hbGwvb2JqY29weS5leHA6IEFjY2VwdCBtYWluIGFzIGEgZGF0YSBzeW1ib2wgYXMgd2VsbC4KKworMjAwNC0wMi0yNyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KKworCSogYmludXRpbHMtYWxsL2FyLmV4cCAoYXJndW1lbnRfcGFyc2luZyk6IE5ldyB0ZXN0LgorCiAyMDA0LTAyLTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgogCiAJKiBiaW51dGlscy1hbGwvb2JqY29weS5leHA6IFJlb3JkZXIgYXJndW1lbnRzIGZvciBQT1NJWExZX0NPUlJFQ1QKZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3Rlc3RzdWl0ZS9iaW51dGlscy1hbGwvYXIuZXhwIGIvYmludXRpbHMvdGVzdHN1aXRlL2JpbnV0aWxzLWFsbC9hci5leHAKaW5kZXggZjQxOGU5NC4uN2YwMWM3NiAxMDA2NDQKLS0tIGEvYmludXRpbHMvdGVzdHN1aXRlL2JpbnV0aWxzLWFsbC9hci5leHAKKysrIGIvYmludXRpbHMvdGVzdHN1aXRlL2JpbnV0aWxzLWFsbC9hci5leHAKQEAgLTEsNCArMSw0IEBACi0jICAgQ29weXJpZ2h0IDE5OTUsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IDE5OTUsIDE5OTcsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTIxNCw3ICsyMTQsNDMgQEAKICAgICBwYXNzICR0ZXN0bmFtZQogfQogCisjIFRlc3QgUE9TSVgtY29tcGF0aWJsZSBhcmd1bWVudCBwYXJzaW5nLgorCitwcm9jIGFyZ3VtZW50X3BhcnNpbmcgeyB9IHsKKyAgICBnbG9iYWwgQVIKKyAgICBnbG9iYWwgQVMKKyAgICBnbG9iYWwgc3JjZGlyCisgICAgZ2xvYmFsIHN1YmRpcgorCisgICAgc2V0IHRlc3RuYW1lICJhciBhcmd1bWVudCBwYXJzaW5nIgorCisgICAgaWYgIVtiaW51dGlsc19hc3NlbWJsZSAkc3JjZGlyLyRzdWJkaXIvYmludGVzdC5zIHRtcGRpci9iaW50ZXN0Lm9dIHsKKwl1bnJlc29sdmVkICR0ZXN0bmFtZQorCXJldHVybgorICAgIH0KKworICAgIGlmIFtpc19yZW1vdGUgaG9zdF0geworCXNldCBhcmNoaXZlIGFydGVzdC5hCisJc2V0IG9iamZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0IHRtcGRpci9iaW50ZXN0Lm9dCisJcmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgJGFyY2hpdmUKKyAgICB9IGVsc2UgeworCXNldCBhcmNoaXZlIHRtcGRpci9hcnRlc3QuYQorCXNldCBvYmpmaWxlIHRtcGRpci9iaW50ZXN0Lm8KKyAgICB9CisKKyAgICByZW1vdGVfZmlsZSBidWlsZCBkZWxldGUgdG1wZGlyL2FydGVzdC5hCisKKyAgICBzZXQgZ290IFtiaW51dGlsc19ydW4gJEFSICItciAtYyAkYXJjaGl2ZSAke29iamZpbGV9Il0KKyAgICBpZiAhW3N0cmluZyBtYXRjaCAiIiAkZ290XSB7CisJZmFpbCAkdGVzdG5hbWUKKwlyZXR1cm4KKyAgICB9CisKKyAgICBwYXNzICR0ZXN0bmFtZQorfQorCiAjIFJ1biB0aGUgdGVzdHMuCiAKIGxvbmdfZmlsZW5hbWVzCiBzeW1ib2xfdGFibGUKK2FyZ3VtZW50X3BhcnNpbmcKZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3Rlc3RzdWl0ZS9iaW51dGlscy1hbGwvb2JqY29weS5leHAgYi9iaW51dGlscy90ZXN0c3VpdGUvYmludXRpbHMtYWxsL29iamNvcHkuZXhwCmluZGV4IGM2YTJkNTMuLmU4NDg2OGIgMTAwNjQ0Ci0tLSBhL2JpbnV0aWxzL3Rlc3RzdWl0ZS9iaW51dGlscy1hbGwvb2JqY29weS5leHAKKysrIGIvYmludXRpbHMvdGVzdHN1aXRlL2JpbnV0aWxzLWFsbC9vYmpjb3B5LmV4cApAQCAtNjEzLDggKzYxMyw4IEBACiAJcmVnc3ViICJeXFswLTlhLWZBLUZcXStcWyBcXStUIE1haW5cW1xuXHJcXSsiICRleGVjX291dHB1dCAiIiBleGVjX291dHB1dAogICAgIH0KIAotICAgIGlmIHshW3JlZ2V4cCB7XlswLTlhLWZBLUZdKyBUIG1haW59ICRleGVjX291dHB1dF0gXAotICAgICAgICAgJiYgIVtyZWdleHAge15bMC05YS1mQS1GXSsgVCBfbWFpbn0gJGV4ZWNfb3V0cHV0XX0geworICAgIGlmIHshW3JlZ2V4cCB7XihbMC05YS1mQS1GXSspP1sgXStbVERdIG1haW59ICRleGVjX291dHB1dF0gXAorICAgICAgICAgJiYgIVtyZWdleHAge14oWzAtOWEtZkEtRl0rKT9bIF0rW1REXSBfbWFpbn0gJGV4ZWNfb3V0cHV0XX0gewogCWZhaWwgJHRlc3QKIAlyZXR1cm4KICAgICB9CmRpZmYgLS1naXQgYS9jb25maWcuZ3Vlc3MgYi9jb25maWcuZ3Vlc3MKaW5kZXggZmE1ODQ1OS4uMDBjY2Y4OSAxMDA3NTUKLS0tIGEvY29uZmlnLmd1ZXNzCisrKyBiL2NvbmZpZy5ndWVzcwpAQCAtMyw3ICszLDcgQEAKICMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCiAjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAotdGltZXN0YW1wPScyMDAzLTA2LTEyJwordGltZXN0YW1wPScyMDA0LTAyLTE2JwogCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CiAjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xOTcsMTIgKzE5NywxOCBAQAogCSMgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0gaXMgdXNlZC4KIAllY2hvICIke21hY2hpbmV9LSR7b3N9JHtyZWxlYXNlfSIKIAlleGl0IDAgOzsKKyAgICBhbWQ2NDpPcGVuQlNEOio6KikKKwllY2hvIHg4Nl82NC11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CiAgICAgYW1pZ2E6T3BlbkJTRDoqOiopCiAJZWNobyBtNjhrLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDAgOzsKICAgICBhcmM6T3BlbkJTRDoqOiopCiAJZWNobyBtaXBzZWwtdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgMCA7OworICAgIGNhdHM6T3BlbkJTRDoqOiopCisJZWNobyBhcm0tdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OwogICAgIGhwMzAwOk9wZW5CU0Q6KjoqKQogCWVjaG8gbTY4ay11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCAwIDs7CkBAIC0yMjEsNiArMjI3LDkgQEAKICAgICBtdm1lcHBjOk9wZW5CU0Q6KjoqKQogCWVjaG8gcG93ZXJwYy11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCAwIDs7CisgICAgcGVnYXNvczpPcGVuQlNEOio6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OwogICAgIHBtYXg6T3BlbkJTRDoqOiopCiAJZWNobyBtaXBzZWwtdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgMCA7OwpAQCAtMjM2LDYgKzI0NSwxNSBAQAogICAgICo6T3BlbkJTRDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDAgOzsKKyAgICAqOmVra29CU0Q6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWVra29ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgbWFjcHBjOk1pckJTRDoqOiopCisJZWNobyBwb3dlcnBwYy11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICAqOk1pckJTRDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OwogICAgIGFscGhhOk9TRjE6KjoqKQogCWlmIHRlc3QgJFVOQU1FX1JFTEVBU0UgPSAiVjQuMCI7IHRoZW4KIAkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDN9J2AKQEAgLTMwNyw2ICszMjUsOSBAQAogICAgICo6T1MvMzkwOio6KikKIAllY2hvIGkzNzAtaWJtLW9wZW5lZGl0aW9uCiAJZXhpdCAwIDs7CisgICAgKjpPUzQwMDoqOiopCisgICAgICAgIGVjaG8gcG93ZXJwYy1pYm0tb3M0MDAKKwlleGl0IDAgOzsKICAgICBhcm06UklTQyo6MS5bMDEyXSo6Knxhcm06cmlzY2l4OjEuWzAxMl0qOiopCiAJZWNobyBhcm0tYWNvcm4tcmlzY2l4JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgMDs7CkBAIC0zOTksNiArNDIwLDkgQEAKICAgICAqOipNaU5UOio6KiB8ICo6Km1pbnQ6KjoqIHwgKjoqVE9TOio6KikKICAgICAgICAgZWNobyBtNjhrLXVua25vd24tbWludCR7VU5BTUVfUkVMRUFTRX0KICAgICAgICAgZXhpdCAwIDs7CisgICAgbTY4azptYWNodGVuOio6KikKKwllY2hvIG02OGstYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKICAgICBwb3dlcnBjOm1hY2h0ZW46KjoqKQogCWVjaG8gcG93ZXJwYy1hcHBsZS1tYWNodGVuJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgMCA7OwpAQCAtNzM0LDcgKzc1OCw3IEBACiAJZWNobyBzdjEtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKIAlleGl0IDAgOzsKICAgICAqOlVOSUNPUy9tcDoqOiopCi0JZWNobyBudjEtY3JheS11bmljb3NtcCR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJyAKKwllY2hvIG52MS1jcmF5LXVuaWNvc21wJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCiAJZXhpdCAwIDs7CiAgICAgRjMwWzAxXTpVTklYX1N5c3RlbV9WOio6KiB8IEY3MDA6VU5JWF9TeXN0ZW1fVjoqOiopCiAJRlVKSVRTVV9QUk9DPWB1bmFtZSAtbSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKQEAgLTc0Miw2ICs3NjYsMTEgQEAKICAgICAgICAgRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gL18vJ2AKICAgICAgICAgZWNobyAiJHtGVUpJVFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKICAgICAgICAgZXhpdCAwIDs7CisgICAgNTAwMDpVTklYX1N5c3RlbV9WOjQuKjoqKQorICAgICAgICBGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisgICAgICAgIEZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvIC9fLydgCisgICAgICAgIGVjaG8gInNwYXJjLWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKwlleGl0IDAgOzsKICAgICBpKjg2OkJTRC8zODY6KjoqIHwgaSo4NjpCU0QvT1M6KjoqIHwgKjpBc2NlbmRcIEVtYmVkZGVkL09TOio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtYnNkaSR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDAgOzsKQEAgLTc1MSw3ICs3ODAsNyBAQAogICAgICo6QlNEL09TOio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1ic2RpJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgMCA7OwotICAgICo6RnJlZUJTRDoqOip8KjpHTlUvRnJlZUJTRDoqOiopCisgICAgKjpGcmVlQlNEOio6KikKIAkjIERldGVybWluZSB3aGV0aGVyIHRoZSBkZWZhdWx0IGNvbXBpbGVyIHVzZXMgZ2xpYmMuCiAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAogCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCkBAIC03NjMsNyArNzkyLDEwIEBACiAJI2VuZGlmCiBFT0YKIAlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCBeTElCQz1gCi0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2Ake0xJQkM6Ky0kTElCQ30KKwkjIEdOVS9LRnJlZUJTRCBzeXN0ZW1zIGhhdmUgYSAiayIgcHJlZml4IHRvIGluZGljYXRlIHdlIGFyZSB1c2luZworCSMgRnJlZUJTRCdzIGtlcm5lbCwgYnV0IG5vdCB0aGUgY29tcGxldGUgT1MuCisJY2FzZSAke0xJQkN9IGluIGdudSkga2VybmVsX29ubHk9J2snIDs7IGVzYWMKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi0ke2tlcm5lbF9vbmx5fWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgJHtMSUJDOistJExJQkN9CiAJZXhpdCAwIDs7CiAgICAgaSo6Q1lHV0lOKjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1jeWd3aW4KQEAgLTc5Niw4ICs4MjgsMTMgQEAKIAllY2hvIHBvd2VycGNsZS11bmtub3duLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCiAJZXhpdCAwIDs7CiAgICAgKjpHTlU6KjoqKQorCSMgdGhlIEdOVSBzeXN0ZW0KIAllY2hvIGBlY2hvICR7VU5BTUVfTUFDSElORX18c2VkIC1lICdzLFstL10uKiQsLCdgLXVua25vd24tZ251YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MsLy4qJCwsJ2AKIAlleGl0IDAgOzsKKyAgICAqOkdOVS8qOio6KikKKwkjIG90aGVyIHN5c3RlbXMgd2l0aCBHTlUgbGliYyBhbmQgdXNlcmxhbmQKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1gZWNobyAke1VOQU1FX1NZU1RFTX0gfCBzZWQgJ3MsXlteL10qLywsJyB8IHRyICdbQS1aXScgJ1thLXpdJ2BgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgLWdudQorCWV4aXQgMCA7OwogICAgIGkqODY6TWluaXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5peAogCWV4aXQgMCA7OwpAQCAtODg1LDYgKzkyMiw5IEBACiAgICAgczM5MDpMaW51eDoqOiogfCBzMzkweDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eAogCWV4aXQgMCA7OworICAgIHNoNjQqOkxpbnV4Oio6KikKKyAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCAwIDs7CiAgICAgc2gqOkxpbnV4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDAgOzsKQEAgLTk0Miw2ICs5ODIsOSBAQAogCUxJQkM9Z251YW91dAogCSNlbmRpZgogCSNlbmRpZgorCSNpZmRlZiBfX2RpZXRsaWJjX18KKwlMSUJDPWRpZXRsaWJjCisJI2VuZGlmCiBFT0YKIAlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCBeTElCQz1gCiAJdGVzdCB4IiR7TElCQ30iICE9IHggJiYgZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9IiAmJiBleGl0IDAKQEAgLTk3Miw2ICsxMDE1LDkgQEAKICAgICBpKjg2OmF0aGVvczoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYXRoZW9zCiAJZXhpdCAwIDs7CisJaSo4NjpzeWxsYWJsZToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5bGxhYmxlCisJZXhpdCAwIDs7CiAgICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LjAqOiopCiAJZWNobyBpMzg2LXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgMCA7OwpAQCAtMTA0Myw3ICsxMDg5LDcgQEAKIAlleGl0IDAgOzsKICAgICBNNjgqOio6UjNWWzU2N10qOiopCiAJdGVzdCAtciAvc3lzVjY4ICYmIGVjaG8gJ202OGstbW90b3JvbGEtc3lzdicgJiYgZXhpdCAwIDs7Ci0gICAgM1szNF0/PzoqOjQuMDozLjAgfCAzWzM0XT8/QToqOjQuMDozLjAgfCAzWzM0XT8/LCo6Kjo0LjA6My4wIHwgM1szNF0/Py8qOio6NC4wOjMuMCB8IDQ0MDA6Kjo0LjA6My4wIHwgNDg1MDoqOjQuMDozLjAgfCBTS0E0MDoqOjQuMDozLjAgfCBTRFMyOio6NC4wOjMuMCB8IFNIRzI6Kjo0LjA6My4wKQorICAgIDNbMzQ1XT8/Oio6NC4wOjMuMCB8IDNbMzRdPz9BOio6NC4wOjMuMCB8IDNbMzRdPz8sKjoqOjQuMDozLjAgfCAzWzM0XT8/Lyo6Kjo0LjA6My4wIHwgNDQwMDoqOjQuMDozLjAgfCA0ODUwOio6NC4wOjMuMCB8IFNLQTQwOio6NC4wOjMuMCB8IFNEUzI6Kjo0LjA6My4wIHwgU0hHMjoqOjQuMDozLjApCiAJT1NfUkVMPScnCiAJdGVzdCAtciAvZXRjLy5yZWxpZCBcCiAJJiYgT1NfUkVMPS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwoWzAtOV1bMC05XVwpLiovXDEvcCcgPCAvZXRjLy5yZWxpZGAKQEAgLTExNTgsNyArMTIwNCw3IEBACiAgICAgKjpRTlg6Kjo0KikKIAllY2hvIGkzODYtcGMtcW54CiAJZXhpdCAwIDs7Ci0gICAgTlNSLVtER0tMTlBUVlddOk5PTlNUT1BfS0VSTkVMOio6KikKKyAgICBOU1ItPzpOT05TVE9QX0tFUk5FTDoqOiopCiAJZWNobyBuc3ItdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDAgOzsKICAgICAqOk5vblN0b3AtVVg6KjoqKQpAQCAtMTE5OSw2ICsxMjQ1LDEyIEBACiAgICAgKjpJVFM6KjoqKQogCWVjaG8gcGRwMTAtdW5rbm93bi1pdHMKIAlleGl0IDAgOzsKKyAgICBTRUk6KjoqOlNFSVVYKQorICAgICAgICBlY2hvIG1pcHMtc2VpLXNlaXV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgICo6RHJhZ29uRmx5Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1kcmFnb25mbHlgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgCisJZXhpdCAwIDs7CiBlc2FjCiAKICNlY2hvICcoTm8gdW5hbWUgY29tbWFuZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScgMT4mMgpkaWZmIC0tZ2l0IGEvY29uZmlnLnN1YiBiL2NvbmZpZy5zdWIKaW5kZXggZGZlZWQ0OC4uZDJlMzU1NyAxMDA3NTUKLS0tIGEvY29uZmlnLnN1YgorKysgYi9jb25maWcuc3ViCkBAIC0zLDcgKzMsNyBAQAogIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKICMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCi10aW1lc3RhbXA9JzIwMDMtMDYtMTMnCit0aW1lc3RhbXA9JzIwMDQtMDItMTYnCiAKICMgVGhpcyBmaWxlIGlzIChpbiBwcmluY2lwbGUpIGNvbW1vbiB0byBBTEwgR05VIHNvZnR3YXJlLgogIyBUaGUgcHJlc2VuY2Ugb2YgYSBtYWNoaW5lIGluIHRoaXMgZmlsZSBzdWdnZXN0cyB0aGF0IFNPTUUgR05VIHNvZnR3YXJlCkBAIC0xMTgsNyArMTE4LDggQEAKICMgSGVyZSB3ZSBtdXN0IHJlY29nbml6ZSBhbGwgdGhlIHZhbGlkIEtFUk5FTC1PUyBjb21iaW5hdGlvbnMuCiBtYXliZV9vcz1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDIvJ2AKIGNhc2UgJG1heWJlX29zIGluCi0gIG50by1xbngqIHwgbGludXgtZ251KiB8IGZyZWVic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBzdG9ybS1jaGFvcyogfCBvczItZW14KiB8IHJ0bWstbm92YSopCisgIG50by1xbngqIHwgbGludXgtZ251KiB8IGxpbnV4LWRpZXRsaWJjIHwgbGludXgtdWNsaWJjKiB8IHVjbGludXgtdWNsaWJjKiB8IHVjbGludXgtZ251KiB8IFwKKyAga2ZyZWVic2QqLWdudSogfCBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgc3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQogICAgIG9zPS0kbWF5YmVfb3MKICAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMS8nYAogICAgIDs7CkBAIC0yMjgsMTMgKzIyOSwxNCBAQAogCXwgYTI5ayBcCiAJfCBhbHBoYSB8IGFscGhhZXZbNC04XSB8IGFscGhhZXY1NiB8IGFscGhhZXY2Wzc4XSB8IGFscGhhcGNhNVs2N10gXAogCXwgYWxwaGE2NCB8IGFscGhhNjRldls0LThdIHwgYWxwaGE2NGV2NTYgfCBhbHBoYTY0ZXY2Wzc4XSB8IGFscGhhNjRwY2E1WzY3XSBcCisJfCBhbTMzXzIuMCBcCiAJfCBhcmMgfCBhcm0gfCBhcm1bYmxdZSB8IGFybWVbbGJdIHwgYXJtdlsyMzQ1XSB8IGFybXZbMzQ1XVtsYl0gfCBhdnIgXAogCXwgYzR4IHwgY2xpcHBlciBcCiAJfCBkMTB2IHwgZDMwdiB8IGRseCB8IGRzcDE2eHggXAogCXwgZnIzMCB8IGZydiBcCiAJfCBoODMwMCB8IGg4NTAwIHwgaHBwYSB8IGhwcGExLlswMV0gfCBocHBhMi4wIHwgaHBwYTIuMFtud10gfCBocHBhNjQgXAogCXwgaTM3MCB8IGk4NjAgfCBpOTYwIHwgaWE2NCBcCi0JfCBpcTIwMDAgfCBpcDJrIFwKKwl8IGlwMmsgfCBpcTIwMDAgXAogCXwgbTMyciB8IG02ODAwMCB8IG02OGsgfCBtODhrIHwgbWNvcmUgXAogCXwgbWlwcyB8IG1pcHNiZSB8IG1pcHNlYiB8IG1pcHNlbCB8IG1pcHNsZSBcCiAJfCBtaXBzMTYgXApAQCAtMjQ3LDYgKzI0OSw3IEBACiAJfCBtaXBzaXNhMzIgfCBtaXBzaXNhMzJlbCBcCiAJfCBtaXBzaXNhMzJyMiB8IG1pcHNpc2EzMnIyZWwgXAogCXwgbWlwc2lzYTY0IHwgbWlwc2lzYTY0ZWwgXAorCXwgbWlwc2lzYTY0cjIgfCBtaXBzaXNhNjRyMmVsIFwKIAl8IG1pcHNpc2E2NHNiMSB8IG1pcHNpc2E2NHNiMWVsIFwKIAl8IG1pcHNpc2E2NHNyNzFrIHwgbWlwc2lzYTY0c3I3MWtlbCBcCiAJfCBtaXBzdHgzOSB8IG1pcHN0eDM5ZWwgXApAQCAtMzA0LDcgKzMwNyw3IEBACiAJfCBoODMwMC0qIHwgaDg1MDAtKiBcCiAJfCBocHBhLSogfCBocHBhMS5bMDFdLSogfCBocHBhMi4wLSogfCBocHBhMi4wW253XS0qIHwgaHBwYTY0LSogXAogCXwgaSo4Ni0qIHwgaTg2MC0qIHwgaTk2MC0qIHwgaWE2NC0qIFwKLQl8IGlxMjAwMC0qIHwgaXAyay0qIFwKKwl8IGlwMmstKiB8IGlxMjAwMC0qIFwKIAl8IG0zMnItKiBcCiAJfCBtNjgwMDAtKiB8IG02ODBbMDEyMzQ2XTAtKiB8IG02ODM2MC0qIHwgbTY4Mz8yLSogfCBtNjhrLSogXAogCXwgbTg4MTEwLSogfCBtODhrLSogfCBtY29yZS0qIFwKQEAgLTMxOSw2ICszMjIsNyBAQAogCXwgbWlwc2lzYTMyLSogfCBtaXBzaXNhMzJlbC0qIFwKIAl8IG1pcHNpc2EzMnIyLSogfCBtaXBzaXNhMzJyMmVsLSogXAogCXwgbWlwc2lzYTY0LSogfCBtaXBzaXNhNjRlbC0qIFwKKwl8IG1pcHNpc2E2NHIyLSogfCBtaXBzaXNhNjRyMmVsLSogXAogCXwgbWlwc2lzYTY0c2IxLSogfCBtaXBzaXNhNjRzYjFlbC0qIFwKIAl8IG1pcHNpc2E2NHNyNzFrLSogfCBtaXBzaXNhNjRzcjcxa2VsLSogXAogCXwgbWlwc3R4MzktKiB8IG1pcHN0eDM5ZWwtKiBcCkBAIC0zNTksNiArMzYzLDkgQEAKIAkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAogCQlvcz0tdWRpCiAJCTs7CisgICAgCWFiYWN1cykKKwkJYmFzaWNfbWFjaGluZT1hYmFjdXMtdW5rbm93bgorCQk7OwogCWFkb2JlNjhrKQogCQliYXNpY19tYWNoaW5lPW02ODAxMC1hZG9iZQogCQlvcz0tc2NvdXQKQEAgLTM3Niw2ICszODMsOSBAQAogCWFtZDY0KQogCQliYXNpY19tYWNoaW5lPXg4Nl82NC1wYwogCQk7OworCWFtZDY0LSopCisJCWJhc2ljX21hY2hpbmU9eDg2XzY0LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CiAJYW1kYWhsKQogCQliYXNpY19tYWNoaW5lPTU4MC1hbWRhaGwKIAkJb3M9LXN5c3YKQEAgLTQzNSw2ICs0NDUsMTAgQEAKIAkJYmFzaWNfbWFjaGluZT1qOTAtY3JheQogCQlvcz0tdW5pY29zCiAJCTs7CisJY3IxNmMpCisJCWJhc2ljX21hY2hpbmU9Y3IxNmMtdW5rbm93bgorCQlvcz0tZWxmCisJCTs7CiAJY3JkcyB8IHVub3MpCiAJCWJhc2ljX21hY2hpbmU9bTY4ay1jcmRzCiAJCTs7CkBAIC03NDAsNiArNzU0LDEwIEBACiAJCWJhc2ljX21hY2hpbmU9b3IzMi11bmtub3duCiAJCW9zPS1jb2ZmCiAJCTs7CisJb3M0MDApCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1pYm0KKwkJb3M9LW9zNDAwCisJCTs7CiAJT1NFNjgwMDAgfCBvc2U2ODAwMCkKIAkJYmFzaWNfbWFjaGluZT1tNjgwMDAtZXJpY3Nzb24KIAkJb3M9LW9zZQpAQCAtODQ3LDYgKzg2NSwxMCBAQAogCXNiMWVsKQogCQliYXNpY19tYWNoaW5lPW1pcHNpc2E2NHNiMWVsLXVua25vd24KIAkJOzsKKwlzZWkpCisJCWJhc2ljX21hY2hpbmU9bWlwcy1zZWkKKwkJb3M9LXNlaXV4CisJCTs7CiAJc2VxdWVudCkKIAkJYmFzaWNfbWFjaGluZT1pMzg2LXNlcXVlbnQKIAkJOzsKQEAgLTg1NCw2ICs4NzYsOSBAQAogCQliYXNpY19tYWNoaW5lPXNoLWhpdGFjaGkKIAkJb3M9LWhtcwogCQk7OworCXNoNjQpCisJCWJhc2ljX21hY2hpbmU9c2g2NC11bmtub3duCisJCTs7CiAJc3BhcmNsaXRlLXdycyB8IHNpbXNvLXdycykKIAkJYmFzaWNfbWFjaGluZT1zcGFyY2xpdGUtd3JzCiAJCW9zPS12eHdvcmtzCkBAIC05NTMsNiArOTc4LDEwIEBACiAJdG93ZXIgfCB0b3dlci0zMikKIAkJYmFzaWNfbWFjaGluZT1tNjhrLW5jcgogCQk7OworCXRwZikKKwkJYmFzaWNfbWFjaGluZT1zMzkweC1pYm0KKwkJb3M9LXRwZgorCQk7OwogCXVkaTI5aykKIAkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAogCQlvcz0tdWRpCkBAIC0xMTIxLDE5ICsxMTUwLDIwIEBACiAJICAgICAgfCAtYW9zKiBcCiAJICAgICAgfCAtbmluZHkqIHwgLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC1lYm1vbiogfCAtaG1zKiB8IC1tdnMqIFwKIAkgICAgICB8IC1jbGl4KiB8IC1yaXNjb3MqIHwgLXVuaXBsdXMqIHwgLWlyaXMqIHwgLXJ0dSogfCAteGVuaXgqIFwKLQkgICAgICB8IC1oaXV4KiB8IC0zODZic2QqIHwgLW5ldGJzZCogfCAtb3BlbmJzZCogfCAtZnJlZWJzZCogfCAtcmlzY2l4KiBcCi0JICAgICAgfCAtbHlueG9zKiB8IC1ib3N4KiB8IC1uZXh0c3RlcCogfCAtY3h1eCogfCAtYW91dCogfCAtZWxmKiB8IC1vYWJpKiBcCisJICAgICAgfCAtaGl1eCogfCAtMzg2YnNkKiB8IC1rbmV0YnNkKiB8IC1taXJic2QqIHwgLW5ldGJzZCogfCAtb3BlbmJzZCogXAorCSAgICAgIHwgLWVra29ic2QqIHwgLWtmcmVlYnNkKiB8IC1mcmVlYnNkKiB8IC1yaXNjaXgqIHwgLWx5bnhvcyogXAorCSAgICAgIHwgLWJvc3gqIHwgLW5leHRzdGVwKiB8IC1jeHV4KiB8IC1hb3V0KiB8IC1lbGYqIHwgLW9hYmkqIFwKIAkgICAgICB8IC1wdHgqIHwgLWNvZmYqIHwgLWVjb2ZmKiB8IC13aW5udCogfCAtZG9tYWluKiB8IC12c3RhKiBcCiAJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCiAJICAgICAgfCAtY2hvcnVzb3MqIHwgLWNob3J1c3JkYiogXAogCSAgICAgIHwgLWN5Z3dpbiogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKLQkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIFwKKwkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LXVjbGliYyogfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAogCSAgICAgIHwgLWludGVyaXgqIHwgLXV3aW4qIHwgLW1rcyogfCAtcmhhcHNvZHkqIHwgLWRhcndpbiogfCAtb3BlbmVkKiBcCiAJICAgICAgfCAtb3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9uc3RvcHV4KiBcCiAJICAgICAgfCAtc3Rvcm0tY2hhb3MqIHwgLXRvcHMxMCogfCAtdGVuZXgqIHwgLXRvcHMyMCogfCAtaXRzKiBcCiAJICAgICAgfCAtb3MyKiB8IC12b3MqIHwgLXBhbG1vcyogfCAtdWNsaW51eCogfCAtbnVjbGV1cyogXAogCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgqIHwgLXJ0bWsqIHwgLXJ0bWstbm92YSogfCAtd2luZGlzcyogXAotCSAgICAgIHwgLXBvd2VybWF4KiB8IC1kbml4KiB8IC1ueDYgfCAtbng3KQorCSAgICAgIHwgLXBvd2VybWF4KiB8IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5KikKIAkjIFJlbWVtYmVyLCBlYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCiAJCTs7CiAJLXFueCopCkBAIC0xMTU3LDYgKzExODcsOSBAQAogCS1tYWMqKQogCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bWFjfG1hY29zfCdgCiAJCTs7CisJLWxpbnV4LWRpZXRsaWJjKQorCQlvcz0tbGludXgtZGlldGxpYmMKKwkJOzsKIAktbGludXgqKQogCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bGludXh8bGludXgtZ251fCdgCiAJCTs7CkBAIC0xMTY5LDYgKzEyMDIsOSBAQAogCS1vcGVuZWQqKQogCQlvcz0tb3BlbmVkaXRpb24KIAkJOzsKKyAgICAgICAgLW9zNDAwKikKKwkJb3M9LW9zNDAwCisJCTs7CiAJLXdpbmNlKikKIAkJb3M9LXdpbmNlCiAJCTs7CkBAIC0xMTkwLDYgKzEyMjYsOSBAQAogCS1hdGhlb3MqKQogCQlvcz0tYXRoZW9zCiAJCTs7CisJLXN5bGxhYmxlKikKKwkJb3M9LXN5bGxhYmxlCisJCTs7CiAJLTM4NmJzZCkKIAkJb3M9LWJzZAogCQk7OwpAQCAtMTIxMiw2ICsxMjUxLDkgQEAKIAktc2luaXgqKQogCQlvcz0tc3lzdjQKIAkJOzsKKyAgICAgICAgLXRwZiopCisJCW9zPS10cGYKKwkJOzsKIAktdHJpdG9uKikKIAkJb3M9LXN5c3YzCiAJCTs7CkBAIC0xNDYwLDkgKzE1MDIsMTUgQEAKIAkJCS1tdnMqIHwgLW9wZW5lZCopCiAJCQkJdmVuZG9yPWlibQogCQkJCTs7CisJCQktb3M0MDAqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OwogCQkJLXB0eCopCiAJCQkJdmVuZG9yPXNlcXVlbnQKIAkJCQk7OworCQkJLXRwZiopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CiAJCQktdnhzaW0qIHwgLXZ4d29ya3MqIHwgLXdpbmRpc3MqKQogCQkJCXZlbmRvcj13cnMKIAkJCQk7OwpkaWZmIC0tZ2l0IGEvY29uZmlnL0NoYW5nZUxvZyBiL2NvbmZpZy9DaGFuZ2VMb2cKaW5kZXggODU4NjhiNC4uN2E5NzBiNyAxMDA2NDQKLS0tIGEvY29uZmlnL0NoYW5nZUxvZworKysgYi9jb25maWcvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDQtMDMtMDggIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CisKKwlQUiBhZGEvMTQxMzEKKwlNb3ZlIGxhbmd1YWdlIGRldGVjdGlvbiB0byB0aGUgdG9wIGxldmVsLgorCSogYWN4Lm00IChBQ1hfUFJPR19HTkFUKTogTmV3IG1hY3JvLCBtb3ZlZCBoZXJlCisJZnJvbSB0aGUgZ2NjIHN1YmRpcmVjdG9yeS4KKworMjAwNC0wMy0wOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CisKKwkqIGFjY3Jvc3MubTQgKEFDX0NfQklHRU5ESUFOX0NST1NTKTogQ29tcGlsZSBlbmRpYW4gcHJvYmUgd2l0aAorCSItYyIuICBQcm9wZXJseSBxdW90ZSBwYXJhbWV0ZXIgZm9yIEFDX01TR19FUlJPUi4KKwogMjAwNC0wMS0xNCAgTWFjaWVqIFcuIFJvenlja2kgIDxtYWNyb0BkczIucGcuZ2RhLnBsPgogCiAJKiBhY2luY2x1ZGUubTQ6IFF1b3RlIG5hbWVzIG9mIG1hY3JvcyB0byBiZSBkZWZpbmVkIGJ5IEFDX0RFRlVOCmRpZmYgLS1naXQgYS9jb25maWcvYWNjcm9zcy5tNCBiL2NvbmZpZy9hY2Nyb3NzLm00CmluZGV4IGE0Y2ViZjYuLjUzNWE2ZjUgMTAwNjQ0Ci0tLSBhL2NvbmZpZy9hY2Nyb3NzLm00CisrKyBiL2NvbmZpZy9hY2Nyb3NzLm00CkBAIC02NCw3ICs2NCw3IEBACiBpbnQgbWFpbigpIHsgX2FzY2lpICgpOyBfZWJjZGljICgpOyByZXR1cm4gMDsgfQogRU9GCiBdIGlmIHRlc3QgLWYgY29uZnRlc3QuYyA7IHRoZW4KLSAgICAgaWYgJHtDQy1jY30gJHtDRkxBR1N9IGNvbmZ0ZXN0LmMgLW8gY29uZnRlc3QubyAmJiB0ZXN0IC1mIGNvbmZ0ZXN0Lm8gOyB0aGVuCisgICAgIGlmICR7Q0MtY2N9ICR7Q0ZMQUdTfSAtYyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0Lm8gJiYgdGVzdCAtZiBjb25mdGVzdC5vIDsgdGhlbgogICAgICAgICBpZiB0ZXN0IGBncmVwIC1sIEJJR2VuRGlhblN5UyBjb25mdGVzdC5vYCA7IHRoZW4KICAgICAgICAgICAgZWNobyAkYWNfbiAnIGJpZyBlbmRpYW4gcHJvYmUgT0ssICcgMT4mQUNfRkRfTVNHCiAgICAgICAgICAgIGFjX2N2X2NfYmlnZW5kaWFuPXllcwpAQCAtOTMsNiArOTMsNiBAQAogZmkKIEFDX0RFRklORV9VTlFVT1RFRChCWVRFT1JERVIsICRCWVRFT1JERVIsIFsxMjM0ID0gTElMX0VORElBTiwgNDMyMSA9IEJJR0VORElBTl0pCiBpZiB0ZXN0ICRhY19jdl9jX2JpZ2VuZGlhbiA9IHVua25vd247IHRoZW4KLSAgQUNfTVNHX0VSUk9SKHVua25vd24gZW5kaWFuZXNzIC0gc29ycnksIHBsZWFzZSBwcmUtc2V0IGFjX2N2X2NfYmlnZW5kaWFuKQorICBBQ19NU0dfRVJST1IoW3Vua25vd24gZW5kaWFuZXNzIC0gc29ycnksIHBsZWFzZSBwcmUtc2V0IGFjX2N2X2NfYmlnZW5kaWFuXSkKIGZpCiBdKQpkaWZmIC0tZ2l0IGEvY29uZmlnL2FjeC5tNCBiL2NvbmZpZy9hY3gubTQKaW5kZXggOTZiN2M4YS4uYWI3Zjk4YSAxMDA2NDQKLS0tIGEvY29uZmlnL2FjeC5tNAorKysgYi9jb25maWcvYWN4Lm00CkBAIC0xNTUsMyArMTU1LDM4IEBACiBbQUNfUkVRVUlSRShbQUNfUFJPR19DUFBdKWRubAogbTRfZGVmaW5lKFtBQ19DSEVDS19IRUFERVJdLG00X2RlZm4oW19BQ19DSEVDS19IRUFERVJfT0xEXSkpCiBhY19jX3ByZXByb2Nfd2Fybl9mbGFnPXllc10pIyBBQ19QUk9HX0NQUF9XRVJST1IKKworIyBUZXN0IGZvciBHTkFULgorIyBXZSByZXF1aXJlIHRoZSBnbmF0YmluZCBwcm9ncmFtLCBhbmQgYSBjb21waWxlciBkcml2ZXIgdGhhdAorIyB1bmRlcnN0YW5kcyBBZGEuICBXZSB1c2UgdGhlIHVzZXIncyBDQyBzZXR0aW5nLCBhbHJlYWR5IGZvdW5kLgorIworIyBTZXRzIHRoZSBzaGVsbCB2YXJpYWJsZSBoYXZlX2duYXQgdG8geWVzIG9yIG5vIGFzIGFwcHJvcHJpYXRlLCBhbmQKKyMgc3Vic3RpdHV0ZXMgR05BVEJJTkQuCitBQ19ERUZVTihbQUNYX1BST0dfR05BVF0sCitbQUNfUkVRVUlSRShbQUNfQ0hFQ0tfVE9PTF9QUkVGSVhdKQorQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCitBQ19DSEVDS19UT09MKEdOQVRCSU5ELCBnbmF0YmluZCwgbm8pCitBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBjb21waWxlciBkcml2ZXIgdW5kZXJzdGFuZHMgQWRhXSwKKwkJIGFjeF9jdl9jY19nY2Nfc3VwcG9ydHNfYWRhLAorW2NhdCA+Y29uZnRlc3QuYWRiIDw8RU9GCitwcm9jZWR1cmUgY29uZnRlc3QgaXMgYmVnaW4gbnVsbDsgZW5kIGNvbmZ0ZXN0OworRU9GCithY3hfY3ZfY2NfZ2NjX3N1cHBvcnRzX2FkYT1ubworIyBUaGVyZSBpcyBhIGJ1ZyBpbiBvbGQgcmVsZWFzZWQgdmVyc2lvbnMgb2YgR0NDIHdoaWNoIGNhdXNlcyB0aGUKKyMgZHJpdmVyIHRvIGV4aXQgc3VjY2Vzc2Z1bGx5IHdoZW4gdGhlIGFwcHJvcHJpYXRlIGxhbmd1YWdlIG1vZHVsZQorIyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkLiAgVGhpcyBpcyBmaXhlZCBpbiAyLjk1LjQsIDMuMC4yLCBhbmQgMy4xLgorIyBUaGVyZWZvcmUgd2UgbXVzdCBjaGVjayBmb3IgdGhlIGVycm9yIG1lc3NhZ2UgYXMgd2VsbCBhcyBhbgorIyB1bnN1Y2Nlc3NmdWwgZXhpdC4KK2Vycm9ycz1gKCR7Q0N9IC1jIGNvbmZ0ZXN0LmFkYikgMj4mMSB8fCBlY2hvIGZhaWx1cmVgCitpZiB0ZXN0IHgiJGVycm9ycyIgPSB4OyB0aGVuCisgIGFjeF9jdl9jY19nY2Nfc3VwcG9ydHNfYWRhPXllcworICBicmVhaworZmkKK3JtIC1mIGNvbmZ0ZXN0LipdKQorCitpZiB0ZXN0IHgkR05BVEJJTkQgIT0geG5vICYmIHRlc3QgeCRhY3hfY3ZfZ2NjX3N1cHBvcnRzX2FkYSAhPSB4bm87IHRoZW4KKyAgaGF2ZV9nbmF0PXllcworZWxzZQorICBoYXZlX2duYXQ9bm8KK2ZpCitdKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDEzMzg0YTQuLmY4YzVjZmUgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTIxLDYgKzIxLDggQEAKIGFjX2hlbHA9IiRhY19oZWxwCiAgIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSBlbmFibGUgbWFrZSBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIG5vdCB1c2VmdWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCBzb21ldGltZXMgY29uZnVzaW5nKSB0byB0aGUgY2FzdWFsIGluc3RhbGxlciIKK2FjX2hlbHA9IiRhY19oZWxwCisgIC0tZW5hYmxlLXdlcnJvciAgICAgICAgIGVuYWJsZSAtV2Vycm9yIGluIGJvb3RzdHJhcCBzdGFnZTIgYW5kIGxhdGVyIgogCiAjIEluaXRpYWxpemUgc29tZSB2YXJpYWJsZXMgc2V0IGJ5IG9wdGlvbnMuCiAjIFRoZSB2YXJpYWJsZXMgaGF2ZSB0aGUgc2FtZSBuYW1lcyBhcyB0aGUgb3B0aW9ucywgd2l0aApAQCAtNTc5LDcgKzU4MSw3IEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1ODM6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQorZWNobyAiY29uZmlndXJlOjU4NTogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1CiAKIGhvc3RfYWxpYXM9JGhvc3QKIGNhc2UgIiRob3N0X2FsaWFzIiBpbgpAQCAtNjAwLDcgKzYwMiw3IEBACiBlY2hvICIkYWNfdCIiJGhvc3QiIDE+JjYKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2MDQ6IGNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZSIgPiY1CitlY2hvICJjb25maWd1cmU6NjA2OiBjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUiID4mNQogCiB0YXJnZXRfYWxpYXM9JHRhcmdldAogY2FzZSAiJHRhcmdldF9hbGlhcyIgaW4KQEAgLTYxOCw3ICs2MjAsNyBAQAogZWNobyAiJGFjX3QiIiR0YXJnZXQiIDE+JjYKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjYyMjogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQorZWNobyAiY29uZmlndXJlOjYyNDogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQogCiBidWlsZF9hbGlhcz0kYnVpbGQKIGNhc2UgIiRidWlsZF9hbGlhcyIgaW4KQEAgLTY3Myw3ICs2NzUsNyBAQAogIyBTVlI0IC91c3IvdWNiL2luc3RhbGwsIHdoaWNoIHRyaWVzIHRvIHVzZSB0aGUgbm9uZXhpc3RlbnQgZ3JvdXAgInN0YWZmIgogIyAuL2luc3RhbGwsIHdoaWNoIGNhbiBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5IG1ha2UgZnJvbSAuL2luc3RhbGwuc2guCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgYSBCU0QgY29tcGF0aWJsZSBpbnN0YWxsIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2Nzc6IGNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwiID4mNQorZWNobyAiY29uZmlndXJlOjY3OTogY2hlY2tpbmcgZm9yIGEgQlNEIGNvbXBhdGlibGUgaW5zdGFsbCIgPiY1CiBpZiB0ZXN0IC16ICIkSU5TVEFMTCI7IHRoZW4KIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX2luc3RhbGwnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNzY5LDYgKzc3MSwxNCBAQAogCiAjIEFDX1BST0dfQ1BQX1dFUlJPUgogCisjIFRlc3QgZm9yIEdOQVQuCisjIFdlIHJlcXVpcmUgdGhlIGduYXRiaW5kIHByb2dyYW0sIGFuZCBhIGNvbXBpbGVyIGRyaXZlciB0aGF0CisjIHVuZGVyc3RhbmRzIEFkYS4gIFdlIHVzZSB0aGUgdXNlcidzIENDIHNldHRpbmcsIGFscmVhZHkgZm91bmQuCisjCisjIFNldHMgdGhlIHNoZWxsIHZhcmlhYmxlIGhhdmVfZ25hdCB0byB5ZXMgb3Igbm8gYXMgYXBwcm9wcmlhdGUsIGFuZAorIyBzdWJzdGl0dXRlcyBHTkFUQklORC4KKworCiAKICMjIyB3ZSBtaWdodCBuZWVkIHRvIHVzZSBzb21lIG90aGVyIHNoZWxsIHRoYW4gL2Jpbi9zaCBmb3IgcnVubmluZyBzdWJzaGVsbHMKICMjIyBJZiB3ZSBhcmUgb24gV2luZG93cywgc2VhcmNoIGZvciB0aGUgc2hlbGwuICBUaGlzIHdpbGwgcGVybWl0IHBlb3BsZQpAQCAtMTM3OSw3ICsxMzg5LDcgQEAKICAgICA7OwogICBwb3dlcnBjLSotYWl4KikKICAgICAjIGNvcGllZCBmcm9tIHJzNjAwMC0qLSogZW50cnkKLSAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgZ3Byb2YgdGFyZ2V0LWxpYmFkYSB0YXJnZXQtbGliZ2xvc3MgJHtsaWJnY2p9IgorICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyBncHJvZiB0YXJnZXQtbGliZ2xvc3MgJHtsaWJnY2p9IgogICAgIDs7CiAgIHBvd2VycGMqLSotd2lubnQqIHwgcG93ZXJwYyotKi1wZSogfCBwcGMqLSotcGUpCiAgICAgdGFyZ2V0X2NvbmZpZ2RpcnM9IiR0YXJnZXRfY29uZmlnZGlycyB0YXJnZXQtd2luc3VwIgpAQCAtMTQwMSw3ICsxNDExLDcgQEAKICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LW5ld2xpYiBncHJvZiAke2xpYmdjan0iCiAgICAgOzsKICAgcnM2MDAwLSotYWl4KikKLSAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgZ3Byb2YgdGFyZ2V0LWxpYmFkYSB0YXJnZXQtbGliZ2xvc3MgJHtsaWJnY2p9IgorICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyBncHJvZiB0YXJnZXQtbGliZ2xvc3MgJHtsaWJnY2p9IgogICAgIDs7CiAgIHJzNjAwMC0qLSopCiAgICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJzIGdwcm9mICR7bGliZ2NqfSIKQEAgLTE0MjksNiArMTQzOSw5IEBACiAgIG1pcHN0eDM5LSotKikKICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgZ3Byb2YgJHtsaWJnY2p9IiAgICMgc2FtZSBhcyBnZW5lcmljIG1pcHMKICAgICA7OworICBtaXBzNjQqLSotbGludXgqKQorICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbmV3bGliICR7bGliZ2NqfSIKKyAgICA7OwogICBtaXBzKi0qLWxpbnV4KikKICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LW5ld2xpYiB0YXJnZXQtbGliZ2xvc3MiCiAgICAgOzsKQEAgLTE1MTEsOTcgKzE1MjQsNzg3IEBACiAgICp0YXJnZXQtbmV3bGliKikgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJzIHRhcmdldC1saWJnbG9zcyIgOzsKIGVzYWMKIAorIyBXb3JrIGluIGRpc3RyaWJ1dGlvbnMgdGhhdCBjb250YWluIG5vIGNvbXBpbGVyIHRvb2xzLCBsaWtlIEF1dG9jb25mLgordGVudGF0aXZlX2NjPSIiCitob3N0X21ha2VmaWxlX2ZyYWc9L2Rldi9udWxsCitpZiB0ZXN0IC1kICR7c3JjZGlyfS9jb25maWcgOyB0aGVuCitjYXNlICIke2hvc3R9IiBpbgorICBtNjhrLWhwLWhwdXgqKQorICAgICMgQXZvaWQgInRvbyBtdWNoIGRlZmluaW5nIiBlcnJvcnMgZnJvbSBIUFVYIGNvbXBpbGVyLgorICAgIHRlbnRhdGl2ZV9jYz0iY2MgLVdwLC1IMjU2MDAwIgorICAgICMgSWYgImFyIiBpbiAkUEFUSCBpcyBHTlUgYXIsIHRoZSBzeW1ib2wgdGFibGUgbWF5IG5lZWQgcmVidWlsZGluZy4KKyAgICAjIElmIGl0J3MgSFAvVVggYXIsIHRoaXMgc2hvdWxkIGJlIGhhcm1sZXNzLgorICAgIFJBTkxJQj0iYXIgdHMiCisgICAgOzsKKyAgbTY4ay1hcG9sbG8tc3lzdiopCisgICAgdGVudGF0aXZlX2NjPSJjYyAtQSBhbnNpIC1BIHJ1bnR5cGUsYW55IC1BIHN5c3R5cGUsYW55IC1VX19TVERDX18gLURVU0ciCisgICAgOzsKKyAgbTY4ay1hcG9sbG8tYnNkKikKKyAgICAjTm9uZSBvZiB0aGUgQXBvbGxvIGNvbXBpbGVycyBjYW4gY29tcGlsZSBnYXMgb3IgYmludXRpbHMuICBUaGUgcHJlcHJvY2Vzc29yCisgICAgIyBjaG9rZXMgb24gYmZkLCB0aGUgY29tcGlsZXIgd29uJ3QgbGV0IHlvdSBhc3NpZ24gaW50ZWdlcnMgdG8gZW51bXMsIGFuZAorICAgICMgb3RoZXIgcHJvYmxlbXMuICBEZWZpbmluZyBDQyB0byBnY2MgaXMgYSBxdWVzdGlvbmFibGUgd2F5IHRvIHNheSAiZG9uJ3QgdXNlCisgICAgIyB0aGUgYXBvbGxvIGNvbXBpbGVyIiAodGhlIHByZWZlcnJlZCB2ZXJzaW9uIG9mIEdDQyBjb3VsZCBiZSBjYWxsZWQgY2MsCisgICAgIyBvciB3aGF0ZXZlciksIGJ1dCBJJ20gbm90IHN1cmUgbGVhdmluZyBDQyBhcyBjYyBpcyBhbnkgYmV0dGVyLi4uCisgICAgI0NDPWNjIC1BIGFuc2kgLUEgcnVudHlwZSxhbnkgLUEgc3lzdHlwZSxhbnkgLVVfX1NURENfXyAtRE5PX1NUREFSRworICAgICMgVXNlZCB0byBoYXZlIEJJU09OPXlhY2MuCisgICAgdGVudGF0aXZlX2NjPWdjYworICAgIDs7CisgIG04OGstZGctZGd1eCopCisgICAgdGVudGF0aXZlX2NjPSJnY2MgLVdhbGwgLWFuc2kgLURfX3VzaW5nX0RHVVgiCisgICAgOzsKKyAgbTg4ay1oYXJyaXMtY3h1eCopCisgICAgIyBVbmRlciBDWC9VWCwgd2Ugd2FudCB0byB0ZWxsIHRoZSBjb21waWxlciB0byB1c2UgQU5TSSBtb2RlLgorICAgIHRlbnRhdGl2ZV9jYz0iY2MgLVhhIgorICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLWN4dXgiCisgICAgOzsKKyAgbTg4ay1tb3Rvcm9sYS1zeXN2KikKKyAgICA7OworICBtaXBzKi1kZWMtdWx0cml4KikKKyAgICB0ZW50YXRpdmVfY2M9ImNjIC1XZiwtWE5nMTAwMCIKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1kZWNzdGF0aW9uIgorICAgIDs7CisgIG1pcHMqLW5lYy1zeXN2NCopCisgICAgIyBUaGUgQyBjb21waWxlciBvbiBORUMgTUlQUyBTVlI0IG5lZWRzIGJpZ2dlciB0YWJsZXMuCisgICAgdGVudGF0aXZlX2NjPSJjYyAtWlhOZD01MDAwIC1aWE5nPTEwMDAiCisgICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtbmVjdjQiCisgICAgOzsKKyAgbWlwcyotc2dpLWlyaXg0KikKKyAgICAjIFRlbGwgY29tcGlsZXIgdG8gdXNlIEsmUiBDLiAgV2UgY2FuJ3QgY29tcGlsZSB1bmRlciB0aGUgU0dJIEFuc2kKKyAgICAjIGVudmlyb25tZW50LiAgQWxzbyBidW1wIHN3aXRjaCB0YWJsZSBzaXplIHNvIHRoYXQgY3AtcGFyc2Ugd2lsbAorICAgICMgY29tcGlsZS4gIEJ1bXAgc3RyaW5nIGxlbmd0aCBsaW1pdCBzbyBsaW5rZXIgYnVpbGRzLgorICAgIHRlbnRhdGl2ZV9jYz0iY2MgLWNja3IgLVdmLC1YTmcxNTAwIC1XZiwtWE5rMTAwMCAtV2YsLVhOaDIwMDAgLVdmLC1YTmw4MTkyIgorICAgIDs7CisgIG1pcHMqLSotc3lzdjQqKQorICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLXN5c3Y0IgorICAgIDs7CisgIG1pcHMqLSotc3lzdiopCisgICAgIyBUaGlzIGlzIGZvciBhIE1JUFMgcnVubmluZyBSSVNDL29zIDQuNTJDLgorCisgICAgIyBUaGlzIGlzIG5lZWRlZCBmb3IgR0RCLCBidXQgbmVlZHMgdG8gYmUgaW4gdGhlIHRvcC1sZXZlbCBtYWtlIGJlY2F1c2UKKyAgICAjIGlmIGEgbGlicmFyeSBpcyBjb21waWxlZCB3aXRoIHRoZSBic2QgaGVhZGVycyBhbmQgZ2V0cyBsaW5rZWQgd2l0aCB0aGUKKyAgICAjIHN5c3Ygc3lzdGVtIGxpYnJhcmllcyBhbGwgaGVsbCBjYW4gYnJlYWsgbG9vc2UgKGUuZy4gYSBqbXBfYnVmIG1pZ2h0IGJlCisgICAgIyBhIGRpZmZlcmVudCBzaXplKS4KKyAgICAjIHB0cmFjZSgyKSBhcHBhcmVudGx5IGhhcyBwcm9ibGVtcyBpbiB0aGUgQlNEIGVudmlyb25tZW50LiAgTm8gd29ya2Fyb3VuZCBpcworICAgICMga25vd24gZXhjZXB0IHRvIHNlbGVjdCB0aGUgc3lzdiBlbnZpcm9ubWVudC4gIENvdWxkIHdlIHVzZSAvcHJvYyBpbnN0ZWFkPworICAgICMgVGhlc2UgInN5c3YgZW52aXJvbm1lbnRzIiBhbmQgImJzZCBlbnZpcm9ubWVudHMiIG9mdGVuIGVuZCB1cCBiZWluZyBhIHBhaW4uCisgICAgIworICAgICMgVGhpcyBpcyBub3QgcGFydCBvZiBDRkxBR1MgYmVjYXVzZSBwZXJoYXBzIG5vdCBhbGwgQyBjb21waWxlcnMgaGF2ZSB0aGlzCisgICAgIyBvcHRpb24uCisgICAgdGVudGF0aXZlX2NjPSJjYyAtc3lzdHlwZSBzeXN2IgorICAgIDs7CisgIGkzNzAtaWJtLW9wZW5lZCopCisgICAgdGVudGF0aXZlX2NjPSJjODkiCisgICAgOzsKKyAgaVszNDU2Nzg5XTg2LSotc3lzdjUqKQorICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLXN5c3Y1IgorICAgIDs7CisgIGlbMzQ1Njc4OV04Ni0qLWRndXgqKQorICAgIHRlbnRhdGl2ZV9jYz0iZ2NjIC1XYWxsIC1hbnNpIC1EX191c2luZ19ER1VYIgorICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLWRndXgzODYiCisgICAgOzsKKyAgaVszNDU2Nzg5XTg2LW5jci1zeXN2NC4zKikKKyAgICAjIFRoZSBNZXRhV2FyZSBjb21waWxlciB3aWxsIGdlbmVyYXRlIGEgY29weXJpZ2h0IG1lc3NhZ2UgdW5sZXNzIHlvdQorICAgICMgdHVybiBpdCBvZmYgYnkgYWRkaW5nIHRoZSAtSG5vY29weXIgZmxhZy4KKyAgICB0ZW50YXRpdmVfY2M9ImNjIC1Ibm9jb3B5ciIKKyAgICA7OworICBpWzM0NTY3ODldODYtbmNyLXN5c3Y0KikKKyAgICAjIGZvciBhbiBOQ1IgMzAwMCAoaTQ4Ni9TVlI0KSBzeXN0ZW0uCisgICAgIyBUaGUgTkNSIDMwMDAgc2hpcHMgd2l0aCBhIE1ldGFXYXJlIGNvbXBpbGVyIGluc3RhbGxlZCBhcyAvYmluL2NjLgorICAgICMgVGhpcyBjb21waWxlciBub3Qgb25seSBlbWl0cyBvYm5veGlvdXMgY29weXJpZ2h0IG1lc3NhZ2VzIGV2ZXJ5IHRpbWUKKyAgICAjIHlvdSBydW4gaXQsIGJ1dCBpdCBjaG9rZXMgYW5kIGRpZXMgb24gYSB3aG9sZSBidW5jaCBvZiBHTlUgc291cmNlCisgICAgIyBmaWxlcy4gIERlZmF1bHQgdG8gdXNpbmcgdGhlIEFUJlQgY29tcGlsZXIgaW5zdGFsbGVkIGluIC91c3IvY2NzL0FUVC9jYy4KKyAgICB0ZW50YXRpdmVfY2M9Ii91c3IvY2NzL0FUVC9jYyIKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1uY3IzMDAwIgorICAgIDs7CisgIGlbMzQ1Njc4OV04Ni0qLXNjbzMuMnY1KikKKyAgICA7OworICBpWzM0NTY3ODldODYtKi1zY28qKQorICAgICMgVGhlIG5hdGl2ZSBDIGNvbXBpbGVyIGJvdGNoZXMgc29tZSBzaW1wbGUgdXNlcyBvZiBjb25zdC4gIFVuZm9ydHVuYXRlbHksCisgICAgIyBpdCBkb2Vzbid0IGRlZmluZWQgYW55dGhpbmcgbGlrZSAiX19zY29fXyIgZm9yIHVzIHRvIHRlc3QgZm9yIGluIGFuc2lkZWNsLmguCisgICAgdGVudGF0aXZlX2NjPSJjYyAtRGNvbnN0PSIKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zY28iCisgICAgOzsKKyAgaVszNDU2Nzg5XTg2LSotdWRrKikKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zeXN2NSIKKyAgICA7OworICBpWzM0NTY3ODldODYtKi1zb2xhcmlzMiopCisgICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtc3lzdjQiCisgICAgOzsKKyAgaVszNDU2Nzg5XTg2LSotbXNkb3NkamdwcCopCisgICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtZGpncHAiCisgICAgOzsKKyAgKi1jeWd3aW4qKQorICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLWN5Z3dpbiIKKyAgICA7OworICAqLW1pbmd3MzIqKQorICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLW1pbmd3MzIiCisgICAgOzsKKyAgKi1pbnRlcml4KikKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1pbnRlcml4IgorICAgIDs7CisgIHZheC0qLXVsdHJpeDIqKQorICAgICMgVGhlIG9sZCBCU0QgcGNjIGlzbid0IHVwIHRvIGNvbXBpbGluZyBwYXJ0cyBvZiBnZGIgc28gdXNlIGdjYworICAgIHRlbnRhdGl2ZV9jYz1nY2MKKyAgICA7OworICAqLSotc29sYXJpczIqKQorICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLXNvbGFyaXMiCisgICAgOzsKKyAgbTY4ay1zdW4tc3Vub3MqKQorICAgICMgU3VuJ3MgQyBjb21waWxlciBuZWVkcyB0aGUgLUogZmxhZyB0byBiZSBhYmxlIHRvIGNvbXBpbGUgY3AtcGFyc2UuYworICAgICMgd2l0aG91dCBvdmVyZmxvd2luZyB0aGUganVtcCB0YWJsZXMgKC1KIHNheXMgdG8gdXNlIGEgMzIgYml0IHRhYmxlKQorICAgIHRlbnRhdGl2ZV9jYz0iY2MgLUoiCisgICAgOzsKKyAgKi1ocC1ocHV4KikKKyAgICB0ZW50YXRpdmVfY2M9ImNjIC1XcCwtSDI1NjAwMCIKKyAgICA7OworICAqLSotaGl1eCopCisgICAgdGVudGF0aXZlX2NjPSJjYyAtV3AsLUgyNTYwMDAiCisgICAgOzsKKyAgcnM2MDAwLSotbHlueG9zKikKKyAgICAjIC9iaW4vY2MgaXMgbGVzcyB0aGFuIHVzZWZ1bCBmb3Igb3VyIHB1cnBvc2VzLiAgQWx3YXlzIHVzZSBHQ0MKKyAgICB0ZW50YXRpdmVfY2M9Ii91c3IvY3lnbnVzL3Byb2dyZXNzaXZlL2Jpbi9nY2MiCisgICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtbHlueHJzNmsiCisgICAgOzsKKyAgKi0qLWx5bnhvcyopCisgICAgIyAvYmluL2NjIGlzIGxlc3MgdGhhbiB1c2VmdWwgZm9yIG91ciBwdXJwb3Nlcy4gIEFsd2F5cyB1c2UgR0NDCisgICAgdGVudGF0aXZlX2NjPSIvYmluL2djYyIKKyAgICA7OworICAqLSotc3lzdjQqKQorICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLXN5c3Y0IgorICAgIDs7Citlc2FjCitmaQorCisjIElmIHdlIGFyZW4ndCBnb2luZyB0byBiZSB1c2luZyBnY2MsIHNlZSBpZiB3ZSBjYW4gZXh0cmFjdCBhIGRlZmluaXRpb24KKyMgb2YgQ0MgZnJvbSB0aGUgZnJhZ21lbnQuCisjIEFjdHVhbGx5LCB1c2UgdGhlICdwcmUtZXh0cmFjdGVkJyB2ZXJzaW9uIGFib3ZlLgoraWYgdGVzdCAteiAiJHtDQ30iICYmIHRlc3QgIiR7YnVpbGR9IiA9ICIke2hvc3R9IiA7IHRoZW4KKyAgSUZTPSIke0lGUz0gCX0iOyBzYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9OiIKKyAgZm91bmQ9CisgIGZvciBkaXIgaW4gJFBBVEg7IGRvCisgICAgdGVzdCAteiAiJGRpciIgJiYgZGlyPS4KKyAgICBpZiB0ZXN0IC1mICRkaXIvZ2NjOyB0aGVuCisgICAgICBmb3VuZD15ZXMKKyAgICAgIGJyZWFrCisgICAgZmkKKyAgZG9uZQorICBJRlM9IiRzYXZlX2lmcyIKKyAgaWYgdGVzdCAteiAiJHtmb3VuZH0iICYmIHRlc3QgLW4gIiR7dGVudGF0aXZlX2NjfSIgOyB0aGVuCisgICAgQ0M9JHRlbnRhdGl2ZV9jYworICBmaQorZmkKKworaWYgdGVzdCAiJHtidWlsZH0iICE9ICIke2hvc3R9IiA7IHRoZW4KKyAgIyBJZiB3ZSBhcmUgZG9pbmcgYSBDYW5hZGlhbiBDcm9zcywgaW4gd2hpY2ggdGhlIGhvc3QgYW5kIGJ1aWxkIHN5c3RlbXMKKyAgIyBhcmUgbm90IHRoZSBzYW1lLCB3ZSBzZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIHRvb2xzLgorCisgIEJJU09OPSR7QklTT04tYmlzb259CisgIENDPSR7Q0MtJHtob3N0X2FsaWFzfS1nY2N9CisgIENGTEFHUz0ke0NGTEFHUy0iLWcgLU8yIn0KKyAgQ1hYPSR7Q1hYLSR7aG9zdF9hbGlhc30tYysrfQorICBDWFhGTEFHUz0ke0NYWEZMQUdTLSItZyAtTzIifQorICBDQ19GT1JfQlVJTEQ9JHtDQ19GT1JfQlVJTEQtZ2NjfQorICBDQ19GT1JfVEFSR0VUPSR7Q0NfRk9SX1RBUkdFVC0ke3RhcmdldF9hbGlhc30tZ2NjfQorICBDWFhfRk9SX1RBUkdFVD0ke0NYWF9GT1JfVEFSR0VULSR7dGFyZ2V0X2FsaWFzfS1jKyt9CisgIEdDSl9GT1JfVEFSR0VUPSR7R0NKX0ZPUl9UQVJHRVQtJHt0YXJnZXRfYWxpYXN9LWdjan0KKyAgR0NDX0ZPUl9UQVJHRVQ9JHtHQ0NfRk9SX1RBUkdFVC0ke0NDX0ZPUl9UQVJHRVQtJHt0YXJnZXRfYWxpYXN9LWdjY319CisgIEJVSUxEX1BSRUZJWD0ke2J1aWxkX2FsaWFzfS0KKyAgQlVJTERfUFJFRklYXzE9JHtidWlsZF9hbGlhc30tCisgIE1BS0VJTkZPPSR7TUFLRUlORk8tbWFrZWluZm99CisKKyAgaWYgdGVzdCAteiAiJHtZQUNDfSIgOyB0aGVuCisgICAgSUZTPSIke0lGUz0gCX0iOyBzYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9OiIKKyAgICBmb3IgZGlyIGluICRQQVRIOyBkbworICAgICAgdGVzdCAteiAiJGRpciIgJiYgZGlyPS4KKyAgICAgIGlmIHRlc3QgLWYgJGRpci9iaXNvbjsgdGhlbgorCVlBQ0M9ImJpc29uIC15IgorCWJyZWFrCisgICAgICBmaQorICAgICAgaWYgdGVzdCAtZiAkZGlyL2J5YWNjOyB0aGVuCisJWUFDQz1ieWFjYworCWJyZWFrCisgICAgICBmaQorICAgICAgaWYgdGVzdCAtZiAkZGlyL3lhY2M7IHRoZW4KKwlZQUNDPXlhY2MKKwlicmVhaworICAgICAgZmkKKyAgICBkb25lCisgICAgSUZTPSIkc2F2ZV9pZnMiCisgICAgaWYgdGVzdCAteiAiJHtZQUNDfSIgOyB0aGVuCisgICAgICBZQUNDPSJiaXNvbiAteSIKKyAgICBmaQorICBmaQorCisgIGlmIHRlc3QgLXogIiR7TEVYfSIgOyB0aGVuCisgICAgSUZTPSIke0lGUz0gCX0iOyBzYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9OiIKKyAgICBmb3IgZGlyIGluICRQQVRIOyBkbworICAgICAgdGVzdCAteiAiJGRpciIgJiYgZGlyPS4KKyAgICAgIGlmIHRlc3QgLWYgJGRpci9mbGV4OyB0aGVuCisJTEVYPWZsZXgKKwlicmVhaworICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLWYgJGRpci9sZXg7IHRoZW4KKwlMRVg9bGV4CisJYnJlYWsKKyAgICAgIGZpCisgICAgZG9uZQorICAgIElGUz0iJHNhdmVfaWZzIgorICAgIExFWD0ke0xFWC1mbGV4fQorICBmaQorCitlbHNlCisgICMgU2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHNvbWUgdG9vbHMgZXZlbiBpZiBub3QgQ2FuYWRpYW4uCisgICMgT2YgY291cnNlLCB0aGVzZSBhcmUgZGlmZmVyZW50IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMsIG9yaWdpbmFsbHkKKyAgIyBzcGVjaWZpZWQgZGlyZWN0bHkgaW4gdGhlIE1ha2VmaWxlLgorICAjIFdlIGRvbid0IGV4cG9ydCwgc28gdGhhdCBhdXRvY29uZiBjYW4gZG8gaXRzIGpvYi4KKyAgIyBOb3RlIHRoYXQgYWxsIHRoZXNlIHNldHRpbmdzIGFyZSBhYm92ZSB0aGUgZnJhZ21lbnQgaW5jbHVzaW9uIHBvaW50CisgICMgaW4gTWFrZWZpbGUuaW4sIHNvIGNhbiBzdGlsbCBiZSBvdmVycmlkZGVuIGJ5IGZyYWdtZW50cy4KKyAgIyBUaGlzIGlzIGFsbCBnb2luZyB0byBjaGFuZ2Ugd2hlbiB3ZSBhdXRvY29uZmlzY2F0ZS4uLgorCisgIEJJU09OPSJcJChVU1VBTF9CSVNPTikiCisgIENDX0ZPUl9CVUlMRD0iXCQoQ0MpIgorICBHQ0NfRk9SX1RBUkdFVD0iXCQoVVNVQUxfR0NDX0ZPUl9UQVJHRVQpIgorICBCVUlMRF9QUkVGSVg9CisgIEJVSUxEX1BSRUZJWF8xPWxvc2VyLQorICBNQUtFSU5GTz0iXCQoVVNVQUxfTUFLRUlORk8pIgorICBMRVg9IlwkKFVTVUFMX0xFWCkiCisgIFlBQ0M9IlwkKFVTVUFMX1lBQ0MpIgorCisgICMgSWYgQ0MgaXMgc3RpbGwgbm90IHNldCwgdHJ5IHRvIGdldCBnY2MuCisgIGNjX3Byb2dfaXNfZ2NjPQorICBpZiB0ZXN0IC16ICIke0NDfSIgOyB0aGVuCisgICAgSUZTPSIke0lGUz0gCX0iOyBzYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9OiIKKyAgICBmb3IgZGlyIGluICRQQVRIOyBkbworICAgICAgdGVzdCAteiAiJGRpciIgJiYgZGlyPS4KKyAgICAgIGlmIHRlc3QgLWYgJGRpci9nY2M7IHRoZW4KKwlDQz0iZ2NjIgorCWNjX3Byb2dfaXNfZ2NjPXllcworCWVjaG8gJ3ZvaWQgZigpe30nID4gY29uZnRlc3QuYworCWlmIHRlc3QgLXogImAke0NDfSAtZyAtYyBjb25mdGVzdC5jIDI+JjFgIjsgdGhlbgorCSAgQ0ZMQUdTPSR7Q0ZMQUdTLSItZyAtTzIifQorCSAgQ1hYRkxBR1M9JHtDWFhGTEFHUy0iLWcgLU8yIn0KKwllbHNlCisJICBDRkxBR1M9JHtDRkxBR1MtIi1PMiJ9CisJICBDWFhGTEFHUz0ke0NYWEZMQUdTLSItTzIifQorCWZpCisJcm0gLWYgY29uZnRlc3QqCisJYnJlYWsKKyAgICAgIGZpCisgICAgZG9uZQorICAgIElGUz0iJHNhdmVfaWZzIgorICAgIENDPSR7Q0MtY2N9CisgIGVsc2UKKyAgICAjIERldGVybWluZSBpZiB3ZSBhcmUgdXNpbmcgZ2NjLgorICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDxFT0YKKyNpZmRlZiBfX0dOVUNfXworICB5ZXM7CisjZW5kaWYKK0VPRgorICAgIGlmICR7Q0N9IC1FIGNvbmZ0ZXN0LmMgfCBncmVwIHllcyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgIGNjX3Byb2dfaXNfZ2NjPXllcworICAgIGZpCisgICAgcm0gLWYgY29uZnRlc3QuYworICAgIGlmIHRlc3QgLXogIiR7Q0ZMQUdTfSI7IHRoZW4KKyAgICAgICMgSGVyZSBDQyBpcyBzZXQgYnV0IENGTEFHUyBpcyBub3QuICBVc2UgYSBxdWljayBoYWNrIHRvIHVzZSAtTzIgaWYgQ0MKKyAgICAgICMgaXMgc2V0IHRvIGEgdmVyc2lvbiBvZiBnY2MuCisgICAgICBpZiB0ZXN0ICIkY2NfcHJvZ19pc19nY2MiID0geWVzOyB0aGVuCisJZWNobyAndm9pZCBmKCl7fScgPiBjb25mdGVzdC5jCisJaWYgdGVzdCAteiAiYCR7Q0N9IC1nIC1jIGNvbmZ0ZXN0LmMgMj4mMWAiOyB0aGVuCisJICBDRkxBR1M9JHtDRkxBR1MtIi1nIC1PMiJ9CisJICBDWFhGTEFHUz0ke0NYWEZMQUdTLSItZyAtTzIifQorCWVsc2UKKwkgIENGTEFHUz0ke0NGTEFHUy0iLU8yIn0KKwkgIENYWEZMQUdTPSR7Q1hYRkxBR1MtIi1PMiJ9CisJZmkKKwlybSAtZiBjb25mdGVzdCoKKyAgICAgIGZpCisgICAgZmkKKyAgZmkKKworICAjIFdlIG11c3Qgc2V0IHRoZSBkZWZhdWx0IGxpbmtlciB0byB0aGUgbGlua2VyIHVzZWQgYnkgZ2NjIGZvciB0aGUgY29ycmVjdAorICAjIG9wZXJhdGlvbiBvZiBsaWJ0b29sLiAgSWYgTEQgaXMgbm90IGRlZmluZWQgYW5kIHdlIGFyZSB1c2luZyBnY2MsIHRyeSB0bworICAjIHNldCB0aGUgTEQgZGVmYXVsdCB0byB0aGUgbGQgdXNlZCBieSBnY2MuCisgIGlmIHRlc3QgLXogIiRMRCI7IHRoZW4KKyAgICBpZiB0ZXN0ICIkY2NfcHJvZ19pc19nY2MiID0geWVzOyB0aGVuCisgICAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KikKKwlnY2NfcHJvZ19sZD1gJENDIC1wcmludC1wcm9nLW5hbWU9bGQgMj4mMSB8IHRyIC1kICdcMDE1J2AgOzsKKyAgICAgICopCisJZ2NjX3Byb2dfbGQ9YCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkIDI+JjFgIDs7CisgICAgICBlc2FjCisgICAgICBjYXNlICRnY2NfcHJvZ19sZCBpbgorICAgICAgIyBBY2NlcHQgYWJzb2x1dGUgcGF0aHMuCisgICAgICBbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopCisgICAgICAgIExEPSIkZ2NjX3Byb2dfbGQiIDs7CisgICAgICBlc2FjCisgICAgZmkKKyAgZmkKKworICBDWFg9JHtDWFgtImMrKyJ9CisgIENGTEFHUz0ke0NGTEFHUy0iLWcifQorICBDWFhGTEFHUz0ke0NYWEZMQUdTLSItZyAtTzIifQorZmkKKworaWYgdGVzdCAkaG9zdCAhPSAkYnVpbGQ7IHRoZW4KKyAgYWNfdG9vbF9wcmVmaXg9JHtob3N0X2FsaWFzfS0KK2Vsc2UKKyAgYWNfdG9vbF9wcmVmaXg9CitmaQorCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgZ2NjOyBhY193b3JkPSQyCitlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgorZWNobyAiY29uZmlndXJlOjE4NTg6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DQycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKKyAgYWNfZHVtbXk9IiRQQVRIIgorICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgorICAgICAgYWNfY3ZfcHJvZ19DQz0iZ2NjIgorICAgICAgYnJlYWsKKyAgICBmaQorICBkb25lCisgIElGUz0iJGFjX3NhdmVfaWZzIgorZmkKK2ZpCitDQz0iJGFjX2N2X3Byb2dfQ0MiCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIGVjaG8gIiRhY190IiIkQ0MiIDE+JjYKK2Vsc2UKKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CitmaQorCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGNjOyBhY193b3JkPSQyCitlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgorZWNobyAiY29uZmlndXJlOjE4ODg6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DQycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKKyAgYWNfcHJvZ19yZWplY3RlZD1ubworICBhY19kdW1teT0iJFBBVEgiCisgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyRhY193b3JkOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkYWNfZGlyLyRhY193b3JkIiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KKyAgICAgICAgYWNfcHJvZ19yZWplY3RlZD15ZXMKKwljb250aW51ZQorICAgICAgZmkKKyAgICAgIGFjX2N2X3Byb2dfQ0M9ImNjIgorICAgICAgYnJlYWsKKyAgICBmaQorICBkb25lCisgIElGUz0iJGFjX3NhdmVfaWZzIgoraWYgdGVzdCAkYWNfcHJvZ19yZWplY3RlZCA9IHllczsgdGhlbgorICAjIFdlIGZvdW5kIGEgYm9nb24gaW4gdGhlIHBhdGgsIHNvIG1ha2Ugc3VyZSB3ZSBuZXZlciB1c2UgaXQuCisgIHNldCBkdW1teSAkYWNfY3ZfcHJvZ19DQworICBzaGlmdAorICBpZiB0ZXN0ICQjIC1ndCAwOyB0aGVuCisgICAgIyBXZSBjaG9zZSBhIGRpZmZlcmVudCBjb21waWxlciBmcm9tIHRoZSBib2d1cyBvbmUuCisgICAgIyBIb3dldmVyLCBpdCBoYXMgdGhlIHNhbWUgYmFzZW5hbWUsIHNvIHRoZSBib2dvbiB3aWxsIGJlIGNob3NlbgorICAgICMgZmlyc3QgaWYgd2Ugc2V0IENDIHRvIGp1c3QgdGhlIGJhc2VuYW1lOyB1c2UgdGhlIGZ1bGwgZmlsZSBuYW1lLgorICAgIHNoaWZ0CisgICAgc2V0IGR1bW15ICIkYWNfZGlyLyRhY193b3JkIiAiJEAiCisgICAgc2hpZnQKKyAgICBhY19jdl9wcm9nX0NDPSIkQCIKKyAgZmkKK2ZpCitmaQorZmkKK0NDPSIkYWNfY3ZfcHJvZ19DQyIKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgZWNobyAiJGFjX3QiIiRDQyIgMT4mNgorZWxzZQorICBlY2hvICIkYWNfdCIibm8iIDE+JjYKK2ZpCisKKyAgaWYgdGVzdCAteiAiJENDIjsgdGhlbgorICAgIGNhc2UgImB1bmFtZSAtc2AiIGluCisgICAgKndpbjMyKiB8ICpXSU4zMiopCisgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNsIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjbDsgYWNfd29yZD0kMgorZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKK2VjaG8gImNvbmZpZ3VyZToxOTM5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQoraWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ0MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgorICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IjoiCisgIGFjX2R1bW15PSIkUEFUSCIKKyAgZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRoZW4KKyAgICAgIGFjX2N2X3Byb2dfQ0M9ImNsIgorICAgICAgYnJlYWsKKyAgICBmaQorICBkb25lCisgIElGUz0iJGFjX3NhdmVfaWZzIgorZmkKK2ZpCitDQz0iJGFjX2N2X3Byb2dfQ0MiCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIGVjaG8gIiRhY190IiIkQ0MiIDE+JjYKK2Vsc2UKKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CitmaQorIDs7CisgICAgZXNhYworICBmaQorICB0ZXN0IC16ICIkQ0MiICYmIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogbm8gYWNjZXB0YWJsZSBjYyBmb3VuZCBpbiBcJFBBVEgiIDE+JjI7IGV4aXQgMTsgfQorZmkKKworZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIHdvcmtzIiIuLi4gJGFjX2MiIDE+JjYKK2VjaG8gImNvbmZpZ3VyZToxOTcxOiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgd29ya3MiID4mNQorCithY19leHQ9YworIyBDRkxBR1MgaXMgbm90IGluIGFjX2NwcCBiZWNhdXNlIC1nLCAtTywgZXRjLiBhcmUgbm90IHZhbGlkIGNwcCBvcHRpb25zLgorYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyR7Q0MtY2N9IC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgMT4mNScKK2FjX2xpbms9JyR7Q0MtY2N9IC1vIGNvbmZ0ZXN0JHthY19leGVleHR9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgMT4mNScKK2Nyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jY19jcm9zcworCitjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8IEVPRgorCisjbGluZSAxOTgyICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKworbWFpbigpe3JldHVybigwKTt9CitFT0YKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTk4NzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgIGFjX2N2X3Byb2dfY2Nfd29ya3M9eWVzCisgICMgSWYgd2UgY2FuJ3QgcnVuIGEgdHJpdmlhbCBwcm9ncmFtLCB3ZSBhcmUgcHJvYmFibHkgdXNpbmcgYSBjcm9zcyBjb21waWxlci4KKyAgaWYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19jY19jcm9zcz1ubworICBlbHNlCisgICAgYWNfY3ZfcHJvZ19jY19jcm9zcz15ZXMKKyAgZmkKK2Vsc2UKKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGFjX2N2X3Byb2dfY2Nfd29ya3M9bm8KK2ZpCitybSAtZnIgY29uZnRlc3QqCithY19leHQ9YworIyBDRkxBR1MgaXMgbm90IGluIGFjX2NwcCBiZWNhdXNlIC1nLCAtTywgZXRjLiBhcmUgbm90IHZhbGlkIGNwcCBvcHRpb25zLgorYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyR7Q0MtY2N9IC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgMT4mNScKK2FjX2xpbms9JyR7Q0MtY2N9IC1vIGNvbmZ0ZXN0JHthY19leGVleHR9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgMT4mNScKK2Nyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jY19jcm9zcworCitlY2hvICIkYWNfdCIiJGFjX2N2X3Byb2dfY2Nfd29ya3MiIDE+JjYKK2lmIHRlc3QgJGFjX2N2X3Byb2dfY2Nfd29ya3MgPSBubzsgdGhlbgorICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGluc3RhbGxhdGlvbiBvciBjb25maWd1cmF0aW9uIHByb2JsZW06IEMgY29tcGlsZXIgY2Fubm90IGNyZWF0ZSBleGVjdXRhYmxlcy4iIDE+JjI7IGV4aXQgMTsgfQorZmkKK2VjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSBpcyBhIGNyb3NzLWNvbXBpbGVyIiIuLi4gJGFjX2MiIDE+JjYKK2VjaG8gImNvbmZpZ3VyZToyMDEzOiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgaXMgYSBjcm9zcy1jb21waWxlciIgPiY1CitlY2hvICIkYWNfdCIiJGFjX2N2X3Byb2dfY2NfY3Jvc3MiIDE+JjYKK2Nyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jY19jcm9zcworCitlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyBHTlUgQyIiLi4uICRhY19jIiAxPiY2CitlY2hvICJjb25maWd1cmU6MjAxODogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMiID4mNQoraWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfZ2NjJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKK2Vsc2UKKyAgY2F0ID4gY29uZnRlc3QuYyA8PEVPRgorI2lmZGVmIF9fR05VQ19fCisgIHllczsKKyNlbmRpZgorRU9GCitpZiB7IGFjX3RyeT0nJHtDQy1jY30gLUUgY29uZnRlc3QuYyc7IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjAyNzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH07IH0gfCBlZ3JlcCB5ZXMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIGFjX2N2X3Byb2dfZ2NjPXllcworZWxzZQorICBhY19jdl9wcm9nX2djYz1ubworZmkKK2ZpCisKK2VjaG8gIiRhY190IiIkYWNfY3ZfcHJvZ19nY2MiIDE+JjYKKworaWYgdGVzdCAkYWNfY3ZfcHJvZ19nY2MgPSB5ZXM7IHRoZW4KKyAgR0NDPXllcworZWxzZQorICBHQ0M9CitmaQorCithY190ZXN0X0NGTEFHUz0iJHtDRkxBR1Mrc2V0fSIKK2FjX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorQ0ZMQUdTPQorZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1nIiIuLi4gJGFjX2MiIDE+JjYKK2VjaG8gImNvbmZpZ3VyZToyMDQ2OiBjaGVja2luZyB3aGV0aGVyICR7Q0MtY2N9IGFjY2VwdHMgLWciID4mNQoraWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfY2NfZycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CitlbHNlCisgIGVjaG8gJ3ZvaWQgZigpe30nID4gY29uZnRlc3QuYworaWYgdGVzdCAteiAiYCR7Q0MtY2N9IC1nIC1jIGNvbmZ0ZXN0LmMgMj4mMWAiOyB0aGVuCisgIGFjX2N2X3Byb2dfY2NfZz15ZXMKK2Vsc2UKKyAgYWNfY3ZfcHJvZ19jY19nPW5vCitmaQorcm0gLWYgY29uZnRlc3QqCisKK2ZpCisKK2VjaG8gIiRhY190IiIkYWNfY3ZfcHJvZ19jY19nIiAxPiY2CitpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuCisgIENGTEFHUz0iJGFjX3NhdmVfQ0ZMQUdTIgorZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBDRkxBR1M9Ii1nIC1PMiIKKyAgZWxzZQorICAgIENGTEFHUz0iLWciCisgIGZpCitlbHNlCisgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgQ0ZMQUdTPSItTzIiCisgIGVsc2UKKyAgICBDRkxBR1M9CisgIGZpCitmaQorCisKKworIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWduYXRiaW5kIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWduYXRiaW5kOyBhY193b3JkPSQyCitlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgorZWNobyAiY29uZmlndXJlOjIwODI6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19HTkFUQklORCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRHTkFUQklORCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19HTkFUQklORD0iJEdOQVRCSU5EIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKKyAgYWNfZHVtbXk9IiRQQVRIIgorICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgorICAgICAgYWNfY3ZfcHJvZ19HTkFUQklORD0iJHthY190b29sX3ByZWZpeH1nbmF0YmluZCIKKyAgICAgIGJyZWFrCisgICAgZmkKKyAgZG9uZQorICBJRlM9IiRhY19zYXZlX2lmcyIKK2ZpCitmaQorR05BVEJJTkQ9IiRhY19jdl9wcm9nX0dOQVRCSU5EIgoraWYgdGVzdCAtbiAiJEdOQVRCSU5EIjsgdGhlbgorICBlY2hvICIkYWNfdCIiJEdOQVRCSU5EIiAxPiY2CitlbHNlCisgIGVjaG8gIiRhY190IiJubyIgMT4mNgorZmkKKworCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19HTkFUQklORCI7IHRoZW4KK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnbmF0YmluZCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgZ25hdGJpbmQ7IGFjX3dvcmQ9JDIKK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2CitlY2hvICJjb25maWd1cmU6MjExNDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0dOQVRCSU5EJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJEdOQVRCSU5EIjsgdGhlbgorICBhY19jdl9wcm9nX0dOQVRCSU5EPSIkR05BVEJJTkQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSI6IgorICBhY19kdW1teT0iJFBBVEgiCisgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyRhY193b3JkOyB0aGVuCisgICAgICBhY19jdl9wcm9nX0dOQVRCSU5EPSJnbmF0YmluZCIKKyAgICAgIGJyZWFrCisgICAgZmkKKyAgZG9uZQorICBJRlM9IiRhY19zYXZlX2lmcyIKKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfR05BVEJJTkQiICYmIGFjX2N2X3Byb2dfR05BVEJJTkQ9Im5vIgorZmkKK2ZpCitHTkFUQklORD0iJGFjX2N2X3Byb2dfR05BVEJJTkQiCitpZiB0ZXN0IC1uICIkR05BVEJJTkQiOyB0aGVuCisgIGVjaG8gIiRhY190IiIkR05BVEJJTkQiIDE+JjYKK2Vsc2UKKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CitmaQorCitlbHNlCisgIEdOQVRCSU5EPSJubyIKK2ZpCitmaQorCitlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIGNvbXBpbGVyIGRyaXZlciB1bmRlcnN0YW5kcyBBZGEiIi4uLiAkYWNfYyIgMT4mNgorZWNobyAiY29uZmlndXJlOjIxNDc6IGNoZWNraW5nIHdoZXRoZXIgY29tcGlsZXIgZHJpdmVyIHVuZGVyc3RhbmRzIEFkYSIgPiY1CitpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWN4X2N2X2NjX2djY19zdXBwb3J0c19hZGEnK3NldH0nYFwiID0gc2V0IjsgdGhlbgorICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LmFkYiA8PEVPRgorcHJvY2VkdXJlIGNvbmZ0ZXN0IGlzIGJlZ2luIG51bGw7IGVuZCBjb25mdGVzdDsKK0VPRgorYWN4X2N2X2NjX2djY19zdXBwb3J0c19hZGE9bm8KKyMgVGhlcmUgaXMgYSBidWcgaW4gb2xkIHJlbGVhc2VkIHZlcnNpb25zIG9mIEdDQyB3aGljaCBjYXVzZXMgdGhlCisjIGRyaXZlciB0byBleGl0IHN1Y2Nlc3NmdWxseSB3aGVuIHRoZSBhcHByb3ByaWF0ZSBsYW5ndWFnZSBtb2R1bGUKKyMgaGFzIG5vdCBiZWVuIGluc3RhbGxlZC4gIFRoaXMgaXMgZml4ZWQgaW4gMi45NS40LCAzLjAuMiwgYW5kIDMuMS4KKyMgVGhlcmVmb3JlIHdlIG11c3QgY2hlY2sgZm9yIHRoZSBlcnJvciBtZXNzYWdlIGFzIHdlbGwgYXMgYW4KKyMgdW5zdWNjZXNzZnVsIGV4aXQuCitlcnJvcnM9YCgke0NDfSAtYyBjb25mdGVzdC5hZGIpIDI+JjEgfHwgZWNobyBmYWlsdXJlYAoraWYgdGVzdCB4IiRlcnJvcnMiID0geDsgdGhlbgorICBhY3hfY3ZfY2NfZ2NjX3N1cHBvcnRzX2FkYT15ZXMKKyAgYnJlYWsKK2ZpCitybSAtZiBjb25mdGVzdC4qCitmaQorCitlY2hvICIkYWNfdCIiJGFjeF9jdl9jY19nY2Nfc3VwcG9ydHNfYWRhIiAxPiY2CisKK2lmIHRlc3QgeCRHTkFUQklORCAhPSB4bm8gJiYgdGVzdCB4JGFjeF9jdl9nY2Nfc3VwcG9ydHNfYWRhICE9IHhubzsgdGhlbgorICBoYXZlX2duYXQ9eWVzCitlbHNlCisgIGhhdmVfZ25hdD1ubworZmkKKworCisjIEJ5IGRlZmF1bHQsIEMgaXMgdGhlIG9ubHkgc3RhZ2UgMSBsYW5ndWFnZS4KK3N0YWdlMV9sYW5ndWFnZXM9YworCisKICMgRmlndXJlIG91dCB3aGF0IGxhbmd1YWdlIHN1YmRpcmVjdG9yaWVzIGFyZSBwcmVzZW50LgogIyBMb29rIGlmIHRoZSB1c2VyIHNwZWNpZmllZCAtLWVuYWJsZS1sYW5ndWFnZXM9Ii4uLiI7IGlmIG5vdCwgdXNlCiAjIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAkTEFOR1VBR0VTIGlmIGRlZmluZWQuICRMQU5HVUFHRVMgbWlnaHQKICMgZ28gYXdheSBzb21lIGRheS4KICMgTkI6ICBlbWJlZGRlZCB0YWJzIGluIHRoaXMgSUYgYmxvY2sgLS0gZG8gbm90IHVudGFiaWZ5Ci1pZiB0ZXN0IHgiJHtlbmFibGVfbGFuZ3VhZ2VzK3NldH0iICE9IHhzZXQ7IHRoZW4KLSAgaWYgdGVzdCB4IiR7TEFOR1VBR0VTK3NldH0iID0geHNldDsgdGhlbgotICAgIGVuYWJsZV9sYW5ndWFnZXM9IiR7TEFOR1VBR0VTfSIKLSAgICAgIGVjaG8gY29uZmlndXJlLmluOiB3YXJuaW5nOiBzZXR0aW5nIExBTkdVQUdFUyBpcyBkZXByZWNhdGVkLCB1c2UgLS1lbmFibGUtbGFuZ3VhZ2VzIGluc3RlYWQgMT4mMgoraWYgdGVzdCAtZCAke3NyY2Rpcn0vZ2NjOyB0aGVuCisgIGlmIHRlc3QgeCIke2VuYWJsZV9sYW5ndWFnZXMrc2V0fSIgIT0geHNldDsgdGhlbgorICAgIGlmIHRlc3QgeCIke0xBTkdVQUdFUytzZXR9IiA9IHhzZXQ7IHRoZW4KKyAgICAgIGVuYWJsZV9sYW5ndWFnZXM9IiR7TEFOR1VBR0VTfSIKKyAgICAgICAgZWNobyBjb25maWd1cmUuaW46IHdhcm5pbmc6IHNldHRpbmcgTEFOR1VBR0VTIGlzIGRlcHJlY2F0ZWQsIHVzZSAtLWVuYWJsZS1sYW5ndWFnZXMgaW5zdGVhZCAxPiYyCisgICAgZWxzZQorICAgICAgZW5hYmxlX2xhbmd1YWdlcz1hbGwKKyAgICBmaQogICBlbHNlCi0gICAgZW5hYmxlX2xhbmd1YWdlcz1hbGwKKyAgICBpZiB0ZXN0IHgiJHtlbmFibGVfbGFuZ3VhZ2VzfSIgPSB4IHx8CisgICAgICAgdGVzdCB4IiR7ZW5hYmxlX2xhbmd1YWdlc30iID0geHllczsKKyAgICAgICB0aGVuCisgICAgICBlY2hvIGNvbmZpZ3VyZS5pbjogLS1lbmFibGUtbGFuZ3VhZ2VzIG5lZWRzIGF0IGxlYXN0IG9uZSBsYW5ndWFnZSBhcmd1bWVudCAxPiYyCisgICAgICBleGl0IDEKKyAgICBmaQogICBmaQotZWxzZQotICBpZiB0ZXN0IHgiJHtlbmFibGVfbGFuZ3VhZ2VzfSIgPSB4IHx8Ci0gICAgIHRlc3QgeCIke2VuYWJsZV9sYW5ndWFnZXN9IiA9IHh5ZXM7Ci0gICAgIHRoZW4KLSAgICBlY2hvIGNvbmZpZ3VyZS5pbjogLS1lbmFibGUtbGFuZ3VhZ2VzIG5lZWRzIGF0IGxlYXN0IG9uZSBsYW5ndWFnZSBhcmd1bWVudCAxPiYyCi0gICAgZXhpdCAxCi0gIGZpCi1maQotZW5hYmxlX2xhbmd1YWdlcz1gZWNobyAiJHtlbmFibGVfbGFuZ3VhZ2VzfSIgfCBzZWQgLWUgJ3MvWyAJLF1bIAksXSovLC9nJyAtZSAncy8sJC8vJ2AKKyAgZW5hYmxlX2xhbmd1YWdlcz1gZWNobyAiJHtlbmFibGVfbGFuZ3VhZ2VzfSIgfCBzZWQgLWUgJ3MvWyAJLF1bIAksXSovLC9nJyAtZSAncy8sJC8vJ2AKIAotIyBGaXJzdCBzY2FuIHRvIHNlZSBpZiBhbiBlbmFibGVkIGxhbmd1YWdlIHJlcXVpcmVzIHNvbWUgb3RoZXIgbGFuZ3VhZ2UuCi0jIFdlIGFzc3VtZSB0aGF0IGEgZ2l2ZW4gY29uZmlnLWxhbmcuaW4gd2lsbCBsaXN0IGFsbCB0aGUgbGFuZ3VhZ2UKLSMgZnJvbnQgZW5kcyBpdCByZXF1aXJlcywgZXZlbiBpZiBzb21lIGFyZSByZXF1aXJlZCBpbmRpcmVjdGx5LgotZm9yIGxhbmdfZnJhZyBpbiAke3NyY2Rpcn0vZ2NjLyovY29uZmlnLWxhbmcuaW4gLi4gOyBkbwotICBjYXNlICR7bGFuZ19mcmFnfSBpbgotICAgIC4uKSA7OwotICAgICMgVGhlIG9kZCBxdW90aW5nIGluIHRoZSBuZXh0IGxpbmUgd29ya3MgYXJvdW5kCi0gICAgIyBhbiBhcHBhcmVudCBidWcgaW4gYmFzaCAxLjEyIG9uIGxpbnV4LgotICAgICR7c3JjZGlyfS9nY2MvWypdL2NvbmZpZy1sYW5nLmluKSA7OwotICAgICopCi0gICAgICAjIEZyb20gdGhlIGNvbmZpZy1sYW5nLmluLCBnZXQgJGxhbmd1YWdlLCAkbGFuZ19yZXF1aXJlcwotICAgICAgbGFuZ3VhZ2U9Ci0gICAgICBsYW5nX3JlcXVpcmVzPQotICAgICAgLiAke2xhbmdfZnJhZ30KLSAgICAgIGZvciBvdGhlciBpbiAke2xhbmdfcmVxdWlyZXN9IDsgZG8KLSAgICAgICAgY2FzZSAsJHtlbmFibGVfbGFuZ3VhZ2VzfSwgaW4KLQkgICosJG90aGVyLCopIDs7Ci0JICAqLGFsbCwqKSA7OwotCSAgKiwkbGFuZ3VhZ2UsKikKLQkgICAgZWNobyAiIFxgJG90aGVyJyBsYW5ndWFnZSByZXF1aXJlZCBieSBcYCRsYW5ndWFnZSc7IGVuYWJsaW5nIiAxPiYyCi0JICAgIGVuYWJsZV9sYW5ndWFnZXM9IiR7ZW5hYmxlX2xhbmd1YWdlc30sJHtvdGhlcn0iCisgICMgRmlyc3Qgc2NhbiB0byBzZWUgaWYgYW4gZW5hYmxlZCBsYW5ndWFnZSByZXF1aXJlcyBzb21lIG90aGVyIGxhbmd1YWdlLgorICAjIFdlIGFzc3VtZSB0aGF0IGEgZ2l2ZW4gY29uZmlnLWxhbmcuaW4gd2lsbCBsaXN0IGFsbCB0aGUgbGFuZ3VhZ2UKKyAgIyBmcm9udCBlbmRzIGl0IHJlcXVpcmVzLCBldmVuIGlmIHNvbWUgYXJlIHJlcXVpcmVkIGluZGlyZWN0bHkuCisgIGZvciBsYW5nX2ZyYWcgaW4gJHtzcmNkaXJ9L2djYy8qL2NvbmZpZy1sYW5nLmluIC4uIDsgZG8KKyAgICBjYXNlICR7bGFuZ19mcmFnfSBpbgorICAgICAgLi4pIDs7CisgICAgICAjIFRoZSBvZGQgcXVvdGluZyBpbiB0aGUgbmV4dCBsaW5lIHdvcmtzIGFyb3VuZAorICAgICAgIyBhbiBhcHBhcmVudCBidWcgaW4gYmFzaCAxLjEyIG9uIGxpbnV4LgorICAgICAgJHtzcmNkaXJ9L2djYy9bKl0vY29uZmlnLWxhbmcuaW4pIDs7CisgICAgICAqKQorICAgICAgICAjIEZyb20gdGhlIGNvbmZpZy1sYW5nLmluLCBnZXQgJGxhbmd1YWdlLCAkbGFuZ19yZXF1aXJlcworICAgICAgICBsYW5ndWFnZT0KKyAgICAgICAgbGFuZ19yZXF1aXJlcz0KKyAgICAgICAgLiAke2xhbmdfZnJhZ30KKyAgICAgICAgZm9yIG90aGVyIGluICR7bGFuZ19yZXF1aXJlc30gOyBkbworICAgICAgICAgIGNhc2UgLCR7ZW5hYmxlX2xhbmd1YWdlc30sIGluCisJICAgICosJG90aGVyLCopIDs7CisJICAgICosYWxsLCopIDs7CisJICAgICosJGxhbmd1YWdlLCopCisJICAgICAgZWNobyAiIFxgJG90aGVyJyBsYW5ndWFnZSByZXF1aXJlZCBieSBcYCRsYW5ndWFnZSc7IGVuYWJsaW5nIiAxPiYyCisJICAgICAgZW5hYmxlX2xhbmd1YWdlcz0iJHtlbmFibGVfbGFuZ3VhZ2VzfSwke290aGVyfSIKKwkgICAgICA7OworCSAgZXNhYworICAgICAgICBkb25lCisgICAgICAgIDs7CisgICAgZXNhYworICBkb25lCisKKyAgbmV3X2VuYWJsZV9sYW5ndWFnZXM9YworICBtaXNzaW5nX2xhbmd1YWdlcz1gZWNobyAiLCRlbmFibGVfbGFuZ3VhZ2VzLCIgfCBzZWQgLWUgcy8sYWxsLC8sLyAtZSBzLyxjLC8sLyBgCisKKyAgZm9yIGxhbmdfZnJhZyBpbiAke3NyY2Rpcn0vZ2NjLyovY29uZmlnLWxhbmcuaW4gLi4gOyBkbworICAgIGNhc2UgJHtsYW5nX2ZyYWd9IGluCisgICAgICAuLikgOzsKKyAgICAgICMgVGhlIG9kZCBxdW90aW5nIGluIHRoZSBuZXh0IGxpbmUgd29ya3MgYXJvdW5kCisgICAgICAjIGFuIGFwcGFyZW50IGJ1ZyBpbiBiYXNoIDEuMTIgb24gbGludXguCisgICAgICAke3NyY2Rpcn0vZ2NjL1sqXS9jb25maWctbGFuZy5pbikgOzsKKyAgICAgICopCisgICAgICAgICMgRnJvbSB0aGUgY29uZmlnLWxhbmcuaW4sIGdldCAkbGFuZ3VhZ2UsICR0YXJnZXRfbGlicywgCisgICAgICAgICMgJGxhbmdfZGlycywgJGJvb3RfbGFuZ3VhZ2UsIGFuZCAkYnVpbGRfYnlfZGVmYXVsdAorICAgICAgICBsYW5ndWFnZT0KKyAgICAgICAgdGFyZ2V0X2xpYnM9CisgICAgICAgIGxhbmdfZGlycz0KKyAgICAgICAgYm9vdF9sYW5ndWFnZT0KKyAgICAgICAgYnVpbGRfYnlfZGVmYXVsdD0KKyAgICAgICAgLiAke2xhbmdfZnJhZ30KKyAgICAgICAgIyBUaGlzIGlzIHF1aXRlIHNlbnNpdGl2ZSB0byB0aGUgb3JkZXJpbmcgb2YgdGhlIGNhc2Ugc3RhdGVtZW50IGFybXMuCisgICAgICAgIGNhc2UgLCR7ZW5hYmxlX2xhbmd1YWdlc30sOiR7bGFuZ3VhZ2V9OiR7aGF2ZV9nbmF0fToke2J1aWxkX2J5X2RlZmF1bHR9IGluCisgICAgICAgICAgKjo6KjoqKQorICAgICAgICAgICAgZWNobyAiJHtsYW5nX2ZyYWd9IGRvZXNuJ3Qgc2V0IFwkbGFuZ3VhZ2UuIiAxPiYyCisgICAgICAgICAgICBleGl0IDEKIAkgICAgOzsKLQllc2FjCi0gICAgICBkb25lCi0gICAgICA7OwotICBlc2FjCi1kb25lCisgICAgICAgICAgKjphZGE6bm86KikKKyAgICAgICAgICAgICMgQWRhIHdhcyByZXF1ZXN0ZWQgd2l0aCBubyBwcmVleGlzdGluZyBHTkFULiAgRGlzYWJsZSB1bmNvbmRpdGlvbmFsbHkuCisgICAgICAgICAgICBhZGRfdGhpc19sYW5nPW5vCisgICAgICAgICAgICA7OworICAgICAgICAgICosJHtsYW5ndWFnZX0sKjoqOio6KikKKyAgICAgICAgICAgICMgTGFuZ3VhZ2Ugd2FzIGV4cGxpY2l0bHkgc2VsZWN0ZWQ7IGluY2x1ZGUgaXQuCisgICAgICAgICAgICBhZGRfdGhpc19sYW5nPXllcworICAgICAgICAgICAgOzsKKyAgICAgICAgICAqLGFsbCwqOio6KjpubykKKyAgICAgICAgICAgICMgJ2FsbCcgd2FzIHNlbGVjdGVkLCBidXQgdGhpcyBpcyBub3QgYSBkZWZhdWx0IGxhbmd1YWdlCisJICAgICMgc28gZG8gbm90IGluY2x1ZGUgaXQuCisgICAgICAgICAgICBhZGRfdGhpc19sYW5nPW5vCisJICAgIDs7CisgICAgICAgICAgKixhbGwsKjoqOio6KikKKyAgICAgICAgICAgICMgJ2FsbCcgd2FzIHNlbGVjdGVkIGFuZCB0aGlzIGlzIGEgZGVmYXVsdCBsYW5ndWFnZTsgaW5jbHVkZSBpdC4KKyAgICAgICAgICAgIGFkZF90aGlzX2xhbmc9eWVzCisgICAgICAgICAgICA7OworICAgICAgICAgICopCisgICAgICAgICAgICBhZGRfdGhpc19sYW5nPW5vCisgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIGNhc2UgJGFkZF90aGlzX2xhbmcgaW4KKwkgIG5vKQorICAgICAgICAgICAgIyBSZW1vdmUgbGFuZ3VhZ2UtZGVwZW5kZW50IGRpcnMuCisgICAgICAgICAgICBldmFsIG5vY29uZmlnZGlycz0nIiRub2NvbmZpZ2RpcnMgIidcIiR0YXJnZXRfbGlicyAkbGFuZ19kaXJzXCIKKwkgICAgOzsKKyAgICAgICAgICAqKQorCSAgICBuZXdfZW5hYmxlX2xhbmd1YWdlcz0iJG5ld19lbmFibGVfbGFuZ3VhZ2VzLCRsYW5ndWFnZSIKKwkgICAgbWlzc2luZ19sYW5ndWFnZXM9YGVjaG8gIiRtaXNzaW5nX2xhbmd1YWdlcyIgfCBzZWQgInMvLCRsYW5ndWFnZSwvLC8iYAorCSAgICBjYXNlICR7Ym9vdF9sYW5ndWFnZX0gaW4KKwkgICAgICB5ZXMpCisJCSMgQWRkIHRvIChjb21tYS1zZXBhcmF0ZWQpIGxpc3Qgb2Ygc3RhZ2UgMSBsYW5ndWFnZXMuCisJCXN0YWdlMV9sYW5ndWFnZXM9IiR7c3RhZ2UxX2xhbmd1YWdlc30sJHtsYW5ndWFnZX0iCisJCTs7CisJICAgIGVzYWMKKwkgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQogCi1mb3IgbGFuZ19mcmFnIGluICR7c3JjZGlyfS9nY2MvKi9jb25maWctbGFuZy5pbiAuLiA7IGRvCi0gIGNhc2UgJHtsYW5nX2ZyYWd9IGluCi0gICAgLi4pIDs7Ci0gICAgIyBUaGUgb2RkIHF1b3RpbmcgaW4gdGhlIG5leHQgbGluZSB3b3JrcyBhcm91bmQKLSAgICAjIGFuIGFwcGFyZW50IGJ1ZyBpbiBiYXNoIDEuMTIgb24gbGludXguCi0gICAgJHtzcmNkaXJ9L2djYy9bKl0vY29uZmlnLWxhbmcuaW4pIDs7Ci0gICAgKikKLSAgICAgICMgRnJvbSB0aGUgY29uZmlnLWxhbmcuaW4sIGdldCAkbGFuZ3VhZ2UsICR0YXJnZXRfbGlicywgCi0gICAgICAjICRsYW5nX2RpcnMsIGFuZCAkYnVpbGRfYnlfZGVmYXVsdAotICAgICAgbGFuZ3VhZ2U9Ci0gICAgICB0YXJnZXRfbGlicz0KLSAgICAgIGxhbmdfZGlycz0KLSAgICAgIGJ1aWxkX2J5X2RlZmF1bHQ9Ci0gICAgICAuICR7bGFuZ19mcmFnfQotICAgICAgaWYgdGVzdCAieCRsYW5ndWFnZSIgPSB4IDsgdGhlbgotICAgICAgICBlY2hvICIke2xhbmdfZnJhZ30gZG9lc24ndCBzZXQgXCRsYW5ndWFnZS4iIDE+JjIKLSAgICAgICAgZXhpdCAxCi0gICAgICBmaQotICAgICAgY2FzZSAsJHtlbmFibGVfbGFuZ3VhZ2VzfSwgaW4KLSAgICAgICAgKiwke2xhbmd1YWdlfSwqKQotICAgICAgICAgICMgTGFuZ3VhZ2Ugd2FzIGV4cGxpY2l0bHkgc2VsZWN0ZWQ7IGluY2x1ZGUgaXQuCi0gICAgICAgICAgYWRkX3RoaXNfbGFuZz15ZXMKLSAgICAgICAgICA7OwotICAgICAgICAqLGFsbCwqKQotICAgICAgICAgICMgJ2FsbCcgd2FzIHNlbGVjdGVkOyBpbmNsdWRlICdkZWZhdWx0JyBsYW5ndWFnZXMuCi0gICAgICAgICAgY2FzZSAke2J1aWxkX2J5X2RlZmF1bHR9IGluCi0gICAgICAgICAgICBubykgYWRkX3RoaXNfbGFuZz1ubyA7OwotICAgICAgICAgICAgKikgYWRkX3RoaXNfbGFuZz15ZXMgOzsKLSAgICAgICAgICBlc2FjIAotICAgICAgICAgIDs7Ci0gICAgICAgICopIGFkZF90aGlzX2xhbmc9bm8gOzsKLSAgICAgIGVzYWMKLSAgICAgIGNhc2UgJHthZGRfdGhpc19sYW5nfSBpbgotICAgICAgICBubykKLSAgICAgICAgICAjIFJlbW92ZSBsYW5ndWFnZS1kZXBlbmRlbnQgZGlycy4KLSAgICAgICAgICBldmFsIG5vY29uZmlnZGlycz0nIiRub2NvbmZpZ2RpcnMgIidcIiR0YXJnZXRfbGlicyAkbGFuZ19kaXJzXCIKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgZXNhYwotZG9uZQorICBtaXNzaW5nX2xhbmd1YWdlcz1gZWNobyAiJG1pc3NpbmdfbGFuZ3VhZ2VzIiB8IHNlZCAtZSAicy9eLC8vIiAtZSAicy8sJC8vImAKKyAgaWYgdGVzdCAieCRtaXNzaW5nX2xhbmd1YWdlcyIgIT0geDsgdGhlbgorICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogCitUaGUgZm9sbG93aW5nIHJlcXVlc3RlZCBsYW5ndWFnZXMgd2VyZSBub3QgZm91bmQ6ICR7bWlzc2luZ19sYW5ndWFnZXN9IiAxPiYyOyBleGl0IDE7IH0KKyAgZmkKKworICBpZiB0ZXN0ICJ4JG5ld19lbmFibGVfbGFuZ3VhZ2VzIiAhPSAieCRlbmFibGVfbGFuZ3VhZ2VzIjsgdGhlbgorICAgIGVjaG8gVGhlIGZvbGxvd2luZyBsYW5ndWFnZXMgd2lsbCBiZSBidWlsdDogJHtuZXdfZW5hYmxlX2xhbmd1YWdlc30KKyAgZmkKKyAgZW5hYmxlX2xhbmd1YWdlcz0iJG5ld19lbmFibGVfbGFuZ3VhZ2VzIgorICBhY19jb25maWd1cmVfYXJncz1gZWNobyAiICRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgLWUgJ3MvIC0tZW5hYmxlLWxhbmd1YWdlcz1bXiBdKi8vJyAtZSAncy8kLyAtLWVuYWJsZS1sYW5ndWFnZXM9JyIkZW5hYmxlX2xhbmd1YWdlcyIvIGAKK2ZpCiAKICMgUmVtb3ZlIHRoZSBlbnRyaWVzIGluICRza2lwZGlycyBhbmQgJG5vY29uZmlnZGlycyBmcm9tICRjb25maWdkaXJzIGFuZAogIyAkdGFyZ2V0X2NvbmZpZ2RpcnMuCkBAIC0xNzc4LDE1NyArMjQ4MSw2IEBACiAgIHNoaWZ0OyBzaGlmdAogZG9uZQogCi0jIFdvcmsgaW4gZGlzdHJpYnV0aW9ucyB0aGF0IGNvbnRhaW4gbm8gY29tcGlsZXIgdG9vbHMsIGxpa2UgQXV0b2NvbmYuCi10ZW50YXRpdmVfY2M9IiIKLWhvc3RfbWFrZWZpbGVfZnJhZz0vZGV2L251bGwKLWlmIHRlc3QgLWQgJHtzcmNkaXJ9L2NvbmZpZyA7IHRoZW4KLWNhc2UgIiR7aG9zdH0iIGluCi0gIG02OGstaHAtaHB1eCopCi0gICAgIyBBdm9pZCAidG9vIG11Y2ggZGVmaW5pbmciIGVycm9ycyBmcm9tIEhQVVggY29tcGlsZXIuCi0gICAgdGVudGF0aXZlX2NjPSJjYyAtV3AsLUgyNTYwMDAiCi0gICAgIyBJZiAiYXIiIGluICRQQVRIIGlzIEdOVSBhciwgdGhlIHN5bWJvbCB0YWJsZSBtYXkgbmVlZCByZWJ1aWxkaW5nLgotICAgICMgSWYgaXQncyBIUC9VWCBhciwgdGhpcyBzaG91bGQgYmUgaGFybWxlc3MuCi0gICAgUkFOTElCPSJhciB0cyIKLSAgICA7OwotICBtNjhrLWFwb2xsby1zeXN2KikKLSAgICB0ZW50YXRpdmVfY2M9ImNjIC1BIGFuc2kgLUEgcnVudHlwZSxhbnkgLUEgc3lzdHlwZSxhbnkgLVVfX1NURENfXyAtRFVTRyIKLSAgICA7OwotICBtNjhrLWFwb2xsby1ic2QqKQotICAgICNOb25lIG9mIHRoZSBBcG9sbG8gY29tcGlsZXJzIGNhbiBjb21waWxlIGdhcyBvciBiaW51dGlscy4gIFRoZSBwcmVwcm9jZXNzb3IKLSAgICAjIGNob2tlcyBvbiBiZmQsIHRoZSBjb21waWxlciB3b24ndCBsZXQgeW91IGFzc2lnbiBpbnRlZ2VycyB0byBlbnVtcywgYW5kCi0gICAgIyBvdGhlciBwcm9ibGVtcy4gIERlZmluaW5nIENDIHRvIGdjYyBpcyBhIHF1ZXN0aW9uYWJsZSB3YXkgdG8gc2F5ICJkb24ndCB1c2UKLSAgICAjIHRoZSBhcG9sbG8gY29tcGlsZXIiICh0aGUgcHJlZmVycmVkIHZlcnNpb24gb2YgR0NDIGNvdWxkIGJlIGNhbGxlZCBjYywKLSAgICAjIG9yIHdoYXRldmVyKSwgYnV0IEknbSBub3Qgc3VyZSBsZWF2aW5nIENDIGFzIGNjIGlzIGFueSBiZXR0ZXIuLi4KLSAgICAjQ0M9Y2MgLUEgYW5zaSAtQSBydW50eXBlLGFueSAtQSBzeXN0eXBlLGFueSAtVV9fU1REQ19fIC1ETk9fU1REQVJHCi0gICAgIyBVc2VkIHRvIGhhdmUgQklTT049eWFjYy4KLSAgICB0ZW50YXRpdmVfY2M9Z2NjCi0gICAgOzsKLSAgbTg4ay1kZy1kZ3V4KikKLSAgICB0ZW50YXRpdmVfY2M9ImdjYyAtV2FsbCAtYW5zaSAtRF9fdXNpbmdfREdVWCIKLSAgICA7OwotICBtODhrLWhhcnJpcy1jeHV4KikKLSAgICAjIFVuZGVyIENYL1VYLCB3ZSB3YW50IHRvIHRlbGwgdGhlIGNvbXBpbGVyIHRvIHVzZSBBTlNJIG1vZGUuCi0gICAgdGVudGF0aXZlX2NjPSJjYyAtWGEiCi0gICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtY3h1eCIKLSAgICA7OwotICBtODhrLW1vdG9yb2xhLXN5c3YqKQotICAgIDs7Ci0gIG1pcHMqLWRlYy11bHRyaXgqKQotICAgIHRlbnRhdGl2ZV9jYz0iY2MgLVdmLC1YTmcxMDAwIgotICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLWRlY3N0YXRpb24iCi0gICAgOzsKLSAgbWlwcyotbmVjLXN5c3Y0KikKLSAgICAjIFRoZSBDIGNvbXBpbGVyIG9uIE5FQyBNSVBTIFNWUjQgbmVlZHMgYmlnZ2VyIHRhYmxlcy4KLSAgICB0ZW50YXRpdmVfY2M9ImNjIC1aWE5kPTUwMDAgLVpYTmc9MTAwMCIKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1uZWN2NCIKLSAgICA7OwotICBtaXBzKi1zZ2ktaXJpeDQqKQotICAgICMgVGVsbCBjb21waWxlciB0byB1c2UgSyZSIEMuICBXZSBjYW4ndCBjb21waWxlIHVuZGVyIHRoZSBTR0kgQW5zaQotICAgICMgZW52aXJvbm1lbnQuICBBbHNvIGJ1bXAgc3dpdGNoIHRhYmxlIHNpemUgc28gdGhhdCBjcC1wYXJzZSB3aWxsCi0gICAgIyBjb21waWxlLiAgQnVtcCBzdHJpbmcgbGVuZ3RoIGxpbWl0IHNvIGxpbmtlciBidWlsZHMuCi0gICAgdGVudGF0aXZlX2NjPSJjYyAtY2NrciAtV2YsLVhOZzE1MDAgLVdmLC1YTmsxMDAwIC1XZiwtWE5oMjAwMCAtV2YsLVhObDgxOTIiCi0gICAgOzsKLSAgbWlwcyotKi1zeXN2NCopCi0gICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtc3lzdjQiCi0gICAgOzsKLSAgbWlwcyotKi1zeXN2KikKLSAgICAjIFRoaXMgaXMgZm9yIGEgTUlQUyBydW5uaW5nIFJJU0Mvb3MgNC41MkMuCi0KLSAgICAjIFRoaXMgaXMgbmVlZGVkIGZvciBHREIsIGJ1dCBuZWVkcyB0byBiZSBpbiB0aGUgdG9wLWxldmVsIG1ha2UgYmVjYXVzZQotICAgICMgaWYgYSBsaWJyYXJ5IGlzIGNvbXBpbGVkIHdpdGggdGhlIGJzZCBoZWFkZXJzIGFuZCBnZXRzIGxpbmtlZCB3aXRoIHRoZQotICAgICMgc3lzdiBzeXN0ZW0gbGlicmFyaWVzIGFsbCBoZWxsIGNhbiBicmVhayBsb29zZSAoZS5nLiBhIGptcF9idWYgbWlnaHQgYmUKLSAgICAjIGEgZGlmZmVyZW50IHNpemUpLgotICAgICMgcHRyYWNlKDIpIGFwcGFyZW50bHkgaGFzIHByb2JsZW1zIGluIHRoZSBCU0QgZW52aXJvbm1lbnQuICBObyB3b3JrYXJvdW5kIGlzCi0gICAgIyBrbm93biBleGNlcHQgdG8gc2VsZWN0IHRoZSBzeXN2IGVudmlyb25tZW50LiAgQ291bGQgd2UgdXNlIC9wcm9jIGluc3RlYWQ/Ci0gICAgIyBUaGVzZSAic3lzdiBlbnZpcm9ubWVudHMiIGFuZCAiYnNkIGVudmlyb25tZW50cyIgb2Z0ZW4gZW5kIHVwIGJlaW5nIGEgcGFpbi4KLSAgICAjCi0gICAgIyBUaGlzIGlzIG5vdCBwYXJ0IG9mIENGTEFHUyBiZWNhdXNlIHBlcmhhcHMgbm90IGFsbCBDIGNvbXBpbGVycyBoYXZlIHRoaXMKLSAgICAjIG9wdGlvbi4KLSAgICB0ZW50YXRpdmVfY2M9ImNjIC1zeXN0eXBlIHN5c3YiCi0gICAgOzsKLSAgaTM3MC1pYm0tb3BlbmVkKikKLSAgICB0ZW50YXRpdmVfY2M9ImM4OSIKLSAgICA7OwotICBpWzM0NTY3ODldODYtKi1zeXN2NSopCi0gICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtc3lzdjUiCi0gICAgOzsKLSAgaVszNDU2Nzg5XTg2LSotZGd1eCopCi0gICAgdGVudGF0aXZlX2NjPSJnY2MgLVdhbGwgLWFuc2kgLURfX3VzaW5nX0RHVVgiCi0gICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtZGd1eDM4NiIKLSAgICA7OwotICBpWzM0NTY3ODldODYtbmNyLXN5c3Y0LjMqKQotICAgICMgVGhlIE1ldGFXYXJlIGNvbXBpbGVyIHdpbGwgZ2VuZXJhdGUgYSBjb3B5cmlnaHQgbWVzc2FnZSB1bmxlc3MgeW91Ci0gICAgIyB0dXJuIGl0IG9mZiBieSBhZGRpbmcgdGhlIC1Ibm9jb3B5ciBmbGFnLgotICAgIHRlbnRhdGl2ZV9jYz0iY2MgLUhub2NvcHlyIgotICAgIDs7Ci0gIGlbMzQ1Njc4OV04Ni1uY3Itc3lzdjQqKQotICAgICMgZm9yIGFuIE5DUiAzMDAwIChpNDg2L1NWUjQpIHN5c3RlbS4KLSAgICAjIFRoZSBOQ1IgMzAwMCBzaGlwcyB3aXRoIGEgTWV0YVdhcmUgY29tcGlsZXIgaW5zdGFsbGVkIGFzIC9iaW4vY2MuCi0gICAgIyBUaGlzIGNvbXBpbGVyIG5vdCBvbmx5IGVtaXRzIG9ibm94aW91cyBjb3B5cmlnaHQgbWVzc2FnZXMgZXZlcnkgdGltZQotICAgICMgeW91IHJ1biBpdCwgYnV0IGl0IGNob2tlcyBhbmQgZGllcyBvbiBhIHdob2xlIGJ1bmNoIG9mIEdOVSBzb3VyY2UKLSAgICAjIGZpbGVzLiAgRGVmYXVsdCB0byB1c2luZyB0aGUgQVQmVCBjb21waWxlciBpbnN0YWxsZWQgaW4gL3Vzci9jY3MvQVRUL2NjLgotICAgIHRlbnRhdGl2ZV9jYz0iL3Vzci9jY3MvQVRUL2NjIgotICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLW5jcjMwMDAiCi0gICAgOzsKLSAgaVszNDU2Nzg5XTg2LSotc2NvMy4ydjUqKQotICAgIDs7Ci0gIGlbMzQ1Njc4OV04Ni0qLXNjbyopCi0gICAgIyBUaGUgbmF0aXZlIEMgY29tcGlsZXIgYm90Y2hlcyBzb21lIHNpbXBsZSB1c2VzIG9mIGNvbnN0LiAgVW5mb3J0dW5hdGVseSwKLSAgICAjIGl0IGRvZXNuJ3QgZGVmaW5lZCBhbnl0aGluZyBsaWtlICJfX3Njb19fIiBmb3IgdXMgdG8gdGVzdCBmb3IgaW4gYW5zaWRlY2wuaC4KLSAgICB0ZW50YXRpdmVfY2M9ImNjIC1EY29uc3Q9IgotICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLXNjbyIKLSAgICA7OwotICBpWzM0NTY3ODldODYtKi11ZGsqKQotICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLXN5c3Y1IgotICAgIDs7Ci0gIGlbMzQ1Njc4OV04Ni0qLXNvbGFyaXMyKikKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zeXN2NCIKLSAgICA7OwotICBpWzM0NTY3ODldODYtKi1tc2Rvc2RqZ3BwKikKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1kamdwcCIKLSAgICA7OwotICAqLWN5Z3dpbiopCi0gICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtY3lnd2luIgotICAgIDs7Ci0gICotbWluZ3czMiopCi0gICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtbWluZ3czMiIKLSAgICA7OwotICAqLWludGVyaXgqKQotICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLWludGVyaXgiCi0gICAgOzsKLSAgdmF4LSotdWx0cml4MiopCi0gICAgIyBUaGUgb2xkIEJTRCBwY2MgaXNuJ3QgdXAgdG8gY29tcGlsaW5nIHBhcnRzIG9mIGdkYiBzbyB1c2UgZ2NjCi0gICAgdGVudGF0aXZlX2NjPWdjYwotICAgIDs7Ci0gICotKi1zb2xhcmlzMiopCi0gICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtc29sYXJpcyIKLSAgICA7OwotICBtNjhrLXN1bi1zdW5vcyopCi0gICAgIyBTdW4ncyBDIGNvbXBpbGVyIG5lZWRzIHRoZSAtSiBmbGFnIHRvIGJlIGFibGUgdG8gY29tcGlsZSBjcC1wYXJzZS5jCi0gICAgIyB3aXRob3V0IG92ZXJmbG93aW5nIHRoZSBqdW1wIHRhYmxlcyAoLUogc2F5cyB0byB1c2UgYSAzMiBiaXQgdGFibGUpCi0gICAgdGVudGF0aXZlX2NjPSJjYyAtSiIKLSAgICA7OwotICAqLWhwLWhwdXgqKQotICAgIHRlbnRhdGl2ZV9jYz0iY2MgLVdwLC1IMjU2MDAwIgotICAgIDs7Ci0gICotKi1oaXV4KikKLSAgICB0ZW50YXRpdmVfY2M9ImNjIC1XcCwtSDI1NjAwMCIKLSAgICA7OwotICByczYwMDAtKi1seW54b3MqKQotICAgICMgL2Jpbi9jYyBpcyBsZXNzIHRoYW4gdXNlZnVsIGZvciBvdXIgcHVycG9zZXMuICBBbHdheXMgdXNlIEdDQwotICAgIHRlbnRhdGl2ZV9jYz0iL3Vzci9jeWdudXMvcHJvZ3Jlc3NpdmUvYmluL2djYyIKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1seW54cnM2ayIKLSAgICA7OwotICAqLSotbHlueG9zKikKLSAgICAjIC9iaW4vY2MgaXMgbGVzcyB0aGFuIHVzZWZ1bCBmb3Igb3VyIHB1cnBvc2VzLiAgQWx3YXlzIHVzZSBHQ0MKLSAgICB0ZW50YXRpdmVfY2M9Ii9iaW4vZ2NjIgotICAgIDs7Ci0gICotKi1zeXN2NCopCi0gICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtc3lzdjQiCi0gICAgOzsKLWVzYWMKLWZpCi0KIGV4dHJhX2FyZmxhZ3NfZm9yX3RhcmdldD0KIGV4dHJhX25tZmxhZ3NfZm9yX3RhcmdldD0KIGV4dHJhX3JhbmxpYmZsYWdzX2Zvcl90YXJnZXQ9CkBAIC0yMDQzLDI4MSArMjU5NSwxMTkgQEAKICAgICA7OwogZXNhYwogCi0jIElmIHdlIGFyZW4ndCBnb2luZyB0byBiZSB1c2luZyBnY2MsIHNlZSBpZiB3ZSBjYW4gZXh0cmFjdCBhIGRlZmluaXRpb24KLSMgb2YgQ0MgZnJvbSB0aGUgZnJhZ21lbnQuCi0jIEFjdHVhbGx5LCB1c2UgdGhlICdwcmUtZXh0cmFjdGVkJyB2ZXJzaW9uIGFib3ZlLgotaWYgdGVzdCAteiAiJHtDQ30iICYmIHRlc3QgIiR7YnVpbGR9IiA9ICIke2hvc3R9IiA7IHRoZW4KLSAgSUZTPSIke0lGUz0gCX0iOyBzYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9OiIKLSAgZm91bmQ9Ci0gIGZvciBkaXIgaW4gJFBBVEg7IGRvCi0gICAgdGVzdCAteiAiJGRpciIgJiYgZGlyPS4KLSAgICBpZiB0ZXN0IC1mICRkaXIvZ2NjOyB0aGVuCi0gICAgICBmb3VuZD15ZXMKLSAgICAgIGJyZWFrCi0gICAgZmkKLSAgZG9uZQotICBJRlM9IiRzYXZlX2lmcyIKLSAgaWYgdGVzdCAteiAiJHtmb3VuZH0iICYmIHRlc3QgLW4gIiR7dGVudGF0aXZlX2NjfSIgOyB0aGVuCi0gICAgQ0M9JHRlbnRhdGl2ZV9jYwotICBmaQotZmkKLQogIyBTb21lIHN5c3RlbXMgKGUuZy4sIG9uZSBvZiB0aGUgaTM4Ni1haXggc3lzdGVtcyB0aGUgZ2FzIHRlc3RlcnMgYXJlCiAjIHVzaW5nKSBkb24ndCBoYW5kbGUgIlwkIiBjb3JyZWN0bHksIHNvIGRvbid0IHVzZSBpdCBoZXJlLgogdG9vbGRpcj0nJHtleGVjX3ByZWZpeH0nLyR7dGFyZ2V0X2FsaWFzfQogYnVpbGRfdG9vbGRpcj0ke3Rvb2xkaXJ9CiAKLSMgR2VuZXJhdGUgYSBkZWZhdWx0IGRlZmluaXRpb24gZm9yIFlBQ0MuICBUaGlzIGlzIHVzZWQgaWYgdGhlIG1ha2VmaWxlIGNhbid0Ci0jIGxvY2F0ZSBiaXNvbiBvciBieWFjYyBpbiBvYmpkaXIuCi0KLWZvciBwcm9nIGluICdiaXNvbiAteScgYnlhY2MgeWFjYworIyBHZW5lcmF0ZSBkZWZhdWx0IGRlZmluaXRpb25zIGZvciBZQUNDLCBNNCwgTEVYLiAgVGhlc2UgYXJlIHVzZWQgaWYgdGhlCisjIE1ha2VmaWxlIGNhbid0IGxvY2F0ZSB0aGVzZSBwcm9ncmFtcyBpbiBvYmpkaXIuCitNSVNTSU5HPWBjZCAkYWNfYXV4X2RpciAmJiAke1BXRENNRC1wd2R9YC9taXNzaW5nCitmb3IgYWNfcHJvZyBpbiAnYmlzb24gLXknIGJ5YWNjIHlhY2MKIGRvCi0gIHNldCBkdW1teSAkcHJvZzsgdG1wPSQyCi0gIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfToiCi0gIGZvciBkaXIgaW4gJFBBVEg7IGRvCi0gICAgdGVzdCAteiAiJGRpciIgJiYgZGlyPS4KLSAgICBpZiB0ZXN0IC1mICRkaXIvJHRtcDsgdGhlbgotICAgICAgREVGQVVMVF9ZQUNDPSIkcHJvZyIKLSAgICAgIGJyZWFrCi0gICAgZmkKLSAgZG9uZQotICBJRlM9IiRzYXZlX2lmcyIKLQotICB0ZXN0IC1uICIkREVGQVVMVF9ZQUNDIiAmJiBicmVhawotZG9uZQotCi0jIEdlbmVyYXRlIGEgZGVmYXVsdCBkZWZpbml0aW9uIGZvciBNNC4gIFRoaXMgaXMgdXNlZCBpZiB0aGUgbWFrZWZpbGUgY2FuJ3QKLSMgbG9jYXRlIG00IGluIG9iamRpci4KLQotZm9yIHByb2cgaW4gZ200IGdudW00IG00Ci1kbwotICBzZXQgZHVtbXkgJHByb2c7IHRtcD0kMgotICBJRlM9IiR7SUZTPSAgIH0iOyBzYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9OiIKLSAgZm9yIGRpciBpbiAkUEFUSDsgZG8KLSAgICB0ZXN0IC16ICIkZGlyIiAmJiBkaXI9LgotICAgIGlmIHRlc3QgLWYgJGRpci8kdG1wOyB0aGVuCi0gICAgICBERUZBVUxUX000PSIkcHJvZyIKLSAgICAgIGJyZWFrCi0gICAgZmkKLSAgZG9uZQotICBJRlM9IiRzYXZlX2lmcyIKLQotICB0ZXN0IC1uICIkREVGQVVMVF9NNCIgJiYgYnJlYWsKLWRvbmUKLQotIyBHZW5lcmF0ZSBhIGRlZmF1bHQgZGVmaW5pdGlvbiBmb3IgTEVYLiAgVGhpcyBpcyB1c2VkIGlmIHRoZSBtYWtlZmlsZSBjYW4ndAotIyBsb2NhdGUgZmxleCBpbiBvYmpkaXIuCi0KLWZvciBwcm9nIGluIGZsZXggbGV4Ci1kbwotICBzZXQgZHVtbXkgJHByb2c7IHRtcD0kMgotICBJRlM9IiR7SUZTPSAJfSI7IHNhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU306IgotICBmb3IgZGlyIGluICRQQVRIOyBkbwotICAgIHRlc3QgLXogIiRkaXIiICYmIGRpcj0uCi0gICAgaWYgdGVzdCAtZiAkZGlyLyR0bXA7IHRoZW4KLSAgICAgIERFRkFVTFRfTEVYPSIkcHJvZyIKLSAgICAgIGJyZWFrCi0gICAgZmkKLSAgZG9uZQotICBJRlM9IiRzYXZlX2lmcyIKLQotICB0ZXN0IC1uICIkREVGQVVMVF9MRVgiICYmIGJyZWFrCi1kb25lCi0KLWlmIHRlc3QgIiR7YnVpbGR9IiAhPSAiJHtob3N0fSIgOyB0aGVuCi0gICMgSWYgd2UgYXJlIGRvaW5nIGEgQ2FuYWRpYW4gQ3Jvc3MsIGluIHdoaWNoIHRoZSBob3N0IGFuZCBidWlsZCBzeXN0ZW1zCi0gICMgYXJlIG5vdCB0aGUgc2FtZSwgd2Ugc2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSB0b29scy4KLQotICBCSVNPTj0ke0JJU09OLWJpc29ufQotICBDQz0ke0NDLSR7aG9zdF9hbGlhc30tZ2NjfQotICBDRkxBR1M9JHtDRkxBR1MtIi1nIC1PMiJ9Ci0gIENYWD0ke0NYWC0ke2hvc3RfYWxpYXN9LWMrK30KLSAgQ1hYRkxBR1M9JHtDWFhGTEFHUy0iLWcgLU8yIn0KLSAgQ0NfRk9SX0JVSUxEPSR7Q0NfRk9SX0JVSUxELWdjY30KLSAgQ0NfRk9SX1RBUkdFVD0ke0NDX0ZPUl9UQVJHRVQtJHt0YXJnZXRfYWxpYXN9LWdjY30KLSAgQ1hYX0ZPUl9UQVJHRVQ9JHtDWFhfRk9SX1RBUkdFVC0ke3RhcmdldF9hbGlhc30tYysrfQotICBHQ0pfRk9SX1RBUkdFVD0ke0dDSl9GT1JfVEFSR0VULSR7dGFyZ2V0X2FsaWFzfS1nY2p9Ci0gIEdDQ19GT1JfVEFSR0VUPSR7R0NDX0ZPUl9UQVJHRVQtJHtDQ19GT1JfVEFSR0VULSR7dGFyZ2V0X2FsaWFzfS1nY2N9fQotICBCVUlMRF9QUkVGSVg9JHtidWlsZF9hbGlhc30tCi0gIEJVSUxEX1BSRUZJWF8xPSR7YnVpbGRfYWxpYXN9LQotICBNQUtFSU5GTz0ke01BS0VJTkZPLW1ha2VpbmZvfQotCi0gIGlmIHRlc3QgLXogIiR7WUFDQ30iIDsgdGhlbgotICAgIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfToiCi0gICAgZm9yIGRpciBpbiAkUEFUSDsgZG8KLSAgICAgIHRlc3QgLXogIiRkaXIiICYmIGRpcj0uCi0gICAgICBpZiB0ZXN0IC1mICRkaXIvYmlzb247IHRoZW4KLQlZQUNDPSJiaXNvbiAteSIKLQlicmVhawotICAgICAgZmkKLSAgICAgIGlmIHRlc3QgLWYgJGRpci9ieWFjYzsgdGhlbgotCVlBQ0M9YnlhY2MKLQlicmVhawotICAgICAgZmkKLSAgICAgIGlmIHRlc3QgLWYgJGRpci95YWNjOyB0aGVuCi0JWUFDQz15YWNjCi0JYnJlYWsKLSAgICAgIGZpCi0gICAgZG9uZQotICAgIElGUz0iJHNhdmVfaWZzIgotICAgIGlmIHRlc3QgLXogIiR7WUFDQ30iIDsgdGhlbgotICAgICAgWUFDQz0iYmlzb24gLXkiCi0gICAgZmkKLSAgZmkKLQotICBpZiB0ZXN0IC16ICIke0xFWH0iIDsgdGhlbgotICAgIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfToiCi0gICAgZm9yIGRpciBpbiAkUEFUSDsgZG8KLSAgICAgIHRlc3QgLXogIiRkaXIiICYmIGRpcj0uCi0gICAgICBpZiB0ZXN0IC1mICRkaXIvZmxleDsgdGhlbgotCUxFWD1mbGV4Ci0JYnJlYWsKLSAgICAgIGZpCi0gICAgICBpZiB0ZXN0IC1mICRkaXIvbGV4OyB0aGVuCi0JTEVYPWxleAotCWJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgICBJRlM9IiRzYXZlX2lmcyIKLSAgICBMRVg9JHtMRVgtZmxleH0KLSAgZmkKLQorIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2CitlY2hvICJjb25maWd1cmU6MjYxMjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0RFRkFVTFRfWUFDQycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCi0gICMgU2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHNvbWUgdG9vbHMgZXZlbiBpZiBub3QgQ2FuYWRpYW4uCi0gICMgT2YgY291cnNlLCB0aGVzZSBhcmUgZGlmZmVyZW50IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMsIG9yaWdpbmFsbHkKLSAgIyBzcGVjaWZpZWQgZGlyZWN0bHkgaW4gdGhlIE1ha2VmaWxlLgotICAjIFdlIGRvbid0IGV4cG9ydCwgc28gdGhhdCBhdXRvY29uZiBjYW4gZG8gaXRzIGpvYi4KLSAgIyBOb3RlIHRoYXQgYWxsIHRoZXNlIHNldHRpbmdzIGFyZSBhYm92ZSB0aGUgZnJhZ21lbnQgaW5jbHVzaW9uIHBvaW50Ci0gICMgaW4gTWFrZWZpbGUuaW4sIHNvIGNhbiBzdGlsbCBiZSBvdmVycmlkZGVuIGJ5IGZyYWdtZW50cy4KLSAgIyBUaGlzIGlzIGFsbCBnb2luZyB0byBjaGFuZ2Ugd2hlbiB3ZSBhdXRvY29uZmlzY2F0ZS4uLgotCi0gIEJJU09OPSJcJChVU1VBTF9CSVNPTikiCi0gIENDX0ZPUl9CVUlMRD0iXCQoQ0MpIgotICBHQ0NfRk9SX1RBUkdFVD0iXCQoVVNVQUxfR0NDX0ZPUl9UQVJHRVQpIgotICBCVUlMRF9QUkVGSVg9Ci0gIEJVSUxEX1BSRUZJWF8xPWxvc2VyLQotICBNQUtFSU5GTz0iXCQoVVNVQUxfTUFLRUlORk8pIgotICBMRVg9IlwkKFVTVUFMX0xFWCkiCi0gIFlBQ0M9IlwkKFVTVUFMX1lBQ0MpIgotCi0gICMgSWYgQ0MgaXMgc3RpbGwgbm90IHNldCwgdHJ5IHRvIGdldCBnY2MuCi0gIGNjX3Byb2dfaXNfZ2NjPQotICBpZiB0ZXN0IC16ICIke0NDfSIgOyB0aGVuCi0gICAgSUZTPSIke0lGUz0gCX0iOyBzYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9OiIKLSAgICBmb3IgZGlyIGluICRQQVRIOyBkbwotICAgICAgdGVzdCAteiAiJGRpciIgJiYgZGlyPS4KLSAgICAgIGlmIHRlc3QgLWYgJGRpci9nY2M7IHRoZW4KLQlDQz0iZ2NjIgotCWNjX3Byb2dfaXNfZ2NjPXllcwotCWVjaG8gJ3ZvaWQgZigpe30nID4gY29uZnRlc3QuYwotCWlmIHRlc3QgLXogImAke0NDfSAtZyAtYyBjb25mdGVzdC5jIDI+JjFgIjsgdGhlbgotCSAgQ0ZMQUdTPSR7Q0ZMQUdTLSItZyAtTzIifQotCSAgQ1hYRkxBR1M9JHtDWFhGTEFHUy0iLWcgLU8yIn0KLQllbHNlCi0JICBDRkxBR1M9JHtDRkxBR1MtIi1PMiJ9Ci0JICBDWFhGTEFHUz0ke0NYWEZMQUdTLSItTzIifQotCWZpCi0Jcm0gLWYgY29uZnRlc3QqCi0JYnJlYWsKLSAgICAgIGZpCi0gICAgZG9uZQotICAgIElGUz0iJHNhdmVfaWZzIgotICAgIENDPSR7Q0MtY2N9Ci0gIGVsc2UKLSAgICAjIERldGVybWluZSBpZiB3ZSBhcmUgdXNpbmcgZ2NjLgotICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDxFT0YKLSNpZmRlZiBfX0dOVUNfXwotICB5ZXM7Ci0jZW5kaWYKLUVPRgotICAgIGlmICR7Q0N9IC1FIGNvbmZ0ZXN0LmMgfCBncmVwIHllcyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgIGNjX3Byb2dfaXNfZ2NjPXllcworICBpZiB0ZXN0IC1uICIkREVGQVVMVF9ZQUNDIjsgdGhlbgorICBhY19jdl9wcm9nX0RFRkFVTFRfWUFDQz0iJERFRkFVTFRfWUFDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IjoiCisgIGFjX2R1bW15PSIkUEFUSCIKKyAgZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRoZW4KKyAgICAgIGFjX2N2X3Byb2dfREVGQVVMVF9ZQUNDPSIkYWNfcHJvZyIKKyAgICAgIGJyZWFrCiAgICAgZmkKLSAgICBybSAtZiBjb25mdGVzdC5jCi0gICAgaWYgdGVzdCAteiAiJHtDRkxBR1N9IjsgdGhlbgotICAgICAgIyBIZXJlIENDIGlzIHNldCBidXQgQ0ZMQUdTIGlzIG5vdC4gIFVzZSBhIHF1aWNrIGhhY2sgdG8gdXNlIC1PMiBpZiBDQwotICAgICAgIyBpcyBzZXQgdG8gYSB2ZXJzaW9uIG9mIGdjYy4KLSAgICAgIGlmIHRlc3QgIiRjY19wcm9nX2lzX2djYyIgPSB5ZXM7IHRoZW4KLQllY2hvICd2b2lkIGYoKXt9JyA+IGNvbmZ0ZXN0LmMKLQlpZiB0ZXN0IC16ICJgJHtDQ30gLWcgLWMgY29uZnRlc3QuYyAyPiYxYCI7IHRoZW4KLQkgIENGTEFHUz0ke0NGTEFHUy0iLWcgLU8yIn0KLQkgIENYWEZMQUdTPSR7Q1hYRkxBR1MtIi1nIC1PMiJ9Ci0JZWxzZQotCSAgQ0ZMQUdTPSR7Q0ZMQUdTLSItTzIifQotCSAgQ1hYRkxBR1M9JHtDWFhGTEFHUy0iLU8yIn0KLQlmaQotCXJtIC1mIGNvbmZ0ZXN0KgotICAgICAgZmkKLSAgICBmaQotICBmaQotCi0gICMgV2UgbXVzdCBzZXQgdGhlIGRlZmF1bHQgbGlua2VyIHRvIHRoZSBsaW5rZXIgdXNlZCBieSBnY2MgZm9yIHRoZSBjb3JyZWN0Ci0gICMgb3BlcmF0aW9uIG9mIGxpYnRvb2wuICBJZiBMRCBpcyBub3QgZGVmaW5lZCBhbmQgd2UgYXJlIHVzaW5nIGdjYywgdHJ5IHRvCi0gICMgc2V0IHRoZSBMRCBkZWZhdWx0IHRvIHRoZSBsZCB1c2VkIGJ5IGdjYy4KLSAgaWYgdGVzdCAteiAiJExEIjsgdGhlbgotICAgIGlmIHRlc3QgIiRjY19wcm9nX2lzX2djYyIgPSB5ZXM7IHRoZW4KLSAgICAgIGNhc2UgJGJ1aWxkIGluCi0gICAgICAqLSotbWluZ3cqKQotCWdjY19wcm9nX2xkPWAkQ0MgLXByaW50LXByb2ctbmFtZT1sZCAyPiYxIHwgdHIgLWQgJ1wwMTUnYCA7OwotICAgICAgKikKLQlnY2NfcHJvZ19sZD1gJENDIC1wcmludC1wcm9nLW5hbWU9bGQgMj4mMWAgOzsKLSAgICAgIGVzYWMKLSAgICAgIGNhc2UgJGdjY19wcm9nX2xkIGluCi0gICAgICAjIEFjY2VwdCBhYnNvbHV0ZSBwYXRocy4KLSAgICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikKLSAgICAgICAgTEQ9IiRnY2NfcHJvZ19sZCIgOzsKLSAgICAgIGVzYWMKLSAgICBmaQotICBmaQotCi0gIENYWD0ke0NYWC0iYysrIn0KLSAgQ0ZMQUdTPSR7Q0ZMQUdTLSItZyJ9Ci0gIENYWEZMQUdTPSR7Q1hYRkxBR1MtIi1nIC1PMiJ9CisgIGRvbmUKKyAgSUZTPSIkYWNfc2F2ZV9pZnMiCitmaQorZmkKK0RFRkFVTFRfWUFDQz0iJGFjX2N2X3Byb2dfREVGQVVMVF9ZQUNDIgoraWYgdGVzdCAtbiAiJERFRkFVTFRfWUFDQyI7IHRoZW4KKyAgZWNobyAiJGFjX3QiIiRERUZBVUxUX1lBQ0MiIDE+JjYKK2Vsc2UKKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CiBmaQogCi0jIEZJWE1FIFNob3VsZCB0aGlzIGJlIGRvbmUgcmVjdXJzaXZlbHkgPz8/IChVc2VmdWwgZm9yIGUuZy4gZ2RidGVzdCkKLSMgU2V0IHVwIHRoZSBsaXN0IG9mIGxpbmtzIHRvIGJlIG1hZGUuCi0jICR7bGlua3N9IGlzIHRoZSBsaXN0IG9mIGxpbmsgbmFtZXMsIGFuZCAke2ZpbGVzfSBpcyB0aGUgbGlzdCBvZiBuYW1lcyB0byBsaW5rIHRvLgotCi0jIE1ha2UgdGhlIGxpbmtzLgotY29uZmlnbGlua3M9IiR7bGlua3N9IgotaWYgdGVzdCAtciAuL2NvbmZpZy5zdGF0dXMgIDsgdGhlbgotICBtdiAtZiAuL2NvbmZpZy5zdGF0dXMgLi9jb25maWcuYmFjawotZmkKLXdoaWxlIHRlc3QgLW4gIiR7ZmlsZXN9IiA7IGRvCi0gICMgc2V0IGZpbGUgdG8gY2FyIG9mIGZpbGVzLCBmaWxlcyB0byBjZHIgb2YgZmlsZXMKLSAgc2V0ICR7ZmlsZXN9OyBmaWxlPSQxOyBzaGlmdDsgZmlsZXM9JCoKLSAgc2V0ICR7bGlua3N9OyBsaW5rPSQxOyBzaGlmdDsgbGlua3M9JCoKLQotICBpZiB0ZXN0ICEgLXIgJHtzcmNkaXJ9LyR7ZmlsZX0gOyB0aGVuCi0gICAgaWYgdGVzdCAhIC1yICR7ZmlsZX0gOyB0aGVuCi0gICAgICBlY2hvICcqKionICIke3Byb2duYW1lfTogY2Fubm90IGNyZWF0ZSBhIGxpbmsgXCIke2xpbmt9XCIsIiAxPiYyCi0gICAgICBlY2hvICcqKionICJzaW5jZSB0aGUgZmlsZSBcIiR7c3JjZGlyfS8ke2ZpbGV9XCIgZG9lcyBub3QgZXhpc3QuIiAxPiYyCi0gICAgICBleGl0IDEKLSAgICBlbHNlCi0gICAgICBzcmNmaWxlPSR7ZmlsZX0KLSAgICBmaQotICBlbHNlCi0gICAgc3JjZmlsZT0ke3NyY2Rpcn0vJHtmaWxlfQotICBmaQotCi0gICR7cmVtb3ZlfSAtZiAke2xpbmt9Ci0gICMgTWFrZSBhIHN5bWxpbmsgaWYgcG9zc2libGUsIG90aGVyd2lzZSB0cnkgYSBoYXJkIGxpbmsKLSAgaWYgJHtzeW1ib2xpY19saW5rfSAke3NyY2ZpbGV9ICR7bGlua30gPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgotICAgIHRydWUKLSAgZWxzZQotICAgICMgV2UgbmVlZCB0byByZS1yZW1vdmUgdGhlIGZpbGUgYmVjYXVzZSBMeW54IGxlYXZlcyBhIAotICAgICMgdmVyeSBzdHJhbmdlIGRpcmVjdG9yeSB0aGVyZSB3aGVuIGl0IGZhaWxzIGFuIE5GUyBzeW1saW5rLgotICAgICR7cmVtb3ZlfSAtciAtZiAke2xpbmt9Ci0gICAgJHtoYXJkX2xpbmt9ICR7c3JjZmlsZX0gJHtsaW5rfQotICBmaQotICBpZiB0ZXN0ICEgLXIgJHtsaW5rfSA7IHRoZW4KLSAgICBlY2hvICcqKionICIke3Byb2duYW1lfTogdW5hYmxlIHRvIGxpbmsgXCIke2xpbmt9XCIgdG8gXCIke3NyY2ZpbGV9XCIuIiAxPiYyCi0gICAgZXhpdCAxCi0gIGZpCi0KLSAgZWNobyAiTGlua2VkIFwiJHtsaW5rfVwiIHRvIFwiJHtzcmNmaWxlfVwiLiIKK3Rlc3QgLW4gIiRERUZBVUxUX1lBQ0MiICYmIGJyZWFrCiBkb25lCit0ZXN0IC1uICIkREVGQVVMVF9ZQUNDIiB8fCBERUZBVUxUX1lBQ0M9IiRNSVNTSU5HIGJpc29uIgorCitmb3IgYWNfcHJvZyBpbiBnbTQgZ251bTQgbTQKK2RvCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKK2VjaG8gImNvbmZpZ3VyZToyNjQ3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQoraWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfREVGQVVMVF9NNCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCisgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRERUZBVUxUX000IjsgdGhlbgorICBhY19jdl9wcm9nX0RFRkFVTFRfTTQ9IiRERUZBVUxUX000IiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKKyAgYWNfZHVtbXk9IiRQQVRIIgorICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgorICAgICAgYWNfY3ZfcHJvZ19ERUZBVUxUX000PSIkYWNfcHJvZyIKKyAgICAgIGJyZWFrCisgICAgZmkKKyAgZG9uZQorICBJRlM9IiRhY19zYXZlX2lmcyIKK2ZpCitmaQorREVGQVVMVF9NND0iJGFjX2N2X3Byb2dfREVGQVVMVF9NNCIKK2lmIHRlc3QgLW4gIiRERUZBVUxUX000IjsgdGhlbgorICBlY2hvICIkYWNfdCIiJERFRkFVTFRfTTQiIDE+JjYKK2Vsc2UKKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CitmaQorCit0ZXN0IC1uICIkREVGQVVMVF9NNCIgJiYgYnJlYWsKK2RvbmUKK3Rlc3QgLW4gIiRERUZBVUxUX000IiB8fCBERUZBVUxUX000PSIkTUlTU0lORyBtNCIKKworZm9yIGFjX3Byb2cgaW4gZmxleCBsZXgKK2RvCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKK2VjaG8gImNvbmZpZ3VyZToyNjgyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQoraWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfREVGQVVMVF9MRVgnK3NldH0nYFwiID0gc2V0IjsgdGhlbgorICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkREVGQVVMVF9MRVgiOyB0aGVuCisgIGFjX2N2X3Byb2dfREVGQVVMVF9MRVg9IiRERUZBVUxUX0xFWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IjoiCisgIGFjX2R1bW15PSIkUEFUSCIKKyAgZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCisgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRoZW4KKyAgICAgIGFjX2N2X3Byb2dfREVGQVVMVF9MRVg9IiRhY19wcm9nIgorICAgICAgYnJlYWsKKyAgICBmaQorICBkb25lCisgIElGUz0iJGFjX3NhdmVfaWZzIgorZmkKK2ZpCitERUZBVUxUX0xFWD0iJGFjX2N2X3Byb2dfREVGQVVMVF9MRVgiCitpZiB0ZXN0IC1uICIkREVGQVVMVF9MRVgiOyB0aGVuCisgIGVjaG8gIiRhY190IiIkREVGQVVMVF9MRVgiIDE+JjYKK2Vsc2UKKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CitmaQorCit0ZXN0IC1uICIkREVGQVVMVF9MRVgiICYmIGJyZWFrCitkb25lCit0ZXN0IC1uICIkREVGQVVMVF9MRVgiIHx8IERFRkFVTFRfTEVYPSIkTUlTU0lORyBmbGV4IgorCiAKICMgQ3JlYXRlIGEgLmdkYmluaXQgZmlsZSB3aGljaCBydW5zIHRoZSBvbmUgaW4gc3JjZGlyCiAjIGFuZCB0ZWxscyBHREIgdG8gbG9vayB0aGVyZSBmb3Igc291cmNlIGZpbGVzLgpAQCAtMjU0OSwyMSArMjkzOSwyMSBAQAogIyBhdCB0aGUgZW5kIG9mIHRoZSBhcmd1bWVudCBsaXN0LgogIyBUaGVzZSB3aWxsIGJlIGV4cGFuZGVkIGJ5IG1ha2UsIHNvIHF1b3RlICckJy4KIGNhdCA8PFxFT0ZfU0VEID4gY29uZnRlc3RzZWQKLXMvIC0tbm9bXiBdKiAvIC8KLXMvIC0tY1thLXotXSpbPSBdW14gXSogLyAvCi1zLyAtLXNyW2Etei1dKls9IF1bXiBdKiAvIC8KLXMvIC0taG9bYS16LV0qWz0gXVteIF0qIC8gLwotcy8gLS1idVthLXotXSpbPSBdW14gXSogLyAvCi1zLyAtLXRbYS16LV0qWz0gXVteIF0qIC8gLwotcy8gLS1wcm9ncmFtLVtwc3RdW2Etei1dKls9IF1bXiBdKiAvIC8KLXMvIC1jYWNoZS1maWxlWz0gXVteIF0qIC8gLwotcy8gLXNyY2Rpcls9IF1bXiBdKiAvIC8KLXMvIC1ob3N0Wz0gXVteIF0qIC8gLwotcy8gLWJ1aWxkWz0gXVteIF0qIC8gLwotcy8gLXRhcmdldFs9IF1bXiBdKiAvIC8KLXMvIC1wcm9ncmFtLXByZWZpeFs9IF1bXiBdKiAvIC8KLXMvIC1wcm9ncmFtLXN1ZmZpeFs9IF1bXiBdKiAvIC8KLXMvIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lWz0gXVteIF0qIC8gLworcy8gLS1ub1teIF0qLyAvZworcy8gLS1jW2Etei1dKls9IF1bXiBdKi8vZworcy8gLS1zclthLXotXSpbPSBdW14gXSovL2cKK3MvIC0taG9bYS16LV0qWz0gXVteIF0qLy9nCitzLyAtLWJ1W2Etei1dKls9IF1bXiBdKi8vZworcy8gLS10W2Etei1dKls9IF1bXiBdKi8vZworcy8gLS1wcm9ncmFtLVtwc3RdW2Etei1dKls9IF1bXiBdKi8vZworcy8gLWNhY2hlLWZpbGVbPSBdW14gXSovL2cKK3MvIC1zcmNkaXJbPSBdW14gXSovL2cKK3MvIC1ob3N0Wz0gXVteIF0qLy9nCitzLyAtYnVpbGRbPSBdW14gXSovL2cKK3MvIC10YXJnZXRbPSBdW14gXSovL2cKK3MvIC1wcm9ncmFtLXByZWZpeFs9IF1bXiBdKi8vZworcy8gLXByb2dyYW0tc3VmZml4Wz0gXVteIF0qLy9nCitzLyAtcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZVs9IF1bXiBdKi8vZwogcy8gW14nIC1dW14gXSogLyAvCiBzL14gKi8vO3MvICokLy8KIHMsXCQsJCQsZwpAQCAtMjgyMCw3ICszMjEwLDYgQEAKIAogCiAKLQogIyBCdWlsZCBtb2R1bGUgbGlzdHMgJiBzdWJjb25maWd1cmUgYXJncy4KIAogCkBAIC0yODUyLDcgKzMyNDEsNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7bmNuX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke25jbl90b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyODU2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjMyNDU6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19BUicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yODg1LDcgKzMyNzQsNyBAQAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI4ODk6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MzI3ODogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX25jbl9jdl9BUicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yOTI0LDcgKzMzMTMsNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7bmNuX3Rvb2xfcHJlZml4fWFzIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke25jbl90b29sX3ByZWZpeH1hczsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyOTI4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjMzMTc6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19BUycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yOTU3LDcgKzMzNDYsNyBAQAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXMiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGFzOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI5NjE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MzM1MDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX25jbl9jdl9BUycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yOTk2LDcgKzMzODUsNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7bmNuX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15ICR7bmNuX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzAwMDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozMzg5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfRExMVE9PTCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zMDI5LDcgKzM0MTgsNyBAQAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMDMzOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjM0MjI6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19uY25fY3ZfRExMVE9PTCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zMDY4LDcgKzM0NTcsNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7bmNuX3Rvb2xfcHJlZml4fWxkIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke25jbl90b29sX3ByZWZpeH1sZDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMDcyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjM0NjE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19MRCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zMTAxLDcgKzM0OTAsNyBAQAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibGQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGxkOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMxMDU6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MzQ5NDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX25jbl9jdl9MRCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zMTQwLDcgKzM1MjksNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7bmNuX3Rvb2xfcHJlZml4fW5tIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke25jbl90b29sX3ByZWZpeH1ubTsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMTQ0OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjM1MzM6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19OTScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zMTczLDcgKzM1NjIsNyBAQAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibm0iLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IG5tOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMxNzc6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MzU2NjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX25jbl9jdl9OTScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zMjEyLDcgKzM2MDEsNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7bmNuX3Rvb2xfcHJlZml4fXJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJHtuY25fdG9vbF9wcmVmaXh9cmFubGliOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMyMTY6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MzYwNTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX1JBTkxJQicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zMjQ1LDcgKzM2MzQsNyBAQAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzI0OTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNjM4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfbmNuX2N2X1JBTkxJQicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zMjg0LDcgKzM2NzMsNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7bmNuX3Rvb2xfcHJlZml4fXdpbmRyZXMiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15ICR7bmNuX3Rvb2xfcHJlZml4fXdpbmRyZXM7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzI4ODogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNjc3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfV0lORFJFUycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zMzE3LDcgKzM3MDYsNyBAQAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAid2luZHJlcyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgd2luZHJlczsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMzIxOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjM3MTA6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19uY25fY3ZfV0lORFJFUycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zMzU2LDcgKzM3NDUsNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7bmNuX3Rvb2xfcHJlZml4fW9iamNvcHkiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15ICR7bmNuX3Rvb2xfcHJlZml4fW9iamNvcHk7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzM2MDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNzQ5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfT0JKQ09QWScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zMzg5LDcgKzM3NzgsNyBAQAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2JqY29weSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgb2JqY29weTsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMzkzOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjM3ODI6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19uY25fY3ZfT0JKQ09QWScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zNDI4LDcgKzM4MTcsNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7bmNuX3Rvb2xfcHJlZml4fW9iamR1bXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15ICR7bmNuX3Rvb2xfcHJlZml4fW9iamR1bXA7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzQzMjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozODIxOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfT0JKRFVNUCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zNDYxLDcgKzM4NTAsNyBAQAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2JqZHVtcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgb2JqZHVtcDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNDY1OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjM4NTQ6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19uY25fY3ZfT0JKRFVNUCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0zNTEwLDUwNCArMzg5OSw1MDQgQEAKICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15ICR7bmNuX3RhcmdldF90b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNTE0OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQVJfRk9SX1RBUkdFVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCitlY2hvICJjb25maWd1cmU6MzkwMzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NPTkZJR1VSRURfQVJfRk9SX1RBUkdFVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCi0gIGlmIHRlc3QgLW4gIiRBUl9GT1JfVEFSR0VUIjsgdGhlbgotICBhY19jdl9wcm9nX0FSX0ZPUl9UQVJHRVQ9IiRBUl9GT1JfVEFSR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKyAgaWYgdGVzdCAtbiAiJENPTkZJR1VSRURfQVJfRk9SX1RBUkdFVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQ9IiRDT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgogZWxzZQogICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSI6IgogICBhY19kdW1teT0iJFBBVEgiCiAgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwogICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCiAgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyRhY193b3JkOyB0aGVuCi0gICAgICBhY19jdl9wcm9nX0FSX0ZPUl9UQVJHRVQ9IiR7bmNuX3RhcmdldF90b29sX3ByZWZpeH1hciIKKyAgICAgIGFjX2N2X3Byb2dfQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUPSIke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9YXIiCiAgICAgICBicmVhawogICAgIGZpCiAgIGRvbmUKICAgSUZTPSIkYWNfc2F2ZV9pZnMiCiBmaQogZmkKLUFSX0ZPUl9UQVJHRVQ9IiRhY19jdl9wcm9nX0FSX0ZPUl9UQVJHRVQiCi1pZiB0ZXN0IC1uICIkQVJfRk9SX1RBUkdFVCI7IHRoZW4KLSAgZWNobyAiJGFjX3QiIiRBUl9GT1JfVEFSR0VUIiAxPiY2CitDT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQ9IiRhY19jdl9wcm9nX0NPTkZJR1VSRURfQVJfRk9SX1RBUkdFVCIKK2lmIHRlc3QgLW4gIiRDT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQiOyB0aGVuCisgIGVjaG8gIiRhY190IiIkQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUIiAxPiY2CiBlbHNlCiAgIGVjaG8gIiRhY190IiJubyIgMT4mNgogZmkKIAogZmkKLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSX0ZPUl9UQVJHRVQiIDsgdGhlbgoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUIiA7IHRoZW4KICAgaWYgdGVzdCAkYnVpbGQgPSAkdGFyZ2V0IDsgdGhlbgotICAgIG5jbl9jdl9BUl9GT1JfVEFSR0VUPSRBUl9GT1JfVEFSR0VUCisgICAgbmNuX2N2X0NPTkZJR1VSRURfQVJfRk9SX1RBUkdFVD0kQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUCiAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzU0NzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLWlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX25jbl9jdl9BUl9GT1JfVEFSR0VUJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KK2VjaG8gImNvbmZpZ3VyZTozOTM2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQoraWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfbmNuX2N2X0NPTkZJR1VSRURfQVJfRk9SX1RBUkdFVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCi0gIGlmIHRlc3QgLW4gIiRuY25fY3ZfQVJfRk9SX1RBUkdFVCI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19uY25fY3ZfQVJfRk9SX1RBUkdFVD0iJG5jbl9jdl9BUl9GT1JfVEFSR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKyAgaWYgdGVzdCAtbiAiJG5jbl9jdl9DT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQiOyB0aGVuCisgIGFjX2N2X3Byb2dfbmNuX2N2X0NPTkZJR1VSRURfQVJfRk9SX1RBUkdFVD0iJG5jbl9jdl9DT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgogZWxzZQogICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSI6IgogICBhY19kdW1teT0iJFBBVEgiCiAgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwogICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCiAgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyRhY193b3JkOyB0aGVuCi0gICAgICBhY19jdl9wcm9nX25jbl9jdl9BUl9GT1JfVEFSR0VUPSJhciIKKyAgICAgIGFjX2N2X3Byb2dfbmNuX2N2X0NPTkZJR1VSRURfQVJfRk9SX1RBUkdFVD0iYXIiCiAgICAgICBicmVhawogICAgIGZpCiAgIGRvbmUKICAgSUZTPSIkYWNfc2F2ZV9pZnMiCi0gIHRlc3QgLXogIiRhY19jdl9wcm9nX25jbl9jdl9BUl9GT1JfVEFSR0VUIiAmJiBhY19jdl9wcm9nX25jbl9jdl9BUl9GT1JfVEFSR0VUPSJhciIKKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfbmNuX2N2X0NPTkZJR1VSRURfQVJfRk9SX1RBUkdFVCIgJiYgYWNfY3ZfcHJvZ19uY25fY3ZfQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUPSJhciIKIGZpCiBmaQotbmNuX2N2X0FSX0ZPUl9UQVJHRVQ9IiRhY19jdl9wcm9nX25jbl9jdl9BUl9GT1JfVEFSR0VUIgotaWYgdGVzdCAtbiAiJG5jbl9jdl9BUl9GT1JfVEFSR0VUIjsgdGhlbgotICBlY2hvICIkYWNfdCIiJG5jbl9jdl9BUl9GT1JfVEFSR0VUIiAxPiY2CituY25fY3ZfQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19uY25fY3ZfQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUIgoraWYgdGVzdCAtbiAiJG5jbl9jdl9DT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQiOyB0aGVuCisgIGVjaG8gIiRhY190IiIkbmNuX2N2X0NPTkZJR1VSRURfQVJfRk9SX1RBUkdFVCIgMT4mNgogZWxzZQogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIGZpCiAgCi0gICAgQVJfRk9SX1RBUkdFVD0kbmNuX2N2X0FSX0ZPUl9UQVJHRVQKKyAgICBDT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQ9JG5jbl9jdl9DT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQKICAgZWxzZQotICAgIEFSX0ZPUl9UQVJHRVQ9IiR7bmNuX3RhcmdldF90b29sX3ByZWZpeH1hciIKKyAgICBDT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQ9IiR7bmNuX3RhcmdldF90b29sX3ByZWZpeH1hciIKICAgZmkKIGVsc2UKLSAgQVJfRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfQVJfRk9SX1RBUkdFVCIKKyAgQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19DT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQiCiBmaQogCiAgaWYgdGVzdCAtbiAiJG5jbl90YXJnZXRfdG9vbF9wcmVmaXgiOyB0aGVuCiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fWFzIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9YXM7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzU4NjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLWlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0FTX0ZPUl9UQVJHRVQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgorZWNobyAiY29uZmlndXJlOjM5NzU6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkQVNfRk9SX1RBUkdFVCI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19BU19GT1JfVEFSR0VUPSIkQVNfRk9SX1RBUkdFVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRDT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVQiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUPSIkQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKICAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKICAgYWNfZHVtbXk9IiRQQVRIIgogICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgogICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgotICAgICAgYWNfY3ZfcHJvZ19BU19GT1JfVEFSR0VUPSIke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9YXMiCisgICAgICBhY19jdl9wcm9nX0NPTkZJR1VSRURfQVNfRk9SX1RBUkdFVD0iJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fWFzIgogICAgICAgYnJlYWsKICAgICBmaQogICBkb25lCiAgIElGUz0iJGFjX3NhdmVfaWZzIgogZmkKIGZpCi1BU19GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19BU19GT1JfVEFSR0VUIgotaWYgdGVzdCAtbiAiJEFTX0ZPUl9UQVJHRVQiOyB0aGVuCi0gIGVjaG8gIiRhY190IiIkQVNfRk9SX1RBUkdFVCIgMT4mNgorQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19DT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVQiCitpZiB0ZXN0IC1uICIkQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUIjsgdGhlbgorICBlY2hvICIkYWNfdCIiJENPTkZJR1VSRURfQVNfRk9SX1RBUkdFVCIgMT4mNgogZWxzZQogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIGZpCiAKIGZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BU19GT1JfVEFSR0VUIiA7IHRoZW4KK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0NPTkZJR1VSRURfQVNfRk9SX1RBUkdFVCIgOyB0aGVuCiAgIGlmIHRlc3QgJGJ1aWxkID0gJHRhcmdldCA7IHRoZW4KLSAgICBuY25fY3ZfQVNfRk9SX1RBUkdFVD0kQVNfRk9SX1RBUkdFVAorICAgIG5jbl9jdl9DT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVQ9JENPTkZJR1VSRURfQVNfRk9SX1RBUkdFVAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXMiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGFzOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM2MTk6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci1pZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19uY25fY3ZfQVNfRk9SX1RBUkdFVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCitlY2hvICJjb25maWd1cmU6NDAwODogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkbmNuX2N2X0FTX0ZPUl9UQVJHRVQiOyB0aGVuCi0gIGFjX2N2X3Byb2dfbmNuX2N2X0FTX0ZPUl9UQVJHRVQ9IiRuY25fY3ZfQVNfRk9SX1RBUkdFVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRuY25fY3ZfQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUIjsgdGhlbgorICBhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVQ9IiRuY25fY3ZfQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKICAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKICAgYWNfZHVtbXk9IiRQQVRIIgogICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgogICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgotICAgICAgYWNfY3ZfcHJvZ19uY25fY3ZfQVNfRk9SX1RBUkdFVD0iYXMiCisgICAgICBhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVQ9ImFzIgogICAgICAgYnJlYWsKICAgICBmaQogICBkb25lCiAgIElGUz0iJGFjX3NhdmVfaWZzIgotICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19uY25fY3ZfQVNfRk9SX1RBUkdFVCIgJiYgYWNfY3ZfcHJvZ19uY25fY3ZfQVNfRk9SX1RBUkdFVD0iYXMiCisgIHRlc3QgLXogIiRhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVQiICYmIGFjX2N2X3Byb2dfbmNuX2N2X0NPTkZJR1VSRURfQVNfRk9SX1RBUkdFVD0iYXMiCiBmaQogZmkKLW5jbl9jdl9BU19GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19uY25fY3ZfQVNfRk9SX1RBUkdFVCIKLWlmIHRlc3QgLW4gIiRuY25fY3ZfQVNfRk9SX1RBUkdFVCI7IHRoZW4KLSAgZWNobyAiJGFjX3QiIiRuY25fY3ZfQVNfRk9SX1RBUkdFVCIgMT4mNgorbmNuX2N2X0NPTkZJR1VSRURfQVNfRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfbmNuX2N2X0NPTkZJR1VSRURfQVNfRk9SX1RBUkdFVCIKK2lmIHRlc3QgLW4gIiRuY25fY3ZfQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUIjsgdGhlbgorICBlY2hvICIkYWNfdCIiJG5jbl9jdl9DT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVQiIDE+JjYKIGVsc2UKICAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CiBmaQogIAotICAgIEFTX0ZPUl9UQVJHRVQ9JG5jbl9jdl9BU19GT1JfVEFSR0VUCisgICAgQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUPSRuY25fY3ZfQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUCiAgIGVsc2UKLSAgICBBU19GT1JfVEFSR0VUPSIke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9YXMiCisgICAgQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUPSIke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9YXMiCiAgIGZpCiBlbHNlCi0gIEFTX0ZPUl9UQVJHRVQ9IiRhY19jdl9wcm9nX0FTX0ZPUl9UQVJHRVQiCisgIENPTkZJR1VSRURfQVNfRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUIgogZmkKIAogIGlmIHRlc3QgLW4gIiRuY25fdGFyZ2V0X3Rvb2xfcHJlZml4IjsgdGhlbgogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7bmNuX3RhcmdldF90b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNjU4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfRExMVE9PTF9GT1JfVEFSR0VUJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KK2VjaG8gImNvbmZpZ3VyZTo0MDQ3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQoraWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ09ORklHVVJFRF9ETExUT09MX0ZPUl9UQVJHRVQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkRExMVE9PTF9GT1JfVEFSR0VUIjsgdGhlbgotICBhY19jdl9wcm9nX0RMTFRPT0xfRk9SX1RBUkdFVD0iJERMTFRPT0xfRk9SX1RBUkdFVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRDT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVD0iJENPTkZJR1VSRURfRExMVE9PTF9GT1JfVEFSR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKICAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKICAgYWNfZHVtbXk9IiRQQVRIIgogICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgogICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgotICAgICAgYWNfY3ZfcHJvZ19ETExUT09MX0ZPUl9UQVJHRVQ9IiR7bmNuX3RhcmdldF90b29sX3ByZWZpeH1kbGx0b29sIgorICAgICAgYWNfY3ZfcHJvZ19DT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVD0iJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fWRsbHRvb2wiCiAgICAgICBicmVhawogICAgIGZpCiAgIGRvbmUKICAgSUZTPSIkYWNfc2F2ZV9pZnMiCiBmaQogZmkKLURMTFRPT0xfRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfRExMVE9PTF9GT1JfVEFSR0VUIgotaWYgdGVzdCAtbiAiJERMTFRPT0xfRk9SX1RBUkdFVCI7IHRoZW4KLSAgZWNobyAiJGFjX3QiIiRETExUT09MX0ZPUl9UQVJHRVQiIDE+JjYKK0NPTkZJR1VSRURfRExMVE9PTF9GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19DT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVCIKK2lmIHRlc3QgLW4gIiRDT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVCI7IHRoZW4KKyAgZWNobyAiJGFjX3QiIiRDT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVCIgMT4mNgogZWxzZQogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIGZpCiAKIGZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MX0ZPUl9UQVJHRVQiIDsgdGhlbgoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQ09ORklHVVJFRF9ETExUT09MX0ZPUl9UQVJHRVQiIDsgdGhlbgogICBpZiB0ZXN0ICRidWlsZCA9ICR0YXJnZXQgOyB0aGVuCi0gICAgbmNuX2N2X0RMTFRPT0xfRk9SX1RBUkdFVD0kRExMVE9PTF9GT1JfVEFSR0VUCisgICAgbmNuX2N2X0NPTkZJR1VSRURfRExMVE9PTF9GT1JfVEFSR0VUPSRDT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNjkxOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfbmNuX2N2X0RMTFRPT0xfRk9SX1RBUkdFVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCitlY2hvICJjb25maWd1cmU6NDA4MDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCi0gIGlmIHRlc3QgLW4gIiRuY25fY3ZfRExMVE9PTF9GT1JfVEFSR0VUIjsgdGhlbgotICBhY19jdl9wcm9nX25jbl9jdl9ETExUT09MX0ZPUl9UQVJHRVQ9IiRuY25fY3ZfRExMVE9PTF9GT1JfVEFSR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKyAgaWYgdGVzdCAtbiAiJG5jbl9jdl9DT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19uY25fY3ZfQ09ORklHVVJFRF9ETExUT09MX0ZPUl9UQVJHRVQ9IiRuY25fY3ZfQ09ORklHVVJFRF9ETExUT09MX0ZPUl9UQVJHRVQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgogZWxzZQogICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSI6IgogICBhY19kdW1teT0iJFBBVEgiCiAgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwogICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCiAgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyRhY193b3JkOyB0aGVuCi0gICAgICBhY19jdl9wcm9nX25jbl9jdl9ETExUT09MX0ZPUl9UQVJHRVQ9ImRsbHRvb2wiCisgICAgICBhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVD0iZGxsdG9vbCIKICAgICAgIGJyZWFrCiAgICAgZmkKICAgZG9uZQogICBJRlM9IiRhY19zYXZlX2lmcyIKLSAgdGVzdCAteiAiJGFjX2N2X3Byb2dfbmNuX2N2X0RMTFRPT0xfRk9SX1RBUkdFVCIgJiYgYWNfY3ZfcHJvZ19uY25fY3ZfRExMVE9PTF9GT1JfVEFSR0VUPSJkbGx0b29sIgorICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19uY25fY3ZfQ09ORklHVVJFRF9ETExUT09MX0ZPUl9UQVJHRVQiICYmIGFjX2N2X3Byb2dfbmNuX2N2X0NPTkZJR1VSRURfRExMVE9PTF9GT1JfVEFSR0VUPSJkbGx0b29sIgogZmkKIGZpCi1uY25fY3ZfRExMVE9PTF9GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19uY25fY3ZfRExMVE9PTF9GT1JfVEFSR0VUIgotaWYgdGVzdCAtbiAiJG5jbl9jdl9ETExUT09MX0ZPUl9UQVJHRVQiOyB0aGVuCi0gIGVjaG8gIiRhY190IiIkbmNuX2N2X0RMTFRPT0xfRk9SX1RBUkdFVCIgMT4mNgorbmNuX2N2X0NPTkZJR1VSRURfRExMVE9PTF9GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19uY25fY3ZfQ09ORklHVVJFRF9ETExUT09MX0ZPUl9UQVJHRVQiCitpZiB0ZXN0IC1uICIkbmNuX2N2X0NPTkZJR1VSRURfRExMVE9PTF9GT1JfVEFSR0VUIjsgdGhlbgorICBlY2hvICIkYWNfdCIiJG5jbl9jdl9DT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVCIgMT4mNgogZWxzZQogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIGZpCiAgCi0gICAgRExMVE9PTF9GT1JfVEFSR0VUPSRuY25fY3ZfRExMVE9PTF9GT1JfVEFSR0VUCisgICAgQ09ORklHVVJFRF9ETExUT09MX0ZPUl9UQVJHRVQ9JG5jbl9jdl9DT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVAogICBlbHNlCi0gICAgRExMVE9PTF9GT1JfVEFSR0VUPSIke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKyAgICBDT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVD0iJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fWRsbHRvb2wiCiAgIGZpCiBlbHNlCi0gIERMTFRPT0xfRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfRExMVE9PTF9GT1JfVEFSR0VUIgorICBDT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfQ09ORklHVVJFRF9ETExUT09MX0ZPUl9UQVJHRVQiCiBmaQogCiAgaWYgdGVzdCAtbiAiJG5jbl90YXJnZXRfdG9vbF9wcmVmaXgiOyB0aGVuCiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fWxkIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9bGQ7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzczMDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLWlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0xEX0ZPUl9UQVJHRVQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgorZWNobyAiY29uZmlndXJlOjQxMTk6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkTERfRk9SX1RBUkdFVCI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19MRF9GT1JfVEFSR0VUPSIkTERfRk9SX1RBUkdFVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRDT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VUPSIkQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKICAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKICAgYWNfZHVtbXk9IiRQQVRIIgogICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgogICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgotICAgICAgYWNfY3ZfcHJvZ19MRF9GT1JfVEFSR0VUPSIke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9bGQiCisgICAgICBhY19jdl9wcm9nX0NPTkZJR1VSRURfTERfRk9SX1RBUkdFVD0iJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fWxkIgogICAgICAgYnJlYWsKICAgICBmaQogICBkb25lCiAgIElGUz0iJGFjX3NhdmVfaWZzIgogZmkKIGZpCi1MRF9GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19MRF9GT1JfVEFSR0VUIgotaWYgdGVzdCAtbiAiJExEX0ZPUl9UQVJHRVQiOyB0aGVuCi0gIGVjaG8gIiRhY190IiIkTERfRk9SX1RBUkdFVCIgMT4mNgorQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19DT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQiCitpZiB0ZXN0IC1uICIkQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VUIjsgdGhlbgorICBlY2hvICIkYWNfdCIiJENPTkZJR1VSRURfTERfRk9SX1RBUkdFVCIgMT4mNgogZWxzZQogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIGZpCiAKIGZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19MRF9GT1JfVEFSR0VUIiA7IHRoZW4KK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0NPTkZJR1VSRURfTERfRk9SX1RBUkdFVCIgOyB0aGVuCiAgIGlmIHRlc3QgJGJ1aWxkID0gJHRhcmdldCA7IHRoZW4KLSAgICBuY25fY3ZfTERfRk9SX1RBUkdFVD0kTERfRk9SX1RBUkdFVAorICAgIG5jbl9jdl9DT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQ9JENPTkZJR1VSRURfTERfRk9SX1RBUkdFVAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibGQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGxkOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM3NjM6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci1pZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19uY25fY3ZfTERfRk9SX1RBUkdFVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCitlY2hvICJjb25maWd1cmU6NDE1MjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkbmNuX2N2X0xEX0ZPUl9UQVJHRVQiOyB0aGVuCi0gIGFjX2N2X3Byb2dfbmNuX2N2X0xEX0ZPUl9UQVJHRVQ9IiRuY25fY3ZfTERfRk9SX1RBUkdFVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRuY25fY3ZfQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VUIjsgdGhlbgorICBhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQ9IiRuY25fY3ZfQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKICAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKICAgYWNfZHVtbXk9IiRQQVRIIgogICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgogICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgotICAgICAgYWNfY3ZfcHJvZ19uY25fY3ZfTERfRk9SX1RBUkdFVD0ibGQiCisgICAgICBhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQ9ImxkIgogICAgICAgYnJlYWsKICAgICBmaQogICBkb25lCiAgIElGUz0iJGFjX3NhdmVfaWZzIgotICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19uY25fY3ZfTERfRk9SX1RBUkdFVCIgJiYgYWNfY3ZfcHJvZ19uY25fY3ZfTERfRk9SX1RBUkdFVD0ibGQiCisgIHRlc3QgLXogIiRhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQiICYmIGFjX2N2X3Byb2dfbmNuX2N2X0NPTkZJR1VSRURfTERfRk9SX1RBUkdFVD0ibGQiCiBmaQogZmkKLW5jbl9jdl9MRF9GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19uY25fY3ZfTERfRk9SX1RBUkdFVCIKLWlmIHRlc3QgLW4gIiRuY25fY3ZfTERfRk9SX1RBUkdFVCI7IHRoZW4KLSAgZWNobyAiJGFjX3QiIiRuY25fY3ZfTERfRk9SX1RBUkdFVCIgMT4mNgorbmNuX2N2X0NPTkZJR1VSRURfTERfRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfbmNuX2N2X0NPTkZJR1VSRURfTERfRk9SX1RBUkdFVCIKK2lmIHRlc3QgLW4gIiRuY25fY3ZfQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VUIjsgdGhlbgorICBlY2hvICIkYWNfdCIiJG5jbl9jdl9DT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQiIDE+JjYKIGVsc2UKICAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CiBmaQogIAotICAgIExEX0ZPUl9UQVJHRVQ9JG5jbl9jdl9MRF9GT1JfVEFSR0VUCisgICAgQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VUPSRuY25fY3ZfQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VUCiAgIGVsc2UKLSAgICBMRF9GT1JfVEFSR0VUPSIke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9bGQiCisgICAgQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VUPSIke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9bGQiCiAgIGZpCiBlbHNlCi0gIExEX0ZPUl9UQVJHRVQ9IiRhY19jdl9wcm9nX0xEX0ZPUl9UQVJHRVQiCisgIENPTkZJR1VSRURfTERfRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VUIgogZmkKIAogIGlmIHRlc3QgLW4gIiRuY25fdGFyZ2V0X3Rvb2xfcHJlZml4IjsgdGhlbgogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7bmNuX3RhcmdldF90b29sX3ByZWZpeH1ubSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fW5tOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM4MDI6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci1pZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19OTV9GT1JfVEFSR0VUJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KK2VjaG8gImNvbmZpZ3VyZTo0MTkxOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQoraWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKLSAgaWYgdGVzdCAtbiAiJE5NX0ZPUl9UQVJHRVQiOyB0aGVuCi0gIGFjX2N2X3Byb2dfTk1fRk9SX1RBUkdFVD0iJE5NX0ZPUl9UQVJHRVQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorICBpZiB0ZXN0IC1uICIkQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUIjsgdGhlbgorICBhY19jdl9wcm9nX0NPTkZJR1VSRURfTk1fRk9SX1RBUkdFVD0iJENPTkZJR1VSRURfTk1fRk9SX1RBUkdFVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCiBlbHNlCiAgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IjoiCiAgIGFjX2R1bW15PSIkUEFUSCIKICAgZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCiAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KICAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRoZW4KLSAgICAgIGFjX2N2X3Byb2dfTk1fRk9SX1RBUkdFVD0iJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fW5tIgorICAgICAgYWNfY3ZfcHJvZ19DT05GSUdVUkVEX05NX0ZPUl9UQVJHRVQ9IiR7bmNuX3RhcmdldF90b29sX3ByZWZpeH1ubSIKICAgICAgIGJyZWFrCiAgICAgZmkKICAgZG9uZQogICBJRlM9IiRhY19zYXZlX2lmcyIKIGZpCiBmaQotTk1fRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfTk1fRk9SX1RBUkdFVCIKLWlmIHRlc3QgLW4gIiROTV9GT1JfVEFSR0VUIjsgdGhlbgotICBlY2hvICIkYWNfdCIiJE5NX0ZPUl9UQVJHRVQiIDE+JjYKK0NPTkZJR1VSRURfTk1fRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUIgoraWYgdGVzdCAtbiAiJENPTkZJR1VSRURfTk1fRk9SX1RBUkdFVCI7IHRoZW4KKyAgZWNobyAiJGFjX3QiIiRDT05GSUdVUkVEX05NX0ZPUl9UQVJHRVQiIDE+JjYKIGVsc2UKICAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CiBmaQogCiBmaQotaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTk1fRk9SX1RBUkdFVCIgOyB0aGVuCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19DT05GSUdVUkVEX05NX0ZPUl9UQVJHRVQiIDsgdGhlbgogICBpZiB0ZXN0ICRidWlsZCA9ICR0YXJnZXQgOyB0aGVuCi0gICAgbmNuX2N2X05NX0ZPUl9UQVJHRVQ9JE5NX0ZPUl9UQVJHRVQKKyAgICBuY25fY3ZfQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUPSRDT05GSUdVUkVEX05NX0ZPUl9UQVJHRVQKICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm5tIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBubTsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozODM1OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfbmNuX2N2X05NX0ZPUl9UQVJHRVQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgorZWNobyAiY29uZmlndXJlOjQyMjQ6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19uY25fY3ZfQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKLSAgaWYgdGVzdCAtbiAiJG5jbl9jdl9OTV9GT1JfVEFSR0VUIjsgdGhlbgotICBhY19jdl9wcm9nX25jbl9jdl9OTV9GT1JfVEFSR0VUPSIkbmNuX2N2X05NX0ZPUl9UQVJHRVQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorICBpZiB0ZXN0IC1uICIkbmNuX2N2X0NPTkZJR1VSRURfTk1fRk9SX1RBUkdFVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19uY25fY3ZfQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUPSIkbmNuX2N2X0NPTkZJR1VSRURfTk1fRk9SX1RBUkdFVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCiBlbHNlCiAgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IjoiCiAgIGFjX2R1bW15PSIkUEFUSCIKICAgZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCiAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KICAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRoZW4KLSAgICAgIGFjX2N2X3Byb2dfbmNuX2N2X05NX0ZPUl9UQVJHRVQ9Im5tIgorICAgICAgYWNfY3ZfcHJvZ19uY25fY3ZfQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUPSJubSIKICAgICAgIGJyZWFrCiAgICAgZmkKICAgZG9uZQogICBJRlM9IiRhY19zYXZlX2lmcyIKLSAgdGVzdCAteiAiJGFjX2N2X3Byb2dfbmNuX2N2X05NX0ZPUl9UQVJHRVQiICYmIGFjX2N2X3Byb2dfbmNuX2N2X05NX0ZPUl9UQVJHRVQ9Im5tIgorICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19uY25fY3ZfQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUIiAmJiBhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX05NX0ZPUl9UQVJHRVQ9Im5tIgogZmkKIGZpCi1uY25fY3ZfTk1fRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfbmNuX2N2X05NX0ZPUl9UQVJHRVQiCi1pZiB0ZXN0IC1uICIkbmNuX2N2X05NX0ZPUl9UQVJHRVQiOyB0aGVuCi0gIGVjaG8gIiRhY190IiIkbmNuX2N2X05NX0ZPUl9UQVJHRVQiIDE+JjYKK25jbl9jdl9DT05GSUdVUkVEX05NX0ZPUl9UQVJHRVQ9IiRhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX05NX0ZPUl9UQVJHRVQiCitpZiB0ZXN0IC1uICIkbmNuX2N2X0NPTkZJR1VSRURfTk1fRk9SX1RBUkdFVCI7IHRoZW4KKyAgZWNobyAiJGFjX3QiIiRuY25fY3ZfQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUIiAxPiY2CiBlbHNlCiAgIGVjaG8gIiRhY190IiJubyIgMT4mNgogZmkKICAKLSAgICBOTV9GT1JfVEFSR0VUPSRuY25fY3ZfTk1fRk9SX1RBUkdFVAorICAgIENPTkZJR1VSRURfTk1fRk9SX1RBUkdFVD0kbmNuX2N2X0NPTkZJR1VSRURfTk1fRk9SX1RBUkdFVAogICBlbHNlCi0gICAgTk1fRk9SX1RBUkdFVD0iJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fW5tIgorICAgIENPTkZJR1VSRURfTk1fRk9SX1RBUkdFVD0iJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fW5tIgogICBmaQogZWxzZQotICBOTV9GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19OTV9GT1JfVEFSR0VUIgorICBDT05GSUdVUkVEX05NX0ZPUl9UQVJHRVQ9IiRhY19jdl9wcm9nX0NPTkZJR1VSRURfTk1fRk9SX1RBUkdFVCIKIGZpCiAKICBpZiB0ZXN0IC1uICIkbmNuX3RhcmdldF90b29sX3ByZWZpeCI7IHRoZW4KICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9cmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9cmFubGliOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM4NzQ6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci1pZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19SQU5MSUJfRk9SX1RBUkdFVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCitlY2hvICJjb25maWd1cmU6NDI2MzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NPTkZJR1VSRURfUkFOTElCX0ZPUl9UQVJHRVQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkUkFOTElCX0ZPUl9UQVJHRVQiOyB0aGVuCi0gIGFjX2N2X3Byb2dfUkFOTElCX0ZPUl9UQVJHRVQ9IiRSQU5MSUJfRk9SX1RBUkdFVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRDT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUIjsgdGhlbgorICBhY19jdl9wcm9nX0NPTkZJR1VSRURfUkFOTElCX0ZPUl9UQVJHRVQ9IiRDT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKICAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKICAgYWNfZHVtbXk9IiRQQVRIIgogICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgogICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgotICAgICAgYWNfY3ZfcHJvZ19SQU5MSUJfRk9SX1RBUkdFVD0iJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fXJhbmxpYiIKKyAgICAgIGFjX2N2X3Byb2dfQ09ORklHVVJFRF9SQU5MSUJfRk9SX1RBUkdFVD0iJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fXJhbmxpYiIKICAgICAgIGJyZWFrCiAgICAgZmkKICAgZG9uZQogICBJRlM9IiRhY19zYXZlX2lmcyIKIGZpCiBmaQotUkFOTElCX0ZPUl9UQVJHRVQ9IiRhY19jdl9wcm9nX1JBTkxJQl9GT1JfVEFSR0VUIgotaWYgdGVzdCAtbiAiJFJBTkxJQl9GT1JfVEFSR0VUIjsgdGhlbgotICBlY2hvICIkYWNfdCIiJFJBTkxJQl9GT1JfVEFSR0VUIiAxPiY2CitDT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19DT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUIgoraWYgdGVzdCAtbiAiJENPTkZJR1VSRURfUkFOTElCX0ZPUl9UQVJHRVQiOyB0aGVuCisgIGVjaG8gIiRhY190IiIkQ09ORklHVVJFRF9SQU5MSUJfRk9SX1RBUkdFVCIgMT4mNgogZWxzZQogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIGZpCiAKIGZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19SQU5MSUJfRk9SX1RBUkdFVCIgOyB0aGVuCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19DT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUIiA7IHRoZW4KICAgaWYgdGVzdCAkYnVpbGQgPSAkdGFyZ2V0IDsgdGhlbgotICAgIG5jbl9jdl9SQU5MSUJfRk9SX1RBUkdFVD0kUkFOTElCX0ZPUl9UQVJHRVQKKyAgICBuY25fY3ZfQ09ORklHVVJFRF9SQU5MSUJfRk9SX1RBUkdFVD0kQ09ORklHVVJFRF9SQU5MSUJfRk9SX1RBUkdFVAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzkwNzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLWlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX25jbl9jdl9SQU5MSUJfRk9SX1RBUkdFVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCitlY2hvICJjb25maWd1cmU6NDI5NjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKLSAgaWYgdGVzdCAtbiAiJG5jbl9jdl9SQU5MSUJfRk9SX1RBUkdFVCI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19uY25fY3ZfUkFOTElCX0ZPUl9UQVJHRVQ9IiRuY25fY3ZfUkFOTElCX0ZPUl9UQVJHRVQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorICBpZiB0ZXN0IC1uICIkbmNuX2N2X0NPTkZJR1VSRURfUkFOTElCX0ZPUl9UQVJHRVQiOyB0aGVuCisgIGFjX2N2X3Byb2dfbmNuX2N2X0NPTkZJR1VSRURfUkFOTElCX0ZPUl9UQVJHRVQ9IiRuY25fY3ZfQ09ORklHVVJFRF9SQU5MSUJfRk9SX1RBUkdFVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCiBlbHNlCiAgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IjoiCiAgIGFjX2R1bW15PSIkUEFUSCIKICAgZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCiAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KICAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRoZW4KLSAgICAgIGFjX2N2X3Byb2dfbmNuX2N2X1JBTkxJQl9GT1JfVEFSR0VUPSJyYW5saWIiCisgICAgICBhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUPSJyYW5saWIiCiAgICAgICBicmVhawogICAgIGZpCiAgIGRvbmUKICAgSUZTPSIkYWNfc2F2ZV9pZnMiCi0gIHRlc3QgLXogIiRhY19jdl9wcm9nX25jbl9jdl9SQU5MSUJfRk9SX1RBUkdFVCIgJiYgYWNfY3ZfcHJvZ19uY25fY3ZfUkFOTElCX0ZPUl9UQVJHRVQ9IjoiCisgIHRlc3QgLXogIiRhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUIiAmJiBhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUPSI6IgogZmkKIGZpCi1uY25fY3ZfUkFOTElCX0ZPUl9UQVJHRVQ9IiRhY19jdl9wcm9nX25jbl9jdl9SQU5MSUJfRk9SX1RBUkdFVCIKLWlmIHRlc3QgLW4gIiRuY25fY3ZfUkFOTElCX0ZPUl9UQVJHRVQiOyB0aGVuCi0gIGVjaG8gIiRhY190IiIkbmNuX2N2X1JBTkxJQl9GT1JfVEFSR0VUIiAxPiY2CituY25fY3ZfQ09ORklHVVJFRF9SQU5MSUJfRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfbmNuX2N2X0NPTkZJR1VSRURfUkFOTElCX0ZPUl9UQVJHRVQiCitpZiB0ZXN0IC1uICIkbmNuX2N2X0NPTkZJR1VSRURfUkFOTElCX0ZPUl9UQVJHRVQiOyB0aGVuCisgIGVjaG8gIiRhY190IiIkbmNuX2N2X0NPTkZJR1VSRURfUkFOTElCX0ZPUl9UQVJHRVQiIDE+JjYKIGVsc2UKICAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CiBmaQogIAotICAgIFJBTkxJQl9GT1JfVEFSR0VUPSRuY25fY3ZfUkFOTElCX0ZPUl9UQVJHRVQKKyAgICBDT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUPSRuY25fY3ZfQ09ORklHVVJFRF9SQU5MSUJfRk9SX1RBUkdFVAogICBlbHNlCi0gICAgUkFOTElCX0ZPUl9UQVJHRVQ9IjoiCisgICAgQ09ORklHVVJFRF9SQU5MSUJfRk9SX1RBUkdFVD0iOiIKICAgZmkKIGVsc2UKLSAgUkFOTElCX0ZPUl9UQVJHRVQ9IiRhY19jdl9wcm9nX1JBTkxJQl9GT1JfVEFSR0VUIgorICBDT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19DT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUIgogZmkKIAogIGlmIHRlc3QgLW4gIiRuY25fdGFyZ2V0X3Rvb2xfcHJlZml4IjsgdGhlbgogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7bmNuX3RhcmdldF90b29sX3ByZWZpeH13aW5kcmVzIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9d2luZHJlczsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozOTQ2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfV0lORFJFU19GT1JfVEFSR0VUJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KK2VjaG8gImNvbmZpZ3VyZTo0MzM1OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQoraWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkV0lORFJFU19GT1JfVEFSR0VUIjsgdGhlbgotICBhY19jdl9wcm9nX1dJTkRSRVNfRk9SX1RBUkdFVD0iJFdJTkRSRVNfRk9SX1RBUkdFVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRDT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVD0iJENPTkZJR1VSRURfV0lORFJFU19GT1JfVEFSR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKICAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKICAgYWNfZHVtbXk9IiRQQVRIIgogICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgogICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgotICAgICAgYWNfY3ZfcHJvZ19XSU5EUkVTX0ZPUl9UQVJHRVQ9IiR7bmNuX3RhcmdldF90b29sX3ByZWZpeH13aW5kcmVzIgorICAgICAgYWNfY3ZfcHJvZ19DT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVD0iJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fXdpbmRyZXMiCiAgICAgICBicmVhawogICAgIGZpCiAgIGRvbmUKICAgSUZTPSIkYWNfc2F2ZV9pZnMiCiBmaQogZmkKLVdJTkRSRVNfRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfV0lORFJFU19GT1JfVEFSR0VUIgotaWYgdGVzdCAtbiAiJFdJTkRSRVNfRk9SX1RBUkdFVCI7IHRoZW4KLSAgZWNobyAiJGFjX3QiIiRXSU5EUkVTX0ZPUl9UQVJHRVQiIDE+JjYKK0NPTkZJR1VSRURfV0lORFJFU19GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19DT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVCIKK2lmIHRlc3QgLW4gIiRDT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVCI7IHRoZW4KKyAgZWNobyAiJGFjX3QiIiRDT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVCIgMT4mNgogZWxzZQogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIGZpCiAKIGZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19XSU5EUkVTX0ZPUl9UQVJHRVQiIDsgdGhlbgoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVQiIDsgdGhlbgogICBpZiB0ZXN0ICRidWlsZCA9ICR0YXJnZXQgOyB0aGVuCi0gICAgbmNuX2N2X1dJTkRSRVNfRk9SX1RBUkdFVD0kV0lORFJFU19GT1JfVEFSR0VUCisgICAgbmNuX2N2X0NPTkZJR1VSRURfV0lORFJFU19GT1JfVEFSR0VUPSRDT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAid2luZHJlcyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgd2luZHJlczsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozOTc5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfbmNuX2N2X1dJTkRSRVNfRk9SX1RBUkdFVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCitlY2hvICJjb25maWd1cmU6NDM2ODogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCi0gIGlmIHRlc3QgLW4gIiRuY25fY3ZfV0lORFJFU19GT1JfVEFSR0VUIjsgdGhlbgotICBhY19jdl9wcm9nX25jbl9jdl9XSU5EUkVTX0ZPUl9UQVJHRVQ9IiRuY25fY3ZfV0lORFJFU19GT1JfVEFSR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKyAgaWYgdGVzdCAtbiAiJG5jbl9jdl9DT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19uY25fY3ZfQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVQ9IiRuY25fY3ZfQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgogZWxzZQogICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSI6IgogICBhY19kdW1teT0iJFBBVEgiCiAgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwogICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCiAgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyRhY193b3JkOyB0aGVuCi0gICAgICBhY19jdl9wcm9nX25jbl9jdl9XSU5EUkVTX0ZPUl9UQVJHRVQ9IndpbmRyZXMiCisgICAgICBhY19jdl9wcm9nX25jbl9jdl9DT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVD0id2luZHJlcyIKICAgICAgIGJyZWFrCiAgICAgZmkKICAgZG9uZQogICBJRlM9IiRhY19zYXZlX2lmcyIKLSAgdGVzdCAteiAiJGFjX2N2X3Byb2dfbmNuX2N2X1dJTkRSRVNfRk9SX1RBUkdFVCIgJiYgYWNfY3ZfcHJvZ19uY25fY3ZfV0lORFJFU19GT1JfVEFSR0VUPSJ3aW5kcmVzIgorICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19uY25fY3ZfQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVQiICYmIGFjX2N2X3Byb2dfbmNuX2N2X0NPTkZJR1VSRURfV0lORFJFU19GT1JfVEFSR0VUPSJ3aW5kcmVzIgogZmkKIGZpCi1uY25fY3ZfV0lORFJFU19GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19uY25fY3ZfV0lORFJFU19GT1JfVEFSR0VUIgotaWYgdGVzdCAtbiAiJG5jbl9jdl9XSU5EUkVTX0ZPUl9UQVJHRVQiOyB0aGVuCi0gIGVjaG8gIiRhY190IiIkbmNuX2N2X1dJTkRSRVNfRk9SX1RBUkdFVCIgMT4mNgorbmNuX2N2X0NPTkZJR1VSRURfV0lORFJFU19GT1JfVEFSR0VUPSIkYWNfY3ZfcHJvZ19uY25fY3ZfQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVQiCitpZiB0ZXN0IC1uICIkbmNuX2N2X0NPTkZJR1VSRURfV0lORFJFU19GT1JfVEFSR0VUIjsgdGhlbgorICBlY2hvICIkYWNfdCIiJG5jbl9jdl9DT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVCIgMT4mNgogZWxzZQogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIGZpCiAgCi0gICAgV0lORFJFU19GT1JfVEFSR0VUPSRuY25fY3ZfV0lORFJFU19GT1JfVEFSR0VUCisgICAgQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVQ9JG5jbl9jdl9DT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVAogICBlbHNlCi0gICAgV0lORFJFU19GT1JfVEFSR0VUPSIke25jbl90YXJnZXRfdG9vbF9wcmVmaXh9d2luZHJlcyIKKyAgICBDT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVD0iJHtuY25fdGFyZ2V0X3Rvb2xfcHJlZml4fXdpbmRyZXMiCiAgIGZpCiBlbHNlCi0gIFdJTkRSRVNfRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfV0lORFJFU19GT1JfVEFSR0VUIgorICBDT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVD0iJGFjX2N2X3Byb2dfQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVQiCiBmaQogCiAKQEAgLTQwMzUsMTQgKzQ0MjQsMzEgQEAKICAgTk1fRk9SX1RBUkdFVD0iXCQoVVNVQUxfTk1fRk9SX1RBUkdFVCkiCiAgIFJBTkxJQl9GT1JfVEFSR0VUPSJcJChVU1VBTF9SQU5MSUJfRk9SX1RBUkdFVCkiCiAgIFdJTkRSRVNfRk9SX1RBUkdFVD0iXCQoVVNVQUxfV0lORFJFU19GT1JfVEFSR0VUKSIKK2Vsc2UKKyAgIyBKdXN0IHVzZSB0aGUgb25lcyB3ZSBmb3VuZC4KKyAgQVJfRk9SX1RBUkdFVD0iXCQoQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUKSIKKyAgQVNfRk9SX1RBUkdFVD0iXCQoQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUKSIKKyAgRExMVE9PTF9GT1JfVEFSR0VUPSJcJChDT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVCkiCisgIExEX0ZPUl9UQVJHRVQ9IlwkKENPTkZJR1VSRURfTERfRk9SX1RBUkdFVCkiCisgIE5NX0ZPUl9UQVJHRVQ9IlwkKENPTkZJR1VSRURfTk1fRk9SX1RBUkdFVCkiCisgIFJBTkxJQl9GT1JfVEFSR0VUPSJcJChDT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUKSIKKyAgV0lORFJFU19GT1JfVEFSR0VUPSJcJChDT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVCkiICAKIGZpCisKKworCisKKworCisKKwogIyBDZXJ0YWluIHRvb2xzIG1heSBuZWVkIGV4dHJhIGZsYWdzLgogQVJfRk9SX1RBUkdFVD0ke0FSX0ZPUl9UQVJHRVR9JHtleHRyYV9hcmZsYWdzX2Zvcl90YXJnZXR9CiBSQU5MSUJfRk9SX1RBUkdFVD0ke1JBTkxJQl9GT1JfVEFSR0VUfSR7ZXh0cmFfcmFubGliZmxhZ3NfZm9yX3RhcmdldH0KIE5NX0ZPUl9UQVJHRVQ9JHtOTV9GT1JfVEFSR0VUfSR7ZXh0cmFfbm1mbGFnc19mb3JfdGFyZ2V0fQogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1ha2VmaWxlcyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDA0NjogY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXMiID4mNQorZWNobyAiY29uZmlndXJlOjQ0NTI6IGNoZWNraW5nIHdoZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzIiA+JjUKICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgb3IgLS1kaXNhYmxlLW1haW50YWluZXItbW9kZSB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9tYWludGFpbmVyX21vZGUrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZW5hYmxldmFsPSIkZW5hYmxlX21haW50YWluZXJfbW9kZSIKQEAgLTQwNjMsNiArNDQ2OSw0NCBAQAogZmkJCiBNQUlOVD0kTUFJTlRBSU5FUl9NT0RFX1RSVUUKIAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgR0NDIGJvb3RzdHJhcCBzdXBwb3J0CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIFN0YWdlIHNwZWNpZmljIGNmbGFncyBmb3IgYnVpbGQuCitzdGFnZTFfY2ZsYWdzPSItZyIKK2Nhc2UgJGJ1aWxkIGluCisgIHZheC0qLSopCisgICAgY2FzZSAke0dDQ30gaW4KKyAgICAgIHllcykgc3RhZ2UxX2NmbGFncz0iLWcgLVdhLC1KIiA7OworICAgICAgKikgc3RhZ2UxX2NmbGFncz0iLWcgLUoiIDs7CisgICAgZXNhYyA7OworICBwb3dlcnBjLSotZGFyd2luKikKKyAgICAjIFRoZSBzcGlmZnkgY3BwLXByZWNvbXAgY2hva2VzIG9uIHNvbWUgbGVnaXRpbWF0ZSBjb25zdHJ1Y3RzIGluIEdDQworICAgICMgc291cmNlczsgdXNlIC1uby1jcHAtcHJlY29tcCB0byBnZXQgdG8gR05VIGNwcC4KKyAgICAjIEFwcGxlJ3MgR0NDIGhhcyBidWdzIGluIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXIgaGFuZGxpbmcsIHNvIGRpc2FibGUKKyAgICAjIHRoYXQgdG9vLgorICAgIHN0YWdlMV9jZmxhZ3M9Ii1nIC1uby1jcHAtcHJlY29tcCAtREhBVkVfREVTSUdOQVRFRF9JTklUSUFMSVpFUlM9MCIKKyAgICA7OworZXNhYworCisKKyMgRW5hYmxlIC1XZXJyb3IgaW4gYm9vdHN0cmFwIHN0YWdlMiBhbmQgbGF0ZXIuCisjIENoYW5nZSB0aGUgZGVmYXVsdCB0byAibm8iIG9uIHJlbGVhc2UgYnJhbmNoZXMuCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtd2Vycm9yIG9yIC0tZGlzYWJsZS13ZXJyb3Igd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfd2Vycm9yK3NldH0iID0gc2V0OyB0aGVuCisgIGVuYWJsZXZhbD0iJGVuYWJsZV93ZXJyb3IiCisgIDoKK2Vsc2UKKyAgZW5hYmxlX3dlcnJvcj15ZXMKK2ZpCisKK2Nhc2UgJHtlbmFibGVfd2Vycm9yfSBpbgorICB5ZXMpIHN0YWdlMl93ZXJyb3JfZmxhZz0iLS1lbmFibGUtd2Vycm9yLWFsd2F5cyIgOzsKKyAgKikgc3RhZ2UyX3dlcnJvcl9mbGFnPSIiIDs7Citlc2FjCisKKwogdHJhcCAnJyAxIDIgMTUKIGNhdCA+IGNvbmZjYWNoZSA8PFxFT0YKICMgVGhpcyBmaWxlIGlzIGEgc2hlbGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQpAQCAtNDIzMCw2ICs0Njc0LDEyIEBACiBzJUBidWlsZF9zdWJkaXJAJSRidWlsZF9zdWJkaXIlZwogcyVAaG9zdF9zdWJkaXJAJSRob3N0X3N1YmRpciVnCiBzJUB0YXJnZXRfc3ViZGlyQCUkdGFyZ2V0X3N1YmRpciVnCitzJUBDQ0AlJENDJWcKK3MlQEdOQVRCSU5EQCUkR05BVEJJTkQlZworcyVAc3RhZ2UxX2xhbmd1YWdlc0AlJHN0YWdlMV9sYW5ndWFnZXMlZworcyVAREVGQVVMVF9ZQUNDQCUkREVGQVVMVF9ZQUNDJWcKK3MlQERFRkFVTFRfTTRAJSRERUZBVUxUX000JWcKK3MlQERFRkFVTFRfTEVYQCUkREVGQVVMVF9MRVglZwogL0BtYXliZV9kZXBlbmRlbmNpZXNAL3IgJG1heWJlX2RlcGVuZGVuY2llcwogcyVAbWF5YmVfZGVwZW5kZW5jaWVzQCUlZwogL0BzZXJpYWxpemF0aW9uX2RlcGVuZGVuY2llc0AvciAkc2VyaWFsaXphdGlvbl9kZXBlbmRlbmNpZXMKQEAgLTQyNDYsNyArNDY5Niw2IEBACiBzJUBSUEFUSF9FTlZWQVJAJSRSUEFUSF9FTlZWQVIlZwogcyVAQlVJTERfUFJFRklYQCUkQlVJTERfUFJFRklYJWcKIHMlQEJVSUxEX1BSRUZJWF8xQCUkQlVJTERfUFJFRklYXzElZwotcyVAY29uZmlnbGlua3NAJSRjb25maWdsaW5rcyVnCiBzJUBnY2NfdmVyc2lvbl90cmlnZ2VyQCUkZ2NjX3ZlcnNpb25fdHJpZ2dlciVnCiBzJUBnY2NfdmVyc2lvbkAlJGdjY192ZXJzaW9uJWcKIHMlQHRvb2xkaXJAJSR0b29sZGlyJWcKQEAgLTQyODUsMjYgKzQ3MzQsMjIgQEAKIHMlQG5jbl9jdl9PQkpDT1BZQCUkbmNuX2N2X09CSkNPUFklZwogcyVAT0JKRFVNUEAlJE9CSkRVTVAlZwogcyVAbmNuX2N2X09CSkRVTVBAJSRuY25fY3ZfT0JKRFVNUCVnCi1zJUBDQ0AlJENDJWcKIHMlQENYWEAlJENYWCVnCiBzJUBDRkxBR1NfRk9SX0JVSUxEQCUkQ0ZMQUdTX0ZPUl9CVUlMRCVnCi1zJUBERUZBVUxUX1lBQ0NAJSRERUZBVUxUX1lBQ0MlZwotcyVAREVGQVVMVF9MRVhAJSRERUZBVUxUX0xFWCVnCi1zJUBERUZBVUxUX000QCUkREVGQVVMVF9NNCVnCi1zJUBBUl9GT1JfVEFSR0VUQCUkQVJfRk9SX1RBUkdFVCVnCi1zJUBuY25fY3ZfQVJfRk9SX1RBUkdFVEAlJG5jbl9jdl9BUl9GT1JfVEFSR0VUJWcKLXMlQEFTX0ZPUl9UQVJHRVRAJSRBU19GT1JfVEFSR0VUJWcKLXMlQG5jbl9jdl9BU19GT1JfVEFSR0VUQCUkbmNuX2N2X0FTX0ZPUl9UQVJHRVQlZwotcyVARExMVE9PTF9GT1JfVEFSR0VUQCUkRExMVE9PTF9GT1JfVEFSR0VUJWcKLXMlQG5jbl9jdl9ETExUT09MX0ZPUl9UQVJHRVRAJSRuY25fY3ZfRExMVE9PTF9GT1JfVEFSR0VUJWcKLXMlQExEX0ZPUl9UQVJHRVRAJSRMRF9GT1JfVEFSR0VUJWcKLXMlQG5jbl9jdl9MRF9GT1JfVEFSR0VUQCUkbmNuX2N2X0xEX0ZPUl9UQVJHRVQlZwotcyVATk1fRk9SX1RBUkdFVEAlJE5NX0ZPUl9UQVJHRVQlZwotcyVAbmNuX2N2X05NX0ZPUl9UQVJHRVRAJSRuY25fY3ZfTk1fRk9SX1RBUkdFVCVnCi1zJUBSQU5MSUJfRk9SX1RBUkdFVEAlJFJBTkxJQl9GT1JfVEFSR0VUJWcKLXMlQG5jbl9jdl9SQU5MSUJfRk9SX1RBUkdFVEAlJG5jbl9jdl9SQU5MSUJfRk9SX1RBUkdFVCVnCi1zJUBXSU5EUkVTX0ZPUl9UQVJHRVRAJSRXSU5EUkVTX0ZPUl9UQVJHRVQlZwotcyVAbmNuX2N2X1dJTkRSRVNfRk9SX1RBUkdFVEAlJG5jbl9jdl9XSU5EUkVTX0ZPUl9UQVJHRVQlZworcyVAQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUQCUkQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUJWcKK3MlQG5jbl9jdl9DT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVRAJSRuY25fY3ZfQ09ORklHVVJFRF9BUl9GT1JfVEFSR0VUJWcKK3MlQENPTkZJR1VSRURfQVNfRk9SX1RBUkdFVEAlJENPTkZJR1VSRURfQVNfRk9SX1RBUkdFVCVnCitzJUBuY25fY3ZfQ09ORklHVVJFRF9BU19GT1JfVEFSR0VUQCUkbmNuX2N2X0NPTkZJR1VSRURfQVNfRk9SX1RBUkdFVCVnCitzJUBDT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVEAlJENPTkZJR1VSRURfRExMVE9PTF9GT1JfVEFSR0VUJWcKK3MlQG5jbl9jdl9DT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVEAlJG5jbl9jdl9DT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVCVnCitzJUBDT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVRAJSRDT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQlZworcyVAbmNuX2N2X0NPTkZJR1VSRURfTERfRk9SX1RBUkdFVEAlJG5jbl9jdl9DT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQlZworcyVAQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUQCUkQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUJWcKK3MlQG5jbl9jdl9DT05GSUdVUkVEX05NX0ZPUl9UQVJHRVRAJSRuY25fY3ZfQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VUJWcKK3MlQENPTkZJR1VSRURfUkFOTElCX0ZPUl9UQVJHRVRAJSRDT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUJWcKK3MlQG5jbl9jdl9DT05GSUdVUkVEX1JBTkxJQl9GT1JfVEFSR0VUQCUkbmNuX2N2X0NPTkZJR1VSRURfUkFOTElCX0ZPUl9UQVJHRVQlZworcyVAQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVRAJSRDT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVCVnCitzJUBuY25fY3ZfQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVRAJSRuY25fY3ZfQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVQlZwogcyVAR0NDX0ZPUl9UQVJHRVRAJSRHQ0NfRk9SX1RBUkdFVCVnCiBzJUBGTEFHU19GT1JfVEFSR0VUQCUkRkxBR1NfRk9SX1RBUkdFVCVnCiBzJUBDQ19GT1JfVEFSR0VUQCUkQ0NfRk9SX1RBUkdFVCVnCkBAIC00MzEzLDkgKzQ3NTgsMTggQEAKIHMlQFJBV19DWFhfRk9SX1RBUkdFVEAlJFJBV19DWFhfRk9SX1RBUkdFVCVnCiBzJUBDWFhfRk9SX1RBUkdFVF9GT1JfUkVDVVJTSVZFX01BS0VAJSRDWFhfRk9SX1RBUkdFVF9GT1JfUkVDVVJTSVZFX01BS0UlZwogcyVAUkFXX0NYWF9GT1JfVEFSR0VUX0ZPUl9SRUNVUlNJVkVfTUFLRUAlJFJBV19DWFhfRk9SX1RBUkdFVF9GT1JfUkVDVVJTSVZFX01BS0UlZworcyVAQVJfRk9SX1RBUkdFVEAlJEFSX0ZPUl9UQVJHRVQlZworcyVAQVNfRk9SX1RBUkdFVEAlJEFTX0ZPUl9UQVJHRVQlZworcyVARExMVE9PTF9GT1JfVEFSR0VUQCUkRExMVE9PTF9GT1JfVEFSR0VUJWcKK3MlQExEX0ZPUl9UQVJHRVRAJSRMRF9GT1JfVEFSR0VUJWcKK3MlQE5NX0ZPUl9UQVJHRVRAJSROTV9GT1JfVEFSR0VUJWcKK3MlQFJBTkxJQl9GT1JfVEFSR0VUQCUkUkFOTElCX0ZPUl9UQVJHRVQlZworcyVAV0lORFJFU19GT1JfVEFSR0VUQCUkV0lORFJFU19GT1JfVEFSR0VUJWcKIHMlQE1BSU5UQUlORVJfTU9ERV9UUlVFQCUkTUFJTlRBSU5FUl9NT0RFX1RSVUUlZwogcyVATUFJTlRBSU5FUl9NT0RFX0ZBTFNFQCUkTUFJTlRBSU5FUl9NT0RFX0ZBTFNFJWcKIHMlQE1BSU5UQCUkTUFJTlQlZworcyVAc3RhZ2UxX2NmbGFnc0AlJHN0YWdlMV9jZmxhZ3MlZworcyVAc3RhZ2UyX3dlcnJvcl9mbGFnQCUkc3RhZ2UyX3dlcnJvcl9mbGFnJWcKIAogQ0VPRgogRU9GCmRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KaW5kZXggYmZiYjZhMS4uN2M4Y2FiYyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmluCisrKyBiL2NvbmZpZ3VyZS5pbgpAQCAtNjEyLDcgKzYxMiw3IEBACiAgICAgOzsKICAgcG93ZXJwYy0qLWFpeCopCiAgICAgIyBjb3BpZWQgZnJvbSByczYwMDAtKi0qIGVudHJ5Ci0gICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJzIGdwcm9mIHRhcmdldC1saWJhZGEgdGFyZ2V0LWxpYmdsb3NzICR7bGliZ2NqfSIKKyAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgZ3Byb2YgdGFyZ2V0LWxpYmdsb3NzICR7bGliZ2NqfSIKICAgICA7OwogICBwb3dlcnBjKi0qLXdpbm50KiB8IHBvd2VycGMqLSotcGUqIHwgcHBjKi0qLXBlKQogICAgIHRhcmdldF9jb25maWdkaXJzPSIkdGFyZ2V0X2NvbmZpZ2RpcnMgdGFyZ2V0LXdpbnN1cCIKQEAgLTYzNCw3ICs2MzQsNyBAQAogICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbmV3bGliIGdwcm9mICR7bGliZ2NqfSIKICAgICA7OwogICByczYwMDAtKi1haXgqKQotICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyBncHJvZiB0YXJnZXQtbGliYWRhIHRhcmdldC1saWJnbG9zcyAke2xpYmdjan0iCisgICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJzIGdwcm9mIHRhcmdldC1saWJnbG9zcyAke2xpYmdjan0iCiAgICAgOzsKICAgcnM2MDAwLSotKikKICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgZ3Byb2YgJHtsaWJnY2p9IgpAQCAtNjYyLDYgKzY2Miw5IEBACiAgIG1pcHN0eDM5LSotKikKICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgZ3Byb2YgJHtsaWJnY2p9IiAgICMgc2FtZSBhcyBnZW5lcmljIG1pcHMKICAgICA7OworICBtaXBzNjQqLSotbGludXgqKQorICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbmV3bGliICR7bGliZ2NqfSIKKyAgICA7OwogICBtaXBzKi0qLWxpbnV4KikKICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LW5ld2xpYiB0YXJnZXQtbGliZ2xvc3MiCiAgICAgOzsKQEAgLTc0NCw5NyArNzQ3LDQ2MSBAQAogICAqdGFyZ2V0LW5ld2xpYiopIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbGliZ2xvc3MiIDs7CiBlc2FjCiAKKyMgV29yayBpbiBkaXN0cmlidXRpb25zIHRoYXQgY29udGFpbiBubyBjb21waWxlciB0b29scywgbGlrZSBBdXRvY29uZi4KK3RlbnRhdGl2ZV9jYz0iIgoraG9zdF9tYWtlZmlsZV9mcmFnPS9kZXYvbnVsbAoraWYgdGVzdCAtZCAke3NyY2Rpcn0vY29uZmlnIDsgdGhlbgorY2FzZSAiJHtob3N0fSIgaW4KKyAgbTY4ay1ocC1ocHV4KikKKyAgICAjIEF2b2lkICJ0b28gbXVjaCBkZWZpbmluZyIgZXJyb3JzIGZyb20gSFBVWCBjb21waWxlci4KKyAgICB0ZW50YXRpdmVfY2M9ImNjIC1XcCwtSDI1NjAwMCIKKyAgICAjIElmICJhciIgaW4gJFBBVEggaXMgR05VIGFyLCB0aGUgc3ltYm9sIHRhYmxlIG1heSBuZWVkIHJlYnVpbGRpbmcuCisgICAgIyBJZiBpdCdzIEhQL1VYIGFyLCB0aGlzIHNob3VsZCBiZSBoYXJtbGVzcy4KKyAgICBSQU5MSUI9ImFyIHRzIgorICAgIDs7CisgIG02OGstYXBvbGxvLXN5c3YqKQorICAgIHRlbnRhdGl2ZV9jYz0iY2MgLUEgYW5zaSAtQSBydW50eXBlLGFueSAtQSBzeXN0eXBlLGFueSAtVV9fU1REQ19fIC1EVVNHIgorICAgIDs7CisgIG02OGstYXBvbGxvLWJzZCopCisgICAgI05vbmUgb2YgdGhlIEFwb2xsbyBjb21waWxlcnMgY2FuIGNvbXBpbGUgZ2FzIG9yIGJpbnV0aWxzLiAgVGhlIHByZXByb2Nlc3NvcgorICAgICMgY2hva2VzIG9uIGJmZCwgdGhlIGNvbXBpbGVyIHdvbid0IGxldCB5b3UgYXNzaWduIGludGVnZXJzIHRvIGVudW1zLCBhbmQKKyAgICAjIG90aGVyIHByb2JsZW1zLiAgRGVmaW5pbmcgQ0MgdG8gZ2NjIGlzIGEgcXVlc3Rpb25hYmxlIHdheSB0byBzYXkgImRvbid0IHVzZQorICAgICMgdGhlIGFwb2xsbyBjb21waWxlciIgKHRoZSBwcmVmZXJyZWQgdmVyc2lvbiBvZiBHQ0MgY291bGQgYmUgY2FsbGVkIGNjLAorICAgICMgb3Igd2hhdGV2ZXIpLCBidXQgSSdtIG5vdCBzdXJlIGxlYXZpbmcgQ0MgYXMgY2MgaXMgYW55IGJldHRlci4uLgorICAgICNDQz1jYyAtQSBhbnNpIC1BIHJ1bnR5cGUsYW55IC1BIHN5c3R5cGUsYW55IC1VX19TVERDX18gLUROT19TVERBUkcKKyAgICAjIFVzZWQgdG8gaGF2ZSBCSVNPTj15YWNjLgorICAgIHRlbnRhdGl2ZV9jYz1nY2MKKyAgICA7OworICBtODhrLWRnLWRndXgqKQorICAgIHRlbnRhdGl2ZV9jYz0iZ2NjIC1XYWxsIC1hbnNpIC1EX191c2luZ19ER1VYIgorICAgIDs7CisgIG04OGstaGFycmlzLWN4dXgqKQorICAgICMgVW5kZXIgQ1gvVVgsIHdlIHdhbnQgdG8gdGVsbCB0aGUgY29tcGlsZXIgdG8gdXNlIEFOU0kgbW9kZS4KKyAgICB0ZW50YXRpdmVfY2M9ImNjIC1YYSIKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1jeHV4IgorICAgIDs7CisgIG04OGstbW90b3JvbGEtc3lzdiopCisgICAgOzsKKyAgbWlwcyotZGVjLXVsdHJpeCopCisgICAgdGVudGF0aXZlX2NjPSJjYyAtV2YsLVhOZzEwMDAiCisgICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtZGVjc3RhdGlvbiIKKyAgICA7OworICBtaXBzKi1uZWMtc3lzdjQqKQorICAgICMgVGhlIEMgY29tcGlsZXIgb24gTkVDIE1JUFMgU1ZSNCBuZWVkcyBiaWdnZXIgdGFibGVzLgorICAgIHRlbnRhdGl2ZV9jYz0iY2MgLVpYTmQ9NTAwMCAtWlhOZz0xMDAwIgorICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLW5lY3Y0IgorICAgIDs7CisgIG1pcHMqLXNnaS1pcml4NCopCisgICAgIyBUZWxsIGNvbXBpbGVyIHRvIHVzZSBLJlIgQy4gIFdlIGNhbid0IGNvbXBpbGUgdW5kZXIgdGhlIFNHSSBBbnNpCisgICAgIyBlbnZpcm9ubWVudC4gIEFsc28gYnVtcCBzd2l0Y2ggdGFibGUgc2l6ZSBzbyB0aGF0IGNwLXBhcnNlIHdpbGwKKyAgICAjIGNvbXBpbGUuICBCdW1wIHN0cmluZyBsZW5ndGggbGltaXQgc28gbGlua2VyIGJ1aWxkcy4KKyAgICB0ZW50YXRpdmVfY2M9ImNjIC1jY2tyIC1XZiwtWE5nMTUwMCAtV2YsLVhOazEwMDAgLVdmLC1YTmgyMDAwIC1XZiwtWE5sODE5MiIKKyAgICA7OworICBtaXBzKi0qLXN5c3Y0KikKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zeXN2NCIKKyAgICA7OworICBtaXBzKi0qLXN5c3YqKQorICAgICMgVGhpcyBpcyBmb3IgYSBNSVBTIHJ1bm5pbmcgUklTQy9vcyA0LjUyQy4KKworICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIEdEQiwgYnV0IG5lZWRzIHRvIGJlIGluIHRoZSB0b3AtbGV2ZWwgbWFrZSBiZWNhdXNlCisgICAgIyBpZiBhIGxpYnJhcnkgaXMgY29tcGlsZWQgd2l0aCB0aGUgYnNkIGhlYWRlcnMgYW5kIGdldHMgbGlua2VkIHdpdGggdGhlCisgICAgIyBzeXN2IHN5c3RlbSBsaWJyYXJpZXMgYWxsIGhlbGwgY2FuIGJyZWFrIGxvb3NlIChlLmcuIGEgam1wX2J1ZiBtaWdodCBiZQorICAgICMgYSBkaWZmZXJlbnQgc2l6ZSkuCisgICAgIyBwdHJhY2UoMikgYXBwYXJlbnRseSBoYXMgcHJvYmxlbXMgaW4gdGhlIEJTRCBlbnZpcm9ubWVudC4gIE5vIHdvcmthcm91bmQgaXMKKyAgICAjIGtub3duIGV4Y2VwdCB0byBzZWxlY3QgdGhlIHN5c3YgZW52aXJvbm1lbnQuICBDb3VsZCB3ZSB1c2UgL3Byb2MgaW5zdGVhZD8KKyAgICAjIFRoZXNlICJzeXN2IGVudmlyb25tZW50cyIgYW5kICJic2QgZW52aXJvbm1lbnRzIiBvZnRlbiBlbmQgdXAgYmVpbmcgYSBwYWluLgorICAgICMKKyAgICAjIFRoaXMgaXMgbm90IHBhcnQgb2YgQ0ZMQUdTIGJlY2F1c2UgcGVyaGFwcyBub3QgYWxsIEMgY29tcGlsZXJzIGhhdmUgdGhpcworICAgICMgb3B0aW9uLgorICAgIHRlbnRhdGl2ZV9jYz0iY2MgLXN5c3R5cGUgc3lzdiIKKyAgICA7OworICBpMzcwLWlibS1vcGVuZWQqKQorICAgIHRlbnRhdGl2ZV9jYz0iYzg5IgorICAgIDs7CisgIGlbWzM0NTY3ODldXTg2LSotc3lzdjUqKQorICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLXN5c3Y1IgorICAgIDs7CisgIGlbWzM0NTY3ODldXTg2LSotZGd1eCopCisgICAgdGVudGF0aXZlX2NjPSJnY2MgLVdhbGwgLWFuc2kgLURfX3VzaW5nX0RHVVgiCisgICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtZGd1eDM4NiIKKyAgICA7OworICBpW1szNDU2Nzg5XV04Ni1uY3Itc3lzdjQuMyopCisgICAgIyBUaGUgTWV0YVdhcmUgY29tcGlsZXIgd2lsbCBnZW5lcmF0ZSBhIGNvcHlyaWdodCBtZXNzYWdlIHVubGVzcyB5b3UKKyAgICAjIHR1cm4gaXQgb2ZmIGJ5IGFkZGluZyB0aGUgLUhub2NvcHlyIGZsYWcuCisgICAgdGVudGF0aXZlX2NjPSJjYyAtSG5vY29weXIiCisgICAgOzsKKyAgaVtbMzQ1Njc4OV1dODYtbmNyLXN5c3Y0KikKKyAgICAjIGZvciBhbiBOQ1IgMzAwMCAoaTQ4Ni9TVlI0KSBzeXN0ZW0uCisgICAgIyBUaGUgTkNSIDMwMDAgc2hpcHMgd2l0aCBhIE1ldGFXYXJlIGNvbXBpbGVyIGluc3RhbGxlZCBhcyAvYmluL2NjLgorICAgICMgVGhpcyBjb21waWxlciBub3Qgb25seSBlbWl0cyBvYm5veGlvdXMgY29weXJpZ2h0IG1lc3NhZ2VzIGV2ZXJ5IHRpbWUKKyAgICAjIHlvdSBydW4gaXQsIGJ1dCBpdCBjaG9rZXMgYW5kIGRpZXMgb24gYSB3aG9sZSBidW5jaCBvZiBHTlUgc291cmNlCisgICAgIyBmaWxlcy4gIERlZmF1bHQgdG8gdXNpbmcgdGhlIEFUJlQgY29tcGlsZXIgaW5zdGFsbGVkIGluIC91c3IvY2NzL0FUVC9jYy4KKyAgICB0ZW50YXRpdmVfY2M9Ii91c3IvY2NzL0FUVC9jYyIKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1uY3IzMDAwIgorICAgIDs7CisgIGlbWzM0NTY3ODldXTg2LSotc2NvMy4ydjUqKQorICAgIDs7CisgIGlbWzM0NTY3ODldXTg2LSotc2NvKikKKyAgICAjIFRoZSBuYXRpdmUgQyBjb21waWxlciBib3RjaGVzIHNvbWUgc2ltcGxlIHVzZXMgb2YgY29uc3QuICBVbmZvcnR1bmF0ZWx5LAorICAgICMgaXQgZG9lc24ndCBkZWZpbmVkIGFueXRoaW5nIGxpa2UgIl9fc2NvX18iIGZvciB1cyB0byB0ZXN0IGZvciBpbiBhbnNpZGVjbC5oLgorICAgIHRlbnRhdGl2ZV9jYz0iY2MgLURjb25zdD0iCisgICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtc2NvIgorICAgIDs7CisgIGlbWzM0NTY3ODldXTg2LSotdWRrKikKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zeXN2NSIKKyAgICA7OworICBpW1szNDU2Nzg5XV04Ni0qLXNvbGFyaXMyKikKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zeXN2NCIKKyAgICA7OworICBpW1szNDU2Nzg5XV04Ni0qLW1zZG9zZGpncHAqKQorICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLWRqZ3BwIgorICAgIDs7CisgICotY3lnd2luKikKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1jeWd3aW4iCisgICAgOzsKKyAgKi1taW5ndzMyKikKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1taW5ndzMyIgorICAgIDs7CisgICotaW50ZXJpeCopCisgICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtaW50ZXJpeCIKKyAgICA7OworICB2YXgtKi11bHRyaXgyKikKKyAgICAjIFRoZSBvbGQgQlNEIHBjYyBpc24ndCB1cCB0byBjb21waWxpbmcgcGFydHMgb2YgZ2RiIHNvIHVzZSBnY2MKKyAgICB0ZW50YXRpdmVfY2M9Z2NjCisgICAgOzsKKyAgKi0qLXNvbGFyaXMyKikKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zb2xhcmlzIgorICAgIDs7CisgIG02OGstc3VuLXN1bm9zKikKKyAgICAjIFN1bidzIEMgY29tcGlsZXIgbmVlZHMgdGhlIC1KIGZsYWcgdG8gYmUgYWJsZSB0byBjb21waWxlIGNwLXBhcnNlLmMKKyAgICAjIHdpdGhvdXQgb3ZlcmZsb3dpbmcgdGhlIGp1bXAgdGFibGVzICgtSiBzYXlzIHRvIHVzZSBhIDMyIGJpdCB0YWJsZSkKKyAgICB0ZW50YXRpdmVfY2M9ImNjIC1KIgorICAgIDs7CisgICotaHAtaHB1eCopCisgICAgdGVudGF0aXZlX2NjPSJjYyAtV3AsLUgyNTYwMDAiCisgICAgOzsKKyAgKi0qLWhpdXgqKQorICAgIHRlbnRhdGl2ZV9jYz0iY2MgLVdwLC1IMjU2MDAwIgorICAgIDs7CisgIHJzNjAwMC0qLWx5bnhvcyopCisgICAgIyAvYmluL2NjIGlzIGxlc3MgdGhhbiB1c2VmdWwgZm9yIG91ciBwdXJwb3Nlcy4gIEFsd2F5cyB1c2UgR0NDCisgICAgdGVudGF0aXZlX2NjPSIvdXNyL2N5Z251cy9wcm9ncmVzc2l2ZS9iaW4vZ2NjIgorICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLWx5bnhyczZrIgorICAgIDs7CisgICotKi1seW54b3MqKQorICAgICMgL2Jpbi9jYyBpcyBsZXNzIHRoYW4gdXNlZnVsIGZvciBvdXIgcHVycG9zZXMuICBBbHdheXMgdXNlIEdDQworICAgIHRlbnRhdGl2ZV9jYz0iL2Jpbi9nY2MiCisgICAgOzsKKyAgKi0qLXN5c3Y0KikKKyAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zeXN2NCIKKyAgICA7OworZXNhYworZmkKKworIyBJZiB3ZSBhcmVuJ3QgZ29pbmcgdG8gYmUgdXNpbmcgZ2NjLCBzZWUgaWYgd2UgY2FuIGV4dHJhY3QgYSBkZWZpbml0aW9uCisjIG9mIENDIGZyb20gdGhlIGZyYWdtZW50LgorIyBBY3R1YWxseSwgdXNlIHRoZSAncHJlLWV4dHJhY3RlZCcgdmVyc2lvbiBhYm92ZS4KK2lmIHRlc3QgLXogIiR7Q0N9IiAmJiB0ZXN0ICIke2J1aWxkfSIgPSAiJHtob3N0fSIgOyB0aGVuCisgIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfToiCisgIGZvdW5kPQorICBmb3IgZGlyIGluICRQQVRIOyBkbworICAgIHRlc3QgLXogIiRkaXIiICYmIGRpcj0uCisgICAgaWYgdGVzdCAtZiAkZGlyL2djYzsgdGhlbgorICAgICAgZm91bmQ9eWVzCisgICAgICBicmVhaworICAgIGZpCisgIGRvbmUKKyAgSUZTPSIkc2F2ZV9pZnMiCisgIGlmIHRlc3QgLXogIiR7Zm91bmR9IiAmJiB0ZXN0IC1uICIke3RlbnRhdGl2ZV9jY30iIDsgdGhlbgorICAgIENDPSR0ZW50YXRpdmVfY2MKKyAgZmkKK2ZpCisKK2lmIHRlc3QgIiR7YnVpbGR9IiAhPSAiJHtob3N0fSIgOyB0aGVuCisgICMgSWYgd2UgYXJlIGRvaW5nIGEgQ2FuYWRpYW4gQ3Jvc3MsIGluIHdoaWNoIHRoZSBob3N0IGFuZCBidWlsZCBzeXN0ZW1zCisgICMgYXJlIG5vdCB0aGUgc2FtZSwgd2Ugc2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSB0b29scy4KKworICBCSVNPTj0ke0JJU09OLWJpc29ufQorICBDQz0ke0NDLSR7aG9zdF9hbGlhc30tZ2NjfQorICBDRkxBR1M9JHtDRkxBR1MtIi1nIC1PMiJ9CisgIENYWD0ke0NYWC0ke2hvc3RfYWxpYXN9LWMrK30KKyAgQ1hYRkxBR1M9JHtDWFhGTEFHUy0iLWcgLU8yIn0KKyAgQ0NfRk9SX0JVSUxEPSR7Q0NfRk9SX0JVSUxELWdjY30KKyAgQ0NfRk9SX1RBUkdFVD0ke0NDX0ZPUl9UQVJHRVQtJHt0YXJnZXRfYWxpYXN9LWdjY30KKyAgQ1hYX0ZPUl9UQVJHRVQ9JHtDWFhfRk9SX1RBUkdFVC0ke3RhcmdldF9hbGlhc30tYysrfQorICBHQ0pfRk9SX1RBUkdFVD0ke0dDSl9GT1JfVEFSR0VULSR7dGFyZ2V0X2FsaWFzfS1nY2p9CisgIEdDQ19GT1JfVEFSR0VUPSR7R0NDX0ZPUl9UQVJHRVQtJHtDQ19GT1JfVEFSR0VULSR7dGFyZ2V0X2FsaWFzfS1nY2N9fQorICBCVUlMRF9QUkVGSVg9JHtidWlsZF9hbGlhc30tCisgIEJVSUxEX1BSRUZJWF8xPSR7YnVpbGRfYWxpYXN9LQorICBNQUtFSU5GTz0ke01BS0VJTkZPLW1ha2VpbmZvfQorCisgIGlmIHRlc3QgLXogIiR7WUFDQ30iIDsgdGhlbgorICAgIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfToiCisgICAgZm9yIGRpciBpbiAkUEFUSDsgZG8KKyAgICAgIHRlc3QgLXogIiRkaXIiICYmIGRpcj0uCisgICAgICBpZiB0ZXN0IC1mICRkaXIvYmlzb247IHRoZW4KKwlZQUNDPSJiaXNvbiAteSIKKwlicmVhaworICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLWYgJGRpci9ieWFjYzsgdGhlbgorCVlBQ0M9YnlhY2MKKwlicmVhaworICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLWYgJGRpci95YWNjOyB0aGVuCisJWUFDQz15YWNjCisJYnJlYWsKKyAgICAgIGZpCisgICAgZG9uZQorICAgIElGUz0iJHNhdmVfaWZzIgorICAgIGlmIHRlc3QgLXogIiR7WUFDQ30iIDsgdGhlbgorICAgICAgWUFDQz0iYmlzb24gLXkiCisgICAgZmkKKyAgZmkKKworICBpZiB0ZXN0IC16ICIke0xFWH0iIDsgdGhlbgorICAgIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfToiCisgICAgZm9yIGRpciBpbiAkUEFUSDsgZG8KKyAgICAgIHRlc3QgLXogIiRkaXIiICYmIGRpcj0uCisgICAgICBpZiB0ZXN0IC1mICRkaXIvZmxleDsgdGhlbgorCUxFWD1mbGV4CisJYnJlYWsKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1mICRkaXIvbGV4OyB0aGVuCisJTEVYPWxleAorCWJyZWFrCisgICAgICBmaQorICAgIGRvbmUKKyAgICBJRlM9IiRzYXZlX2lmcyIKKyAgICBMRVg9JHtMRVgtZmxleH0KKyAgZmkKKworZWxzZQorICAjIFNldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzIGZvciBzb21lIHRvb2xzIGV2ZW4gaWYgbm90IENhbmFkaWFuLgorICAjIE9mIGNvdXJzZSwgdGhlc2UgYXJlIGRpZmZlcmVudCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLCBvcmlnaW5hbGx5CisgICMgc3BlY2lmaWVkIGRpcmVjdGx5IGluIHRoZSBNYWtlZmlsZS4KKyAgIyBXZSBkb24ndCBleHBvcnQsIHNvIHRoYXQgYXV0b2NvbmYgY2FuIGRvIGl0cyBqb2IuCisgICMgTm90ZSB0aGF0IGFsbCB0aGVzZSBzZXR0aW5ncyBhcmUgYWJvdmUgdGhlIGZyYWdtZW50IGluY2x1c2lvbiBwb2ludAorICAjIGluIE1ha2VmaWxlLmluLCBzbyBjYW4gc3RpbGwgYmUgb3ZlcnJpZGRlbiBieSBmcmFnbWVudHMuCisgICMgVGhpcyBpcyBhbGwgZ29pbmcgdG8gY2hhbmdlIHdoZW4gd2UgYXV0b2NvbmZpc2NhdGUuLi4KKworICBCSVNPTj0iXCQoVVNVQUxfQklTT04pIgorICBDQ19GT1JfQlVJTEQ9IlwkKENDKSIKKyAgR0NDX0ZPUl9UQVJHRVQ9IlwkKFVTVUFMX0dDQ19GT1JfVEFSR0VUKSIKKyAgQlVJTERfUFJFRklYPQorICBCVUlMRF9QUkVGSVhfMT1sb3Nlci0KKyAgTUFLRUlORk89IlwkKFVTVUFMX01BS0VJTkZPKSIKKyAgTEVYPSJcJChVU1VBTF9MRVgpIgorICBZQUNDPSJcJChVU1VBTF9ZQUNDKSIKKworICAjIElmIENDIGlzIHN0aWxsIG5vdCBzZXQsIHRyeSB0byBnZXQgZ2NjLgorICBjY19wcm9nX2lzX2djYz0KKyAgaWYgdGVzdCAteiAiJHtDQ30iIDsgdGhlbgorICAgIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfToiCisgICAgZm9yIGRpciBpbiAkUEFUSDsgZG8KKyAgICAgIHRlc3QgLXogIiRkaXIiICYmIGRpcj0uCisgICAgICBpZiB0ZXN0IC1mICRkaXIvZ2NjOyB0aGVuCisJQ0M9ImdjYyIKKwljY19wcm9nX2lzX2djYz15ZXMKKwllY2hvICd2b2lkIGYoKXt9JyA+IGNvbmZ0ZXN0LmMKKwlpZiB0ZXN0IC16ICJgJHtDQ30gLWcgLWMgY29uZnRlc3QuYyAyPiYxYCI7IHRoZW4KKwkgIENGTEFHUz0ke0NGTEFHUy0iLWcgLU8yIn0KKwkgIENYWEZMQUdTPSR7Q1hYRkxBR1MtIi1nIC1PMiJ9CisJZWxzZQorCSAgQ0ZMQUdTPSR7Q0ZMQUdTLSItTzIifQorCSAgQ1hYRkxBR1M9JHtDWFhGTEFHUy0iLU8yIn0KKwlmaQorCXJtIC1mIGNvbmZ0ZXN0KgorCWJyZWFrCisgICAgICBmaQorICAgIGRvbmUKKyAgICBJRlM9IiRzYXZlX2lmcyIKKyAgICBDQz0ke0NDLWNjfQorICBlbHNlCisgICAgIyBEZXRlcm1pbmUgaWYgd2UgYXJlIHVzaW5nIGdjYy4KKyAgICBjYXQgPiBjb25mdGVzdC5jIDw8RU9GCisjaWZkZWYgX19HTlVDX18KKyAgeWVzOworI2VuZGlmCitFT0YKKyAgICBpZiAke0NDfSAtRSBjb25mdGVzdC5jIHwgZ3JlcCB5ZXMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICBjY19wcm9nX2lzX2djYz15ZXMKKyAgICBmaQorICAgIHJtIC1mIGNvbmZ0ZXN0LmMKKyAgICBpZiB0ZXN0IC16ICIke0NGTEFHU30iOyB0aGVuCisgICAgICAjIEhlcmUgQ0MgaXMgc2V0IGJ1dCBDRkxBR1MgaXMgbm90LiAgVXNlIGEgcXVpY2sgaGFjayB0byB1c2UgLU8yIGlmIENDCisgICAgICAjIGlzIHNldCB0byBhIHZlcnNpb24gb2YgZ2NjLgorICAgICAgaWYgdGVzdCAiJGNjX3Byb2dfaXNfZ2NjIiA9IHllczsgdGhlbgorCWVjaG8gJ3ZvaWQgZigpe30nID4gY29uZnRlc3QuYworCWlmIHRlc3QgLXogImAke0NDfSAtZyAtYyBjb25mdGVzdC5jIDI+JjFgIjsgdGhlbgorCSAgQ0ZMQUdTPSR7Q0ZMQUdTLSItZyAtTzIifQorCSAgQ1hYRkxBR1M9JHtDWFhGTEFHUy0iLWcgLU8yIn0KKwllbHNlCisJICBDRkxBR1M9JHtDRkxBR1MtIi1PMiJ9CisJICBDWFhGTEFHUz0ke0NYWEZMQUdTLSItTzIifQorCWZpCisJcm0gLWYgY29uZnRlc3QqCisgICAgICBmaQorICAgIGZpCisgIGZpCisKKyAgIyBXZSBtdXN0IHNldCB0aGUgZGVmYXVsdCBsaW5rZXIgdG8gdGhlIGxpbmtlciB1c2VkIGJ5IGdjYyBmb3IgdGhlIGNvcnJlY3QKKyAgIyBvcGVyYXRpb24gb2YgbGlidG9vbC4gIElmIExEIGlzIG5vdCBkZWZpbmVkIGFuZCB3ZSBhcmUgdXNpbmcgZ2NjLCB0cnkgdG8KKyAgIyBzZXQgdGhlIExEIGRlZmF1bHQgdG8gdGhlIGxkIHVzZWQgYnkgZ2NjLgorICBpZiB0ZXN0IC16ICIkTEQiOyB0aGVuCisgICAgaWYgdGVzdCAiJGNjX3Byb2dfaXNfZ2NjIiA9IHllczsgdGhlbgorICAgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyopCisJZ2NjX3Byb2dfbGQ9YCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkIDI+JjEgfCB0ciAtZCAnXDAxNSdgIDs7CisgICAgICAqKQorCWdjY19wcm9nX2xkPWAkQ0MgLXByaW50LXByb2ctbmFtZT1sZCAyPiYxYCA7OworICAgICAgZXNhYworICAgICAgY2FzZSAkZ2NjX3Byb2dfbGQgaW4KKyAgICAgICMgQWNjZXB0IGFic29sdXRlIHBhdGhzLgorICAgICAgW1tcXC9dKiB8IFtBLVphLXpdOltcXC9dKildCisgICAgICAgIExEPSIkZ2NjX3Byb2dfbGQiIDs7CisgICAgICBlc2FjCisgICAgZmkKKyAgZmkKKworICBDWFg9JHtDWFgtImMrKyJ9CisgIENGTEFHUz0ke0NGTEFHUy0iLWcifQorICBDWFhGTEFHUz0ke0NYWEZMQUdTLSItZyAtTzIifQorZmkKKworQUNYX1BST0dfR05BVAorCisjIEJ5IGRlZmF1bHQsIEMgaXMgdGhlIG9ubHkgc3RhZ2UgMSBsYW5ndWFnZS4KK3N0YWdlMV9sYW5ndWFnZXM9YworQUNfU1VCU1Qoc3RhZ2UxX2xhbmd1YWdlcykKKwogIyBGaWd1cmUgb3V0IHdoYXQgbGFuZ3VhZ2Ugc3ViZGlyZWN0b3JpZXMgYXJlIHByZXNlbnQuCiAjIExvb2sgaWYgdGhlIHVzZXIgc3BlY2lmaWVkIC0tZW5hYmxlLWxhbmd1YWdlcz0iLi4uIjsgaWYgbm90LCB1c2UKICMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICRMQU5HVUFHRVMgaWYgZGVmaW5lZC4gJExBTkdVQUdFUyBtaWdodAogIyBnbyBhd2F5IHNvbWUgZGF5LgogIyBOQjogIGVtYmVkZGVkIHRhYnMgaW4gdGhpcyBJRiBibG9jayAtLSBkbyBub3QgdW50YWJpZnkKLWlmIHRlc3QgeCIke2VuYWJsZV9sYW5ndWFnZXMrc2V0fSIgIT0geHNldDsgdGhlbgotICBpZiB0ZXN0IHgiJHtMQU5HVUFHRVMrc2V0fSIgPSB4c2V0OyB0aGVuCi0gICAgZW5hYmxlX2xhbmd1YWdlcz0iJHtMQU5HVUFHRVN9IgotICAgICAgZWNobyBjb25maWd1cmUuaW46IHdhcm5pbmc6IHNldHRpbmcgTEFOR1VBR0VTIGlzIGRlcHJlY2F0ZWQsIHVzZSAtLWVuYWJsZS1sYW5ndWFnZXMgaW5zdGVhZCAxPiYyCitpZiB0ZXN0IC1kICR7c3JjZGlyfS9nY2M7IHRoZW4KKyAgaWYgdGVzdCB4IiR7ZW5hYmxlX2xhbmd1YWdlcytzZXR9IiAhPSB4c2V0OyB0aGVuCisgICAgaWYgdGVzdCB4IiR7TEFOR1VBR0VTK3NldH0iID0geHNldDsgdGhlbgorICAgICAgZW5hYmxlX2xhbmd1YWdlcz0iJHtMQU5HVUFHRVN9IgorICAgICAgICBlY2hvIGNvbmZpZ3VyZS5pbjogd2FybmluZzogc2V0dGluZyBMQU5HVUFHRVMgaXMgZGVwcmVjYXRlZCwgdXNlIC0tZW5hYmxlLWxhbmd1YWdlcyBpbnN0ZWFkIDE+JjIKKyAgICBlbHNlCisgICAgICBlbmFibGVfbGFuZ3VhZ2VzPWFsbAorICAgIGZpCiAgIGVsc2UKLSAgICBlbmFibGVfbGFuZ3VhZ2VzPWFsbAorICAgIGlmIHRlc3QgeCIke2VuYWJsZV9sYW5ndWFnZXN9IiA9IHggfHwKKyAgICAgICB0ZXN0IHgiJHtlbmFibGVfbGFuZ3VhZ2VzfSIgPSB4eWVzOworICAgICAgIHRoZW4KKyAgICAgIGVjaG8gY29uZmlndXJlLmluOiAtLWVuYWJsZS1sYW5ndWFnZXMgbmVlZHMgYXQgbGVhc3Qgb25lIGxhbmd1YWdlIGFyZ3VtZW50IDE+JjIKKyAgICAgIGV4aXQgMQorICAgIGZpCiAgIGZpCi1lbHNlCi0gIGlmIHRlc3QgeCIke2VuYWJsZV9sYW5ndWFnZXN9IiA9IHggfHwKLSAgICAgdGVzdCB4IiR7ZW5hYmxlX2xhbmd1YWdlc30iID0geHllczsKLSAgICAgdGhlbgotICAgIGVjaG8gY29uZmlndXJlLmluOiAtLWVuYWJsZS1sYW5ndWFnZXMgbmVlZHMgYXQgbGVhc3Qgb25lIGxhbmd1YWdlIGFyZ3VtZW50IDE+JjIKLSAgICBleGl0IDEKLSAgZmkKLWZpCi1lbmFibGVfbGFuZ3VhZ2VzPWBlY2hvICIke2VuYWJsZV9sYW5ndWFnZXN9IiB8IHNlZCAtZSAncy9bWyAJLF1dW1sgCSxdXSovLC9nJyAtZSAncy8sJC8vJ2AKKyAgZW5hYmxlX2xhbmd1YWdlcz1gZWNobyAiJHtlbmFibGVfbGFuZ3VhZ2VzfSIgfCBzZWQgLWUgJ3MvW1sgCSxdXVtbIAksXV0qLywvZycgLWUgJ3MvLCQvLydgCiAKLSMgRmlyc3Qgc2NhbiB0byBzZWUgaWYgYW4gZW5hYmxlZCBsYW5ndWFnZSByZXF1aXJlcyBzb21lIG90aGVyIGxhbmd1YWdlLgotIyBXZSBhc3N1bWUgdGhhdCBhIGdpdmVuIGNvbmZpZy1sYW5nLmluIHdpbGwgbGlzdCBhbGwgdGhlIGxhbmd1YWdlCi0jIGZyb250IGVuZHMgaXQgcmVxdWlyZXMsIGV2ZW4gaWYgc29tZSBhcmUgcmVxdWlyZWQgaW5kaXJlY3RseS4KLWZvciBsYW5nX2ZyYWcgaW4gJHtzcmNkaXJ9L2djYy8qL2NvbmZpZy1sYW5nLmluIC4uIDsgZG8KLSAgY2FzZSAke2xhbmdfZnJhZ30gaW4KLSAgICAuLikgOzsKLSAgICAjIFRoZSBvZGQgcXVvdGluZyBpbiB0aGUgbmV4dCBsaW5lIHdvcmtzIGFyb3VuZAotICAgICMgYW4gYXBwYXJlbnQgYnVnIGluIGJhc2ggMS4xMiBvbiBsaW51eC4KLSAgICAke3NyY2Rpcn0vZ2NjL1tbKl1dL2NvbmZpZy1sYW5nLmluKSA7OwotICAgICopCi0gICAgICAjIEZyb20gdGhlIGNvbmZpZy1sYW5nLmluLCBnZXQgJGxhbmd1YWdlLCAkbGFuZ19yZXF1aXJlcwotICAgICAgbGFuZ3VhZ2U9Ci0gICAgICBsYW5nX3JlcXVpcmVzPQotICAgICAgLiAke2xhbmdfZnJhZ30KLSAgICAgIGZvciBvdGhlciBpbiAke2xhbmdfcmVxdWlyZXN9IDsgZG8KLSAgICAgICAgY2FzZSAsJHtlbmFibGVfbGFuZ3VhZ2VzfSwgaW4KLQkgICosJG90aGVyLCopIDs7Ci0JICAqLGFsbCwqKSA7OwotCSAgKiwkbGFuZ3VhZ2UsKikKLQkgICAgZWNobyAiIFxgJG90aGVyJyBsYW5ndWFnZSByZXF1aXJlZCBieSBcYCRsYW5ndWFnZSc7IGVuYWJsaW5nIiAxPiYyCi0JICAgIGVuYWJsZV9sYW5ndWFnZXM9IiR7ZW5hYmxlX2xhbmd1YWdlc30sJHtvdGhlcn0iCisgICMgRmlyc3Qgc2NhbiB0byBzZWUgaWYgYW4gZW5hYmxlZCBsYW5ndWFnZSByZXF1aXJlcyBzb21lIG90aGVyIGxhbmd1YWdlLgorICAjIFdlIGFzc3VtZSB0aGF0IGEgZ2l2ZW4gY29uZmlnLWxhbmcuaW4gd2lsbCBsaXN0IGFsbCB0aGUgbGFuZ3VhZ2UKKyAgIyBmcm9udCBlbmRzIGl0IHJlcXVpcmVzLCBldmVuIGlmIHNvbWUgYXJlIHJlcXVpcmVkIGluZGlyZWN0bHkuCisgIGZvciBsYW5nX2ZyYWcgaW4gJHtzcmNkaXJ9L2djYy8qL2NvbmZpZy1sYW5nLmluIC4uIDsgZG8KKyAgICBjYXNlICR7bGFuZ19mcmFnfSBpbgorICAgICAgLi4pIDs7CisgICAgICAjIFRoZSBvZGQgcXVvdGluZyBpbiB0aGUgbmV4dCBsaW5lIHdvcmtzIGFyb3VuZAorICAgICAgIyBhbiBhcHBhcmVudCBidWcgaW4gYmFzaCAxLjEyIG9uIGxpbnV4LgorICAgICAgJHtzcmNkaXJ9L2djYy9bWypdXS9jb25maWctbGFuZy5pbikgOzsKKyAgICAgICopCisgICAgICAgICMgRnJvbSB0aGUgY29uZmlnLWxhbmcuaW4sIGdldCAkbGFuZ3VhZ2UsICRsYW5nX3JlcXVpcmVzCisgICAgICAgIGxhbmd1YWdlPQorICAgICAgICBsYW5nX3JlcXVpcmVzPQorICAgICAgICAuICR7bGFuZ19mcmFnfQorICAgICAgICBmb3Igb3RoZXIgaW4gJHtsYW5nX3JlcXVpcmVzfSA7IGRvCisgICAgICAgICAgY2FzZSAsJHtlbmFibGVfbGFuZ3VhZ2VzfSwgaW4KKwkgICAgKiwkb3RoZXIsKikgOzsKKwkgICAgKixhbGwsKikgOzsKKwkgICAgKiwkbGFuZ3VhZ2UsKikKKwkgICAgICBlY2hvICIgXGAkb3RoZXInIGxhbmd1YWdlIHJlcXVpcmVkIGJ5IFxgJGxhbmd1YWdlJzsgZW5hYmxpbmciIDE+JjIKKwkgICAgICBlbmFibGVfbGFuZ3VhZ2VzPSIke2VuYWJsZV9sYW5ndWFnZXN9LCR7b3RoZXJ9IgorCSAgICAgIDs7CisJICBlc2FjCisgICAgICAgIGRvbmUKKyAgICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICBuZXdfZW5hYmxlX2xhbmd1YWdlcz1jCisgIG1pc3NpbmdfbGFuZ3VhZ2VzPWBlY2hvICIsJGVuYWJsZV9sYW5ndWFnZXMsIiB8IHNlZCAtZSBzLyxhbGwsLywvIC1lIHMvLGMsLywvIGAKKworICBmb3IgbGFuZ19mcmFnIGluICR7c3JjZGlyfS9nY2MvKi9jb25maWctbGFuZy5pbiAuLiA7IGRvCisgICAgY2FzZSAke2xhbmdfZnJhZ30gaW4KKyAgICAgIC4uKSA7OworICAgICAgIyBUaGUgb2RkIHF1b3RpbmcgaW4gdGhlIG5leHQgbGluZSB3b3JrcyBhcm91bmQKKyAgICAgICMgYW4gYXBwYXJlbnQgYnVnIGluIGJhc2ggMS4xMiBvbiBsaW51eC4KKyAgICAgICR7c3JjZGlyfS9nY2MvW1sqXV0vY29uZmlnLWxhbmcuaW4pIDs7CisgICAgICAqKQorICAgICAgICAjIEZyb20gdGhlIGNvbmZpZy1sYW5nLmluLCBnZXQgJGxhbmd1YWdlLCAkdGFyZ2V0X2xpYnMsIAorICAgICAgICAjICRsYW5nX2RpcnMsICRib290X2xhbmd1YWdlLCBhbmQgJGJ1aWxkX2J5X2RlZmF1bHQKKyAgICAgICAgbGFuZ3VhZ2U9CisgICAgICAgIHRhcmdldF9saWJzPQorICAgICAgICBsYW5nX2RpcnM9CisgICAgICAgIGJvb3RfbGFuZ3VhZ2U9CisgICAgICAgIGJ1aWxkX2J5X2RlZmF1bHQ9CisgICAgICAgIC4gJHtsYW5nX2ZyYWd9CisgICAgICAgICMgVGhpcyBpcyBxdWl0ZSBzZW5zaXRpdmUgdG8gdGhlIG9yZGVyaW5nIG9mIHRoZSBjYXNlIHN0YXRlbWVudCBhcm1zLgorICAgICAgICBjYXNlICwke2VuYWJsZV9sYW5ndWFnZXN9LDoke2xhbmd1YWdlfToke2hhdmVfZ25hdH06JHtidWlsZF9ieV9kZWZhdWx0fSBpbgorICAgICAgICAgICo6Oio6KikKKyAgICAgICAgICAgIGVjaG8gIiR7bGFuZ19mcmFnfSBkb2Vzbid0IHNldCBcJGxhbmd1YWdlLiIgMT4mMgorICAgICAgICAgICAgZXhpdCAxCiAJICAgIDs7Ci0JZXNhYwotICAgICAgZG9uZQotICAgICAgOzsKLSAgZXNhYwotZG9uZQorICAgICAgICAgICo6YWRhOm5vOiopCisgICAgICAgICAgICAjIEFkYSB3YXMgcmVxdWVzdGVkIHdpdGggbm8gcHJlZXhpc3RpbmcgR05BVC4gIERpc2FibGUgdW5jb25kaXRpb25hbGx5LgorICAgICAgICAgICAgYWRkX3RoaXNfbGFuZz1ubworICAgICAgICAgICAgOzsKKyAgICAgICAgICAqLCR7bGFuZ3VhZ2V9LCo6KjoqOiopCisgICAgICAgICAgICAjIExhbmd1YWdlIHdhcyBleHBsaWNpdGx5IHNlbGVjdGVkOyBpbmNsdWRlIGl0LgorICAgICAgICAgICAgYWRkX3RoaXNfbGFuZz15ZXMKKyAgICAgICAgICAgIDs7CisgICAgICAgICAgKixhbGwsKjoqOio6bm8pCisgICAgICAgICAgICAjICdhbGwnIHdhcyBzZWxlY3RlZCwgYnV0IHRoaXMgaXMgbm90IGEgZGVmYXVsdCBsYW5ndWFnZQorCSAgICAjIHNvIGRvIG5vdCBpbmNsdWRlIGl0LgorICAgICAgICAgICAgYWRkX3RoaXNfbGFuZz1ubworCSAgICA7OworICAgICAgICAgICosYWxsLCo6KjoqOiopCisgICAgICAgICAgICAjICdhbGwnIHdhcyBzZWxlY3RlZCBhbmQgdGhpcyBpcyBhIGRlZmF1bHQgbGFuZ3VhZ2U7IGluY2x1ZGUgaXQuCisgICAgICAgICAgICBhZGRfdGhpc19sYW5nPXllcworICAgICAgICAgICAgOzsKKyAgICAgICAgICAqKQorICAgICAgICAgICAgYWRkX3RoaXNfbGFuZz1ubworICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICBjYXNlICRhZGRfdGhpc19sYW5nIGluCisJICBubykKKyAgICAgICAgICAgICMgUmVtb3ZlIGxhbmd1YWdlLWRlcGVuZGVudCBkaXJzLgorICAgICAgICAgICAgZXZhbCBub2NvbmZpZ2RpcnM9JyIkbm9jb25maWdkaXJzICInXCIkdGFyZ2V0X2xpYnMgJGxhbmdfZGlyc1wiCisJICAgIDs7CisgICAgICAgICAgKikKKwkgICAgbmV3X2VuYWJsZV9sYW5ndWFnZXM9IiRuZXdfZW5hYmxlX2xhbmd1YWdlcywkbGFuZ3VhZ2UiCisJICAgIG1pc3NpbmdfbGFuZ3VhZ2VzPWBlY2hvICIkbWlzc2luZ19sYW5ndWFnZXMiIHwgc2VkICJzLywkbGFuZ3VhZ2UsLywvImAKKwkgICAgY2FzZSAke2Jvb3RfbGFuZ3VhZ2V9IGluCisJICAgICAgeWVzKQorCQkjIEFkZCB0byAoY29tbWEtc2VwYXJhdGVkKSBsaXN0IG9mIHN0YWdlIDEgbGFuZ3VhZ2VzLgorCQlzdGFnZTFfbGFuZ3VhZ2VzPSIke3N0YWdlMV9sYW5ndWFnZXN9LCR7bGFuZ3VhZ2V9IgorCQk7OworCSAgICBlc2FjCisJICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKIAotZm9yIGxhbmdfZnJhZyBpbiAke3NyY2Rpcn0vZ2NjLyovY29uZmlnLWxhbmcuaW4gLi4gOyBkbwotICBjYXNlICR7bGFuZ19mcmFnfSBpbgotICAgIC4uKSA7OwotICAgICMgVGhlIG9kZCBxdW90aW5nIGluIHRoZSBuZXh0IGxpbmUgd29ya3MgYXJvdW5kCi0gICAgIyBhbiBhcHBhcmVudCBidWcgaW4gYmFzaCAxLjEyIG9uIGxpbnV4LgotICAgICR7c3JjZGlyfS9nY2MvW1sqXV0vY29uZmlnLWxhbmcuaW4pIDs7Ci0gICAgKikKLSAgICAgICMgRnJvbSB0aGUgY29uZmlnLWxhbmcuaW4sIGdldCAkbGFuZ3VhZ2UsICR0YXJnZXRfbGlicywgCi0gICAgICAjICRsYW5nX2RpcnMsIGFuZCAkYnVpbGRfYnlfZGVmYXVsdAotICAgICAgbGFuZ3VhZ2U9Ci0gICAgICB0YXJnZXRfbGlicz0KLSAgICAgIGxhbmdfZGlycz0KLSAgICAgIGJ1aWxkX2J5X2RlZmF1bHQ9Ci0gICAgICAuICR7bGFuZ19mcmFnfQotICAgICAgaWYgdGVzdCAieCRsYW5ndWFnZSIgPSB4IDsgdGhlbgotICAgICAgICBlY2hvICIke2xhbmdfZnJhZ30gZG9lc24ndCBzZXQgXCRsYW5ndWFnZS4iIDE+JjIKLSAgICAgICAgZXhpdCAxCi0gICAgICBmaQotICAgICAgY2FzZSAsJHtlbmFibGVfbGFuZ3VhZ2VzfSwgaW4KLSAgICAgICAgKiwke2xhbmd1YWdlfSwqKQotICAgICAgICAgICMgTGFuZ3VhZ2Ugd2FzIGV4cGxpY2l0bHkgc2VsZWN0ZWQ7IGluY2x1ZGUgaXQuCi0gICAgICAgICAgYWRkX3RoaXNfbGFuZz15ZXMKLSAgICAgICAgICA7OwotICAgICAgICAqLGFsbCwqKQotICAgICAgICAgICMgJ2FsbCcgd2FzIHNlbGVjdGVkOyBpbmNsdWRlICdkZWZhdWx0JyBsYW5ndWFnZXMuCi0gICAgICAgICAgY2FzZSAke2J1aWxkX2J5X2RlZmF1bHR9IGluCi0gICAgICAgICAgICBubykgYWRkX3RoaXNfbGFuZz1ubyA7OwotICAgICAgICAgICAgKikgYWRkX3RoaXNfbGFuZz15ZXMgOzsKLSAgICAgICAgICBlc2FjIAotICAgICAgICAgIDs7Ci0gICAgICAgICopIGFkZF90aGlzX2xhbmc9bm8gOzsKLSAgICAgIGVzYWMKLSAgICAgIGNhc2UgJHthZGRfdGhpc19sYW5nfSBpbgotICAgICAgICBubykKLSAgICAgICAgICAjIFJlbW92ZSBsYW5ndWFnZS1kZXBlbmRlbnQgZGlycy4KLSAgICAgICAgICBldmFsIG5vY29uZmlnZGlycz0nIiRub2NvbmZpZ2RpcnMgIidcIiR0YXJnZXRfbGlicyAkbGFuZ19kaXJzXCIKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgZXNhYwotZG9uZQorICBtaXNzaW5nX2xhbmd1YWdlcz1gZWNobyAiJG1pc3NpbmdfbGFuZ3VhZ2VzIiB8IHNlZCAtZSAicy9eLC8vIiAtZSAicy8sJC8vImAKKyAgaWYgdGVzdCAieCRtaXNzaW5nX2xhbmd1YWdlcyIgIT0geDsgdGhlbgorICAgIEFDX01TR19FUlJPUihbCitUaGUgZm9sbG93aW5nIHJlcXVlc3RlZCBsYW5ndWFnZXMgd2VyZSBub3QgZm91bmQ6ICR7bWlzc2luZ19sYW5ndWFnZXN9XSkKKyAgZmkKKworICBpZiB0ZXN0ICJ4JG5ld19lbmFibGVfbGFuZ3VhZ2VzIiAhPSAieCRlbmFibGVfbGFuZ3VhZ2VzIjsgdGhlbgorICAgIGVjaG8gVGhlIGZvbGxvd2luZyBsYW5ndWFnZXMgd2lsbCBiZSBidWlsdDogJHtuZXdfZW5hYmxlX2xhbmd1YWdlc30KKyAgZmkKKyAgZW5hYmxlX2xhbmd1YWdlcz0iJG5ld19lbmFibGVfbGFuZ3VhZ2VzIgorICBhY19jb25maWd1cmVfYXJncz1gZWNobyAiICRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgLWUgJ3MvIC0tZW5hYmxlLWxhbmd1YWdlcz1bW14gXV0qLy8nIC1lICdzLyQvIC0tZW5hYmxlLWxhbmd1YWdlcz0nIiRlbmFibGVfbGFuZ3VhZ2VzIi8gYAorZmkKIAogIyBSZW1vdmUgdGhlIGVudHJpZXMgaW4gJHNraXBkaXJzIGFuZCAkbm9jb25maWdkaXJzIGZyb20gJGNvbmZpZ2RpcnMgYW5kCiAjICR0YXJnZXRfY29uZmlnZGlycy4KQEAgLTEwMTEsMTU3ICsxMzc4LDYgQEAKICAgc2hpZnQ7IHNoaWZ0CiBkb25lCiAKLSMgV29yayBpbiBkaXN0cmlidXRpb25zIHRoYXQgY29udGFpbiBubyBjb21waWxlciB0b29scywgbGlrZSBBdXRvY29uZi4KLXRlbnRhdGl2ZV9jYz0iIgotaG9zdF9tYWtlZmlsZV9mcmFnPS9kZXYvbnVsbAotaWYgdGVzdCAtZCAke3NyY2Rpcn0vY29uZmlnIDsgdGhlbgotY2FzZSAiJHtob3N0fSIgaW4KLSAgbTY4ay1ocC1ocHV4KikKLSAgICAjIEF2b2lkICJ0b28gbXVjaCBkZWZpbmluZyIgZXJyb3JzIGZyb20gSFBVWCBjb21waWxlci4KLSAgICB0ZW50YXRpdmVfY2M9ImNjIC1XcCwtSDI1NjAwMCIKLSAgICAjIElmICJhciIgaW4gJFBBVEggaXMgR05VIGFyLCB0aGUgc3ltYm9sIHRhYmxlIG1heSBuZWVkIHJlYnVpbGRpbmcuCi0gICAgIyBJZiBpdCdzIEhQL1VYIGFyLCB0aGlzIHNob3VsZCBiZSBoYXJtbGVzcy4KLSAgICBSQU5MSUI9ImFyIHRzIgotICAgIDs7Ci0gIG02OGstYXBvbGxvLXN5c3YqKQotICAgIHRlbnRhdGl2ZV9jYz0iY2MgLUEgYW5zaSAtQSBydW50eXBlLGFueSAtQSBzeXN0eXBlLGFueSAtVV9fU1REQ19fIC1EVVNHIgotICAgIDs7Ci0gIG02OGstYXBvbGxvLWJzZCopCi0gICAgI05vbmUgb2YgdGhlIEFwb2xsbyBjb21waWxlcnMgY2FuIGNvbXBpbGUgZ2FzIG9yIGJpbnV0aWxzLiAgVGhlIHByZXByb2Nlc3NvcgotICAgICMgY2hva2VzIG9uIGJmZCwgdGhlIGNvbXBpbGVyIHdvbid0IGxldCB5b3UgYXNzaWduIGludGVnZXJzIHRvIGVudW1zLCBhbmQKLSAgICAjIG90aGVyIHByb2JsZW1zLiAgRGVmaW5pbmcgQ0MgdG8gZ2NjIGlzIGEgcXVlc3Rpb25hYmxlIHdheSB0byBzYXkgImRvbid0IHVzZQotICAgICMgdGhlIGFwb2xsbyBjb21waWxlciIgKHRoZSBwcmVmZXJyZWQgdmVyc2lvbiBvZiBHQ0MgY291bGQgYmUgY2FsbGVkIGNjLAotICAgICMgb3Igd2hhdGV2ZXIpLCBidXQgSSdtIG5vdCBzdXJlIGxlYXZpbmcgQ0MgYXMgY2MgaXMgYW55IGJldHRlci4uLgotICAgICNDQz1jYyAtQSBhbnNpIC1BIHJ1bnR5cGUsYW55IC1BIHN5c3R5cGUsYW55IC1VX19TVERDX18gLUROT19TVERBUkcKLSAgICAjIFVzZWQgdG8gaGF2ZSBCSVNPTj15YWNjLgotICAgIHRlbnRhdGl2ZV9jYz1nY2MKLSAgICA7OwotICBtODhrLWRnLWRndXgqKQotICAgIHRlbnRhdGl2ZV9jYz0iZ2NjIC1XYWxsIC1hbnNpIC1EX191c2luZ19ER1VYIgotICAgIDs7Ci0gIG04OGstaGFycmlzLWN4dXgqKQotICAgICMgVW5kZXIgQ1gvVVgsIHdlIHdhbnQgdG8gdGVsbCB0aGUgY29tcGlsZXIgdG8gdXNlIEFOU0kgbW9kZS4KLSAgICB0ZW50YXRpdmVfY2M9ImNjIC1YYSIKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1jeHV4IgotICAgIDs7Ci0gIG04OGstbW90b3JvbGEtc3lzdiopCi0gICAgOzsKLSAgbWlwcyotZGVjLXVsdHJpeCopCi0gICAgdGVudGF0aXZlX2NjPSJjYyAtV2YsLVhOZzEwMDAiCi0gICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtZGVjc3RhdGlvbiIKLSAgICA7OwotICBtaXBzKi1uZWMtc3lzdjQqKQotICAgICMgVGhlIEMgY29tcGlsZXIgb24gTkVDIE1JUFMgU1ZSNCBuZWVkcyBiaWdnZXIgdGFibGVzLgotICAgIHRlbnRhdGl2ZV9jYz0iY2MgLVpYTmQ9NTAwMCAtWlhOZz0xMDAwIgotICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLW5lY3Y0IgotICAgIDs7Ci0gIG1pcHMqLXNnaS1pcml4NCopCi0gICAgIyBUZWxsIGNvbXBpbGVyIHRvIHVzZSBLJlIgQy4gIFdlIGNhbid0IGNvbXBpbGUgdW5kZXIgdGhlIFNHSSBBbnNpCi0gICAgIyBlbnZpcm9ubWVudC4gIEFsc28gYnVtcCBzd2l0Y2ggdGFibGUgc2l6ZSBzbyB0aGF0IGNwLXBhcnNlIHdpbGwKLSAgICAjIGNvbXBpbGUuICBCdW1wIHN0cmluZyBsZW5ndGggbGltaXQgc28gbGlua2VyIGJ1aWxkcy4KLSAgICB0ZW50YXRpdmVfY2M9ImNjIC1jY2tyIC1XZiwtWE5nMTUwMCAtV2YsLVhOazEwMDAgLVdmLC1YTmgyMDAwIC1XZiwtWE5sODE5MiIKLSAgICA7OwotICBtaXBzKi0qLXN5c3Y0KikKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zeXN2NCIKLSAgICA7OwotICBtaXBzKi0qLXN5c3YqKQotICAgICMgVGhpcyBpcyBmb3IgYSBNSVBTIHJ1bm5pbmcgUklTQy9vcyA0LjUyQy4KLQotICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIEdEQiwgYnV0IG5lZWRzIHRvIGJlIGluIHRoZSB0b3AtbGV2ZWwgbWFrZSBiZWNhdXNlCi0gICAgIyBpZiBhIGxpYnJhcnkgaXMgY29tcGlsZWQgd2l0aCB0aGUgYnNkIGhlYWRlcnMgYW5kIGdldHMgbGlua2VkIHdpdGggdGhlCi0gICAgIyBzeXN2IHN5c3RlbSBsaWJyYXJpZXMgYWxsIGhlbGwgY2FuIGJyZWFrIGxvb3NlIChlLmcuIGEgam1wX2J1ZiBtaWdodCBiZQotICAgICMgYSBkaWZmZXJlbnQgc2l6ZSkuCi0gICAgIyBwdHJhY2UoMikgYXBwYXJlbnRseSBoYXMgcHJvYmxlbXMgaW4gdGhlIEJTRCBlbnZpcm9ubWVudC4gIE5vIHdvcmthcm91bmQgaXMKLSAgICAjIGtub3duIGV4Y2VwdCB0byBzZWxlY3QgdGhlIHN5c3YgZW52aXJvbm1lbnQuICBDb3VsZCB3ZSB1c2UgL3Byb2MgaW5zdGVhZD8KLSAgICAjIFRoZXNlICJzeXN2IGVudmlyb25tZW50cyIgYW5kICJic2QgZW52aXJvbm1lbnRzIiBvZnRlbiBlbmQgdXAgYmVpbmcgYSBwYWluLgotICAgICMKLSAgICAjIFRoaXMgaXMgbm90IHBhcnQgb2YgQ0ZMQUdTIGJlY2F1c2UgcGVyaGFwcyBub3QgYWxsIEMgY29tcGlsZXJzIGhhdmUgdGhpcwotICAgICMgb3B0aW9uLgotICAgIHRlbnRhdGl2ZV9jYz0iY2MgLXN5c3R5cGUgc3lzdiIKLSAgICA7OwotICBpMzcwLWlibS1vcGVuZWQqKQotICAgIHRlbnRhdGl2ZV9jYz0iYzg5IgotICAgIDs7Ci0gIGlbWzM0NTY3ODldXTg2LSotc3lzdjUqKQotICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLXN5c3Y1IgotICAgIDs7Ci0gIGlbWzM0NTY3ODldXTg2LSotZGd1eCopCi0gICAgdGVudGF0aXZlX2NjPSJnY2MgLVdhbGwgLWFuc2kgLURfX3VzaW5nX0RHVVgiCi0gICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtZGd1eDM4NiIKLSAgICA7OwotICBpW1szNDU2Nzg5XV04Ni1uY3Itc3lzdjQuMyopCi0gICAgIyBUaGUgTWV0YVdhcmUgY29tcGlsZXIgd2lsbCBnZW5lcmF0ZSBhIGNvcHlyaWdodCBtZXNzYWdlIHVubGVzcyB5b3UKLSAgICAjIHR1cm4gaXQgb2ZmIGJ5IGFkZGluZyB0aGUgLUhub2NvcHlyIGZsYWcuCi0gICAgdGVudGF0aXZlX2NjPSJjYyAtSG5vY29weXIiCi0gICAgOzsKLSAgaVtbMzQ1Njc4OV1dODYtbmNyLXN5c3Y0KikKLSAgICAjIGZvciBhbiBOQ1IgMzAwMCAoaTQ4Ni9TVlI0KSBzeXN0ZW0uCi0gICAgIyBUaGUgTkNSIDMwMDAgc2hpcHMgd2l0aCBhIE1ldGFXYXJlIGNvbXBpbGVyIGluc3RhbGxlZCBhcyAvYmluL2NjLgotICAgICMgVGhpcyBjb21waWxlciBub3Qgb25seSBlbWl0cyBvYm5veGlvdXMgY29weXJpZ2h0IG1lc3NhZ2VzIGV2ZXJ5IHRpbWUKLSAgICAjIHlvdSBydW4gaXQsIGJ1dCBpdCBjaG9rZXMgYW5kIGRpZXMgb24gYSB3aG9sZSBidW5jaCBvZiBHTlUgc291cmNlCi0gICAgIyBmaWxlcy4gIERlZmF1bHQgdG8gdXNpbmcgdGhlIEFUJlQgY29tcGlsZXIgaW5zdGFsbGVkIGluIC91c3IvY2NzL0FUVC9jYy4KLSAgICB0ZW50YXRpdmVfY2M9Ii91c3IvY2NzL0FUVC9jYyIKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1uY3IzMDAwIgotICAgIDs7Ci0gIGlbWzM0NTY3ODldXTg2LSotc2NvMy4ydjUqKQotICAgIDs7Ci0gIGlbWzM0NTY3ODldXTg2LSotc2NvKikKLSAgICAjIFRoZSBuYXRpdmUgQyBjb21waWxlciBib3RjaGVzIHNvbWUgc2ltcGxlIHVzZXMgb2YgY29uc3QuICBVbmZvcnR1bmF0ZWx5LAotICAgICMgaXQgZG9lc24ndCBkZWZpbmVkIGFueXRoaW5nIGxpa2UgIl9fc2NvX18iIGZvciB1cyB0byB0ZXN0IGZvciBpbiBhbnNpZGVjbC5oLgotICAgIHRlbnRhdGl2ZV9jYz0iY2MgLURjb25zdD0iCi0gICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtc2NvIgotICAgIDs7Ci0gIGlbWzM0NTY3ODldXTg2LSotdWRrKikKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zeXN2NSIKLSAgICA7OwotICBpW1szNDU2Nzg5XV04Ni0qLXNvbGFyaXMyKikKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zeXN2NCIKLSAgICA7OwotICBpW1szNDU2Nzg5XV04Ni0qLW1zZG9zZGpncHAqKQotICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLWRqZ3BwIgotICAgIDs7Ci0gICotY3lnd2luKikKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1jeWd3aW4iCi0gICAgOzsKLSAgKi1taW5ndzMyKikKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1taW5ndzMyIgotICAgIDs7Ci0gICotaW50ZXJpeCopCi0gICAgaG9zdF9tYWtlZmlsZV9mcmFnPSJjb25maWcvbWgtaW50ZXJpeCIKLSAgICA7OwotICB2YXgtKi11bHRyaXgyKikKLSAgICAjIFRoZSBvbGQgQlNEIHBjYyBpc24ndCB1cCB0byBjb21waWxpbmcgcGFydHMgb2YgZ2RiIHNvIHVzZSBnY2MKLSAgICB0ZW50YXRpdmVfY2M9Z2NjCi0gICAgOzsKLSAgKi0qLXNvbGFyaXMyKikKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zb2xhcmlzIgotICAgIDs7Ci0gIG02OGstc3VuLXN1bm9zKikKLSAgICAjIFN1bidzIEMgY29tcGlsZXIgbmVlZHMgdGhlIC1KIGZsYWcgdG8gYmUgYWJsZSB0byBjb21waWxlIGNwLXBhcnNlLmMKLSAgICAjIHdpdGhvdXQgb3ZlcmZsb3dpbmcgdGhlIGp1bXAgdGFibGVzICgtSiBzYXlzIHRvIHVzZSBhIDMyIGJpdCB0YWJsZSkKLSAgICB0ZW50YXRpdmVfY2M9ImNjIC1KIgotICAgIDs7Ci0gICotaHAtaHB1eCopCi0gICAgdGVudGF0aXZlX2NjPSJjYyAtV3AsLUgyNTYwMDAiCi0gICAgOzsKLSAgKi0qLWhpdXgqKQotICAgIHRlbnRhdGl2ZV9jYz0iY2MgLVdwLC1IMjU2MDAwIgotICAgIDs7Ci0gIHJzNjAwMC0qLWx5bnhvcyopCi0gICAgIyAvYmluL2NjIGlzIGxlc3MgdGhhbiB1c2VmdWwgZm9yIG91ciBwdXJwb3Nlcy4gIEFsd2F5cyB1c2UgR0NDCi0gICAgdGVudGF0aXZlX2NjPSIvdXNyL2N5Z251cy9wcm9ncmVzc2l2ZS9iaW4vZ2NjIgotICAgIGhvc3RfbWFrZWZpbGVfZnJhZz0iY29uZmlnL21oLWx5bnhyczZrIgotICAgIDs7Ci0gICotKi1seW54b3MqKQotICAgICMgL2Jpbi9jYyBpcyBsZXNzIHRoYW4gdXNlZnVsIGZvciBvdXIgcHVycG9zZXMuICBBbHdheXMgdXNlIEdDQwotICAgIHRlbnRhdGl2ZV9jYz0iL2Jpbi9nY2MiCi0gICAgOzsKLSAgKi0qLXN5c3Y0KikKLSAgICBob3N0X21ha2VmaWxlX2ZyYWc9ImNvbmZpZy9taC1zeXN2NCIKLSAgICA7OwotZXNhYwotZmkKLQogZXh0cmFfYXJmbGFnc19mb3JfdGFyZ2V0PQogZXh0cmFfbm1mbGFnc19mb3JfdGFyZ2V0PQogZXh0cmFfcmFubGliZmxhZ3NfZm9yX3RhcmdldD0KQEAgLTEyNzYsMjgxICsxNDkyLDE3IEBACiAgICAgOzsKIGVzYWMKIAotIyBJZiB3ZSBhcmVuJ3QgZ29pbmcgdG8gYmUgdXNpbmcgZ2NjLCBzZWUgaWYgd2UgY2FuIGV4dHJhY3QgYSBkZWZpbml0aW9uCi0jIG9mIENDIGZyb20gdGhlIGZyYWdtZW50LgotIyBBY3R1YWxseSwgdXNlIHRoZSAncHJlLWV4dHJhY3RlZCcgdmVyc2lvbiBhYm92ZS4KLWlmIHRlc3QgLXogIiR7Q0N9IiAmJiB0ZXN0ICIke2J1aWxkfSIgPSAiJHtob3N0fSIgOyB0aGVuCi0gIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfToiCi0gIGZvdW5kPQotICBmb3IgZGlyIGluICRQQVRIOyBkbwotICAgIHRlc3QgLXogIiRkaXIiICYmIGRpcj0uCi0gICAgaWYgdGVzdCAtZiAkZGlyL2djYzsgdGhlbgotICAgICAgZm91bmQ9eWVzCi0gICAgICBicmVhawotICAgIGZpCi0gIGRvbmUKLSAgSUZTPSIkc2F2ZV9pZnMiCi0gIGlmIHRlc3QgLXogIiR7Zm91bmR9IiAmJiB0ZXN0IC1uICIke3RlbnRhdGl2ZV9jY30iIDsgdGhlbgotICAgIENDPSR0ZW50YXRpdmVfY2MKLSAgZmkKLWZpCi0KICMgU29tZSBzeXN0ZW1zIChlLmcuLCBvbmUgb2YgdGhlIGkzODYtYWl4IHN5c3RlbXMgdGhlIGdhcyB0ZXN0ZXJzIGFyZQogIyB1c2luZykgZG9uJ3QgaGFuZGxlICJcJCIgY29ycmVjdGx5LCBzbyBkb24ndCB1c2UgaXQgaGVyZS4KIHRvb2xkaXI9JyR7ZXhlY19wcmVmaXh9Jy8ke3RhcmdldF9hbGlhc30KIGJ1aWxkX3Rvb2xkaXI9JHt0b29sZGlyfQogCi0jIEdlbmVyYXRlIGEgZGVmYXVsdCBkZWZpbml0aW9uIGZvciBZQUNDLiAgVGhpcyBpcyB1c2VkIGlmIHRoZSBtYWtlZmlsZSBjYW4ndAotIyBsb2NhdGUgYmlzb24gb3IgYnlhY2MgaW4gb2JqZGlyLgotCi1mb3IgcHJvZyBpbiAnYmlzb24gLXknIGJ5YWNjIHlhY2MKLWRvCi0gIHNldCBkdW1teSAkcHJvZzsgdG1wPSQyCi0gIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfToiCi0gIGZvciBkaXIgaW4gJFBBVEg7IGRvCi0gICAgdGVzdCAteiAiJGRpciIgJiYgZGlyPS4KLSAgICBpZiB0ZXN0IC1mICRkaXIvJHRtcDsgdGhlbgotICAgICAgREVGQVVMVF9ZQUNDPSIkcHJvZyIKLSAgICAgIGJyZWFrCi0gICAgZmkKLSAgZG9uZQotICBJRlM9IiRzYXZlX2lmcyIKLQotICB0ZXN0IC1uICIkREVGQVVMVF9ZQUNDIiAmJiBicmVhawotZG9uZQotCi0jIEdlbmVyYXRlIGEgZGVmYXVsdCBkZWZpbml0aW9uIGZvciBNNC4gIFRoaXMgaXMgdXNlZCBpZiB0aGUgbWFrZWZpbGUgY2FuJ3QKLSMgbG9jYXRlIG00IGluIG9iamRpci4KLQotZm9yIHByb2cgaW4gZ200IGdudW00IG00Ci1kbwotICBzZXQgZHVtbXkgJHByb2c7IHRtcD0kMgotICBJRlM9IiR7SUZTPSAgIH0iOyBzYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9OiIKLSAgZm9yIGRpciBpbiAkUEFUSDsgZG8KLSAgICB0ZXN0IC16ICIkZGlyIiAmJiBkaXI9LgotICAgIGlmIHRlc3QgLWYgJGRpci8kdG1wOyB0aGVuCi0gICAgICBERUZBVUxUX000PSIkcHJvZyIKLSAgICAgIGJyZWFrCi0gICAgZmkKLSAgZG9uZQotICBJRlM9IiRzYXZlX2lmcyIKLQotICB0ZXN0IC1uICIkREVGQVVMVF9NNCIgJiYgYnJlYWsKLWRvbmUKLQotIyBHZW5lcmF0ZSBhIGRlZmF1bHQgZGVmaW5pdGlvbiBmb3IgTEVYLiAgVGhpcyBpcyB1c2VkIGlmIHRoZSBtYWtlZmlsZSBjYW4ndAotIyBsb2NhdGUgZmxleCBpbiBvYmpkaXIuCi0KLWZvciBwcm9nIGluIGZsZXggbGV4Ci1kbwotICBzZXQgZHVtbXkgJHByb2c7IHRtcD0kMgotICBJRlM9IiR7SUZTPSAJfSI7IHNhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU306IgotICBmb3IgZGlyIGluICRQQVRIOyBkbwotICAgIHRlc3QgLXogIiRkaXIiICYmIGRpcj0uCi0gICAgaWYgdGVzdCAtZiAkZGlyLyR0bXA7IHRoZW4KLSAgICAgIERFRkFVTFRfTEVYPSIkcHJvZyIKLSAgICAgIGJyZWFrCi0gICAgZmkKLSAgZG9uZQotICBJRlM9IiRzYXZlX2lmcyIKLQotICB0ZXN0IC1uICIkREVGQVVMVF9MRVgiICYmIGJyZWFrCi1kb25lCi0KLWlmIHRlc3QgIiR7YnVpbGR9IiAhPSAiJHtob3N0fSIgOyB0aGVuCi0gICMgSWYgd2UgYXJlIGRvaW5nIGEgQ2FuYWRpYW4gQ3Jvc3MsIGluIHdoaWNoIHRoZSBob3N0IGFuZCBidWlsZCBzeXN0ZW1zCi0gICMgYXJlIG5vdCB0aGUgc2FtZSwgd2Ugc2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSB0b29scy4KLQotICBCSVNPTj0ke0JJU09OLWJpc29ufQotICBDQz0ke0NDLSR7aG9zdF9hbGlhc30tZ2NjfQotICBDRkxBR1M9JHtDRkxBR1MtIi1nIC1PMiJ9Ci0gIENYWD0ke0NYWC0ke2hvc3RfYWxpYXN9LWMrK30KLSAgQ1hYRkxBR1M9JHtDWFhGTEFHUy0iLWcgLU8yIn0KLSAgQ0NfRk9SX0JVSUxEPSR7Q0NfRk9SX0JVSUxELWdjY30KLSAgQ0NfRk9SX1RBUkdFVD0ke0NDX0ZPUl9UQVJHRVQtJHt0YXJnZXRfYWxpYXN9LWdjY30KLSAgQ1hYX0ZPUl9UQVJHRVQ9JHtDWFhfRk9SX1RBUkdFVC0ke3RhcmdldF9hbGlhc30tYysrfQotICBHQ0pfRk9SX1RBUkdFVD0ke0dDSl9GT1JfVEFSR0VULSR7dGFyZ2V0X2FsaWFzfS1nY2p9Ci0gIEdDQ19GT1JfVEFSR0VUPSR7R0NDX0ZPUl9UQVJHRVQtJHtDQ19GT1JfVEFSR0VULSR7dGFyZ2V0X2FsaWFzfS1nY2N9fQotICBCVUlMRF9QUkVGSVg9JHtidWlsZF9hbGlhc30tCi0gIEJVSUxEX1BSRUZJWF8xPSR7YnVpbGRfYWxpYXN9LQotICBNQUtFSU5GTz0ke01BS0VJTkZPLW1ha2VpbmZvfQotCi0gIGlmIHRlc3QgLXogIiR7WUFDQ30iIDsgdGhlbgotICAgIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfToiCi0gICAgZm9yIGRpciBpbiAkUEFUSDsgZG8KLSAgICAgIHRlc3QgLXogIiRkaXIiICYmIGRpcj0uCi0gICAgICBpZiB0ZXN0IC1mICRkaXIvYmlzb247IHRoZW4KLQlZQUNDPSJiaXNvbiAteSIKLQlicmVhawotICAgICAgZmkKLSAgICAgIGlmIHRlc3QgLWYgJGRpci9ieWFjYzsgdGhlbgotCVlBQ0M9YnlhY2MKLQlicmVhawotICAgICAgZmkKLSAgICAgIGlmIHRlc3QgLWYgJGRpci95YWNjOyB0aGVuCi0JWUFDQz15YWNjCi0JYnJlYWsKLSAgICAgIGZpCi0gICAgZG9uZQotICAgIElGUz0iJHNhdmVfaWZzIgotICAgIGlmIHRlc3QgLXogIiR7WUFDQ30iIDsgdGhlbgotICAgICAgWUFDQz0iYmlzb24gLXkiCi0gICAgZmkKLSAgZmkKLQotICBpZiB0ZXN0IC16ICIke0xFWH0iIDsgdGhlbgotICAgIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfToiCi0gICAgZm9yIGRpciBpbiAkUEFUSDsgZG8KLSAgICAgIHRlc3QgLXogIiRkaXIiICYmIGRpcj0uCi0gICAgICBpZiB0ZXN0IC1mICRkaXIvZmxleDsgdGhlbgotCUxFWD1mbGV4Ci0JYnJlYWsKLSAgICAgIGZpCi0gICAgICBpZiB0ZXN0IC1mICRkaXIvbGV4OyB0aGVuCi0JTEVYPWxleAotCWJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgICBJRlM9IiRzYXZlX2lmcyIKLSAgICBMRVg9JHtMRVgtZmxleH0KLSAgZmkKLQotZWxzZQotICAjIFNldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzIGZvciBzb21lIHRvb2xzIGV2ZW4gaWYgbm90IENhbmFkaWFuLgotICAjIE9mIGNvdXJzZSwgdGhlc2UgYXJlIGRpZmZlcmVudCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLCBvcmlnaW5hbGx5Ci0gICMgc3BlY2lmaWVkIGRpcmVjdGx5IGluIHRoZSBNYWtlZmlsZS4KLSAgIyBXZSBkb24ndCBleHBvcnQsIHNvIHRoYXQgYXV0b2NvbmYgY2FuIGRvIGl0cyBqb2IuCi0gICMgTm90ZSB0aGF0IGFsbCB0aGVzZSBzZXR0aW5ncyBhcmUgYWJvdmUgdGhlIGZyYWdtZW50IGluY2x1c2lvbiBwb2ludAotICAjIGluIE1ha2VmaWxlLmluLCBzbyBjYW4gc3RpbGwgYmUgb3ZlcnJpZGRlbiBieSBmcmFnbWVudHMuCi0gICMgVGhpcyBpcyBhbGwgZ29pbmcgdG8gY2hhbmdlIHdoZW4gd2UgYXV0b2NvbmZpc2NhdGUuLi4KLQotICBCSVNPTj0iXCQoVVNVQUxfQklTT04pIgotICBDQ19GT1JfQlVJTEQ9IlwkKENDKSIKLSAgR0NDX0ZPUl9UQVJHRVQ9IlwkKFVTVUFMX0dDQ19GT1JfVEFSR0VUKSIKLSAgQlVJTERfUFJFRklYPQotICBCVUlMRF9QUkVGSVhfMT1sb3Nlci0KLSAgTUFLRUlORk89IlwkKFVTVUFMX01BS0VJTkZPKSIKLSAgTEVYPSJcJChVU1VBTF9MRVgpIgotICBZQUNDPSJcJChVU1VBTF9ZQUNDKSIKLQotICAjIElmIENDIGlzIHN0aWxsIG5vdCBzZXQsIHRyeSB0byBnZXQgZ2NjLgotICBjY19wcm9nX2lzX2djYz0KLSAgaWYgdGVzdCAteiAiJHtDQ30iIDsgdGhlbgotICAgIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfToiCi0gICAgZm9yIGRpciBpbiAkUEFUSDsgZG8KLSAgICAgIHRlc3QgLXogIiRkaXIiICYmIGRpcj0uCi0gICAgICBpZiB0ZXN0IC1mICRkaXIvZ2NjOyB0aGVuCi0JQ0M9ImdjYyIKLQljY19wcm9nX2lzX2djYz15ZXMKLQllY2hvICd2b2lkIGYoKXt9JyA+IGNvbmZ0ZXN0LmMKLQlpZiB0ZXN0IC16ICJgJHtDQ30gLWcgLWMgY29uZnRlc3QuYyAyPiYxYCI7IHRoZW4KLQkgIENGTEFHUz0ke0NGTEFHUy0iLWcgLU8yIn0KLQkgIENYWEZMQUdTPSR7Q1hYRkxBR1MtIi1nIC1PMiJ9Ci0JZWxzZQotCSAgQ0ZMQUdTPSR7Q0ZMQUdTLSItTzIifQotCSAgQ1hYRkxBR1M9JHtDWFhGTEFHUy0iLU8yIn0KLQlmaQotCXJtIC1mIGNvbmZ0ZXN0KgotCWJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgICBJRlM9IiRzYXZlX2lmcyIKLSAgICBDQz0ke0NDLWNjfQotICBlbHNlCi0gICAgIyBEZXRlcm1pbmUgaWYgd2UgYXJlIHVzaW5nIGdjYy4KLSAgICBjYXQgPiBjb25mdGVzdC5jIDw8RU9GCi0jaWZkZWYgX19HTlVDX18KLSAgeWVzOwotI2VuZGlmCi1FT0YKLSAgICBpZiAke0NDfSAtRSBjb25mdGVzdC5jIHwgZ3JlcCB5ZXMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgICBjY19wcm9nX2lzX2djYz15ZXMKLSAgICBmaQotICAgIHJtIC1mIGNvbmZ0ZXN0LmMKLSAgICBpZiB0ZXN0IC16ICIke0NGTEFHU30iOyB0aGVuCi0gICAgICAjIEhlcmUgQ0MgaXMgc2V0IGJ1dCBDRkxBR1MgaXMgbm90LiAgVXNlIGEgcXVpY2sgaGFjayB0byB1c2UgLU8yIGlmIENDCi0gICAgICAjIGlzIHNldCB0byBhIHZlcnNpb24gb2YgZ2NjLgotICAgICAgaWYgdGVzdCAiJGNjX3Byb2dfaXNfZ2NjIiA9IHllczsgdGhlbgotCWVjaG8gJ3ZvaWQgZigpe30nID4gY29uZnRlc3QuYwotCWlmIHRlc3QgLXogImAke0NDfSAtZyAtYyBjb25mdGVzdC5jIDI+JjFgIjsgdGhlbgotCSAgQ0ZMQUdTPSR7Q0ZMQUdTLSItZyAtTzIifQotCSAgQ1hYRkxBR1M9JHtDWFhGTEFHUy0iLWcgLU8yIn0KLQllbHNlCi0JICBDRkxBR1M9JHtDRkxBR1MtIi1PMiJ9Ci0JICBDWFhGTEFHUz0ke0NYWEZMQUdTLSItTzIifQotCWZpCi0Jcm0gLWYgY29uZnRlc3QqCi0gICAgICBmaQotICAgIGZpCi0gIGZpCi0KLSAgIyBXZSBtdXN0IHNldCB0aGUgZGVmYXVsdCBsaW5rZXIgdG8gdGhlIGxpbmtlciB1c2VkIGJ5IGdjYyBmb3IgdGhlIGNvcnJlY3QKLSAgIyBvcGVyYXRpb24gb2YgbGlidG9vbC4gIElmIExEIGlzIG5vdCBkZWZpbmVkIGFuZCB3ZSBhcmUgdXNpbmcgZ2NjLCB0cnkgdG8KLSAgIyBzZXQgdGhlIExEIGRlZmF1bHQgdG8gdGhlIGxkIHVzZWQgYnkgZ2NjLgotICBpZiB0ZXN0IC16ICIkTEQiOyB0aGVuCi0gICAgaWYgdGVzdCAiJGNjX3Byb2dfaXNfZ2NjIiA9IHllczsgdGhlbgotICAgICAgY2FzZSAkYnVpbGQgaW4KLSAgICAgICotKi1taW5ndyopCi0JZ2NjX3Byb2dfbGQ9YCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkIDI+JjEgfCB0ciAtZCAnXDAxNSdgIDs7Ci0gICAgICAqKQotCWdjY19wcm9nX2xkPWAkQ0MgLXByaW50LXByb2ctbmFtZT1sZCAyPiYxYCA7OwotICAgICAgZXNhYwotICAgICAgY2FzZSAkZ2NjX3Byb2dfbGQgaW4KLSAgICAgICMgQWNjZXB0IGFic29sdXRlIHBhdGhzLgotICAgICAgW1tcXC9dKiB8IFtBLVphLXpdOltcXC9dKildCi0gICAgICAgIExEPSIkZ2NjX3Byb2dfbGQiIDs7Ci0gICAgICBlc2FjCi0gICAgZmkKLSAgZmkKLQotICBDWFg9JHtDWFgtImMrKyJ9Ci0gIENGTEFHUz0ke0NGTEFHUy0iLWcifQotICBDWFhGTEFHUz0ke0NYWEZMQUdTLSItZyAtTzIifQotZmkKLQotIyBGSVhNRSBTaG91bGQgdGhpcyBiZSBkb25lIHJlY3Vyc2l2ZWx5ID8/PyAoVXNlZnVsIGZvciBlLmcuIGdkYnRlc3QpCi0jIFNldCB1cCB0aGUgbGlzdCBvZiBsaW5rcyB0byBiZSBtYWRlLgotIyAke2xpbmtzfSBpcyB0aGUgbGlzdCBvZiBsaW5rIG5hbWVzLCBhbmQgJHtmaWxlc30gaXMgdGhlIGxpc3Qgb2YgbmFtZXMgdG8gbGluayB0by4KLQotIyBNYWtlIHRoZSBsaW5rcy4KLWNvbmZpZ2xpbmtzPSIke2xpbmtzfSIKLWlmIHRlc3QgLXIgLi9jb25maWcuc3RhdHVzICA7IHRoZW4KLSAgbXYgLWYgLi9jb25maWcuc3RhdHVzIC4vY29uZmlnLmJhY2sKLWZpCi13aGlsZSB0ZXN0IC1uICIke2ZpbGVzfSIgOyBkbwotICAjIHNldCBmaWxlIHRvIGNhciBvZiBmaWxlcywgZmlsZXMgdG8gY2RyIG9mIGZpbGVzCi0gIHNldCAke2ZpbGVzfTsgZmlsZT0kMTsgc2hpZnQ7IGZpbGVzPSQqCi0gIHNldCAke2xpbmtzfTsgbGluaz0kMTsgc2hpZnQ7IGxpbmtzPSQqCi0KLSAgaWYgdGVzdCAhIC1yICR7c3JjZGlyfS8ke2ZpbGV9IDsgdGhlbgotICAgIGlmIHRlc3QgISAtciAke2ZpbGV9IDsgdGhlbgotICAgICAgZWNobyAnKioqJyAiJHtwcm9nbmFtZX06IGNhbm5vdCBjcmVhdGUgYSBsaW5rIFwiJHtsaW5rfVwiLCIgMT4mMgotICAgICAgZWNobyAnKioqJyAic2luY2UgdGhlIGZpbGUgXCIke3NyY2Rpcn0vJHtmaWxlfVwiIGRvZXMgbm90IGV4aXN0LiIgMT4mMgotICAgICAgZXhpdCAxCi0gICAgZWxzZQotICAgICAgc3JjZmlsZT0ke2ZpbGV9Ci0gICAgZmkKLSAgZWxzZQotICAgIHNyY2ZpbGU9JHtzcmNkaXJ9LyR7ZmlsZX0KLSAgZmkKLQotICAke3JlbW92ZX0gLWYgJHtsaW5rfQotICAjIE1ha2UgYSBzeW1saW5rIGlmIHBvc3NpYmxlLCBvdGhlcndpc2UgdHJ5IGEgaGFyZCBsaW5rCi0gIGlmICR7c3ltYm9saWNfbGlua30gJHtzcmNmaWxlfSAke2xpbmt9ID4vZGV2L251bGwgMj4mMSA7IHRoZW4KLSAgICB0cnVlCi0gIGVsc2UKLSAgICAjIFdlIG5lZWQgdG8gcmUtcmVtb3ZlIHRoZSBmaWxlIGJlY2F1c2UgTHlueCBsZWF2ZXMgYSAKLSAgICAjIHZlcnkgc3RyYW5nZSBkaXJlY3RvcnkgdGhlcmUgd2hlbiBpdCBmYWlscyBhbiBORlMgc3ltbGluay4KLSAgICAke3JlbW92ZX0gLXIgLWYgJHtsaW5rfQotICAgICR7aGFyZF9saW5rfSAke3NyY2ZpbGV9ICR7bGlua30KLSAgZmkKLSAgaWYgdGVzdCAhIC1yICR7bGlua30gOyB0aGVuCi0gICAgZWNobyAnKioqJyAiJHtwcm9nbmFtZX06IHVuYWJsZSB0byBsaW5rIFwiJHtsaW5rfVwiIHRvIFwiJHtzcmNmaWxlfVwiLiIgMT4mMgotICAgIGV4aXQgMQotICBmaQotCi0gIGVjaG8gIkxpbmtlZCBcIiR7bGlua31cIiB0byBcIiR7c3JjZmlsZX1cIi4iCi1kb25lCisjIEdlbmVyYXRlIGRlZmF1bHQgZGVmaW5pdGlvbnMgZm9yIFlBQ0MsIE00LCBMRVguICBUaGVzZSBhcmUgdXNlZCBpZiB0aGUKKyMgTWFrZWZpbGUgY2FuJ3QgbG9jYXRlIHRoZXNlIHByb2dyYW1zIGluIG9iamRpci4KK01JU1NJTkc9YGNkICRhY19hdXhfZGlyICYmICR7UFdEQ01ELXB3ZH1gL21pc3NpbmcKK0FDX0NIRUNLX1BST0dTKFtERUZBVUxUX1lBQ0NdLCBbJ2Jpc29uIC15JyBieWFjYyB5YWNjXSwgWyRNSVNTSU5HIGJpc29uXSkKK0FDX0NIRUNLX1BST0dTKFtERUZBVUxUX000XSwgW2dtNCBnbnVtNCBtNF0sIFskTUlTU0lORyBtNF0pCitBQ19DSEVDS19QUk9HUyhbREVGQVVMVF9MRVhdLCBbZmxleCBsZXhdLCBbJE1JU1NJTkcgZmxleF0pCiAKICMgQ3JlYXRlIGEgLmdkYmluaXQgZmlsZSB3aGljaCBydW5zIHRoZSBvbmUgaW4gc3JjZGlyCiAjIGFuZCB0ZWxscyBHREIgdG8gbG9vayB0aGVyZSBmb3Igc291cmNlIGZpbGVzLgpAQCAtMTc4MSwyMSArMTczMywyMSBAQAogIyBhdCB0aGUgZW5kIG9mIHRoZSBhcmd1bWVudCBsaXN0LgogIyBUaGVzZSB3aWxsIGJlIGV4cGFuZGVkIGJ5IG1ha2UsIHNvIHF1b3RlICckJy4KIGNhdCA8PFxFT0ZfU0VEID4gY29uZnRlc3RzZWQKLXMvIC0tbm9bW14gXV0qIC8gLwotcy8gLS1jW1thLXotXV0qW1s9IF1dW1teIF1dKiAvIC8KLXMvIC0tc3JbW2Etei1dXSpbWz0gXV1bW14gXV0qIC8gLwotcy8gLS1ob1tbYS16LV1dKltbPSBdXVtbXiBdXSogLyAvCi1zLyAtLWJ1W1thLXotXV0qW1s9IF1dW1teIF1dKiAvIC8KLXMvIC0tdFtbYS16LV1dKltbPSBdXVtbXiBdXSogLyAvCi1zLyAtLXByb2dyYW0tW1twc3RdXVtbYS16LV1dKltbPSBdXVtbXiBdXSogLyAvCi1zLyAtY2FjaGUtZmlsZVtbPSBdXVtbXiBdXSogLyAvCi1zLyAtc3JjZGlyW1s9IF1dW1teIF1dKiAvIC8KLXMvIC1ob3N0W1s9IF1dW1teIF1dKiAvIC8KLXMvIC1idWlsZFtbPSBdXVtbXiBdXSogLyAvCi1zLyAtdGFyZ2V0W1s9IF1dW1teIF1dKiAvIC8KLXMvIC1wcm9ncmFtLXByZWZpeFtbPSBdXVtbXiBdXSogLyAvCi1zLyAtcHJvZ3JhbS1zdWZmaXhbWz0gXV1bW14gXV0qIC8gLwotcy8gLXByb2dyYW0tdHJhbnNmb3JtLW5hbWVbWz0gXV1bW14gXV0qIC8gLworcy8gLS1ub1tbXiBdXSovIC9nCitzLyAtLWNbW2Etei1dXSpbWz0gXV1bW14gXV0qLy9nCitzLyAtLXNyW1thLXotXV0qW1s9IF1dW1teIF1dKi8vZworcy8gLS1ob1tbYS16LV1dKltbPSBdXVtbXiBdXSovL2cKK3MvIC0tYnVbW2Etei1dXSpbWz0gXV1bW14gXV0qLy9nCitzLyAtLXRbW2Etei1dXSpbWz0gXV1bW14gXV0qLy9nCitzLyAtLXByb2dyYW0tW1twc3RdXVtbYS16LV1dKltbPSBdXVtbXiBdXSovL2cKK3MvIC1jYWNoZS1maWxlW1s9IF1dW1teIF1dKi8vZworcy8gLXNyY2RpcltbPSBdXVtbXiBdXSovL2cKK3MvIC1ob3N0W1s9IF1dW1teIF1dKi8vZworcy8gLWJ1aWxkW1s9IF1dW1teIF1dKi8vZworcy8gLXRhcmdldFtbPSBdXVtbXiBdXSovL2cKK3MvIC1wcm9ncmFtLXByZWZpeFtbPSBdXVtbXiBdXSovL2cKK3MvIC1wcm9ncmFtLXN1ZmZpeFtbPSBdXVtbXiBdXSovL2cKK3MvIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lW1s9IF1dW1teIF1dKi8vZwogcy8gW1teJyAtXVteIF0qXSAvIC8KIHMvXiAqLy87cy8gKiQvLwogcyxcJCwkJCxnCkBAIC0yMDQ0LDcgKzE5OTYsNiBAQAogQUNfU1VCU1QoUlBBVEhfRU5WVkFSKQogQUNfU1VCU1QoQlVJTERfUFJFRklYKQogQUNfU1VCU1QoQlVJTERfUFJFRklYXzEpCi1BQ19TVUJTVChjb25maWdsaW5rcykKIEFDX1NVQlNUKGdjY192ZXJzaW9uX3RyaWdnZXIpCiBBQ19TVUJTVChnY2NfdmVyc2lvbikKIEFDX1NVQlNUKHRvb2xkaXIpCkBAIC0yMDk0LDEzICsyMDQ1LDEzIEBACiBBQ19TVUJTVChERUZBVUxUX000KQogCiAjIFRhcmdldCB0b29scy4KLU5DTl9TVFJJQ1RfQ0hFQ0tfVEFSR0VUX1RPT0woQVJfRk9SX1RBUkdFVCwgYXIpCi1OQ05fU1RSSUNUX0NIRUNLX1RBUkdFVF9UT09MKEFTX0ZPUl9UQVJHRVQsIGFzKQotTkNOX1NUUklDVF9DSEVDS19UQVJHRVRfVE9PTChETExUT09MX0ZPUl9UQVJHRVQsIGRsbHRvb2wpCi1OQ05fU1RSSUNUX0NIRUNLX1RBUkdFVF9UT09MKExEX0ZPUl9UQVJHRVQsIGxkKQotTkNOX1NUUklDVF9DSEVDS19UQVJHRVRfVE9PTChOTV9GT1JfVEFSR0VULCBubSkKLU5DTl9TVFJJQ1RfQ0hFQ0tfVEFSR0VUX1RPT0woUkFOTElCX0ZPUl9UQVJHRVQsIHJhbmxpYiwgOikKLU5DTl9TVFJJQ1RfQ0hFQ0tfVEFSR0VUX1RPT0woV0lORFJFU19GT1JfVEFSR0VULCB3aW5kcmVzKQorTkNOX1NUUklDVF9DSEVDS19UQVJHRVRfVE9PTChDT05GSUdVUkVEX0FSX0ZPUl9UQVJHRVQsIGFyKQorTkNOX1NUUklDVF9DSEVDS19UQVJHRVRfVE9PTChDT05GSUdVUkVEX0FTX0ZPUl9UQVJHRVQsIGFzKQorTkNOX1NUUklDVF9DSEVDS19UQVJHRVRfVE9PTChDT05GSUdVUkVEX0RMTFRPT0xfRk9SX1RBUkdFVCwgZGxsdG9vbCkKK05DTl9TVFJJQ1RfQ0hFQ0tfVEFSR0VUX1RPT0woQ09ORklHVVJFRF9MRF9GT1JfVEFSR0VULCBsZCkKK05DTl9TVFJJQ1RfQ0hFQ0tfVEFSR0VUX1RPT0woQ09ORklHVVJFRF9OTV9GT1JfVEFSR0VULCBubSkKK05DTl9TVFJJQ1RfQ0hFQ0tfVEFSR0VUX1RPT0woQ09ORklHVVJFRF9SQU5MSUJfRk9SX1RBUkdFVCwgcmFubGliLCA6KQorTkNOX1NUUklDVF9DSEVDS19UQVJHRVRfVE9PTChDT05GSUdVUkVEX1dJTkRSRVNfRk9SX1RBUkdFVCwgd2luZHJlcykKIAogQUNfU1VCU1QoR0NDX0ZPUl9UQVJHRVQpCiBBQ19TVUJTVChGTEFHU19GT1JfVEFSR0VUKQpAQCAtMjEyNiw3ICsyMDc3LDI0IEBACiAgIE5NX0ZPUl9UQVJHRVQ9IlwkKFVTVUFMX05NX0ZPUl9UQVJHRVQpIgogICBSQU5MSUJfRk9SX1RBUkdFVD0iXCQoVVNVQUxfUkFOTElCX0ZPUl9UQVJHRVQpIgogICBXSU5EUkVTX0ZPUl9UQVJHRVQ9IlwkKFVTVUFMX1dJTkRSRVNfRk9SX1RBUkdFVCkiCitlbHNlCisgICMgSnVzdCB1c2UgdGhlIG9uZXMgd2UgZm91bmQuCisgIEFSX0ZPUl9UQVJHRVQ9IlwkKENPTkZJR1VSRURfQVJfRk9SX1RBUkdFVCkiCisgIEFTX0ZPUl9UQVJHRVQ9IlwkKENPTkZJR1VSRURfQVNfRk9SX1RBUkdFVCkiCisgIERMTFRPT0xfRk9SX1RBUkdFVD0iXCQoQ09ORklHVVJFRF9ETExUT09MX0ZPUl9UQVJHRVQpIgorICBMRF9GT1JfVEFSR0VUPSJcJChDT05GSUdVUkVEX0xEX0ZPUl9UQVJHRVQpIgorICBOTV9GT1JfVEFSR0VUPSJcJChDT05GSUdVUkVEX05NX0ZPUl9UQVJHRVQpIgorICBSQU5MSUJfRk9SX1RBUkdFVD0iXCQoQ09ORklHVVJFRF9SQU5MSUJfRk9SX1RBUkdFVCkiCisgIFdJTkRSRVNfRk9SX1RBUkdFVD0iXCQoQ09ORklHVVJFRF9XSU5EUkVTX0ZPUl9UQVJHRVQpIiAgCiBmaQorQUNfU1VCU1QoQVJfRk9SX1RBUkdFVCkKK0FDX1NVQlNUKEFTX0ZPUl9UQVJHRVQpCitBQ19TVUJTVChETExUT09MX0ZPUl9UQVJHRVQpCitBQ19TVUJTVChMRF9GT1JfVEFSR0VUKQorQUNfU1VCU1QoTk1fRk9SX1RBUkdFVCkKK0FDX1NVQlNUKFJBTkxJQl9GT1JfVEFSR0VUKQorQUNfU1VCU1QoV0lORFJFU19GT1JfVEFSR0VUKQorCiAjIENlcnRhaW4gdG9vbHMgbWF5IG5lZWQgZXh0cmEgZmxhZ3MuCiBBUl9GT1JfVEFSR0VUPSR7QVJfRk9SX1RBUkdFVH0ke2V4dHJhX2FyZmxhZ3NfZm9yX3RhcmdldH0KIFJBTkxJQl9GT1JfVEFSR0VUPSR7UkFOTElCX0ZPUl9UQVJHRVR9JHtleHRyYV9yYW5saWJmbGFnc19mb3JfdGFyZ2V0fQpAQCAtMjE1MSw0ICsyMTE5LDM3IEBACiBNQUlOVD0kTUFJTlRBSU5FUl9NT0RFX1RSVUUKIEFDX1NVQlNUKE1BSU5UKWRubAogCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBHQ0MgYm9vdHN0cmFwIHN1cHBvcnQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgU3RhZ2Ugc3BlY2lmaWMgY2ZsYWdzIGZvciBidWlsZC4KK3N0YWdlMV9jZmxhZ3M9Ii1nIgorY2FzZSAkYnVpbGQgaW4KKyAgdmF4LSotKikKKyAgICBjYXNlICR7R0NDfSBpbgorICAgICAgeWVzKSBzdGFnZTFfY2ZsYWdzPSItZyAtV2EsLUoiIDs7CisgICAgICAqKSBzdGFnZTFfY2ZsYWdzPSItZyAtSiIgOzsKKyAgICBlc2FjIDs7CisgIHBvd2VycGMtKi1kYXJ3aW4qKQorICAgICMgVGhlIHNwaWZmeSBjcHAtcHJlY29tcCBjaG9rZXMgb24gc29tZSBsZWdpdGltYXRlIGNvbnN0cnVjdHMgaW4gR0NDCisgICAgIyBzb3VyY2VzOyB1c2UgLW5vLWNwcC1wcmVjb21wIHRvIGdldCB0byBHTlUgY3BwLgorICAgICMgQXBwbGUncyBHQ0MgaGFzIGJ1Z3MgaW4gZGVzaWduYXRlZCBpbml0aWFsaXplciBoYW5kbGluZywgc28gZGlzYWJsZQorICAgICMgdGhhdCB0b28uCisgICAgc3RhZ2UxX2NmbGFncz0iLWcgLW5vLWNwcC1wcmVjb21wIC1ESEFWRV9ERVNJR05BVEVEX0lOSVRJQUxJWkVSUz0wIgorICAgIDs7Citlc2FjCitBQ19TVUJTVChzdGFnZTFfY2ZsYWdzKQorCisjIEVuYWJsZSAtV2Vycm9yIGluIGJvb3RzdHJhcCBzdGFnZTIgYW5kIGxhdGVyLgorIyBDaGFuZ2UgdGhlIGRlZmF1bHQgdG8gIm5vIiBvbiByZWxlYXNlIGJyYW5jaGVzLgorQUNfQVJHX0VOQUJMRSh3ZXJyb3IsCitbICAtLWVuYWJsZS13ZXJyb3IgICAgICAgICBlbmFibGUgLVdlcnJvciBpbiBib290c3RyYXAgc3RhZ2UyIGFuZCBsYXRlcl0sIFtdLAorW2VuYWJsZV93ZXJyb3I9eWVzXSkKK2Nhc2UgJHtlbmFibGVfd2Vycm9yfSBpbgorICB5ZXMpIHN0YWdlMl93ZXJyb3JfZmxhZz0iLS1lbmFibGUtd2Vycm9yLWFsd2F5cyIgOzsKKyAgKikgc3RhZ2UyX3dlcnJvcl9mbGFnPSIiIDs7Citlc2FjCitBQ19TVUJTVChzdGFnZTJfd2Vycm9yX2ZsYWcpCisKIEFDX09VVFBVVChNYWtlZmlsZSkKZGlmZiAtLWdpdCBhL2NwdS9DaGFuZ2VMb2cgYi9jcHUvQ2hhbmdlTG9nCmluZGV4IDAwYTRhMWYuLmQ4ZWFhOWUgMTAwNjQ0Ci0tLSBhL2NwdS9DaGFuZ2VMb2cKKysrIGIvY3B1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDA0LTAzLTMwICBLYXp1aGlybyBJbmFva2EgIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CisKKwkqIG0zMnIub3BjIChwYXJzZV9oaTE2KTogRml4ZWQgc2hpZ2goMHhmZmZmODAwMCkgYnVnLgorCisyMDA0LTAzLTAxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CisKKwkqIGZydi5jcHUgKGRlZmluZS1hcmNoIGZydik6IEFkZCBmcjQ1MCBtYWNoLgorCShkZWZpbmUtbWFjaCBmcjQ1MCk6IE5ldy4KKwkoZGVmaW5lLW1vZGVsIGZyNDUwKTogTmV3LiAgQWRkIHByb2ZpbGUgdW5pdHMgdG8gZXZlcnkgZnI0NTAgaW5zbi4KKwkoZGVmaW5lLWF0dHIgVU5JVCk6IEFkZCBNRENVVFNTSS4KKwkoZGVmaW5lLWF0dHIgRlI0NTAtTUFKT1IpOiBOZXcgZW51bS4gIEFkZCB0byBldmVyeSBmcjQ1MCBpbnNuLgorCShkZWZpbmUtYXR0ciBBVURJTyk6IE5ldyBib29sZWFuLgorCShmLUxSQUUsIGYtTFJBRCwgZi1MUkFTLCBmLVRMQlBSb3B4LCBmLVRMQlBSTCkKKwkoZi1MUkEtbnVsbCwgZi1UTEJQUi1udWxsKTogTmV3IGZpZWxkcy4KKwkoc2NyMCwgc2NyMSwgc2NyMiwgc2NyMywgaW1hdnIxLCBkYW12cjEsIGN4bnIsIHR0YnIpCisJKHRwbHIsIHRwcHIsIHRweHIsIHRpbWVyaCwgdGltZXJsLCB0aW1lcmQsIGJ0YnIpOiBOZXcgU1BScy4KKwkoTFJBRSwgTFJBRCwgTFJBUywgVExCUFJvcHgsIFRMQlBSTCk6IE5ldyBvcGVyYW5kcy4KKwkoTFJBLW51bGwsIFRMQlBSLW51bGwpOiBOZXcgbWFjcm9zLgorCShpYWNjLW11bHRpcGx5LXItciwgc2xhc3MsIHNjdXRzcywgaW50LWFyaXRoLXNzLXItcik6IEFkZCBBVURJTyBhdHRyLgorCShsb2FkLXJlYWwtYWRkcmVzcyk6IE5ldyBtYWNyby4KKwkobHJhaSwgbHJhZCwgdGxicHIpOiBOZXcgaW5zdHJ1Y3Rpb25zLgorCShtZWRpYS1jdXQtYWNjLCBtZWRpYS1jdXQtYWNjLXNzKTogQWRkIGZyNDUwLW1ham9yIGFyZ3VtZW50LgorCShtY3V0LCBtY3V0aSwgbWN1dHNzLCBtY3V0c3NpKTogQWRqdXN0IGFjY29yZGluZ2x5LgorCShtZGN1dHNzaSk6IENoYW5nZSBVTklUIGF0dHJpYnV0ZSB0byBNRENVVFNTSS4KKwkobWVkaWEtbG93LWNsZWFyLXNlbWFudGljcywgbWVkaWEtc2NvcGUtbGltaXQtc2VtYW50aWNzKQorCShtZWRpYS1xdWFkLWxpbWl0LCBtZWRpYS1xdWFkLXNoaWZ0KTogTmV3IG1hY3Jvcy4KKwkobXFsY2xyaHMsIG1xbG10aHMsIG1xc2xsaGksIG1xc3JhaGkpOiBOZXcgaW5zdHJ1Y3Rpb25zLgorCSogZnJ2Lm9wYyAoZnJ2X2lzX2JyYW5jaF9tYWpvciwgZnJ2X2lzX2Zsb2F0X21ham9yLCBmcnZfaXNfbWVkaWFfbWFqb3IpCisJKGZydl9pc19icmFuY2hfaW5zbiwgZnJ2X2lzX2Zsb2F0X2luc24sIGZydl9pc19tZWRpYV9pbnNuKQorCShmcnZfdmxpd19yZXNldCwgZnJ2X3ZsaXdfYWRkX2luc24pOiBIYW5kbGUgYmZkX21hY2hfZnI0NTAuCisJKGZyNDUwX3VuaXRfbWFwcGluZyk6IE5ldyBhcnJheS4KKwkoZnI0MDBfdW5pdF9tYXBwaW5nLCBmcjUwMF91bml0X21hcHBpbmcsIGZyNTUwX3VuaXRfbWFwcGluZyk6IEFkZCBlbnRyeQorCWZvciBuZXcgTURDVVRTU0kgdW5pdC4KKwkoZnI0NTBfY2hlY2tfaW5zbl9tYWpvcl9jb25zdHJhaW50cyk6IE5ldyBmdW5jdGlvbi4KKwkoY2hlY2tfaW5zbl9tYWpvcl9jb25zdHJhaW50cyk6IFVzZSBpdC4KKworMjAwNC0wMy0wMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgorCisJKiBmcnYuY3B1IChuc2RpdiwgbnVkaXYsIG5zZGl2aSwgbnVkaXZpKTogUmVtb3ZlIGZyNDAwIHByb2ZpbGluZyB1bml0LgorCShzY3V0c3MpOiBDaGFuZ2UgdW5pdCB0byBJMC4KKwkoY2FsbGwsIGNhbGxpbCwgY2NhbGxsKTogQWRkIG1pc3NpbmcgRlI1NTAtTUFKT1IgYW5kIHByb2ZpbGUgdW5pdC4KKwkobXFzYXRocyk6IEZpeCBGUjQwMC1NQUpPUiBjYXRlZ29yaXphdGlvbi4KKwkobWVkaWEtcXVhZC1tdWx0aXBseS1jcm9zcy1hY2MsIG1lZGlhLXF1YWQtY3Jvc3MtbXVsdGlwbHktY3Jvc3MtYWNjKQorCShtZWRpYS1xdWFkLWNyb3NzLW11bHRpcGx5LWFjYyk6IENoYW5nZSB1bml0IGZyb20gTURVQUxBQ0MgdG8gRk1BTEwuCisJKiBmcnYub3BjIChmcjQwMF9jaGVja19pbnNuX21ham9yX2NvbnN0cmFpbnRzKTogQ2hlY2sgZm9yIChNLTIsTS0xKQorCWNvbWJpbmF0aW9ucy4KKworMjAwNC0wMy0wMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgorCisJKiBmcnYuY3B1IChyLXN0b3JlLCByLXN0b3JlLWR1YWwsIHItc3RvcmUtcXVhZCk6IERlbGV0ZS4KKwkocnN0YiwgcnN0aCwgcnN0LCByc3RkLCByc3RxKTogRGVsZXRlLgorCShyc3RiZiwgcnN0aGYsIHJzdGYsIHJzdGRmLCByc3RxZik6IERlbGV0ZS4KKworMjAwNC0wMi0yMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KKworCSogQXBwbHkgdGhlc2UgcGF0Y2hlcyBmcm9tIFJlbmVzYXM6CisKKwkyMDA0LTAyLTEwICBLYXp1aGlybyBJbmFva2EgIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CisKKwkqIGNwdS9tMzJyLm9wYyAobXlfcHJpbnRfaW5zbik6IEZpeGVkIGluY29ycmVjdCBvdXRwdXQgd2hlbgorCWRpc2Fzc2VtYmxpbmcgY29kZXMgZm9yIDB4KjIgYWRkcmVzc2VzLgorCisJMjAwMy0xMi0xNSAgS2F6dWhpcm8gSW5hb2thICA8aW5hb2thLmthenVoaXJvQHJlbmVzYXMuY29tPgorCisJKiBjcHUvbTMyci5jcHU6IEFkZCBQSVBFX08gYXR0cmlidXRlIHRvICJwb3AiIGluc3RydWN0aW9uLgorCisJMjAwMy0xMi0wMyAgS2F6dWhpcm8gSW5hb2thICA8aW5hb2thLmthenVoaXJvQHJlbmVzYXMuY29tPgorCisJKiBjcHUvbTMyci5jcHUgOiBBZGQgbmV3IG1vZGVsIG0zMnIyLgorCUFkZCBuZXcgaW5zdHJ1Y3Rpb25zLgorCVJlcGxhY2Ugb2NjdXJyYW5jZXMgb2YgJ01pdHN1YmlzaGknIHdpdGggJ1JlbmVzYXMnLgorCUNoYW5nZWQgUElQRSBhdHRyIG9mIHB1c2ggZnJvbSBPIHRvIE9TLgorCUNhcmUgZm9yIExpdHRsZS1lbmRpYW4gb2YgTTMyUi4KKwkqIGNwdS9tMzJyLm9wYyAoQ0dFTl9ESVNfSEFTSCwgbXlfcHJpbnRfaW5zbik6CisJQ2FyZSBmb3IgTGl0dGxlLWVuZGlhbiBvZiBNMzJSLgorCShwYXJzZV9zbG8xNik6IHNpZ25lZCBleHRlbnNpb24gZm9yIHZhbHVlLgorCisyMDA0LTAyLTIwICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QHJlZGhhdC5jb20+CisKKwkqIG0zMnIub3BjLCBtMzJyLmNwdTogTmV3IGZpbGVzLiAgV3JpdHRlbiBieSAsIERvdWcgRXZhbnMsIE5pY2sKKwlDbGlmdG9uLCBCZW4gRWxsaXN0b24sIE1hdHRoZXcgR3JlZW4sIGFuZCBBbmRyZXcgSGFsZXkuCisKKwkqIHNoLmNwdSwgc2gub3BjLCBzaDY0LWNvbXBhY3QuY3B1LCBzaDY0LW1lZGlhLmNwdTogTmV3IGZpbGVzLCBhbGwKKwl3cml0dGVuIGJ5IEJlbiBFbGxpc3Rvbi4KKwogMjAwNC0wMS0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgogCiAJKiBmcnYuY3B1IChVTklUKTogQWRkIElBQ0MuCmRpZmYgLS1naXQgYS9jcHUvZnJ2LmNwdSBiL2NwdS9mcnYuY3B1CmluZGV4IDI4ZTc4MzMuLjc1YjAzNGMgMTAwNjQ0Ci0tLSBhL2NwdS9mcnYuY3B1CisrKyBiL2NwdS9mcnYuY3B1CkBAIC0yOCw3ICsyOCw3IEBACiAgIChuYW1lIGZydikgOyBuYW1lIG9mIGNwdSBhcmNoaXRlY3R1cmUKICAgKGNvbW1lbnQgIkZ1aml0c3UgRlJWIikKICAgKGluc24tbHNiMD8gI3QpCi0gIChtYWNocyBmcnYgZnI1NTAgZnI1MDAgZnI0MDAgdG9tY2F0IHNpbXBsZSkKKyAgKG1hY2hzIGZydiBmcjU1MCBmcjUwMCBmcjQ1MCBmcjQwMCB0b21jYXQgc2ltcGxlKQogICAoaXNhcyBmcnYpCiApCiAKQEAgLTEzMzgsNiArMTMzOCwzOTAgQEAKIAkpCiApCiAMCis7IEZSNDUwIG1hY2hpbmUKKyhkZWZpbmUtbWFjaAorICAobmFtZSBmcjQ1MCkKKyAgKGNvbW1lbnQgIkZSNDUwIGNwdSIpCisgIChjcHUgZnJ2YmYpCispCisoZGVmaW5lLW1vZGVsCisgIChuYW1lIGZyNDUwKSAoY29tbWVudCAiRlI0NTAgbW9kZWwiKSAoYXR0cnMpCisgIChtYWNoIGZyNDUwKQorICAocGlwZWxpbmUgYWxsICIiICgpICgoZmV0Y2gpIChkZWNvZGUpIChleGVjdXRlKSAod3JpdGViYWNrKSkpCisgIDsgYHN0YXRlJyBpcyBhIGxpc3Qgb2YgdmFyaWFibGVzIGZvciByZWNvcmRpbmcgbW9kZWwgc3RhdGUKKyAgKHN0YXRlCisgICA7IFN0YXRlIGl0ZW1zCisgICA7IFRoZXNlIGFyZSBhbGwgbWFza3Mgd2l0aCBlYWNoIGJpdCByZXByZXNlbnRpbmcgb25lIHJlZ2lzdGVyLgorICAgKHByZXYtZnAtbG9hZCAgICBESSkgOyBQcmV2aW91cyB1c2Ugb2YgRlIgIHJlZ2lzdGVyIHdhcyBmbG9hdGluZyBwb2ludCBsb2FkCisgICAocHJldi1mci1wNCAgICAgIERJKSA7IFByZXZpb3VzIHVzZSBvZiBGUiAgcmVnaXN0ZXIgd2FzIG1lZGlhIHVuaXQgNAorICAgKHByZXYtZnItcDYgICAgICBESSkgOyBQcmV2aW91cyB1c2Ugb2YgRlIgIHJlZ2lzdGVyIHdhcyBtZWRpYSB1bml0IDYKKyAgIChwcmV2LWFjYy1wMiAgICAgREkpIDsgUHJldmlvdXMgdXNlIG9mIEFDQyByZWdpc3RlciB3YXMgbWVkaWEgdW5pdCAyCisgICAocHJldi1hY2MtcDQgICAgIERJKSA7IFByZXZpb3VzIHVzZSBvZiBBQ0MgcmVnaXN0ZXIgd2FzIG1lZGlhIHVuaXQgNAorICAgKGN1ci1mcC1sb2FkICAgICBESSkgOyBDdXJyZW50ICB1c2Ugb2YgRlIgIHJlZ2lzdGVyIGlzICBmbG9hdGluZyBwb2ludCBsb2FkCisgICAoY3VyLWZyLXA0ICAgICAgIERJKSA7IEN1cnJlbnQgIHVzZSBvZiBGUiAgcmVnaXN0ZXIgaXMgIG1lZGlhIHVuaXQgNAorICAgKGN1ci1mci1wNiAgICAgICBESSkgOyBDdXJyZW50ICB1c2Ugb2YgRlIgIHJlZ2lzdGVyIGlzICBtZWRpYSB1bml0IDYKKyAgIChjdXItYWNjLXAyICAgICAgREkpIDsgQ3VycmVudCAgdXNlIG9mIEFDQyByZWdpc3RlciBpcyAgbWVkaWEgdW5pdCAyCisgICAoY3VyLWFjYy1wNCAgICAgIERJKSA7IEN1cnJlbnQgIHVzZSBvZiBBQ0MgcmVnaXN0ZXIgaXMgIG1lZGlhIHVuaXQgNAorICApCisgICh1bml0IHUtZXhlYyAiRXhlY3V0aW9uIFVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKSA7IGlucHV0cworCSgpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICA7IEJhc2ljIGludGVnZXIgaW5zbiB1bml0CisgICh1bml0IHUtaW50ZWdlciAiSW50ZWdlciBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChHUmkgSU5UIC0xKSAoR1JqIElOVCAtMSkpIDsgaW5wdXRzCisJKChHUmsgSU5UIC0xKSAoSUNDaV8xIElOVCAtMSkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICA7IEludGVnZXIgbXVsdGlwbGljYXRpb24gdW5pdAorICAodW5pdCB1LWltdWwgIkludGVnZXIgTXVsdGlwbGljYXRpb24gVW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoR1JpIElOVCAtMSkgKEdSaiBJTlQgLTEpKSA7IGlucHV0cworCSgoR1Jkb3VibGVrIElOVCAtMSkgKElDQ2lfMSBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBJbnRlZ2VyIGRpdmlzaW9uIHVuaXQKKyAgKHVuaXQgdS1pZGl2ICJJbnRlZ2VyIERpdmlzaW9uIFVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEdSaSBJTlQgLTEpIChHUmogSU5UIC0xKSkgOyBpbnB1dHMKKwkoKEdSayBJTlQgLTEpIChJQ0NpXzEgSU5UIC0xKSkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgIDsgQnJhbmNoIHVuaXQKKyAgKHVuaXQgdS1icmFuY2ggIkJyYW5jaCBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChHUmkgSU5UIC0xKSAoR1JqIElOVCAtMSkKKwkgKElDQ2lfMiBJTlQgLTEpIChGQ0NpXzIgSU5UIC0xKSkgOyBpbnB1dHMKKwkoKHBjKSkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgIDsgVHJhcCB1bml0CisgICh1bml0IHUtdHJhcCAiVHJhcCBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChHUmkgSU5UIC0xKSAoR1JqIElOVCAtMSkKKwkgKElDQ2lfMiBJTlQgLTEpIChGQ0NpXzIgSU5UIC0xKSkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBDb25kaXRpb24gY29kZSBjaGVjayB1bml0CisgICh1bml0IHUtY2hlY2sgIkNoZWNrIFVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKElDQ2lfMyBJTlQgLTEpIChGQ0NpXzMgSU5UIC0xKSkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBHUiBzZXQgaGFsZiB1bml0CisgICh1bml0IHUtc2V0LWhpbG8gIkdSIFNldCBIYWxmIiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKCkgOyBpbnB1dHMKKwkoKEdSa2hpIElOVCAtMSkgKEdSa2xvIElOVCAtMSkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICA7IEdSIGxvYWQgdW5pdCAtLSBUT0RPIGRvZXNuJ3QgaGFuZGxlIHF1YWQKKyAgKHVuaXQgdS1nci1sb2FkICJHUiBMb2FkIFVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEdSaSBJTlQgLTEpIChHUmogSU5UIC0xKSkgOyBpbnB1dHMKKwkoKEdSayBJTlQgLTEpIChHUmRvdWJsZWsgSU5UIC0xKSkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgIDsgR1Igc3RvcmUgdW5pdCAtLSBUT0RPIGRvZXNuJ3QgaGFuZGxlIHF1YWQKKyAgKHVuaXQgdS1nci1zdG9yZSAiR1IgU3RvcmUgVW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoR1JpIElOVCAtMSkgKEdSaiBJTlQgLTEpIChHUmsgSU5UIC0xKSAoR1Jkb3VibGVrIElOVCAtMSkpIDsgaW5wdXRzCisJKCkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgIDsgRlIgbG9hZCB1bml0IC0tIFRPRE8gZG9lc24ndCBoYW5kbGUgcXVhZAorICAodW5pdCB1LWZyLWxvYWQgIkZSIExvYWQgVW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoR1JpIElOVCAtMSkgKEdSaiBJTlQgLTEpKSA7IGlucHV0cworCSgoRlJpbnRrIElOVCAtMSkgKEZSZG91YmxlayBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBGUiBzdG9yZSB1bml0IC0tIFRPRE8gZG9lc24ndCBoYW5kbGUgcXVhZAorICAodW5pdCB1LWZyLXN0b3JlICJGUiBTdG9yZSBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChHUmkgSU5UIC0xKSAoR1JqIElOVCAtMSkgKEZSaW50ayBJTlQgLTEpIChGUmRvdWJsZWsgSU5UIC0xKSkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBTd2FwIHVuaXQKKyAgKHVuaXQgdS1zd2FwICJTd2FwIFVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEdSaSBJTlQgLTEpIChHUmogSU5UIC0xKSkgOyBpbnB1dHMKKwkoKEdSayBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBGUiBNb3ZlIHRvIEdSIHVuaXQKKyAgKHVuaXQgdS1mcjJnciAiRlIgTW92ZSB0byBHUiBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChGUmludGsgSU5UIC0xKSkgOyBpbnB1dHMKKwkoKEdSaiBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBTUFIgTW92ZSB0byBHUiB1bml0CisgICh1bml0IHUtc3ByMmdyICJTUFIgTW92ZSB0byBHUiBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChzcHIgSU5UIC0xKSkgOyBpbnB1dHMKKwkoKEdSaiBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBHUiBNb3ZlIHRvIEZSIHVuaXQKKyAgKHVuaXQgdS1ncjJmciAiR1IgTW92ZSB0byBGUiBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChHUmogSU5UIC0xKSkgOyBpbnB1dHMKKwkoKEZSaW50ayBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBHUiBNb3ZlIHRvIFNQUiB1bml0CisgICh1bml0IHUtZ3Iyc3ByICJHUiBNb3ZlIHRvIFNQUiBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChHUmogSU5UIC0xKSkgOyBpbnB1dHMKKwkoKHNwciBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBNZWRpYSB1bml0IE0xIC0tIHNlZSB0YWJsZSAxNC04IGluIHRoZSBmcjQ1MCBMU0kKKyAgKHVuaXQgdS1tZWRpYS0xICJNZWRpYS0xIHVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEZSaW50aSBJTlQgLTEpIChGUmludGogSU5UIC0xKSkgOyBpbnB1dHMKKwkoKEZSaW50ayBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgKHVuaXQgdS1tZWRpYS0xLXF1YWQgIk1lZGlhLTEtcXVhZCB1bml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChGUmludGkgSU5UIC0xKSAoRlJpbnRqIElOVCAtMSkpIDsgaW5wdXRzCisJKChGUmludGsgSU5UIC0xKSkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgICh1bml0IHUtbWVkaWEtaGlsbyAiTWVkaWEtaGlsbyB1bml0IC0tIGEgdmFyaWF0aW9uIG9mIHRoZSBNZWRpYS0xIHVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKSA7IGlucHV0cworCSgoRlJraGkgSU5UIC0xKSAoRlJrbG8gSU5UIC0xKSkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgIDsgTWVkaWEgdW5pdCBNMiAtLSBzZWUgdGFibGUgMTQtOCBpbiB0aGUgZnI0NTAgTFNJCisgICh1bml0IHUtbWVkaWEtMiAiTWVkaWEtMiB1bml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChGUmludGkgSU5UIC0xKSAoRlJpbnRqIElOVCAtMSkpIDsgaW5wdXRzCisJKChBQ0M0MFNrIElOVCAtMSkgKEFDQzQwVWsgSU5UIC0xKSkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgICh1bml0IHUtbWVkaWEtMi1xdWFkICJNZWRpYS0yLXF1YWQgdW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoRlJpbnRpIElOVCAtMSkgKEZSaW50aiBJTlQgLTEpKSA7IGlucHV0cworCSgoQUNDNDBTayBJTlQgLTEpIChBQ0M0MFVrIElOVCAtMSkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICAodW5pdCB1LW1lZGlhLTItYWNjICJNZWRpYS0yLWFjYyB1bml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChBQ0M0MFNpIElOVCAtMSkpIDsgaW5wdXRzCisJKChBQ0M0MFNrIElOVCAtMSkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICAodW5pdCB1LW1lZGlhLTItYWNjLWR1YWwgIk1lZGlhLTItYWNjLWR1YWwgdW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoQUNDNDBTaSBJTlQgLTEpKSA7IGlucHV0cworCSgoQUNDNDBTayBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgKHVuaXQgdS1tZWRpYS0yLWFkZC1zdWIgIk1lZGlhLTItYWRkLXN1YiB1bml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChBQ0M0MFNpIElOVCAtMSkpIDsgaW5wdXRzCisJKChBQ0M0MFNrIElOVCAtMSkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICAodW5pdCB1LW1lZGlhLTItYWRkLXN1Yi1kdWFsICJNZWRpYS0yLWFkZC1zdWItZHVhbCB1bml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChBQ0M0MFNpIElOVCAtMSkpIDsgaW5wdXRzCisJKChBQ0M0MFNrIElOVCAtMSkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICA7IE1lZGlhIHVuaXQgTTMgLS0gc2VlIHRhYmxlIDE0LTggaW4gdGhlIGZyNDUwIExTSQorICAodW5pdCB1LW1lZGlhLTMgIk1lZGlhLTMgdW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoRlJpbnRpIElOVCAtMSkgKEZSaW50aiBJTlQgLTEpKSA7IGlucHV0cworCSgoRlJpbnRrIElOVCAtMSkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICAodW5pdCB1LW1lZGlhLTMtZHVhbCAiTWVkaWEtMy1kdWFsIHVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEZSaW50aSBJTlQgLTEpKSA7IGlucHV0cworCSgoRlJpbnRrIElOVCAtMSkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICAodW5pdCB1LW1lZGlhLTMtcXVhZCAiTWVkaWEtMy1xdWFkIHVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEZSaW50aSBJTlQgLTEpIChGUmludGogSU5UIC0xKSkgOyBpbnB1dHMKKwkoKEZSaW50ayBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBNZWRpYSB1bml0IE00IC0tIHNlZSB0YWJsZSAxNC04IGluIHRoZSBmcjQ1MCBMU0kKKyAgKHVuaXQgdS1tZWRpYS00ICJNZWRpYS00IHVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEFDQzQwU2kgSU5UIC0xKSAoRlJpbnRqIElOVCAtMSkpIDsgaW5wdXRzCisJKChBQ0M0MFNrIElOVCAtMSkgKEZSaW50ayBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgKHVuaXQgdS1tZWRpYS00LWFjY2cgIk1lZGlhLTQtYWNjZyB1bml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChBQ0NHaSBJTlQgLTEpIChGUmludGkgSU5UIC0xKSkgOyBpbnB1dHMKKwkoKEFDQ0drIElOVCAtMSkgKEZSaW50ayBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgKHVuaXQgdS1tZWRpYS00LWFjYy1kdWFsICJNZWRpYS00LWFjYy1kdWFsIHVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEFDQzQwU2kgSU5UIC0xKSkgOyBpbnB1dHMKKwkoKEZSaW50ayBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgKHVuaXQgdS1tZWRpYS00LW1jbHJhY2NhICJNZWRpYS00IHVuaXQgZm9yIE1DTFJBQ0Mgd2l0aCAjQT0xIiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKCkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBNZWRpYSB1bml0IE02IC0tIHNlZSB0YWJsZSAxNC04IGluIHRoZSBmcjQ1MCBMU0kKKyAgKHVuaXQgdS1tZWRpYS02ICJNZWRpYS02IHVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEZSaW50aSBJTlQgLTEpKSA7IGlucHV0cworCSgoRlJpbnRrIElOVCAtMSkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICA7IE1lZGlhIHVuaXQgTTcgLS0gc2VlIHRhYmxlIDE0LTggaW4gdGhlIGZyNDUwIExTSQorICAodW5pdCB1LW1lZGlhLTcgIk1lZGlhLTEgdW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoRlJpbnRpIElOVCAtMSkgKEZSaW50aiBJTlQgLTEpKSA7IGlucHV0cworCSgoRkNDayBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBNZWRpYSBEdWFsIEV4cGFuZCB1bml0CisgICh1bml0IHUtbWVkaWEtZHVhbC1leHBhbmQgIk1lZGlhIER1YWwgRXhwYW5kIHVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEZSaW50aSBJTlQgLTEpKSA7IGlucHV0cworCSgoRlJpbnRrIElOVCAtMSkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICA7IE1lZGlhIER1YWwgaGFsZiB0byBieXRlIHVuaXQKKyAgKHVuaXQgdS1tZWRpYS1kdWFsLWh0b2IgIk1lZGlhIEhhbGYgdG8gYnl0ZSIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoRlJpbnRqIElOVCAtMSkpIDsgaW5wdXRzCisJKChGUmludGsgSU5UIC0xKSkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgIDsgQmFycmllciB1bml0CisgICh1bml0IHUtYmFycmllciAiQmFycmllciB1bml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKCkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBNZW1vcnkgQmFycmllciB1bml0CisgICh1bml0IHUtbWVtYmFyICJNZW1vcnkgQmFycmllciB1bml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKCkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBJbnNuIGNhY2hlIGludmFsaWRhdGUgdW5pdAorICAodW5pdCB1LWljaSAiSW5zbiBjYWNoZSBpbnZhbGlkYXRlIHVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEdSaSBJTlQgLTEpIChHUmogSU5UIC0xKSkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBEYXRhIGNhY2hlIGludmFsaWRhdGUgdW5pdAorICAodW5pdCB1LWRjaSAiRGF0YSBjYWNoZSBpbnZhbGlkYXRlIHVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEdSaSBJTlQgLTEpIChHUmogSU5UIC0xKSkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBEYXRhIGNhY2hlIGZsdXNoIHVuaXQKKyAgKHVuaXQgdS1kY2YgIkRhdGEgY2FjaGUgZmx1c2ggdW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoR1JpIElOVCAtMSkgKEdSaiBJTlQgLTEpKSA7IGlucHV0cworCSgpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICA7IEluc24gY2FjaGUgcHJlbG9hZCB1bml0CisgICh1bml0IHUtaWNwbCAiSW5zbiBjYWNoZSBwcmVsb2FkIHVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEdSaSBJTlQgLTEpIChHUmogSU5UIC0xKSkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBEYXRhIGNhY2hlIHByZWxvYWQgdW5pdAorICAodW5pdCB1LWRjcGwgIkRhdGEgY2FjaGUgcHJlbG9hZCB1bml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChHUmkgSU5UIC0xKSAoR1JqIElOVCAtMSkpIDsgaW5wdXRzCisJKCkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgIDsgSW5zbiBjYWNoZSB1bmxvY2sgdW5pdAorICAodW5pdCB1LWljdWwgIkluc24gY2FjaGUgdW5sb2NrIHVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKEdSaSBJTlQgLTEpIChHUmogSU5UIC0xKSkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgOyBEYXRhIGNhY2hlIHVubG9jayB1bml0CisgICh1bml0IHUtZGN1bCAiRGF0YSBjYWNoZSB1bmxvY2sgdW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoR1JpIElOVCAtMSkgKEdSaiBJTlQgLTEpKSA7IGlucHV0cworCSgpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorKQorDAogOyBTaW1wbGUgbWFjaGluZSAtIHNpbmdsZSBpc3N1ZSBpbnRlZ2VyIG1hY2hpbmUKIChkZWZpbmUtbWFjaAogICAobmFtZSBzaW1wbGUpCkBAIC0xMzk0LDYgKzE3NzgsNyBAQAogCSAgU0NBTiAgICAgOyBzY2FuLCBzY2FuaSAgICAgICBzbG90dGVkIGRpZmZlcmVudGx5IG9uIGRpZmZlcmVudCBtYWNoaW5lcwogCSAgRENQTCAgICAgOyBkY3BsICAgICAgICAgICAgICBzbG90dGVkIGRpZmZlcmVudGx5IG9uIGRpZmZlcmVudCBtYWNoaW5lcwogCSAgTURVQUxBQ0MgOyBtZWRpYSBkdWFsIGFjYyAgICBzbG90dGVkIGRpZmZlcmVudGx5IG9uIGRpZmZlcmVudCBtYWNoaW5lcworCSAgTURDVVRTU0kgOyBtZGN1dHNzaSBpbnNuICAgICBzbG90dGVkIGRpZmZlcmVudGx5IG9uIGRpZmZlcmVudCBtYWNoaW5lcwogCSAgTUNMUkFDQy0xOyBtY2xyYWNjIEE9PTEgICAgICBzbG90dGVkIGRpZmZlcmVudGx5IG9uIGRpZmZlcmVudCBtYWNoaW5lcwogCSAgTlVNX1VOSVRTCiAgICkKQEAgLTE0MTYsNiArMTgwMSwyMCBAQAogKGRlZmluZS1hdHRyCiAgIChmb3IgaW5zbikKICAgKHR5cGUgZW51bSkKKyAgKG5hbWUgRlI0NTAtTUFKT1IpCisgIChjb21tZW50ICJmcjQ1MCBtYWpvciBpbnNuIGNhdGVnb3JpZXMiKQorICA7IFRoZSBvcmRlciBvZiBkZWNsYXJhdGlvbiBpcyBzaWduaWZpY2FudC4gS2VlcCB2YXJpYXRpb25zIG9uIHRoZSBzYW1lIG1ham9yCisgIDsgdG9nZXRoZXIuCisgICh2YWx1ZXMgTk9ORQorCSAgSS0xIEktMiBJLTMgSS00IEktNQorCSAgQi0xIEItMiBCLTMgQi00IEItNSBCLTYKKwkgIEMtMSBDLTIKKwkgIE0tMSBNLTIgTS0zIE0tNCBNLTUgTS02CisgICkKKykKKyhkZWZpbmUtYXR0cgorICAoZm9yIGluc24pCisgICh0eXBlIGVudW0pCiAgIChuYW1lIEZSNTAwLU1BSk9SKQogICAoY29tbWVudCAiZnI1MDAgbWFqb3IgaW5zbiBjYXRlZ29yaWVzIikKICAgOyBUaGUgb3JkZXIgb2YgZGVjbGFyYXRpb24gaXMgc2lnbmlmaWNhbnQuIEtlZXAgdmFyaWF0aW9ucyBvbiB0aGUgc2FtZSBtYWpvcgpAQCAtMTQ3OCw2ICsxODc3LDEzIEBACiAgIChuYW1lIFBSRVNFUlZFLU9WRikKICAgKGNvbW1lbnQgIlByZXNlcnZlIHZhbHVlIG9mIE1TUi5PVkYiKQogKQorOyAiQXVkaW8iIGluc3RydWN0aW9uIHByb3ZpZGVkIGJ5IHRoZSBmcjQwNSBidXQgbm90IHRoZSBvcmlnaW5hbCBmcjQwMCBjb3JlLgorKGRlZmluZS1hdHRyCisgIChmb3IgaW5zbikKKyAgKHR5cGUgYm9vbGVhbikKKyAgKG5hbWUgQVVESU8pCisgIChjb21tZW50ICJBdWRpbyBpbnN0cnVjdGlvbiBhZGRlZCB3aXRoIEZSNDA1IikKKykKIDsgbnVsbCBhdHRyaWJ1dGUgLS0gdXNlZCBhcyBhIHBsYWNlIGhvbGRlciBmb3Igd2hlcmUgYW4gYXR0cmlidWUgaXMgcmVxdWlyZWQuCiAoZGVmaW5lLWF0dHIKICAgKGZvciBpbnNuKQpAQCAtMTYzMyw2ICsyMDM5LDEzIEBACiAJCQkgIHBjKSkpCiApCiAKKyhkbmYgZi1MUkFFICJMb2FkIFJlYWwgQWRkcmVzcyBFIGZsYWciICgpIDUgMSkKKyhkbmYgZi1MUkFEICJMb2FkIFJlYWwgQWRkcmVzcyBEIGZsYWciICgpIDQgMSkKKyhkbmYgZi1MUkFTICJMb2FkIFJlYWwgQWRkcmVzcyBTIGZsYWciICgpIDMgMSkKKworKGRuZiBmLVRMQlBSb3B4ICJUTEIgUHJvYmUgb3BlcmF0aW9uIG51bWJlciIgKCkgMjggMykKKyhkbmYgZi1UTEJQUkwgICAiVExCIFByb2JlIEwgZmxhZyIgKCkgMjUgMSkKKwogKGRuZiBmLUlDQ2lfMS1udWxsICAibnVsbCBmaWVsZCIgKFJFU0VSVkVEKSAxMSAgMikKIChkbmYgZi1JQ0NpXzItbnVsbCAgIm51bGwgZmllbGQiIChSRVNFUlZFRCkgMjYgIDIpCiAoZG5mIGYtSUNDaV8zLW51bGwgICJudWxsIGZpZWxkIiAoUkVTRVJWRUQpICAxICAyKQpAQCAtMTY2Myw2ICsyMDc2LDkgQEAKIChkbmYgZi1taXNjLW51bGwtMTAgIm51bGwgZmllbGQiIChSRVNFUlZFRCkgMTYgIDUpCiAoZG5mIGYtbWlzYy1udWxsLTExICJudWxsIGZpZWxkIiAoUkVTRVJWRUQpICA1ICAxKQogCisoZG5mIGYtTFJBLW51bGwgICAgICJudWxsIGZpZWxkIiAoUkVTRVJWRUQpICAyICAzKQorKGRuZiBmLVRMQlBSLW51bGwgICAibnVsbCBmaWVsZCIgKFJFU0VSVkVEKSAzMCAgMikKKwogKGRuZiBmLUxJLW9mZiAgICAgICJudWxsIGZpZWxkIiAoUkVTRVJWRUQpIDI1ICAxKQogKGRuZiBmLUxJLW9uICAgICAgICJudWxsIGZpZWxkIiAoUkVTRVJWRUQpIDI1ICAxKQogDApAQCAtMjEyMSw2ICsyNTM3LDggQEAKIAogICAgKHNyMCAgICAgIDc2OCkgKHNyMSAgICAgIDc2OSkgKHNyMiAgICAgIDc3MCkgKHNyMyAgICAgIDc3MSkgCiAKKyAgIChzY3IwICAgICA4MzIpIChzY3IxICAgICA4MzMpIChzY3IyICAgICA4MzQpIChzY3IzICAgICA4MzUpCisKICAgIChmc3IwICAgIDEwMjQpIChmc3IxICAgIDEwMjUpIChmc3IyICAgIDEwMjYpIChmc3IzICAgIDEwMjcpCiAgICAoZnNyNCAgICAxMDI4KSAoZnNyNSAgICAxMDI5KSAoZnNyNiAgICAxMDMwKSAoZnNyNyAgICAxMDMxKQogICAgKGZzcjggICAgMTAzMikgKGZzcjkgICAgMTAzMykgKGZzcjEwICAgMTAzNCkgKGZzcjExICAgMTAzNSkKQEAgLTIzNTUsNyArMjc3MywxMSBAQAogICAgKGRhbXByNjAgMTkxNikgKGRhbXByNjEgMTkxNykgKGRhbXByNjIgMTkxOCkgKGRhbXByNjMgMTkxOSkKIAogICAgKGFtY3IgICAgMTkyMCkgKHN0YmFyICAgMTkyMSkgKG1tY3IgICAgMTkyMikKLSAgIChkY3IgICAgIDIwNDgpIChicnIgICAgIDIwNDkpIChubWFyICAgIDIwNTApCisgICAoaWFtdnIxICAxOTI1KSAoZGFtdnIxICAxOTI3KQorICAgKGN4bnIgICAgMTkzNikgKHR0YnIgICAgMTkzNykgKHRwbHIgICAgMTkzOCkgKHRwcHIgICAgMTkzOSkKKyAgICh0cHhyICAgIDE5NDApCisgICAodGltZXJoICAxOTUyKSAodGltZXJsICAxOTUzKSAodGltZXJkICAxOTU0KQorICAgKGRjciAgICAgMjA0OCkgKGJyciAgICAgMjA0OSkgKG5tYXIgICAgMjA1MCkgKGJ0YnIgICAgMjA1MSkKIAogICAgKGliYXIwICAgMjA1MikgKGliYXIxICAgMjA1MykgKGliYXIyICAgMjA1NCkgKGliYXIzICAgMjA1NSkKICAgIChkYmFyMCAgIDIwNTYpIChkYmFyMSAgIDIwNTcpIChkYmFyMiAgIDIwNTgpIChkYmFyMyAgIDIwNTkpCkBAIC0yNTE2LDcgKzI5MzgsNyBAQAogKGRlZmluZS1oYXJkd2FyZQogICAobmFtZSBoLWlhY2MwKQogICAoY29tbWVudCAiNjQgYml0IHNpZ25lZCBhY2N1bXVsYXRvciIpCi0gIChhdHRycyBQUk9GSUxFIFZJUlRVQUwgKE1BQ0ggZnI0MDApKQorICAoYXR0cnMgUFJPRklMRSBWSVJUVUFMIChNQUNIIGZyNDAwLGZyNDUwKSkKICAgKHR5cGUgcmVnaXN0ZXIgREkgKDEpKQogICAoaW5kaWNlcyBleHRlcm4ta2V5d29yZCBpYWNjMC1uYW1lcykKICAgOyBUaGUgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyIGFjY3VtdWxhdG9yIGlzIG1hZGUgdXAgb2YgdHdvIDMyIGJpdApAQCAtMjczNiw2ICszMTU4LDEzIEBACiAoZG5vcCBsYWJlbDE2ICAiMTggYml0IHBjIHJlbGF0aXZlIGFkZHJlc3MiICgpIGgtaWFkZHIgZi1sYWJlbDE2KQogKGRub3AgbGFiZWwyNCAgIjI2IGJpdCBwYyByZWxhdGl2ZSBhZGRyZXNzIiAoKSBoLWlhZGRyIGYtbGFiZWwyNCkKIAorKGRub3AgTFJBRSAiTG9hZCBSZWFsIEFkZHJlc3MgRSBmbGFnIiAoKSBoLXVpbnQgZi1MUkFFKQorKGRub3AgTFJBRCAiTG9hZCBSZWFsIEFkZHJlc3MgRCBmbGFnIiAoKSBoLXVpbnQgZi1MUkFEKQorKGRub3AgTFJBUyAiTG9hZCBSZWFsIEFkZHJlc3MgUyBmbGFnIiAoKSBoLXVpbnQgZi1MUkFTKQorCisoZG5vcCBUTEJQUm9weCAiVExCIFByb2JlIG9wZXJhdGlvbiBudW1iZXIiICgpIGgtdWludCBmLVRMQlBSb3B4KQorKGRub3AgVExCUFJMICAgIlRMQiBQcm9iZSBMIGZsYWciICAgICAgICAgICAoKSBoLXVpbnQgZi1UTEJQUkwpCisKIChkZWZpbmUtb3BlcmFuZAogICAobmFtZSBBMCkKICAgKGNvbW1lbnQgIkE9PTAgb3BlcmFuZCBvZiBtY2xyYWNjIikKQEAgLTI4OTQsNiArMzMyMyw5IEBACiAoZGVmaW5lLXBtYWNybyAobWlzYy1udWxsLTEwKSAoZi1taXNjLW51bGwtMTAgMCkpCiAoZGVmaW5lLXBtYWNybyAobWlzYy1udWxsLTExKSAoZi1taXNjLW51bGwtMTEgMCkpCiAKKyhkZWZpbmUtcG1hY3JvIChMUkEtbnVsbCkgICAgIChmLUxSQS1udWxsIDApKQorKGRlZmluZS1wbWFjcm8gKFRMQlBSLW51bGwpICAgKGYtVExCUFItbnVsbCAwKSkKKwogKGRlZmluZS1wbWFjcm8gKExJLW9uKSAgICAgICAoZi1MSS1vbiAgMSkpCiAoZGVmaW5lLXBtYWNybyAoTEktb2ZmKSAgICAgIChmLUxJLW9mZiAwKSkKIAwKQEAgLTI5ODQsMTEgKzM0MTYsMTIgQEAKIChkZWZpbmUtcG1hY3JvIChpbnQtbG9naWMtci1yIG5hbWUgb3BlcmF0aW9uIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisJKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEdSaSwkR1JqLCRHUmsiKQogICAgICAgICgrIHBhY2sgR1JrIG9wIEdSaSAoSUNDaV8xLW51bGwpIG9wZSBHUmopCiAgICAgICAgKHNldCBHUmsgKG9wZXJhdGlvbiBHUmkgR1JqKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKIAkoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogICApCiApCkBAIC0zMDAxLDI0ICszNDM0LDI2IEBACiAKIChkbmkgbm90CiAgICAgICgibm90IikKLSAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpIChGUjQwMC1NQUpPUiBJLTEpKQorICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkKKyAgICAgIChGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpKQogICAgICAoIm5vdCRwYWNrICRHUmosJEdSayIpCiAgICAgICgrIHBhY2sgR1JrIE9QXzAxIChycy1udWxsKSAoSUNDaV8xLW51bGwpIE9QRTJfMDYgR1JqKQogICAgICAoc2V0IEdSayAoaW52IEdSaikpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWludGVnZXIpKSAoZnI1NTAgKHVuaXQgdS1pbnRlZ2VyKSkpCiApCiAKIChkbmkgc2RpdgogICAgICAic2lnbmVkIGRpdmlzaW9uIgotICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTEpKQorICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpCisgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSkKICAgICAgInNkaXYkcGFjayAkR1JpLCRHUmosJEdSayIKICAgICAgKCsgcGFjayBHUmsgT1BfMDAgR1JpIChJQ0NpXzEtbnVsbCkgT1BFMl8wRSBHUmopCiAgICAgIChzZXF1ZW5jZSAoKQogCSAgICAgICAoYy1jYWxsIFZPSUQgIkBjcHVAX3NpZ25lZF9pbnRlZ2VyX2RpdmlkZSIKIAkJICAgICAgIEdSaSBHUmogKGluZGV4LW9mIEdSaykgMCkKIAkgICAgICAgKGNsb2JiZXIgR1JrKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LWlkaXYpKQorICAgICAoKGZyNDAwICh1bml0IHUtaWRpdikpIChmcjQ1MCAodW5pdCB1LWlkaXYpKQogICAgICAgKGZyNTAwICh1bml0IHUtaWRpdikpIChmcjU1MCAodW5pdCB1LWlkaXYpKSkKICkKIApAQCAtMzAzMiwyMCArMzQ2NywyMCBAQAogCSAgICAgICAoYy1jYWxsIFZPSUQgIkBjcHVAX3NpZ25lZF9pbnRlZ2VyX2RpdmlkZSIKIAkJICAgICAgIEdSaSBHUmogKGluZGV4LW9mIEdSaykgMSkKIAkgICAgICAgKGNsb2JiZXIgR1JrKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LWlkaXYpKQotICAgICAgKGZyNTAwICh1bml0IHUtaWRpdikpIChmcjU1MCAodW5pdCB1LWlkaXYpKSkKKyAgICAgKChmcjUwMCAodW5pdCB1LWlkaXYpKSAoZnI1NTAgKHVuaXQgdS1pZGl2KSkpCiApCiAKIChkbmkgdWRpdgogICAgICAidW5zaWduZWQgZGl2aXNpb24gcmVnL3JlZyIKLSAgICAgKChVTklUIE1VTFQtRElWKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0yKSAoRlI0MDAtTUFKT1IgSS0xKSkKKyAgICAgKChVTklUIE1VTFQtRElWKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0yKQorICAgICAgKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkpCiAgICAgICJ1ZGl2JHBhY2sgJEdSaSwkR1JqLCRHUmsiCiAgICAgICgrIHBhY2sgR1JrIE9QXzAwIEdSaSAoSUNDaV8xLW51bGwpIE9QRTJfMEYgR1JqKQogICAgICAoc2VxdWVuY2UgKCkKIAkgICAgICAgKGMtY2FsbCBWT0lEICJAY3B1QF91bnNpZ25lZF9pbnRlZ2VyX2RpdmlkZSIKIAkJICAgICAgIEdSaSBHUmogKGluZGV4LW9mIEdSaykgMCkKIAkgICAgICAgKGNsb2JiZXIgR1JrKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LWlkaXYpKQorICAgICAoKGZyNDAwICh1bml0IHUtaWRpdikpIChmcjQ1MCAodW5pdCB1LWlkaXYpKQogICAgICAgKGZyNTAwICh1bml0IHUtaWRpdikpIChmcjU1MCAodW5pdCB1LWlkaXYpKSkKICkKIApAQCAtMzA1OSw4ICszNDk0LDcgQEAKIAkgICAgICAgKGMtY2FsbCBWT0lEICJAY3B1QF91bnNpZ25lZF9pbnRlZ2VyX2RpdmlkZSIKIAkJICAgICAgIEdSaSBHUmogKGluZGV4LW9mIEdSaykgMSkKIAkgICAgICAgKGNsb2JiZXIgR1JrKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LWlkaXYpKQotICAgICAgKGZyNTAwICh1bml0IHUtaWRpdikpIChmcjU1MCAodW5pdCB1LWlkaXYpKSkKKyAgICAgKChmcjUwMCAodW5pdCB1LWlkaXYpKSAoZnI1NTAgKHVuaXQgdS1pZGl2KSkpCiApCiAKIDsgTXVsdGlwbGljYXRpb24KQEAgLTMwNjgsMTEgKzM1MDIsMTIgQEAKIChkZWZpbmUtcG1hY3JvIChtdWx0aXBseS1yLXIgbmFtZSBzaWdub3Agb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBNVUxULURJVikgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMikgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICAgKChVTklUIE1VTFQtRElWKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0yKQorCShGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRHUmksJEdSaiwkR1Jkb3VibGVrIikKICAgICAgICAoKyBwYWNrIEdSZG91YmxlayBvcCBHUmkgKElDQ2lfMS1udWxsKSBvcGUgR1JqKSAKICAgICAgICAoc2V0IEdSZG91YmxlayAobXVsIERJIChzaWdub3AgREkgR1JpKSAoc2lnbm9wIERJIEdSaikpKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1pbXVsKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtaW11bCkpIChmcjQ1MCAodW5pdCB1LWltdWwpKQogCShmcjUwMCAodW5pdCB1LWltdWwpKSAoZnI1NTAgKHVuaXQgdS1pbXVsKSkpCiAgICkKICkKQEAgLTMxMTksMTEgKzM1NTQsMTIgQEAKIChkZWZpbmUtcG1hY3JvIChpYWNjLW11bHRpcGx5LXItciBuYW1lIG9wZXJhdGlvbiBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIElBQ0MpIChGUjQwMC1NQUpPUiBJLTEpIChNQUNIIGZyNDAwKSkKKyAgICAgICAoKFVOSVQgSUFDQykgKE1BQ0ggZnI0MDAsZnI0NTApCisJKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkgQVVESU8pCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEdSaSwkR1JqIikKICAgICAgICAoKyBwYWNrIChyZC1udWxsKSBvcCBHUmkgb3BlIEdSaikKICAgICAgICAoKC5zeW0gaWFjYy0gb3BlcmF0aW9uKSAobXVsIERJIChleHQgREkgR1JpKSAoZXh0IERJIEdSaikpKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkpCiAgICkKICkKIApAQCAtMzEzNCwxMSArMzU3MCwxMiBAQAogKGRlZmluZS1wbWFjcm8gKGludC1zaGlmdC1yLXIgbmFtZSBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpIChGUjQwMC1NQUpPUiBJLTEpKQorICAgICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKQorCShGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRHUmksJEdSaiwkR1JrIikKICAgICAgICAoKyBwYWNrIEdSayBvcCBHUmkgKElDQ2lfMS1udWxsKSBvcGUgR1JqKQogICAgICAgIChzZXQgR1JrIChuYW1lIEdSaSAoYW5kIEdSaiAjeDFmKSkpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNDUwICh1bml0IHUtaW50ZWdlcikpCiAJKGZyNTAwICh1bml0IHUtaW50ZWdlcikpIChmcjU1MCAodW5pdCB1LWludGVnZXIpKSkKICAgKQogKQpAQCAtMzE0OSw3ICszNTg2LDggQEAKIAogKGRuaSBzbGFzcwogICAgICAic2hpZnQgbGVmdCBhcml0aCByZWcvcmVnIHdpdGggc2F0dXJhdGlvbiIKLSAgICAgKChVTklUIElBTEwpIChGUjQwMC1NQUpPUiBJLTEpIChNQUNIIGZyNDAwKSkKKyAgICAgKChVTklUIElBTEwpIChNQUNIIGZyNDAwLGZyNDUwKQorICAgICAgKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkgQVVESU8pCiAgICAgICJzbGFzcyRwYWNrICRHUmksJEdSaiwkR1JrIgogICAgICAoKyBwYWNrIEdSayBPUF80NiBHUmkgT1BFMV8wMiBHUmopCiAgICAgIChzZXQgR1JrIChjLWNhbGwgU0kgIkBjcHVAX3NoaWZ0X2xlZnRfYXJpdGhfc2F0dXJhdGUiIEdSaSBHUmopKQpAQCAtMzE1OCw3ICszNTk2LDggQEAKIAogKGRuaSBzY3V0c3MKICAgICAgIkludGVnZXIgYWNjdW11bGF0b3IgY3V0IHdpdGggc2F0dXJhdGlvbiIKLSAgICAgKChVTklUIElBTEwpIChGUjQwMC1NQUpPUiBJLTEpIChNQUNIIGZyNDAwKSkKKyAgICAgKChVTklUIEkwKSAoTUFDSCBmcjQwMCxmcjQ1MCkKKyAgICAgIChGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpIEFVRElPKQogICAgICAic2N1dHNzJHBhY2sgJEdSaiwkR1JrIgogICAgICAoKyBwYWNrIEdSayBPUF80NiAocnMtbnVsbCkgT1BFMV8wNCBHUmopCiAgICAgIChzZXQgR1JrIChjLWNhbGwgU0kgIkBjcHVAX2lhY2NfY3V0IiAocmVnIGgtaWFjYzAgMCkgR1JqKSkKQEAgLTMxNzQsMTEgKzM2MTMsMTIgQEAKIAogKGRuaSBzY2FuCiAgICAgICJzY2FuIgotICAgICAoKFVOSVQgU0NBTikgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICgoVU5JVCBTQ0FOKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKQorICAgICAgKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkpCiAgICAgICJzY2FuJHBhY2sgJEdSaSwkR1JqLCRHUmsiCiAgICAgICgrIHBhY2sgR1JrIE9QXzBCIEdSaSAoSUNDaV8xLW51bGwpIE9QRTJfMDAgR1JqKQogICAgICAoc2Nhbi1zZW1hbnRpY3MgR1JpIEdSaiBHUmspCi0gICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWludGVnZXIpKSAoZnI1NTAgKHVuaXQgdS1pbnRlZ2VyKSkpCiApCiAKQEAgLTMxODcsMTIgKzM2MjcsMTMgQEAKIChkZWZpbmUtcG1hY3JvIChjb25kaXRpb25hbC1pbnQtbG9naWMgbmFtZSBvcGVyYXRpb24gb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKSAoRlI0MDAtTUFKT1IgSS0xKSBDT05ESVRJT05BTCkKKyAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkKKwkoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSBDT05ESVRJT05BTCkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkR1JpLCRHUmosJEdSaywkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrIEdSayBvcCBHUmkgQ0NpIGNvbmQgb3BlIEdSaikKICAgICAgICAoaWYgKGVxIENDaSAob3IgY29uZCAyKSkKIAkgICAoc2V0IEdSayAob3BlcmF0aW9uIEdSaSBHUmopKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKIAkoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogICApCiApCkBAIC0zMjA1LDI5ICszNjQ2LDMyIEBACiAKIChkbmkgY25vdAogICAgICAiY29uZGl0aW9uYWwgbm90IgotICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkgQ09ORElUSU9OQUwpCisgICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKQorICAgICAgKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkgQ09ORElUSU9OQUwpCiAgICAgICJjbm90JHBhY2sgJEdSaiwkR1JrLCRDQ2ksJGNvbmQiCiAgICAgICgrIHBhY2sgR1JrIE9QXzVBIChycy1udWxsKSBDQ2kgY29uZCBPUEU0XzMgR1JqKQogICAgICAoaWYgKGVxIENDaSAob3IgY29uZCAyKSkKIAkgKHNldCBHUmsgKGludiBHUmopKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKQorICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpIChmcjQ1MCAodW5pdCB1LWludGVnZXIpKQogICAgICAgKGZyNTAwICh1bml0IHUtaW50ZWdlcikpIChmcjU1MCAodW5pdCB1LWludGVnZXIpKSkKICkKIAogKGRuaSBjc211bAogICAgICAiY29uZGl0aW9uYWwgc2lnbmVkIG11bHRpcGx5IgotICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTEpIENPTkRJVElPTkFMKQorICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpCisgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSBDT05ESVRJT05BTCkKICAgICAgImNzbXVsJHBhY2sgJEdSaSwkR1JqLCRHUmRvdWJsZWssJENDaSwkY29uZCIKICAgICAgKCsgcGFjayBHUmRvdWJsZWsgT1BfNTggR1JpIENDaSBjb25kIE9QRTRfMiBHUmopCiAgICAgIChpZiAoZXEgQ0NpIChvciBjb25kIDIpKQogCSAoc2V0IEdSZG91YmxlayAobXVsIERJIChleHQgREkgR1JpKSAoZXh0IERJIEdSaikpKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LWltdWwpKQorICAgICAoKGZyNDAwICh1bml0IHUtaW11bCkpIChmcjQ1MCAodW5pdCB1LWltdWwpKQogICAgICAgKGZyNTAwICh1bml0IHUtaW11bCkpIChmcjU1MCAodW5pdCB1LWltdWwpKSkKICkKIAogKGRuaSBjc2RpdgogICAgICAiY29uZGl0aW9uYWwgc2lnbmVkIGRpdmlzaW9uIgotICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTEpIENPTkRJVElPTkFMKQorICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpCisgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSBDT05ESVRJT05BTCkKICAgICAgImNzZGl2JHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCIKICAgICAgKCsgcGFjayBHUmsgT1BfNTggR1JpIENDaSBjb25kIE9QRTRfMyBHUmopCiAgICAgIChpZiAoZXEgQ0NpIChvciBjb25kIDIpKQpAQCAtMzIzNSwxMyArMzY3OSwxNCBAQAogCQkgICAoYy1jYWxsIFZPSUQgIkBjcHVAX3NpZ25lZF9pbnRlZ2VyX2RpdmlkZSIKIAkJCSAgIEdSaSBHUmogKGluZGV4LW9mIEdSaykgMCkKIAkJICAgKGNsb2JiZXIgR1JrKSkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1pZGl2KSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWlkaXYpKSAoZnI0NTAgKHVuaXQgdS1pZGl2KSkKICAgICAgIChmcjUwMCAodW5pdCB1LWlkaXYpKSAoZnI1NTAgKHVuaXQgdS1pZGl2KSkpCiApCiAKIChkbmkgY3VkaXYKICAgICAgImNvbmRpdGlvbmFsIHVuc2lnbmVkIGRpdmlzaW9uIgotICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTEpIENPTkRJVElPTkFMKQorICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpCisgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSBDT05ESVRJT05BTCkKICAgICAgImN1ZGl2JHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCIKICAgICAgKCsgcGFjayBHUmsgT1BfNTkgR1JpIENDaSBjb25kIE9QRTRfMyBHUmopCiAgICAgIChpZiAoZXEgQ0NpIChvciBjb25kIDIpKQpAQCAtMzI0OSwxOSArMzY5NCwyMCBAQAogCQkgICAoYy1jYWxsIFZPSUQgIkBjcHVAX3Vuc2lnbmVkX2ludGVnZXJfZGl2aWRlIgogCQkJICAgR1JpIEdSaiAoaW5kZXgtb2YgR1JrKSAwKQogCQkgICAoY2xvYmJlciBHUmspKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LWlkaXYpKQorICAgICAoKGZyNDAwICh1bml0IHUtaWRpdikpIChmcjQ1MCAodW5pdCB1LWlkaXYpKQogICAgICAgKGZyNTAwICh1bml0IHUtaWRpdikpIChmcjU1MCAodW5pdCB1LWlkaXYpKSkKICkKIAogKGRlZmluZS1wbWFjcm8gKGNvbmRpdGlvbmFsLXNoaWZ0IG5hbWUgb3BlcmF0aW9uIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkgQ09ORElUSU9OQUwpCisgICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisJKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkgQ09ORElUSU9OQUwpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCIpCiAgICAgICAgKCsgcGFjayBHUmsgb3AgR1JpIENDaSBjb25kIG9wZSBHUmopCiAgICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCiAJICAgKHNldCBHUmsgKG9wZXJhdGlvbiBHUmkgKGFuZCBHUmogI3gxZikpKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKIAkoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogICApCiApCkBAIC0zMjcyLDEyICszNzE4LDEzIEBACiAKIChkbmkgY3NjYW4KICAgICAgImNvbmRpdGlvbmFsIHNjYW4iCi0gICAgICgoVU5JVCBTQ0FOKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKSAoRlI0MDAtTUFKT1IgSS0xKSBDT05ESVRJT05BTCkKKyAgICAgKChVTklUIFNDQU4pIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSBDT05ESVRJT05BTCkKICAgICAgImNzY2FuJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCIKICAgICAgKCsgcGFjayBHUmsgT1BfNjUgR1JpIENDaSBjb25kIE9QRTRfMyBHUmopCiAgICAgIChpZiAoZXEgQ0NpIChvciBjb25kIDIpKQogCSAoc2Nhbi1zZW1hbnRpY3MgR1JpIEdSaiBHUmspKQotICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNDUwICh1bml0IHUtaW50ZWdlcikpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogKQogCkBAIC0zMjk5LDExICszNzQ2LDEyIEBACiAoZGVmaW5lLXBtYWNybyAoaW50LWFyaXRoLWNjLXItciBuYW1lIG9wZXJhdGlvbiBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpIChGUjQwMC1NQUpPUiBJLTEpKQorICAgICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKQorCShGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRHUmksJEdSaiwkR1JrLCRJQ0NpXzEiKQogICAgICAgICgrIHBhY2sgR1JrIG9wIEdSaSBJQ0NpXzEgb3BlIEdSaikKICAgICAgICAoaW50LWFyaXRoLWNjLXNlbWFudGljcyBvcGVyYXRpb24gSUNDaV8xKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpIChmcjQ1MCAodW5pdCB1LWludGVnZXIpKQogCShmcjUwMCAodW5pdCB1LWludGVnZXIpKSAoZnI1NTAgKHVuaXQgdS1pbnRlZ2VyKSkpCiAgICkKICkKQEAgLTMzMjEsMTEgKzM3NjksMTIgQEAKIChkZWZpbmUtcG1hY3JvIChpbnQtbG9naWMtY2Mtci1yIG5hbWUgb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgKC5zeW0gbmFtZSBjYykKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisJKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkpCiAgICAgICAgKC5zdHIgKC5zeW0gbmFtZSBjYykgIiRwYWNrICRHUmksJEdSaiwkR1JrLCRJQ0NpXzEiKQogICAgICAgICgrIHBhY2sgR1JrIG9wIEdSaSBJQ0NpXzEgb3BlIEdSaikKICAgICAgICAoaW50LWxvZ2ljLWNjLXNlbWFudGljcyBuYW1lIElDQ2lfMSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKIAkoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogICApCiApCkBAIC0zMzQ4LDExICszNzk3LDEyIEBACiAoZGVmaW5lLXBtYWNybyAoaW50LXNoaWZ0LWNjLXItciBuYW1lIGwtciBvcCBvcGUgY29tbWVudCkKICAgKGRuaSAoLnN5bSBuYW1lIGNjKQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKSAoRlI0MDAtTUFKT1IgSS0xKSkKKyAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkKKwkoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSkKICAgICAgICAoLnN0ciAoLnN5bSBuYW1lIGNjKSAiJHBhY2sgJEdSaSwkR1JqLCRHUmssJElDQ2lfMSIpCiAgICAgICAgKCsgcGFjayBHUmsgb3AgR1JpIElDQ2lfMSBvcGUgR1JqKQogICAgICAgIChpbnQtc2hpZnQtY2Mtc2VtYW50aWNzIG5hbWUgbC1yIElDQ2lfMSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKIAkoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogICApCiApCkBAIC0zMzc0LDExICszODI0LDEyIEBACiAoZGVmaW5lLXBtYWNybyAobXVsdGlwbHktY2Mtci1yIG5hbWUgc2lnbm9wIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTEpKQorICAgICAgICgoVU5JVCBNVUxULURJVikgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMikKKwkoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkR1JpLCRHUmosJEdSZG91YmxlaywkSUNDaV8xIikKICAgICAgICAoKyBwYWNrIEdSZG91YmxlayBvcCBHUmkgSUNDaV8xIG9wZSBHUmopCiAgICAgICAgKG11bHRpcGx5LWNjLXNlbWFudGljcyBzaWdub3AgR1JpIEdSaiBHUmRvdWJsZWsgSUNDaV8xKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1pbXVsKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtaW11bCkpIChmcjQ1MCAodW5pdCB1LWltdWwpKQogCShmcjUwMCAodW5pdCB1LWltdWwpKSAoZnI1NTAgKHVuaXQgdS1pbXVsKSkpCiAgICkKICkKQEAgLTMzOTIsMTMgKzM4NDMsMTQgQEAKIChkZWZpbmUtcG1hY3JvIChjb25kaXRpb25hbC1pbnQtYXJpdGgtY2MgbmFtZSBvcGVyYXRpb24gb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKSAoRlI0MDAtTUFKT1IgSS0xKSBDT05ESVRJT05BTCkKKyAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkKKwkoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSBDT05ESVRJT05BTCkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkR1JpLCRHUmosJEdSaywkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrIEdSayBvcCBHUmkgQ0NpIGNvbmQgb3BlIEdSaikKICAgICAgICAoaWYgKGVxIENDaSAob3IgY29uZCAyKSkKIAkgICAoaW50LWFyaXRoLWNjLXNlbWFudGljcyBvcGVyYXRpb24KIAkJCQkgICAocmVnIGgtaWNjciAoYW5kIChpbmRleC1vZiBDQ2kpIDMpKSkpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNDUwICh1bml0IHUtaW50ZWdlcikpCiAJKGZyNTAwICh1bml0IHUtaW50ZWdlcikpIChmcjU1MCAodW5pdCB1LWludGVnZXIpKSkKICAgKQogKQpAQCAtMzQwOCwyNiArMzg2MCwyOCBAQAogCiAoZG5pIGNzbXVsY2MKICAgICAgImNvbmRpdGlvbmFsIHNpZ25lZCBtdWx0aXBseSBhbmQgc2V0IGNvbmRpdGlvbiBjb2RlIgotICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTEpIENPTkRJVElPTkFMKQorICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpCisgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSBDT05ESVRJT05BTCkKICAgICAgImNzbXVsY2MkcGFjayAkR1JpLCRHUmosJEdSZG91YmxlaywkQ0NpLCRjb25kIgogICAgICAoKyBwYWNrIEdSZG91YmxlayBPUF81OSBHUmkgQ0NpIGNvbmQgT1BFNF8yIEdSaikKICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCiAJIChtdWx0aXBseS1jYy1zZW1hbnRpY3MgZXh0IEdSaSBHUmogR1Jkb3VibGVrCiAJCQkJKHJlZyBoLWljY3IgKGFuZCAoaW5kZXgtb2YgQ0NpKSAzKSkpKQotICAgICAoKGZyNDAwICh1bml0IHUtaW11bCkpCisgICAgICgoZnI0MDAgKHVuaXQgdS1pbXVsKSkgKGZyNDUwICh1bml0IHUtaW11bCkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1pbXVsKSkgKGZyNTUwICh1bml0IHUtaW11bCkpKQogKQogCiAoZGVmaW5lLXBtYWNybyAoY29uZGl0aW9uYWwtaW50LWxvZ2ljLWNjIG5hbWUgb3BlcmF0aW9uIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkgQ09ORElUSU9OQUwpCisgICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisJKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkgQ09ORElUSU9OQUwpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCIpCiAgICAgICAgKCsgcGFjayBHUmsgb3AgR1JpIENDaSBjb25kIG9wZSBHUmopCiAgICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCiAJICAgKGludC1sb2dpYy1jYy1zZW1hbnRpY3Mgb3BlcmF0aW9uCiAJCQkJICAgKHJlZyBoLWljY3IgKGFuZCAoaW5kZXgtb2YgQ0NpKSAzKSkpKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpIChmcjQ1MCAodW5pdCB1LWludGVnZXIpKQogCShmcjUwMCAodW5pdCB1LWludGVnZXIpKSAoZnI1NTAgKHVuaXQgdS1pbnRlZ2VyKSkpCiAgICkKICkKQEAgLTM0MzksMTMgKzM4OTMsMTQgQEAKIChkZWZpbmUtcG1hY3JvIChjb25kaXRpb25hbC1pbnQtc2hpZnQtY2MgbmFtZSBsLXIgb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgKC5zeW0gYyBuYW1lIGNjKQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKSAoRlI0MDAtTUFKT1IgSS0xKSBDT05ESVRJT05BTCkKKyAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkKKwkoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSBDT05ESVRJT05BTCkKICAgICAgICAoLnN0ciAoLnN5bSBjIG5hbWUgY2MpICIkcGFjayAkR1JpLCRHUmosJEdSaywkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrIEdSayBvcCBHUmkgQ0NpIGNvbmQgb3BlIEdSaikKICAgICAgICAoaWYgKGVxIENDaSAob3IgY29uZCAyKSkKIAkgICAoaW50LXNoaWZ0LWNjLXNlbWFudGljcyBuYW1lIGwtcgogCQkJCSAgIChyZWcgaC1pY2NyIChhbmQgKGluZGV4LW9mIENDaSkgMykpKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKIAkoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogICApCiApCkBAIC0zNDU5LDExICszOTE0LDEyIEBACiAoZGVmaW5lLXBtYWNybyAoaW50LWFyaXRoLXgtci1yIG5hbWUgb3BlcmF0aW9uIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisJKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEdSaSwkR1JqLCRHUmssJElDQ2lfMSIpCiAgICAgICAgKCsgcGFjayBHUmsgb3AgR1JpIElDQ2lfMSBvcGUgR1JqKQogICAgICAgIChzZXQgR1JrICgoLnN5bSBvcGVyYXRpb24gYykgR1JpIEdSaiAoY2JpdCBJQ0NpXzEpKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKIAkoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogICApCiApCkBAIC0zNDc0LDcgKzM5MzAsOCBAQAogKGRlZmluZS1wbWFjcm8gKGludC1hcml0aC14LWNjLXItciBuYW1lIG9wZXJhdGlvbiBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpIChGUjQwMC1NQUpPUiBJLTEpKQorICAgICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKQorCShGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRHUmksJEdSaiwkR1JrLCRJQ0NpXzEiKQogICAgICAgICgrIHBhY2sgR1JrIG9wIEdSaSBJQ0NpXzEgb3BlIEdSaikKICAgICAgICAoc2VxdWVuY2UgKChXSSB0bXApIChRSSBjYykpCkBAIC0zNDg1LDcgKzM5NDIsNyBAQAogCQkgKHNldC16LWFuZC1uIGNjIHRtcCkKIAkJIChzZXQgR1JrIHRtcCkKIAkJIChzZXQgSUNDaV8xIGNjKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKIAkoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogICApCiApCkBAIC0zNDk3LDcgKzM5NTQsOCBAQAogKGRlZmluZS1wbWFjcm8gKGludC1hcml0aC1zcy1yLXIgbmFtZSBvcGVyYXRpb24gb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBJQUxMKSAoRlI0MDAtTUFKT1IgSS0xKSAoTUFDSCBmcjQwMCkpCisgICAgICAgKChVTklUIElBTEwpIChNQUNIIGZyNDAwLGZyNDUwKQorCShGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpIEFVRElPKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRHUmksJEdSaiwkR1JrIikKICAgICAgICAoKyBwYWNrIEdSayBvcCBHUmkgb3BlIEdSaikKICAgICAgICAoc2VxdWVuY2UgKCkKQEAgLTM1MTIsNyArMzk3MCw3IEBACiAJCQkJKChsdCBHUmkgMCkgKGNvbnN0ICN4ODAwMDAwMDApKQogCQkJCShlbHNlIChjb25zdCAwKSkpKSkKICAgICAgICApCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpIChmcjQ1MCAodW5pdCB1LWludGVnZXIpKSkKICAgKQogKQogCkBAIC0zNTI0LDExICszOTgyLDEyIEBACiAoZGVmaW5lLXBtYWNybyAoaW50LWxvZ2ljLXItc2ltbSBuYW1lIG9wZXJhdGlvbiBvcCBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisJKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEdSaSwkczEyLCRHUmsiKQogICAgICAgICgrIHBhY2sgR1JrIG9wIEdSaSBzMTIpCiAgICAgICAgKHNldCBHUmsgKG9wZXJhdGlvbiBHUmkgczEyKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKIAkoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogICApCiApCkBAIC0zNTQxLDE0ICs0MDAwLDE1IEBACiAKIChkbmkgc2RpdmkKICAgICAgInNpZ25lZCBkaXZpc2lvbiByZWcvaW1tZWQiCi0gICAgICgoVU5JVCBNVUxULURJVikgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMikgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICgoVU5JVCBNVUxULURJVikgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMikKKyAgICAgIChGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpKQogICAgICAic2RpdmkkcGFjayAkR1JpLCRzMTIsJEdSayIKICAgICAgKCsgcGFjayBHUmsgT1BfMUUgR1JpIHMxMikKICAgICAgKHNlcXVlbmNlICgpCiAJICAgICAgIChjLWNhbGwgVk9JRCAiQGNwdUBfc2lnbmVkX2ludGVnZXJfZGl2aWRlIgogCQkgICAgICAgR1JpIHMxMiAoaW5kZXgtb2YgR1JrKSAwKQogCSAgICAgICAoY2xvYmJlciBHUmspKQotICAgICAoKGZyNDAwICh1bml0IHUtaWRpdikpCisgICAgICgoZnI0MDAgKHVuaXQgdS1pZGl2KSkgKGZyNDUwICh1bml0IHUtaWRpdikpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1pZGl2KSkgKGZyNTUwICh1bml0IHUtaWRpdikpKQogKQogCkBAIC0zNTYyLDIwICs0MDIyLDIwIEBACiAJICAgICAgIChjLWNhbGwgVk9JRCAiQGNwdUBfc2lnbmVkX2ludGVnZXJfZGl2aWRlIgogCQkgICAgICAgR1JpIHMxMiAoaW5kZXgtb2YgR1JrKSAxKQogCSAgICAgICAoY2xvYmJlciBHUmspKQotICAgICAoKGZyNDAwICh1bml0IHUtaWRpdikpCi0gICAgICAoZnI1MDAgKHVuaXQgdS1pZGl2KSkgKGZyNTUwICh1bml0IHUtaWRpdikpKQorICAgICAoKGZyNTAwICh1bml0IHUtaWRpdikpIChmcjU1MCAodW5pdCB1LWlkaXYpKSkKICkKIAogKGRuaSB1ZGl2aQogICAgICAidW5zaWduZWQgZGl2aXNpb24gcmVnL2ltbWVkIgotICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTEpKQorICAgICAoKFVOSVQgTVVMVC1ESVYpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTIpCisgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSkKICAgICAgInVkaXZpJHBhY2sgJEdSaSwkczEyLCRHUmsiCiAgICAgICgrIHBhY2sgR1JrIE9QXzFGIEdSaSBzMTIpCiAgICAgIChzZXF1ZW5jZSAoKQogCSAgICAgICAoYy1jYWxsIFZPSUQgIkBjcHVAX3Vuc2lnbmVkX2ludGVnZXJfZGl2aWRlIgogCQkgICAgICAgR1JpIHMxMiAoaW5kZXgtb2YgR1JrKSAwKQogCSAgICAgICAoY2xvYmJlciBHUmspKQotICAgICAoKGZyNDAwICh1bml0IHUtaWRpdikpCisgICAgICgoZnI0MDAgKHVuaXQgdS1pZGl2KSkgKGZyNDUwICh1bml0IHUtaWRpdikpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1pZGl2KSkgKGZyNTUwICh1bml0IHUtaWRpdikpKQogKQogCkBAIC0zNTg5LDE4ICs0MDQ5LDE4IEBACiAJICAgICAgIChjLWNhbGwgVk9JRCAiQGNwdUBfdW5zaWduZWRfaW50ZWdlcl9kaXZpZGUiCiAJCSAgICAgICBHUmkgczEyIChpbmRleC1vZiBHUmspIDEpCiAJICAgICAgIChjbG9iYmVyIEdSaykpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1pZGl2KSkKLSAgICAgIChmcjUwMCAodW5pdCB1LWlkaXYpKSAoZnI1NTAgKHVuaXQgdS1pZGl2KSkpCisgICAgICgoZnI1MDAgKHVuaXQgdS1pZGl2KSkgKGZyNTUwICh1bml0IHUtaWRpdikpKQogKQogCiAoZGVmaW5lLXBtYWNybyAobXVsdGlwbHktci1zaW1tIG5hbWUgc2lnbm9wIG9wIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBNVUxULURJVikgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMikgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICAgKChVTklUIE1VTFQtRElWKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0yKQorCShGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRHUmksJHMxMiwkR1Jkb3VibGVrIikKICAgICAgICAoKyBwYWNrIEdSZG91YmxlayBvcCBHUmkgczEyKQogICAgICAgIChzZXQgR1Jkb3VibGVrIChtdWwgREkgKHNpZ25vcCBESSBHUmkpIChzaWdub3AgREkgczEyKSkpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWltdWwpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1pbXVsKSkgKGZyNDUwICh1bml0IHUtaW11bCkpCiAJKGZyNTAwICh1bml0IHUtaW11bCkpIChmcjU1MCAodW5pdCB1LWltdWwpKSkKICAgKQogKQpAQCAtMzYxMSwxMSArNDA3MSwxMiBAQAogKGRlZmluZS1wbWFjcm8gKGludC1zaGlmdC1yLXNpbW0gbmFtZSBvcCBjb21tZW50KQogICAoZG5pICguc3ltIG5hbWUgaSkKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisJKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkpCiAgICAgICAgKC5zdHIgKC5zeW0gbmFtZSBpKSAiJHBhY2sgJEdSaSwkczEyLCRHUmsiKQogICAgICAgICgrIHBhY2sgR1JrIG9wIEdSaSBzMTIpCiAgICAgICAgKHNldCBHUmsgKG5hbWUgR1JpIChhbmQgczEyICN4MWYpKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKIAkoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogICApCiApCkBAIC0zNjI2LDExICs0MDg3LDEyIEBACiAKIChkbmkgc2NhbmkKICAgICAgInNjYW4gaW1tZWRpYXRlIgotICAgICAoKFVOSVQgU0NBTikgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICgoVU5JVCBTQ0FOKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKQorICAgICAgKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkpCiAgICAgICJzY2FuaSRwYWNrICRHUmksJHMxMiwkR1JrIgogICAgICAoKyBwYWNrIEdSayBPUF80NyBHUmkgczEyKQogICAgICAoc2Nhbi1zZW1hbnRpY3MgR1JpIHMxMiBHUmspCi0gICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWludGVnZXIpKSAoZnI1NTAgKHVuaXQgdS1pbnRlZ2VyKSkpCiApCiAKQEAgLTM2MzksNyArNDEwMSw4IEBACiAoZGVmaW5lLXBtYWNybyAoaW50LWFyaXRoLWNjLXItc2ltbSBuYW1lIG9wZXJhdGlvbiBvcCBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisJKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEdSaSwkczEwLCRHUmssJElDQ2lfMSIpCiAgICAgICAgKCsgcGFjayBHUmsgb3AgR1JpIElDQ2lfMSBzMTApCiAgICAgICAgKHNlcXVlbmNlICgoQkkgdG1wKSAoUUkgY2MpIChTSSByZXN1bHQpKQpAQCAtMzY1Miw3ICs0MTE1LDcgQEAKIAkJIChzZXQtei1hbmQtbiBjYyByZXN1bHQpCiAJCSAoc2V0IEdSayByZXN1bHQpCiAJCSAoc2V0IElDQ2lfMSBjYykpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNDUwICh1bml0IHUtaW50ZWdlcikpCiAJKGZyNTAwICh1bml0IHUtaW50ZWdlcikpIChmcjU1MCAodW5pdCB1LWludGVnZXIpKSkKICAgKQogKQpAQCAtMzY2MywxNCArNDEyNiwxNSBAQAogKGRlZmluZS1wbWFjcm8gKGludC1sb2dpYy1jYy1yLXNpbW0gbmFtZSBvcCBjb21tZW50KQogICAoZG5pICguc3ltIG5hbWUgaWNjKQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKSAoRlI0MDAtTUFKT1IgSS0xKSkKKyAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkKKwkoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSkKICAgICAgICAoLnN0ciAoLnN5bSBuYW1lIGljYykgIiRwYWNrICRHUmksJHMxMCwkR1JrLCRJQ0NpXzEiKQogICAgICAgICgrIHBhY2sgR1JrIG9wIEdSaSBJQ0NpXzEgczEwKQogICAgICAgIChzZXF1ZW5jZSAoKFNJIHRtcCkpCiAJCSAoc2V0IHRtcCAobmFtZSBHUmkgczEwKSkKIAkJIChzZXQgR1JrIHRtcCkKIAkJIChzZXQtei1hbmQtbiBJQ0NpXzEgdG1wKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKIAkoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogICApCiApCkBAIC0zNjgyLDExICs0MTQ2LDEyIEBACiAoZGVmaW5lLXBtYWNybyAobXVsdGlwbHktY2Mtci1zaW1tIG5hbWUgc2lnbm9wIG9wIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBNVUxULURJVikgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMikgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICAgKChVTklUIE1VTFQtRElWKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0yKQorCShGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRHUmksJHMxMCwkR1Jkb3VibGVrLCRJQ0NpXzEiKQogICAgICAgICgrIHBhY2sgR1Jkb3VibGVrIG9wIEdSaSBJQ0NpXzEgczEwKQogICAgICAgIChtdWx0aXBseS1jYy1zZW1hbnRpY3Mgc2lnbm9wIEdSaSBzMTAgR1Jkb3VibGVrIElDQ2lfMSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW11bCkpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWltdWwpKSAoZnI0NTAgKHVuaXQgdS1pbXVsKSkKIAkoZnI1MDAgKHVuaXQgdS1pbXVsKSkgKGZyNTUwICh1bml0IHUtaW11bCkpKQogICApCiApCkBAIC0zNjk3LDcgKzQxNjIsOCBAQAogKGRlZmluZS1wbWFjcm8gKGludC1zaGlmdC1jYy1yLXNpbW0gbmFtZSBsLXIgb3AgY29tbWVudCkKICAgKGRuaSAoLnN5bSBuYW1lIGljYykKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisJKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkpCiAgICAgICAgKC5zdHIgKC5zeW0gbmFtZSBpY2MpICIkcGFjayAkR1JpLCRzMTAsJEdSaywkSUNDaV8xIikKICAgICAgICAoKyBwYWNrIEdSayBvcCBHUmkgSUNDaV8xIHMxMCkKICAgICAgICAoc2VxdWVuY2UgKChXSSBzaGlmdCkgKFNJIHRtcCkgKFFJIGNjKSkKQEAgLTM3MDgsNyArNDE3NCw3IEBACiAJCSAoc2V0IEdSayB0bXApCiAJCSAoc2V0LXotYW5kLW4gY2MgdG1wKQogCQkgKHNldCBJQ0NpXzEgY2MpKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpIChmcjQ1MCAodW5pdCB1LWludGVnZXIpKQogCShmcjUwMCAodW5pdCB1LWludGVnZXIpKSAoZnI1NTAgKHVuaXQgdS1pbnRlZ2VyKSkpCiAgICkKICkKQEAgLTM3MjAsMTEgKzQxODYsMTIgQEAKIChkZWZpbmUtcG1hY3JvIChpbnQtYXJpdGgteC1yLXNpbW0gbmFtZSBvcGVyYXRpb24gb3AgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpIChGUjQwMC1NQUpPUiBJLTEpKQorICAgICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKQorCShGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRHUmksJHMxMCwkR1JrLCRJQ0NpXzEiKQogICAgICAgICgrIHBhY2sgR1JrIG9wIEdSaSBJQ0NpXzEgczEwKQogICAgICAgIChzZXQgR1JrICgoLnN5bSBvcGVyYXRpb24gYykgR1JpIHMxMCAoY2JpdCBJQ0NpXzEpKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKIAkoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogICApCiApCkBAIC0zNzM1LDcgKzQyMDIsOCBAQAogKGRlZmluZS1wbWFjcm8gKGludC1hcml0aC14LWNjLXItc2ltbSBuYW1lIG9wZXJhdGlvbiBvcCBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKEZSNDAwLU1BSk9SIEktMSkpCisgICAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisJKEZSNDAwLU1BSk9SIEktMSkgKEZSNDUwLU1BSk9SIEktMSkpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEdSaSwkczEwLCRHUmssJElDQ2lfMSIpCiAgICAgICAgKCsgcGFjayBHUmsgb3AgR1JpIElDQ2lfMSBzMTApCiAgICAgICAgKHNlcXVlbmNlICgoV0kgdG1wKSAoUUkgY2MpKQpAQCAtMzc0Niw3ICs0MjE0LDcgQEAKIAkJIChzZXQtei1hbmQtbiBjYyB0bXApCiAJCSAoc2V0IEdSayB0bXApCiAJCSAoc2V0IElDQ2lfMSBjYykpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNDUwICh1bml0IHUtaW50ZWdlcikpCiAJKGZyNTAwICh1bml0IHUtaW50ZWdlcikpIChmcjU1MCAodW5pdCB1LWludGVnZXIpKSkKICAgKQogKQpAQCAtMzc1OCw3ICs0MjI2LDggQEAKIAogKGRuaSBjbXBiCiAgICAgICJDb21wYXJlIGJ5dGVzIgotICAgICAoKFVOSVQgSUFMTCkgKEZSNDAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKE1BQ0ggZnI0MDAsZnI1NTApKQorICAgICAoKFVOSVQgSUFMTCkgKE1BQ0ggZnI0MDAsZnI0NTAsZnI1NTApIChGUjU1MC1NQUpPUiBJLTEpCisgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSkKICAgICAgImNtcGIkcGFjayAkR1JpLCRHUmosJElDQ2lfMSIKICAgICAgKCsgcGFjayAoR1JrLW51bGwpIE9QXzAwIEdSaSBJQ0NpXzEgT1BFMl8wQyBHUmopCiAgICAgIChzZXF1ZW5jZSAoKFFJIGNjKSkKQEAgLTM3NjcsMTIgKzQyMzYsMTQgQEAKIAkgICAgICAgKHNldC12IGNjIChlcSAoYW5kIEdSaSAjeDAwMDBmZjAwKSAoYW5kIEdSaiAjeDAwMDBmZjAwKSkpCiAJICAgICAgIChzZXQtYyBjYyAoZXEgKGFuZCBHUmkgI3gwMDAwMDBmZikgKGFuZCBHUmogI3gwMDAwMDBmZikpKQogCSAgICAgICAoc2V0IElDQ2lfMSBjYykpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQorICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpIChmcjQ1MCAodW5pdCB1LWludGVnZXIpKQorICAgICAgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogKQogCiAoZG5pIGNtcGJhCiAgICAgICJPUiBvZiBDb21wYXJlIGJ5dGVzIgotICAgICAoKFVOSVQgSUFMTCkgKEZSNDAwLU1BSk9SIEktMSkgKEZSNTUwLU1BSk9SIEktMSkgKE1BQ0ggZnI0MDAsZnI1NTApKQorICAgICAoKFVOSVQgSUFMTCkgKE1BQ0ggZnI0MDAsZnI0NTAsZnI1NTApIChGUjU1MC1NQUpPUiBJLTEpCisgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSkKICAgICAgImNtcGJhJHBhY2sgJEdSaSwkR1JqLCRJQ0NpXzEiCiAgICAgICgrIHBhY2sgKEdSay1udWxsKSBPUF8wMCBHUmkgSUNDaV8xIE9QRTJfMEQgR1JqKQogICAgICAoc2VxdWVuY2UgKChRSSBjYykpCkBAIC0zNzg1LDQ5ICs0MjU2LDU0IEBACiAJCQkJCSAoZXEgKGFuZCBHUmkgI3gwMDAwMDBmZikKIAkJCQkJICAgIChhbmQgR1JqICN4MDAwMDAwZmYpKSkpKSkKIAkgICAgICAgKHNldCBJQ0NpXzEgY2MpKQotICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpIChmcjU1MCAodW5pdCB1LWludGVnZXIpKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWludGVnZXIpKSAoZnI0NTAgKHVuaXQgdS1pbnRlZ2VyKSkKKyAgICAgIChmcjU1MCAodW5pdCB1LWludGVnZXIpKSkKICkKIAogOyBGb3JtYXQ6IExvYWQgaW1tZWRpYXRlCiA7CiAoZG5pIHNldGxvCiAgICAgICJzZXQgbG93IG9yZGVyIGJpdHMiCi0gICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKSAoRlI0MDAtTUFKT1IgSS0xKSkKKyAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSkKICAgICAgInNldGxvJHBhY2sgJHVsbzE2LCRHUmtsbyIKICAgICAgKCsgcGFjayBHUmsgT1BfM0QgKG1pc2MtbnVsbC00KSB1MTYpCiAgICAgIChzZXQgR1JrbG8gdTE2KQotICAgICAoKGZyNDAwICh1bml0IHUtc2V0LWhpbG8pKQorICAgICAoKGZyNDAwICh1bml0IHUtc2V0LWhpbG8pKSAoZnI0NTAgKHVuaXQgdS1zZXQtaGlsbykpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1zZXQtaGlsbykpIChmcjU1MCAodW5pdCB1LXNldC1oaWxvKSkpCiApCiAKIChkbmkgc2V0aGkKICAgICAgInNldCBoaWdoIG9yZGVyIGJpdHMiCi0gICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKSAoRlI0MDAtTUFKT1IgSS0xKSkKKyAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSkKICAgICAgInNldGhpJHBhY2sgJHVoaTE2LCRHUmtoaSIKICAgICAgKCsgcGFjayBHUmtoaSBPUF8zRSAobWlzYy1udWxsLTQpIHUxNikKICAgICAgKHNldCBHUmtoaSB1MTYpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1zZXQtaGlsbykpCisgICAgICgoZnI0MDAgKHVuaXQgdS1zZXQtaGlsbykpIChmcjQ1MCAodW5pdCB1LXNldC1oaWxvKSkKICAgICAgIChmcjUwMCAodW5pdCB1LXNldC1oaWxvKSkgKGZyNTUwICh1bml0IHUtc2V0LWhpbG8pKSkKICkKIAogKGRuaSBzZXRsb3MKICAgICAgInNldCBsb3cgb3JkZXIgYml0cyBhbmQgZXh0ZW5kIHNpZ24iCi0gICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI1NTAtTUFKT1IgSS0xKSAoRlI0MDAtTUFKT1IgSS0xKSkKKyAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjU1MC1NQUpPUiBJLTEpCisgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSkKICAgICAgInNldGxvcyRwYWNrICRzbG8xNiwkR1JrIgogICAgICAoKyBwYWNrIEdSayBPUF8zRiAobWlzYy1udWxsLTQpIHMxNikKICAgICAgKHNldCBHUmsgczE2KQotICAgICAoKGZyNDAwICh1bml0IHUtaW50ZWdlcikpCisgICAgICgoZnI0MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNDUwICh1bml0IHUtaW50ZWdlcikpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1pbnRlZ2VyKSkgKGZyNTUwICh1bml0IHUtaW50ZWdlcikpKQogKQogCiAoZGVmaW5lLXBtYWNybyAobG9hZC1nci1yIG5hbWUgbW9kZSBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTIpKQorICAgICAgICgoVU5JVCBMT0FEKSAoRlI1NTAtTUFKT1IgSS0zKSAoRlI1MDAtTUFKT1IgSS0yKQorCShGUjQwMC1NQUpPUiBJLTIpIChGUjQ1MC1NQUpPUiBJLTIpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrIEAoJEdSaSwkR1JqKSwkR1JrIikKICAgICAgICAoKyBwYWNrIEdSayBvcCBHUmkgb3BlIEdSaikKICAgICAgICAoc2V0IEdSayAoYy1jYWxsIG1vZGUgKC5zdHIgIkBjcHVAX3JlYWRfbWVtXyIgbW9kZSkgcGMgKGFkZCBHUmkgR1JqKSkpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNDUwICh1bml0IHUtZ3ItbG9hZCkpCiAJKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKICAgKQogKQpAQCAtMzg0MSwxMSArNDMxNywxMiBAQAogKGRlZmluZS1wbWFjcm8gKGxvYWQtZnItciBuYW1lIG1vZGUgb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBMT0FEKSAoRlI1NTAtTUFKT1IgSS0zKSAoRlI1MDAtTUFKT1IgSS0yKSAoRlI0MDAtTUFKT1IgSS0yKSBGUi1BQ0NFU1MpCisgICAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpCisJKEZSNDAwLU1BSk9SIEktMikgKEZSNDUwLU1BSk9SIEktMikgRlItQUNDRVNTKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrIEAoJEdSaSwkR1JqKSwkRlJpbnRrIikKICAgICAgICAoKyBwYWNrIEZSaW50ayBvcCBHUmkgb3BlIEdSaikKICAgICAgICAoc2V0IEZSaW50ayAoYy1jYWxsIG1vZGUgKC5zdHIgIkBjcHVAX3JlYWRfbWVtXyIgbW9kZSkgcGMgKGFkZCBHUmkgR1JqKSkpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWZyLWxvYWQpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNDUwICh1bml0IHUtZnItbG9hZCkpCiAJKGZyNTAwICh1bml0IHUtZnItbG9hZCkpIChmcjU1MCAodW5pdCB1LWZyLWxvYWQpKSkKICAgKQogKQpAQCAtMzk0MCw3ICs0NDE3LDggQEAKIAkJbmFtZSBub3RfZ3IgbW9kZSBvcCBvcGUgcmVndHlwZSBhdHRyIHByb2ZpbGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTIpIGF0dHIpCisgICAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpCisJKEZSNDAwLU1BSk9SIEktMikgKEZSNDUwLU1BSk9SIEktMikgYXR0cikKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayBAKCRHUmksJEdSaiksJCIgcmVndHlwZSAiZG91YmxlayIpCiAgICAgICAgKCsgcGFjayAoLnN5bSByZWd0eXBlIGRvdWJsZWspIG9wIEdSaSBvcGUgR1JqKQogICAgICAgIChzZXF1ZW5jZSAoKFdJIGFkZHJlc3MpKQpAQCAtMzk1MCwxMCArNDQyOCwxMiBAQAogKQogCiAobG9hZC1kb3VibGUtci1yIGxkZCAgMCBESSBPUF8wMiBPUEUxXzA1IEdSICBOQQotCQkgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZ3ItbG9hZCkpKQorCQkgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1nci1sb2FkKSkgCisJCSAgKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKIAkJICJMb2FkIGRvdWJsZSB3b3JkIikKIChsb2FkLWRvdWJsZS1yLXIgbGRkZiAxIERGIE9QXzAyIE9QRTFfMEIgRlIgIEZSLUFDQ0VTUwotCQkgKChmcjQwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI1MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZnItbG9hZCkpKQorCQkgKChmcjQwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1mci1sb2FkKSkKKwkJICAoZnI1MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZnItbG9hZCkpKQogCQkgIkxvYWQgZG91YmxlIGZsb2F0IikKIChsb2FkLWRvdWJsZS1yLXIgbGRkYyAxIERJIE9QXzAyIE9QRTFfMEUgQ1BSIChNQUNIIGZydikgKCkKIAkJICJMb2FkIGNvcHJvY2Vzc29yIGRvdWJsZSIpCkBAIC00MDQ0LDExICs0NTI0LDEyIEBACiAoZGVmaW5lLXBtYWNybyAobG9hZC1nci11IG5hbWUgbW9kZSBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTIpKQorICAgICAgICgoVU5JVCBMT0FEKSAoRlI1NTAtTUFKT1IgSS0zKSAoRlI1MDAtTUFKT1IgSS0yKQorCShGUjQwMC1NQUpPUiBJLTIpIChGUjQ1MC1NQUpPUiBJLTIpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrIEAoJEdSaSwkR1JqKSwkR1JrIikKICAgICAgICAoKyBwYWNrIEdSayBvcCBHUmkgb3BlIEdSaikKICAgICAgICAobG9hZC1nci11LXNlbWFudGljcyBtb2RlKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1nci1sb2FkKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjQ1MCAodW5pdCB1LWdyLWxvYWQpKQogCShmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCiAgICkKICkKQEAgLTQwODksMTEgKzQ1NzAsMTIgQEAKIChkZWZpbmUtcG1hY3JvIChsb2FkLWZyLXUgbmFtZSBtb2RlIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgTE9BRCkgKEZSNTUwLU1BSk9SIEktMykgKEZSNTAwLU1BSk9SIEktMikgKEZSNDAwLU1BSk9SIEktMikgRlItQUNDRVNTKQorICAgICAgICgoVU5JVCBMT0FEKSAoRlI1NTAtTUFKT1IgSS0zKSAoRlI1MDAtTUFKT1IgSS0yKQorCShGUjQwMC1NQUpPUiBJLTIpIChGUjQ1MC1NQUpPUiBJLTIpIEZSLUFDQ0VTUykKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayBAKCRHUmksJEdSaiksJEZSaW50ayIpCiAgICAgICAgKCsgcGFjayBGUmludGsgb3AgR1JpIG9wZSBHUmopCiAgICAgICAgKGxvYWQtbm9uLWdyLXUtc2VtYW50aWNzIG1vZGUgRlJpbnQpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWZyLWxvYWQpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNDUwICh1bml0IHUtZnItbG9hZCkpCiAJKGZyNTAwICh1bml0IHUtZnItbG9hZCkpIChmcjU1MCAodW5pdCB1LWZyLWxvYWQpKSkKICAgKQogKQpAQCAtNDE0NCwxMSArNDYyNiwxMiBAQAogKGRlZmluZS1wbWFjcm8gKGxvYWQtZG91YmxlLWdyLXUgbmFtZSBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTIpKQorICAgICAgICgoVU5JVCBMT0FEKSAoRlI1NTAtTUFKT1IgSS0zKSAoRlI1MDAtTUFKT1IgSS0yKQorCShGUjQwMC1NQUpPUiBJLTIpIChGUjQ1MC1NQUpPUiBJLTIpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrIEAoJEdSaSwkR1JqKSwkR1Jkb3VibGVrIikKICAgICAgICAoKyBwYWNrIEdSZG91YmxlayBvcCBHUmkgb3BlIEdSaikKICAgICAgICAobG9hZC1kb3VibGUtZ3ItdS1zZW1hbnRpY3MpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNDUwICh1bml0IHUtZ3ItbG9hZCkpCiAJKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKICAgKQogKQpAQCAtNDE4Miw3ICs0NjY1LDggQEAKIAkJbmFtZSBtb2RlIG9wIG9wZSByZWd0eXBlIGF0dHIgcHJvZmlsZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgTE9BRCkgKEZSNTUwLU1BSk9SIEktMykgKEZSNTAwLU1BSk9SIEktMikgKEZSNDAwLU1BSk9SIEktMikgYXR0cikKKyAgICAgICAoKFVOSVQgTE9BRCkgKEZSNTUwLU1BSk9SIEktMykgKEZSNTAwLU1BSk9SIEktMikKKwkoRlI0MDAtTUFKT1IgSS0yKSAoRlI0NTAtTUFKT1IgSS0yKSBhdHRyKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrIEAoJEdSaSwkR1JqKSwkIiByZWd0eXBlICJkb3VibGVrIikKICAgICAgICAoKyBwYWNrICguc3ltIHJlZ3R5cGUgZG91Ymxlaykgb3AgR1JpIG9wZSBHUmopCiAgICAgICAgKGxvYWQtZG91YmxlLW5vbi1nci11LXNlbWFudGljcyBtb2RlIHJlZ3R5cGUpCkBAIC00MTkxLDcgKzQ2NzUsOCBAQAogKQogCiAobG9hZC1kb3VibGUtbm9uLWdyLXUgbGRkZnUgREYgT1BfMDIgT1BFMV8xQiBGUiAgRlItQUNDRVNTCi0JCSAgICAgICgoZnI0MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTAwICh1bml0IHUtZnItbG9hZCkpIChmcjU1MCAodW5pdCB1LWZyLWxvYWQpKSkKKwkJICAgICAgKChmcjQwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1mci1sb2FkKSkKKwkJICAgICAgIChmcjUwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1mci1sb2FkKSkpCiAJCSAgICAgICJMb2FkIGRvdWJsZSBmbG9hdCwgdXBkYXRlIGluZGV4IikKIChsb2FkLWRvdWJsZS1ub24tZ3ItdSBsZGRjdSBESSBPUF8wMiBPUEUxXzFFIENQUiAoTUFDSCBmcnYpCiAJCSAgICAgICgpICJMb2FkIGNvcHJvY2Vzc29yIGRvdWJsZSBmbG9hdCwgdXBkYXRlIGluZGV4IikKQEAgLTQyODksNyArNDc3NCw4IEBACiAoZGVmaW5lLXBtYWNybyAobG9hZC1yLXNpbW0gbmFtZSBtb2RlIG9wIHJlZ3R5cGUgYXR0ciBwcm9maWxlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBMT0FEKSAoRlI1NTAtTUFKT1IgSS0zKSAoRlI1MDAtTUFKT1IgSS0yKSAoRlI0MDAtTUFKT1IgSS0yKSBhdHRyKQorICAgICAgICgoVU5JVCBMT0FEKSAoRlI1NTAtTUFKT1IgSS0zKSAoRlI1MDAtTUFKT1IgSS0yKQorCShGUjQwMC1NQUpPUiBJLTIpIChGUjQ1MC1NQUpPUiBJLTIpIGF0dHIpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgQCgkR1JpLCRkMTIpLCQiIHJlZ3R5cGUgImsiKQogICAgICAgICgrIHBhY2sgKC5zeW0gcmVndHlwZSBrKSBvcCBHUmkgZDEyKQogICAgICAgIChzZXQgKC5zeW0gcmVndHlwZSBrKQpAQCAtNDI5OSwyOSArNDc4NSwzNyBAQAogKQogCiAobG9hZC1yLXNpbW0gbGRzYmkgIFFJIE9QXzMwIEdSIE5BCi0JICAgICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCisJICAgICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjQ1MCAodW5pdCB1LWdyLWxvYWQpKQorCSAgICAgIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCiAJICAgICAiTG9hZCAgIHNpZ25lZCBieXRlIikKIChsb2FkLXItc2ltbSBsZHNoaSAgSEkgT1BfMzEgR1IgTkEKLQkgICAgICgoZnI0MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKKwkgICAgICgoZnI0MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNDUwICh1bml0IHUtZ3ItbG9hZCkpCisJICAgICAgKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKIAkgICAgICJMb2FkICAgc2lnbmVkIGhhbGYiKQogKGxvYWQtci1zaW1tIGxkaSAgICBTSSBPUF8zMiBHUiBOQQotCSAgICAgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZ3ItbG9hZCkpKQorCSAgICAgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1nci1sb2FkKSkKKwkgICAgICAoZnI1MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZ3ItbG9hZCkpKQogCSAgICAgIkxvYWQgICAgICAgICAgd29yZCIpCiAobG9hZC1yLXNpbW0gbGR1YmkgVVFJIE9QXzM1IEdSIE5BCi0JICAgICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCisJICAgICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjQ1MCAodW5pdCB1LWdyLWxvYWQpKQorCSAgICAgIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCiAJICAgICAiTG9hZCB1bnNpZ25lZCBieXRlIikKIChsb2FkLXItc2ltbSBsZHVoaSBVSEkgT1BfMzYgR1IgTkEKLQkgICAgICgoZnI0MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKKwkgICAgICgoZnI0MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNDUwICh1bml0IHUtZ3ItbG9hZCkpCisJICAgICAgKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKIAkgICAgICJMb2FkIHVuc2lnbmVkIGhhbGYiKQogCiAobG9hZC1yLXNpbW0gbGRiZmkgVVFJIE9QXzM4IEZSaW50IEZSLUFDQ0VTUwotCSAgICAgKChmcjQwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI1MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZnItbG9hZCkpKQorCSAgICAgKChmcjQwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1mci1sb2FkKSkKKwkgICAgICAoZnI1MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZnItbG9hZCkpKQogCSAgICAgIkxvYWQgYnl0ZSBmbG9hdCIpCiAobG9hZC1yLXNpbW0gbGRoZmkgVUhJIE9QXzM5IEZSaW50IEZSLUFDQ0VTUwotCSAgICAgKChmcjQwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI1MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZnItbG9hZCkpKQorCSAgICAgKChmcjQwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1mci1sb2FkKSkKKwkgICAgICAoZnI1MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZnItbG9hZCkpKQogCSAgICAgIkxvYWQgaGFsZiBmbG9hdCIpCiAobG9hZC1yLXNpbW0gbGRmaSAgIFNJIE9QXzNBIEZSaW50IEZSLUFDQ0VTUwotCSAgICAgKChmcjQwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI1MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZnItbG9hZCkpKQorCSAgICAgKChmcjQwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1mci1sb2FkKSkKKwkgICAgICAoZnI1MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZnItbG9hZCkpKQogCSAgICAgIkxvYWQgd29yZCBmbG9hdCIpCiAKIChkZWZpbmUtcG1hY3JvIChuZS1sb2FkLXItc2ltbQpAQCAtNDM2Miw3ICs0ODU2LDggQEAKIAkJbmFtZSBub3RfZ3IgbW9kZSBvcCByZWd0eXBlIGF0dHIgcHJvZmlsZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgTE9BRCkgKEZSNTUwLU1BSk9SIEktMykgKEZSNTAwLU1BSk9SIEktMikgKEZSNDAwLU1BSk9SIEktMikgYXR0cikKKyAgICAgICAoKFVOSVQgTE9BRCkgKEZSNTUwLU1BSk9SIEktMykgKEZSNTAwLU1BSk9SIEktMikKKwkoRlI0MDAtTUFKT1IgSS0yKSAoRlI0NTAtTUFKT1IgSS0yKSBhdHRyKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrIEAoJEdSaSwkZDEyKSwkIiByZWd0eXBlICJkb3VibGVrIikKICAgICAgICAoKyBwYWNrICguc3ltIHJlZ3R5cGUgZG91Ymxlaykgb3AgR1JpIGQxMikKICAgICAgICAoc2VxdWVuY2UgKChXSSBhZGRyZXNzKSkKQEAgLTQzNzIsMTAgKzQ4NjcsMTIgQEAKICkKIAogKGxvYWQtZG91YmxlLXItc2ltbSBsZGRpICAwIERJIE9QXzMzIEdSIE5BCi0JCSAgICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCisJCSAgICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjQ1MCAodW5pdCB1LWdyLWxvYWQpKQorCQkgICAgIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCiAJCSAgICAiTG9hZCBkb3VibGUgd29yZCIpCiAobG9hZC1kb3VibGUtci1zaW1tIGxkZGZpIDEgREYgT1BfM0IgRlIgRlItQUNDRVNTCi0JCSAgICAoKGZyNDAwICh1bml0IHUtZnItbG9hZCkpIChmcjUwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1mci1sb2FkKSkpCisJCSAgICAoKGZyNDAwICh1bml0IHUtZnItbG9hZCkpIChmcjQ1MCAodW5pdCB1LWZyLWxvYWQpKQorCQkgICAgIChmcjUwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1mci1sb2FkKSkpCiAJCSAgICAiTG9hZCBkb3VibGUgZmxvYXQiKQogCiAoZGVmaW5lLXBtYWNybyAobmUtbG9hZC1kb3VibGUtci1zaW1tCkBAIC00NDM4LDcgKzQ5MzUsOCBAQAogKGRlZmluZS1wbWFjcm8gKHN0b3JlLXItciBuYW1lIG1vZGUgb3Agb3BlIHJlZyBhdHRyIHByb2ZpbGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIFNUT1JFKSAoRlI1NTAtTUFKT1IgSS00KSAoRlI1MDAtTUFKT1IgSS0zKSAoRlI0MDAtTUFKT1IgSS0zKSBhdHRyKQorICAgICAgICgoVU5JVCBTVE9SRSkgKEZSNTUwLU1BSk9SIEktNCkgKEZSNTAwLU1BSk9SIEktMykKKwkoRlI0MDAtTUFKT1IgSS0zKSAoRlI0NTAtTUFKT1IgSS0zKSBhdHRyKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICQiIHJlZyAiayxAKCRHUmksJEdSaikiKQogICAgICAgICgrIHBhY2sgKC5zeW0gcmVnIGspIG9wIEdSaSBvcGUgR1JqKQogICAgICAgIChjLWNhbGwgVk9JRCAoLnN0ciAiQGNwdUBfd3JpdGVfbWVtXyIgbW9kZSkKQEAgLTQ0NDgsNTcgKzQ5NDYsMzMgQEAKICkKIAogKHN0b3JlLXItciBzdGIgICBRSSBPUF8wMyBPUEUxXzAwIEdSIE5BCi0JICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQorCSAgICgoZnI0MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWdyLXN0b3JlKSkKKwkgICAgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQogCSAgICJTdG9yZSB1bnNpZ25lZCBieXRlIikKIChzdG9yZS1yLXIgc3RoICAgSEkgT1BfMDMgT1BFMV8wMSBHUiBOQQotCSAgICgoZnI0MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjUwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZ3Itc3RvcmUpKSkKKwkgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1nci1zdG9yZSkpCisJICAgIChmcjUwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZ3Itc3RvcmUpKSkKIAkgICAiU3RvcmUgdW5zaWduZWQgaGFsZiIpCiAoc3RvcmUtci1yIHN0ICAgIFNJIE9QXzAzIE9QRTFfMDIgR1IgTkEKLQkgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCisJICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNDUwICh1bml0IHUtZ3Itc3RvcmUpKQorCSAgICAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCiAJICAgIlN0b3JlICAgICAgICAgIHdvcmQiKQogCiAoc3RvcmUtci1yIHN0YmYgIFFJIE9QXzAzIE9QRTFfMDggRlJpbnQgRlItQUNDRVNTCi0JICAgKChmcjQwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQorCSAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWZyLXN0b3JlKSkKKwkgICAgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQogCSAgICJTdG9yZSBieXRlIGZsb2F0IikKIChzdG9yZS1yLXIgc3RoZiAgSEkgT1BfMDMgT1BFMV8wOSBGUmludCBGUi1BQ0NFU1MKLQkgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWZyLXN0b3JlKSkpCisJICAgKChmcjQwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNDUwICh1bml0IHUtZnItc3RvcmUpKQorCSAgICAoZnI1MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWZyLXN0b3JlKSkpCiAJICAgIlN0b3JlIGhhbGYgZmxvYXQiKQogKHN0b3JlLXItciBzdGYgICBTSSBPUF8wMyBPUEUxXzBBIEZSaW50IEZSLUFDQ0VTUwotCSAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKKwkgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1mci1zdG9yZSkpCisJICAgIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKIAkgICAiU3RvcmUgd29yZCBmbG9hdCIpCiAKIChzdG9yZS1yLXIgc3RjICAgU0kgT1BfMDMgT1BFMV8yNSBDUFIgKE1BQ0ggZnJ2KSAoKSAiU3RvcmUgY29wcm9jZXNzb3Igd29yZCIpCiAKLShkZWZpbmUtcG1hY3JvIChyLXN0b3JlIG5hbWUgbW9kZSBvcCBvcGUgcmVnIHNpemUgaXNfZmxvYXQgcHJvZmlsZSBjb21tZW50KQotICAoZG5pIG5hbWUKLSAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgU1RPUkUpIChGUjUwMC1NQUpPUiBJLTMpIChNQUNIIGZydikpCi0gICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJCIgcmVnICJrLEAoJEdSaSwkR1JqKSIpCi0gICAgICAgKCsgcGFjayAoLnN5bSByZWcgaykgb3AgR1JpIG9wZSBHUmopCi0gICAgICAgKHNlcXVlbmNlICgoV0kgYWRkcmVzcykpCi0JCSAoc2V0IGFkZHJlc3MgKGFkZCBHUmkgR1JqKSkKLQkJIChjLWNhbGwgVk9JRCAoLnN0ciAiQGNwdUBfd3JpdGVfbWVtXyIgbW9kZSkKLQkJCSBwYyBhZGRyZXNzICguc3ltIHJlZyBrKSkKLQkJIChjLWNhbGwgVk9JRCAiQGNwdUBfY2hlY2tfcmVjb3ZlcmluZ19zdG9yZSIKLQkJCSBhZGRyZXNzIChpbmRleC1vZiAoLnN5bSByZWcgaykpIHNpemUgaXNfZmxvYXQpKQotICAgICAgIHByb2ZpbGUKLSAgKQotKQotCi0oci1zdG9yZSByc3RiICBRSSBPUF8wMyBPUEUxXzIwIEdSIDEgMAotCSAoKGZyNTAwICh1bml0IHUtZ3Itci1zdG9yZSkpKSAiU3RvcmUgdW5zaWduZWQgYnl0ZSIpCi0oci1zdG9yZSByc3RoICBISSBPUF8wMyBPUEUxXzIxIEdSIDIgMAotCSAoKGZyNTAwICh1bml0IHUtZ3Itci1zdG9yZSkpKSAiU3RvcmUgdW5zaWduZWQgaGFsZiIpCi0oci1zdG9yZSByc3QgICBTSSBPUF8wMyBPUEUxXzIyIEdSIDQgMAotCSAoKGZyNTAwICh1bml0IHUtZ3Itci1zdG9yZSkpKSAiU3RvcmUgICAgICAgICAgd29yZCIpCi0KLShyLXN0b3JlIHJzdGJmIFFJIE9QXzAzIE9QRTFfMjggRlJpbnQgMSAxCi0JICgoZnI1MDAgKHVuaXQgdS1mci1yLXN0b3JlKSkpICJTdG9yZSBieXRlIGZsb2F0IikKLShyLXN0b3JlIHJzdGhmIEhJIE9QXzAzIE9QRTFfMjkgRlJpbnQgMiAxCi0JICgoZnI1MDAgKHVuaXQgdS1mci1yLXN0b3JlKSkpICJTdG9yZSBoYWxmIGZsb2F0IikKLShyLXN0b3JlIHJzdGYgIFNJIE9QXzAzIE9QRTFfMkEgRlJpbnQgNCAxCi0JICgoZnI1MDAgKHVuaXQgdS1mci1yLXN0b3JlKSkpICJTdG9yZSB3b3JkIGZsb2F0IikKLQogOyBTZW1hbnRpY3MgZm9yIGEgc3RvcmUtZG91YmxlIGluc24KIDsKIChkZWZpbmUtcG1hY3JvIChzdG9yZS1kb3VibGUtc2VtYW50aWNzIG1vZGUgcmVndHlwZSBhZGRyZXNzIGFyZykKQEAgLTQ1MTEsNyArNDk4NSw4IEBACiAoZGVmaW5lLXBtYWNybyAoc3RvcmUtZG91YmxlLXItciBuYW1lIG1vZGUgb3Agb3BlIHJlZ3R5cGUgYXR0ciBwcm9maWxlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBTVE9SRSkgKEZSNTUwLU1BSk9SIEktNCkgKEZSNTAwLU1BSk9SIEktMykgKEZSNDAwLU1BSk9SIEktMykgYXR0cikKKyAgICAgICAoKFVOSVQgU1RPUkUpIChGUjU1MC1NQUpPUiBJLTQpIChGUjUwMC1NQUpPUiBJLTMpCisJKEZSNDAwLU1BSk9SIEktMykgKEZSNDUwLU1BSk9SIEktMykgYXR0cikKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkIiByZWd0eXBlICJkb3VibGVrLEAoJEdSaSwkR1JqKSIpCiAgICAgICAgKCsgcGFjayAoLnN5bSByZWd0eXBlIGRvdWJsZWspIG9wIEdSaSBvcGUgR1JqKQogICAgICAgIChzZXF1ZW5jZSAoKFdJIGFkZHJlc3MpKQpAQCAtNDUyMSwzNSArNDk5NiwxNyBAQAogKQogCiAoc3RvcmUtZG91YmxlLXItciBzdGQgIERJIE9QXzAzIE9QRTFfMDMgR1IgIE5BCi0JCSAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQorCQkgICgoZnI0MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWdyLXN0b3JlKSkKKwkJICAgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQogCQkgICJTdG9yZSBkb3VibGUgd29yZCIpCiAoc3RvcmUtZG91YmxlLXItciBzdGRmIERGIE9QXzAzIE9QRTFfMEIgRlIgIEZSLUFDQ0VTUwotCQkgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKKwkJICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1mci1zdG9yZSkpCisJCSAgIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKIAkJICAiU3RvcmUgZG91YmxlIGZsb2F0IikKIAogKHN0b3JlLWRvdWJsZS1yLXIgc3RkYyBESSBPUF8wMyBPUEUxXzI2IENQUiAoTUFDSCBmcnYpCiAJCSAgKCkgIlN0b3JlIGNvcHJvY2Vzc29yIGRvdWJsZSB3b3JkIikKIAotKGRlZmluZS1wbWFjcm8gKHItc3RvcmUtZG91YmxlCi0JCW5hbWUgbW9kZSBvcCBvcGUgcmVndHlwZSBpc19mbG9hdCBhdHRyIHByb2ZpbGUgY29tbWVudCkKLSAgKGRuaSBuYW1lCi0gICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIFNUT1JFKSAoRlI1MDAtTUFKT1IgSS0zKSAoTUFDSCBmcnYpIGF0dHIpCi0gICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJCIgcmVndHlwZSAiZG91YmxlayxAKCRHUmksJEdSaikiKQotICAgICAgICgrIHBhY2sgKC5zeW0gcmVndHlwZSBkb3VibGVrKSBvcCBHUmkgb3BlIEdSaikKLSAgICAgICAoc2VxdWVuY2UgKChXSSBhZGRyZXNzKSkKLQkJIChzdG9yZS1kb3VibGUtc2VtYW50aWNzIG1vZGUgcmVndHlwZSBhZGRyZXNzIEdSaikKLQkJIChjLWNhbGwgVk9JRCAiQGNwdUBfY2hlY2tfcmVjb3ZlcmluZ19zdG9yZSIKLQkJCSBhZGRyZXNzIChpbmRleC1vZiAoLnN5bSByZWd0eXBlIGRvdWJsZWspKSA4IGlzX2Zsb2F0KSkKLSAgICAgICBwcm9maWxlCi0gICkKLSkKLQotKHItc3RvcmUtZG91YmxlIHJzdGQgIERJIE9QXzAzIE9QRTFfMjMgR1IgMCBOQQotCQkoKGZyNTAwICh1bml0IHUtZ3Itci1zdG9yZSkpKSAiU3RvcmUgZG91YmxlIHdvcmQiKQotKHItc3RvcmUtZG91YmxlIHJzdGRmIERGIE9QXzAzIE9QRTFfMkIgRlIgMSBGUi1BQ0NFU1MKLQkJKChmcjUwMCAodW5pdCB1LWZyLXItc3RvcmUpKSkgIlN0b3JlIGRvdWJsZSBmbG9hdCIpCi0KIDsgU2VtYW50aWNzIGZvciBhIHN0b3JlLXF1YWQgaW5zbgogOwogKGRlZmluZS1wbWFjcm8gKHN0b3JlLXF1YWQtc2VtYW50aWNzIHJlZ3R5cGUgYWRkcmVzcyBhcmcpCkBAIC00NTc5LDI5ICs1MDM2LDExIEBACiAoc3RvcmUtcXVhZC1yLXIgc3RxYyAgT1BfMDMgT1BFMV8yNyBDUFIgICBOQQogCQkoKSAiU3RvcmUgY29wcm9jZXNzb3IgcXVhZCB3b3JkIikKIAotKGRlZmluZS1wbWFjcm8gKHItc3RvcmUtcXVhZCBuYW1lIG9wIG9wZSByZWd0eXBlIGlzX2Zsb2F0IGF0dHIgcHJvZmlsZSBjb21tZW50KQotICAoZG5pIG5hbWUKLSAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgU1RPUkUpIChGUjUwMC1NQUpPUiBJLTMpIChNQUNIIGZydikgYXR0cikKLSAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkIiByZWd0eXBlICJrLEAoJEdSaSwkR1JqKSIpCi0gICAgICAgKCsgcGFjayAoLnN5bSByZWd0eXBlIGspIG9wIEdSaSBvcGUgR1JqKQotICAgICAgIChzZXF1ZW5jZSAoKFdJIGFkZHJlc3MpKQotCQkgKHN0b3JlLXF1YWQtc2VtYW50aWNzIHJlZ3R5cGUgYWRkcmVzcyBHUmopCi0JCSAoYy1jYWxsIFZPSUQgIkBjcHVAX2NoZWNrX3JlY292ZXJpbmdfc3RvcmUiCi0JCQkgYWRkcmVzcyAoaW5kZXgtb2YgKC5zeW0gcmVndHlwZSBrKSkgMTYgaXNfZmxvYXQpKQotICAgICAgIHByb2ZpbGUKLSAgKQotKQotCi0oci1zdG9yZS1xdWFkIHJzdHEgIE9QXzAzIE9QRTFfMjQgR1IgICAgMCBOQQotCSAgICAgICgoZnI1MDAgKHVuaXQgdS1nci1yLXN0b3JlKSkpICJTdG9yZSBxdWFkIHdvcmQiKQotKHItc3RvcmUtcXVhZCByc3RxZiBPUF8wMyBPUEUxXzJDIEZSaW50IDEgRlItQUNDRVNTCi0JICAgICAgKChmcjUwMCAodW5pdCB1LWZyLXItc3RvcmUpKSkgIlN0b3JlIHF1YWQgZmxvYXQiKQotCiAoZGVmaW5lLXBtYWNybyAoc3RvcmUtci1yLXUgbmFtZSBtb2RlIG9wIG9wZSByZWd0eXBlIGF0dHIgcHJvZmlsZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgU1RPUkUpIChGUjU1MC1NQUpPUiBJLTQpIChGUjUwMC1NQUpPUiBJLTMpIChGUjQwMC1NQUpPUiBJLTMpIGF0dHIpCisgICAgICAgKChVTklUIFNUT1JFKSAoRlI1NTAtTUFKT1IgSS00KSAoRlI1MDAtTUFKT1IgSS0zKQorCShGUjQwMC1NQUpPUiBJLTMpIChGUjQ1MC1NQUpPUiBJLTMpIGF0dHIpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJCIgcmVndHlwZSAiayxAKCRHUmksJEdSaikiKQogICAgICAgICgrIHBhY2sgKC5zeW0gcmVndHlwZSBrKSBvcCBHUmkgb3BlIEdSaikKICAgICAgICAoc2VxdWVuY2UgKChVV0kgYWRkcmVzcykpCkBAIC00NjE0LDIzICs1MDUzLDI5IEBACiApCiAKIChzdG9yZS1yLXItdSBzdGJ1ICBRSSBPUF8wMyBPUEUxXzEwIEdSIE5BCi0JICAgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCisJICAgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1nci1zdG9yZSkpCisJICAgICAgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQogCSAgICAgIlN0b3JlIHVuc2lnbmVkIGJ5dGUsIHVwZGF0ZSBpbmRleCIpCiAoc3RvcmUtci1yLXUgc3RodSAgSEkgT1BfMDMgT1BFMV8xMSBHUiBOQQotCSAgICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQorCSAgICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNDUwICh1bml0IHUtZ3Itc3RvcmUpKQorCSAgICAgIChmcjUwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZ3Itc3RvcmUpKSkKIAkgICAgICJTdG9yZSB1bnNpZ25lZCBoYWxmLCB1cGRhdGUgaW5kZXgiKQogKHN0b3JlLXItci11IHN0dSAgIFdJIE9QXzAzIE9QRTFfMTIgR1IgTkEKLQkgICAgICgoZnI0MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjUwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZ3Itc3RvcmUpKSkKKwkgICAgICgoZnI0MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWdyLXN0b3JlKSkKKwkgICAgICAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCiAJICAgICAiU3RvcmUgICAgICAgICAgd29yZCwgdXBkYXRlIGluZGV4IikKIAogKHN0b3JlLXItci11IHN0YmZ1IFFJIE9QXzAzIE9QRTFfMTggRlJpbnQgRlItQUNDRVNTCi0JICAgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWZyLXN0b3JlKSkpCisJICAgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1mci1zdG9yZSkpCisJICAgICAgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQogCSAgICAgIlN0b3JlIGJ5dGUgZmxvYXQsIHVwZGF0ZSBpbmRleCIpCiAoc3RvcmUtci1yLXUgc3RoZnUgSEkgT1BfMDMgT1BFMV8xOSBGUmludCBGUi1BQ0NFU1MKLQkgICAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKKwkgICAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWZyLXN0b3JlKSkKKwkgICAgICAoZnI1MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWZyLXN0b3JlKSkpCiAJICAgICAiU3RvcmUgaGFsZiBmbG9hdCwgdXBkYXRlIGluZGV4IikKIChzdG9yZS1yLXItdSBzdGZ1ICBTSSBPUF8wMyBPUEUxXzFBIEZSaW50IEZSLUFDQ0VTUwotCSAgICAgKChmcjQwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQorCSAgICAgKChmcjQwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNDUwICh1bml0IHUtZnItc3RvcmUpKQorCSAgICAgIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKIAkgICAgICJTdG9yZSB3b3JkIGZsb2F0LCB1cGRhdGUgaW5kZXgiKQogCiAoc3RvcmUtci1yLXUgc3RjdSAgU0kgT1BfMDMgT1BFMV8yRCBDUFIgKE1BQ0ggZnJ2KSAoKQpAQCAtNDY0MCw3ICs1MDg1LDggQEAKIAkJbmFtZSBtb2RlIG9wIG9wZSByZWd0eXBlIGF0dHIgcHJvZmlsZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgU1RPUkUpIChGUjU1MC1NQUpPUiBJLTQpIChGUjUwMC1NQUpPUiBJLTMpIChGUjQwMC1NQUpPUiBJLTMpIGF0dHIpCisgICAgICAgKChVTklUIFNUT1JFKSAoRlI1NTAtTUFKT1IgSS00KSAoRlI1MDAtTUFKT1IgSS0zKQorCShGUjQwMC1NQUpPUiBJLTMpIChGUjQ1MC1NQUpPUiBJLTMpIGF0dHIpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJCIgcmVndHlwZSAiZG91YmxlayxAKCRHUmksJEdSaikiKQogICAgICAgICgrIHBhY2sgKC5zeW0gcmVndHlwZSBkb3VibGVrKSBvcCBHUmkgb3BlIEdSaikKICAgICAgICAoc2VxdWVuY2UgKChXSSBhZGRyZXNzKSkKQEAgLTQ2NTEsMTAgKzUwOTcsMTIgQEAKICkKIAogKHN0b3JlLWRvdWJsZS1yLXItdSBzdGR1ICBESSBPUF8wMyBPUEUxXzEzIEdSICBOQQotCQkgICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQorCQkgICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNDUwICh1bml0IHUtZ3Itc3RvcmUpKQorCQkgICAgIChmcjUwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZ3Itc3RvcmUpKSkKIAkJICAgICJTdG9yZSBkb3VibGUgd29yZCwgdXBkYXRlIGluZGV4IikKIChzdG9yZS1kb3VibGUtci1yLXUgc3RkZnUgREYgT1BfMDMgT1BFMV8xQiBGUiAgRlItQUNDRVNTCi0JCSAgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWZyLXN0b3JlKSkpCisJCSAgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1mci1zdG9yZSkpCisJCSAgICAgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQogCQkgICAgIlN0b3JlIGRvdWJsZSBmbG9hdCx1cGRhdGUgaW5kZXgiKQogKHN0b3JlLWRvdWJsZS1yLXItdSBzdGRjdSBESSBPUF8wMyBPUEUxXzJFIENQUiAoTUFDSCBmcnYpICgpCiAJCSAgICAiU3RvcmUgY29wcm9jZXNzb3IgZG91YmxlIHdvcmQsIHVwZGF0ZSBpbmRleCIpCkBAIC00Njg0LDcgKzUxMzIsOCBAQAogKGRlZmluZS1wbWFjcm8gKGNvbmRpdGlvbmFsLWxvYWQgbmFtZSBtb2RlIG9wIG9wZSByZWd0eXBlIHByb2ZpbGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTIpIENPTkRJVElPTkFMKQorICAgICAgICgoVU5JVCBMT0FEKSAoRlI1NTAtTUFKT1IgSS0zKSAoRlI1MDAtTUFKT1IgSS0yKQorCShGUjQwMC1NQUpPUiBJLTIpIChGUjQ1MC1NQUpPUiBJLTIpIENPTkRJVElPTkFMKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrIEAoJEdSaSwkR1JqKSwkIiByZWd0eXBlICJrLCRDQ2ksJGNvbmQiKQogICAgICAgICgrIHBhY2sgKC5zeW0gcmVndHlwZSBrKSBvcCBHUmkgQ0NpICBjb25kIG9wZSBHUmopCiAgICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCkBAIC00Njk1LDM2ICs1MTQ0LDQ1IEBACiApCiAKIChjb25kaXRpb25hbC1sb2FkIGNsZHNiICBRSSBPUF81RSBPUEU0XzAgR1IKLQkJICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCisJCSAgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1nci1sb2FkKSkKKwkJICAgKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKIAkJICAiTG9hZCAgIHNpZ25lZCBieXRlIikKIChjb25kaXRpb25hbC1sb2FkIGNsZHViIFVRSSBPUF81RSBPUEU0XzEgR1IKLQkJICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCisJCSAgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1nci1sb2FkKSkKKwkJICAgKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKIAkJICAiTG9hZCB1bnNpZ25lZCBieXRlIikKIChjb25kaXRpb25hbC1sb2FkIGNsZHNoICBISSBPUF81RSBPUEU0XzIgR1IKLQkJICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCisJCSAgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1nci1sb2FkKSkKKwkJICAgKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKIAkJICAiTG9hZCAgIHNpZ25lZCBoYWxmIikKIChjb25kaXRpb25hbC1sb2FkIGNsZHVoIFVISSBPUF81RSBPUEU0XzMgR1IKLQkJICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCisJCSAgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1nci1sb2FkKSkKKwkJICAgKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKIAkJICAiTG9hZCB1bnNpZ25lZCBoYWxmIikKIChjb25kaXRpb25hbC1sb2FkIGNsZCAgICBTSSBPUF81RiBPUEU0XzAgR1IKLQkJICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCisJCSAgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1nci1sb2FkKSkKKwkJICAgKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKIAkJICAiTG9hZCAgICAgICAgICB3b3JkIikKIAogKGNvbmRpdGlvbmFsLWxvYWQgY2xkYmYgVVFJIE9QXzYwIE9QRTRfMCBGUmludAotCQkgICgoZnI0MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTAwICh1bml0IHUtZnItbG9hZCkpIChmcjU1MCAodW5pdCB1LWZyLWxvYWQpKSkKKwkJICAoKGZyNDAwICh1bml0IHUtZnItbG9hZCkpIChmcjQ1MCAodW5pdCB1LWZyLWxvYWQpKQorCQkgICAoZnI1MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZnItbG9hZCkpKQogCQkgICJMb2FkIGJ5dGUgZmxvYXQiKQogKGNvbmRpdGlvbmFsLWxvYWQgY2xkaGYgVUhJIE9QXzYwIE9QRTRfMSBGUmludAotCQkgICgoZnI0MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTAwICh1bml0IHUtZnItbG9hZCkpIChmcjU1MCAodW5pdCB1LWZyLWxvYWQpKSkKKwkJICAoKGZyNDAwICh1bml0IHUtZnItbG9hZCkpIChmcjQ1MCAodW5pdCB1LWZyLWxvYWQpKQorCQkgICAoZnI1MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZnItbG9hZCkpKQogCQkgICJMb2FkIGhhbGYgZmxvYXQiKQogKGNvbmRpdGlvbmFsLWxvYWQgY2xkZiAgIFNJIE9QXzYwIE9QRTRfMiBGUmludAotCQkgICgoZnI0MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTAwICh1bml0IHUtZnItbG9hZCkpIChmcjU1MCAodW5pdCB1LWZyLWxvYWQpKSkKKwkJICAoKGZyNDAwICh1bml0IHUtZnItbG9hZCkpIChmcjQ1MCAodW5pdCB1LWZyLWxvYWQpKQorCQkgICAoZnI1MDAgKHVuaXQgdS1mci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZnItbG9hZCkpKQogCQkgICJMb2FkIHdvcmQgZmxvYXQiKQogCiAoZGVmaW5lLXBtYWNybyAoY29uZGl0aW9uYWwtbG9hZC1kb3VibGUKIAkJbmFtZSBub3RfZ3IgbW9kZSBvcCBvcGUgcmVndHlwZSBhdHRyIHByb2ZpbGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTIpIENPTkRJVElPTkFMIGF0dHIpCisgICAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpCisJKEZSNDAwLU1BSk9SIEktMikgKEZSNDUwLU1BSk9SIEktMikgQ09ORElUSU9OQUwgYXR0cikKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayBAKCRHUmksJEdSaiksJCIgcmVndHlwZSAiZG91YmxlaywkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrICguc3ltIHJlZ3R5cGUgZG91Ymxlaykgb3AgR1JpIENDaSAgY29uZCBvcGUgR1JqKQogICAgICAgIChpZiAoZXEgQ0NpIChvciBjb25kIDIpKQpAQCAtNDczNSwxMCArNTE5MywxMiBAQAogKQogCiAoY29uZGl0aW9uYWwtbG9hZC1kb3VibGUgY2xkZCAgMCBESSBPUF81RiBPUEU0XzEgR1IgTkEKLQkJCSAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCisJCQkgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI0NTAgKHVuaXQgdS1nci1sb2FkKSkKKwkJCSAgKGZyNTAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjU1MCAodW5pdCB1LWdyLWxvYWQpKSkKIAkJCSAiTG9hZCBkb3VibGUgd29yZCIpCiAoY29uZGl0aW9uYWwtbG9hZC1kb3VibGUgY2xkZGYgMSBERiBPUF82MCBPUEU0XzMgRlIgRlItQUNDRVNTCi0JCQkgKChmcjQwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZnItbG9hZCkpKQorCQkJICgoZnI0MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNDUwICh1bml0IHUtZ3ItbG9hZCkpCisJCQkgIChmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1mci1sb2FkKSkpCiAJCQkgIkxvYWQgZG91YmxlIGZsb2F0IikKIAogKGRuaSBjbGRxCkBAIC00NzU1LDcgKzUyMTUsOCBAQAogKGRlZmluZS1wbWFjcm8gKGNvbmRpdGlvbmFsLWxvYWQtZ3ItdSBuYW1lIG1vZGUgb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBMT0FEKSAoRlI1NTAtTUFKT1IgSS0zKSAoRlI1MDAtTUFKT1IgSS0yKSAoRlI0MDAtTUFKT1IgSS0yKSBDT05ESVRJT05BTCkKKyAgICAgICAoKFVOSVQgTE9BRCkgKEZSNTUwLU1BSk9SIEktMykgKEZSNTAwLU1BSk9SIEktMikKKwkoRlI0MDAtTUFKT1IgSS0yKSAoRlI0NTAtTUFKT1IgSS0yKSBDT05ESVRJT05BTCkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayBAKCRHUmksJEdSaiksJEdSaywkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrIEdSayBvcCBHUmkgQ0NpICBjb25kIG9wZSBHUmopCiAgICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCkBAIC00NzY2LDcgKzUyMjcsNyBAQAogCQkJCSAgcGMgYWRkcmVzcykpCiAJCSAgICAgKGlmIChuZSAoaW5kZXgtb2YgR1JpKSAoaW5kZXgtb2YgR1JrKSkKIAkJCSAoc2V0IEdSaSBhZGRyZXNzKSkpKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1nci1sb2FkKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpIChmcjQ1MCAodW5pdCB1LWdyLWxvYWQpKQogCShmcjUwMCAodW5pdCB1LWdyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1nci1sb2FkKSkpCiAgICkKICkKQEAgLTQ3ODAsNyArNTI0MSw4IEBACiAoZGVmaW5lLXBtYWNybyAoY29uZGl0aW9uYWwtbG9hZC1ub24tZ3ItdSBuYW1lIG1vZGUgb3Agb3BlIHJlZ3R5cGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTIpIENPTkRJVElPTkFMIEZSLUFDQ0VTUykKKyAgICAgICAoKFVOSVQgTE9BRCkgKEZSNTUwLU1BSk9SIEktMykgKEZSNTAwLU1BSk9SIEktMikKKwkoRlI0MDAtTUFKT1IgSS0yKSAoRlI0NTAtTUFKT1IgSS0yKSBDT05ESVRJT05BTCBGUi1BQ0NFU1MpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgQCgkR1JpLCRHUmopLCQiIHJlZ3R5cGUgImssJENDaSwkY29uZCIpCiAgICAgICAgKCsgcGFjayAoLnN5bSByZWd0eXBlIGspIG9wIEdSaSBDQ2kgIGNvbmQgb3BlIEdSaikKICAgICAgICAoaWYgKGVxIENDaSAob3IgY29uZCAyKSkKQEAgLTQ3OTAsNyArNTI1Miw3IEBACiAJCQkgIChjLWNhbGwgbW9kZSAoLnN0ciAiQGNwdUBfcmVhZF9tZW1fIiBtb2RlKQogCQkJCSAgcGMgYWRkcmVzcykpCiAJCSAgICAgKHNldCBHUmkgYWRkcmVzcykpKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1mci1sb2FkKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtZnItbG9hZCkpIChmcjQ1MCAodW5pdCB1LWZyLWxvYWQpKQogCShmcjUwMCAodW5pdCB1LWZyLWxvYWQpKSAoZnI1NTAgKHVuaXQgdS1mci1sb2FkKSkpCiAgICkKICkKQEAgLTQ4MDIsNyArNTI2NCw4IEBACiAKIChkbmkgY2xkZHUKICAgICAgIkxvYWQgZG91YmxlIHdvcmQsICB1cGRhdGUiCi0gICAgICgoVU5JVCBMT0FEKSAoRlI1NTAtTUFKT1IgSS0zKSAoRlI1MDAtTUFKT1IgSS0yKSAoRlI0MDAtTUFKT1IgSS0yKSBDT05ESVRJT05BTCkKKyAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpCisgICAgICAoRlI0MDAtTUFKT1IgSS0yKSAoRlI0NTAtTUFKT1IgSS0yKSBDT05ESVRJT05BTCkKICAgICAgImNsZGR1JHBhY2sgQCgkR1JpLCRHUmopLCRHUmRvdWJsZWssJENDaSwkY29uZCIKICAgICAgKCsgcGFjayBHUmRvdWJsZWsgT1BfNjIgR1JpIENDaSBjb25kIE9QRTRfMSBHUmopCiAgICAgIChpZiAoZXEgQ0NpIChvciBjb25kIDIpKQpAQCAtNDgxMCwyMCArNTI3MywyMSBAQAogCQkgICAobG9hZC1kb3VibGUtc2VtYW50aWNzIDAgREkgR1IgYWRkcmVzcyBHUmopCiAJCSAgIChpZiAobmUgKGluZGV4LW9mIEdSaSkgKGluZGV4LW9mIEdSZG91YmxlaykpCiAJCSAgICAgICAoc2V0IEdSaSBhZGRyZXNzKSkpKQotICAgICAoKGZyNDAwICh1bml0IHUtZ3ItbG9hZCkpCisgICAgICgoZnI0MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNDUwICh1bml0IHUtZ3ItbG9hZCkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1nci1sb2FkKSkgKGZyNTUwICh1bml0IHUtZ3ItbG9hZCkpKQogKQogCiAoZG5pIGNsZGRmdQogICAgICAiTG9hZCBkb3VibGUgZmxvYXQsIHVwZGF0ZSIKLSAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpIChGUjQwMC1NQUpPUiBJLTIpIENPTkRJVElPTkFMIEZSLUFDQ0VTUykKKyAgICAgKChVTklUIExPQUQpIChGUjU1MC1NQUpPUiBJLTMpIChGUjUwMC1NQUpPUiBJLTIpCisgICAgICAoRlI0MDAtTUFKT1IgSS0yKSAoRlI0NTAtTUFKT1IgSS0yKSBDT05ESVRJT05BTCBGUi1BQ0NFU1MpCiAgICAgICJjbGRkZnUkcGFjayBAKCRHUmksJEdSaiksJEZSZG91YmxlaywkQ0NpLCRjb25kIgogICAgICAoKyBwYWNrIEZSZG91YmxlayBPUF82MyBHUmkgQ0NpIGNvbmQgT1BFNF8zIEdSaikKICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCiAJIChzZXF1ZW5jZSAoKFdJIGFkZHJlc3MpKQogCQkgICAobG9hZC1kb3VibGUtc2VtYW50aWNzIDEgREYgRlIgYWRkcmVzcyBHUmopCiAJCSAgIChzZXQgR1JpIGFkZHJlc3MpKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LWZyLWxvYWQpKQorICAgICAoKGZyNDAwICh1bml0IHUtZnItbG9hZCkpIChmcjQ1MCAodW5pdCB1LWZyLWxvYWQpKQogICAgICAgKGZyNTAwICh1bml0IHUtZnItbG9hZCkpIChmcjU1MCAodW5pdCB1LWZyLWxvYWQpKSkKICkKIApAQCAtNDg0Myw3ICs1MzA3LDggQEAKIChkZWZpbmUtcG1hY3JvIChjb25kaXRpb25hbC1zdG9yZSBuYW1lIG1vZGUgb3Agb3BlIHJlZ3R5cGUgcHJvZmlsZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgU1RPUkUpIChGUjU1MC1NQUpPUiBJLTQpIChGUjUwMC1NQUpPUiBJLTMpIChGUjQwMC1NQUpPUiBJLTMpIENPTkRJVElPTkFMKQorICAgICAgICgoVU5JVCBTVE9SRSkgKEZSNTUwLU1BSk9SIEktNCkgKEZSNTAwLU1BSk9SIEktMykKKwkoRlI0MDAtTUFKT1IgSS0zKSAoRlI0NTAtTUFKT1IgSS0zKSBDT05ESVRJT05BTCkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkIiByZWd0eXBlICJrLEAoJEdSaSwkR1JqKSwkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrICguc3ltIHJlZ3R5cGUgaykgb3AgR1JpIENDaSBjb25kIG9wZSBHUmopCiAgICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCkBAIC00ODU0LDMwICs1MzE5LDM3IEBACiApCiAKIChjb25kaXRpb25hbC1zdG9yZSBjc3RiICBRSSBPUF82NCBPUEU0XzAgR1IKLQkJICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQorCQkgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1nci1zdG9yZSkpCisJCSAgICAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCiAJCSAgICJTdG9yZSB1bnNpZ25lZCBieXRlIikKIChjb25kaXRpb25hbC1zdG9yZSBjc3RoICBISSBPUF82NCBPUEU0XzEgR1IKLQkJICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQorCQkgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1nci1zdG9yZSkpCisJCSAgICAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCiAJCSAgICJTdG9yZSB1bnNpZ25lZCBoYWxmIikKIChjb25kaXRpb25hbC1zdG9yZSBjc3QgICBTSSBPUF82NCBPUEU0XzIgR1IKLQkJICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQorCQkgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1nci1zdG9yZSkpCisJCSAgICAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCiAJCSAgICJTdG9yZSAgICAgICAgICB3b3JkIikKIAogKGNvbmRpdGlvbmFsLXN0b3JlIGNzdGJmIFFJIE9QXzY2IE9QRTRfMCBGUmludAotCQkgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWZyLXN0b3JlKSkpCisJCSAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWZyLXN0b3JlKSkKKwkJICAgIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKIAkJICAgIlN0b3JlIGJ5dGUgZmxvYXQiKQogKGNvbmRpdGlvbmFsLXN0b3JlIGNzdGhmIEhJIE9QXzY2IE9QRTRfMSBGUmludAotCQkgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWZyLXN0b3JlKSkpCisJCSAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWZyLXN0b3JlKSkKKwkJICAgIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKIAkJICAgIlN0b3JlIGhhbGYgZmxvYXQiKQogKGNvbmRpdGlvbmFsLXN0b3JlIGNzdGYgIFNJIE9QXzY2IE9QRTRfMiBGUmludAotCQkgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWZyLXN0b3JlKSkpCisJCSAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWZyLXN0b3JlKSkKKwkJICAgIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKIAkJICAgIlN0b3JlIHdvcmQgZmxvYXQiKQogCiAoZGVmaW5lLXBtYWNybyAoY29uZGl0aW9uYWwtc3RvcmUtZG91YmxlCiAJCW5hbWUgbW9kZSBvcCBvcGUgcmVndHlwZSBhdHRyIHByb2ZpbGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIFNUT1JFKSAoRlI1NTAtTUFKT1IgSS00KSAoRlI1MDAtTUFKT1IgSS0zKSAoRlI0MDAtTUFKT1IgSS0zKSBDT05ESVRJT05BTCBhdHRyKQorICAgICAgICgoVU5JVCBTVE9SRSkgKEZSNTUwLU1BSk9SIEktNCkgKEZSNTAwLU1BSk9SIEktMykKKwkoRlI0MDAtTUFKT1IgSS0zKSAoRlI0NTAtTUFKT1IgSS0zKSBDT05ESVRJT05BTCBhdHRyKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICQiIHJlZ3R5cGUgImRvdWJsZWssQCgkR1JpLCRHUmopLCRDQ2ksJGNvbmQiKQogICAgICAgICgrIHBhY2sgKC5zeW0gcmVndHlwZSBkb3VibGVrKSBvcCBHUmkgQ0NpICBjb25kIG9wZSBHUmopCiAgICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCkBAIC00ODg4LDEwICs1MzYwLDEyIEBACiApCiAKIChjb25kaXRpb25hbC1zdG9yZS1kb3VibGUgY3N0ZCAgREkgT1BfNjQgT1BFNF8zIEdSIE5BCi0JCQkgICgoZnI0MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjUwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZ3Itc3RvcmUpKSkKKwkJCSAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNDUwICh1bml0IHUtZ3Itc3RvcmUpKQorCQkJICAgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQogCQkJICAiU3RvcmUgZG91YmxlIHdvcmQiKQogKGNvbmRpdGlvbmFsLXN0b3JlLWRvdWJsZSBjc3RkZiBERiBPUF82NiBPUEU0XzMgRlIgRlItQUNDRVNTCi0JCQkgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKKwkJCSAgKChmcjQwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNDUwICh1bml0IHUtZnItc3RvcmUpKQorCQkJICAgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQogCQkJICAiU3RvcmUgZG91YmxlIGZsb2F0IikKIAogKGRuaSBjc3RxCkBAIC00OTA5LDcgKzUzODMsOCBAQAogCQluYW1lIG1vZGUgb3Agb3BlIHJlZ3R5cGUgYXR0ciBwcm9maWxlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBTVE9SRSkgKEZSNTUwLU1BSk9SIEktNCkgKEZSNTAwLU1BSk9SIEktMykgKEZSNDAwLU1BSk9SIEktMykgQ09ORElUSU9OQUwgYXR0cikKKyAgICAgICAoKFVOSVQgU1RPUkUpIChGUjU1MC1NQUpPUiBJLTQpIChGUjUwMC1NQUpPUiBJLTMpCisJKEZSNDAwLU1BSk9SIEktMykgKEZSNDUwLU1BSk9SIEktMykgQ09ORElUSU9OQUwgYXR0cikKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkIiByZWd0eXBlICJrLEAoJEdSaSwkR1JqKSwkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrICguc3ltIHJlZ3R5cGUgaykgb3AgR1JpIENDaSAgY29uZCBvcGUgR1JqKQogICAgICAgIChpZiAoZXEgQ0NpIChvciBjb25kIDIpKQpAQCAtNDkyMywzMCArNTM5OCwzNyBAQAogKQogCiAoY29uZGl0aW9uYWwtc3RvcmUtdSBjc3RidSBRSSBPUF82NyBPUEU0XzAgR1IgTkEKLQkJICAgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCisJCSAgICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNDUwICh1bml0IHUtZ3Itc3RvcmUpKQorCQkgICAgICAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCiAJCSAgICAgIlN0b3JlIHVuc2lnbmVkIGJ5dGUsIHVwZGF0ZSBpbmRleCIpCiAoY29uZGl0aW9uYWwtc3RvcmUtdSBjc3RodSBISSBPUF82NyBPUEU0XzEgR1IgTkEKLQkJICAgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCisJCSAgICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNDUwICh1bml0IHUtZ3Itc3RvcmUpKQorCQkgICAgICAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCiAJCSAgICAgIlN0b3JlIHVuc2lnbmVkIGhhbGYsIHVwZGF0ZSBpbmRleCIpCiAoY29uZGl0aW9uYWwtc3RvcmUtdSBjc3R1ICBTSSBPUF82NyBPUEU0XzIgR1IgTkEKLQkJICAgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCisJCSAgICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNDUwICh1bml0IHUtZ3Itc3RvcmUpKQorCQkgICAgICAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCiAJCSAgICAgIlN0b3JlICAgICAgICAgIHdvcmQsIHVwZGF0ZSBpbmRleCIpCiAKIChjb25kaXRpb25hbC1zdG9yZS11IGNzdGJmdSBRSSBPUF82OCBPUEU0XzAgRlJpbnQgRlItQUNDRVNTCi0JCSAgICAgKChmcjQwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQorCQkgICAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWZyLXN0b3JlKSkKKwkJICAgICAgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQogCQkgICAgICJTdG9yZSBieXRlIGZsb2F0LCB1cGRhdGUgaW5kZXgiKQogKGNvbmRpdGlvbmFsLXN0b3JlLXUgY3N0aGZ1IEhJIE9QXzY4IE9QRTRfMSBGUmludCBGUi1BQ0NFU1MKLQkJICAgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWZyLXN0b3JlKSkpCisJCSAgICAgKChmcjQwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNDUwICh1bml0IHUtZnItc3RvcmUpKQorCQkgICAgICAoZnI1MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWZyLXN0b3JlKSkpCiAJCSAgICAgIlN0b3JlIGhhbGYgZmxvYXQsIHVwZGF0ZSBpbmRleCIpCiAoY29uZGl0aW9uYWwtc3RvcmUtdSBjc3RmdSAgU0kgT1BfNjggT1BFNF8yIEZSaW50IEZSLUFDQ0VTUwotCQkgICAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKKwkJICAgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1mci1zdG9yZSkpCisJCSAgICAgIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKIAkJICAgICAiU3RvcmUgd29yZCBmbG9hdCwgdXBkYXRlIGluZGV4IikKIAogKGRlZmluZS1wbWFjcm8gKGNvbmRpdGlvbmFsLXN0b3JlLWRvdWJsZS11CiAJCW5hbWUgbW9kZSBvcCBvcGUgcmVndHlwZSBhdHRyIHByb2ZpbGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIFNUT1JFKSAoRlI1NTAtTUFKT1IgSS00KSAoRlI1MDAtTUFKT1IgSS0zKSAoRlI0MDAtTUFKT1IgSS0zKSBDT05ESVRJT05BTCBhdHRyKQorICAgICAgICgoVU5JVCBTVE9SRSkgKEZSNTUwLU1BSk9SIEktNCkgKEZSNTAwLU1BSk9SIEktMykKKwkoRlI0MDAtTUFKT1IgSS0zKSAoRlI0NTAtTUFKT1IgSS0zKSBDT05ESVRJT05BTCBhdHRyKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICQiIHJlZ3R5cGUgImRvdWJsZWssQCgkR1JpLCRHUmopLCRDQ2ksJGNvbmQiKQogICAgICAgICgrIHBhY2sgKC5zeW0gcmVndHlwZSBkb3VibGVrKSBvcCBHUmkgQ0NpICBjb25kIG9wZSBHUmopCiAgICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCkBAIC00OTU4LDE4ICs1NDQwLDE5IEBACiApCiAKIChjb25kaXRpb25hbC1zdG9yZS1kb3VibGUtdSBjc3RkdSAgREkgT1BfNjcgT1BFNF8zIEdSIE5BCi0JCQkgICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkKKwkJCSAgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1nci1zdG9yZSkpCiAJCQkgICAgIChmcjUwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZ3Itc3RvcmUpKSkKIAkJCSAgICAiU3RvcmUgZG91YmxlIHdvcmQsIHVwZGF0ZSBpbmRleCIpCiAoY29uZGl0aW9uYWwtc3RvcmUtZG91YmxlLXUgY3N0ZGZ1IERGIE9QXzY4IE9QRTRfMyBGUiBGUi1BQ0NFU1MKLQkJCSAgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKQorCQkJICAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWZyLXN0b3JlKSkKIAkJCSAgICAgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQogCQkJICAgICJTdG9yZSBkb3VibGUgZmxvYXQsIHVwZGF0ZSBpbmRleCIpCiAKIChkZWZpbmUtcG1hY3JvIChzdG9yZS1yLXNpbW0gbmFtZSBtb2RlIG9wIHJlZ3R5cGUgYXR0ciBwcm9maWxlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBTVE9SRSkgKEZSNTUwLU1BSk9SIEktNCkgKEZSNTAwLU1BSk9SIEktMykgKEZSNDAwLU1BSk9SIEktMykgYXR0cikKKyAgICAgICAoKFVOSVQgU1RPUkUpIChGUjU1MC1NQUpPUiBJLTQpIChGUjUwMC1NQUpPUiBJLTMpCisJKEZSNDAwLU1BSk9SIEktMykgKEZSNDUwLU1BSk9SIEktMykgYXR0cikKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkIiByZWd0eXBlICJrLEAoJEdSaSwkZDEyKSIpCiAgICAgICAgKCsgcGFjayAoLnN5bSByZWd0eXBlIGspIG9wIEdSaSBkMTIpCiAgICAgICAgKGMtY2FsbCBWT0lEICguc3RyICJAY3B1QF93cml0ZV9tZW1fIiBtb2RlKQpAQCAtNDk3OSwyOSArNTQ2MiwzNiBAQAogKQogCiAoc3RvcmUtci1zaW1tIHN0YmkgUUkgT1BfNTAgR1IgTkEKLQkgICAgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCisJICAgICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNDUwICh1bml0IHUtZ3Itc3RvcmUpKQorCSAgICAgICAoZnI1MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjU1MCAodW5pdCB1LWdyLXN0b3JlKSkpCiAJICAgICAgIlN0b3JlIHVuc2lnbmVkIGJ5dGUiKQogKHN0b3JlLXItc2ltbSBzdGhpIEhJIE9QXzUxIEdSIE5BCi0JICAgICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQorCSAgICAgICgoZnI0MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWdyLXN0b3JlKSkKKwkgICAgICAgKGZyNTAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1nci1zdG9yZSkpKQogCSAgICAgICJTdG9yZSB1bnNpZ25lZCBoYWxmIikKIChzdG9yZS1yLXNpbW0gc3RpICBTSSBPUF81MiBHUiBOQQotCSAgICAgICgoZnI0MDAgKHVuaXQgdS1nci1zdG9yZSkpIChmcjUwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZ3Itc3RvcmUpKSkKKwkgICAgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1nci1zdG9yZSkpCisJICAgICAgIChmcjUwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZ3Itc3RvcmUpKSkKIAkgICAgICAiU3RvcmUgICAgICAgICAgd29yZCIpCiAKIChzdG9yZS1yLXNpbW0gc3RiZmkgUUkgT1BfNEUgRlJpbnQgRlItQUNDRVNTCi0JICAgICAgKChmcjQwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQorCSAgICAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWZyLXN0b3JlKSkKKwkgICAgICAgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQogCSAgICAgICJTdG9yZSBieXRlIGZsb2F0IikKIChzdG9yZS1yLXNpbW0gc3RoZmkgSEkgT1BfNEYgRlJpbnQgRlItQUNDRVNTCi0JICAgICAgKChmcjQwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQorCSAgICAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWZyLXN0b3JlKSkKKwkgICAgICAgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQogCSAgICAgICJTdG9yZSBoYWxmIGZsb2F0IikKIChzdG9yZS1yLXNpbW0gc3RmaSAgU0kgT1BfNTUgRlJpbnQgRlItQUNDRVNTCi0JICAgICAgKChmcjQwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQorCSAgICAgICgoZnI0MDAgKHVuaXQgdS1mci1zdG9yZSkpIChmcjQ1MCAodW5pdCB1LWZyLXN0b3JlKSkKKwkgICAgICAgKGZyNTAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI1NTAgKHVuaXQgdS1mci1zdG9yZSkpKQogCSAgICAgICJTdG9yZSB3b3JkIGZsb2F0IikKIAogKGRlZmluZS1wbWFjcm8gKHN0b3JlLWRvdWJsZS1yLXNpbW0gbmFtZSBtb2RlIG9wIHJlZ3R5cGUgYXR0ciBwcm9maWxlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBTVE9SRSkgKEZSNTUwLU1BSk9SIEktNCkgKEZSNTAwLU1BSk9SIEktMykgKEZSNDAwLU1BSk9SIEktMykgYXR0cikKKyAgICAgICAoKFVOSVQgU1RPUkUpIChGUjU1MC1NQUpPUiBJLTQpIChGUjUwMC1NQUpPUiBJLTMpCisJKEZSNDAwLU1BSk9SIEktMykgKEZSNDUwLU1BSk9SIEktMykgYXR0cikKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkIiByZWd0eXBlICJkb3VibGVrLEAoJEdSaSwkZDEyKSIpCiAgICAgICAgKCsgcGFjayAoLnN5bSByZWd0eXBlIGRvdWJsZWspIG9wIEdSaSBkMTIpCiAgICAgICAgKHNlcXVlbmNlICgoV0kgYWRkcmVzcykpCkBAIC01MDExLDExICs1NTAxLDExIEBACiApCiAKIChzdG9yZS1kb3VibGUtci1zaW1tIHN0ZGkgIERJIE9QXzUzIEdSIE5BCi0JCSAgICAgKChmcjQwMCAodW5pdCB1LWdyLXN0b3JlKSkKKwkJICAgICAoKGZyNDAwICh1bml0IHUtZ3Itc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1nci1zdG9yZSkpCiAJCSAgICAgIChmcjUwMCAodW5pdCB1LWdyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZ3Itc3RvcmUpKSkKIAkJICAgICAiU3RvcmUgZG91YmxlIHdvcmQiKQogKHN0b3JlLWRvdWJsZS1yLXNpbW0gc3RkZmkgREYgT1BfNTYgRlIgRlItQUNDRVNTCi0JCSAgICAgKChmcjQwMCAodW5pdCB1LWZyLXN0b3JlKSkKKwkJICAgICAoKGZyNDAwICh1bml0IHUtZnItc3RvcmUpKSAoZnI0NTAgKHVuaXQgdS1mci1zdG9yZSkpCiAJCSAgICAgIChmcjUwMCAodW5pdCB1LWZyLXN0b3JlKSkgKGZyNTUwICh1bml0IHUtZnItc3RvcmUpKSkKIAkJICAgICAiU3RvcmUgZG91YmxlIGZsb2F0IikKIApAQCAtNTA0NywzMiArNTUzNywzNSBAQAogCiAoZG5pIHN3YXAKICAgICAgIlN3YXAgY29udGVudHMgb2YgbWVtb3J5IHdpdGggR1IiCi0gICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0yKSAoRlI1NTAtTUFKT1IgQy0yKSAoRlI0MDAtTUFKT1IgQy0yKSkKKyAgICAgKChVTklUIEMpIChGUjUwMC1NQUpPUiBDLTIpIChGUjU1MC1NQUpPUiBDLTIpCisgICAgICAoRlI0MDAtTUFKT1IgQy0yKSAoRlI0NTAtTUFKT1IgQy0yKSkKICAgICAgInN3YXAkcGFjayBAKCRHUmksJEdSaiksJEdSayIKICAgICAgKCsgcGFjayBHUmsgT1BfMDMgR1JpIE9QRTFfMDUgR1JqKQogICAgICAoc3dhcC1zZW1hbnRpY3MgR1JpIEdSaiBHUmspCi0gICAgICgoZnI0MDAgKHVuaXQgdS1zd2FwKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LXN3YXApKSAoZnI0NTAgKHVuaXQgdS1zd2FwKSkKICAgICAgIChmcjUwMCAodW5pdCB1LXN3YXApKSAoZnI1NTAgKHVuaXQgdS1zd2FwKSkpCiApCiAKIChkbmkgInN3YXBpIgogICAgICAiU3dhcCBjb250ZW50cyBvZiBtZW1vcnkgd2l0aCBHUiIKLSAgICAgKChVTklUIEMpIChGUjUwMC1NQUpPUiBDLTIpIChGUjU1MC1NQUpPUiBDLTIpIChGUjQwMC1NQUpPUiBDLTIpKQorICAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMikgKEZSNTUwLU1BSk9SIEMtMikKKyAgICAgIChGUjQwMC1NQUpPUiBDLTIpIChGUjQ1MC1NQUpPUiBDLTIpKQogICAgICAoInN3YXBpJHBhY2sgQCgkR1JpLCRkMTIpLCRHUmsiKQogICAgICAoKyBwYWNrIEdSayBPUF80RCBHUmkgZDEyKQogICAgICAoc3dhcC1zZW1hbnRpY3MgR1JpIGQxMiBHUmspCi0gICAgICgoZnI0MDAgKHVuaXQgdS1zd2FwKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LXN3YXApKSAoZnI0NTAgKHVuaXQgdS1zd2FwKSkKICAgICAgIChmcjUwMCAodW5pdCB1LXN3YXApKSAoZnI1NTAgKHVuaXQgdS1zd2FwKSkpCiApCiAKIChkbmkgY3N3YXAKICAgICAgIkNvbmRpdGlvbmFsbHkgc3dhcCBjb250ZW50cyBvZiBtZW1vcnkgd2l0aCBHUiIKLSAgICAgKChVTklUIEMpIChGUjUwMC1NQUpPUiBDLTIpIChGUjU1MC1NQUpPUiBDLTIpIChGUjQwMC1NQUpPUiBDLTIpIENPTkRJVElPTkFMKQorICAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMikgKEZSNTUwLU1BSk9SIEMtMikKKyAgICAgIChGUjQwMC1NQUpPUiBDLTIpIChGUjQ1MC1NQUpPUiBDLTIpIENPTkRJVElPTkFMKQogICAgICAiY3N3YXAkcGFjayBAKCRHUmksJEdSaiksJEdSaywkQ0NpLCRjb25kIgogICAgICAoKyBwYWNrIEdSayBPUF82NSBHUmkgQ0NpIGNvbmQgT1BFNF8yIEdSaikKICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCiAJIChzd2FwLXNlbWFudGljcyBHUmkgR1JqIEdSaykpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1zd2FwKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LXN3YXApKSAoZnI0NTAgKHVuaXQgdS1zd2FwKSkKICAgICAgIChmcjUwMCAodW5pdCB1LXN3YXApKSAoZnI1NTAgKHVuaXQgdS1zd2FwKSkpCiApCiAKQEAgLTUwOTAsMTMgKzU1ODMsMTcgQEAKIAogKHJlZ2lzdGVyLXRyYW5zZmVyIG1vdmdmIE9QXzAzIE9QRTFfMTUKIAkJICAgR1JqIEZSaW50ayBJMAotCQkgICAoKEZSNTAwLU1BSk9SIEktNCkgKEZSNTUwLU1BSk9SIEktNSkgKEZSNDAwLU1BSk9SIEktNCkgRlItQUNDRVNTKQotCQkgICAoKGZyNDAwICh1bml0IHUtZ3IyZnIpKSAoZnI1MDAgKHVuaXQgdS1ncjJmcikpIChmcjU1MCAodW5pdCB1LWdyMmZyKSkpCisJCSAgICgoRlI1MDAtTUFKT1IgSS00KSAoRlI1NTAtTUFKT1IgSS01KQorCQkgICAgKEZSNDAwLU1BSk9SIEktNCkgKEZSNDUwLU1BSk9SIEktNCkgRlItQUNDRVNTKQorCQkgICAoKGZyNDAwICh1bml0IHUtZ3IyZnIpKSAoZnI0NTAgKHVuaXQgdS1ncjJmcikpCisJCSAgICAoZnI1MDAgKHVuaXQgdS1ncjJmcikpIChmcjU1MCAodW5pdCB1LWdyMmZyKSkpCiAJCSAgICJ0cmFuc2ZlciBnciB0byBmciIpCiAocmVnaXN0ZXItdHJhbnNmZXIgbW92ZmcgT1BfMDMgT1BFMV8wRAogCQkgICBGUmludGsgR1JqIEkwCi0JCSAgICgoRlI1MDAtTUFKT1IgSS00KSAoRlI1NTAtTUFKT1IgSS01KSAoRlI0MDAtTUFKT1IgSS00KSBGUi1BQ0NFU1MpCi0JCSAgICgoZnI0MDAgKHVuaXQgdS1mcjJncikpIChmcjUwMCAodW5pdCB1LWZyMmdyKSkgKGZyNTUwICh1bml0IHUtZnIyZ3IpKSkKKwkJICAgKChGUjUwMC1NQUpPUiBJLTQpIChGUjU1MC1NQUpPUiBJLTUpCisJCSAgICAoRlI0MDAtTUFKT1IgSS00KSAoRlI0NTAtTUFKT1IgSS00KSBGUi1BQ0NFU1MpCisJCSAgICgoZnI0MDAgKHVuaXQgdS1mcjJncikpIChmcjQ1MCAodW5pdCB1LWZyMmdyKSkKKwkJICAgIChmcjUwMCAodW5pdCB1LWZyMmdyKSkgKGZyNTUwICh1bml0IHUtZnIyZ3IpKSkKIAkJICAgInRyYW5zZmVyIGZyIHRvIGdyIikKIAogKGRlZmluZS1wbWFjcm8gKG5leHRyZWcgaHcgciBvZmZzZXQpIChyZWcgaHcgKGFkZCAoaW5kZXgtb2Ygcikgb2Zmc2V0KSkpCkBAIC01MTE0LDEyICs1NjExLDEzIEBACiAKIChkbmkgbW92Z2ZkCiAgICAgICJtb3ZlIEdSIGZvciBGUiBkb3VibGUiCi0gICAgICgoVU5JVCBJMCkgKEZSNTAwLU1BSk9SIEktNCkgKEZSNTUwLU1BSk9SIEktNSkgKEZSNDAwLU1BSk9SIEktNCkgRlItQUNDRVNTKQorICAgICAoKFVOSVQgSTApIChGUjUwMC1NQUpPUiBJLTQpIChGUjU1MC1NQUpPUiBJLTUpCisgICAgICAoRlI0MDAtTUFKT1IgSS00KSAoRlI0NTAtTUFKT1IgSS00KSBGUi1BQ0NFU1MpCiAgICAgICJtb3ZnZmQkcGFjayAkR1JqLCRGUmludGsiCiAgICAgICgrIHBhY2sgRlJpbnRrIE9QXzAzIChycy1udWxsKSBPUEUxXzE2IEdSaikKICAgICAgKHJlZ2lzdGVyLXRyYW5zZmVyLWRvdWJsZS1mcm9tLWdyLXNlbWFudGljcyAxKQogICAgICA7IFRPRE8gLS0gZG9lc24ndCBoYW5kbGUgc2Vjb25kIHJlZ2lzdGVyIGluIHRoZSBwYWlyCi0gICAgICgoZnI0MDAgKHVuaXQgdS1ncjJmcikpCisgICAgICgoZnI0MDAgKHVuaXQgdS1ncjJmcikpIChmcjQ1MCAodW5pdCB1LWdyMmZyKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWdyMmZyKSkgKGZyNTUwICh1bml0IHUtZ3IyZnIpKSkKICkKIApAQCAtNTEzMiwxMiArNTYzMCwxMyBAQAogCiAoZG5pIG1vdmZnZAogICAgICAibW92ZSBGUiBmb3IgR1IgZG91YmxlIgotICAgICAoKFVOSVQgSTApIChGUjUwMC1NQUpPUiBJLTQpIChGUjU1MC1NQUpPUiBJLTUpIChGUjQwMC1NQUpPUiBJLTQpIEZSLUFDQ0VTUykKKyAgICAgKChVTklUIEkwKSAoRlI1MDAtTUFKT1IgSS00KSAoRlI1NTAtTUFKT1IgSS01KQorICAgICAgKEZSNDAwLU1BSk9SIEktNCkgKEZSNDUwLU1BSk9SIEktNCkgRlItQUNDRVNTKQogICAgICAibW92ZmdkJHBhY2sgJEZSaW50aywkR1JqIgogICAgICAoKyBwYWNrIEZSaW50ayBPUF8wMyAocnMtbnVsbCkgT1BFMV8wRSBHUmopCiAgICAgIChyZWdpc3Rlci10cmFuc2Zlci1kb3VibGUtdG8tZ3Itc2VtYW50aWNzIDEpCiAgICAgIDsgVE9ETyAtLSBkb2Vzbid0IGhhbmRsZSBzZWNvbmQgcmVnaXN0ZXIgaW4gdGhlIHBhaXIKLSAgICAgKChmcjQwMCAodW5pdCB1LWZyMmdyKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWZyMmdyKSkgKGZyNDUwICh1bml0IHUtZnIyZ3IpKQogICAgICAgKGZyNTAwICh1bml0IHUtZnIyZ3IpKSAoZnI1NTAgKHVuaXQgdS1mcjJncikpKQogKQogCkBAIC01MTk0LDM0ICs1NjkzLDQwIEBACiApCiAKIChjb25kaXRpb25hbC1yZWdpc3Rlci10cmFuc2ZlciBjbW92Z2YgT1BfNjkgT1BFNF8wIEdSaiBGUmludGsgSTAKLQkJCSAgICAgICAoKEZSNTAwLU1BSk9SIEktNCkgKEZSNTUwLU1BSk9SIEktNSkgKEZSNDAwLU1BSk9SIEktNCkpCi0JCQkgICAgICAgKChmcjQwMCAodW5pdCB1LWdyMmZyKSkgKGZyNTAwICh1bml0IHUtZ3IyZnIpKSAoZnI1NTAgKHVuaXQgdS1ncjJmcikpKQorCQkJICAgICAgICgoRlI1MDAtTUFKT1IgSS00KSAoRlI1NTAtTUFKT1IgSS01KQorCQkJCShGUjQwMC1NQUpPUiBJLTQpIChGUjQ1MC1NQUpPUiBJLTQpKQorCQkJICAgICAgICgoZnI0MDAgKHVuaXQgdS1ncjJmcikpIChmcjQ1MCAodW5pdCB1LWdyMmZyKSkKKwkJCQkoZnI1MDAgKHVuaXQgdS1ncjJmcikpIChmcjU1MCAodW5pdCB1LWdyMmZyKSkpCiAJCQkgICAgICAgInRyYW5zZmVyIGdyIHRvIGZyIikKIChjb25kaXRpb25hbC1yZWdpc3Rlci10cmFuc2ZlciBjbW92ZmcgT1BfNjkgT1BFNF8yIEZSaW50ayBHUmogSTAKLQkJCSAgICAgICAoKEZSNTAwLU1BSk9SIEktNCkgKEZSNTUwLU1BSk9SIEktNSkgKEZSNDAwLU1BSk9SIEktNCkpCi0JCQkgICAgICAgKChmcjQwMCAodW5pdCB1LWZyMmdyKSkgKGZyNTAwICh1bml0IHUtZnIyZ3IpKSAoZnI1NTAgKHVuaXQgdS1mcjJncikpKQorCQkJICAgICAgICgoRlI1MDAtTUFKT1IgSS00KSAoRlI1NTAtTUFKT1IgSS01KQorCQkJCShGUjQwMC1NQUpPUiBJLTQpIChGUjQ1MC1NQUpPUiBJLTQpKQorCQkJICAgICAgICgoZnI0MDAgKHVuaXQgdS1mcjJncikpIChmcjQ1MCAodW5pdCB1LWZyMmdyKSkKKwkJCQkoZnI1MDAgKHVuaXQgdS1mcjJncikpIChmcjU1MCAodW5pdCB1LWZyMmdyKSkpCiAJCQkgICAgICAgInRyYW5zZmVyIGZyIHRvIGdyIikKIAogCiAoZG5pIGNtb3ZnZmQKICAgICAgIkNvbmRpdGlvbmFsIG1vdmUgR1IgdG8gRlIgZG91YmxlIgotICAgICAoKFVOSVQgSTApIChGUjUwMC1NQUpPUiBJLTQpIChGUjU1MC1NQUpPUiBJLTUpIChGUjQwMC1NQUpPUiBJLTQpIENPTkRJVElPTkFMIEZSLUFDQ0VTUykKKyAgICAgKChVTklUIEkwKSAoRlI1MDAtTUFKT1IgSS00KSAoRlI1NTAtTUFKT1IgSS01KQorICAgICAgKEZSNDAwLU1BSk9SIEktNCkgKEZSNDUwLU1BSk9SIEktNCkgQ09ORElUSU9OQUwgRlItQUNDRVNTKQogICAgICAiY21vdmdmZCRwYWNrICRHUmosJEZSaW50aywkQ0NpLCRjb25kIgogICAgICAoKyBwYWNrIEZSaW50ayBPUF82OSAocnMtbnVsbCkgQ0NpIGNvbmQgT1BFNF8xIEdSaikKICAgICAgKHJlZ2lzdGVyLXRyYW5zZmVyLWRvdWJsZS1mcm9tLWdyLXNlbWFudGljcyAoZXEgQ0NpIChvciBjb25kIDIpKSkKICAgICAgOyBUT0RPIC0tIGRvZXNuJ3QgaGFuZGxlIGV4dHJhIHJlZ2lzdGVycyBpbiBkb3VibGUKLSAgICAgKChmcjQwMCAodW5pdCB1LWdyMmZyKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWdyMmZyKSkgKGZyNDUwICh1bml0IHUtZ3IyZnIpKQogICAgICAgKGZyNTAwICh1bml0IHUtZ3IyZnIpKSAoZnI1NTAgKHVuaXQgdS1ncjJmcikpKQogKQogCiAoZG5pIGNtb3ZmZ2QKICAgICAgIkNvbmRpdGlvbmFsIG1vdmUgRlIgdG8gR1IgZG91YmxlIgotICAgICAoKFVOSVQgSTApIChGUjUwMC1NQUpPUiBJLTQpIChGUjU1MC1NQUpPUiBJLTUpIChGUjQwMC1NQUpPUiBJLTQpIENPTkRJVElPTkFMIEZSLUFDQ0VTUykKKyAgICAgKChVTklUIEkwKSAoRlI1MDAtTUFKT1IgSS00KSAoRlI1NTAtTUFKT1IgSS01KQorICAgICAgKEZSNDAwLU1BSk9SIEktNCkgKEZSNDUwLU1BSk9SIEktNCkgQ09ORElUSU9OQUwgRlItQUNDRVNTKQogICAgICAiY21vdmZnZCRwYWNrICRGUmludGssJEdSaiwkQ0NpLCRjb25kIgogICAgICAoKyBwYWNrIEZSaW50ayBPUF82OSAocnMtbnVsbCkgQ0NpIGNvbmQgT1BFNF8zIEdSaikKICAgICAgKHJlZ2lzdGVyLXRyYW5zZmVyLWRvdWJsZS10by1nci1zZW1hbnRpY3MgKGVxIENDaSAob3IgY29uZCAyKSkpCiAgICAgIDsgVE9ETyAtLSBkb2Vzbid0IGhhbmRsZSBzZWNvbmQgcmVnaXN0ZXIgaW4gdGhlIHBhaXIKLSAgICAgKChmcjQwMCAodW5pdCB1LWZyMmdyKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWZyMmdyKSkgKGZyNDUwICh1bml0IHUtZnIyZ3IpKQogICAgICAgKGZyNTAwICh1bml0IHUtZnIyZ3IpKSAoZnI1NTAgKHVuaXQgdS1mcjJncikpKQogKQogCkBAIC01MjI5LDExICs1NzM0LDEyIEBACiAJCW5hbWUgb3Agb3BlIHJlZ19zcmMgcmVnX3RhcmcgdW5pdG5hbWUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEMpIChGUjUwMC1NQUpPUiBDLTIpIChGUjU1MC1NQUpPUiBDLTIpIChGUjQwMC1NQUpPUiBDLTIpKQorICAgICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0yKSAoRlI1NTAtTUFKT1IgQy0yKQorCShGUjQwMC1NQUpPUiBDLTIpIChGUjQ1MC1NQUpPUiBDLTIpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICQiIHJlZ19zcmMgIiwkIiByZWdfdGFyZykKICAgICAgICAoKyBwYWNrIHJlZ190YXJnIG9wIG9wZSByZWdfc3JjKQogICAgICAgIChzZXQgcmVnX3RhcmcgcmVnX3NyYykKLSAgICAgICAoKGZyNDAwICh1bml0IHVuaXRuYW1lKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHVuaXRuYW1lKSkgKGZyNDUwICh1bml0IHVuaXRuYW1lKSkKIAkoZnI1MDAgKHVuaXQgdW5pdG5hbWUpKSAoZnI1NTAgKHVuaXQgdW5pdG5hbWUpKSkKICAgKQogKQpAQCAtNTI4MCwzNyArNTc4Niw0MCBAQAogKGRlZmluZS1wbWFjcm8gKGNvbmRpdGlvbmFsLWJyYW5jaC1pIHByZWZpeCBjYyBvcCBjb25kIGNvbW1lbnQpCiAgIChkbmkgKC5zeW0gcHJlZml4IGNjKQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTEpIChGUjU1MC1NQUpPUiBCLTEpIChGUjQwMC1NQUpPUiBCLTEpKQorICAgICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTEpIChGUjU1MC1NQUpPUiBCLTEpCisJKEZSNDAwLU1BSk9SIEItMSkgKEZSNDUwLU1BSk9SIEItMSkpCiAgICAgICAgKC5zdHIgKC5zeW0gcHJlZml4IGNjKSAiJHBhY2sgJElDQ2lfMiwkaGludCwkbGFiZWwxNiIpCiAgICAgICAgKCsgcGFjayAoLnN5bSBJQ0NfIGNjKSBJQ0NpXzIgb3AgaGludCBsYWJlbDE2KQogICAgICAgIChzZXF1ZW5jZSAoKQogCQkgKGMtY2FsbCBWT0lEICJAY3B1QF9tb2RlbF9icmFuY2giIGxhYmVsMTYgaGludCkKIAkJIChpZiAoY29uZCBJQ0NpXzIpCiAJCSAgICAgKHNldCBwYyBsYWJlbDE2KSkpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpIChmcjQ1MCAodW5pdCB1LWJyYW5jaCkpCiAJKGZyNTAwICh1bml0IHUtYnJhbmNoKSkgKGZyNTUwICh1bml0IHUtYnJhbmNoKSkpCiAgICkKICkKIAogKGRuaSBicmEKICAgICAgImludGVnZXIgYnJhbmNoIGVxdWFsIgotICAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItMSkgKEZSNTUwLU1BSk9SIEItMSkgKEZSNDAwLU1BSk9SIEItMSkpCisgICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi0xKSAoRlI1NTAtTUFKT1IgQi0xKQorICAgICAgIChGUjQwMC1NQUpPUiBCLTEpIChGUjQ1MC1NQUpPUiBCLTEpKQogICAgICAgImJyYSRwYWNrICRoaW50X3Rha2VuJGxhYmVsMTYiCiAgICAgICAoKyBwYWNrIElDQ19yYSAoSUNDaV8yLW51bGwpIE9QXzA2IGhpbnRfdGFrZW4gbGFiZWwxNikKICAgICAgIChzZXF1ZW5jZSAoKQogCQkoYy1jYWxsIFZPSUQgIkBjcHVAX21vZGVsX2JyYW5jaCIgbGFiZWwxNiBoaW50X3Rha2VuKQogCQkoc2V0IHBjIGxhYmVsMTYpKQotICAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpCisgICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkgKGZyNDUwICh1bml0IHUtYnJhbmNoKSkKICAgICAgICAoZnI1MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI1NTAgKHVuaXQgdS1icmFuY2gpKSkKICkKIAogKGRuaSBibm8KICAgICAgImludGVnZXIgYnJhbmNoIG5ldmVyIgotICAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItMSkgKEZSNTUwLU1BSk9SIEItMSkgKEZSNDAwLU1BSk9SIEItMSkpCisgICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi0xKSAoRlI1NTAtTUFKT1IgQi0xKQorICAgICAgIChGUjQwMC1NQUpPUiBCLTEpIChGUjQ1MC1NQUpPUiBCLTEpKQogICAgICAgImJubyRwYWNrJGhpbnRfbm90X3Rha2VuIgogICAgICAgKCsgcGFjayBJQ0NfbmV2IChJQ0NpXzItbnVsbCkgT1BfMDYgaGludF9ub3RfdGFrZW4gKGxhYmVsMTYtbnVsbCkpCiAgICAgICAoYy1jYWxsIFZPSUQgIkBjcHVAX21vZGVsX2JyYW5jaCIgbGFiZWwxNiBoaW50X25vdF90YWtlbikKLSAgICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKQorICAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpIChmcjQ1MCAodW5pdCB1LWJyYW5jaCkpCiAgICAgICAgKGZyNTAwICh1bml0IHUtYnJhbmNoKSkgKGZyNTUwICh1bml0IHUtYnJhbmNoKSkpCiApCiAKQEAgLTUzMzIsMzYgKzU4NDEsMzkgQEAKIChkZWZpbmUtcG1hY3JvIChjb25kaXRpb25hbC1icmFuY2gtZiBwcmVmaXggY2Mgb3AgY29uZCBjb21tZW50KQogICAoZG5pICguc3ltIHByZWZpeCBjYykKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi0xKSAoRlI1NTAtTUFKT1IgQi0xKSAoRlI0MDAtTUFKT1IgQi0xKSBGUi1BQ0NFU1MpCisgICAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItMSkgKEZSNTUwLU1BSk9SIEItMSkKKwkoRlI0MDAtTUFKT1IgQi0xKSAoRlI0NTAtTUFKT1IgQi0xKSBGUi1BQ0NFU1MpCiAgICAgICAgKC5zdHIgKC5zeW0gcHJlZml4IGNjKSAiJHBhY2sgJEZDQ2lfMiwkaGludCwkbGFiZWwxNiIpCiAgICAgICAgKCsgcGFjayAoLnN5bSBGQ0NfIGNjKSBGQ0NpXzIgb3AgaGludCBsYWJlbDE2KQogICAgICAgIChzZXF1ZW5jZSAoKQogCQkgKGMtY2FsbCBWT0lEICJAY3B1QF9tb2RlbF9icmFuY2giIGxhYmVsMTYgaGludCkKIAkJIChpZiAoY29uZCBGQ0NpXzIpIChzZXQgcGMgbGFiZWwxNikpKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI0NTAgKHVuaXQgdS1icmFuY2gpKQogCShmcjUwMCAodW5pdCB1LWJyYW5jaCkpIChmcjU1MCAodW5pdCB1LWJyYW5jaCkpKQogICApCiApCiAKIChkbmkgZmJyYQogICAgICAiZmxvYXQgYnJhbmNoIGVxdWFsIgotICAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItMSkgKEZSNTUwLU1BSk9SIEItMSkgKEZSNDAwLU1BSk9SIEItMSkgRlItQUNDRVNTKQorICAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItMSkgKEZSNTUwLU1BSk9SIEItMSkKKyAgICAgICAoRlI0MDAtTUFKT1IgQi0xKSAoRlI0NTAtTUFKT1IgQi0xKSBGUi1BQ0NFU1MpCiAgICAgICAiZmJyYSRwYWNrICRoaW50X3Rha2VuJGxhYmVsMTYiCiAgICAgICAoKyBwYWNrIEZDQ19yYSAoRkNDaV8yLW51bGwpIE9QXzA3IGhpbnRfdGFrZW4gbGFiZWwxNikKICAgICAgIChzZXF1ZW5jZSAoKQogCQkoYy1jYWxsIFZPSUQgIkBjcHVAX21vZGVsX2JyYW5jaCIgbGFiZWwxNiBoaW50X3Rha2VuKQogCQkoc2V0IHBjIGxhYmVsMTYpKQotICAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpCisgICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkgKGZyNDUwICh1bml0IHUtYnJhbmNoKSkKICAgICAgICAoZnI1MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI1NTAgKHVuaXQgdS1icmFuY2gpKSkKICkKIAogKGRuaSBmYm5vCiAgICAgICJmbG9hdCBicmFuY2ggbmV2ZXIiCi0gICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi0xKSAoRlI1NTAtTUFKT1IgQi0xKSAoRlI0MDAtTUFKT1IgQi0xKSBGUi1BQ0NFU1MpCisgICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi0xKSAoRlI1NTAtTUFKT1IgQi0xKQorICAgICAgIChGUjQwMC1NQUpPUiBCLTEpIChGUjQ1MC1NQUpPUiBCLTEpIEZSLUFDQ0VTUykKICAgICAgICJmYm5vJHBhY2skaGludF9ub3RfdGFrZW4iCiAgICAgICAoKyBwYWNrIEZDQ19uZXYgKEZDQ2lfMi1udWxsKSBPUF8wNyBoaW50X25vdF90YWtlbiAobGFiZWwxNi1udWxsKSkKICAgICAgIChjLWNhbGwgVk9JRCAiQGNwdUBfbW9kZWxfYnJhbmNoIiBsYWJlbDE2IGhpbnRfbm90X3Rha2VuKQotICAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpCisgICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkgKGZyNDUwICh1bml0IHUtYnJhbmNoKSkKICAgICAgICAoZnI1MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI1NTAgKHVuaXQgdS1icmFuY2gpKSkKICkKIApAQCAtNTM5NCw1MCArNTkwNiw1NCBAQAogCiAoZG5pIGJjdHJscgogICAgICAiTENSIGNvbmRpdGlvbmFsIGJyYW5jaCB0byBsciIKLSAgICAgKChVTklUIEIwKSAoRlI1MDAtTUFKT1IgQi0yKSAoRlI1NTAtTUFKT1IgQi0yKSAoRlI0MDAtTUFKT1IgQi0yKSkKKyAgICAgKChVTklUIEIwKSAoRlI1MDAtTUFKT1IgQi0yKSAoRlI1NTAtTUFKT1IgQi0yKQorICAgICAgKEZSNDAwLU1BSk9SIEItMikgKEZSNDUwLU1BSk9SIEItMikpCiAgICAgICgiYmN0cmxyJHBhY2sgJGNjb25kLCRoaW50IikKICAgICAgKCsgcGFjayAoY29uZC1udWxsKSAoSUNDaV8yLW51bGwpIE9QXzBFIGhpbnQgT1BFM18wMSBjY29uZCAoczEyLW51bGwpKQogICAgICAoc2VxdWVuY2UgKCkKIAkgICAgICAgKGMtY2FsbCBWT0lEICJAY3B1QF9tb2RlbF9icmFuY2giIChzcHItbHIpIGhpbnQpCiAJICAgICAgIChjdHJsci1icmFuY2gtc2VtYW50aWNzIChjb25zdCBCSSAxKSBjY29uZCkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKQorICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkgKGZyNDUwICh1bml0IHUtYnJhbmNoKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWJyYW5jaCkpIChmcjU1MCAodW5pdCB1LWJyYW5jaCkpKQogKQogCiAoZGVmaW5lLXBtYWNybyAoY29uZGl0aW9uYWwtYnJhbmNoLWNjbHIgcHJlZml4IGNjIGktZiBvcCBvcGUgY29uZCBhdHRyIGNvbW1lbnQpCiAgIChkbmkgKC5zeW0gcHJlZml4IGNjIGxyKQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTMpIChGUjU1MC1NQUpPUiBCLTMpIChGUjQwMC1NQUpPUiBCLTMpIGF0dHIpCisgICAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItMykgKEZSNTUwLU1BSk9SIEItMykKKwkoRlI0MDAtTUFKT1IgQi0zKSAoRlI0NTAtTUFKT1IgQi0zKSBhdHRyKQogICAgICAgICguc3RyICguc3ltIHByZWZpeCBjYyBscikgIiRwYWNrICQiIGktZiAiQ0NpXzIsJGhpbnQiKQogICAgICAgICgrIHBhY2sgKC5zeW0gaS1mIENDXyBjYykgKC5zeW0gaS1mIENDaV8yKSBvcCBoaW50IG9wZQogCSAgKGNjb25kLW51bGwpIChzMTItbnVsbCkpCiAgICAgICAgKHNlcXVlbmNlICgpCiAJCSAoYy1jYWxsIFZPSUQgIkBjcHVAX21vZGVsX2JyYW5jaCIgKHNwci1scikgaGludCkKIAkJIChpZiAoY29uZCAoLnN5bSBpLWYgQ0NpXzIpKSAoc2V0IHBjIChzcHItbHIpKSkpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpIChmcjQ1MCAodW5pdCB1LWJyYW5jaCkpCiAJKGZyNTAwICh1bml0IHUtYnJhbmNoKSkgKGZyNTUwICh1bml0IHUtYnJhbmNoKSkpCiAgICkKICkKIAogKGRuaSBicmFscgogICAgICAiaW50ZWdlciBjY2xyIGJyYW5jaCBhbHdheXMiCi0gICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTMpIChGUjU1MC1NQUpPUiBCLTMpIChGUjQwMC1NQUpPUiBCLTMpKQorICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi0zKSAoRlI1NTAtTUFKT1IgQi0zKQorICAgICAgKEZSNDAwLU1BSk9SIEItMykgKEZSNDUwLU1BSk9SIEItMykpCiAgICAgICJicmFsciRwYWNrJGhpbnRfdGFrZW4iCiAgICAgICgrIHBhY2sgSUNDX3JhIChJQ0NpXzItbnVsbCkgT1BfMEUgaGludF90YWtlbiBPUEUzXzAyIChjY29uZC1udWxsKSAoczEyLW51bGwpKQogICAgICAoc2VxdWVuY2UgKCkKIAkgICAgICAgKGMtY2FsbCBWT0lEICJAY3B1QF9tb2RlbF9icmFuY2giIChzcHItbHIpIGhpbnRfdGFrZW4pCiAJICAgICAgIChzZXQgcGMgKHNwci1scikpKQotICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpIChmcjQ1MCAodW5pdCB1LWJyYW5jaCkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI1NTAgKHVuaXQgdS1icmFuY2gpKSkKICkKIAogKGRuaSBibm9scgogICAgICAiaW50ZWdlciBjY2xyIGJyYW5jaCBuZXZlciIKLSAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItMykgKEZSNTUwLU1BSk9SIEItMykgKEZSNDAwLU1BSk9SIEItMykpCisgICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTMpIChGUjU1MC1NQUpPUiBCLTMpCisgICAgICAoRlI0MDAtTUFKT1IgQi0zKSAoRlI0NTAtTUFKT1IgQi0zKSkKICAgICAgImJub2xyJHBhY2skaGludF9ub3RfdGFrZW4iCiAgICAgICgrIHBhY2sgSUNDX25ldiAoSUNDaV8yLW51bGwpIE9QXzBFIGhpbnRfbm90X3Rha2VuIE9QRTNfMDIgKGNjb25kLW51bGwpIChzMTItbnVsbCkpCiAgICAgIChjLWNhbGwgVk9JRCAiQGNwdUBfbW9kZWxfYnJhbmNoIiAoc3ByLWxyKSBoaW50X25vdF90YWtlbikKLSAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpCisgICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI0NTAgKHVuaXQgdS1icmFuY2gpKQogICAgICAgKGZyNTAwICh1bml0IHUtYnJhbmNoKSkgKGZyNTUwICh1bml0IHUtYnJhbmNoKSkpCiApCiAKQEAgLTU0NTgsMjMgKzU5NzQsMjUgQEAKIAogKGRuaSBmYnJhbHIKICAgICAgImZsb2F0IGNjbHIgYnJhbmNoIGFsd2F5cyIKLSAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItMykgKEZSNTUwLU1BSk9SIEItMykgKEZSNDAwLU1BSk9SIEItMykgRlItQUNDRVNTKQorICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi0zKSAoRlI1NTAtTUFKT1IgQi0zKQorICAgICAgKEZSNDAwLU1BSk9SIEItMykgKEZSNDUwLU1BSk9SIEItMykgRlItQUNDRVNTKQogICAgICAiZmJyYWxyJHBhY2skaGludF90YWtlbiIKICAgICAgKCsgcGFjayBGQ0NfcmEgKEZDQ2lfMi1udWxsKSBPUF8wRSBoaW50X3Rha2VuIE9QRTNfMDYgKGNjb25kLW51bGwpIChzMTItbnVsbCkpCiAgICAgIChzZXF1ZW5jZSAoKQogCSAgICAgICAoYy1jYWxsIFZPSUQgIkBjcHVAX21vZGVsX2JyYW5jaCIgKHNwci1scikgaGludF90YWtlbikKIAkgICAgICAgKHNldCBwYyAoc3ByLWxyKSkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKQorICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkgKGZyNDUwICh1bml0IHUtYnJhbmNoKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWJyYW5jaCkpIChmcjU1MCAodW5pdCB1LWJyYW5jaCkpKQogKQogCiAoZG5pIGZibm9scgogICAgICAiZmxvYXQgY2NsciBicmFuY2ggbmV2ZXIiCi0gICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTMpIChGUjU1MC1NQUpPUiBCLTMpIChGUjQwMC1NQUpPUiBCLTMpIEZSLUFDQ0VTUykKKyAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItMykgKEZSNTUwLU1BSk9SIEItMykKKyAgICAgIChGUjQwMC1NQUpPUiBCLTMpIChGUjQ1MC1NQUpPUiBCLTMpIEZSLUFDQ0VTUykKICAgICAgImZibm9sciRwYWNrJGhpbnRfbm90X3Rha2VuIgogICAgICAoKyBwYWNrIEZDQ19uZXYgKEZDQ2lfMi1udWxsKSBPUF8wRSBoaW50X25vdF90YWtlbiBPUEUzXzA2IChjY29uZC1udWxsKSAoczEyLW51bGwpKQogICAgICAoYy1jYWxsIFZPSUQgIkBjcHVAX21vZGVsX2JyYW5jaCIgKHNwci1scikgaGludF9ub3RfdGFrZW4pCi0gICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKQorICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkgKGZyNDUwICh1bml0IHUtYnJhbmNoKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWJyYW5jaCkpIChmcjU1MCAodW5pdCB1LWJyYW5jaCkpKQogKQogCkBAIC01NDk2LDM4ICs2MDE0LDQxIEBACiAoZGVmaW5lLXBtYWNybyAoY29uZGl0aW9uYWwtYnJhbmNoLWN0cmxyIHByZWZpeCBjYyBpLWYgb3Agb3BlIGNvbmQgYXR0ciBjb21tZW50KQogICAoZG5pICguc3ltIHByZWZpeCBjYyBscikKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgQjApIChGUjUwMC1NQUpPUiBCLTIpIChGUjU1MC1NQUpPUiBCLTIpIChGUjQwMC1NQUpPUiBCLTIpIGF0dHIpCisgICAgICAgKChVTklUIEIwKSAoRlI1MDAtTUFKT1IgQi0yKSAoRlI1NTAtTUFKT1IgQi0yKQorCShGUjQwMC1NQUpPUiBCLTIpIChGUjQ1MC1NQUpPUiBCLTIpIGF0dHIpCiAgICAgICAgKC5zdHIgKC5zeW0gcHJlZml4IGNjIGxyKSAiJHBhY2sgJCIgaS1mICJDQ2lfMiwkY2NvbmQsJGhpbnQiKQogICAgICAgICgrIHBhY2sgKC5zeW0gaS1mIENDXyBjYykgKC5zeW0gaS1mIENDaV8yKSBvcCBoaW50IG9wZSBjY29uZCAoczEyLW51bGwpKQogICAgICAgIChzZXF1ZW5jZSAoKQogCQkgKGMtY2FsbCBWT0lEICJAY3B1QF9tb2RlbF9icmFuY2giIChzcHItbHIpIGhpbnQpCiAJCSAoY3RybHItYnJhbmNoLXNlbWFudGljcyAoY29uZCAoLnN5bSBpLWYgQ0NpXzIpKSBjY29uZCkpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpIChmcjQ1MCAodW5pdCB1LWJyYW5jaCkpCiAJKGZyNTAwICh1bml0IHUtYnJhbmNoKSkgKGZyNTUwICh1bml0IHUtYnJhbmNoKSkpCiAgICkKICkKIAogKGRuaSBiY3JhbHIKICAgICAgImludGVnZXIgY3RybHIgYnJhbmNoIGFsd2F5cyIKLSAgICAgKChVTklUIEIwKSAoRlI1MDAtTUFKT1IgQi0yKSAoRlI1NTAtTUFKT1IgQi0yKSAoRlI0MDAtTUFKT1IgQi0yKSkKKyAgICAgKChVTklUIEIwKSAoRlI1MDAtTUFKT1IgQi0yKSAoRlI1NTAtTUFKT1IgQi0yKQorICAgICAgKEZSNDAwLU1BSk9SIEItMikgKEZSNDUwLU1BSk9SIEItMikpCiAgICAgICJiY3JhbHIkcGFjayAkY2NvbmQkaGludF90YWtlbiIKICAgICAgKCsgcGFjayBJQ0NfcmEgKElDQ2lfMi1udWxsKSBPUF8wRSBoaW50X3Rha2VuIE9QRTNfMDMgY2NvbmQgKHMxMi1udWxsKSkKICAgICAgKHNlcXVlbmNlICgpCiAJICAgICAgIChjLWNhbGwgVk9JRCAiQGNwdUBfbW9kZWxfYnJhbmNoIiAoc3ByLWxyKSBoaW50X3Rha2VuKQogCSAgICAgICAoY3RybHItYnJhbmNoLXNlbWFudGljcyAoY29uc3QgQkkgMSkgY2NvbmQpKQotICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpIChmcjQ1MCAodW5pdCB1LWJyYW5jaCkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI1NTAgKHVuaXQgdS1icmFuY2gpKSkKICkKIAogKGRuaSBiY25vbHIKICAgICAgImludGVnZXIgY3RybHIgYnJhbmNoIG5ldmVyIgotICAgICAoKFVOSVQgQjApIChGUjUwMC1NQUpPUiBCLTIpIChGUjU1MC1NQUpPUiBCLTIpIChGUjQwMC1NQUpPUiBCLTIpKQorICAgICAoKFVOSVQgQjApIChGUjUwMC1NQUpPUiBCLTIpIChGUjU1MC1NQUpPUiBCLTIpCisgICAgICAoRlI0MDAtTUFKT1IgQi0yKSAoRlI0NTAtTUFKT1IgQi0yKSkKICAgICAgImJjbm9sciRwYWNrJGhpbnRfbm90X3Rha2VuIgogICAgICAoKyBwYWNrIElDQ19uZXYgKElDQ2lfMi1udWxsKSBPUF8wRSBoaW50X25vdF90YWtlbiBPUEUzXzAzIChjY29uZC1udWxsKSAoczEyLW51bGwpKQogICAgICAoc2VxdWVuY2UgKCkKIAkgICAgICAgKGMtY2FsbCBWT0lEICJAY3B1QF9tb2RlbF9icmFuY2giIChzcHItbHIpIGhpbnRfbm90X3Rha2VuKQogCSAgICAgICAoY3RybHItYnJhbmNoLXNlbWFudGljcyAoY29uc3QgQkkgMCkgY2NvbmQpKQotICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpIChmcjQ1MCAodW5pdCB1LWJyYW5jaCkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI1NTAgKHVuaXQgdS1icmFuY2gpKSkKICkKIApAQCAtNTU0OCwyNSArNjA2OSwyNyBAQAogCiAoZG5pIGZjYnJhbHIKICAgICAgImZsb2F0IGN0cmxyIGJyYW5jaCBhbHdheXMiCi0gICAgICgoVU5JVCBCMCkgKEZSNTAwLU1BSk9SIEItMikgKEZSNTUwLU1BSk9SIEItMikgKEZSNDAwLU1BSk9SIEItMikgRlItQUNDRVNTKQorICAgICAoKFVOSVQgQjApIChGUjUwMC1NQUpPUiBCLTIpIChGUjU1MC1NQUpPUiBCLTIpCisgICAgICAoRlI0MDAtTUFKT1IgQi0yKSAoRlI0NTAtTUFKT1IgQi0yKSBGUi1BQ0NFU1MpCiAgICAgICJmY2JyYWxyJHBhY2sgJGNjb25kJGhpbnRfdGFrZW4iCiAgICAgICgrIHBhY2sgRkNDX3JhIChGQ0NpXzItbnVsbCkgT1BfMEUgaGludF90YWtlbiBPUEUzXzA3IGNjb25kIChzMTItbnVsbCkpCiAgICAgIChzZXF1ZW5jZSAoKQogCSAgICAgICAoYy1jYWxsIFZPSUQgIkBjcHVAX21vZGVsX2JyYW5jaCIgKHNwci1scikgaGludF90YWtlbikKIAkgICAgICAgKGN0cmxyLWJyYW5jaC1zZW1hbnRpY3MgKGNvbnN0IEJJIDEpIGNjb25kKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpCisgICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI0NTAgKHVuaXQgdS1icmFuY2gpKQogICAgICAgKGZyNTAwICh1bml0IHUtYnJhbmNoKSkgKGZyNTUwICh1bml0IHUtYnJhbmNoKSkpCiApCiAKIChkbmkgZmNibm9scgogICAgICAiZmxvYXQgY3RybHIgYnJhbmNoIG5ldmVyIgotICAgICAoKFVOSVQgQjApIChGUjUwMC1NQUpPUiBCLTIpIChGUjU1MC1NQUpPUiBCLTIpIChGUjQwMC1NQUpPUiBCLTIpIEZSLUFDQ0VTUykKKyAgICAgKChVTklUIEIwKSAoRlI1MDAtTUFKT1IgQi0yKSAoRlI1NTAtTUFKT1IgQi0yKQorICAgICAgKEZSNDAwLU1BSk9SIEItMikgKEZSNDUwLU1BSk9SIEItMikgRlItQUNDRVNTKQogICAgICAiZmNibm9sciRwYWNrJGhpbnRfbm90X3Rha2VuIgogICAgICAoKyBwYWNrIEZDQ19uZXYgKEZDQ2lfMi1udWxsKSBPUF8wRSBoaW50X25vdF90YWtlbiBPUEUzXzA3IChjY29uZC1udWxsKSAoczEyLW51bGwpKQogICAgICAoc2VxdWVuY2UgKCkKIAkgICAgICAgKGMtY2FsbCBWT0lEICJAY3B1QF9tb2RlbF9icmFuY2giIChzcHItbHIpIGhpbnRfbm90X3Rha2VuKQogCSAgICAgICAoY3RybHItYnJhbmNoLXNlbWFudGljcyAoY29uc3QgQkkgMCkgY2NvbmQpKQotICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpIChmcjQ1MCAodW5pdCB1LWJyYW5jaCkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI1NTAgKHVuaXQgdS1icmFuY2gpKSkKICkKIApAQCAtNTU5Niw2MCArNjExOSw2NiBAQAogCiAoZG5pIGptcGwKICAgICAgImp1bXAgYW5kIGxpbmsiCi0gICAgICgoVU5JVCBJMCkgKEZSNTAwLU1BSk9SIEktNSkgKEZSNTUwLU1BSk9SIEktNikgKEZSNDAwLU1BSk9SIEktNSkpCisgICAgICgoVU5JVCBJMCkgKEZSNTAwLU1BSk9SIEktNSkgKEZSNTUwLU1BSk9SIEktNikKKyAgICAgIChGUjQwMC1NQUpPUiBJLTUpIChGUjQ1MC1NQUpPUiBJLTUpKQogICAgICAiam1wbCRwYWNrIEAoJEdSaSwkR1JqKSIKICAgICAgKCsgcGFjayAobWlzYy1udWxsLTEpIChMSS1vZmYpIE9QXzBDIEdSaSAobWlzYy1udWxsLTIpIEdSaikKICAgICAgKGp1bXAtYW5kLWxpbmstc2VtYW50aWNzIEdSaSBHUmogTEkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKQorICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkgKGZyNDUwICh1bml0IHUtYnJhbmNoKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWJyYW5jaCkpIChmcjU1MCAodW5pdCB1LWJyYW5jaCkpKQogKQogCiAoZG5pIGNhbGxsCiAgICAgICJjYWxsIGFuZCBsaW5rIgotICAgICAoKFVOSVQgSTApIChGUjUwMC1NQUpPUiBJLTUpIChGUjQwMC1NQUpPUiBJLTUpKQorICAgICAoKFVOSVQgSTApIChGUjUwMC1NQUpPUiBJLTUpIChGUjU1MC1NQUpPUiBJLTYpCisgICAgICAoRlI0MDAtTUFKT1IgSS01KSAoRlI0NTAtTUFKT1IgSS01KSkKICAgICAgImNhbGxsJHBhY2sgQCgkR1JpLCRHUmopIgogICAgICAoKyBwYWNrIChtaXNjLW51bGwtMSkgKExJLW9uKSBPUF8wQyBHUmkgKG1pc2MtbnVsbC0yKSBHUmopCiAgICAgIChqdW1wLWFuZC1saW5rLXNlbWFudGljcyBHUmkgR1JqIExJKQotICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkKLSAgICAgIChmcjUwMCAodW5pdCB1LWJyYW5jaCkpKQorICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkgKGZyNDUwICh1bml0IHUtYnJhbmNoKSkKKyAgICAgIChmcjUwMCAodW5pdCB1LWJyYW5jaCkpIChmcjU1MCAodW5pdCB1LWJyYW5jaCkpKQogKQogCiAoZG5pIGptcGlsCiAgICAgICJqdW1wIGltbWVkaWF0ZSBhbmQgbGluayIKLSAgICAgKChVTklUIEkwKSAoRlI1MDAtTUFKT1IgSS01KSAoRlI1NTAtTUFKT1IgSS02KSAoRlI0MDAtTUFKT1IgSS01KSkKKyAgICAgKChVTklUIEkwKSAoRlI1MDAtTUFKT1IgSS01KSAoRlI1NTAtTUFKT1IgSS02KQorICAgICAgKEZSNDAwLU1BSk9SIEktNSkgKEZSNDUwLU1BSk9SIEktNSkpCiAgICAgICJqbXBpbCRwYWNrIEAoJEdSaSwkczEyKSIKICAgICAgKCsgcGFjayAobWlzYy1udWxsLTEpIChMSS1vZmYpIE9QXzBEIEdSaSBzMTIpCiAgICAgIChqdW1wLWFuZC1saW5rLXNlbWFudGljcyBHUmkgczEyIExJKQotICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWJyYW5jaCkpIChmcjQ1MCAodW5pdCB1LWJyYW5jaCkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI1NTAgKHVuaXQgdS1icmFuY2gpKSkKICkKIAogKGRuaSBjYWxsaWwKICAgICAgImNhbGwgaW1tZWRpYXRlIGFuZCBsaW5rIgotICAgICAoKFVOSVQgSTApIChGUjUwMC1NQUpPUiBJLTUpIChGUjQwMC1NQUpPUiBJLTUpKQorICAgICAoKFVOSVQgSTApIChGUjUwMC1NQUpPUiBJLTUpIChGUjU1MC1NQUpPUiBJLTYpCisgICAgICAoRlI0MDAtTUFKT1IgSS01KSAoRlI0NTAtTUFKT1IgSS01KSkKICAgICAgImNhbGxpbCRwYWNrIEAoJEdSaSwkczEyKSIKICAgICAgKCsgcGFjayAobWlzYy1udWxsLTEpIChMSS1vbikgT1BfMEQgR1JpIHMxMikKICAgICAgKGp1bXAtYW5kLWxpbmstc2VtYW50aWNzIEdSaSBzMTIgTEkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKQotICAgICAgKGZyNTAwICh1bml0IHUtYnJhbmNoKSkpCisgICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI0NTAgKHVuaXQgdS1icmFuY2gpKQorICAgICAgKGZyNTAwICh1bml0IHUtYnJhbmNoKSkgKGZyNTUwICh1bml0IHUtYnJhbmNoKSkpCiApCiAKIChkbmkgY2FsbAogICAgICAiY2FsbCBhbmQgbGluayIKLSAgICAgKChVTklUIEIwKSAoRlI1MDAtTUFKT1IgQi00KSAoRlI1NTAtTUFKT1IgQi00KSAoRlI0MDAtTUFKT1IgQi00KSkKKyAgICAgKChVTklUIEIwKSAoRlI1MDAtTUFKT1IgQi00KSAoRlI1NTAtTUFKT1IgQi00KQorICAgICAgKEZSNDAwLU1BSk9SIEItNCkgKEZSNDUwLU1BSk9SIEItNCkpCiAgICAgICJjYWxsJHBhY2sgJGxhYmVsMjQiCiAgICAgICgrIHBhY2sgT1BfMEYgbGFiZWwyNCkKICAgICAgKHNlcXVlbmNlICgpCiAJICAgICAgIChjLWNhbGwgVk9JRCAiQGNwdUBfc2V0X3dyaXRlX25leHRfdmxpd19hZGRyX3RvX0xSIiAxKQogCSAgICAgICAoc2V0IHBjIGxhYmVsMjQpCiAJICAgICAgIChjLWNhbGwgVk9JRCAiQGNwdUBfbW9kZWxfYnJhbmNoIiBwYyAjeDIpKSA7IGhpbnQgYnJhbmNoIHRha2VuCi0gICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKQorICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkgKGZyNDUwICh1bml0IHUtYnJhbmNoKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWJyYW5jaCkpIChmcjU1MCAodW5pdCB1LWJyYW5jaCkpKQogKQogCiAoZG5pIHJldHQKICAgICAicmV0dXJuIGZyb20gdHJhcCIKLSAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMikgKEZSNTUwLU1BSk9SIEMtMikgKEZSNDAwLU1BSk9SIEMtMikgUFJJVklMRUdFRCkKKyAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMikgKEZSNTUwLU1BSk9SIEMtMikKKyAgICAgKEZSNDAwLU1BSk9SIEMtMikgKEZSNDUwLU1BSk9SIEMtMikgUFJJVklMRUdFRCkKICAgICAicmV0dCRwYWNrICRkZWJ1ZyIKICAgICAoKyBwYWNrIChtaXNjLW51bGwtMSkgZGVidWcgT1BfMDUgKHJzLW51bGwpIChzMTItbnVsbCkpCiAgICAgOyBmcnZfcmV0dCBoYW5kbGVzIG9wZXJhdGluZyB2cyB1c2VyIG1vZGUKQEAgLTU3MDAsMzIgKzYyMjksMzUgQEAKIChkZWZpbmUtcG1hY3JvICh0cmFwLXIgcHJlZml4IGNjIGktZiBvcCBvcGUgY29uZCBhdHRyIGNvbW1lbnQpCiAgIChkbmkgKC5zeW0gcHJlZml4IGNjKQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0xKSAoRlI1NTAtTUFKT1IgQy0xKSAoRlI0MDAtTUFKT1IgQy0xKSBhdHRyKQorICAgICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0xKSAoRlI1NTAtTUFKT1IgQy0xKQorCShGUjQwMC1NQUpPUiBDLTEpIChGUjQ1MC1NQUpPUiBDLTEpIGF0dHIpCiAgICAgICAgKC5zdHIgKC5zeW0gcHJlZml4IGNjKSAiJHBhY2sgJCIgaS1mICJDQ2lfMiwkR1JpLCRHUmoiKQogICAgICAgICgrIHBhY2sgKC5zeW0gaS1mIENDXyBjYykgKC5zeW0gaS1mIENDaV8yKSBvcCBHUmkgKG1pc2MtbnVsbC0zKSBvcGUgR1JqKQogICAgICAgICh0cmFwLXNlbWFudGljcyAoY29uZCAoLnN5bSBpLWYgQ0NpXzIpKSBHUmkgR1JqKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS10cmFwKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtdHJhcCkpIChmcjQ1MCAodW5pdCB1LXRyYXApKQogCShmcjUwMCAodW5pdCB1LXRyYXApKSAoZnI1NTAgKHVuaXQgdS10cmFwKSkpCiAgICkKICkKIAogKGRuaSB0cmEKICAgICAgImludGVnZXIgdHJhcCBhbHdheXMiCi0gICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0xKSAoRlI1NTAtTUFKT1IgQy0xKSAoRlI0MDAtTUFKT1IgQy0xKSkKKyAgICAgKChVTklUIEMpIChGUjUwMC1NQUpPUiBDLTEpIChGUjU1MC1NQUpPUiBDLTEpCisgICAgICAoRlI0MDAtTUFKT1IgQy0xKSAoRlI0NTAtTUFKT1IgQy0xKSkKICAgICAgInRyYSRwYWNrICRHUmksJEdSaiIKICAgICAgKCsgcGFjayBJQ0NfcmEgKElDQ2lfMi1udWxsKSBPUF8wNCBHUmkgKG1pc2MtbnVsbC0zKSBPUEU0XzAgR1JqKQogICAgICAodHJhcC1zZW1hbnRpY3MgKGNvbnN0IEJJIDEpIEdSaSBHUmopCi0gICAgICgoZnI0MDAgKHVuaXQgdS10cmFwKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LXRyYXApKSAoZnI0NTAgKHVuaXQgdS10cmFwKSkKICAgICAgIChmcjUwMCAodW5pdCB1LXRyYXApKSAoZnI1NTAgKHVuaXQgdS10cmFwKSkpCiApCiAKIChkbmkgdG5vCiAgICAgICJpbnRlZ2VyIHRyYXAgbmV2ZXIiCi0gICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0xKSAoRlI1NTAtTUFKT1IgQy0xKSAoRlI0MDAtTUFKT1IgQy0xKSkKKyAgICAgKChVTklUIEMpIChGUjUwMC1NQUpPUiBDLTEpIChGUjU1MC1NQUpPUiBDLTEpCisgICAgICAoRlI0MDAtTUFKT1IgQy0xKSAoRlI0NTAtTUFKT1IgQy0xKSkKICAgICAgInRubyRwYWNrIgogICAgICAoKyBwYWNrIElDQ19uZXYgKElDQ2lfMi1udWxsKSBPUF8wNCAoR1JpLW51bGwpIChtaXNjLW51bGwtMykgT1BFNF8wIChHUmotbnVsbCkpCiAgICAgICh0cmFwLXNlbWFudGljcyAoY29uc3QgQkkgMCkgR1JpIEdSaikKLSAgICAgKChmcjQwMCAodW5pdCB1LXRyYXApKQorICAgICAoKGZyNDAwICh1bml0IHUtdHJhcCkpIChmcjQ1MCAodW5pdCB1LXRyYXApKQogICAgICAgKGZyNTAwICh1bml0IHUtdHJhcCkpIChmcjU1MCAodW5pdCB1LXRyYXApKSkKICkKIApAQCAtNTc0NiwyMSArNjI3OCwyMyBAQAogCiAoZG5pIGZ0cmEKICAgICAgImZsb2F0IHRyYXAgYWx3YXlzIgotICAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMSkgKEZSNTUwLU1BSk9SIEMtMSkgKEZSNDAwLU1BSk9SIEMtMSkgRlItQUNDRVNTKQorICAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMSkgKEZSNTUwLU1BSk9SIEMtMSkKKyAgICAgIChGUjQwMC1NQUpPUiBDLTEpIChGUjQ1MC1NQUpPUiBDLTEpIEZSLUFDQ0VTUykKICAgICAgImZ0cmEkcGFjayAkR1JpLCRHUmoiCiAgICAgICgrIHBhY2sgRkNDX3JhIChGQ0NpXzItbnVsbCkgT1BfMDQgR1JpIChtaXNjLW51bGwtMykgT1BFNF8xIEdSaikKICAgICAgKHRyYXAtc2VtYW50aWNzIChjb25zdCBCSSAxKSBHUmkgR1JqKQotICAgICAoKGZyNDAwICh1bml0IHUtdHJhcCkpCisgICAgICgoZnI0MDAgKHVuaXQgdS10cmFwKSkgKGZyNDUwICh1bml0IHUtdHJhcCkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS10cmFwKSkgKGZyNTUwICh1bml0IHUtdHJhcCkpKQogKQogCiAoZG5pIGZ0bm8KICAgICAgImZsb3N0IHRyYXAgbmV2ZXIiCi0gICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0xKSAoRlI1NTAtTUFKT1IgQy0xKSAoRlI0MDAtTUFKT1IgQy0xKSBGUi1BQ0NFU1MpCisgICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0xKSAoRlI1NTAtTUFKT1IgQy0xKQorICAgICAgKEZSNDAwLU1BSk9SIEMtMSkgKEZSNDUwLU1BSk9SIEMtMSkgRlItQUNDRVNTKQogICAgICAiZnRubyRwYWNrIgogICAgICAoKyBwYWNrIEZDQ19uZXYgKEZDQ2lfMi1udWxsKSBPUF8wNCAoR1JpLW51bGwpIChtaXNjLW51bGwtMykgT1BFNF8xIChHUmotbnVsbCkpCiAgICAgICh0cmFwLXNlbWFudGljcyAoY29uc3QgQkkgMCkgR1JpIEdSaikKLSAgICAgKChmcjQwMCAodW5pdCB1LXRyYXApKQorICAgICAoKGZyNDAwICh1bml0IHUtdHJhcCkpIChmcjQ1MCAodW5pdCB1LXRyYXApKQogICAgICAgKGZyNTAwICh1bml0IHUtdHJhcCkpIChmcjU1MCAodW5pdCB1LXRyYXApKSkKICkKIApAQCAtNTc4MiwzMiArNjMxNiwzNSBAQAogKGRlZmluZS1wbWFjcm8gKHRyYXAtaW1tZWQgcHJlZml4IGNjIGktZiBvcCBjb25kIGF0dHIgY29tbWVudCkKICAgKGRuaSAoLnN5bSBwcmVmaXggY2MpCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEMpIChGUjUwMC1NQUpPUiBDLTEpIChGUjU1MC1NQUpPUiBDLTEpIChGUjQwMC1NQUpPUiBDLTEpIGF0dHIpCisgICAgICAgKChVTklUIEMpIChGUjUwMC1NQUpPUiBDLTEpIChGUjU1MC1NQUpPUiBDLTEpCisJKEZSNDAwLU1BSk9SIEMtMSkgKEZSNDUwLU1BSk9SIEMtMSkgYXR0cikKICAgICAgICAoLnN0ciAoLnN5bSBwcmVmaXggY2MpICIkcGFjayAkIiBpLWYgIkNDaV8yLCRHUmksJHMxMiIpCiAgICAgICAgKCsgcGFjayAoLnN5bSBpLWYgQ0NfIGNjKSAoLnN5bSBpLWYgQ0NpXzIpIG9wIEdSaSBzMTIpCiAgICAgICAgKHRyYXAtc2VtYW50aWNzIChjb25kICguc3ltIGktZiBDQ2lfMikpIEdSaSBzMTIpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LXRyYXApKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS10cmFwKSkgKGZyNDUwICh1bml0IHUtdHJhcCkpCiAJKGZyNTAwICh1bml0IHUtdHJhcCkpIChmcjU1MCAodW5pdCB1LXRyYXApKSkKICAgKQogKQogCiAoZG5pIHRpcmEKICAgICAgImludGVnZXIgdHJhcCBhbHdheXMiCi0gICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0xKSAoRlI1NTAtTUFKT1IgQy0xKSAoRlI0MDAtTUFKT1IgQy0xKSkKKyAgICAgKChVTklUIEMpIChGUjUwMC1NQUpPUiBDLTEpIChGUjU1MC1NQUpPUiBDLTEpCisgICAgICAoRlI0MDAtTUFKT1IgQy0xKSAoRlI0NTAtTUFKT1IgQy0xKSkKICAgICAgInRpcmEkcGFjayAkR1JpLCRzMTIiCiAgICAgICgrIHBhY2sgSUNDX3JhIChJQ0NpXzItbnVsbCkgT1BfMUMgR1JpIHMxMikKICAgICAgKHRyYXAtc2VtYW50aWNzIChjb25zdCBCSSAxKSBHUmkgczEyKQotICAgICAoKGZyNDAwICh1bml0IHUtdHJhcCkpCisgICAgICgoZnI0MDAgKHVuaXQgdS10cmFwKSkgKGZyNDUwICh1bml0IHUtdHJhcCkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS10cmFwKSkgKGZyNTUwICh1bml0IHUtdHJhcCkpKQogKQogCiAoZG5pIHRpbm8KICAgICAgImludGVnZXIgdHJhcCBuZXZlciIKLSAgICAgKChVTklUIEMpIChGUjUwMC1NQUpPUiBDLTEpIChGUjU1MC1NQUpPUiBDLTEpIChGUjQwMC1NQUpPUiBDLTEpKQorICAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMSkgKEZSNTUwLU1BSk9SIEMtMSkKKyAgICAgIChGUjQwMC1NQUpPUiBDLTEpIChGUjQ1MC1NQUpPUiBDLTEpKQogICAgICAidGlubyRwYWNrIgogICAgICAoKyBwYWNrIElDQ19uZXYgKElDQ2lfMi1udWxsKSBPUF8xQyAoR1JpLW51bGwpIChzMTItbnVsbCkpCiAgICAgICh0cmFwLXNlbWFudGljcyAoY29uc3QgQkkgMCkgR1JpIHMxMikKLSAgICAgKChmcjQwMCAodW5pdCB1LXRyYXApKQorICAgICAoKGZyNDAwICh1bml0IHUtdHJhcCkpIChmcjQ1MCAodW5pdCB1LXRyYXApKQogICAgICAgKGZyNTAwICh1bml0IHUtdHJhcCkpIChmcjU1MCAodW5pdCB1LXRyYXApKSkKICkKIApAQCAtNTgyOCw3ICs2MzY1LDggQEAKIAogKGRuaSBmdGlyYQogICAgICAiZmxvYXQgdHJhcCBhbHdheXMiCi0gICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0xKSAoRlI1NTAtTUFKT1IgQy0xKSAoRlI0MDAtTUFKT1IgQy0xKSBGUi1BQ0NFU1MpCisgICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0xKSAoRlI1NTAtTUFKT1IgQy0xKQorICAgICAgKEZSNDAwLU1BSk9SIEMtMSkgKEZSNDUwLU1BSk9SIEMtMSkgRlItQUNDRVNTKQogICAgICAiZnRpcmEkcGFjayAkR1JpLCRzMTIiCiAgICAgICgrIHBhY2sgRkNDX3JhIChJQ0NpXzItbnVsbCkgT1BfMUQgR1JpIHMxMikKICAgICAgKHRyYXAtc2VtYW50aWNzIChjb25zdCBCSSAxKSBHUmkgczEyKQpAQCAtNTgzOCwxMSArNjM3NiwxMiBAQAogCiAoZG5pIGZ0aW5vCiAgICAgICJmbG9hdCB0cmFwIG5ldmVyIgotICAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMSkgKEZSNTUwLU1BSk9SIEMtMSkgKEZSNDAwLU1BSk9SIEMtMSkgRlItQUNDRVNTKQorICAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMSkgKEZSNTUwLU1BSk9SIEMtMSkKKyAgICAgIChGUjQwMC1NQUpPUiBDLTEpIChGUjQ1MC1NQUpPUiBDLTEpIEZSLUFDQ0VTUykKICAgICAgImZ0aW5vJHBhY2siCiAgICAgICgrIHBhY2sgRkNDX25ldiAoRkNDaV8yLW51bGwpIE9QXzFEIChHUmktbnVsbCkgKHMxMi1udWxsKSkKICAgICAgKHRyYXAtc2VtYW50aWNzIChjb25zdCBCSSAwKSBHUmkgczEyKQotICAgICAoKGZyNDAwICh1bml0IHUtdHJhcCkpCisgICAgICgoZnI0MDAgKHVuaXQgdS10cmFwKSkgKGZyNDUwICh1bml0IHUtdHJhcCkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS10cmFwKSkgKGZyNTUwICh1bml0IHUtdHJhcCkpKQogKQogCkBAIC01ODYzLDcgKzY0MDIsOCBAQAogCiAoZG5pIGJyZWFrCiAgICAgICJicmVhayB0cmFwIgotICAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMSkgKEZSNTUwLU1BSk9SIEMtMSkgKEZSNDAwLU1BSk9SIEMtMSkpCisgICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0xKSAoRlI1NTAtTUFKT1IgQy0xKQorICAgICAgKEZSNDAwLU1BSk9SIEMtMSkgKEZSNDUwLU1BSk9SIEMtMSkpCiAgICAgICJicmVhayRwYWNrIgogICAgICAoKyBwYWNrIChyZC1udWxsKSBPUF8wNCAocnMtbnVsbCkgKG1pc2MtbnVsbC0zKSBPUEU0XzMgKEdSai1udWxsKSkKICAgICAgKHNlcXVlbmNlICgpCkBAIC01ODkxLDcgKzY0MzEsOCBAQAogCiAoZG5pIG10cmFwCiAgICAgICJtZWRpYSB0cmFwIgotICAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMSkgKEZSNTUwLU1BSk9SIEMtMSkgKEZSNDAwLU1BSk9SIEMtMSkgRlItQUNDRVNTKQorICAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMSkgKEZSNTUwLU1BSk9SIEMtMSkKKyAgICAgIChGUjQwMC1NQUpPUiBDLTEpIChGUjQ1MC1NQUpPUiBDLTEpIEZSLUFDQ0VTUykKICAgICAgIm10cmFwJHBhY2siCiAgICAgICgrIHBhY2sgKHJkLW51bGwpIE9QXzA0IChycy1udWxsKSAobWlzYy1udWxsLTMpIE9QRTRfMiAoR1JqLW51bGwpKQogICAgICAoYy1jYWxsIFZPSUQgImZydl9tdHJhcCIpCkBAIC01OTAxLDcgKzY0NDIsOCBAQAogKGRlZmluZS1wbWFjcm8gKGNvbmRpdGlvbi1jb2RlLWxvZ2ljIG5hbWUgb3BlcmF0aW9uIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi02KSAoRlI1NTAtTUFKT1IgQi02KSAoRlI0MDAtTUFKT1IgQi02KSkKKyAgICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi02KSAoRlI1NTAtTUFKT1IgQi02KQorCShGUjQwMC1NQUpPUiBCLTYpIChGUjQ1MC1NQUpPUiBCLTYpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRDUmksJENSaiwkQ1JrIikKICAgICAgICAoKyBwYWNrIChtaXNjLW51bGwtNikgQ1JrIE9QXzBBIChtaXNjLW51bGwtNykgQ1JpIG9wZSAobWlzYy1udWxsLTgpIENSaikKICAgICAgICAoc2V0IENSayAoYy1jYWxsIFVRSSAiQGNwdUBfY3JfbG9naWMiIG9wZXJhdGlvbiBDUmkgQ1JqKSkKQEAgLTU5MzQsNyArNjQ3Niw4IEBACiAKIChkbmkgbm90Y3IKICAgICAgKCJub3QgY2NjciByZWdpc3RlciIpCi0gICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTYpIChGUjU1MC1NQUpPUiBCLTYpIChGUjQwMC1NQUpPUiBCLTYpKQorICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi02KSAoRlI1NTAtTUFKT1IgQi02KQorICAgICAgKEZSNDAwLU1BSk9SIEItNikgKEZSNDUwLU1BSk9SIEItNikpCiAgICAgICguc3RyIG5vdGNyICIkcGFjayAkQ1JqLCRDUmsiKQogICAgICAoKyBwYWNrIChtaXNjLW51bGwtNikgQ1JrIE9QXzBBIChycy1udWxsKSBPUEUxXzBCIChtaXNjLW51bGwtOCkgQ1JqKQogICAgICAoc2V0IENSayAoeG9yIENSaiAxKSkKQEAgLTU5NDgsMzIgKzY0OTEsMzUgQEAKIChkZWZpbmUtcG1hY3JvIChjaGVjay1pbnQtY29uZGl0aW9uLWNvZGUgcHJlZml4IGNjIG9wIGNvbmQgY29tbWVudCkKICAgKGRuaSAoLnN5bSBwcmVmaXggY2MpCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItNSkgKEZSNTUwLU1BSk9SIEItNSkgKEZSNDAwLU1BSk9SIEItNSkpCisgICAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItNSkgKEZSNTUwLU1BSk9SIEItNSkKKwkoRlI0MDAtTUFKT1IgQi01KSAoRlI0NTAtTUFKT1IgQi01KSkKICAgICAgICAoLnN0ciAoLnN5bSBwcmVmaXggY2MpICIkcGFjayAkSUNDaV8zLCRDUmpfaW50IikKICAgICAgICAoKyBwYWNrICguc3ltIElDQ18gY2MpIENSal9pbnQgb3AgKG1pc2MtbnVsbC01KSBJQ0NpXzMpCiAgICAgICAgKGNoZWNrLXNlbWFudGljcyAoY29uZCBJQ0NpXzMpIENSal9pbnQpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LWNoZWNrKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtY2hlY2spKSAoZnI0NTAgKHVuaXQgdS1jaGVjaykpCiAJKGZyNTAwICh1bml0IHUtY2hlY2spKSAoZnI1NTAgKHVuaXQgdS1jaGVjaykpKQogICApCiApCiAKIChkbmkgY2tyYQogICAgICAiY2hlY2sgaW50ZWdlciBjYyBhbHdheXMiCi0gICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTUpIChGUjU1MC1NQUpPUiBCLTUpIChGUjQwMC1NQUpPUiBCLTUpKQorICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi01KSAoRlI1NTAtTUFKT1IgQi01KQorICAgICAgKEZSNDAwLU1BSk9SIEItNSkgKEZSNDUwLU1BSk9SIEItNSkpCiAgICAgICJja3JhJHBhY2sgJENSal9pbnQiCiAgICAgICgrIHBhY2sgSUNDX3JhIENSal9pbnQgT1BfMDggKG1pc2MtbnVsbC01KSAoSUNDaV8zLW51bGwpKQogICAgICAoY2hlY2stc2VtYW50aWNzIChjb25zdCBCSSAxKSBDUmpfaW50KQotICAgICAoKGZyNDAwICh1bml0IHUtY2hlY2spKQorICAgICAoKGZyNDAwICh1bml0IHUtY2hlY2spKSAoZnI0NTAgKHVuaXQgdS1jaGVjaykpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1jaGVjaykpIChmcjU1MCAodW5pdCB1LWNoZWNrKSkpCiApCiAKIChkbmkgY2tubwogICAgICAiY2hlY2sgaW50ZWdlciBjYyBuZXZlciIKLSAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItNSkgKEZSNTUwLU1BSk9SIEItNSkgKEZSNDAwLU1BSk9SIEItNSkpCisgICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTUpIChGUjU1MC1NQUpPUiBCLTUpCisgICAgICAoRlI0MDAtTUFKT1IgQi01KSAoRlI0NTAtTUFKT1IgQi01KSkKICAgICAgImNrbm8kcGFjayAkQ1JqX2ludCIKICAgICAgKCsgcGFjayBJQ0NfbmV2IENSal9pbnQgT1BfMDggKG1pc2MtbnVsbC01KSAoSUNDaV8zLW51bGwpKQogICAgICAoY2hlY2stc2VtYW50aWNzIChjb25zdCBCSSAwKSBDUmpfaW50KQotICAgICAoKGZyNDAwICh1bml0IHUtY2hlY2spKQorICAgICAoKGZyNDAwICh1bml0IHUtY2hlY2spKSAoZnI0NTAgKHVuaXQgdS1jaGVjaykpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1jaGVjaykpIChmcjU1MCAodW5pdCB1LWNoZWNrKSkpCiApCiAKQEAgLTU5OTUsMzIgKzY1NDEsMzUgQEAKIChkZWZpbmUtcG1hY3JvIChjaGVjay1mbG9hdC1jb25kaXRpb24tY29kZSBwcmVmaXggY2Mgb3AgY29uZCBjb21tZW50KQogICAoZG5pICguc3ltIHByZWZpeCBjYykKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi01KSAoRlI1NTAtTUFKT1IgQi01KSAoRlI0MDAtTUFKT1IgQi01KSBGUi1BQ0NFU1MpCisgICAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItNSkgKEZSNTUwLU1BSk9SIEItNSkKKwkoRlI0MDAtTUFKT1IgQi01KSAoRlI0NTAtTUFKT1IgQi01KSBGUi1BQ0NFU1MpCiAgICAgICAgKC5zdHIgKC5zeW0gcHJlZml4IGNjKSAiJHBhY2sgJEZDQ2lfMywkQ1JqX2Zsb2F0IikKICAgICAgICAoKyBwYWNrICguc3ltIEZDQ18gY2MpIENSal9mbG9hdCBvcCAobWlzYy1udWxsLTUpIEZDQ2lfMykKICAgICAgICAoY2hlY2stc2VtYW50aWNzIChjb25kIEZDQ2lfMykgQ1JqX2Zsb2F0KQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1jaGVjaykpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWNoZWNrKSkgKGZyNDUwICh1bml0IHUtY2hlY2spKQogCShmcjUwMCAodW5pdCB1LWNoZWNrKSkgKGZyNTUwICh1bml0IHUtY2hlY2spKSkKICAgKQogKQogCiAoZG5pIGZja3JhCiAgICAgICJjaGVjayBmbG9hdCBjYyBhbHdheXMiCi0gICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTUpIChGUjU1MC1NQUpPUiBCLTUpIChGUjQwMC1NQUpPUiBCLTUpIEZSLUFDQ0VTUykKKyAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItNSkgKEZSNTUwLU1BSk9SIEItNSkKKyAgICAgIChGUjQwMC1NQUpPUiBCLTUpIChGUjQ1MC1NQUpPUiBCLTUpIEZSLUFDQ0VTUykKICAgICAgImZja3JhJHBhY2sgJENSal9mbG9hdCIKICAgICAgKCsgcGFjayBGQ0NfcmEgQ1JqX2Zsb2F0IE9QXzA5IChtaXNjLW51bGwtNSkgRkNDaV8zKQogICAgICAoY2hlY2stc2VtYW50aWNzIChjb25zdCBCSSAxKSBDUmpfZmxvYXQpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1jaGVjaykpCisgICAgICgoZnI0MDAgKHVuaXQgdS1jaGVjaykpIChmcjQ1MCAodW5pdCB1LWNoZWNrKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWNoZWNrKSkgKGZyNTUwICh1bml0IHUtY2hlY2spKSkKICkKIAogKGRuaSBmY2tubwogICAgICAiY2hlY2sgZmxvYXQgY2MgbmV2ZXIiCi0gICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTUpIChGUjU1MC1NQUpPUiBCLTUpIChGUjQwMC1NQUpPUiBCLTUpIEZSLUFDQ0VTUykKKyAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItNSkgKEZSNTUwLU1BSk9SIEItNSkKKyAgICAgIChGUjQwMC1NQUpPUiBCLTUpIChGUjQ1MC1NQUpPUiBCLTUpIEZSLUFDQ0VTUykKICAgICAgImZja25vJHBhY2sgJENSal9mbG9hdCIKICAgICAgKCsgcGFjayBGQ0NfbmV2IENSal9mbG9hdCBPUF8wOSAobWlzYy1udWxsLTUpIEZDQ2lfMykKICAgICAgKGNoZWNrLXNlbWFudGljcyAoY29uc3QgQkkgMCkgQ1JqX2Zsb2F0KQotICAgICAoKGZyNDAwICh1bml0IHUtY2hlY2spKQorICAgICAoKGZyNDAwICh1bml0IHUtY2hlY2spKSAoZnI0NTAgKHVuaXQgdS1jaGVjaykpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1jaGVjaykpIChmcjU1MCAodW5pdCB1LWNoZWNrKSkpCiApCiAKQEAgLTYwNDIsNDEgKzY1OTEsNDQgQEAKIChkZWZpbmUtcG1hY3JvIChjb25kaXRpb25hbC1jaGVjay1pbnQtY29uZGl0aW9uLWNvZGUgcHJlZml4IGNjIG9wIG9wZSB0ZXN0IGNvbW1lbnQpCiAgIChkbmkgKC5zeW0gcHJlZml4IGNjKQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTUpIChGUjU1MC1NQUpPUiBCLTUpIChGUjQwMC1NQUpPUiBCLTUpIENPTkRJVElPTkFMKQorICAgICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTUpIChGUjU1MC1NQUpPUiBCLTUpCisJKEZSNDAwLU1BSk9SIEItNSkgKEZSNDUwLU1BSk9SIEItNSkgQ09ORElUSU9OQUwpCiAgICAgICAgKC5zdHIgKC5zeW0gcHJlZml4IGNjKSAiJHBhY2sgJElDQ2lfMywkQ1JqX2ludCwkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrICguc3ltIElDQ18gY2MpIENSal9pbnQgb3AgKHJzLW51bGwpIENDaSBjb25kIG9wZQogCSAgKG1pc2MtbnVsbC05KSBJQ0NpXzMpCiAgICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCiAJICAgKGNoZWNrLXNlbWFudGljcyAodGVzdCBJQ0NpXzMpIENSal9pbnQpCiAJICAgKHNldCBDUmpfaW50IChjci11bmRlZmluZWQpKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtY2hlY2spKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1jaGVjaykpIChmcjQ1MCAodW5pdCB1LWNoZWNrKSkKIAkoZnI1MDAgKHVuaXQgdS1jaGVjaykpIChmcjU1MCAodW5pdCB1LWNoZWNrKSkpCiAgICkKICkKIAogKGRuaSBjY2tyYQogICAgICAiY29uZGl0aW9uYWwgY2hlY2sgaW50ZWdlciBjYyBhbHdheXMiCi0gICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTUpIChGUjU1MC1NQUpPUiBCLTUpIChGUjQwMC1NQUpPUiBCLTUpIENPTkRJVElPTkFMKQorICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi01KSAoRlI1NTAtTUFKT1IgQi01KQorICAgICAgKEZSNDAwLU1BSk9SIEItNSkgKEZSNDUwLU1BSk9SIEItNSkgQ09ORElUSU9OQUwpCiAgICAgICJjY2tyYSRwYWNrICRDUmpfaW50LCRDQ2ksJGNvbmQiCiAgICAgICgrIHBhY2sgSUNDX3JhIENSal9pbnQgT1BfNkEgKHJzLW51bGwpIENDaSBjb25kIE9QRTRfMAogCShtaXNjLW51bGwtOSkgKElDQ2lfMy1udWxsKSkKICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCiAJIChjaGVjay1zZW1hbnRpY3MgKGNvbnN0IEJJIDEpIENSal9pbnQpCiAJIChzZXQgQ1JqX2ludCAoY3ItdW5kZWZpbmVkKSkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1jaGVjaykpCisgICAgICgoZnI0MDAgKHVuaXQgdS1jaGVjaykpIChmcjQ1MCAodW5pdCB1LWNoZWNrKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWNoZWNrKSkgKGZyNTUwICh1bml0IHUtY2hlY2spKSkKICkKIAogKGRuaSBjY2tubwogICAgICAiY29uZGl0aW9uYWwgY2hlY2sgaW50ZWdlciBjYyBuZXZlciIKLSAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItNSkgKEZSNTUwLU1BSk9SIEItNSkgKEZSNDAwLU1BSk9SIEItNSkgQ09ORElUSU9OQUwpCisgICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTUpIChGUjU1MC1NQUpPUiBCLTUpCisgICAgICAoRlI0MDAtTUFKT1IgQi01KSAoRlI0NTAtTUFKT1IgQi01KSBDT05ESVRJT05BTCkKICAgICAgImNja25vJHBhY2sgJENSal9pbnQsJENDaSwkY29uZCIKICAgICAgKCsgcGFjayBJQ0NfbmV2IENSal9pbnQgT1BfNkEgKHJzLW51bGwpIENDaSBjb25kIE9QRTRfMAogCShtaXNjLW51bGwtOSkgKElDQ2lfMy1udWxsKSkKICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCiAJIChjaGVjay1zZW1hbnRpY3MgKGNvbnN0IEJJIDApIENSal9pbnQpCiAJIChzZXQgQ1JqX2ludCAoY3ItdW5kZWZpbmVkKSkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1jaGVjaykpCisgICAgICgoZnI0MDAgKHVuaXQgdS1jaGVjaykpIChmcjQ1MCAodW5pdCB1LWNoZWNrKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWNoZWNrKSkgKGZyNTUwICh1bml0IHUtY2hlY2spKSkKICkKIApAQCAtNjA5OCw0MSArNjY1MCw0NCBAQAogKGRlZmluZS1wbWFjcm8gKGNvbmRpdGlvbmFsLWNoZWNrLWZsb2F0LWNvbmRpdGlvbi1jb2RlIHByZWZpeCBjYyBvcCBvcGUgdGVzdCBjb21tZW50KQogICAoZG5pICguc3ltIHByZWZpeCBjYykKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi01KSAoRlI1NTAtTUFKT1IgQi01KSAoRlI0MDAtTUFKT1IgQi01KSBDT05ESVRJT05BTCBGUi1BQ0NFU1MpCisgICAgICAgKChVTklUIEIwMSkgKEZSNTAwLU1BSk9SIEItNSkgKEZSNTUwLU1BSk9SIEItNSkKKwkoRlI0MDAtTUFKT1IgQi01KSAoRlI0NTAtTUFKT1IgQi01KSBDT05ESVRJT05BTCBGUi1BQ0NFU1MpCiAgICAgICAgKC5zdHIgKC5zeW0gcHJlZml4IGNjKSAiJHBhY2sgJEZDQ2lfMywkQ1JqX2Zsb2F0LCRDQ2ksJGNvbmQiKQogICAgICAgICgrIHBhY2sgKC5zeW0gRkNDXyBjYykgQ1JqX2Zsb2F0IG9wIChycy1udWxsKSBDQ2kgY29uZCBvcGUKIAkgIChtaXNjLW51bGwtOSkgRkNDaV8zKQogICAgICAgIChpZiAoZXEgQ0NpIChvciBjb25kIDIpKQogCSAgIChjaGVjay1zZW1hbnRpY3MgKHRlc3QgRkNDaV8zKSBDUmpfZmxvYXQpCiAJICAgKHNldCBDUmpfZmxvYXQgKGNyLXVuZGVmaW5lZCkpKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1jaGVjaykpCisgICAgICAgKChmcjQwMCAodW5pdCB1LWNoZWNrKSkgKGZyNDUwICh1bml0IHUtY2hlY2spKQogCShmcjUwMCAodW5pdCB1LWNoZWNrKSkgKGZyNTUwICh1bml0IHUtY2hlY2spKSkKICAgKQogKQogCiAoZG5pIGNmY2tyYQogICAgICAiY29uZGl0aW9uYWwgY2hlY2sgZmxvYXQgY2MgYWx3YXlzIgotICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi01KSAoRlI1NTAtTUFKT1IgQi01KSAoRlI0MDAtTUFKT1IgQi01KSBDT05ESVRJT05BTCBGUi1BQ0NFU1MpCisgICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTUpIChGUjU1MC1NQUpPUiBCLTUpCisgICAgICAoRlI0MDAtTUFKT1IgQi01KSAoRlI0NTAtTUFKT1IgQi01KSBDT05ESVRJT05BTCBGUi1BQ0NFU1MpCiAgICAgICJjZmNrcmEkcGFjayAkQ1JqX2Zsb2F0LCRDQ2ksJGNvbmQiCiAgICAgICgrIHBhY2sgRkNDX3JhIENSal9mbG9hdCBPUF82QSAocnMtbnVsbCkgQ0NpIGNvbmQgT1BFNF8xCiAJKG1pc2MtbnVsbC05KSAoRkNDaV8zLW51bGwpKQogICAgICAoaWYgKGVxIENDaSAob3IgY29uZCAyKSkKIAkgKGNoZWNrLXNlbWFudGljcyAoY29uc3QgQkkgMSkgQ1JqX2Zsb2F0KQogCSAoc2V0IENSal9mbG9hdCAoY3ItdW5kZWZpbmVkKSkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1jaGVjaykpCisgICAgICgoZnI0MDAgKHVuaXQgdS1jaGVjaykpIChmcjQ1MCAodW5pdCB1LWNoZWNrKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWNoZWNrKSkgKGZyNTUwICh1bml0IHUtY2hlY2spKSkKICkKIAogKGRuaSBjZmNrbm8KICAgICAgImNvbmRpdGlvbmFsIGNoZWNrIGZsb2F0IGNjIG5ldmVyIgotICAgICAoKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi01KSAoRlI1NTAtTUFKT1IgQi01KSAoRlI0MDAtTUFKT1IgQi01KSBDT05ESVRJT05BTCBGUi1BQ0NFU1MpCisgICAgICgoVU5JVCBCMDEpIChGUjUwMC1NQUpPUiBCLTUpIChGUjU1MC1NQUpPUiBCLTUpCisgICAgICAoRlI0MDAtTUFKT1IgQi01KSAoRlI0NTAtTUFKT1IgQi01KSBDT05ESVRJT05BTCBGUi1BQ0NFU1MpCiAgICAgICJjZmNrbm8kcGFjayAkQ1JqX2Zsb2F0LCRDQ2ksJGNvbmQiCiAgICAgICgrIHBhY2sgRkNDX25ldiBDUmpfZmxvYXQgT1BfNkEgKHJzLW51bGwpIENDaSBjb25kIE9QRTRfMQogCShtaXNjLW51bGwtOSkgKEZDQ2lfMy1udWxsKSkKICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCiAJIChjaGVjay1zZW1hbnRpY3MgKGNvbnN0IEJJIDApIENSal9mbG9hdCkKIAkgKHNldCBDUmpfZmxvYXQgKGNyLXVuZGVmaW5lZCkpKQotICAgICAoKGZyNDAwICh1bml0IHUtY2hlY2spKQorICAgICAoKGZyNDAwICh1bml0IHUtY2hlY2spKSAoZnI0NTAgKHVuaXQgdS1jaGVjaykpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1jaGVjaykpIChmcjU1MCAodW5pdCB1LWNoZWNrKSkpCiApCiAKQEAgLTYxNTMsMzAgKzY3MDgsMzMgQEAKIAogKGRuaSBjam1wbAogICAgICAiY29uZGl0aW9uYWwganVtcCBhbmQgbGluayIKLSAgICAgKChVTklUIEkwKSAoRlI1MDAtTUFKT1IgSS01KSAoRlI1NTAtTUFKT1IgSS02KSAoRlI0MDAtTUFKT1IgSS01KSBDT05ESVRJT05BTCkKKyAgICAgKChVTklUIEkwKSAoRlI1MDAtTUFKT1IgSS01KSAoRlI1NTAtTUFKT1IgSS02KQorICAgICAgKEZSNDAwLU1BSk9SIEktNSkgKEZSNDUwLU1BSk9SIEktNSkgQ09ORElUSU9OQUwpCiAgICAgICJjam1wbCRwYWNrIEAoJEdSaSwkR1JqKSwkQ0NpLCRjb25kIgogICAgICAoKyBwYWNrIChtaXNjLW51bGwtMSkgKExJLW9mZikgT1BfNkEgR1JpIENDaSBjb25kIE9QRTRfMiBHUmopCiAgICAgIChpZiAoZXEgQ0NpIChvciBjb25kIDIpKQogCSAoanVtcC1hbmQtbGluay1zZW1hbnRpY3MgR1JpIEdSaiBMSSkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKQorICAgICAoKGZyNDAwICh1bml0IHUtYnJhbmNoKSkgKGZyNDUwICh1bml0IHUtYnJhbmNoKSkKICAgICAgIChmcjUwMCAodW5pdCB1LWJyYW5jaCkpIChmcjU1MCAodW5pdCB1LWJyYW5jaCkpKQogKQogCiAoZG5pIGNjYWxsbAogICAgICAiY29uZGl0aW9uYWwgY2FsbCBhbmQgbGluayIKLSAgICAgKChVTklUIEkwKSAoRlI1MDAtTUFKT1IgSS01KSAoRlI0MDAtTUFKT1IgSS01KSBDT05ESVRJT05BTCkKKyAgICAgKChVTklUIEkwKSAoRlI1MDAtTUFKT1IgSS01KSAoRlI1NTAtTUFKT1IgSS02KQorICAgICAgKEZSNDAwLU1BSk9SIEktNSkgKEZSNDUwLU1BSk9SIEktNSkgQ09ORElUSU9OQUwpCiAgICAgICJjY2FsbGwkcGFjayBAKCRHUmksJEdSaiksJENDaSwkY29uZCIKICAgICAgKCsgcGFjayAobWlzYy1udWxsLTEpIChMSS1vbikgT1BfNkEgR1JpIENDaSBjb25kIE9QRTRfMiBHUmopCiAgICAgIChpZiAoZXEgQ0NpIChvciBjb25kIDIpKQogCSAoanVtcC1hbmQtbGluay1zZW1hbnRpY3MgR1JpIEdSaiBMSSkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKQotICAgICAgKGZyNTAwICh1bml0IHUtYnJhbmNoKSkpCisgICAgICgoZnI0MDAgKHVuaXQgdS1icmFuY2gpKSAoZnI0NTAgKHVuaXQgdS1icmFuY2gpKQorICAgICAgKGZyNTAwICh1bml0IHUtYnJhbmNoKSkgKGZyNTUwICh1bml0IHUtYnJhbmNoKSkpCiApCiAKIChkZWZpbmUtcG1hY3JvIChjYWNoZS1pbnZhbGlkYXRlIG5hbWUgY2FjaGUgYWxsIG9wIG9wZSBwcm9maWxlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0yKSAoRlI1NTAtTUFKT1IgQy0yKSAoRlI0MDAtTUFKT1IgQy0yKSkKKyAgICAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMikgKEZSNTUwLU1BSk9SIEMtMikKKwkoRlI0MDAtTUFKT1IgQy0yKSAoRlI0NTAtTUFKT1IgQy0yKSkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayBAKCRHUmksJEdSaikiKQogICAgICAgICgrIHBhY2sgKHJkLW51bGwpIG9wIEdSaSBvcGUgR1JqKQogICAgICAgIChjLWNhbGwgVk9JRCAoLnN0ciAiQGNwdUBfIiBjYWNoZSAiX2NhY2hlX2ludmFsaWRhdGUiKSAoYWRkIEdSaSBHUmopIGFsbCkKQEAgLTYxODUsMTYgKzY3NDMsMTkgQEAKICkKIAogKGNhY2hlLWludmFsaWRhdGUgaWNpIGluc24gMCBPUF8wMyBPUEUxXzM4Ci0JCSAgKChmcjQwMCAodW5pdCB1LWljaSkpIChmcjUwMCAodW5pdCB1LWljaSkpIChmcjU1MCAodW5pdCB1LWljaSkpKQorCQkgICgoZnI0MDAgKHVuaXQgdS1pY2kpKSAoZnI0NTAgKHVuaXQgdS1pY2kpKQorCQkgICAoZnI1MDAgKHVuaXQgdS1pY2kpKSAoZnI1NTAgKHVuaXQgdS1pY2kpKSkKIAkJICAiaW52YWxpZGF0ZSBpbnNuIGNhY2hlIikKIChjYWNoZS1pbnZhbGlkYXRlIGRjaSBkYXRhIDAgT1BfMDMgT1BFMV8zQwotCQkgICgoZnI0MDAgKHVuaXQgdS1kY2kpKSAoZnI1MDAgKHVuaXQgdS1kY2kpKSAoZnI1NTAgKHVuaXQgdS1kY2kpKSkKKwkJICAoKGZyNDAwICh1bml0IHUtZGNpKSkgKGZyNDUwICh1bml0IHUtZGNpKSkKKwkJICAgKGZyNTAwICh1bml0IHUtZGNpKSkgKGZyNTUwICh1bml0IHUtZGNpKSkpCiAJCSAgImludmFsaWRhdGUgZGF0YSBjYWNoZSIpCiAKIChkZWZpbmUtcG1hY3JvIChjYWNoZS1pbnZhbGlkYXRlLWVudHJ5IG5hbWUgY2FjaGUgb3Agb3BlIHByb2ZpbGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEMpIChGUjQwMC1NQUpPUiBDLTIpIChGUjU1MC1NQUpPUiBDLTIpIChNQUNIIGZyNDAwLGZyNTUwKSkKKyAgICAgICAoKFVOSVQgQykgKE1BQ0ggZnI0MDAsZnI0NTAsZnI1NTApIChGUjU1MC1NQUpPUiBDLTIpCisJKEZSNDAwLU1BSk9SIEMtMikgKEZSNDUwLU1BSk9SIEMtMikpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgQCgkR1JpLCRHUmopLCRhZSIpCiAgICAgICAgKCsgcGFjayAobWlzYy1udWxsLTEpIGFlIG9wIEdSaSBvcGUgR1JqKQogICAgICAgIChpZiAoZXEgYWUgMCkKQEAgLTYyMDUsMzEgKzY3NjYsMzUgQEAKICkKIAogKGNhY2hlLWludmFsaWRhdGUtZW50cnkgaWNlaSBpbnNuIE9QXzAzIE9QRTFfMzkKLQkJCSgoZnI0MDAgKHVuaXQgdS1pY2kpKSAoZnI1NTAgKHVuaXQgdS1pY2kpKSkKKwkJCSgoZnI0MDAgKHVuaXQgdS1pY2kpKSAoZnI0NTAgKHVuaXQgdS1pY2kpKQorCQkJIChmcjU1MCAodW5pdCB1LWljaSkpKQogCQkJImludmFsaWRhdGUgaW5zbiBjYWNoZSBlbnRyeSIpCiAoY2FjaGUtaW52YWxpZGF0ZS1lbnRyeSBkY2VpIGRhdGEgT1BfMDMgT1BFMV8zQQotCQkJKChmcjQwMCAodW5pdCB1LWRjaSkpIChmcjU1MCAodW5pdCB1LWRjaSkpKQorCQkJKChmcjQwMCAodW5pdCB1LWRjaSkpIChmcjQ1MCAodW5pdCB1LWRjaSkpCisJCQkgKGZyNTUwICh1bml0IHUtZGNpKSkpCiAJCQkiaW52YWxpZGF0ZSBkYXRhIGNhY2hlIGVudHJ5IikKIAogKGRuaSBkY2YKICAgICAgIkRhdGEgY2FjaGUgZmx1c2giCi0gICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0yKSAoRlI1NTAtTUFKT1IgQy0yKSAoRlI0MDAtTUFKT1IgQy0yKSkKKyAgICAgKChVTklUIEMpIChGUjUwMC1NQUpPUiBDLTIpIChGUjU1MC1NQUpPUiBDLTIpCisgICAgICAoRlI0MDAtTUFKT1IgQy0yKSAoRlI0NTAtTUFKT1IgQy0yKSkKICAgICAgImRjZiRwYWNrIEAoJEdSaSwkR1JqKSIKICAgICAgKCsgcGFjayAocmQtbnVsbCkgT1BfMDMgR1JpIE9QRTFfM0QgR1JqKQogICAgICAoYy1jYWxsIFZPSUQgIkBjcHVAX2RhdGFfY2FjaGVfZmx1c2giIChhZGQgR1JpIEdSaikgMCkKLSAgICAgKChmcjQwMCAodW5pdCB1LWRjZikpCisgICAgICgoZnI0MDAgKHVuaXQgdS1kY2YpKSAoZnI0NTAgKHVuaXQgdS1kY2YpKQogICAgICAgKGZyNTAwICh1bml0IHUtZGNmKSkgKGZyNTUwICh1bml0IHUtZGNmKSkpCiApCiAKIChkbmkgZGNlZgogICAgICAiRGF0YSBjYWNoZSBlbnRyeSBmbHVzaCIKLSAgICAgKChVTklUIEMpIChGUjQwMC1NQUpPUiBDLTIpIChGUjU1MC1NQUpPUiBDLTIpIChNQUNIIGZyNDAwLGZyNTUwKSkKKyAgICAgKChVTklUIEMpIChNQUNIIGZyNDAwLGZyNDUwLGZyNTUwKSAoRlI1NTAtTUFKT1IgQy0yKQorICAgICAgKEZSNDAwLU1BSk9SIEMtMikgKEZSNDUwLU1BSk9SIEMtMikpCiAgICAgICJkY2VmJHBhY2sgQCgkR1JpLCRHUmopLCRhZSIKICAgICAgKCsgcGFjayAobWlzYy1udWxsLTEpIGFlIE9QXzAzIEdSaSBPUEUxXzNCIEdSaikKICAgICAgKGlmIChlcSBhZSAwKQogCSAoYy1jYWxsIFZPSUQgIkBjcHVAX2RhdGFfY2FjaGVfZmx1c2giIChhZGQgR1JpIEdSaikgLTEpCiAJIChjLWNhbGwgVk9JRCAiQGNwdUBfZGF0YV9jYWNoZV9mbHVzaCIgKGFkZCBHUmkgR1JqKSBhZSkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1kY2YpKSAoZnI1NTAgKHVuaXQgdS1kY2YpKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LWRjZikpIChmcjQ1MCAodW5pdCB1LWRjZikpIChmcjU1MCAodW5pdCB1LWRjZikpKQogKQogCiAoZGVmaW5lLXBtYWNybyAod3JpdGUtVExCIG5hbWUgaW5zbiBvcCBvcGUgY29tbWVudCkKQEAgLTYyNjMsNyArNjgyOCw4IEBACiAoZGVmaW5lLXBtYWNybyAoY2FjaGUtcHJlbG9hZCBuYW1lIGNhY2hlIHBpcGUgYXR0cnMgb3Agb3BlIHByb2ZpbGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKC5zcGxpY2UgKFVOSVQgcGlwZSkgKEZSNTAwLU1BSk9SIEMtMikgKEZSNDAwLU1BSk9SIEMtMikgKC51bnNwbGljZSBhdHRycykpCisgICAgICAgKC5zcGxpY2UgKFVOSVQgcGlwZSkgKEZSNTAwLU1BSk9SIEMtMikKKwkJKEZSNDAwLU1BSk9SIEMtMikgKC51bnNwbGljZSBhdHRycykpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEdSaSwkR1JqLCRsb2NrIikKICAgICAgICAoKyBwYWNrIChtaXNjLW51bGwtMSkgbG9jayBvcCBHUmkgb3BlIEdSaikKICAgICAgICAoYy1jYWxsIFZPSUQgKC5zdHIgIkBjcHVAXyIgY2FjaGUgIl9jYWNoZV9wcmVsb2FkIikgR1JpIEdSaiBsb2NrKQpAQCAtNjI3MSwxNyArNjgzNywyMCBAQAogICApCiApCiAKLShjYWNoZS1wcmVsb2FkIGljcGwgaW5zbiBDICgoRlI1NTAtTUFKT1IgQy0yKSkgT1BfMDMgT1BFMV8zMAotCSAgICAgICAoKGZyNDAwICh1bml0IHUtaWNwbCkpIChmcjUwMCAodW5pdCB1LWljcGwpKSAoZnI1NTAgKHVuaXQgdS1pY3BsKSkpCisoY2FjaGUtcHJlbG9hZCBpY3BsIGluc24gQyAoKEZSNTUwLU1BSk9SIEMtMikgKEZSNDUwLU1BSk9SIEMtMikpIE9QXzAzIE9QRTFfMzAKKwkgICAgICAgKChmcjQwMCAodW5pdCB1LWljcGwpKSAoZnI0NTAgKHVuaXQgdS1pY3BsKSkgCisJCShmcjUwMCAodW5pdCB1LWljcGwpKSAoZnI1NTAgKHVuaXQgdS1pY3BsKSkpCiAJICAgICAgICJwcmVsb2FkIGluc24gY2FjaGUiKQotKGNhY2hlLXByZWxvYWQgZGNwbCBkYXRhIERDUEwgKChGUjU1MC1NQUpPUiBJLTgpKSBPUF8wMyBPUEUxXzM0Ci0JICAgICAgICgoZnI0MDAgKHVuaXQgdS1kY3BsKSkgKGZyNTAwICh1bml0IHUtZGNwbCkpIChmcjU1MCAodW5pdCB1LWRjcGwpKSkKKyhjYWNoZS1wcmVsb2FkIGRjcGwgZGF0YSBEQ1BMICgoRlI1NTAtTUFKT1IgSS04KSAoRlI0NTAtTUFKT1IgSS0yKSkgT1BfMDMgT1BFMV8zNAorCSAgICAgICAoKGZyNDAwICh1bml0IHUtZGNwbCkpIChmcjQ1MCAodW5pdCB1LWRjcGwpKQorCQkoZnI1MDAgKHVuaXQgdS1kY3BsKSkgKGZyNTUwICh1bml0IHUtZGNwbCkpKQogCSAgICAgICAicHJlbG9hZCBkYXRhIGNhY2hlIikKIAogKGRlZmluZS1wbWFjcm8gKGNhY2hlLXVubG9jayBuYW1lIGNhY2hlIG9wIG9wZSBwcm9maWxlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0yKSAoRlI1NTAtTUFKT1IgQy0yKSAoRlI0MDAtTUFKT1IgQy0yKSkKKyAgICAgICAoKFVOSVQgQykgKEZSNTAwLU1BSk9SIEMtMikgKEZSNTUwLU1BSk9SIEMtMikKKwkoRlI0MDAtTUFKT1IgQy0yKSAoRlI0NTAtTUFKT1IgQy0yKSkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkR1JpIikKICAgICAgICAoKyBwYWNrIChyZC1udWxsKSBvcCBHUmkgb3BlIChHUmotbnVsbCkpCiAgICAgICAgKGMtY2FsbCBWT0lEICguc3RyICJAY3B1QF8iIGNhY2hlICJfY2FjaGVfdW5sb2NrIikgR1JpKQpAQCAtNjI5MCwxNiArNjg1OSwxOSBAQAogKQogCiAoY2FjaGUtdW5sb2NrIGljdWwgaW5zbiBPUF8wMyBPUEUxXzMxCi0JICAgICAgKChmcjQwMCAodW5pdCB1LWljdWwpKSAoZnI1MDAgKHVuaXQgdS1pY3VsKSkgKGZyNTUwICh1bml0IHUtaWN1bCkpKQorCSAgICAgICgoZnI0MDAgKHVuaXQgdS1pY3VsKSkgKGZyNDUwICh1bml0IHUtaWN1bCkpCisJICAgICAgIChmcjUwMCAodW5pdCB1LWljdWwpKSAoZnI1NTAgKHVuaXQgdS1pY3VsKSkpCiAJICAgICAgInVubG9jayBpbnNuIGNhY2hlIikKIChjYWNoZS11bmxvY2sgZGN1bCBkYXRhIE9QXzAzIE9QRTFfMzUKLQkgICAgICAoKGZyNDAwICh1bml0IHUtZGN1bCkpIChmcjUwMCAodW5pdCB1LWRjdWwpKSAoZnI1NTAgKHVuaXQgdS1kY3VsKSkpCisJICAgICAgKChmcjQwMCAodW5pdCB1LWRjdWwpKSAoZnI0NTAgKHVuaXQgdS1kY3VsKSkKKwkgICAgICAgKGZyNTAwICh1bml0IHUtZGN1bCkpIChmcjU1MCAodW5pdCB1LWRjdWwpKSkKIAkgICAgICAidW5sb2NrIGRhdGEgY2FjaGUiKQogCiAoZGVmaW5lLXBtYWNybyAoYmFycmllciBuYW1lIGluc24gb3Agb3BlIHByb2ZpbGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEMpIChGUjUwMC1NQUpPUiBDLTIpIChGUjU1MC1NQUpPUiBDLTIpIChGUjQwMC1NQUpPUiBDLTIpKQorICAgICAgICgoVU5JVCBDKSAoRlI1MDAtTUFKT1IgQy0yKSAoRlI1NTAtTUFKT1IgQy0yKQorCShGUjQwMC1NQUpPUiBDLTIpIChGUjQ1MC1NQUpPUiBDLTIpKQogICAgICAgICguc3RyIGluc24gIiRwYWNrIikKICAgICAgICAoKyBwYWNrIChyZC1udWxsKSBvcCAocnMtbnVsbCkgb3BlIChHUmotbnVsbCkpCiAgICAgICAgKG5vcCkgOyBzdWZmaWNpZW50IGltcGxlbWVudGF0aW9uCkBAIC02MzA4LDEyICs2ODgwLDM4IEBACiApCiAKIChiYXJyaWVyIGJhciAgICBiYXIgICAgT1BfMDMgT1BFMV8zRQotCSAoKGZyNDAwICh1bml0IHUtYmFycmllcikpIChmcjUwMCAodW5pdCB1LWJhcnJpZXIpKSkKKwkgKChmcjQwMCAodW5pdCB1LWJhcnJpZXIpKSAoZnI0NTAgKHVuaXQgdS1iYXJyaWVyKSkKKwkgIChmcjUwMCAodW5pdCB1LWJhcnJpZXIpKSkKIAkgImJhcnJpZXIiKQogKGJhcnJpZXIgbWVtYmFyIG1lbWJhciBPUF8wMyBPUEUxXzNGCi0JICgoZnI0MDAgKHVuaXQgdS1tZW1iYXIpKSAoZnI1MDAgKHVuaXQgdS1tZW1iYXIpKSkKKwkgKChmcjQwMCAodW5pdCB1LW1lbWJhcikpIChmcjQ1MCAodW5pdCB1LW1lbWJhcikpCisJICAoZnI1MDAgKHVuaXQgdS1tZW1iYXIpKSkKIAkgIm1lbW9yeSBiYXJyaWVyIikKIAorOyBMb2FkIHJlYWwgYWRkcmVzcyBpbnN0cnVjdGlvbnMKKyhkZWZpbmUtcG1hY3JvIChsb2FkLXJlYWwtYWRkcmVzcyBuYW1lIGluc24gd2hhdCBvcCBvcGUpCisgIChkbmkgbmFtZQorICAgICAgICguc3RyICJMb2FkIHJlYWwgYWRkcmVzcyBvZiAiIHdoYXQpCisgICAgICAgKChVTklUIEMpIChGUjQ1MC1NQUpPUiBDLTIpIChNQUNIIGZyNDUwKSkKKyAgICAgICAoLnN0ciBpbnNuICIkcGFjayAkR1JpLCRHUmssJExSQUUsJExSQUQsJExSQVMiKQorICAgICAgICgrIHBhY2sgR1JrIG9wIEdSaSBvcGUgTFJBRSBMUkFEIExSQVMgKExSQS1udWxsKSkKKyAgICAgICAobm9wKSA7IG5vdCBzaW11bGF0ZWQKKyAgICAgICAoKQorICApCispCisKKyhsb2FkLXJlYWwtYWRkcmVzcyBscmFpICJscmFpIiAiaW5zdHJ1Y3Rpb24iIE9QXzAzIE9QRTFfMjApCisobG9hZC1yZWFsLWFkZHJlc3MgbHJhZCAibHJhZCIgImRhdGEiIE9QXzAzIE9QRTFfMjEpCisKKyhkbmkgdGxicHIKKyAgICAgIlRMQiBQcm9iZSIKKyAgICAgKChVTklUIEMpIChGUjQ1MC1NQUpPUiBDLTIpIChNQUNIIGZyNDUwKSkKKyAgICAgInRsYnByJHBhY2sgJEdSaSwkR1JqLCRUTEJQUm9weCwkVExCUFJMIgorICAgICAoKyBwYWNrIChUTEJQUi1udWxsKSBUTEJQUm9weCBUTEJQUkwgT1BfMDMgR1JpIE9QRTFfMjQgR1JqKQorICAgICAobm9wKSA7IG5vdCBzaW11bGF0ZWQKKyAgICAgKCkKKykKKwogOyBDb3Byb2Nlc3NvciBvcGVyYXRpb25zCiAoZGVmaW5lLXBtYWNybyAoY29wLW9wIG51bSBvcCkKICAgKGRuaSAoLnN5bSBjb3AgbnVtKQpAQCAtNzExNSwyNSArNzcxMywzMCBAQAogCiAoZG5pIG1oc2V0bG9zCiAgICAgICJNZWRpYSBzZXQgbG93ZXIgc2lnbmVkIDEyIGJpdHMiCi0gICAgICgoVU5JVCBGTUFMTCkgKE1BQ0ggZnI0MDAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTUpIChGUjQwMC1NQUpPUiBNLTEpKQorICAgICAoKFVOSVQgRk1BTEwpIChNQUNIIGZyNDAwLGZyNDUwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS01KQorICAgICAgKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIE0tMSkpCiAgICAgICJtaHNldGxvcyRwYWNrICR1MTIsJEZSa2xvIgogICAgICAoKyBwYWNrIEZSa2xvIE9QXzc4IE9QRTFfMjAgdTEyKQogICAgICAoc2V0IEZSa2xvIHUxMikKLSAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLWhpbG8pKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS1zZXQgKG91dCBGUmludGsgRlJrbG8pKSkpCisgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS1oaWxvKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtaGlsbykpCisgICAgICAoZnI1NTAgKHVuaXQgdS1tZWRpYS1zZXQgKG91dCBGUmludGsgRlJrbG8pKSkpCiApCiAKIChkbmkgbWhzZXRoaXMKICAgICAgIk1lZGlhIHNldCB1cHBlciBzaWduZWQgMTIgYml0cyIKLSAgICAgKChVTklUIEZNQUxMKSAoTUFDSCBmcjQwMCxmcjU1MCkgKEZSNTUwLU1BSk9SIE0tNSkgKEZSNDAwLU1BSk9SIE0tMSkpCisgICAgICgoVU5JVCBGTUFMTCkgKE1BQ0ggZnI0MDAsZnI0NTAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTUpCisgICAgICAoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0xKSkKICAgICAgIm1oc2V0aGlzJHBhY2sgJHUxMiwkRlJraGkiCiAgICAgICgrIHBhY2sgRlJraGkgT1BfNzggT1BFMV8yMiB1MTIpCiAgICAgIChzZXQgRlJraGkgdTEyKQotICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtaGlsbykpIChmcjU1MCAodW5pdCB1LW1lZGlhLXNldCAob3V0IEZSaW50ayBGUmtoaSkpKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLWhpbG8pKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS1oaWxvKSkKKyAgICAgIChmcjU1MCAodW5pdCB1LW1lZGlhLXNldCAob3V0IEZSaW50ayBGUmtoaSkpKSkKICkKIAogKGRuaSBtaGRzZXRzCiAgICAgICJNZWRpYSBkdWFsIHNldCBoYWxmd29yZCBzaWduZWQgMTIgYml0cyIKLSAgICAgKChVTklUIEZNQUxMKSAoTUFDSCBmcjQwMCxmcjU1MCkgKEZSNTUwLU1BSk9SIE0tNSkgKEZSNDAwLU1BSk9SIE0tMSkpCisgICAgICgoVU5JVCBGTUFMTCkgKE1BQ0ggZnI0MDAsZnI0NTAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTUpCisgICAgICAoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0xKSkKICAgICAgIm1oZHNldHMkcGFjayAkdTEyLCRGUmludGsiCiAgICAgICgrIHBhY2sgRlJpbnRrIE9QXzc4IE9QRTFfMjQgdTEyKQogICAgICAoc2VxdWVuY2UgKCkKQEAgLTcxNDEsNyArNzc0NCw4IEBACiAJICAgICAgIChzZXQgRlJpbnRrIChjLXJhdy1jYWxsIFNJICJmcnZfcmVmX1NJIiBGUmludGspKQogCSAgICAgICAoc2V0IChoYWxmd29yZCBoaSBGUmludGsgMCkgdTEyKQogCSAgICAgICAoc2V0IChoYWxmd29yZCBsbyBGUmludGsgMCkgdTEyKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS1zZXQpKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTEpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS0xKSkKKyAgICAgIChmcjU1MCAodW5pdCB1LW1lZGlhLXNldCkpKQogKQogCiAoZGVmaW5lLXBtYWNybyAoc2V0LTUtc2VtYW50aWNzIHRhcmdldCB2YWx1ZSkKQEAgLTcxNTUsMTEgKzc3NTksMTMgQEAKIChkZWZpbmUtcG1hY3JvIChtZWRpYS1zZXQtNSBuYW1lIGhpbG8gb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBGTUFMTCkgKE1BQ0ggZnI0MDAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTUpIChGUjQwMC1NQUpPUiBNLTEpKQorICAgICAgICgoVU5JVCBGTUFMTCkgKE1BQ0ggZnI0MDAsZnI0NTAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTUpCisJKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIE0tMSkpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJHM1LCRGUmsiIGhpbG8pCiAgICAgICAgKCsgcGFjayAoLnN5bSBGUmsgaGlsbykgb3AgKEZSaS1udWxsKSBvcGUgKG1pc2MtbnVsbC0xMSkgczUpCiAgICAgICAgKHNldC01LXNlbWFudGljcyAoLnN5bSBGUmsgaGlsbykgczUpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLWhpbG8pKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS1zZXQgKG91dCBGUmludGsgKC5zeW0gRlJrIGhpbG8pKSkpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS1oaWxvKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtaGlsbykpCisJKGZyNTUwICh1bml0IHUtbWVkaWEtc2V0IChvdXQgRlJpbnRrICguc3ltIEZSayBoaWxvKSkpKSkKICAgKQogKQogCkBAIC03MTY4LDcgKzc3NzQsOCBAQAogCiAoZG5pIG1oZHNldGgKICAgICAgIk1lZGlhIGR1YWwgc2V0IGhhbGZ3b3JkIHVwcGVyIDUgYml0cyIKLSAgICAgKChVTklUIEZNQUxMKSAoTUFDSCBmcjQwMCxmcjU1MCkgKEZSNTUwLU1BSk9SIE0tNSkgKEZSNDAwLU1BSk9SIE0tMSkpCisgICAgICgoVU5JVCBGTUFMTCkgKE1BQ0ggZnI0MDAsZnI0NTAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTUpCisgICAgICAoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0xKSkKICAgICAgIm1oZHNldGgkcGFjayAkczUsJEZSaW50ayIKICAgICAgKCsgcGFjayBGUmludGsgT1BfNzggKEZSaS1udWxsKSBPUEUxXzI1IChtaXNjLW51bGwtMTEpIHM1KQogICAgICAoc2VxdWVuY2UgKCkKQEAgLTcxNzYsMTcgKzc3ODMsMTkgQEAKIAkgICAgICAgKHNldCBGUmludGsgKGMtcmF3LWNhbGwgU0kgImZydl9yZWZfU0kiIEZSaW50aykpCiAJICAgICAgIChzZXQtNS1zZW1hbnRpY3MgKGhhbGZ3b3JkIGhpIEZSaW50ayAwKSBzNSkKIAkgICAgICAgKHNldC01LXNlbWFudGljcyAoaGFsZndvcmQgbG8gRlJpbnRrIDApIHM1KSkKLSAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS1zZXQpKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTEpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS0xKSkKKyAgICAgIChmcjU1MCAodW5pdCB1LW1lZGlhLXNldCkpKQogKQogCiAoZGVmaW5lLXBtYWNybyAobWVkaWEtbG9naWMtci1yIG5hbWUgb3BlcmF0aW9uIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTEpIChGUjU1MC1NQUpPUiBNLTIpIChGUjQwMC1NQUpPUiBNLTEpKQorICAgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tMSkgKEZSNTUwLU1BSk9SIE0tMikKKwkoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0xKSkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkRlJpbnRpLCRGUmludGosJEZSaW50ayIpCiAgICAgICAgKCsgcGFjayBGUmludGsgb3AgRlJpbnRpIG9wZSBGUmludGopCiAgICAgICAgKHNldCBGUmludGsgKG9wZXJhdGlvbiBGUmludGkgRlJpbnRqKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMSkpCisgICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTEpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS0xKSkKIAkoZnI1MDAgKHVuaXQgdS1tZWRpYSkpIChmcjU1MCAodW5pdCB1LW1lZGlhKSkpCiAgICkKICkKQEAgLTcxOTgsMTIgKzc4MDcsMTMgQEAKIChkZWZpbmUtcG1hY3JvIChjb25kaXRpb25hbC1tZWRpYS1sb2dpYyBuYW1lIG9wZXJhdGlvbiBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS0xKSAoRlI1NTAtTUFKT1IgTS0yKSAoRlI0MDAtTUFKT1IgTS0xKSBDT05ESVRJT05BTCkKKyAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTEpIChGUjU1MC1NQUpPUiBNLTIpCisJKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIE0tMSkgQ09ORElUSU9OQUwpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEZSaW50aSwkRlJpbnRqLCRGUmludGssJENDaSwkY29uZCIpCiAgICAgICAgKCsgcGFjayBGUmludGsgb3AgRlJpbnRpIENDaSBjb25kIG9wZSBGUmludGopCiAgICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCiAJICAgKHNldCBGUmludGsgKG9wZXJhdGlvbiBGUmludGkgRlJpbnRqKSkpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTEpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0xKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtMSkpCiAJKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYSkpKQogICApCiApCkBAIC03MjE0LDMzICs3ODI0LDM2IEBACiAKIChkbmkgbW5vdAogICAgICAoIm1ub3QiKQotICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTEpIChGUjU1MC1NQUpPUiBNLTIpIChGUjQwMC1NQUpPUiBNLTEpKQorICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTEpIChGUjU1MC1NQUpPUiBNLTIpCisgICAgICAoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0xKSkKICAgICAgKCJtbm90JHBhY2sgJEZSaW50aiwkRlJpbnRrIikKICAgICAgKCsgcGFjayBGUmludGsgT1BfN0IgKHJzLW51bGwpIE9QRTFfMDMgRlJpbnRqKQogICAgICAoc2V0IEZSaW50ayAoaW52IEZSaW50aikpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0xKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTEpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS0xKSkKICAgICAgIChmcjUwMCAodW5pdCB1LW1lZGlhKSkgKGZyNTUwICh1bml0IHUtbWVkaWEpKSkKICkKIAogKGRuaSBjbW5vdAogICAgICAoImNtbm90IikKLSAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS0xKSAoRlI1NTAtTUFKT1IgTS0yKSAoRlI0MDAtTUFKT1IgTS0xKSBDT05ESVRJT05BTCkKKyAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS0xKSAoRlI1NTAtTUFKT1IgTS0yKQorICAgICAgKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIE0tMSkgQ09ORElUSU9OQUwpCiAgICAgICgiY21ub3QkcGFjayAkRlJpbnRqLCRGUmludGssJENDaSwkY29uZCIpCiAgICAgICgrIHBhY2sgRlJpbnRrIE9QXzcwIChycy1udWxsKSBDQ2kgY29uZCBPUEU0XzMgRlJpbnRqKQogICAgICAoaWYgKGVxIENDaSAob3IgY29uZCAyKSkKIAkgKHNldCBGUmludGsgKGludiBGUmludGopKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTEpKQorICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMSkpIChmcjQ1MCAodW5pdCB1LW1lZGlhLTEpKQogICAgICAgKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYSkpKQogKQogCiAoZGVmaW5lLXBtYWNybyAobWVkaWEtcm90YXRlLXItciBuYW1lIG9wZXJhdGlvbiBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpIChGUjQwMC1NQUpPUiBNLTEpKQorICAgICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0yKSAoRlI1NTAtTUFKT1IgTS0zKQorCShGUjQwMC1NQUpPUiBNLTEpIChGUjQ1MC1NQUpPUiBNLTEpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGksJHU2LCRGUmludGsiKQogICAgICAgICgrIHBhY2sgRlJpbnRrIG9wIEZSaW50aSBvcGUgdTYpCiAgICAgICAgKHNldCBGUmludGsgKG9wZXJhdGlvbiBGUmludGkgKGFuZCB1NiAjeDFmKSkpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTMpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0zKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtMykpCiAJKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYSkpKQogICApCiApCkBAIC03MjUxLDExICs3ODY0LDEyIEBACiAoZGVmaW5lLXBtYWNybyAobWVkaWEtY3V0LXItciBuYW1lIGFyZyBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpIChGUjQwMC1NQUpPUiBNLTIpKQorICAgICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0yKSAoRlI1NTAtTUFKT1IgTS0zKQorCShGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTIpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGksJCIgYXJnICIsJEZSaW50ayIpCiAgICAgICAgKCsgcGFjayBGUmludGsgb3AgRlJpbnRpIG9wZSBhcmcpCiAgICAgICAgKHNldCBGUmludGsgKGMtY2FsbCBTSSAiQGNwdUBfY3V0IiBGUmludGkgKG5leHRyZWcgaC1mcl9pbnQgRlJpbnRpIDEpIGFyZykpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTMpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0zKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtMykpCiAJKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYSkpKQogICApCiApCkBAIC03MjYzLDM1ICs3ODc3LDM3IEBACiAobWVkaWEtY3V0LXItciBtd2N1dCAgRlJpbnRqIE9QXzdCIE9QRTFfMDYgIm1lZGlhIGN1dCIpCiAobWVkaWEtY3V0LXItciBtd2N1dGkgdTYgICAgIE9QXzdCIE9QRTFfMDcgIm1lZGlhIGN1dCIpCiAKLShkZWZpbmUtcG1hY3JvIChtZWRpYS1jdXQtYWNjIG5hbWUgYXJnIG9wIG9wZSBjb21tZW50KQorKGRlZmluZS1wbWFjcm8gKG1lZGlhLWN1dC1hY2MgbmFtZSBhcmcgb3Agb3BlIGZyNDUwLW1ham9yIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0yKSAoRlI1NTAtTUFKT1IgTS0zKSAoRlI0MDAtTUFKT1IgTS0xKSkKKyAgICAgICAoKFVOSVQgRk0wMSkgKEZSNTAwLU1BSk9SIE0tMikgKEZSNTUwLU1BSk9SIE0tMykKKwkoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgZnI0NTAtbWFqb3IpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRBQ0M0MFNpLCQiIGFyZyAiLCRGUmludGsiKQogICAgICAgICgrIHBhY2sgRlJpbnRrIG9wIEFDQzQwU2kgb3BlIGFyZykKICAgICAgICAoc2V0IEZSaW50ayAoYy1jYWxsIFNJICJAY3B1QF9tZWRpYV9jdXQiIEFDQzQwU2kgYXJnKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtNCkpCisgICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTQpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS00KSkKIAkoZnI1MDAgKHVuaXQgdS1tZWRpYSkpIChmcjU1MCAodW5pdCB1LW1lZGlhLTMtYWNjKSkpCiAgICkKICkKIAotKG1lZGlhLWN1dC1hY2MgbWN1dCAgRlJpbnRqIE9QXzdCIE9QRTFfMkMgIm1lZGlhIGFjY3VtdWxhdG9yIGN1dCByZWciKQotKG1lZGlhLWN1dC1hY2MgbWN1dGkgczYgICAgIE9QXzdCIE9QRTFfMkUgIm1lZGlhIGFjY3VtdWxhdG9yIGN1dCBpbW1lZCIpCisobWVkaWEtY3V0LWFjYyBtY3V0ICBGUmludGogT1BfN0IgT1BFMV8yQyBNLTEgIm1lZGlhIGFjY3VtdWxhdG9yIGN1dCByZWciKQorKG1lZGlhLWN1dC1hY2MgbWN1dGkgczYgICAgIE9QXzdCIE9QRTFfMkUgTS01ICJtZWRpYSBhY2N1bXVsYXRvciBjdXQgaW1tZWQiKQogCi0oZGVmaW5lLXBtYWNybyAobWVkaWEtY3V0LWFjYy1zcyBuYW1lIGFyZyBvcCBvcGUgY29tbWVudCkKKyhkZWZpbmUtcG1hY3JvIChtZWRpYS1jdXQtYWNjLXNzIG5hbWUgYXJnIG9wIG9wZSBmcjQ1MC1tYWpvciBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgRk0wMSkgKEZSNTAwLU1BSk9SIE0tMikgKEZSNTUwLU1BSk9SIE0tMykgKEZSNDAwLU1BSk9SIE0tMSkpCisgICAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpCisJKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIGZyNDUwLW1ham9yKSkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkQUNDNDBTaSwkIiBhcmcgIiwkRlJpbnRrIikKICAgICAgICAoKyBwYWNrIEZSaW50ayBvcCBBQ0M0MFNpIG9wZSBhcmcpCiAgICAgICAgKHNldCBGUmludGsgKGMtY2FsbCBTSSAiQGNwdUBfbWVkaWFfY3V0X3NzIiBBQ0M0MFNpIGFyZykpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTQpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS00KSkgKGZyNDUwICh1bml0IHUtbWVkaWEtNCkpCiAJKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS0zLWFjYykpKQogICApCiApCiAKLShtZWRpYS1jdXQtYWNjLXNzIG1jdXRzcyAgRlJpbnRqIE9QXzdCIE9QRTFfMkQgIm1lZGlhIGFjY3VtdWxhdG9yIGN1dCByZWcgd2l0aCBzYXR1cmF0aW9uIikKLShtZWRpYS1jdXQtYWNjLXNzIG1jdXRzc2kgczYgICAgIE9QXzdCIE9QRTFfMkYgIm1lZGlhIGFjY3VtdWxhdG9yIGN1dCBpbW1lZCB3aXRoIHNhdHVyYXRpb24iKQorKG1lZGlhLWN1dC1hY2Mtc3MgbWN1dHNzICBGUmludGogT1BfN0IgT1BFMV8yRCBNLTEgIm1lZGlhIGFjY3VtdWxhdG9yIGN1dCByZWcgd2l0aCBzYXR1cmF0aW9uIikKKyhtZWRpYS1jdXQtYWNjLXNzIG1jdXRzc2kgczYgICAgIE9QXzdCIE9QRTFfMkYgTS01ICJtZWRpYSBhY2N1bXVsYXRvciBjdXQgaW1tZWQgd2l0aCBzYXR1cmF0aW9uIikKIAogOyBEdWFsIE1lZGlhIEluc3RydWN0aW9ucwogOwpAQCAtNzMwMSw3ICs3OTE3LDggQEAKIAogKGRuaSBtZGN1dHNzaQogICAgICAiTWVkaWEgZHVhbCBjdXQgd2l0aCBzaWduZWQgc2F0dXJhdGlvbiIKLSAgICAgKChVTklUIEZNTE9XKSAoTUFDSCBmcjQwMCxmcjU1MCkgKEZSNTUwLU1BSk9SIE0tMykgKEZSNDAwLU1BSk9SIE0tMikpCisgICAgICgoVU5JVCBNRENVVFNTSSkgKE1BQ0ggZnI0MDAsZnI0NTAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTMpCisgICAgICAoRlI0MDAtTUFKT1IgTS0yKSAoRlI0NTAtTUFKT1IgTS02KSkKICAgICAgIm1kY3V0c3NpJHBhY2sgJEFDQzQwU2ksJHM2LCRGUmludGtldmVuIgogICAgICAoKyBwYWNrIEZSaW50a2V2ZW4gT1BfNzggQUNDNDBTaSBPUEUxXzBFIHM2KQogICAgICAoaWYgKHJlZ2lzdGVyLXVuYWxpZ25lZCBBQ0M0MFNpIDIpCkBAIC03MzE0LDcgKzc5MzEsMTAgQEAKIAkJCSAgICAoYy1jYWxsIFNJICJAY3B1QF9tZWRpYV9jdXRfc3MiCiAJCQkJICAgIChuZXh0cmVnIGgtYWNjNDBTIEFDQzQwU2kgMSkgczYpKSkpKQogICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtNC1hY2MtZHVhbAotCQkgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpIChmcjU1MCAodW5pdCB1LW1lZGlhLTMtYWNjLWR1YWwpKSkKKwkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKQorICAgICAgKGZyNDUwICh1bml0IHUtbWVkaWEtNC1hY2MtZHVhbAorCQkgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpCisgICAgICAoZnI1NTAgKHVuaXQgdS1tZWRpYS0zLWFjYy1kdWFsKSkpCiApCiAKIDsgVGhlIChhZGQgKHh4eHgpIChtdWwgYXJnIDApKSBpcyBhIGhhY2sgdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIGFyZyBnZW5lcmF0ZWQKQEAgLTczMjksMTggKzc5NDksMjAgQEAKIAogKGRuaSBtYXZlaAogICAgICAiTWVkaWEgZHVhbCBhdmVyYWdlIgotICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTEpIChGUjU1MC1NQUpPUiBNLTIpIChGUjQwMC1NQUpPUiBNLTEpKQorICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTEpIChGUjU1MC1NQUpPUiBNLTIpCisgICAgICAoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0xKSkKICAgICAgIm1hdmVoJHBhY2sgJEZSaW50aSwkRlJpbnRqLCRGUmludGsiCiAgICAgICgrIHBhY2sgRlJpbnRrIE9QXzdCIEZSaW50aSBPUEUxXzA4IEZSaW50aikKICAgICAgKHNldCBGUmludGsgKGMtY2FsbCBTSSAiQGNwdUBfbWVkaWFfYXZlcmFnZSIgRlJpbnRpIEZSaW50aikpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0xKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTEpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS0xKSkKICAgICAgIChmcjUwMCAodW5pdCB1LW1lZGlhKSkgKGZyNTUwICh1bml0IHUtbWVkaWEpKSkKICkKIAogKGRlZmluZS1wbWFjcm8gKG1lZGlhLWR1YWwtc2hpZnQgbmFtZSBvcGVyYXRpb24gb3Agb3BlIHByb2ZpbGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpIChGUjQwMC1NQUpPUiBNLTEpKQorICAgICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0yKSAoRlI1NTAtTUFKT1IgTS0zKQorCShGUjQwMC1NQUpPUiBNLTEpIChGUjQ1MC1NQUpPUiBNLTEpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGksJHU2LCRGUmludGsiKQogICAgICAgICgrIHBhY2sgRlJpbnRrIG9wIEZSaW50aSBvcGUgdTYpCiAgICAgICAgKHNlcXVlbmNlICgpCkBAIC03MzU2LDE5ICs3OTc4LDIzIEBACiApCiAKIChtZWRpYS1kdWFsLXNoaWZ0IG1zbGxoaSBzbGwgT1BfN0IgT1BFMV8wOQotCQkgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0zKSkgKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYSkpKQorCQkgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0zKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtMykpCisJCSAgIChmcjUwMCAodW5pdCB1LW1lZGlhKSkgKGZyNTUwICh1bml0IHUtbWVkaWEpKSkKIAkJICAiTWVkaWEgZHVhbCBzaGlmdCBsZWZ0ICBsb2dpY2FsIikKIChtZWRpYS1kdWFsLXNoaWZ0IG1zcmxoaSBzcmwgT1BfN0IgT1BFMV8wQQotCQkgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0zKSkgKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYSkpKQorCQkgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0zKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtMykpCisJCSAgIChmcjUwMCAodW5pdCB1LW1lZGlhKSkgKGZyNTUwICh1bml0IHUtbWVkaWEpKSkKIAkJICAiTWVkaWEgZHVhbCBzaGlmdCByaWdodCBsb2dpY2FsIikKIChtZWRpYS1kdWFsLXNoaWZ0IG1zcmFoaSBzcmEgT1BfN0IgT1BFMV8wQgotCQkgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS02KSkgKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYSkpKQorCQkgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS02KSkgKGZyNDUwICh1bml0IHUtbWVkaWEtNikpCisJCSAgIChmcjUwMCAodW5pdCB1LW1lZGlhKSkgKGZyNTUwICh1bml0IHUtbWVkaWEpKSkKIAkJICAiTWVkaWEgZHVhbCBzaGlmdCByaWdodCBhcml0aG1ldGljIikKIAogKGRlZmluZS1wbWFjcm8gKG1lZGlhLWR1YWwtd29yZC1yb3RhdGUtci1yIG5hbWUgb3BlcmF0aW9uIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgRk1MT1cpIChNQUNIIGZyNDAwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS0zKSAoRlI0MDAtTUFKT1IgTS0yKSkKKyAgICAgICAoKFVOSVQgRk1MT1cpIChNQUNIIGZyNDAwLGZyNDUwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS0zKQorCShGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTIpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGlldmVuLCRzNiwkRlJpbnRrZXZlbiIpCiAgICAgICAgKCsgcGFjayBGUmludGtldmVuIG9wIEZSaW50aWV2ZW4gb3BlIHM2KQogICAgICAgIChpZiAob3JpZiAocmVnaXN0ZXItdW5hbGlnbmVkIEZSaW50aWV2ZW4gMikKQEAgLTczODEsNyArODAwNywxMSBAQAogCQkJCSAgICAgKGFuZCBzNiAjeDFmKSkpKSkKICAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMy1xdWFkCiAJCSAgICAgKGluICBGUmludGkgRlJpbnRpZXZlbikKLQkJICAgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpIChmcjU1MCAodW5pdCB1LW1lZGlhLXF1YWQpKSkKKwkJICAgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpIAorCShmcjQ1MCAodW5pdCB1LW1lZGlhLTMtcXVhZAorCQkgICAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCisJCSAgICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKQorCShmcjU1MCAodW5pdCB1LW1lZGlhLXF1YWQpKSkKICAgKQogKQogCkBAIC03Mzg5LDcgKzgwMTksOCBAQAogCiAoZG5pIG1jcGxoaQogICAgICAiTWVkaWEgYml0IGNvbmNhdGVuYXRlLCBoYWxmd29yZCIKLSAgICAgKChVTklUIEZNTE9XKSAoTUFDSCBmcjQwMCxmcjU1MCkgKEZSNTUwLU1BSk9SIE0tMykgKEZSNDAwLU1BSk9SIE0tMikpCisgICAgICgoVU5JVCBGTUxPVykgKE1BQ0ggZnI0MDAsZnI0NTAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTMpCisgICAgICAoRlI0MDAtTUFKT1IgTS0yKSAoRlI0NTAtTUFKT1IgTS0yKSkKICAgICAgIm1jcGxoaSRwYWNrICRGUmludGksJHU2LCRGUmludGsiCiAgICAgICgrIHBhY2sgRlJpbnRrIE9QXzc4IEZSaW50aSBPUEUxXzBDIHU2KQogICAgICAoc2VxdWVuY2UgKChISSBhcmcxKSAoSEkgYXJnMikgKEhJIHNoaWZ0KSkKQEAgLTc0MDQsMTIgKzgwMzUsMTQgQEAKIAkJCQkJICAgIChzdWIgMTUgc2hpZnQpKSkKIAkJCSAgICAgKHNldCBhcmcxIChvciBISSBhcmcxIGFyZzIpKSkpCiAJICAgICAgIChzZXQgKGhhbGZ3b3JkIGhpIEZSaW50ayAwKSBhcmcxKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTMtZHVhbCkpIChmcjU1MCAodW5pdCB1LW1lZGlhLTMtZHVhbCkpKQorICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMy1kdWFsKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtMy1kdWFsKSkKKyAgICAgIChmcjU1MCAodW5pdCB1LW1lZGlhLTMtZHVhbCkpKQogKQogCiAoZG5pIG1jcGxpCiAgICAgICJNZWRpYSBiaXQgY29uY2F0ZW5hdGUsIHdvcmQiCi0gICAgICgoVU5JVCBGTUxPVykgKE1BQ0ggZnI0MDAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTMpIChGUjQwMC1NQUpPUiBNLTIpKQorICAgICAoKFVOSVQgRk1MT1cpIChNQUNIIGZyNDAwLGZyNDUwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS0zKQorICAgICAgKEZSNDAwLU1BSk9SIE0tMikgKEZSNDUwLU1BSk9SIE0tMikpCiAgICAgICJtY3BsaSRwYWNrICRGUmludGksJHU2LCRGUmludGsiCiAgICAgICgrIHBhY2sgRlJpbnRrIE9QXzc4IEZSaW50aSBPUEUxXzBEIHU2KQogICAgICAoc2VxdWVuY2UgKChTSSB0bXApIChTSSBzaGlmdCkpCkBAIC03NDIyLDcgKzgwNTUsOCBAQAogCQkJCQkgICAgKHN1YiAzMSBzaGlmdCkpKQogCQkJICAgICAoc2V0IHRtcCAob3IgdG1wIHRtcDEpKSkpCiAJICAgICAgIChzZXQgRlJpbnRrIHRtcCkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0zLWR1YWwpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS0zLWR1YWwpKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTMtZHVhbCkpIChmcjQ1MCAodW5pdCB1LW1lZGlhLTMtZHVhbCkpCisgICAgICAoZnI1NTAgKHVuaXQgdS1tZWRpYS0zLWR1YWwpKSkKICkKIAogKGRlZmluZS1wbWFjcm8gKHNhdHVyYXRlIGFyZyBtYXggbWluIHJlc3VsdCkKQEAgLTc0MzUsMjAgKzgwNjksMjIgQEAKIAogKGRuaSBtc2F0aHMKICAgICAgIk1lZGlhIGR1YWwgc2F0dXJhdGlvbiBzaWduZWQiCi0gICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tMSkgKEZSNTUwLU1BSk9SIE0tMikgKEZSNDAwLU1BSk9SIE0tMSkpCisgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tMSkgKEZSNTUwLU1BSk9SIE0tMikKKyAgICAgIChGUjQwMC1NQUpPUiBNLTEpIChGUjQ1MC1NQUpPUiBNLTEpKQogICAgICAibXNhdGhzJHBhY2sgJEZSaW50aSwkRlJpbnRqLCRGUmludGsiCiAgICAgICgrIHBhY2sgRlJpbnRrIE9QXzdCIEZSaW50aSBPUEUxXzBDIEZSaW50aikKICAgICAgKHNlcXVlbmNlICgoSEkgYXJnaWhpKSAoSEkgYXJnaWxvKSAoSEkgYXJnamhpKSAoSEkgYXJnamxvKSkKIAkgICAgICAgKGV4dHJhY3QtaGlsbyBGUmludGkgMCBGUmludGogMCBhcmdpaGkgYXJnaWxvIGFyZ2poaSBhcmdqbG8pCiAJICAgICAgIChzYXR1cmF0ZSBhcmdpaGkgYXJnamhpIChpbnYgYXJnamhpKSAoaGFsZndvcmQgaGkgRlJpbnRrIDApKQogCSAgICAgICAoc2F0dXJhdGUgYXJnaWxvIGFyZ2psbyAoaW52IGFyZ2psbykgKGhhbGZ3b3JkIGxvIEZSaW50ayAwKSkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0xKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTEpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS0xKSkKICAgICAgIChmcjUwMCAodW5pdCB1LW1lZGlhKSkgKGZyNTUwICh1bml0IHUtbWVkaWEpKSkKICkKIAogKGRuaSBtcXNhdGhzCiAgICAgICJNZWRpYSBxdWFkIHNhdHVyYXRpb24gc2lnbmVkIgotICAgICAoKFVOSVQgRk1BTEwpIChNQUNIIGZyNDAwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS0yKSAoRlI0MDAtTUFKT1IgTS0xKSkKKyAgICAgKChVTklUIEZNQUxMKSAoTUFDSCBmcjQwMCxmcjQ1MCxmcjU1MCkgKEZSNTUwLU1BSk9SIE0tMikKKyAgICAgIChGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTIpKQogICAgICAibXFzYXRocyRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRGUmludGtldmVuIgogICAgICAoKyBwYWNrIEZSaW50a2V2ZW4gT1BfNzggRlJpbnRpZXZlbiBPUEUxXzBGIEZSaW50amV2ZW4pCiAgICAgIChpZiAob3JpZiAocmVnaXN0ZXItdW5hbGlnbmVkIEZSaW50aWV2ZW4gMikKQEAgLTc0NjcsNyArODEwMywxMiBAQAogICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMS1xdWFkCiAJCSAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCiAJCSAgIChpbiAgRlJpbnRqIEZSaW50amV2ZW4pCi0JCSAgIChvdXQgRlJpbnRrIEZSaW50a2V2ZW4pKSkgKGZyNTUwICh1bml0IHUtbWVkaWEtcXVhZCkpKQorCQkgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpCisgICAgICAoZnI0NTAgKHVuaXQgdS1tZWRpYS0xLXF1YWQKKwkJICAgKGluICBGUmludGkgRlJpbnRpZXZlbikKKwkJICAgKGluICBGUmludGogRlJpbnRqZXZlbikKKwkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKQorICAgICAgKGZyNTUwICh1bml0IHUtbWVkaWEtcXVhZCkpKQogKQogCiAoZGVmaW5lLXBtYWNybyAoc2F0dXJhdGUtdW5zaWduZWQgYXJnIG1heCByZXN1bHQpCkBAIC03NDc4LDIxICs4MTE5LDIzIEBACiAKIChkbmkgbXNhdGh1CiAgICAgICJNZWRpYSBkdWFsIHNhdHVyYXRpb24gdW5zaWduZWQiCi0gICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tMSkgKEZSNTUwLU1BSk9SIE0tMikgKEZSNDAwLU1BSk9SIE0tMSkpCisgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tMSkgKEZSNTUwLU1BSk9SIE0tMikKKyAgICAgIChGUjQwMC1NQUpPUiBNLTEpIChGUjQ1MC1NQUpPUiBNLTEpKQogICAgICAibXNhdGh1JHBhY2sgJEZSaW50aSwkRlJpbnRqLCRGUmludGsiCiAgICAgICgrIHBhY2sgRlJpbnRrIE9QXzdCIEZSaW50aSBPUEUxXzBEIEZSaW50aikKICAgICAgKHNlcXVlbmNlICgoVUhJIGFyZ2loaSkgKFVISSBhcmdpbG8pIChVSEkgYXJnamhpKSAoVUhJIGFyZ2psbykpCiAJICAgICAgIChleHRyYWN0LWhpbG8gRlJpbnRpIDAgRlJpbnRqIDAgYXJnaWhpIGFyZ2lsbyBhcmdqaGkgYXJnamxvKQogCSAgICAgICAoc2F0dXJhdGUtdW5zaWduZWQgYXJnaWhpIGFyZ2poaSAoaGFsZndvcmQgaGkgRlJpbnRrIDApKQogCSAgICAgICAoc2F0dXJhdGUtdW5zaWduZWQgYXJnaWxvIGFyZ2psbyAoaGFsZndvcmQgbG8gRlJpbnRrIDApKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTEpKQorICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMSkpIChmcjQ1MCAodW5pdCB1LW1lZGlhLTEpKQogICAgICAgKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYSkpKQogKQogCiAoZGVmaW5lLXBtYWNybyAobWVkaWEtZHVhbC1jb21wYXJlIG5hbWUgbW9kZSBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS0xKSAoRlI1NTAtTUFKT1IgTS0yKSAoRlI0MDAtTUFKT1IgTS0xKSkKKyAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTEpIChGUjU1MC1NQUpPUiBNLTIpCisJKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIE0tMSkpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEZSaW50aSwkRlJpbnRqLCRGQ0NrIikKICAgICAgICAoKyBwYWNrIChjb25kLW51bGwpIEZDQ2sgb3AgRlJpbnRpIG9wZSBGUmludGopCiAgICAgICAgKGlmIChyZWdpc3Rlci11bmFsaWduZWQgRkNDayAyKQpAQCAtNzUwMyw3ICs4MTQ2LDcgQEAKIAkJICAgICAoY29tcGFyZS1hbmQtc2V0LWZjYyBhcmdpaGkgYXJnamhpIEZDQ2spCiAJCSAgICAgKGNvbXBhcmUtYW5kLXNldC1mY2MgYXJnaWxvIGFyZ2psbyAobmV4dHJlZyBoLWZjY3IgRkNDayAxKSkpKQogICAgICAgIDsgVE9ETyAtIGRvZXNuJ3QgaGFuZGxlIHNlY29uZCBGQ0MKLSAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtNykpCisgICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTcpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS03KSkKIAkoZnI1MDAgKHVuaXQgdS1tZWRpYSkpIChmcjU1MCAodW5pdCB1LW1lZGlhKSkpCiAgICkKICkKQEAgLTc1MzYsNyArODE3OSw4IEBACiAKIChkbmkgbWFic2hzCiAgICAgICJNZWRpYSBkdWFsIGFic29sdXRlIHZhbHVlLCBoYWxmd29yZCIKLSAgICAgKChVTklUIEZNQUxMKSAoTUFDSCBmcjQwMCxmcjU1MCkgKEZSNTUwLU1BSk9SIE0tMikgKEZSNDAwLU1BSk9SIE0tMSkpCisgICAgICgoVU5JVCBGTUFMTCkgKE1BQ0ggZnI0MDAsZnI0NTAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTIpCisgICAgICAoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0xKSkKICAgICAgIm1hYnNocyRwYWNrICRGUmludGosJEZSaW50ayIKICAgICAgKCsgcGFjayBGUmludGsgT1BfNzggKEZSaS1udWxsKSBPUEUxXzBBIEZSaW50aikKICAgICAgKHNlcXVlbmNlICgoSEkgYXJnaGkpIChISSBhcmdsbykpCkBAIC03NTQ4LDcgKzgxOTIsOCBAQAogCQkJICAgKGhhbGZ3b3JkIGhpIEZSaW50ayAwKSkKIAkgICAgICAgKHNhdHVyYXRlLXYgKGFicyBhcmdsbykgMzI3NjcgLTMyNzY4IChtc3Itc2llLWZyaS1sbykKIAkJCSAgIChoYWxmd29yZCBsbyBGUmludGsgMCkpKQotICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMSkpIChmcjU1MCAodW5pdCB1LW1lZGlhKSkpCisgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0xKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtMSkpCisgICAgICAoZnI1NTAgKHVuaXQgdS1tZWRpYSkpKQogKQogCiAoZGVmaW5lLXBtYWNybyAobWVkaWEtYXJpdGgtc2F0LXNlbWFudGljcwpAQCAtNzU3MiwxMSArODIxNywxMiBAQAogKGRlZmluZS1wbWFjcm8gKG1lZGlhLWR1YWwtYXJpdGgtc2F0IG5hbWUgb3BlcmF0aW9uIG1vZGUgbWF4IG1pbiBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS0xKSAoRlI1NTAtTUFKT1IgTS0yKSAoRlI0MDAtTUFKT1IgTS0xKSkKKyAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTEpIChGUjU1MC1NQUpPUiBNLTIpCisJKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIE0tMSkpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEZSaW50aSwkRlJpbnRqLCRGUmludGsiKQogICAgICAgICgrIHBhY2sgRlJpbnRrIG9wIEZSaW50aSBvcGUgRlJpbnRqKQogICAgICAgIChtZWRpYS1kdWFsLWFyaXRoLXNhdC1zZW1hbnRpY3Mgb3BlcmF0aW9uIG1vZGUgbWF4IG1pbikKLSAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMSkpCisgICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTEpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS0xKSkKIAkoZnI1MDAgKHVuaXQgdS1tZWRpYSkpIChmcjU1MCAodW5pdCB1LW1lZGlhKSkpCiAgICkKICkKQEAgLTc1OTEsMTIgKzgyMzcsMTMgQEAKIAkJbmFtZSBvcGVyYXRpb24gbW9kZSBtYXggbWluIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTEpIChGUjU1MC1NQUpPUiBNLTIpIChGUjQwMC1NQUpPUiBNLTEpIENPTkRJVElPTkFMKQorICAgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tMSkgKEZSNTUwLU1BSk9SIE0tMikKKwkoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0xKSBDT05ESVRJT05BTCkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkRlJpbnRpLCRGUmludGosJEZSaW50aywkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrIEZSaW50ayBvcCBGUmludGkgQ0NpIGNvbmQgb3BlIEZSaW50aikKICAgICAgICAoaWYgKGVxIENDaSAob3IgY29uZCAyKSkKIAkgICAobWVkaWEtZHVhbC1hcml0aC1zYXQtc2VtYW50aWNzIG9wZXJhdGlvbiBtb2RlIG1heCBtaW4pKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0xKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMSkpIChmcjQ1MCAodW5pdCB1LW1lZGlhLTEpKQogCShmcjUwMCAodW5pdCB1LW1lZGlhKSkgKGZyNTUwICh1bml0IHUtbWVkaWEpKSkKICAgKQogKQpAQCAtNzYzNyw3ICs4Mjg0LDggQEAKIChkZWZpbmUtcG1hY3JvIChtZWRpYS1xdWFkLWFyaXRoLXNhdCBuYW1lIG9wZXJhdGlvbiBtb2RlIG1heCBtaW4gb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tMSkgKEZSNTUwLU1BSk9SIE0tMikgKEZSNDAwLU1BSk9SIE0tMikpCisgICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS0xKSAoRlI1NTAtTUFKT1IgTS0yKQorCShGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTIpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRGUmludGtldmVuIikKICAgICAgICAoKyBwYWNrIEZSaW50a2V2ZW4gb3AgRlJpbnRpZXZlbiBvcGUgRlJpbnRqZXZlbikKICAgICAgICAobWVkaWEtcXVhZC1hcml0aC1zYXQtc2VtYW50aWNzIDEgb3BlcmF0aW9uIG1vZGUgbWF4IG1pbikKQEAgLTc2NDUsNiArODI5MywxMCBAQAogCQkgICAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCiAJCSAgICAgKGluICBGUmludGogRlJpbnRqZXZlbikKIAkJICAgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpCisJKGZyNDUwICh1bml0IHUtbWVkaWEtMS1xdWFkCisJCSAgICAgKGluICBGUmludGkgRlJpbnRpZXZlbikKKwkJICAgICAoaW4gIEZSaW50aiBGUmludGpldmVuKQorCQkgICAgIChvdXQgRlJpbnRrIEZSaW50a2V2ZW4pKSkKIAkoZnI1MDAgKHVuaXQgdS1tZWRpYS1xdWFkLWFyaXRoCiAJCSAgICAgKGluICBGUmludGkgRlJpbnRpZXZlbikKIAkJICAgICAoaW4gIEZSaW50aiBGUmludGpldmVuKQpAQCAtNzY2Miw3ICs4MzE0LDggQEAKIAkJbmFtZSBvcGVyYXRpb24gbW9kZSBtYXggbWluIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTEpIChGUjU1MC1NQUpPUiBNLTIpIChGUjQwMC1NQUpPUiBNLTIpIENPTkRJVElPTkFMKQorICAgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tMSkgKEZSNTUwLU1BSk9SIE0tMikKKwkoRlI0MDAtTUFKT1IgTS0yKSAoRlI0NTAtTUFKT1IgTS0yKSBDT05ESVRJT05BTCkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkRlJpbnRpZXZlbiwkRlJpbnRqZXZlbiwkRlJpbnRrZXZlbiwkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrIEZSaW50a2V2ZW4gb3AgRlJpbnRpZXZlbiBDQ2kgY29uZCBvcGUgRlJpbnRqZXZlbikKICAgICAgICAobWVkaWEtcXVhZC1hcml0aC1zYXQtc2VtYW50aWNzIChlcSBDQ2kgKG9yIGNvbmQgMikpCkBAIC03NjcxLDYgKzgzMjQsMTAgQEAKIAkJICAgICAoaW4gIEZSaW50aSBGUmludGlldmVuKQogCQkgICAgIChpbiAgRlJpbnRqIEZSaW50amV2ZW4pCiAJCSAgICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKQorCShmcjQ1MCAodW5pdCB1LW1lZGlhLTEtcXVhZAorCQkgICAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCisJCSAgICAgKGluICBGUmludGogRlJpbnRqZXZlbikKKwkJICAgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpCiAJKGZyNTAwICh1bml0IHUtbWVkaWEtcXVhZC1hcml0aAogCQkgICAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCiAJCSAgICAgKGluICBGUmludGogRlJpbnRqZXZlbikKQEAgLTc2ODQsMTAgKzgzNDEsOTggQEAKIChjb25kaXRpb25hbC1tZWRpYS1xdWFkLWFyaXRoLXNhdCBjbXFzdWJoc3Mgc3ViICBISSAzMjc2NyAtMzI3NjggT1BfNzMgT1BFNF8yICJDb25kaXRpb25hbCBNZWRpYSBxdWFkIHN1YiBzaWduZWQgd2l0aCBzYXR1cmF0aW9uIikKIChjb25kaXRpb25hbC1tZWRpYS1xdWFkLWFyaXRoLXNhdCBjbXFzdWJodXMgc3ViIFVISSA2NTUzNSAgICAgIDAgT1BfNzMgT1BFNF8zICJDb25kaXRpb25hbCBNZWRpYSBxdWFkIHN1YiB1bnNpZ25lZCB3aXRoIHNhdHVyYXRpb24iKQogCis7OyBSZXR1cm4gQSBpZiB8QXwgPiB8QnwgYW5kIEIgaXMgcG9zaXRpdmUuICBSZXR1cm4gLUEgaWYgfEF8ID4gfEJ8IGFuZAorOzsgQiBpcyBuZWdhdGl2ZSwgc2F0dXJhdGluZyAweDgwMDAgYXMgMHg3ZmZmLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLgorKGRlZmluZS1wbWFjcm8gKG1lZGlhLWxvdy1jbGVhci1zZW1hbnRpY3MgYSBiKQorICAoY29uZCBISQorCSgobGUgVUhJIChhYnMgYSkgKGFicyBiKSkgMCkKKwkoKGxlIEhJIDAgYikgYSkKKwkoKGVxIEhJIGEgLTMyNzY4KSAzMjc2NykKKwkoZWxzZSAobmVnIGEpKSkpCisKKzs7IFJldHVybiBBIGlmIC18QnwgPCBBIDwgfEJ8LiAgUmV0dXJuIC1CIGlmIEEgPD0gLXxCfCwgc2F0dXJhdGluZyAweDgwMDAKKzs7IGFzIDB4N2ZmZi4gIFJldHVybiBCIGlmIEEgPj0gfEJ8LgorKGRlZmluZS1wbWFjcm8gKG1lZGlhLXNjb3BlLWxpbWl0LXNlbWFudGljcyBhIGIpCisgIChjb25kIEhJCisJKChhbmRpZiAoZ3QgSEkgYiAtMzI3NjgpCisJCShnZSBISSBhIChhYnMgYikpKSBiKQorCSgoZ3QgSEkgYSAobmVnIChhYnMgYikpKSBhKQorCSgoZXEgSEkgYiAtMzI3NjgpIDMyNzY3KQorCShlbHNlIChuZWcgYikpKSkKKworKGRlZmluZS1wbWFjcm8gKG1lZGlhLXF1YWQtbGltaXQgbmFtZSBvcGVyYXRpb24gb3Agb3BlIGNvbW1lbnQpCisgIChkbmkgbmFtZQorICAgICAgIGNvbW1lbnQKKyAgICAgICAoKFVOSVQgRk0wKSAoTUFDSCBmcjQ1MCkgKEZSNDUwLU1BSk9SIE0tMikpCisgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEZSaW50a2V2ZW4iKQorICAgICAgICgrIHBhY2sgRlJpbnRrZXZlbiBvcCBGUmludGlldmVuIG9wZSBGUmludGpldmVuKQorICAgICAgIChpZiAob3JpZiAocmVnaXN0ZXItdW5hbGlnbmVkIEZSaW50aWV2ZW4gMikKKwkJIChvcmlmIChyZWdpc3Rlci11bmFsaWduZWQgRlJpbnRqZXZlbiAyKQorCQkgICAgICAgKHJlZ2lzdGVyLXVuYWxpZ25lZCBGUmludGtldmVuIDIpKSkKKwkgICAoYy1jYWxsIFZPSUQgIkBjcHVAX21lZGlhX3JlZ2lzdGVyX25vdF9hbGlnbmVkIikKKwkgICAoc2VxdWVuY2UgKChISSBhMSkgKEhJIGEyKSAoSEkgYTMpIChISSBhNCkKKwkJICAgICAgKEhJIGIxKSAoSEkgYjIpIChISSBiMykgKEhJIGI0KSkKKwkJICAgICA7IGhhY2sgdG8gZ2V0IEZSaW50a2V2ZW4gcmVmZXJlbmNlZCBhcyBhIHRhcmdldAorCQkgICAgIDsgZm9yIHByb2ZpbGluZworCQkgICAgIChzZXQgRlJpbnRrZXZlbiAoYy1yYXctY2FsbCBTSSAiZnJ2X3JlZl9TSSIgRlJpbnRrZXZlbikpCisJCSAgICAgKGV4dHJhY3QtaGlsbyBGUmludGlldmVuIDAgRlJpbnRqZXZlbiAwIGExIGEyIGIxIGIyKQorCQkgICAgIChleHRyYWN0LWhpbG8gRlJpbnRpZXZlbiAxIEZSaW50amV2ZW4gMSBhMyBhNCBiMyBiNCkKKwkJICAgICAoc2V0IChoYWxmd29yZCBoaSBGUmludGtldmVuIDApIChvcGVyYXRpb24gYTEgYjEpKQorCQkgICAgIChzZXQgKGhhbGZ3b3JkIGxvIEZSaW50a2V2ZW4gMCkgKG9wZXJhdGlvbiBhMiBiMikpCisJCSAgICAgKHNldCAoaGFsZndvcmQgaGkgRlJpbnRrZXZlbiAxKSAob3BlcmF0aW9uIGEzIGIzKSkKKwkJICAgICAoc2V0IChoYWxmd29yZCBsbyBGUmludGtldmVuIDEpIChvcGVyYXRpb24gYTQgYjQpKSkpCisgICAgICAgKChmcjQ1MCAodW5pdCB1LW1lZGlhLTEtcXVhZAorCQkgICAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCisJCSAgICAgKGluICBGUmludGogRlJpbnRqZXZlbikKKwkJICAgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpKQorICApCispCisKKyhtZWRpYS1xdWFkLWxpbWl0IG1xbGNscmhzIG1lZGlhLWxvdy1jbGVhci1zZW1hbnRpY3MgT1BfNzggT1BFMV8xMAorCQkgICJNZWRpYSBxdWFkIGxvdyBjbGVhciIpCisobWVkaWEtcXVhZC1saW1pdCBtcWxtdGhzIG1lZGlhLXNjb3BlLWxpbWl0LXNlbWFudGljcyBPUF83OCBPUEUxXzE0CisJCSAgIk1lZGlhIHF1YWQgc2NvcGUgbGltaXRhdGlvbiIpCisKKyhkZWZpbmUtcG1hY3JvIChtZWRpYS1xdWFkLXNoaWZ0IG5hbWUgb3BlcmF0aW9uIG9wIG9wZSBjb21tZW50KQorICAoZG5pIG5hbWUKKyAgICAgICAoY29tbWVudCkKKyAgICAgICAoKFVOSVQgRk0wKSAoTUFDSCBmcjQ1MCkgKEZSNDUwLU1BSk9SIE0tMikpCisgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEZSaW50aWV2ZW4sJHU2LCRGUmludGtldmVuIikKKyAgICAgICAoKyBwYWNrIEZSaW50a2V2ZW4gb3AgRlJpbnRpZXZlbiBvcGUgdTYpCisgICAgICAgKGlmIChvcmlmIChyZWdpc3Rlci11bmFsaWduZWQgRlJpbnRpZXZlbiAyKQorCQkgKHJlZ2lzdGVyLXVuYWxpZ25lZCBGUmludGtldmVuIDIpKQorCSAgIChjLWNhbGwgVk9JRCAiQGNwdUBfbWVkaWFfcmVnaXN0ZXJfbm90X2FsaWduZWQiKQorCSAgIChzZXF1ZW5jZSAoKQorCQkgICAgIDsgaGFjayB0byBnZXQgdGhlc2UgcmVmZXJlbmNlZCBmb3IgcHJvZmlsaW5nCisJCSAgICAgKHNldCBGUmludGlldmVuIChjLXJhdy1jYWxsIFNJICJmcnZfcmVmX1NJIiBGUmludGlldmVuKSkKKwkJICAgICAoc2V0IEZSaW50a2V2ZW4gKGMtcmF3LWNhbGwgU0kgImZydl9yZWZfU0kiIEZSaW50a2V2ZW4pKQorCQkgICAgIChzZXQgKGhhbGZ3b3JkIGhpIEZSaW50a2V2ZW4gMCkKKwkJCSAgKG9wZXJhdGlvbiBISSAoaGFsZndvcmQgaGkgRlJpbnRpZXZlbiAwKQorCQkJCQkoYW5kIHU2ICN4ZikpKQorCQkgICAgIChzZXQgKGhhbGZ3b3JkIGxvIEZSaW50a2V2ZW4gMCkKKwkJCSAgKG9wZXJhdGlvbiBISSAoaGFsZndvcmQgbG8gRlJpbnRpZXZlbiAwKQorCQkJCQkoYW5kIHU2ICN4ZikpKQorCQkgICAgIChzZXQgKGhhbGZ3b3JkIGhpIEZSaW50a2V2ZW4gMSkKKwkJCSAgKG9wZXJhdGlvbiBISSAoaGFsZndvcmQgaGkgRlJpbnRpZXZlbiAxKQorCQkJCQkoYW5kIHU2ICN4ZikpKQorCQkgICAgIChzZXQgKGhhbGZ3b3JkIGxvIEZSaW50a2V2ZW4gMSkKKwkJCSAgKG9wZXJhdGlvbiBISSAoaGFsZndvcmQgbG8gRlJpbnRpZXZlbiAxKQorCQkJCQkoYW5kIHU2ICN4ZikpKSkpCisgICAgICAgKChmcjQ1MCAodW5pdCB1LW1lZGlhLTMtcXVhZAorCQkgICAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCisJCSAgICAgKGluICBGUmludGogRlJpbnRpZXZlbikKKwkJICAgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpKQorICApCispCisKKyhtZWRpYS1xdWFkLXNoaWZ0IG1xc2xsaGkgc2xsIE9QXzc4IE9QRTFfMTEgIk1lZGlhIHF1YWQgbGVmdCBzaGlmdCIpCisobWVkaWEtcXVhZC1zaGlmdCBtcXNyYWhpIHNyYSBPUF83OCBPUEUxXzEzICJNZWRpYSBxdWFkIHJpZ2h0IHNoaWZ0IikKKwogKGRlZmluZS1wbWFjcm8gKG1lZGlhLWFjYy1hcml0aC1zYXQgbmFtZSBvcGVyYXRpb24gbW9kZSBtYXggbWluIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgRk1BTEwpIChNQUNIIGZyNDAwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS00KSAoRlI0MDAtTUFKT1IgTS0xKSkKKyAgICAgICAoKFVOSVQgRk1BTEwpIChNQUNIIGZyNDAwLGZyNDUwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS00KQorCShGUjQwMC1NQUpPUiBNLTEpIChGUjQ1MC1NQUpPUiBNLTMpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRBQ0M0MFNpLCRBQ0M0MFNrIikKICAgICAgICAoKyBwYWNrIEFDQzQwU2sgb3AgQUNDNDBTaSBvcGUgKEFDQ2otbnVsbCkpCiAgICAgICAgKGlmIChjLWNhbGwgU0kgIkBjcHVAX2NoZWNrX2FjY19yYW5nZSIgKGluZGV4LW9mIEFDQzQwU2kpKQpAQCAtNzY5Nyw3ICs4NDQyLDggQEAKIAkJICAgKG1lZGlhLWFyaXRoLXNhdC1zZW1hbnRpY3Mgb3BlcmF0aW9uIEFDQzQwU2kKIAkJCQkJICAgICAgKG5leHRyZWcgaC1hY2M0MFMgQUNDNDBTaSAxKQogCQkJCQkgICAgICBBQ0M0MFNrIG1vZGUgbWF4IG1pbiAobXNyLXNpZS1hY2NpKSkpKSkKLSAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMi1hY2MpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS00LWFjYykpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yLWFjYykpIChmcjQ1MCAodW5pdCB1LW1lZGlhLTItYWNjKSkKKwkoZnI1NTAgKHVuaXQgdS1tZWRpYS00LWFjYykpKQogICApCiApCiAKQEAgLTc3MTAsNyArODQ1Niw4IEBACiAJCQkJCSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgTURVQUxBQ0MpIChNQUNIIGZyNDAwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS00KSAoRlI0MDAtTUFKT1IgTS0yKSkKKyAgICAgICAoKFVOSVQgTURVQUxBQ0MpIChNQUNIIGZyNDAwLGZyNDUwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS00KQorCShGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTQpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRBQ0M0MFNpLCRBQ0M0MFNrIikKICAgICAgICAoKyBwYWNrIEFDQzQwU2sgb3AgQUNDNDBTaSBvcGUgKEFDQ2otbnVsbCkpCiAgICAgICAgKGlmIChjLWNhbGwgU0kgIkBjcHVAX2NoZWNrX2FjY19yYW5nZSIgKGluZGV4LW9mIEFDQzQwU2kpKQpAQCAtNzczMCw3ICs4NDc3LDggQEAKIAkJCQkJCQkgICAgKG5leHRyZWcgaC1hY2M0MFMgQUNDNDBTayAxKQogCQkJCQkJCSAgICBtb2RlIG1heCBtaW4KIAkJCQkJCQkgICAgKG1zci1zaWUtYWNjaS0xKSkpKSkpKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yLWFjYy1kdWFsKSkgKGZyNTUwICh1bml0IHUtbWVkaWEtNC1hY2MtZHVhbCkpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yLWFjYy1kdWFsKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtMi1hY2MtZHVhbCkpCisJKGZyNTUwICh1bml0IHUtbWVkaWEtNC1hY2MtZHVhbCkpKQogICApCiApCiAKQEAgLTc3NDEsNyArODQ4OSw4IEBACiAKIChkbmkgbWFzYWNjcwogICAgICAiTWVkaWEgYWRkIGFuZCBzdWJ0cmFjdCBzaWduZWQgYWNjdW11bGF0b3Igd2l0aCBzYXR1cmF0aW9uIgotICAgICAgICgoVU5JVCBGTUFMTCkgKE1BQ0ggZnI0MDAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTQpIChGUjQwMC1NQUpPUiBNLTEpKQorICAgICAgICgoVU5JVCBGTUFMTCkgKE1BQ0ggZnI0MDAsZnI0NTAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTQpCisJKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIE0tMykpCiAgICAgICAgIm1hc2FjY3MkcGFjayAkQUNDNDBTaSwkQUNDNDBTayIKICAgICAgICAoKyBwYWNrIEFDQzQwU2sgT1BfNzggQUNDNDBTaSBPUEUxXzA4IChBQ0NqLW51bGwpKQogICAgICAgIChpZiAoYy1jYWxsIFNJICJAY3B1QF9jaGVja19hY2NfcmFuZ2UiIChpbmRleC1vZiBBQ0M0MFNpKSkKQEAgLTc3NjQsMTIgKzg1MTMsMTQgQEAKIAkJCQkJCQkgICAgI3g3ZmZmZmZmZmZmCiAJCQkJCQkJICAgIChpbnYgREkgI3g3ZmZmZmZmZmZmKQogCQkJCQkJCSAgICAobXNyLXNpZS1hY2NpLTEpKSkpKSkpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTItYWRkLXN1YikpIChmcjU1MCAodW5pdCB1LW1lZGlhLTQtYWRkLXN1YikpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yLWFkZC1zdWIpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS0yLWFkZC1zdWIpKQorCShmcjU1MCAodW5pdCB1LW1lZGlhLTQtYWRkLXN1YikpKQogICApCiAKIChkbmkgbWRhc2FjY3MKICAgICAgIk1lZGlhIGFkZCBhbmQgc3VidHJhY3Qgc2lnbmVkIGFjY3VtdWxhdG9yIHdpdGggc2F0dXJhdGlvbiIKLSAgICAgICAoKFVOSVQgTURVQUxBQ0MpIChNQUNIIGZyNDAwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS00KSAoRlI0MDAtTUFKT1IgTS0yKSkKKyAgICAgICAoKFVOSVQgTURVQUxBQ0MpIChNQUNIIGZyNDAwLGZyNDUwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS00KQorCShGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTQpKQogICAgICAgICJtZGFzYWNjcyRwYWNrICRBQ0M0MFNpLCRBQ0M0MFNrIgogICAgICAgICgrIHBhY2sgQUNDNDBTayBPUF83OCBBQ0M0MFNpIE9QRTFfMDkgKEFDQ2otbnVsbCkpCiAgICAgICAgKGlmIChjLWNhbGwgU0kgIkBjcHVAX2NoZWNrX2FjY19yYW5nZSIgKGluZGV4LW9mIEFDQzQwU2kpKQpAQCAtNzgwOCw3ICs4NTU5LDkgQEAKIAkJCQkJCQkgICAgI3g3ZmZmZmZmZmZmCiAJCQkJCQkJICAgIChpbnYgREkgI3g3ZmZmZmZmZmZmKQogCQkJCQkJCSAgICAobXNyLXNpZS1hY2NpLTMpKSkpKSkpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTItYWRkLXN1Yi1kdWFsKSkgKGZyNTUwICh1bml0IHUtbWVkaWEtNC1hZGQtc3ViLWR1YWwpKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMi1hZGQtc3ViLWR1YWwpKQorCShmcjQ1MCAodW5pdCB1LW1lZGlhLTItYWRkLXN1Yi1kdWFsKSkKKwkoZnI1NTAgKHVuaXQgdS1tZWRpYS00LWFkZC1zdWItZHVhbCkpKQogICApCiAKIChkZWZpbmUtcG1hY3JvIChtZWRpYS1tdWx0aXBseS1zZW1hbnRpY3MgY29udiBhcmcxIGFyZzIgcmVzKQpAQCAtNzgzMSwxMSArODU4NCwxMiBAQAogKGRlZmluZS1wbWFjcm8gKG1lZGlhLWR1YWwtbXVsdGlwbHkgbmFtZSBtb2RlIGNvbnYgcmhzMSByaHMyIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTQpIChGUjU1MC1NQUpPUiBNLTQpIChGUjQwMC1NQUpPUiBNLTEpIFBSRVNFUlZFLU9WRikKKyAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTQpIChGUjU1MC1NQUpPUiBNLTQpCisJKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIE0tMykgUFJFU0VSVkUtT1ZGKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGksJEZSaW50aiwkQUNDNDBTayIpCiAgICAgICAgKCsgcGFjayBBQ0M0MFNrIG9wIEZSaW50aSBvcGUgRlJpbnRqKQogICAgICAgIChtZWRpYS1kdWFsLW11bHRpcGx5LXNlbWFudGljcyAxIG1vZGUgY29udiByaHMxIHJoczIpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTIpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtMikpCiAJKGZyNTAwICh1bml0IHUtbWVkaWEtZHVhbC1tdWwpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS00KSkpCiAgICkKICkKQEAgLTc4NTAsMTIgKzg2MDQsMTMgQEAKIAkJbmFtZSBtb2RlIGNvbnYgcmhzMSByaHMyIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTQpIChGUjU1MC1NQUpPUiBNLTQpIChGUjQwMC1NQUpPUiBNLTEpCisgICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS00KSAoRlI1NTAtTUFKT1IgTS00KQorCShGUjQwMC1NQUpPUiBNLTEpIChGUjQ1MC1NQUpPUiBNLTMpCiAJUFJFU0VSVkUtT1ZGIENPTkRJVElPTkFMKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGksJEZSaW50aiwkQUNDNDBTaywkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrIEFDQzQwU2sgb3AgRlJpbnRpIENDaSBjb25kIG9wZSBGUmludGopCiAgICAgICAgKG1lZGlhLWR1YWwtbXVsdGlwbHktc2VtYW50aWNzIChlcSBDQ2kgKG9yIGNvbmQgMikpIG1vZGUgY29udiByaHMxIHJoczIpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTIpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtMikpCiAJKGZyNTAwICh1bml0IHUtbWVkaWEtZHVhbC1tdWwpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS00KSkpCiAgICkKICkKQEAgLTc4ODksMTMgKzg2NDQsMTcgQEAKIChkZWZpbmUtcG1hY3JvIChtZWRpYS1xdWFkLW11bHRpcGx5IG5hbWUgbW9kZSBjb252IHJoczEgcmhzMiBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS00KSAoRlI1NTAtTUFKT1IgTS00KSAoRlI0MDAtTUFKT1IgTS0yKSBQUkVTRVJWRS1PVkYpCisgICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS00KSAoRlI1NTAtTUFKT1IgTS00KQorCShGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTQpIFBSRVNFUlZFLU9WRikKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkRlJpbnRpZXZlbiwkRlJpbnRqZXZlbiwkQUNDNDBTayIpCiAgICAgICAgKCsgcGFjayBBQ0M0MFNrIG9wIEZSaW50aWV2ZW4gb3BlIEZSaW50amV2ZW4pCiAgICAgICAgKG1lZGlhLXF1YWQtbXVsdGlwbHktc2VtYW50aWNzIDEgbW9kZSBjb252IHJoczEgcmhzMikgCiAgICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTItcXVhZAogCQkgICAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCiAJCSAgICAgKGluICBGUmludGogRlJpbnRqZXZlbikpKQorCShmcjQ1MCAodW5pdCB1LW1lZGlhLTItcXVhZAorCQkgICAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCisJCSAgICAgKGluICBGUmludGogRlJpbnRqZXZlbikpKQogCShmcjUwMCAodW5pdCB1LW1lZGlhLXF1YWQtbXVsCiAJCSAgICAgKGluICBGUmludGkgRlJpbnRpZXZlbikKIAkJICAgICAoaW4gIEZSaW50aiBGUmludGpldmVuKSkpIChmcjU1MCAodW5pdCB1LW1lZGlhLTQtcXVhZCkpKQpAQCAtNzkxMiw3ICs4NjcxLDggQEAKIAkJbmFtZSBtb2RlIGNvbnYgcmhzMSByaHMyIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTQpIChGUjU1MC1NQUpPUiBNLTQpIChGUjQwMC1NQUpPUiBNLTIpCisgICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS00KSAoRlI1NTAtTUFKT1IgTS00KQorCShGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTQpCiAJUFJFU0VSVkUtT1ZGIENPTkRJVElPTkFMKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRBQ0M0MFNrLCRDQ2ksJGNvbmQiKQogICAgICAgICgrIHBhY2sgQUNDNDBTayBvcCBGUmludGlldmVuIENDaSBjb25kIG9wZSBGUmludGpldmVuKQpAQCAtNzkyMCw2ICs4NjgwLDkgQEAKICAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMi1xdWFkCiAJCSAgICAgKGluICBGUmludGkgRlJpbnRpZXZlbikKIAkJICAgICAoaW4gIEZSaW50aiBGUmludGpldmVuKSkpCisJKGZyNDUwICh1bml0IHUtbWVkaWEtMi1xdWFkCisJCSAgICAgKGluICBGUmludGkgRlJpbnRpZXZlbikKKwkJICAgICAoaW4gIEZSaW50aiBGUmludGpldmVuKSkpCiAJKGZyNTAwICh1bml0IHUtbWVkaWEtcXVhZC1tdWwKIAkJICAgICAoaW4gIEZSaW50aSBGUmludGlldmVuKQogCQkgICAgIChpbiAgRlJpbnRqIEZSaW50amV2ZW4pKSkgKGZyNTUwICh1bml0IHUtbWVkaWEtNC1xdWFkKSkpCkBAIC03OTU3LDExICs4NzIwLDEyIEBACiAJCW5hbWUgbW9kZSBjb252IGFkZG9wIHJodyByZXMgbWF4IG1pbiBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS00KSAoRlI1NTAtTUFKT1IgTS00KSAoRlI0MDAtTUFKT1IgTS0xKSkKKyAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTQpIChGUjU1MC1NQUpPUiBNLTQpCisJKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIE0tMykpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEZSaW50aSwkRlJpbnRqLCQiIHJlcykKICAgICAgICAoKyBwYWNrIHJlcyBvcCBGUmludGkgb3BlIEZSaW50aikKICAgICAgICAobWVkaWEtZHVhbC1tdWx0aXBseS1hY2Mtc2VtYW50aWNzIDEgbW9kZSBjb252IGFkZG9wIHJodyByZXMgbWF4IG1pbikKLSAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTIpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS0yKSkKIAkoZnI1MDAgKHVuaXQgdS1tZWRpYS1kdWFsLW11bCkpIChmcjU1MCAodW5pdCB1LW1lZGlhLTQpKSkKICAgKQogKQpAQCAtNzk5MCwxMiArODc1NCwxMyBAQAogCQluYW1lIG1vZGUgY29udiBhZGRvcCByaHcgcmVzIG1heCBtaW4gb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tNCkgKEZSNTUwLU1BSk9SIE0tNCkgKEZSNDAwLU1BSk9SIE0tMSkgQ09ORElUSU9OQUwpCisgICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS00KSAoRlI1NTAtTUFKT1IgTS00KQorCShGUjQwMC1NQUpPUiBNLTEpIChGUjQ1MC1NQUpPUiBNLTMpIENPTkRJVElPTkFMKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGksJEZSaW50aiwkIiByZXMgIiwkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrIHJlcyBvcCBGUmludGkgQ0NpIGNvbmQgb3BlIEZSaW50aikKICAgICAgICAobWVkaWEtZHVhbC1tdWx0aXBseS1hY2Mtc2VtYW50aWNzIChlcSBDQ2kgKG9yIGNvbmQgMikpCiAJCQkJCSAgbW9kZSBjb252IGFkZG9wIHJodyByZXMgbWF4IG1pbikKLSAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMikpCisgICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTIpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS0yKSkKIAkoZnI1MDAgKHVuaXQgdS1tZWRpYS1kdWFsLW11bCkpIChmcjU1MCAodW5pdCB1LW1lZGlhLTQpKSkKICAgKQogKQpAQCAtODA0NCwxMyArODgwOSwxNyBAQAogCQluYW1lIG1vZGUgY29udiBhZGRvcCByaHcgcmVzIG1heCBtaW4gb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tNCkgKEZSNTUwLU1BSk9SIE0tNCkgKEZSNDAwLU1BSk9SIE0tMikpCisgICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS00KSAoRlI1NTAtTUFKT1IgTS00KQorCShGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTQpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCQiIHJlcykKICAgICAgICAoKyBwYWNrIHJlcyBvcCBGUmludGlldmVuIG9wZSBGUmludGpldmVuKQogICAgICAgIChtZWRpYS1xdWFkLW11bHRpcGx5LWFjYy1zZW1hbnRpY3MgMSBtb2RlIGNvbnYgYWRkb3Agcmh3IHJlcyBtYXggbWluKQogICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yLXF1YWQKIAkJICAgICAoaW4gIEZSaW50aSBGUmludGlldmVuKQogCQkgICAgIChpbiAgRlJpbnRqIEZSaW50amV2ZW4pKSkKKwkoZnI0NTAgKHVuaXQgdS1tZWRpYS0yLXF1YWQKKwkJICAgICAoaW4gIEZSaW50aSBGUmludGlldmVuKQorCQkgICAgIChpbiAgRlJpbnRqIEZSaW50amV2ZW4pKSkKIAkoZnI1MDAgKHVuaXQgdS1tZWRpYS1xdWFkLW11bAogCQkgICAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCiAJCSAgICAgKGluICBGUmludGogRlJpbnRqZXZlbikpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS00LXF1YWQpKSkKQEAgLTgwNzEsNyArODg0MCw4IEBACiAJCW5hbWUgbW9kZSBjb252IGFkZG9wIHJodyByZXMgbWF4IG1pbiBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS00KSAoRlI1NTAtTUFKT1IgTS00KSAoRlI0MDAtTUFKT1IgTS0yKSBDT05ESVRJT05BTCkKKyAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTQpIChGUjU1MC1NQUpPUiBNLTQpCisJKEZSNDAwLU1BSk9SIE0tMikgKEZSNDUwLU1BSk9SIE0tNCkgQ09ORElUSU9OQUwpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJCIgcmVzICIsJENDaSwkY29uZCIpCiAgICAgICAgKCsgcGFjayByZXMgb3AgRlJpbnRpZXZlbiBDQ2kgY29uZCBvcGUgRlJpbnRqZXZlbikKICAgICAgICAobWVkaWEtcXVhZC1tdWx0aXBseS1hY2Mtc2VtYW50aWNzIChlcSBDQ2kgKG9yIGNvbmQgMikpCkBAIC04MDc5LDYgKzg4NDksOSBAQAogICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yLXF1YWQKIAkJICAgICAoaW4gIEZSaW50aSBGUmludGlldmVuKQogCQkgICAgIChpbiAgRlJpbnRqIEZSaW50amV2ZW4pKSkKKwkoZnI0NTAgKHVuaXQgdS1tZWRpYS0yLXF1YWQKKwkJICAgICAoaW4gIEZSaW50aSBGUmludGlldmVuKQorCQkgICAgIChpbiAgRlJpbnRqIEZSaW50amV2ZW4pKSkKIAkoZnI1MDAgKHVuaXQgdS1tZWRpYS1xdWFkLW11bAogCQkgICAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCiAJCSAgICAgKGluICBGUmludGogRlJpbnRqZXZlbikpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS00LXF1YWQpKSkKQEAgLTgxMjksMTQgKzg5MDIsMTkgQEAKIAkJbmFtZSBtb2RlIGNvbnYgYWRkb3Agcmh3IHJlcyBtYXggbWluIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgTURVQUxBQ0MpIChNQUNIIGZyNDAwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS00KSAoRlI0MDAtTUFKT1IgTS0yKSkKKyAgICAgICAoKFVOSVQgRk1BTEwpIChNQUNIIGZyNDAwLGZyNDUwLGZyNTUwKSAoRlI1NTAtTUFKT1IgTS00KQorCShGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTQpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCQiIHJlcykKICAgICAgICAoKyBwYWNrIHJlcyBvcCBGUmludGlldmVuIG9wZSBGUmludGpldmVuKQogICAgICAgIChtZWRpYS1xdWFkLW11bHRpcGx5LWNyb3NzLWFjYy1zZW1hbnRpY3MgMSBtb2RlIGNvbnYgYWRkb3Agcmh3IHJlcwogCQkJCQkJbWF4IG1pbikKICAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMi1xdWFkCiAJCSAgICAgKGluICBGUmludGkgRlJpbnRpZXZlbikKLQkJICAgICAoaW4gIEZSaW50aiBGUmludGpldmVuKSkpIChmcjU1MCAodW5pdCB1LW1lZGlhLTQtcXVhZCkpKQorCQkgICAgIChpbiAgRlJpbnRqIEZSaW50amV2ZW4pKSkKKwkoZnI0NTAgKHVuaXQgdS1tZWRpYS0yLXF1YWQKKwkJICAgICAoaW4gIEZSaW50aSBGUmludGlldmVuKQorCQkgICAgIChpbiAgRlJpbnRqIEZSaW50amV2ZW4pKSkKKwkoZnI1NTAgKHVuaXQgdS1tZWRpYS00LXF1YWQpKSkKICAgKQogKQogCkBAIC04MTc5LDE0ICs4OTU3LDE5IEBACiAJCW5hbWUgbW9kZSBjb252IGFkZG9wIHJodyByZXMgbWF4IG1pbiBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIE1EVUFMQUNDKSAoTUFDSCBmcjQwMCxmcjU1MCkgKEZSNTUwLU1BSk9SIE0tNCkgKEZSNDAwLU1BSk9SIE0tMikpCisgICAgICAgKChVTklUIEZNQUxMKSAoTUFDSCBmcjQwMCxmcjQ1MCxmcjU1MCkgKEZSNTUwLU1BSk9SIE0tNCkKKwkoRlI0MDAtTUFKT1IgTS0yKSAoRlI0NTAtTUFKT1IgTS00KSkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkRlJpbnRpZXZlbiwkRlJpbnRqZXZlbiwkIiByZXMpCiAgICAgICAgKCsgcGFjayByZXMgb3AgRlJpbnRpZXZlbiBvcGUgRlJpbnRqZXZlbikKICAgICAgICAobWVkaWEtcXVhZC1jcm9zcy1tdWx0aXBseS1jcm9zcy1hY2Mtc2VtYW50aWNzIDEgbW9kZSBjb252IGFkZG9wIHJodyByZXMKIAkJCQkJCSAgICAgIG1heCBtaW4pCiAgICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTItcXVhZAogCQkgICAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCi0JCSAgICAgKGluICBGUmludGogRlJpbnRqZXZlbikpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS00LXF1YWQpKSkKKwkJICAgICAoaW4gIEZSaW50aiBGUmludGpldmVuKSkpCisJKGZyNDUwICh1bml0IHUtbWVkaWEtMi1xdWFkCisJCSAgICAgKGluICBGUmludGkgRlJpbnRpZXZlbikKKwkJICAgICAoaW4gIEZSaW50aiBGUmludGpldmVuKSkpCisJKGZyNTUwICh1bml0IHUtbWVkaWEtNC1xdWFkKSkpCiAgICkKICkKIApAQCAtODIyOSwxNCArOTAxMiwxOSBAQAogCQluYW1lIG1vZGUgY29udiBhZGRvcCByaHcgcmVzIG1heCBtaW4gb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBNRFVBTEFDQykgKE1BQ0ggZnI0MDAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTQpIChGUjQwMC1NQUpPUiBNLTIpKQorICAgICAgICgoVU5JVCBGTUFMTCkgKE1BQ0ggZnI0MDAsZnI0NTAsZnI1NTApIChGUjU1MC1NQUpPUiBNLTQpCisJKEZSNDAwLU1BSk9SIE0tMikgKEZSNDUwLU1BSk9SIE0tNCkpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJCIgcmVzKQogICAgICAgICgrIHBhY2sgcmVzIG9wIEZSaW50aWV2ZW4gb3BlIEZSaW50amV2ZW4pCiAgICAgICAgKG1lZGlhLXF1YWQtY3Jvc3MtbXVsdGlwbHktYWNjLXNlbWFudGljcyAxIG1vZGUgY29udiBhZGRvcCByaHcgcmVzCiAJCQkJCQltYXggbWluKQogICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yLXF1YWQKIAkJICAgICAoaW4gRlJpbnRpIEZSaW50aWV2ZW4pCi0JCSAgICAgKGluIEZSaW50aiBGUmludGpldmVuKSkpIChmcjU1MCAodW5pdCB1LW1lZGlhLTQtcXVhZCkpKQorCQkgICAgIChpbiBGUmludGogRlJpbnRqZXZlbikpKQorCShmcjQ1MCAodW5pdCB1LW1lZGlhLTItcXVhZAorCQkgICAgIChpbiBGUmludGkgRlJpbnRpZXZlbikKKwkJICAgICAoaW4gRlJpbnRqIEZSaW50amV2ZW4pKSkKKwkoZnI1NTAgKHVuaXQgdS1tZWRpYS00LXF1YWQpKSkKICAgKQogKQogCkBAIC04MjgzLDExICs5MDcxLDEyIEBACiAJCW5hbWUgbW9kZSBjb252IHJoczEgcmhzMiBtYXggbWluIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTQpIChGUjU1MC1NQUpPUiBNLTQpIChGUjQwMC1NQUpPUiBNLTEpKQorICAgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tNCkgKEZSNTUwLU1BSk9SIE0tNCkKKwkoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0zKSkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkRlJpbnRpLCRGUmludGosJEFDQzQwU2siKQogICAgICAgICgrIHBhY2sgQUNDNDBTayBvcCBGUmludGkgb3BlIEZSaW50aikKICAgICAgICAobWVkaWEtZHVhbC1jb21wbGV4LXNlbWFudGljcyBtb2RlIGNvbnYgcmhzMSByaHMyIG1heCBtaW4pCi0gICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTIpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtMikpCiAJKGZyNTAwICh1bml0IHUtbWVkaWEtZHVhbC1tdWwpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS00KSkpCiAgICkKICkKQEAgLTgyOTYsMTEgKzkwODUsMTIgQEAKIAkJbmFtZSBtb2RlIGNvbnYgcmhzMSByaHMyIG1heCBtaW4gb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tNCkgKEZSNTUwLU1BSk9SIE0tNCkgKEZSNDAwLU1BSk9SIE0tMSkpCisgICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS00KSAoRlI1NTAtTUFKT1IgTS00KQorCShGUjQwMC1NQUpPUiBNLTEpIChGUjQ1MC1NQUpPUiBNLTMpKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGksJEZSaW50aiwkQUNDNDBTayIpCiAgICAgICAgKCsgcGFjayBBQ0M0MFNrIG9wIEZSaW50aSBvcGUgRlJpbnRqKQogICAgICAgIChtZWRpYS1kdWFsLWNvbXBsZXgtc2VtYW50aWNzLWkgbW9kZSBjb252IHJoczEgcmhzMiBtYXggbWluKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMikpIChmcjQ1MCAodW5pdCB1LW1lZGlhLTIpKQogCShmcjUwMCAodW5pdCB1LW1lZGlhLWR1YWwtbXVsKSkgKGZyNTUwICh1bml0IHUtbWVkaWEtNCkpKQogICApCiApCkBAIC04MzI5LDEyICs5MTE5LDEzIEBACiAJCW5hbWUgbW9kZSBjb252IHJoczEgcmhzMiBtYXggbWluIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTQpIChGUjU1MC1NQUpPUiBNLTQpIChGUjQwMC1NQUpPUiBNLTEpIENPTkRJVElPTkFMKQorICAgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tNCkgKEZSNTUwLU1BSk9SIE0tNCkKKwkoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0zKSBDT05ESVRJT05BTCkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkRlJpbnRpLCRGUmludGosJEFDQzQwU2ssJENDaSwkY29uZCIpCiAgICAgICAgKCsgcGFjayBBQ0M0MFNrIG9wIEZSaW50aSBDQ2kgY29uZCBvcGUgRlJpbnRqKQogICAgICAgIChpZiAoZXEgQ0NpIChvciBjb25kIDIpKQogCSAgIChtZWRpYS1kdWFsLWNvbXBsZXgtc2VtYW50aWNzIG1vZGUgY29udiByaHMxIHJoczIgbWF4IG1pbikpCi0gICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTIpKQorICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yKSkgKGZyNDUwICh1bml0IHUtbWVkaWEtMikpCiAJKGZyNTAwICh1bml0IHUtbWVkaWEtZHVhbC1tdWwpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS00KSkpCiAgICkKICkKQEAgLTgzNDMsMTIgKzkxMzQsMTMgQEAKIAkJbmFtZSBtb2RlIGNvbnYgcmhzMSByaHMyIG1heCBtaW4gb3Agb3BlIGNvbW1lbnQpCiAgIChkbmkgbmFtZQogICAgICAgIChjb21tZW50KQotICAgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tNCkgKEZSNTUwLU1BSk9SIE0tNCkgKEZSNDAwLU1BSk9SIE0tMSkgQ09ORElUSU9OQUwpCisgICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS00KSAoRlI1NTAtTUFKT1IgTS00KQorCShGUjQwMC1NQUpPUiBNLTEpIChGUjQ1MC1NQUpPUiBNLTMpIENPTkRJVElPTkFMKQogICAgICAgICguc3RyIG5hbWUgIiRwYWNrICRGUmludGksJEZSaW50aiwkQUNDNDBTaywkQ0NpLCRjb25kIikKICAgICAgICAoKyBwYWNrIEFDQzQwU2sgb3AgRlJpbnRpIENDaSBjb25kIG9wZSBGUmludGopCiAgICAgICAgKGlmIChlcSBDQ2kgKG9yIGNvbmQgMikpCiAJICAgKG1lZGlhLWR1YWwtY29tcGxleC1zZW1hbnRpY3MtaSBtb2RlIGNvbnYgcmhzMSByaHMyIG1heCBtaW4pKQotICAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0yKSkKKyAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMikpIChmcjQ1MCAodW5pdCB1LW1lZGlhLTIpKQogCShmcjUwMCAodW5pdCB1LW1lZGlhLWR1YWwtbXVsKSkgKGZyNTUwICh1bml0IHUtbWVkaWEtNCkpKQogICApCiApCkBAIC04Mzc3LDcgKzkxNjksOCBAQAogCQluYW1lIG1vZGUgY29udiByaHMxIHJoczIgbWF4IG1pbiBvcCBvcGUgY29tbWVudCkKICAgKGRuaSBuYW1lCiAgICAgICAgKGNvbW1lbnQpCi0gICAgICAgKChVTklUIEZNQUxMKSAoRlI1MDAtTUFKT1IgTS00KSAoRlI1NTAtTUFKT1IgTS00KSAoRlI0MDAtTUFKT1IgTS0yKSkKKyAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTQpIChGUjU1MC1NQUpPUiBNLTQpCisJKEZSNDAwLU1BSk9SIE0tMikgKEZSNDUwLU1BSk9SIE0tNCkpCiAgICAgICAgKC5zdHIgbmFtZSAiJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEFDQzQwU2siKQogICAgICAgICgrIHBhY2sgQUNDNDBTayBvcCBGUmludGlldmVuIG9wZSBGUmludGpldmVuKQogICAgICAgIChpZiAoYy1jYWxsIFNJICJAY3B1QF9jaGVja19hY2NfcmFuZ2UiIChpbmRleC1vZiBBQ0M0MFNrKSkKQEAgLTg0MDEsNiArOTE5NCw5IEBACiAgICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTItcXVhZAogCQkgICAgIChpbiBGUmludGkgRlJpbnRpZXZlbikKIAkJICAgICAoaW4gRlJpbnRqIEZSaW50amV2ZW4pKSkKKwkoZnI0NTAgKHVuaXQgdS1tZWRpYS0yLXF1YWQKKwkJICAgICAoaW4gRlJpbnRpIEZSaW50aWV2ZW4pCisJCSAgICAgKGluIEZSaW50aiBGUmludGpldmVuKSkpCiAJKGZyNTAwICh1bml0IHUtbWVkaWEtcXVhZC1jb21wbGV4CiAJCSAgICAgKGluIEZSaW50aSBGUmludGlldmVuKQogCQkgICAgIChpbiBGUmludGogRlJpbnRqZXZlbikpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS00LXF1YWQpKSkKQEAgLTg0MTEsNyArOTIwNyw4IEBACiAJCW5hbWUgbW9kZSBjb252IHJoczEgcmhzMiBtYXggbWluIG9wIG9wZSBjb21tZW50KQogICAoZG5pIG5hbWUKICAgICAgICAoY29tbWVudCkKLSAgICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTQpIChGUjU1MC1NQUpPUiBNLTQpIChGUjQwMC1NQUpPUiBNLTIpKQorICAgICAgICgoVU5JVCBGTUFMTCkgKEZSNTAwLU1BSk9SIE0tNCkgKEZSNTUwLU1BSk9SIE0tNCkKKwkoRlI0MDAtTUFKT1IgTS0yKSAoRlI0NTAtTUFKT1IgTS00KSkKICAgICAgICAoLnN0ciBuYW1lICIkcGFjayAkRlJpbnRpZXZlbiwkRlJpbnRqZXZlbiwkQUNDNDBTayIpCiAgICAgICAgKCsgcGFjayBBQ0M0MFNrIG9wIEZSaW50aWV2ZW4gb3BlIEZSaW50amV2ZW4pCiAgICAgICAgKGlmIChjLWNhbGwgU0kgIkBjcHVAX2NoZWNrX2FjY19yYW5nZSIgKGluZGV4LW9mIEFDQzQwU2spKQpAQCAtODQzNSw2ICs5MjMyLDkgQEAKICAgICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMi1xdWFkCiAJCSAgICAgKGluIEZSaW50aSBGUmludGlldmVuKQogCQkgICAgIChpbiBGUmludGogRlJpbnRqZXZlbikpKQorCShmcjQ1MCAodW5pdCB1LW1lZGlhLTItcXVhZAorCQkgICAgIChpbiBGUmludGkgRlJpbnRpZXZlbikKKwkJICAgICAoaW4gRlJpbnRqIEZSaW50amV2ZW4pKSkKIAkoZnI1MDAgKHVuaXQgdS1tZWRpYS1xdWFkLWNvbXBsZXgKIAkJICAgICAoaW4gRlJpbnRpIEZSaW50aWV2ZW4pCiAJCSAgICAgKGluIEZSaW50aiBGUmludGpldmVuKSkpIChmcjU1MCAodW5pdCB1LW1lZGlhLTQtcXVhZCkpKQpAQCAtODQ3OSwyMSArOTI3OSwyMyBAQAogCiAoZG5pIG1leHBkaHcKICAgICAgIk1lZGlhIGV4cGFuZCBoYWxmd29yZCB0byB3b3JkIgotICAgICAoKFVOSVQgRk0wMSkgKEZSNTAwLU1BSk9SIE0tMikgKEZSNTUwLU1BSk9SIE0tMykgKEZSNDAwLU1BSk9SIE0tMSkpCisgICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0yKSAoRlI1NTAtTUFKT1IgTS0zKQorICAgICAgKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIE0tMSkpCiAgICAgICJtZXhwZGh3JHBhY2sgJEZSaW50aSwkdTYsJEZSaW50ayIKICAgICAgKCsgcGFjayBGUmludGsgT1BfN0IgRlJpbnRpIE9QRTFfMzIgdTYpCiAgICAgIChtZWRpYS1leHBhbmQtaGFsZndvcmQtdG8td29yZC1zZW1hbnRpY3MgMSkKLSAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTMpKQorICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMykpIChmcjQ1MCAodW5pdCB1LW1lZGlhLTMpKQogICAgICAgKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYSkpKQogKQogCiAoZG5pIGNtZXhwZGh3CiAgICAgICJDb25kaXRpb25hbCBtZWRpYSBleHBhbmQgaGFsZndvcmQgdG8gd29yZCIKLSAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpIChGUjQwMC1NQUpPUiBNLTEpIENPTkRJVElPTkFMKQorICAgICAoKFVOSVQgRk0wMSkgKEZSNTAwLU1BSk9SIE0tMikgKEZSNTUwLU1BSk9SIE0tMykKKyAgICAgIChGUjQwMC1NQUpPUiBNLTEpIChGUjQ1MC1NQUpPUiBNLTEpIENPTkRJVElPTkFMKQogICAgICAiY21leHBkaHckcGFjayAkRlJpbnRpLCR1NiwkRlJpbnRrLCRDQ2ksJGNvbmQiCiAgICAgICgrIHBhY2sgRlJpbnRrIE9QXzc2IEZSaW50aSBDQ2kgY29uZCBPUEU0XzIgdTYpCiAgICAgIChtZWRpYS1leHBhbmQtaGFsZndvcmQtdG8td29yZC1zZW1hbnRpY3MgKGVxIENDaSAob3IgY29uZCAyKSkpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS0zKSkKKyAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTMpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS0zKSkKICAgICAgIChmcjUwMCAodW5pdCB1LW1lZGlhKSkgKGZyNTUwICh1bml0IHUtbWVkaWEpKSkKICkKIApAQCAtODUxNSw0MSArOTMxNyw1MSBAQAogCiAoZG5pIG1leHBkaGQKICAgICAgIk1lZGlhIGV4cGFuZCBoYWxmd29yZCB0byBkb3VibGUiCi0gICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0yKSAoRlI1NTAtTUFKT1IgTS0zKSAoRlI0MDAtTUFKT1IgTS0yKSkKKyAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpCisgICAgICAoRlI0MDAtTUFKT1IgTS0yKSAoRlI0NTAtTUFKT1IgTS0yKSkKICAgICAgIm1leHBkaGQkcGFjayAkRlJpbnRpLCR1NiwkRlJpbnRrZXZlbiIKICAgICAgKCsgcGFjayBGUmludGtldmVuIE9QXzdCIEZSaW50aSBPUEUxXzMzIHU2KQogICAgICAobWVkaWEtZXhwYW5kLWhhbGZ3b3JkLXRvLWRvdWJsZS1zZW1hbnRpY3MgMSkKICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLWR1YWwtZXhwYW5kCi0JCSAgICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKQorCQkgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpCisgICAgICAoZnI0NTAgKHVuaXQgdS1tZWRpYS1kdWFsLWV4cGFuZAorCQkgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1tZWRpYS1kdWFsLWV4cGFuZAotCQkgICAgIChvdXQgRlJpbnRrIEZSaW50a2V2ZW4pKSkgKGZyNTUwICh1bml0IHUtbWVkaWEtZHVhbC1leHBhbmQpKSkKKwkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKQorICAgICAgKGZyNTUwICh1bml0IHUtbWVkaWEtZHVhbC1leHBhbmQpKSkKICkKIAogKGRuaSBjbWV4cGRoZAogICAgICAiQ29uZGl0aW9uYWwgbWVkaWEgZXhwYW5kIGhhbGZ3b3JkIHRvIGRvdWJsZSIKLSAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpIChGUjQwMC1NQUpPUiBNLTIpIENPTkRJVElPTkFMKQorICAgICAoKFVOSVQgRk0wMSkgKEZSNTAwLU1BSk9SIE0tMikgKEZSNTUwLU1BSk9SIE0tMykKKyAgICAgIChGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTIpIENPTkRJVElPTkFMKQogICAgICAiY21leHBkaGQkcGFjayAkRlJpbnRpLCR1NiwkRlJpbnRrZXZlbiwkQ0NpLCRjb25kIgogICAgICAoKyBwYWNrIEZSaW50a2V2ZW4gT1BfNzYgRlJpbnRpIENDaSBjb25kIE9QRTRfMyB1NikKICAgICAgKG1lZGlhLWV4cGFuZC1oYWxmd29yZC10by1kb3VibGUtc2VtYW50aWNzIChlcSBDQ2kgKG9yIGNvbmQgMikpKQogICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtZHVhbC1leHBhbmQKIAkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKQorICAgICAgKGZyNDUwICh1bml0IHUtbWVkaWEtZHVhbC1leHBhbmQKKwkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKQogICAgICAgKGZyNTAwICh1bml0IHUtbWVkaWEtZHVhbC1leHBhbmQKLQkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS1kdWFsLWV4cGFuZCkpKQorCQkgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpCisgICAgICAoZnI1NTAgKHVuaXQgdS1tZWRpYS1kdWFsLWV4cGFuZCkpKQogKQogCiAoZG5pIG1wYWNraAogICAgICAiTWVkaWEgaGFsZndvcmQgcGFjayIKLSAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpIChGUjQwMC1NQUpPUiBNLTEpKQorICAgICAoKFVOSVQgRk0wMSkgKEZSNTAwLU1BSk9SIE0tMikgKEZSNTUwLU1BSk9SIE0tMykKKyAgICAgIChGUjQwMC1NQUpPUiBNLTEpIChGUjQ1MC1NQUpPUiBNLTEpKQogICAgICAibXBhY2toJHBhY2sgJEZSaW50aSwkRlJpbnRqLCRGUmludGsiCiAgICAgICgrIHBhY2sgRlJpbnRrIE9QXzdCIEZSaW50aSBPUEUxXzM0IEZSaW50aikKICAgICAgKG1lZGlhLXBhY2sgRlJpbnRpIEZSaW50aiBGUmludGsgMCkKLSAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTMpKQorICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtMykpIChmcjQ1MCAodW5pdCB1LW1lZGlhLTMpKQogICAgICAgKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYSkpKQogKQogCiAoZG5pIG1kcGFja2gKICAgICAgIk1lZGlhIGR1YWwgcGFjayIKLSAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTUpIChGUjU1MC1NQUpPUiBNLTMpIChGUjQwMC1NQUpPUiBNLTIpKQorICAgICAoKFVOSVQgRk0wMSkgKEZSNTAwLU1BSk9SIE0tNSkgKEZSNTUwLU1BSk9SIE0tMykKKyAgICAgIChGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTIpKQogICAgICAibWRwYWNraCRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRGUmludGtldmVuIgogICAgICAoKyBwYWNrIEZSaW50a2V2ZW4gT1BfN0IgRlJpbnRpZXZlbiBPUEUxXzM2IEZSaW50amV2ZW4pCiAgICAgIChpZiAob3JpZiAocmVnaXN0ZXItdW5hbGlnbmVkIEZSaW50aWV2ZW4gMikKQEAgLTg1NjcsMTAgKzkzNzksMTUgQEAKIAkJICAgKGluICBGUmludGkgRlJpbnRpZXZlbikKIAkJICAgKGluICBGUmludGogRlJpbnRqZXZlbikKIAkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKQorICAgICAgKGZyNDUwICh1bml0IHUtbWVkaWEtMy1xdWFkCisJCSAgIChpbiAgRlJpbnRpIEZSaW50aWV2ZW4pCisJCSAgIChpbiAgRlJpbnRqIEZSaW50amV2ZW4pCisJCSAgIChvdXQgRlJpbnRrIEZSaW50a2V2ZW4pKSkKICAgICAgIChmcjUwMCAodW5pdCB1LW1lZGlhLXF1YWQtYXJpdGgKIAkJICAgKGluICBGUmludGkgRlJpbnRpZXZlbikKIAkJICAgKGluICBGUmludGogRlJpbnRqZXZlbikKLQkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS1xdWFkKSkpCisJCSAgIChvdXQgRlJpbnRrIEZSaW50a2V2ZW4pKSkKKyAgICAgIChmcjU1MCAodW5pdCB1LW1lZGlhLXF1YWQpKSkKICkKIAogKGRlZmluZS1wbWFjcm8gKG1lZGlhLXVucGFjayBzcmMgc29mZiB0YXJnIHRvZmYpCkBAIC04NTgzLDcgKzk0MDAsOCBAQAogCiAoZG5pIG11bnBhY2toCiAgICAgICJNZWRpYSBoYWxmd29yZCB1bnBhY2siCi0gICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0yKSAoRlI1NTAtTUFKT1IgTS0zKSAoRlI0MDAtTUFKT1IgTS0yKSkKKyAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpCisgICAgICAoRlI0MDAtTUFKT1IgTS0yKSAoRlI0NTAtTUFKT1IgTS0yKSkKICAgICAgIm11bnBhY2toJHBhY2sgJEZSaW50aSwkRlJpbnRrZXZlbiIKICAgICAgKCsgcGFjayBGUmludGtldmVuIE9QXzdCIEZSaW50aSBPUEUxXzM1IChGUmotbnVsbCkpCiAgICAgIChpZiAocmVnaXN0ZXItdW5hbGlnbmVkIEZSaW50a2V2ZW4gMikKQEAgLTg1OTUsOCArOTQxMywxMSBAQAogCQkgICAobWVkaWEtdW5wYWNrIEZSaW50aSAwIEZSaW50a2V2ZW4gMCkpKQogICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtZHVhbC1leHBhbmQKIAkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKQorICAgICAgKGZyNDUwICh1bml0IHUtbWVkaWEtZHVhbC1leHBhbmQKKwkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKQogICAgICAgKGZyNTAwICh1bml0IHUtbWVkaWEtZHVhbC1leHBhbmQKLQkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS1kdWFsLWV4cGFuZCkpKQorCQkgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpCisgICAgICAoZnI1NTAgKHVuaXQgdS1tZWRpYS1kdWFsLWV4cGFuZCkpKQogKQogCiAoZG5pIG1kdW5wYWNraApAQCAtODYzMiw3ICs5NDUzLDggQEAKIAogKGRuaSBtYnRvaAogICAgICAiTWVkaWEgY29udmVydCBieXRlIHRvIGhhbGZ3b3JkIgotICAgICAoKFVOSVQgRk0wMSkgKEZSNTAwLU1BSk9SIE0tMikgKEZSNTUwLU1BSk9SIE0tMykgKEZSNDAwLU1BSk9SIE0tMikpCisgICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0yKSAoRlI1NTAtTUFKT1IgTS0zKQorICAgICAgKEZSNDAwLU1BSk9SIE0tMikgKEZSNDUwLU1BSk9SIE0tMikpCiAgICAgICJtYnRvaCRwYWNrICRGUmludGosJEZSaW50a2V2ZW4iCiAgICAgICgrIHBhY2sgRlJpbnRrZXZlbiBPUF83QiAoRlJpLW51bGwpIE9QRTFfMzggRlJpbnRqKQogICAgICAoc2VxdWVuY2UgKCkKQEAgLTg2NDIsMTMgKzk0NjQsMTcgQEAKIAkgICAgICAgKG1idG9oLXNlbWFudGljcyAxKSkKICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLWR1YWwtZXhwYW5kCiAJCSAgIChvdXQgRlJpbnRrIEZSaW50a2V2ZW4pKSkKKyAgICAgIChmcjQ1MCAodW5pdCB1LW1lZGlhLWR1YWwtZXhwYW5kCisJCSAgIChvdXQgRlJpbnRrIEZSaW50a2V2ZW4pKSkKICAgICAgIChmcjUwMCAodW5pdCB1LW1lZGlhLWR1YWwtYnRvaAotCQkgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpIChmcjU1MCAodW5pdCB1LW1lZGlhLWR1YWwtZXhwYW5kKSkpCisJCSAgIChvdXQgRlJpbnRrIEZSaW50a2V2ZW4pKSkKKyAgICAgIChmcjU1MCAodW5pdCB1LW1lZGlhLWR1YWwtZXhwYW5kKSkpCiApCiAKIChkbmkgY21idG9oCiAgICAgICJDb25kaXRpb25hbCBtZWRpYSBjb252ZXJ0IGJ5dGUgdG8gaGFsZndvcmQiCi0gICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0yKSAoRlI1NTAtTUFKT1IgTS0zKSAoRlI0MDAtTUFKT1IgTS0yKSBDT05ESVRJT05BTCkKKyAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpCisgICAgICAoRlI0MDAtTUFKT1IgTS0yKSAoRlI0NTAtTUFKT1IgTS0yKSBDT05ESVRJT05BTCkKICAgICAgImNtYnRvaCRwYWNrICRGUmludGosJEZSaW50a2V2ZW4sJENDaSwkY29uZCIKICAgICAgKCsgcGFjayBGUmludGtldmVuIE9QXzc3IChGUmktbnVsbCkgQ0NpIGNvbmQgT1BFNF8wIEZSaW50aikKICAgICAgKHNlcXVlbmNlICgpCkBAIC04NjU4LDggKzk0ODQsMTIgQEAKIAkgICAgICAgKG1idG9oLXNlbWFudGljcyAoZXEgQ0NpIChvciBjb25kIDIpKSkpCiAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS1kdWFsLWV4cGFuZAogCQkgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpCisgICAgICAoZnI0NTAgKHVuaXQgdS1tZWRpYS1kdWFsLWV4cGFuZAorCQkgICAob3V0IEZSaW50ayBGUmludGtldmVuKSkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1tZWRpYS1kdWFsLWJ0b2gKLQkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS1kdWFsLWV4cGFuZCAoaW4gRlJpbnRpIEZSaW50aikpKSkKKwkJICAgKG91dCBGUmludGsgRlJpbnRrZXZlbikpKQorICAgICAgKGZyNTUwICh1bml0IHUtbWVkaWEtZHVhbC1leHBhbmQKKwkJICAgKGluIEZSaW50aSBGUmludGopKSkpCiApCiAKIChkZWZpbmUtcG1hY3JvIChtaHRvYi1zZW1hbnRpY3MgY29uZCkKQEAgLTg2NzUsNyArOTUwNSw4IEBACiAKIChkbmkgbWh0b2IKICAgICAgIk1lZGlhIGNvbnZlcnQgaGFsZndvcmQgdG8gYnl0ZSIKLSAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpIChGUjQwMC1NQUpPUiBNLTIpKQorICAgICAoKFVOSVQgRk0wMSkgKEZSNTAwLU1BSk9SIE0tMikgKEZSNTUwLU1BSk9SIE0tMykKKyAgICAgIChGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTIpKQogICAgICAibWh0b2IkcGFjayAkRlJpbnRqZXZlbiwkRlJpbnRrIgogICAgICAoKyBwYWNrIEZSaW50ayBPUF83QiAoRlJpLW51bGwpIE9QRTFfMzkgRlJpbnRqZXZlbikKICAgICAgKHNlcXVlbmNlICgpCkBAIC04Njg1LDEzICs5NTE2LDE4IEBACiAJICAgICAgIChtaHRvYi1zZW1hbnRpY3MgMSkpCiAgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS1kdWFsLWh0b2IKIAkJICAgKGluIEZSaW50aiBGUmludGpldmVuKSkpCisgICAgICAoZnI0NTAgKHVuaXQgdS1tZWRpYS1kdWFsLWh0b2IKKwkJICAgKGluIEZSaW50aiBGUmludGpldmVuKSkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1tZWRpYS1kdWFsLWh0b2IKLQkJICAgKGluIEZSaW50aiBGUmludGpldmVuKSkpIChmcjU1MCAodW5pdCB1LW1lZGlhLTMtZHVhbCAoaW4gRlJpbnRpIEZSaW50amV2ZW4pKSkpCisJCSAgIChpbiBGUmludGogRlJpbnRqZXZlbikpKQorICAgICAgKGZyNTUwICh1bml0IHUtbWVkaWEtMy1kdWFsCisJCSAgIChpbiBGUmludGkgRlJpbnRqZXZlbikpKSkKICkKIAogKGRuaSBjbWh0b2IKICAgICAgIkNvbmRpdGlvbmFsIG1lZGlhIGNvbnZlcnQgaGFsZndvcmQgdG8gYnl0ZSIKLSAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpIChGUjQwMC1NQUpPUiBNLTIpIENPTkRJVElPTkFMKQorICAgICAoKFVOSVQgRk0wMSkgKEZSNTAwLU1BSk9SIE0tMikgKEZSNTUwLU1BSk9SIE0tMykKKyAgICAgIChGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTIpIENPTkRJVElPTkFMKQogICAgICAiY21odG9iJHBhY2sgJEZSaW50amV2ZW4sJEZSaW50aywkQ0NpLCRjb25kIgogICAgICAoKyBwYWNrIEZSaW50ayBPUF83NyAoRlJpLW51bGwpIENDaSBjb25kIE9QRTRfMSBGUmludGpldmVuKQogICAgICAoc2VxdWVuY2UgKCkKQEAgLTg3MDEsOCArOTUzNywxMiBAQAogCSAgICAgICAobWh0b2Itc2VtYW50aWNzIChlcSBDQ2kgKG9yIGNvbmQgMikpKSkKICAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLWR1YWwtaHRvYgogCQkgICAoaW4gRlJpbnRqIEZSaW50amV2ZW4pKSkKKyAgICAgIChmcjQ1MCAodW5pdCB1LW1lZGlhLWR1YWwtaHRvYgorCQkgICAoaW4gRlJpbnRqIEZSaW50amV2ZW4pKSkKICAgICAgIChmcjUwMCAodW5pdCB1LW1lZGlhLWR1YWwtaHRvYgotCQkgICAoaW4gRlJpbnRqIEZSaW50amV2ZW4pKSkgKGZyNTUwICh1bml0IHUtbWVkaWEtMy1kdWFsIChpbiBGUmludGkgRlJpbnRqZXZlbikpKSkKKwkJICAgKGluIEZSaW50aiBGUmludGpldmVuKSkpCisgICAgICAoZnI1NTAgKHVuaXQgdS1tZWRpYS0zLWR1YWwKKwkJICAgKGluIEZSaW50aSBGUmludGpldmVuKSkpKQogKQogCiAoZGVmaW5lLXBtYWNybyAobWJ0b2hlLXNlbWFudGljcyBjb25kKQpAQCAtODc0OSw3ICs5NTg5LDggQEAKIDsgTWVkaWEgTk9QCiA7IEEgc3BlY2lhbCBjYXNlIG9mIG1jbHJhY2MKIChkbmkgbW5vcCAiTWVkaWEgbm9wIgotICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTEpIChGUjU1MC1NQUpPUiBNLTEpIChGUjQwMC1NQUpPUiBNLTEpKQorICAgICAoKFVOSVQgRk1BTEwpIChGUjUwMC1NQUpPUiBNLTEpIChGUjU1MC1NQUpPUiBNLTEpCisgICAgICAoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0xKSkKICAgICAgIm1ub3AkcGFjayIKICAgICAgKCsgcGFjayAoZi1BQ0M0MFNrIDYzKSBPUF83QiAoZi1BIDEpIChtaXNjLW51bGwtMTApIE9QRTFfM0IgKEZSai1udWxsKSkKICAgICAgKG5vcCkKQEAgLTg3NTksNjYgKzk2MDAsNzIgQEAKIDsgbWNscmFjYyB3aXRoICNBPT0wCiAoZG5pIG1jbHJhY2MtMAogICAgICAiTWVkaWEgY2xlYXIgYWNjdW11bGF0b3IocykiCi0gICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0zKSAoRlI1NTAtTUFKT1IgTS0zKSAoRlI0MDAtTUFKT1IgTS0xKSkKKyAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTMpIChGUjU1MC1NQUpPUiBNLTMpCisgICAgICAoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0zKSkKICAgICAgIm1jbHJhY2MkcGFjayAkQUNDNDBTaywkQTAiCiAgICAgICgrIHBhY2sgQUNDNDBTayBPUF83QiAoZi1BIDApIChtaXNjLW51bGwtMTApIE9QRTFfM0IgKEZSai1udWxsKSkKICAgICAgKGMtY2FsbCBWT0lEICJAY3B1QF9jbGVhcl9hY2N1bXVsYXRvcnMiIChpbmRleC1vZiBBQ0M0MFNrKSAwKQotICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtNCkpCisgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS00KSkgKGZyNDUwICh1bml0IHUtbWVkaWEtNCkpCiAgICAgICAoZnI1MDAgKHVuaXQgdS1tZWRpYSkpIChmcjU1MCAodW5pdCB1LW1lZGlhLTMtbWNscmFjYykpKQogKQogCiA7IG1jbHJhY2Mgd2l0aCAjQT09MQogKGRuaSBtY2xyYWNjLTEKICAgICAgIk1lZGlhIGNsZWFyIGFjY3VtdWxhdG9yKHMpIgotICAgICAoKFVOSVQgTUNMUkFDQy0xKSAoRlI1MDAtTUFKT1IgTS02KSAoRlI1NTAtTUFKT1IgTS0zKSAoRlI0MDAtTUFKT1IgTS0yKSkKKyAgICAgKChVTklUIE1DTFJBQ0MtMSkgKEZSNTAwLU1BSk9SIE0tNikgKEZSNTUwLU1BSk9SIE0tMykKKyAgICAgIChGUjQwMC1NQUpPUiBNLTIpIChGUjQ1MC1NQUpPUiBNLTQpKQogICAgICAibWNscmFjYyRwYWNrICRBQ0M0MFNrLCRBMSIKICAgICAgKCsgcGFjayBBQ0M0MFNrIE9QXzdCIChmLUEgMSkgKG1pc2MtbnVsbC0xMCkgT1BFMV8zQiAoRlJqLW51bGwpKQogICAgICAoYy1jYWxsIFZPSUQgIkBjcHVAX2NsZWFyX2FjY3VtdWxhdG9ycyIgKGluZGV4LW9mIEFDQzQwU2spIDEpCi0gICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS00KSkKKyAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTQpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS00LW1jbHJhY2NhKSkKICAgICAgIChmcjUwMCAodW5pdCB1LW1lZGlhKSkgKGZyNTUwICh1bml0IHUtbWVkaWEtMy1tY2xyYWNjKSkpCiApCiAKIChkbmkgbXJkYWNjCiAgICAgICJNZWRpYSByZWFkIGFjY3VtdWxhdG9yIgotICAgICAoKFVOSVQgRk0wMSkgKEZSNTAwLU1BSk9SIE0tMikgKEZSNTUwLU1BSk9SIE0tMykgKEZSNDAwLU1BSk9SIE0tMSkpCisgICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0yKSAoRlI1NTAtTUFKT1IgTS0zKQorICAgICAgKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIE0tNSkpCiAgICAgICJtcmRhY2MkcGFjayAkQUNDNDBTaSwkRlJpbnRrIgogICAgICAoKyBwYWNrIEZSaW50ayBPUF83QiBBQ0M0MFNpIE9QRTFfM0MgKEZSai1udWxsKSkKICAgICAgKHNldCBGUmludGsgQUNDNDBTaSkKLSAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTQpKQorICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtNCkpIChmcjQ1MCAodW5pdCB1LW1lZGlhLTQpKQogICAgICAgKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS0zLWFjYykpKQogKQogCiAoZG5pIG1yZGFjY2cKICAgICAgIk1lZGlhIHJlYWQgYWNjdW11bGF0b3IgZ3VhcmQiCi0gICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0yKSAoRlI1NTAtTUFKT1IgTS0zKSAoRlI0MDAtTUFKT1IgTS0xKSkKKyAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTIpIChGUjU1MC1NQUpPUiBNLTMpCisgICAgICAoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS01KSkKICAgICAgIm1yZGFjY2ckcGFjayAkQUNDR2ksJEZSaW50ayIKICAgICAgKCsgcGFjayBGUmludGsgT1BfN0IgQUNDR2kgT1BFMV8zRSAoRlJqLW51bGwpKQogICAgICAoc2V0IEZSaW50ayBBQ0NHaSkKLSAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTQtYWNjZykpCisgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS00LWFjY2cpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS00LWFjY2cpKQogICAgICAgKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS0zLWFjYyAoaW4gQUNDNDBTaSBBQ0NHaSkpKSkKICkKIAogKGRuaSBtd3RhY2MKICAgICAgIk1lZGlhIHdyaXRlIGFjY3VtdWxhdG9yIgotICAgICAoKFVOSVQgRk0wMSkgKEZSNTAwLU1BSk9SIE0tMykgKEZSNTUwLU1BSk9SIE0tMykgKEZSNDAwLU1BSk9SIE0tMSkpCisgICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0zKSAoRlI1NTAtTUFKT1IgTS0zKQorICAgICAgKEZSNDAwLU1BSk9SIE0tMSkgKEZSNDUwLU1BSk9SIE0tMykpCiAgICAgICJtd3RhY2MkcGFjayAkRlJpbnRpLCRBQ0M0MFNrIgogICAgICAoKyBwYWNrIEFDQzQwU2sgT1BfN0IgRlJpbnRpIE9QRTFfM0QgKEZSai1udWxsKSkKICAgICAgKHNldCBBQ0M0MFNrIChvciAoYW5kIEFDQzQwU2sgKGNvbnN0IERJICN4ZmZmZmZmZmYwMDAwMDAwMCkpCiAJCSAgICAgRlJpbnRpKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTQpKQorICAgICAoKGZyNDAwICh1bml0IHUtbWVkaWEtNCkpIChmcjQ1MCAodW5pdCB1LW1lZGlhLTQpKQogICAgICAgKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS0zLXd0YWNjKSkpCiApCiAKIChkbmkgbXd0YWNjZwogICAgICAiTWVkaWEgd3JpdGUgYWNjdW11bGF0b3IgZ3VhcmQiCi0gICAgICgoVU5JVCBGTTAxKSAoRlI1MDAtTUFKT1IgTS0zKSAoRlI1NTAtTUFKT1IgTS0zKSAoRlI0MDAtTUFKT1IgTS0xKSkKKyAgICAgKChVTklUIEZNMDEpIChGUjUwMC1NQUpPUiBNLTMpIChGUjU1MC1NQUpPUiBNLTMpCisgICAgICAoRlI0MDAtTUFKT1IgTS0xKSAoRlI0NTAtTUFKT1IgTS0zKSkKICAgICAgIm13dGFjY2ckcGFjayAkRlJpbnRpLCRBQ0NHayIKICAgICAgKCsgcGFjayBBQ0NHayBPUF83QiBGUmludGkgT1BFMV8zRiAoRlJqLW51bGwpKQogICAgICAoc2VxdWVuY2UgKCkKIAkgICAgICAgOyBoYWNrIHRvIGdldCB0aGVzZSByZWZlcmVuY2VkIGZvciBwcm9maWxpbmcKIAkgICAgICAgKGMtcmF3LWNhbGwgVk9JRCAiZnJ2X3JlZl9TSSIgQUNDR2spCiAJICAgICAgIChzZXQgQUNDR2sgRlJpbnRpKSkKLSAgICAgKChmcjQwMCAodW5pdCB1LW1lZGlhLTQtYWNjZykpCisgICAgICgoZnI0MDAgKHVuaXQgdS1tZWRpYS00LWFjY2cpKSAoZnI0NTAgKHVuaXQgdS1tZWRpYS00LWFjY2cpKQogICAgICAgKGZyNTAwICh1bml0IHUtbWVkaWEpKSAoZnI1NTAgKHVuaXQgdS1tZWRpYS0zLXd0YWNjIChpbiBBQ0M0MFNrIEFDQ0drKSkpKQogKQogCkBAIC04ODQyLDcgKzk2ODksNyBAQAogOyBPbiB0aGUgb3RoZXIgaGFuZCBzcGVuZGluZyBhIGxpdHRsZSB0aW1lIGluIHRoZSBkZWNvZGVyIGlzIG9mdGVuIHdvcnRoIGl0LgogOwogKGRubWkgbm9wICJub3AiCi0gICAgICgoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI0MDAtTUFKT1IgSS0xKSkKKyAgICAgKChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpKQogICAgICAibm9wJHBhY2siCiAgICAgIChlbWl0IG9yaSBwYWNrIChHUmkgMCkgKHMxMiAwKSAoR1JrIDApKQogKQpAQCAtODg1OSwzNyArOTcwNiw0MyBAQAogCiA7IEEgcmV0dXJuIGluc3RydWN0aW9uCiAoZG5taSByZXQgInJldHVybiIKLSAgICAgIChOTy1ESVMgKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi0zKSAoRlI0MDAtTUFKT1IgQi0zKSkKKyAgICAgIChOTy1ESVMgKFVOSVQgQjAxKSAoRlI1MDAtTUFKT1IgQi0zKQorCSAgICAgIChGUjQwMC1NQUpPUiBCLTMpIChGUjQ1MC1NQUpPUiBCLTMpKQogICAgICAgInJldCRwYWNrIgogICAgICAgKGVtaXQgYnJhbHIgcGFjayAoaGludF90YWtlbiAyKSkKICkKIAogKGRubWkgY21wICJjb21wYXJlIgotICAgICAgKE5PLURJUyAoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI0MDAtTUFKT1IgSS0xKSkKKyAgICAgIChOTy1ESVMgKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkKKwkgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSkKICAgICAgICJjbXAkcGFjayAkR1JpLCRHUmosJElDQ2lfMSIKICAgICAgIChlbWl0IHN1YmNjIHBhY2sgR1JpIEdSaiAoR1JrIDApIElDQ2lfMSkKICkKIAogKGRubWkgY21waSAiY29tcGFyZSBpbW1lZGlhdGUiCi0gICAgICAoTk8tRElTIChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjQwMC1NQUpPUiBJLTEpKQorICAgICAgKE5PLURJUyAoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKQorCSAgICAgIChGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpKQogICAgICAgImNtcGkkcGFjayAkR1JpLCRzMTAsJElDQ2lfMSIKICAgICAgIChlbWl0IHN1YmljYyBwYWNrIEdSaSBzMTAgKEdSayAwKSBJQ0NpXzEpCiApCiAKIChkbm1pIGNjbXAgImNvbmRpdGlvbmFsIGNvbXBhcmUiCi0gICAgICAoTk8tRElTIChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjQwMC1NQUpPUiBJLTEpIENPTkRJVElPTkFMKQorICAgICAgKE5PLURJUyAoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKQorCSAgICAgIChGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpIENPTkRJVElPTkFMKQogICAgICAgImNjbXAkcGFjayAkR1JpLCRHUmosJENDaSwkY29uZCIKICAgICAgIChlbWl0IGNzdWJjYyBwYWNrIEdSaSBHUmogKEdSayAwKSBDQ2kgY29uZCkKICkKIAogKGRubWkgbW92ICJtb3ZlIgotICAgICAgKE5PLURJUyAoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKSAoRlI0MDAtTUFKT1IgSS0xKSkKKyAgICAgIChOTy1ESVMgKFVOSVQgSUFMTCkgKEZSNTAwLU1BSk9SIEktMSkKKwkgICAgICAoRlI0MDAtTUFKT1IgSS0xKSAoRlI0NTAtTUFKT1IgSS0xKSkKICAgICAgICJtb3YkcGFjayAkR1JpLCRHUmsiCiAgICAgICAoZW1pdCBvcmkgcGFjayBHUmkgKHMxMiAwKSBHUmspCiApICAgCiAKIChkbm1pIGNtb3YgImNvbmRpdGlvbmFsIG1vdmUiCi0gICAgICAoTk8tRElTIChVTklUIElBTEwpIChGUjUwMC1NQUpPUiBJLTEpIChGUjQwMC1NQUpPUiBJLTEpIENPTkRJVElPTkFMKQorICAgICAgKE5PLURJUyAoVU5JVCBJQUxMKSAoRlI1MDAtTUFKT1IgSS0xKQorCSAgICAgIChGUjQwMC1NQUpPUiBJLTEpIChGUjQ1MC1NQUpPUiBJLTEpIENPTkRJVElPTkFMKQogICAgICAgImNtb3YkcGFjayAkR1JpLCRHUmssJENDaSwkY29uZCIKICAgICAgIChlbWl0IGNvciBwYWNrIEdSaSAoR1JqIDApIEdSayBDQ2kgY29uZCkKICkgICAKZGlmZiAtLWdpdCBhL2NwdS9mcnYub3BjIGIvY3B1L2Zydi5vcGMKaW5kZXggMDNjMGYzZS4uNDY5ODViNiAxMDA2NDQKLS0tIGEvY3B1L2Zydi5vcGMKKysrIGIvY3B1L2Zydi5vcGMKQEAgLTkwLDYgKzkwLDggQEAKICAgUEFSQU1TICgoRlJWX1ZMSVcgKiwgQ0dFTl9BVFRSX1ZBTFVFX1RZUEUpKTsKIHN0YXRpYyBpbnQgZnI0MDBfY2hlY2tfaW5zbl9tYWpvcl9jb25zdHJhaW50cwogICBQQVJBTVMgKChGUlZfVkxJVyAqLCBDR0VOX0FUVFJfVkFMVUVfVFlQRSkpOworc3RhdGljIGludCBmcjQ1MF9jaGVja19pbnNuX21ham9yX2NvbnN0cmFpbnRzCisgIFBBUkFNUyAoKEZSVl9WTElXICosIENHRU5fQVRUUl9WQUxVRV9UWVBFKSk7CiBzdGF0aWMgaW50IGZyNTAwX2NoZWNrX2luc25fbWFqb3JfY29uc3RyYWludHMKICAgUEFSQU1TICgoRlJWX1ZMSVcgKiwgQ0dFTl9BVFRSX1ZBTFVFX1RZUEUpKTsKIHN0YXRpYyBpbnQgZnI1NTBfY2hlY2tfaW5zbl9tYWpvcl9jb25zdHJhaW50cwpAQCAtMTA2LDYgKzEwOCwxMCBAQAogICAgICAgaWYgKG1ham9yID49IEZSNDAwX01BSk9SX0JfMSAmJiBtYWpvciA8PSBGUjQwMF9NQUpPUl9CXzYpCiAJcmV0dXJuIDE7IC8qIGlzIGEgYnJhbmNoICovCiAgICAgICBicmVhazsKKyAgICBjYXNlIGJmZF9tYWNoX2ZyNDUwOgorICAgICAgaWYgKG1ham9yID49IEZSNDUwX01BSk9SX0JfMSAmJiBtYWpvciA8PSBGUjQ1MF9NQUpPUl9CXzYpCisJcmV0dXJuIDE7IC8qIGlzIGEgYnJhbmNoICovCisgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgaWYgKG1ham9yID49IEZSNTAwX01BSk9SX0JfMSAmJiBtYWpvciA8PSBGUjUwMF9NQUpPUl9CXzYpCiAJcmV0dXJuIDE7IC8qIGlzIGEgYnJhbmNoICovCkBAIC0xMjEsNiArMTI3LDcgQEAKICAgc3dpdGNoIChtYWNoKQogICAgIHsKICAgICBjYXNlIGJmZF9tYWNoX2ZyNDAwOgorICAgIGNhc2UgYmZkX21hY2hfZnI0NTA6CiAgICAgICByZXR1cm4gMDsgLyogTm8gZmxvYXQgaW5zbnMgKi8KICAgICBkZWZhdWx0OgogICAgICAgaWYgKG1ham9yID49IEZSNTAwX01BSk9SX0ZfMSAmJiBtYWpvciA8PSBGUjUwMF9NQUpPUl9GXzgpCkBAIC0xNDAsNiArMTQ3LDEwIEBACiAgICAgICBpZiAobWFqb3IgPj0gRlI0MDBfTUFKT1JfTV8xICYmIG1ham9yIDw9IEZSNDAwX01BSk9SX01fMikKIAlyZXR1cm4gMTsgLyogaXMgYSBtZWRpYSBpbnNuICovCiAgICAgICBicmVhazsKKyAgICBjYXNlIGJmZF9tYWNoX2ZyNDUwOgorICAgICAgaWYgKG1ham9yID49IEZSNDUwX01BSk9SX01fMSAmJiBtYWpvciA8PSBGUjQ1MF9NQUpPUl9NXzYpCisJcmV0dXJuIDE7IC8qIGlzIGEgbWVkaWEgaW5zbiAqLworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIGlmIChtYWpvciA+PSBGUjUwMF9NQUpPUl9NXzEgJiYgbWFqb3IgPD0gRlI1MDBfTUFKT1JfTV84KQogCXJldHVybiAxOyAvKiBpcyBhIG1lZGlhIGluc24gKi8KQEAgLTE1NSw2ICsxNjYsOSBAQAogICBpZiAoZnJ2X2lzX2JyYW5jaF9tYWpvciAoQ0dFTl9JTlNOX0FUVFJfVkFMVUUgKGluc24sIENHRU5fSU5TTl9GUjQwMF9NQUpPUiksCiAJCQkgICBiZmRfbWFjaF9mcjQwMCkpCiAgICAgcmV0dXJuIDE7CisgIGlmIChmcnZfaXNfYnJhbmNoX21ham9yIChDR0VOX0lOU05fQVRUUl9WQUxVRSAoaW5zbiwgQ0dFTl9JTlNOX0ZSNDUwX01BSk9SKSwKKwkJCSAgIGJmZF9tYWNoX2ZyNDUwKSkKKyAgICByZXR1cm4gMTsKICAgaWYgKGZydl9pc19icmFuY2hfbWFqb3IgKENHRU5fSU5TTl9BVFRSX1ZBTFVFIChpbnNuLCBDR0VOX0lOU05fRlI1MDBfTUFKT1IpLAogCQkJICAgYmZkX21hY2hfZnI1MDApKQogICAgIHJldHVybiAxOwpAQCAtMTY4LDYgKzE4Miw5IEBACiAgIGlmIChmcnZfaXNfZmxvYXRfbWFqb3IgKENHRU5fSU5TTl9BVFRSX1ZBTFVFIChpbnNuLCBDR0VOX0lOU05fRlI0MDBfTUFKT1IpLAogCQkJICBiZmRfbWFjaF9mcjQwMCkpCiAgICAgcmV0dXJuIDE7CisgIGlmIChmcnZfaXNfZmxvYXRfbWFqb3IgKENHRU5fSU5TTl9BVFRSX1ZBTFVFIChpbnNuLCBDR0VOX0lOU05fRlI0NTBfTUFKT1IpLAorCQkJICBiZmRfbWFjaF9mcjQ1MCkpCisgICAgcmV0dXJuIDE7CiAgIGlmIChmcnZfaXNfZmxvYXRfbWFqb3IgKENHRU5fSU5TTl9BVFRSX1ZBTFVFIChpbnNuLCBDR0VOX0lOU05fRlI1MDBfTUFKT1IpLAogCQkJICBiZmRfbWFjaF9mcjUwMCkpCiAgICAgcmV0dXJuIDE7CkBAIC0xODEsNiArMTk4LDkgQEAKICAgaWYgKGZydl9pc19tZWRpYV9tYWpvciAoQ0dFTl9JTlNOX0FUVFJfVkFMVUUgKGluc24sIENHRU5fSU5TTl9GUjQwMF9NQUpPUiksCiAJCQkgIGJmZF9tYWNoX2ZyNDAwKSkKICAgICByZXR1cm4gMTsKKyAgaWYgKGZydl9pc19tZWRpYV9tYWpvciAoQ0dFTl9JTlNOX0FUVFJfVkFMVUUgKGluc24sIENHRU5fSU5TTl9GUjQ1MF9NQUpPUiksCisJCQkgIGJmZF9tYWNoX2ZyNDUwKSkKKyAgICByZXR1cm4gMTsKICAgaWYgKGZydl9pc19tZWRpYV9tYWpvciAoQ0dFTl9JTlNOX0FUVFJfVkFMVUUgKGluc24sIENHRU5fSU5TTl9GUjUwMF9NQUpPUiksCiAJCQkgIGJmZF9tYWNoX2ZyNTAwKSkKICAgICByZXR1cm4gMTsKQEAgLTI5MSw2ICszMTEsNDIgQEAKIC8qIFNDQU4gICAgICovICAgICBVTklUX0kwLCAgLyogc2NhbiAgICAgICAgICAgICAgICBvbmx5IGluIEkwICB1bml0LiAgKi8KIC8qIERDUEwgICAgICovICAgICBVTklUX0MsICAgLyogZGNwbCAgICAgICAgICAgICAgICBvbmx5IGluIEMgICB1bml0LiAgKi8KIC8qIE1EVUFMQUNDICovICAgICBVTklUX0ZNMCwgLyogbWVkaWEgZHVhbCBhY2MgaW5zbiBvbmx5IGluIEZNMCB1bml0LiAgKi8KKy8qIE1EQ1VUU1NJICovICAgICBVTklUX0ZNMCwgLyogbWRjdXRzc2kgICAgICAgICAgICBvbmx5IGluIEZNMCB1bml0LiAgKi8KKy8qIE1DTFJBQ0MtMSovICAgICBVTklUX0ZNMCAgLyogbWNscmFjYyxBPT0xICAgaW5zbiBvbmx5IGluIEZNMCB1bml0LiAgKi8KK307CisKKy8qIFNvbWUgaW5zbnMgYXJlIGFzc2lnbmVkIHNwZWNpYWxpemVkIGltcGxlbWVudGF0aW9uIHVuaXRzIHdoaWNoIG1hcCB0bworICAgZGlmZmVyZW50IGFjdHVhbCBpbXBsZW1lbnRhdGlvbiB1bml0cyBvbiBkaWZmZXJlbnQgbWFjaGluZXMuICBUaGVzZQorICAgdGFibGVzIHBlcmZvcm0gdGhhdCBtYXBwaW5nLiAgKi8KK3N0YXRpYyBDR0VOX0FUVFJfVkFMVUVfVFlQRSBmcjQ1MF91bml0X21hcHBpbmdbXSA9Cit7CisvKiB1bml0IGluIGluc24gICAgYWN0dWFsIHVuaXQgKi8KKy8qIE5JTCAgICAgICovICAgICBVTklUX05JTCwKKy8qIEkwICAgICAgICovICAgICBVTklUX0kwLAorLyogSTEgICAgICAgKi8gICAgIFVOSVRfSTEsCisvKiBJMDEgICAgICAqLyAgICAgVU5JVF9JMDEsIAorLyogSTIgICAgICAgKi8gICAgIFVOSVRfTklMLCAvKiBubyBJMiBvciBJMyB1bml0ICovCisvKiBJMyAgICAgICAqLyAgICAgVU5JVF9OSUwsCisvKiBJQUxMICAgICAqLyAgICAgVU5JVF9JMDEsIC8qIG9ubHkgSTAgYW5kIEkxIHVuaXRzICovCisvKiBGTTAgICAgICAqLyAgICAgVU5JVF9GTTAsCisvKiBGTTEgICAgICAqLyAgICAgVU5JVF9GTTEsCisvKiBGTTAxICAgICAqLyAgICAgVU5JVF9GTTAxLAorLyogRk0yICAgICAgKi8gICAgIFVOSVRfTklMLCAvKiBubyBGMiBvciBNMiB1bml0cyAqLworLyogRk0zICAgICAgKi8gICAgIFVOSVRfTklMLCAvKiBubyBGMyBvciBNMyB1bml0cyAqLworLyogRk1BTEwgICAgKi8gICAgIFVOSVRfRk0wMSwvKiBPbmx5IEYwLEYxLE0wLE0xIHVuaXRzICovCisvKiBGTUxPVyAgICAqLyAgICAgVU5JVF9GTTAsIC8qIE9ubHkgRjAsTTAgdW5pdHMgKi8KKy8qIEIwICAgICAgICovICAgICBVTklUX0IwLCAgLyogYnJhbmNoZXMgb25seSBpbiBCMCB1bml0LiAgKi8KKy8qIEIxICAgICAgICovICAgICBVTklUX0IwLAorLyogQjAxICAgICAgKi8gICAgIFVOSVRfQjAsCisvKiBDICAgICAgICAqLyAgICAgVU5JVF9DLAorLyogTVVMVC1ESVYgKi8gICAgIFVOSVRfSTAsICAvKiBtdWx0aXBseSBhbmQgZGl2aWRlIG9ubHkgaW4gSTAgIHVuaXQuICAqLworLyogSUFDQyAgICAgKi8gICAgIFVOSVRfSTAxLCAvKiBpYWNjIG11bHRpcGx5ICAgICAgIGluIEkwIG9yIEkxIHVuaXQuICAqLworLyogTE9BRCAgICAgKi8gICAgIFVOSVRfSTAsICAvKiBsb2FkICAgICAgICAgICAgICAgIG9ubHkgaW4gSTAgIHVuaXQuICAqLworLyogU1RPUkUgICAgKi8gICAgIFVOSVRfSTAsICAvKiBzdG9yZSAgICAgICAgICAgICAgIG9ubHkgaW4gSTAgIHVuaXQuICAqLworLyogU0NBTiAgICAgKi8gICAgIFVOSVRfSTAsICAvKiBzY2FuICAgICAgICAgICAgICAgIG9ubHkgaW4gSTAgIHVuaXQuICAqLworLyogRENQTCAgICAgKi8gICAgIFVOSVRfSTAsICAvKiBkY3BsICAgICAgICAgICAgICAgIG9ubHkgaW4gSTAgIHVuaXQuICAqLworLyogTURVQUxBQ0MgKi8gICAgIFVOSVRfRk0wLCAvKiBtZWRpYSBkdWFsIGFjYyBpbnNuIG9ubHkgaW4gRk0wIHVuaXQuICAqLworLyogTURDVVRTU0kgKi8gICAgIFVOSVRfRk0wMSwgLyogbWRjdXRzc2kgICAgICAgICAgIGluIEZNMCBvciBGTTEuICAqLwogLyogTUNMUkFDQy0xKi8gICAgIFVOSVRfRk0wICAvKiBtY2xyYWNjLEE9PTEgICBpbnNuIG9ubHkgaW4gRk0wIHVuaXQuICAqLwogfTsKIApAQCAtMzIyLDYgKzM3OCw3IEBACiAvKiBTQ0FOICAgICAqLyAgICAgVU5JVF9JMDEsIC8qIHNjYW4gICAgICAgICAgICAgICAgaW4gSTAgb3IgSTEgdW5pdC4gICovCiAvKiBEQ1BMICAgICAqLyAgICAgVU5JVF9DLCAgIC8qIGRjcGwgICAgICAgICAgICAgICAgb25seSBpbiBDIHVuaXQuICAqLwogLyogTURVQUxBQ0MgKi8gICAgIFVOSVRfRk0wLCAvKiBtZWRpYSBkdWFsIGFjYyBpbnNuIG9ubHkgaW4gRk0wIHVuaXQuICAqLworLyogTURDVVRTU0kgKi8gICAgIFVOSVRfRk0wLCAvKiBtZGN1dHNzaSAgICAgICAgICAgIG9ubHkgaW4gRk0wIHVuaXQuICAqLwogLyogTUNMUkFDQy0xKi8gICAgIFVOSVRfRk0wMSAvKiBtY2xyYWNjLEE9PTEgaW4gRk0wIG9yIEZNMSB1bml0LiAgKi8KIH07CiAKQEAgLTM1Myw2ICs0MTAsNyBAQAogLyogU0NBTiAgICAgKi8gICAgIFVOSVRfSUFMTCwgLyogc2NhbiAgICAgICAgICAgICAgICBpbiBhbnkgaW50ZWdlciB1bml0LiAqLwogLyogRENQTCAgICAgKi8gICAgIFVOSVRfSTAsICAgLyogZGNwbCAgICAgICAgICAgICAgICBvbmx5IGluIEkwIHVuaXQuICAgICAqLwogLyogTURVQUxBQ0MgKi8gICAgIFVOSVRfRk1BTEwsLyogbWVkaWEgZHVhbCBhY2MgaW5zbiBpbiBhbGwgbWVkaWEgdW5pdHMgICAqLworLyogTURDVVRTU0kgKi8gICAgIFVOSVRfRk0wMSwgLyogbWRjdXRzc2kgICAgICAgICAgICBpbiBGTTAgb3IgRk0xIHVuaXQuICAqLwogLyogTUNMUkFDQy0xKi8gICAgIFVOSVRfRk0wMSAgLyogbWNscmFjYyxBPT0xIGluIEZNMCBvciBGTTEgdW5pdC4gICAgICAgICAqLwogfTsKIApAQCAtMzcwLDYgKzQyOCwxMCBAQAogICAgICAgdmxpdy0+Y3VycmVudF92bGl3ID0gZnI0MDBfYWxsb3dlZF92bGl3OwogICAgICAgdmxpdy0+dW5pdF9tYXBwaW5nID0gZnI0MDBfdW5pdF9tYXBwaW5nOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBiZmRfbWFjaF9mcjQ1MDoKKyAgICAgIHZsaXctPmN1cnJlbnRfdmxpdyA9IGZyNDAwX2FsbG93ZWRfdmxpdzsKKyAgICAgIHZsaXctPnVuaXRfbWFwcGluZyA9IGZyNDUwX3VuaXRfbWFwcGluZzsKKyAgICAgIGJyZWFrOwogICAgIGNhc2UgYmZkX21hY2hfZnI1NTA6CiAgICAgICB2bGl3LT5jdXJyZW50X3ZsaXcgPSBmcjU1MF9hbGxvd2VkX3ZsaXc7CiAgICAgICB2bGl3LT51bml0X21hcHBpbmcgPSBmcjU1MF91bml0X21hcHBpbmc7CkBAIC00OTksNiArNTYxLDggQEAKICAgICBjYXNlIEZSNDAwX01BSk9SX01fMjoKICAgICAgIHJldHVybiAhIGZpbmRfbWFqb3JfaW5fdmxpdyAodmxpdywgRlI0MDBfTUFKT1JfTV8xKQogCSYmICAgISBmaW5kX21ham9yX2luX3ZsaXcgKHZsaXcsIEZSNDAwX01BSk9SX01fMik7CisgICAgY2FzZSBGUjQwMF9NQUpPUl9NXzE6CisgICAgICByZXR1cm4gIWZpbmRfbWFqb3JfaW5fdmxpdyAodmxpdywgRlI0MDBfTUFKT1JfTV8yKTsKICAgICBkZWZhdWx0OgogICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTA2LDYgKzU3MCw0MyBAQAogfQogCiBzdGF0aWMgaW50CitmcjQ1MF9jaGVja19pbnNuX21ham9yX2NvbnN0cmFpbnRzICgKKyAgRlJWX1ZMSVcgKnZsaXcsIENHRU5fQVRUUl9WQUxVRV9UWVBFIG1ham9yCispCit7CisgIENHRU5fQVRUUl9WQUxVRV9UWVBFIG90aGVyX21ham9yOworCisgIC8qIE91ciBjYWxsZXIgZ3VhcmFudGVlcyB0aGVyZSdzIGF0IGxlYXN0IG9uZSBvdGhlciBpbnN0cnVjdGlvbi4gICovCisgIG90aGVyX21ham9yID0gQ0dFTl9JTlNOX0FUVFJfVkFMVUUgKHZsaXctPmluc25bMF0sIENHRU5fSU5TTl9GUjQ1MF9NQUpPUik7CisKKyAgLyogKE00LCBNNSkgYW5kIChNNCwgTTYpIGFyZSBhbGxvd2VkLiAgKi8KKyAgaWYgKG90aGVyX21ham9yID09IEZSNDUwX01BSk9SX01fNCkKKyAgICBpZiAobWFqb3IgPT0gRlI0NTBfTUFKT1JfTV81IHx8IG1ham9yID09IEZSNDUwX01BSk9SX01fNikKKyAgICAgIHJldHVybiAxOworCisgIC8qIE90aGVyd2lzZSwgaW5zdHJ1Y3Rpb25zIGluIGV2ZW4tbnVtYmVyZWQgbWVkaWEgY2F0ZWdvcmllcyBjYW5ub3QgYmUKKyAgICAgZXhlY3V0ZWQgaW4gcGFyYWxsZWwgd2l0aCBvdGhlciBtZWRpYSBpbnN0cnVjdGlvbnMuICAqLworICBzd2l0Y2ggKG1ham9yKQorICAgIHsKKyAgICBjYXNlIEZSNDUwX01BSk9SX01fMjoKKyAgICBjYXNlIEZSNDUwX01BSk9SX01fNDoKKyAgICBjYXNlIEZSNDUwX01BSk9SX01fNjoKKyAgICAgIHJldHVybiAhKG90aGVyX21ham9yID49IEZSNDUwX01BSk9SX01fMQorCSAgICAgICAmJiBvdGhlcl9tYWpvciA8PSBGUjQ1MF9NQUpPUl9NXzYpOworCisgICAgY2FzZSBGUjQ1MF9NQUpPUl9NXzE6CisgICAgY2FzZSBGUjQ1MF9NQUpPUl9NXzM6CisgICAgY2FzZSBGUjQ1MF9NQUpPUl9NXzU6CisgICAgICByZXR1cm4gIShvdGhlcl9tYWpvciA9PSBGUjQ1MF9NQUpPUl9NXzIKKwkgICAgICAgfHwgb3RoZXJfbWFqb3IgPT0gRlI0NTBfTUFKT1JfTV80CisJICAgICAgIHx8IG90aGVyX21ham9yID09IEZSNDUwX01BSk9SX01fNik7CisKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCitzdGF0aWMgaW50CiBmaW5kX3VuaXRfaW5fdmxpdyAoCiAgIEZSVl9WTElXICp2bGl3LCBDR0VOX0FUVFJfVkFMVUVfVFlQRSB1bml0CiApCkBAIC03NDIsNiArODQzLDkgQEAKICAgICBjYXNlIGJmZF9tYWNoX2ZyNDAwOgogICAgICAgcmMgPSBmcjQwMF9jaGVja19pbnNuX21ham9yX2NvbnN0cmFpbnRzICh2bGl3LCBtYWpvcik7CiAgICAgICBicmVhazsKKyAgICBjYXNlIGJmZF9tYWNoX2ZyNDUwOgorICAgICAgcmMgPSBmcjQ1MF9jaGVja19pbnNuX21ham9yX2NvbnN0cmFpbnRzICh2bGl3LCBtYWpvcik7CisgICAgICBicmVhazsKICAgICBjYXNlIGJmZF9tYWNoX2ZyNTUwOgogICAgICAgcmMgPSBmcjU1MF9jaGVja19pbnNuX21ham9yX2NvbnN0cmFpbnRzICh2bGl3LCBtYWpvciwgaW5zbik7CiAgICAgICBicmVhazsKQEAgLTc4Miw2ICs4ODYsOSBAQAogICAgIGNhc2UgYmZkX21hY2hfZnI0MDA6CiAgICAgICBtYWpvciA9IENHRU5fSU5TTl9BVFRSX1ZBTFVFIChpbnNuLCBDR0VOX0lOU05fRlI0MDBfTUFKT1IpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBiZmRfbWFjaF9mcjQ1MDoKKyAgICAgIG1ham9yID0gQ0dFTl9JTlNOX0FUVFJfVkFMVUUgKGluc24sIENHRU5fSU5TTl9GUjQ1MF9NQUpPUik7CisgICAgICBicmVhazsKICAgICBjYXNlIGJmZF9tYWNoX2ZyNTUwOgogICAgICAgbWFqb3IgPSBDR0VOX0lOU05fQVRUUl9WQUxVRSAoaW5zbiwgQ0dFTl9JTlNOX0ZSNTUwX01BSk9SKTsKICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvY3B1L20zMnIuY3B1IGIvY3B1L20zMnIuY3B1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNDliMjgKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvbTMyci5jcHUKQEAgLTAsMCArMSwyNDI2IEBACis7IFJlbmVzYXMgTTMyUiBDUFUgZGVzY3JpcHRpb24uICAtKi0gU2NoZW1lIC0qLQorOworOyBDb3B5cmlnaHQgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKzsKKzsgQ29udHJpYnV0ZWQgYnkgUmVkIEhhdCBJbmM7IGRldmVsb3BlZCB1bmRlciBjb250cmFjdCBmcm9tIE1pdHN1YmlzaGkKKzsgRWxlY3RyaWMgQ29ycG9yYXRpb24uCis7Cis7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQmludXRpbHMuCis7Cis7IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCis7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7Cis7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7Cis7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCis7IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisKKyhpbmNsdWRlICJzaW1wbGlmeS5pbmMiKQorCis7IEZJWE1FOiBEZWxldGUgc2lnbiBleHRlbnNpb24gb2YgYWNjdW11bGF0b3IgcmVzdWx0cy4KKzsgU2lnbiBleHRlbnNpb24gaXMgZG9uZSB3aGVuIGFjY3VtdWxhdG9yIGlzIHJlYWQuCisKKzsgZGVmaW5lLWFyY2ggbXVzdCBhcHBlYXIgZmlyc3QKKworKGRlZmluZS1hcmNoCisgIChuYW1lIG0zMnIpIDsgbmFtZSBvZiBjcHUgZmFtaWx5CisgIChjb21tZW50ICJSZW5lc2FzIE0zMlIiKQorICAoZGVmYXVsdC1hbGlnbm1lbnQgYWxpZ25lZCkKKyAgKGluc24tbHNiMD8gI2YpCisgIChtYWNocyBtMzJyIG0zMnJ4IG0zMnIyKQorICAoaXNhcyBtMzJyKQorKQorCis7IEF0dHJpYnV0ZXMuCisKKzsgQW4gYXR0cmlidXRlIHRvIGRlc2NyaWJlIHdoaWNoIHBpcGVsaW5lIGFuIGluc24gcnVucyBpbi4KKzsgT19PUyBpcyBhIHNwZWNpYWwgYXR0cmlidXRlIGZvciBzbGwsIHNyYSwgc2xhLCBzbGxpLCBzcmFpLCBzbGFpLgorOyBUaGVzZSBpbnN0cnVjdGlvbnMgaGF2ZSBPIGF0dHJpYnV0ZSBmb3IgbTMycnggYW5kIE9TIGF0dHJpYnV0ZSBmb3IgbTMycjIuCisKKyhkZWZpbmUtYXR0cgorICAoZm9yIGluc24pCisgICh0eXBlIGVudW0pCisgIChuYW1lIFBJUEUpCisgIChjb21tZW50ICJwYXJhbGxlbCBleGVjdXRpb24gcGlwZWxpbmUgc2VsZWN0aW9uIikKKyAgKHZhbHVlcyBOT05FIE8gUyBPUyBPX09TKQorKQorCis7IEEgZGVyaXZlZCBhdHRyaWJ1dGUgdGhhdCBzYXlzIHdoaWNoIGluc25zIGNhbiBiZSBleGVjdXRlZCBpbiBwYXJhbGxlbAorOyB3aXRoIG90aGVycy4gIFRoaXMgaXMgYSByZXF1aXJlZCBhdHRyaWJ1dGUgZm9yIGFyY2hpdGVjdHVyZXMgd2l0aAorOyBwYXJhbGxlbCBleGVjdXRpb24uCisKKyhkZWZpbmUtYXR0cgorICAoZm9yIGluc24pCisgICh0eXBlIGVudW0pCisgIChuYW1lIFBBUkFMTEVMKQorICAoYXR0cnMgTUVUQSkgOyBkbyBub3QgZGVmaW5lIGluIGFueSBnZW5lcmF0ZWQgZmlsZSBmb3Igbm93CisgICh2YWx1ZXMgTk8gWUVTKQorICAoZGVmYXVsdCAoaWYgKGVxLWF0dHIgKGN1cnJlbnQtaW5zbikgUElQRSBOT05FKSAoc3ltYm9sIE5PKSAoc3ltYm9sIFlFUykpKQorKQorCis7IEluc3RydWN0aW9uIHNldCBwYXJhbWV0ZXJzLgorCisoZGVmaW5lLWlzYQorICAobmFtZSBtMzJyKQorCisgIDsgVGhpcyBpcyAzMiBiZWNhdXNlIDE2IGJpdCBpbnNucyBhbHdheXMgYXBwZWFyIGFzIHBhaXJzLgorICA7ID8/PyBTZWUgaWYgdGhpcyBjYW4gZ28gYXdheS4gIEl0J3Mgb25seSB1c2VkIGJ5IHRoZSBkaXNhc3NlbWJsZXIgKHJpZ2h0PykKKyAgOyB0byBkZWNpZGUgaG93IGxvbmcgYW4gdW5rbm93biBpbnNuIGlzLiAgT25lIHZhbHVlIGlzbid0IHN1ZmZpY2llbnQgKGUuZy4gaWYKKyAgOyBvbiBhIDE2IGJpdCAoYW5kIG5vdCAzMiBiaXQpIGJvdW5kYXJ5LCB3aWxsIG9ubHkgd2FudCB0byBhZHZhbmNlIHBjIGJ5IDE2LikKKyAgKGRlZmF1bHQtaW5zbi1iaXRzaXplIDMyKQorCisgIDsgTnVtYmVyIG9mIGJ5dGVzIG9mIGluc24gd2UgY2FuIGluaXRpYWxseSBmZXRjaC4KKyAgOyBUaGUgTTMyUiBpcyB0cmlja3kgaW4gdGhhdCBpbnNucyBhcmUgZWl0aGVyIHR3byAxNi1iaXQgaW5zbnMKKyAgOyAoZXhlY3V0ZWQgc2VxdWVudGlhbGx5IG9yIGluIHBhcmFsbGVsKSBvciBvbmUgMzItYml0IGluc24uCisgIDsgU28gb24gb25lIGhhbmQgdGhlIGJhc2UgaW5zbiBzaXplIGlzIDE2IGJpdHMsIGJ1dCBvbiBhbm90aGVyIGl0J3MgMzIuCisgIDsgMzIgaXMgY2hvc2VuIGJlY2F1c2U6CisgIDsgLSBpZiB0aGUgY2hpcCB3ZXJlIGV2ZXIgYmktZW5kaWFuIGl0IGlzIGJlbGlldmVkIHRoYXQgdGhlIGJ5dGUgb3JkZXIgd291bGQKKyAgOyAgIGJlIGJhc2VkIG9uIDMyIGJpdCBxdWFudGl0aWVzCisgIDsgLSAzMiBiaXQgaW5zbnMgYXJlIGFsd2F5cyBhbGlnbmVkIG9uIDMyIGJpdCBib3VuZGFyaWVzCisgIDsgLSB0aGUgcGMgd2lsbCBuZXZlciBzdG9wIG9uIGEgMTYgYml0IChhbmQgbm90IDMyIGJpdCkgYm91bmRhcnkKKyAgOyAgIFt3ZWxsIGFjdHVhbGx5IGl0IGNhbiwgYnV0IHRoZXJlIGFyZSBubyBicmFuY2hlcyB0byBzdWNoIHBsYWNlc10KKyAgKGJhc2UtaW5zbi1iaXRzaXplIDMyKQorCisgIDsgVXNlZCBpbiBjb21wdXRpbmcgYml0IG51bWJlcnMuCisgIChkZWZhdWx0LWluc24td29yZC1iaXRzaXplIDMyKQorCisgIDsgVGhlIG0zMnIgZmV0Y2hlcyAyIGluc25zIGF0IGEgdGltZS4KKyAgKGxpdy1pbnNucyAyKQorCisgIDsgV2hpbGUgdGhlIG0zMnIgY2FuIGV4ZWN1dGUgaW5zbnMgaW4gcGFyYWxsZWwsIHRoZSBiYXNlIG1hY2ggY2FuJ3QKKyAgOyAob3RoZXIgdGhhbiBub3ApLiAgVGhlIGJhc2UgbWFjaCBpcyBncmVhdGx5IGhhbmRpY2FwcGVkIGJ5IHRoaXMsIGJ1dAorICA7IHdlIHN0aWxsIG5lZWQgdG8gY2xlYW5seSBoYW5kbGUgaXQuCisgIChwYXJhbGxlbC1pbnNucyAyKQorCisgIDsgSW5pdGlhbCBiaXRudW1iZXJzIHRvIGRlY29kZSBpbnNucyBieS4KKyAgKGRlY29kZS1hc3Npc3QgKDAgMSAyIDMgOCA5IDEwIDExKSkKKworICA7IENsYXNzaWZpY2F0aW9uIG9mIGluc3RydWN0aW9ucyB0aGF0IGZpdCBpbiB0aGUgdmFyaW91cyBmcmFtZXMuCisgIDsgd2lwLCBub3QgY3VycmVudGx5IHVzZWQKKyAgKGluc24tdHlwZXMgKGxvbmcgOyBuYW1lCisJICAgICAgIDMxIDsgbGVuZ3RoCisJICAgICAgIChlcS1hdHRyIChjdXJyZW50LWluc24pIExFTkdUSCAzMSkgOyBtYXRjaGluZyBpbnNucworCSAgICAgICAoMCAxIDIgNyA4IDkgMTApIDsgZGVjb2RlLWFzc2lzdAorCSAgICAgICApCisJICAgICAgKHNob3J0CisJICAgICAgIDE1CisJICAgICAgIChlcS1hdHRyIChjdXJyZW50LWluc24pIExFTkdUSCAxNSkgOyBtYXRjaGluZyBpbnNucworCSAgICAgICAoMCAxIDIgNyA4IDkgMTApCisJICAgICAgICkKKwkgICAgICApCisKKyAgOyBJbnN0cnVjdGlvbiBmcmFtaW5nLgorICA7IEVhY2ggbTMyciBpbnNuIGlzIGVpdGhlciBvbmUgMzIgYml0IGluc24sIHR3byAxNiBiaXQgaW5zbnMgZXhlY3V0ZWQKKyAgOyBzZXJpYWxseSAobGVmdC0+cmlnaHQpLCBvciB0d28gMTYgYml0IGluc25zIGV4ZWN1dGVkIHBhcmFsbGVsbHkuCisgIDsgd2lwLCBub3QgY3VycmVudGx5IHVzZWQKKyAgKGZyYW1lIGxvbmczMiA7IG5hbWUKKwkgKChsb25nKSkgOyBsaXN0IG9mIGluc25zIGluIGZyYW1lLCBwbHVzIGNvbnN0cmFpbnQKKwkgIiQwIiAgIDsgYXNzZW1ibGVyCisJICgrICgxIDEpICgzMSAkMCkpIDsgdmFsdWUKKwkgKHNlcXVlbmNlICgpIChleGVjdXRlICQwKSkgOyBhY3Rpb24KKwkgKQorICAoZnJhbWUgc2VyaWFsMngxNgorCSAoKHNob3J0KQorCSAgKHNob3J0KSkKKwkgIiQwIC0+ICQxIgorCSAoKyAoMSAwKSAoMTUgJDApICgxIDApICgxNSAkMSkpCisJIChzZXF1ZW5jZSAoKQorCQkgICAoZXhlY3V0ZSAkMCkKKwkJICAgKGV4ZWN1dGUgJDEpKQorCSApCisgIChmcmFtZSBwYXJhbGxlbDJ4MTYKKwkgKChzaG9ydCAoZXEtYXR0ciAoY3VycmVudC1pbnNuKSBQSVBFICJPLEJPVEgiKSkKKwkgIChzaG9ydCAoZXEtYXR0ciAoY3VycmVudC1pbnNuKSBQSVBFICJTLEJPVEgiKSkpCisJICIkMCB8fCAkMSIKKwkgKCsgKDEgMCkgKDE1ICQwKSAoMSAxKSAoMTUgJDEpKQorCSAocGFyYWxsZWwgKCkKKwkJICAgKGV4ZWN1dGUgJDApCisJCSAgIChleGVjdXRlICQxKSkKKwkgKQorKQorDAorOyBDcHUgZmFtaWx5IGRlZmluaXRpb25zLgorCis7ID8/PyBkZWZpbmUtY3B1LWZhbWlseSBbYW5kIGluIGdlbmVyYWwgImNwdS1mYW1pbHkiXSBtaWdodCBiZSBjbGVhcmVyIHRoYW4KKzsgZGVmaW5lLWNwdS4KKzsgPz8/IEhhdmUgZGVmaW5lLWFyY2ggcHJvdmlkZSBkZWZhdWx0cyBmb3IgYXJjaGl0ZWN0dXJlIHRoYXQgZGVmaW5lLWNwdSBjYW4KKzsgdGhlbiBvdmVycmlkZSBbcmVkdWNlcyBkdXBsaWNhdGlvbiBpbiBkZWZpbmUtY3B1XS4KKzsgPz8/IEFub3RoZXIgd2F5IHRvIGdvIGlzIHRvIGRlbGV0ZSBjcHUtZmFtaWxpZXMgZW50aXJlbHkgYW5kIGhhdmUgb25lIG1hY2gKKzsgYWJsZSB0byBpbmhlcml0IHRoaW5ncyBmcm9tIGFub3RoZXIgbWFjaCAod291bGQgYWxzbyBuZWVkIHRoZSBhYmlsaXR5IHRvCis7IG5vdCBvbmx5IG92ZXJyaWRlIHNwZWNpZmljIGluaGVyaXRlZCB0aGluZ3MgYnV0IGFsc28gZGlzYWJsZSBzb21lLAorOyBlLmcuIGlmIGFuIGluc24gd2Fzbid0IHN1cHBvcnRlZCkuCisKKyhkZWZpbmUtY3B1CisgIDsgY3B1IG5hbWVzIG11c3QgYmUgZGlzdGluY3QgZnJvbSB0aGUgYXJjaGl0ZWN0dXJlIG5hbWUgYW5kIG1hY2hpbmUgbmFtZXMuCisgIDsgVGhlICJiIiBzdWZmaXggc3RhbmRzIGZvciAiYmFzZSIgYW5kIGlzIHRoZSBjb252ZW50aW9uLgorICA7IFRoZSAiZiIgc3VmZml4IHN0YW5kcyBmb3IgImZhbWlseSIgYW5kIGlzIHRoZSBjb252ZW50aW9uLgorICAobmFtZSBtMzJyYmYpCisgIChjb21tZW50ICJSZW5lc2FzIE0zMlIgYmFzZSBmYW1pbHkiKQorICAoZW5kaWFuIGVpdGhlcikKKyAgKHdvcmQtYml0c2l6ZSAzMikKKyAgOyBPdmVycmlkZSBpc2Egc3BlYyAoPz8/IGtlZXBzIHRoaW5ncyBzaW1wbGVyLCB0aG91Z2ggaXQgd2FzIG1vcmUgdHJ1ZQorICA7IGluIHRoZSBlYXJseSBkYXlzIGFuZCBub3Qgc28gbXVjaCBub3cpLgorICAocGFyYWxsZWwtaW5zbnMgMSkKKykKKworKGRlZmluZS1jcHUKKyAgKG5hbWUgbTMycnhmKQorICAoY29tbWVudCAiUmVuZXNhcyBNMzJSeCBmYW1pbHkiKQorICAoZW5kaWFuIGVpdGhlcikKKyAgKHdvcmQtYml0c2l6ZSAzMikKKyAgOyBHZW5lcmF0ZWQgZmlsZXMgaGF2ZSBhbiAieCIgc3VmZml4LgorICAoZmlsZS10cmFuc2Zvcm0gIngiKQorKQorCisoZGVmaW5lLWNwdQorICAobmFtZSBtMzJyMmYpCisgIChjb21tZW50ICJSZW5lc2FzIE0zMlIyIGZhbWlseSIpCisgIChlbmRpYW4gZWl0aGVyKQorICAod29yZC1iaXRzaXplIDMyKQorICA7IEdlbmVyYXRlZCBmaWxlcyBoYXZlIGFuICIyIiBzdWZmaXguCisgIChmaWxlLXRyYW5zZm9ybSAiMiIpCispCisKKyhkZWZpbmUtbWFjaAorICAobmFtZSBtMzJyKQorICAoY29tbWVudCAiR2VuZXJpYyBNMzJSIGNwdSIpCisgIChjcHUgbTMycmJmKQorKQorCisoZGVmaW5lLW1hY2gKKyAgKG5hbWUgbTMycngpCisgIChjb21tZW50ICJNMzJSWCBjcHUiKQorICAoY3B1IG0zMnJ4ZikKKykKKworKGRlZmluZS1tYWNoCisgIChuYW1lIG0zMnIyKQorICAoY29tbWVudCAiTTMyUjIgY3B1IikKKyAgKGNwdSBtMzJyMmYpCispCisMCis7IE1vZGVsIGRlc2NyaXB0aW9ucy4KKworOyBUaGUgbWVhbmluZyBvZiB0aGlzIHZhbHVlIGlzIHdpcCBidXQgYXQgdGhlIG1vbWVudCBpdCdzIGludGVuZGVkIHRvIGRlc2NyaWJlCis7IHRoZSBpbXBsZW1lbnRhdGlvbiAoaS5lLiB3aGF0IC1tdHVuZT1mb28gZG9lcyBpbiBzcGFyYyBnY2MpLgorOworOyBOb3RlcyB3aGlsZSB3aXA6Cis7IC0gZm9ybWF0IG9mIHBpcGVsaW5lIGVudHJ5OgorOyAgIChwaXBlbGluZSBuYW1lIChzdGFnZTEtbmFtZSAuLi4pIChzdGFnZTItbmFtZSAuLi4pIC4uLikKKzsgICBUaGUgY29udGVudHMgb2YgYSBzdGFnZSBkZXNjcmlwdGlvbiBpcyB3aXAuCis7IC0gZWFjaCBtYWNoIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgbW9kZWwKKzsgLSB0aGUgZGVmYXVsdCBtb2RlbCBtdXN0IGJlIHRoZSBmaXJzdCBvbmUKKzstIG1heWJlIGhhdmUgYHJldGlyZScgc3VwcG9ydCB1cGRhdGUgdG90YWwgY3ljbGUgY291bnQgdG8gaGFuZGxlIGN1cnJlbnQKKzsgIHBhcmFsbGVsIGluc24gY3ljbGUgY291bnRpbmcgcHJvYmxlbXMKKworKGRlZmluZS1tb2RlbAorICAobmFtZSBtMzJyL2QpIChjb21tZW50ICJtMzJyL2QiKSAoYXR0cnMpCisgIChtYWNoIG0zMnIpCisKKyAgOyhwcmVmZXRjaCkKKyAgOyhyZXRpcmUpCisKKyAgKHBpcGVsaW5lIHAtbm9uLW1lbSAiIiAoKSAoKGZldGNoKSAoZGVjb2RlKSAoZXhlY3V0ZSkgKHdyaXRlYmFjaykpKQorICAocGlwZWxpbmUgcC1tZW0gIiIgKCkgKChmZXRjaCkgKGRlY29kZSkgKGV4ZWN1dGUpIChtZW1vcnkpICh3cml0ZWJhY2spKSkKKworICA7IGBzdGF0ZScgaXMgYSBsaXN0IG9mIHZhcmlhYmxlcyBmb3IgcmVjb3JkaW5nIG1vZGVsIHN0YXRlCisgIChzdGF0ZQorICAgOyBiaXQgbWFzayBvZiBoLWdyIHJlZ2lzdGVycywgPTEgbWVhbnMgdmFsdWUgYmVpbmcgbG9hZGVkIGZyb20gbWVtb3J5CisgICAoaC1nciBVSU5UKQorICAgKQorCisgICh1bml0IHUtZXhlYyAiRXhlY3V0aW9uIFVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKHNyIElOVCAtMSkgKGRyIElOVCAtMSkpIDsgaW5wdXRzCisJKChkciBJTlQgLTEpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgKHVuaXQgdS1jbXAgIkNvbXBhcmUgVW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoc3JjMSBJTlQgLTEpIChzcmMyIElOVCAtMSkpIDsgaW5wdXRzCisJKCkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgICh1bml0IHUtbWFjICJNdWx0aXBseS9BY2N1bXVsYXRlIFVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKHNyYzEgSU5UIC0xKSAoc3JjMiBJTlQgLTEpKSA7IGlucHV0cworCSgpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICAodW5pdCB1LWN0aSAiQnJhbmNoIFVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKHNyIElOVCAtMSkpIDsgaW5wdXRzCisJKChwYykpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICAodW5pdCB1LWxvYWQgIk1lbW9yeSBMb2FkIFVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKHNyIElOVCkKKwkgOyhsZC1tZW0gQUkpCisJICkgOyBpbnB1dHMKKwkoKGRyIElOVCkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICAodW5pdCB1LXN0b3JlICJNZW1vcnkgU3RvcmUgVW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoc3JjMSBJTlQpIChzcmMyIElOVCkpIDsgaW5wdXRzCisJKCkgOyAoKHN0LW1lbSBBSSkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorKQorCisoZGVmaW5lLW1vZGVsCisgIChuYW1lIHRlc3QpIChjb21tZW50ICJ0ZXN0IikgKGF0dHJzKQorICAobWFjaCBtMzJyKQorICAocGlwZWxpbmUgYWxsICIiICgpICgoZmV0Y2gpIChkZWNvZGUpIChleGVjdXRlKSAod3JpdGViYWNrKSkpCisgICh1bml0IHUtZXhlYyAiRXhlY3V0aW9uIFVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpICgpICgpICgpKQorKQorCis7IEVhY2ggbWFjaCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIG1vZGVsLgorCisoZGVmaW5lLW1vZGVsCisgIChuYW1lIG0zMnJ4KSAoY29tbWVudCAibTMycngiKSAoYXR0cnMpCisgIChtYWNoIG0zMnJ4KQorCisgIDsgPz8/IEl0J3MgNiBzdGFnZXMgYnV0IEkgZm9yZ2V0IHRoZSBkZXRhaWxzIHJpZ2h0IG5vdy4KKyAgKHBpcGVsaW5lIHAtbyAiIiAoKSAoKGZldGNoKSAoZGVjb2RlKSAoZXhlY3V0ZSkgKHdyaXRlYmFjaykpKQorICAocGlwZWxpbmUgcC1zICIiICgpICgoZmV0Y2gpIChkZWNvZGUpIChleGVjdXRlKSAod3JpdGViYWNrKSkpCisgIChwaXBlbGluZSBwLW8tbWVtICIiICgpICgoZmV0Y2gpIChkZWNvZGUpIChleGVjdXRlKSAobWVtb3J5KSAod3JpdGViYWNrKSkpCisKKyAgKHVuaXQgdS1leGVjICJFeGVjdXRpb24gVW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoc3IgSU5UIC0xKSAoZHIgSU5UIC0xKSkgOyBpbnB1dHMKKwkoKGRyIElOVCAtMSkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICAodW5pdCB1LWNtcCAiQ29tcGFyZSBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChzcmMxIElOVCAtMSkgKHNyYzIgSU5UIC0xKSkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgKHVuaXQgdS1tYWMgIk11bHRpcGx5L0FjY3VtdWxhdGUgVW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoc3JjMSBJTlQgLTEpIChzcmMyIElOVCAtMSkpIDsgaW5wdXRzCisJKCkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgICh1bml0IHUtY3RpICJCcmFuY2ggVW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoc3IgSU5UIC0xKSkgOyBpbnB1dHMKKwkoKHBjKSkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgICh1bml0IHUtbG9hZCAiTWVtb3J5IExvYWQgVW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoc3IgSU5UKSkgOyBpbnB1dHMKKwkoKGRyIElOVCkpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICAodW5pdCB1LXN0b3JlICJNZW1vcnkgU3RvcmUgVW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQorCSgoc3JjMSBJTlQpIChzcmMyIElOVCkpIDsgaW5wdXRzCisJKCkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCispCisKKyhkZWZpbmUtbW9kZWwKKyAgKG5hbWUgbTMycjIpIChjb21tZW50ICJtMzJyMiIpIChhdHRycykKKyAgKG1hY2ggbTMycjIpCisKKyAgOyA/Pz8gSXQncyA2IHN0YWdlcyBidXQgSSBmb3JnZXQgdGhlIGRldGFpbHMgcmlnaHQgbm93LgorICAocGlwZWxpbmUgcC1vICIiICgpICgoZmV0Y2gpIChkZWNvZGUpIChleGVjdXRlKSAod3JpdGViYWNrKSkpCisgIChwaXBlbGluZSBwLXMgIiIgKCkgKChmZXRjaCkgKGRlY29kZSkgKGV4ZWN1dGUpICh3cml0ZWJhY2spKSkKKyAgKHBpcGVsaW5lIHAtby1tZW0gIiIgKCkgKChmZXRjaCkgKGRlY29kZSkgKGV4ZWN1dGUpIChtZW1vcnkpICh3cml0ZWJhY2spKSkKKworICAodW5pdCB1LWV4ZWMgIkV4ZWN1dGlvbiBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChzciBJTlQgLTEpIChkciBJTlQgLTEpKSA7IGlucHV0cworCSgoZHIgSU5UIC0xKSkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgICh1bml0IHUtY21wICJDb21wYXJlIFVuaXQiICgpCisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKHNyYzEgSU5UIC0xKSAoc3JjMiBJTlQgLTEpKSA7IGlucHV0cworCSgpIDsgb3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorICAodW5pdCB1LW1hYyAiTXVsdGlwbHkvQWNjdW11bGF0ZSBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChzcmMxIElOVCAtMSkgKHNyYzIgSU5UIC0xKSkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgKHVuaXQgdS1jdGkgIkJyYW5jaCBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChzciBJTlQgLTEpKSA7IGlucHV0cworCSgocGMpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAgKHVuaXQgdS1sb2FkICJNZW1vcnkgTG9hZCBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChzciBJTlQpKSA7IGlucHV0cworCSgoZHIgSU5UKSkgOyBvdXRwdXRzCisJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkKKwkpCisgICh1bml0IHUtc3RvcmUgIk1lbW9yeSBTdG9yZSBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChzcmMxIElOVCkgKHNyYzIgSU5UKSkgOyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKykKKwwKKzsgVGhlIGluc3RydWN0aW9uIGZldGNoL2V4ZWN1dGUgY3ljbGUuCis7IFRoaXMgaXMgc3BsaXQgaW50byB0d28gcGFydHMgYXMgc29tZXRpbWVzIG1vcmUgdGhhbiBvbmUgaW5zdHJ1Y3Rpb24gaXMKKzsgZGVjb2RlZCBhdCBvbmNlLgorOyBUaGUgYGNvbnN0IFNJJyBhcmd1bWVudCB0byBkZWNvZGUvZXhlY3V0ZSBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoCis7IG11bHRpcGxlIGluc3RydWN0aW9ucyBwcm9jZXNzZWQgYXQgdGhlIHNhbWUgdGltZSAoZS5nLiBtMzJyKS4KKzsKKzsgPz8/IFRoaXMgaXMgd2lwLCBhbmQgbm90IGN1cnJlbnRseSB1c2VkLgorOyA/Pz8gTmVlZHMgdG8gYmUgbW92ZWQgdG8gZGVmaW5lLWlzYS4KKworOyBUaGlzIGlzIGhvdyB0byBmZXRjaCBhbmQgZGVjb2RlIGFuIGluc3RydWN0aW9uLgorCis7KGRlZmluZS1leHRyYWN0Cis7ICAoc2VxdWVuY2UgVk9JRAorOwkgICAgKGlmIFZPSUQgKG5lIEFJIChhbmQgQUkgcGMgKGNvbnN0IEFJIDMpKSAoY29uc3QgQUkgMCkpCis7CQkoc2VxdWVuY2UgVk9JRAorOwkJCSAgKHNldC1xdWlldCBVU0kgKHNjcmF0Y2ggVUhJIGluc24xKSAoaWZldGNoIFVISSBwYykpCis7CQkJICAoZGVjb2RlIFZPSUQgcGMgKGFuZCBVSEkgaW5zbjEgKGNvbnN0IFVISSAjeDdmZmYpKQorOwkJCQkgIChjb25zdCBTSSAwKSkpCis7CQkoc2VxdWVuY2UgVk9JRAorOwkJCSAgKHNldC1xdWlldCBVU0kgKHNjcmF0Y2ggVVNJIGluc24pIChpZmV0Y2ggVVNJIHBjKSkKKzsJCQkgIChpZiBWT0lEIChuZSBVU0kgKGFuZCBVU0kgaW5zbiAoY29uc3QgVVNJICN4ODAwMDAwMDApKQorOwkJCQkgICAgIChjb25zdCBVU0kgMCkpCis7CQkJICAgICAgKGRlY29kZSBWT0lEIHBjIChzcmwgVVNJIGluc24gKGNvbnN0IFdJIDE2KSkgKGNvbnN0IFNJIDApKQorOwkJCSAgICAgIChzZXF1ZW5jZSBWT0lECis7CQkJCQk7ID8/PyBwYXJhbGxlbCBzdXBwb3J0Cis7CQkJCQkoZGVjb2RlIFZPSUQgcGMgKHNybCBVU0kgaW5zbiAoY29uc3QgV0kgMTYpKQorOwkJCQkJCShjb25zdCBTSSAwKSkKKzsJCQkJCShkZWNvZGUgVk9JRCAoYWRkIEFJIHBjIChjb25zdCBBSSAyKSkKKzsJCQkJCQkoYW5kIFVTSSBpbnNuIChjb25zdCBXSSAjeDdmZmYpKQorOwkJCQkJCShjb25zdCBTSSAxKSkpKSkpCis7CSAgICApCis7KQorCis7IFRoaXMgaXMgaG93IHRvIGV4ZWN1dGUgYSBkZWNvZGVkIGluc3RydWN0aW9uLgorCis7KGRlZmluZS1leGVjdXRlCis7ICAoc2VxdWVuY2UgVk9JRCAoKSA7ICgpIGlzIGVtcHR5IG9wdGlvbiBsaXN0Cis7CSAgICAgKChBSSBuZXdfcGMpKQorOwkgICAgIChzZXQgQUkgbmV3X3BjIChleGVjdXRlOiBBSSAoY29uc3QgMCkpICM6cXVpZXQpCis7CSAgICAgKHNldCBBSSBwYyBuZXdfcGMgIzpkaXJlY3QpCis7CSAgICAgKQorOykKKworOyBGSVhNRTogSXQgbWlnaHQgc2ltcGxpZnkgdGhpbmdzIHRvIHNlcGFyYXRlIHRoZSBleGVjdXRlIHByb2Nlc3MgZnJvbSB0aGUKKzsgb25lIHRoYXQgdXBkYXRlcyB0aGUgUEMuCisMCis7IEluc3RydWN0aW9uIGZpZWxkcy4KKzsKKzsgQXR0cmlidXRlczoKKzsgUENSRUwtQUREUjogcGMgcmVsYXRpdmUgdmFsdWUgKGZvciByZWxvYyBhbmQgZGlzYXNzZW1ibHkgcHVycG9zZXMpCis7IEFCUy1BRERSOiBhYnNvbHV0ZSBhZGRyZXNzIChmb3IgcmVsb2MgYW5kIGRpc2Fzc2VtYmx5IHB1cnBvc2VzPykKKzsgUkVTRVJWRUQ6IGJpdHMgYXJlIG5vdCB1c2VkIHRvIGRlY29kZSBpbnNuLCBtdXN0IGJlIGFsbCAwCis7IFJFTE9DOiB0aGVyZSBpcyBhIHJlbG9jYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgZmllbGQgKGV4cGVyaW1lbnQpCisKKyhkZWZpbmUtYXR0cgorICAoZm9yIGlmaWVsZCBvcGVyYW5kKQorICAodHlwZSBib29sZWFuKQorICAobmFtZSBSRUxPQykKKyAgKGNvbW1lbnQgInRoZXJlIGlzIGEgcmVsb2MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZmllbGQgKGV4cGVyaW1lbnQpIikKKykKKworKGRuZiBmLW9wMSAgICAgICAib3AxIiAgICAgICAgICAgICAgICAgKCkgMCA0KQorKGRuZiBmLW9wMiAgICAgICAib3AyIiAgICAgICAgICAgICAgICAgKCkgOCA0KQorKGRuZiBmLWNvbmQgICAgICAiY29uZCIgICAgICAgICAgICAgICAgKCkgNCA0KQorKGRuZiBmLXIxICAgICAgICAicjEiICAgICAgICAgICAgICAgICAgKCkgNCA0KQorKGRuZiBmLXIyICAgICAgICAicjIiICAgICAgICAgICAgICAgICAgKCkgMTIgNCkKKyhkZiBmLXNpbW04ICAgICAgInNpbW04IiAgICAgICAgICAgICAgICgpIDggOCBJTlQgI2YgI2YpCisoZGYgZi1zaW1tMTYgICAgICJzaW1tMTYiICAgICAgICAgICAgICAoKSAxNiAxNiBJTlQgI2YgI2YpCisoZG5mIGYtc2hpZnQtb3AyICJzaGlmdCBvcDIiICAgICAgICAgICAoKSA4IDMpCisoZG5mIGYtdWltbTMgICAgICJ1aW1tMyIgICAgICAgICAgICAgICAoKSA1IDMpCisoZG5mIGYtdWltbTQgICAgICJ1aW1tNCIgICAgICAgICAgICAgICAoKSAxMiA0KQorKGRuZiBmLXVpbW01ICAgICAidWltbTUiICAgICAgICAgICAgICAgKCkgMTEgNSkKKyhkbmYgZi11aW1tOCAgICAgInVpbW04IiAgICAgICAgICAgICAgICgpIDggOCkKKyhkbmYgZi11aW1tMTYgICAgInVpbW0xNiIgICAgICAgICAgICAgICgpIDE2IDE2KQorKGRuZiBmLXVpbW0yNCAgICAidWltbTI0IiAgICAgICAgICAgICAgKEFCUy1BRERSIFJFTE9DKSA4IDI0KQorKGRuZiBmLWhpMTYgICAgICAiaGlnaCAxNiBiaXRzIiAgICAgICAgKFNJR04tT1BUKSAxNiAxNikKKyhkZiBmLWRpc3A4ICAgICAgImRpc3A4LCBzbG90IHVua25vd24iIChQQ1JFTC1BRERSIFJFTE9DKSA4IDggSU5UCisgICAgKCh2YWx1ZSBwYykgKHNyYSBXSSAoc3ViIFdJIHZhbHVlIChhbmQgV0kgcGMgKGNvbnN0IC00KSkpIChjb25zdCAyKSkpCisgICAgKCh2YWx1ZSBwYykgKGFkZCBXSSAoc2xsIFdJIHZhbHVlIChjb25zdCAyKSkgKGFuZCBXSSBwYyAoY29uc3QgLTQpKSkpKQorKGRmIGYtZGlzcDE2ICAgICAiZGlzcDE2IiAgICAgICAgICAgICAgKFBDUkVMLUFERFIgUkVMT0MpIDE2IDE2IElOVAorICAgICgodmFsdWUgcGMpIChzcmEgV0kgKHN1YiBXSSB2YWx1ZSBwYykgKGNvbnN0IDIpKSkKKyAgICAoKHZhbHVlIHBjKSAoYWRkIFdJIChzbGwgV0kgdmFsdWUgKGNvbnN0IDIpKSBwYykpKQorKGRmIGYtZGlzcDI0ICAgICAiZGlzcDI0IiAgICAgICAgICAgICAgKFBDUkVMLUFERFIgUkVMT0MpIDggMjQgSU5UCisgICAgKCh2YWx1ZSBwYykgKHNyYSBXSSAoc3ViIFdJIHZhbHVlIHBjKSAoY29uc3QgMikpKQorICAgICgodmFsdWUgcGMpIChhZGQgV0kgKHNsbCBXSSB2YWx1ZSAoY29uc3QgMikpIHBjKSkpCisKKyhkbmYgZi1vcDIzICAgICAgIm9wMi4zIiAgICAgICAgICAgICAgICgpICA5IDMpCisoZG5mIGYtb3AzICAgICAgICJvcDMiICAgICAgICAgICAgICAgICAoKSAxNCAyKQorKGRuZiBmLWFjYyAgICAgICAiYWNjIiAgICAgICAgICAgICAgICAgKCkgIDggMSkKKyhkbmYgZi1hY2NzICAgICAgImFjY3MiICAgICAgICAgICAgICAgICgpIDEyIDIpCisoZG5mIGYtYWNjZCAgICAgICJhY2NkIiAgICAgICAgICAgICAgICAoKSAgNCAyKQorKGRuZiBmLWJpdHM2NyAgICAiYml0czY3IiAgICAgICAgICAgICAgKCkgIDYgMikKKyhkbmYgZi1iaXQ0ICAgICAgImJpdDQiICAgICAgICAgICAgICAgICgpICA0IDEpCisoZG5mIGYtYml0MTQgICAgICJiaXQxNCIgICAgICAgICAgICAgICAoKSAxNCAxKQorCisoZGVmaW5lLWlmaWVsZCAobmFtZSBmLWltbTEpIChjb21tZW50ICIxIGJpdCBpbW1lZGlhdGUsIDAtPjEgMS0+MiIpCisgIChhdHRycykKKyAgKHN0YXJ0IDE1KSAobGVuZ3RoIDEpCisgIChlbmNvZGUgKHZhbHVlIHBjKSAoc3ViIFdJIHZhbHVlIChjb25zdCBXSSAxKSkpCisgIChkZWNvZGUgKHZhbHVlIHBjKSAoYWRkIFdJIHZhbHVlIChjb25zdCBXSSAxKSkpCispCisMCis7IEVudW1zLgorCis7IGluc24tb3AxOiBiaXRzIDAtMworOyBGSVhNRTogc2hvdWxkIHVzZSBkaWUgbWFjcm8gb3Igc29tZSBzdWNoCisoZGVmaW5lLW5vcm1hbC1pbnNuLWVudW0gaW5zbi1vcDEgImluc24gZm9ybWF0IGVudW1zIiAoKSBPUDFfIGYtb3AxCisgICgiMCIgIjEiICIyIiAiMyIgIjQiICI1IiAiNiIgIjciCisgICAiOCIgIjkiICIxMCIgIjExIiAiMTIiICIxMyIgIjE0IiAiMTUiKQorKQorCis7IGluc24tb3AyOiBiaXRzIDgtMTEKKzsgRklYTUU6IHNob3VsZCB1c2UgZGllIG1hY3JvIG9yIHNvbWUgc3VjaAorKGRlZmluZS1ub3JtYWwtaW5zbi1lbnVtIGluc24tb3AyICJvcDIgZW51bXMiICgpIE9QMl8gZi1vcDIKKyAgKCIwIiAiMSIgIjIiICIzIiAiNCIgIjUiICI2IiAiNyIKKyAgICI4IiAiOSIgIjEwIiAiMTEiICIxMiIgIjEzIiAiMTQiICIxNSIpCispCisMCis7IEhhcmR3YXJlIHBpZWNlcy4KKzsgVGhlc2UgZW50cmllcyBsaXN0IHRoZSBlbGVtZW50cyBvZiB0aGUgcmF3IGhhcmR3YXJlLgorOyBUaGV5J3JlIGFsc28gdXNlZCB0byBwcm92aWRlIHRhYmxlcyBhbmQgb3RoZXIgZWxlbWVudHMgb2YgdGhlIGFzc2VtYmx5Cis7IGxhbmd1YWdlLgorCisoZG5oIGgtcGMgInByb2dyYW0gY291bnRlciIgKFBDIFBST0ZJTEUpIChwYykgKCkgKCkgKCkpCisKKyhkbmggaC1oaTE2ICJoaWdoIDE2IGJpdHMiICgpCisgICAgIChpbW1lZGlhdGUgKFVJTlQgMTYpKQorICAgICAoKSAoKSAoKQorKQorCis7IFRoZXNlIHR3byBhcmVuJ3QgdGVjaG5pY2FsbHkgbmVlZGVkLgorOyBUaGV5J3JlIGhlcmUgZm9yIGlsbHVzdHJhdGlvbiBzYWtlIG1vc3RseS4KKzsgUGx1cyB0aGV5IGNhdXNlIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGV4dHJhY3Rpb24gYnVmZmVycyB0byBvbmx5Cis7IGJlIDE2IGJpdHMgd2lkZSAodnMgMzIgb3IgNjQpLiAgV2hvb3BpZSBkaW5nLiAgQnV0IGl0J3MgZnVuLgorKGRuaCBoLXNsbzE2ICJzaWduZWQgbG93IDE2IGJpdHMiICgpCisgICAgIChpbW1lZGlhdGUgKElOVCAxNikpCisgICAgICgpICgpICgpCispCisoZG5oIGgtdWxvMTYgInVuc2lnbmVkIGxvdyAxNiBiaXRzIiAoKQorICAgICAoaW1tZWRpYXRlIChVSU5UIDE2KSkKKyAgICAgKCkgKCkgKCkKKykKKworKGRlZmluZS1rZXl3b3JkCisgIChuYW1lIGdyLW5hbWVzKQorICAocHJpbnQtbmFtZSBoLWdyKQorICAocHJlZml4ICIiKQorICAodmFsdWVzIChmcCAxMykgKGxyIDE0KSAoc3AgMTUpCisJICAocjAgMCkgKHIxIDEpIChyMiAyKSAocjMgMykgKHI0IDQpIChyNSA1KSAocjYgNikgKHI3IDcpCisJICAocjggOCkgKHI5IDkpIChyMTAgMTApIChyMTEgMTEpIChyMTIgMTIpIChyMTMgMTMpIChyMTQgMTQpIChyMTUgMTUpKQorKQorCisoZGVmaW5lLWhhcmR3YXJlCisgIChuYW1lIGgtZ3IpCisgIChjb21tZW50ICJnZW5lcmFsIHJlZ2lzdGVycyIpCisgIChhdHRycyBQUk9GSUxFIENBQ0hFLUFERFIpCisgICh0eXBlIHJlZ2lzdGVyIFdJICgxNikpCisgIChpbmRpY2VzIGV4dGVybi1rZXl3b3JkIGdyLW5hbWVzKQorKQorCisoZGVmaW5lLWtleXdvcmQKKyAgKG5hbWUgY3ItbmFtZXMpCisgIChwcmludC1uYW1lIGgtY3IpCisgIChwcmVmaXggIiIpCisgICh2YWx1ZXMgKHBzdyAwKSAgIChjYnIgMSkgICAoc3BpIDIpICAgKHNwdSAzKQorCSAgKGJwYyA2KSAgIChiYnBzdyA4KSAoYmJwYyAxNCkgKGV2YiA1KQorCSAgKGNyMCAwKSAgIChjcjEgMSkgICAoY3IyIDIpICAgKGNyMyAzKQorCSAgKGNyNCA0KSAgIChjcjUgNSkgICAoY3I2IDYpICAgKGNyNyA3KQorCSAgKGNyOCA4KSAgIChjcjkgOSkgICAoY3IxMCAxMCkgKGNyMTEgMTEpCisJICAoY3IxMiAxMikgKGNyMTMgMTMpIChjcjE0IDE0KSAoY3IxNSAxNSkpCispCisKKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC1jcikKKyAgKGNvbW1lbnQgImNvbnRyb2wgcmVnaXN0ZXJzIikKKyAgKHR5cGUgcmVnaXN0ZXIgVVdJICgxNikpCisgIChpbmRpY2VzIGV4dGVybi1rZXl3b3JkIGNyLW5hbWVzKQorICAoZ2V0IChpbmRleCkgKGMtY2FsbCBVV0kgIkBjcHVAX2hfY3JfZ2V0X2hhbmRsZXIiIGluZGV4KSkKKyAgKHNldCAoaW5kZXggbmV3dmFsKSAoYy1jYWxsIFZPSUQgIkBjcHVAX2hfY3Jfc2V0X2hhbmRsZXIiIGluZGV4IG5ld3ZhbCkpCispCisKKzsgVGhlIGFjdHVhbCBhY2N1bXVsYXRvciBpcyBvbmx5IDU2IGJpdHMuCis7IFRoZSB0b3AgOCBiaXRzIGFyZSBzaWduIGV4dGVuZGVkIGZyb20gYml0IDggKHdoZW4gY291bnRpbmcgbXNiID0gYml0IDApLgorOyBUbyBzaW1wbGlmeSB0aGUgYWNjdW11bGF0b3IgaW5zdHJ1Y3Rpb25zLCBubyBhdHRlbXB0IGlzIG1hZGUgdG8ga2VlcCB0aGUKKzsgdG9wIDggYml0cyBwcm9wZXJseSBzaWduIGV4dGVuZGVkIChjdXJyZW50bHkgdGhlcmUncyBubyBwb2ludCBzaW5jZSB0aGV5Cis7IGFsbCBpZ25vcmUgdGhlbSkuICBXaGVuIHRoZSB2YWx1ZSBpcyByZWFkIGl0IGlzIHByb3Blcmx5IHNpZ24gZXh0ZW5kZWQKKzsgW2luIHRoZSBgZ2V0JyBoYW5kbGVyXS4KKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC1hY2N1bSkKKyAgKGNvbW1lbnQgImFjY3VtdWxhdG9yIikKKyAgKHR5cGUgcmVnaXN0ZXIgREkpCisgIChnZXQgKCkgKGMtY2FsbCBESSAiQGNwdUBfaF9hY2N1bV9nZXRfaGFuZGxlciIpKQorICAoc2V0IChuZXd2YWwpIChjLWNhbGwgVk9JRCAiQGNwdUBfaF9hY2N1bV9zZXRfaGFuZGxlciIgbmV3dmFsKSkKKykKKworOyBGSVhNRTogUmV2aXNpdCBhZnRlciBzYW5pdGl6YXRpb24gY2FuIGJlIHJlbW92ZWQuICBSZW1vdmUgaC1hY2N1bS4KKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC1hY2N1bXMpCisgIChjb21tZW50ICJhY2N1bXVsYXRvcnMiKQorICAoYXR0cnMgKE1BQ0ggbTMycngsbTMycjIpKQorICAodHlwZSByZWdpc3RlciBESSAoMikpCisgIChpbmRpY2VzIGtleXdvcmQgIiIgKChhMCAwKSAoYTEgMSkpKQorICA7IGdldC9zZXQgc28gYTAgYWNjZXNzZXMgYXJlIHJlZGlyZWN0ZWQgdG8gaC1hY2N1bS4KKyAgOyBUaGV5J3JlIGFsc28gc28gcmVhZHMgY2FuIHByb3Blcmx5IHNpZ24gZXh0ZW5kIHRoZSB2YWx1ZS4KKyAgOyBGSVhNRTogTmVlZG4ndCBiZSBhIGZ1bmN0aW9uIGNhbGwuCisgIChnZXQgKGluZGV4KSAoYy1jYWxsIERJICJAY3B1QF9oX2FjY3Vtc19nZXRfaGFuZGxlciIgaW5kZXgpKQorICAoc2V0IChpbmRleCBuZXd2YWwpIChjLWNhbGwgVk9JRCAiQGNwdUBfaF9hY2N1bXNfc2V0X2hhbmRsZXIiIGluZGV4IG5ld3ZhbCkpCispCisKKzsgRm9yIGNvbmRiaXQgb3BlcmFuZC4gIEZJWE1FOiBOZWVkIHRvIGFsbG93IHNwZWMgb2YgZ2V0L3NldCBvZiBvcGVyYW5kcy4KKzsgSGF2aW5nIHRoaXMgc2VwYXJhdGUgZnJvbSBoLXBzdyBrZWVwcyB0aGUgcGFydHMgdGhhdCB1c2UgaXQgc2ltcGxlcgorOyBbc2luY2UgdGhleSBncmVhdGx5IG91dG51bWJlciB0aG9zZSB0aGF0IHVzZSBoLXBzd10uCisoZHNoIGgtY29uZCAiY29uZGl0aW9uIGJpdCIgKCkgKHJlZ2lzdGVyIEJJKSkKKworOyBUaGUgYWN0dWFsIHZhbHVlcyBvZiBwc3csYnBzdyxiYnBzdyBhcmUgcmVjb3JkZWQgaGVyZSB0byBhbGxvdyBhY2Nlc3MKKzsgdG8gdGhlbSBhcyBhIHVuaXQuCisoZGVmaW5lLWhhcmR3YXJlCisgIChuYW1lIGgtcHN3KQorICAoY29tbWVudCAicHN3IHBhcnQgb2YgcHN3IikKKyAgKHR5cGUgcmVnaXN0ZXIgVVFJKQorICA7IGdldC9zZXQgdG8gaGFuZGxlIGNvbmQgYml0LgorICA7IEZJWE1FOiBtaXNzaW5nOiB1c2UncyBhbmQgY2xvYmJlcidzCisgIDsgRklYTUU6IHJlbW92ZSBjLWNhbGw/CisgIChnZXQgKCkgKGMtY2FsbCBVUUkgIkBjcHVAX2hfcHN3X2dldF9oYW5kbGVyIikpCisgIChzZXQgKG5ld3ZhbCkgKGMtY2FsbCBWT0lEICJAY3B1QF9oX3Bzd19zZXRfaGFuZGxlciIgbmV3dmFsKSkKKykKKyhkc2ggaC1icHN3ICAiYmFja3VwIHBzdyIgICAgICAoKSAocmVnaXN0ZXIgVVFJKSkKKyhkc2ggaC1iYnBzdyAiYmFja3VwIGJwc3ciICAgICAoKSAocmVnaXN0ZXIgVVFJKSkKKworOyBGSVhNRTogTGF0ZXIgbWFrZSBhZGQgZ2V0L3NldCBzcGVjcyBhbmQgc3VwcG9ydCBTTVAuCisoZHNoIGgtbG9jayAgImxvY2siICAoKSAocmVnaXN0ZXIgQkkpKQorDAorOyBJbnN0cnVjdGlvbiBPcGVyYW5kcy4KKzsgVGhlc2UgZW50cmllcyBwcm92aWRlIGEgbGF5ZXIgYmV0d2VlbiB0aGUgYXNzZW1ibGVyIGFuZCB0aGUgcmF3IGhhcmR3YXJlCis7IGRlc2NyaXB0aW9uLCBhbmQgYXJlIHVzZWQgdG8gcmVmZXIgdG8gaGFyZHdhcmUgZWxlbWVudHMgaW4gdGhlIHNlbWFudGljCis7IGNvZGUuICBVc3VhbGx5IHRoZXJlJ3MgYSBiaXQgb2Ygb3Zlci1zcGVjaWZpY2F0aW9uLCBidXQgaW4gbW9yZSBjb21wbGljYXRlZAorOyBpbnN0cnVjdGlvbiBzZXRzIHRoZXJlIGlzbid0LgorCis7IE0zMlIgc3BlY2lmaWMgb3BlcmFuZCBhdHRyaWJ1dGVzOgorCisoZGVmaW5lLWF0dHIKKyAgKGZvciBvcGVyYW5kKQorICAodHlwZSBib29sZWFuKQorICAobmFtZSBIQVNILVBSRUZJWCkKKyAgKGNvbW1lbnQgImltbWVkaWF0ZXMgaGF2ZSBhbiBvcHRpb25hbCAnIycgcHJlZml4IikKKykKKworOyA/Pz8gQ29udmVudGlvbiBzYXlzIHRoaXMgc2hvdWxkIGJlIG8tc3IsIGJ1dCB0aGVuIHRoZSBpbnNuIGRlZmluaXRpb25zCis7IHNob3VsZCByZWZlciB0byBvLXNyIHdoaWNoIGlzIGNsdW1zeS4gIFRoZSAiby0iIGNvdWxkIGJlIGltcGxpY2l0LCBidXQKKzsgdGhlbiBpdCBzaG91bGQgYmUgaW1wbGljaXQgZm9yIGFsbCB0aGUgc3ltYm9scyBoZXJlLCBidXQgdGhlbiB0aGVyZSB3b3VsZAorOyBiZSBjb25mdXNpb24gYmV0d2VlbiAoZi0pc2ltbTggYW5kIChoLSlzaW1tOC4KKzsgU28gZm9yIG5vdyB0aGUgcnVsZSBpcyBleGFjdGx5IGFzIGl0IGFwcGVhcnMgaGVyZS4KKworKGRub3Agc3IgICAgICJzb3VyY2UgcmVnaXN0ZXIiICAgICAgICAgICAgICAoKSBoLWdyICAgZi1yMikKKyhkbm9wIGRyICAgICAiZGVzdGluYXRpb24gcmVnaXN0ZXIiICAgICAgICAgKCkgaC1nciAgIGYtcjEpCis7OyBUaGUgYXNzZW1ibGVyIHJlbGllcyB1cG9uIHRoZSBmYWN0IHRoYXQgZHIgYW5kIHNyYzEgYXJlIHRoZSBzYW1lIGZpZWxkLgorOzsgRklYTUU6IFJldmlzaXQuCisoZG5vcCBzcmMxICAgInNvdXJjZSByZWdpc3RlciAxIiAgICAgICAgICAgICgpIGgtZ3IgICBmLXIxKQorKGRub3Agc3JjMiAgICJzb3VyY2UgcmVnaXN0ZXIgMiIgICAgICAgICAgICAoKSBoLWdyICAgZi1yMikKKyhkbm9wIHNjciAgICAic291cmNlIGNvbnRyb2wgcmVnaXN0ZXIiICAgICAgKCkgaC1jciAgIGYtcjIpCisoZG5vcCBkY3IgICAgImRlc3RpbmF0aW9uIGNvbnRyb2wgcmVnaXN0ZXIiICgpIGgtY3IgICBmLXIxKQorCisoZG5vcCBzaW1tOCAgIjggYml0IHNpZ25lZCBpbW1lZGlhdGUiICAgICAgIChIQVNILVBSRUZJWCkgaC1zaW50IGYtc2ltbTgpCisoZG5vcCBzaW1tMTYgIjE2IGJpdCBzaWduZWQgaW1tZWRpYXRlIiAgICAgIChIQVNILVBSRUZJWCkgaC1zaW50IGYtc2ltbTE2KQorKGRub3AgdWltbTMgICIzIGJpdCB1bnNpZ25lZCBudW1iZXIiICAgICAgICAoSEFTSC1QUkVGSVgpIGgtdWludCBmLXVpbW0zKQorKGRub3AgdWltbTQgICI0IGJpdCB0cmFwIG51bWJlciIgICAgICAgICAgICAoSEFTSC1QUkVGSVgpIGgtdWludCBmLXVpbW00KQorKGRub3AgdWltbTUgICI1IGJpdCBzaGlmdCBjb3VudCIgICAgICAgICAgICAoSEFTSC1QUkVGSVgpIGgtdWludCBmLXVpbW01KQorKGRub3AgdWltbTggICI4IGJpdCB1bnNpZ25lZCBpbW1lZGlhdGUiICAgICAoSEFTSC1QUkVGSVgpIGgtdWludCBmLXVpbW04KQorKGRub3AgdWltbTE2ICIxNiBiaXQgdW5zaWduZWQgaW1tZWRpYXRlIiAgICAoSEFTSC1QUkVGSVgpIGgtdWludCBmLXVpbW0xNikKKworKGRub3AgaW1tMSAgICIxIGJpdCBpbW1lZGlhdGUiICAgICAgICAgICAgICAoKE1BQ0ggbTMycngsbTMycjIpIEhBU0gtUFJFRklYKSBoLXVpbnQgZi1pbW0xKQorKGRub3AgYWNjZCAgICJhY2N1bXVsYXRvciBkZXN0aW5hdGlvbiByZWdpc3RlciIgKChNQUNIIG0zMnJ4LG0zMnIyKSkgICAgICAgIGgtYWNjdW1zIGYtYWNjZCkKKyhkbm9wIGFjY3MgICAiYWNjdW11bGF0b3Igc291cmNlIHJlZ2lzdGVyIiAgKChNQUNIIG0zMnJ4LG0zMnIyKSkgICAgICAgICAgICBoLWFjY3VtcyBmLWFjY3MpCisoZG5vcCBhY2MgICAgImFjY3VtdWxhdG9yIHJlZyAoZCkiICAgICAgICAgICgoTUFDSCBtMzJyeCxtMzJyMikpICAgICAgICAgICAgaC1hY2N1bXMgZi1hY2MpCisKKzsgc2xvMTYsdWxvMTYgYXJlIHVzZWQgaW4gYm90aCB3aXRoLWhhc2gtcHJlZml4L25vLWhhc2gtcHJlZml4IGNhc2VzLgorOyBlLmcuIGFkZDMgcjMscjMsIzEgYW5kIGxkIHIzLEAoNCxyNCkuICBXZSBjb3VsZCB1c2UgSEFTSC1QUkVGSVguCis7IEluc3RlYWQgd2UgY3JlYXRlIGEgZmFrZSBvcGVyYW5kIGBoYXNoJy4gIFRoZSBtMzJyIGlzIGFuIGlsbHVzdHJhdGlvbiBwb3J0LAorOyBzbyB3ZSBvZnRlbiB0cnkgb3V0IHZhcmlvdXMgd2F5cyBvZiBkb2luZyB0aGluZ3MuCisKKyhkZWZpbmUtb3BlcmFuZCAobmFtZSBoYXNoKSAoY29tbWVudCAiIyBwcmVmaXgiKSAoYXR0cnMpCisgICh0eXBlIGgtc2ludCkgOyBkb2Vzbid0IHJlYWxseSBtYXR0ZXIKKyAgKGluZGV4IGYtbmlsKQorICAoaGFuZGxlcnMgKHBhcnNlICJoYXNoIikgKHByaW50ICJoYXNoIikpCispCisKKzsgRm9yIGhpZ2goZm9vKSxzaGlnaChmb28pLgorKGRlZmluZS1vcGVyYW5kCisgIChuYW1lIGhpMTYpCisgIChjb21tZW50ICJoaWdoIDE2IGJpdCBpbW1lZGlhdGUsIHNpZ24gb3B0aW9uYWwiKQorICAoYXR0cnMpCisgICh0eXBlIGgtaGkxNikKKyAgKGluZGV4IGYtaGkxNikKKyAgKGhhbmRsZXJzIChwYXJzZSAiaGkxNiIpKQorKQorCis7IEZvciBsb3coZm9vKSxzZGEoZm9vKS4KKyhkZWZpbmUtb3BlcmFuZAorICAobmFtZSBzbG8xNikKKyAgKGNvbW1lbnQgIjE2IGJpdCBzaWduZWQgaW1tZWRpYXRlLCBmb3IgbG93KCkiKQorICAoYXR0cnMpCisgICh0eXBlIGgtc2xvMTYpCisgIChpbmRleCBmLXNpbW0xNikKKyAgKGhhbmRsZXJzIChwYXJzZSAic2xvMTYiKSkKKykKKworOyBGb3IgbG93KGZvbykuCisoZGVmaW5lLW9wZXJhbmQKKyAgKG5hbWUgdWxvMTYpCisgIChjb21tZW50ICIxNiBiaXQgdW5zaWduZWQgaW1tZWRpYXRlLCBmb3IgbG93KCkiKQorICAoYXR0cnMpCisgICh0eXBlIGgtdWxvMTYpCisgIChpbmRleCBmLXVpbW0xNikKKyAgKGhhbmRsZXJzIChwYXJzZSAidWxvMTYiKSkKKykKKworKGRub3AgdWltbTI0ICIyNCBiaXQgYWRkcmVzcyIgKEhBU0gtUFJFRklYKSBoLWFkZHIgZi11aW1tMjQpCisKKyhkZWZpbmUtb3BlcmFuZAorICAobmFtZSBkaXNwOCkKKyAgKGNvbW1lbnQgIjggYml0IGRpc3BsYWNlbWVudCIpCisgIChhdHRycyBSRUxBWCkKKyAgKHR5cGUgaC1pYWRkcikKKyAgKGluZGV4IGYtZGlzcDgpCisgIDsgPz8/IEVhcmx5IGV4cGVyaW1lbnRzIGhhZCBpbnNlcnQvZXh0cmFjdCBmaWVsZHMgaGVyZS4KKyAgOyBNb3ZpbmcgdGhlc2UgdG8gZi1kaXNwOCBtYWRlIHRoaW5ncyBjbGVhbmVyLCBidXQgbWF5IHdpc2ggdG8gcmUtaW50cm9kdWNlCisgIDsgZmllbGRzIGhlcmUgdG8gaGFuZGxlIG1vcmUgY29tcGxpY2F0ZWQgY2FzZXMuCispCisKKyhkbm9wIGRpc3AxNiAiMTYgYml0IGRpc3BsYWNlbWVudCIgKCkgaC1pYWRkciBmLWRpc3AxNikKKyhkbm9wIGRpc3AyNCAiMjQgYml0IGRpc3BsYWNlbWVudCIgKFJFTEFYKSBoLWlhZGRyIGYtZGlzcDI0KQorCis7IFRoZXNlIGhhcmR3YXJlIGVsZW1lbnRzIGFyZSByZWZlcmVkIHRvIGZyZXF1ZW50bHkuCisKKyhkbm9wIGNvbmRiaXQgImNvbmRpdGlvbiBiaXQiIChTRU0tT05MWSkgaC1jb25kIGYtbmlsKQorKGRub3AgYWNjdW0gImFjY3VtdWxhdG9yIiAoU0VNLU9OTFkpIGgtYWNjdW0gZi1uaWwpCisMCis7IEluc3RydWN0aW9uIGRlZmluaXRpb25zLgorOworOyBOb3RlcyB3aGlsZSB3aXA6Cis7IC0gZG5pIGlzIGEgY292ZXIgbWFjcm8gdG8gdGhlIHJlYWwgInRoaXMgaXMgYW4gaW5zdHJ1Y3Rpb24iIGtleXdvcmQuCis7ICAgVGhlIHN5bnRheCBvZiB0aGUgcmVhbCBvbmUgaXMgeWV0IHRvIGJlIGRldGVybWluZWQuCis7ICAgQXQgdGhlIGxvd2VzdCBsZXZlbCAoaS5lLiB0aGUgInJlYWwiIG9uZSkgaXQgd2lsbCBwcm9iYWJseSB0YWtlIGEgdmFyaWFibGUKKzsgICBsaXN0IG9mIGFyZ3VtZW50cyB3aGVyZSBlYWNoIGFyZ3VtZW50IFtwZXJoYXBzIGFmdGVyIHRoZSBzdGFuZGFyZCB0aHJlZSBvZgorOyAgIG5hbWUsIGNvbW1lbnQsIGF0dHJzXSBpcyAiKGtleXdvcmQgYXJnLXRvLWtleXdvcmQpIi4gIFRoaXMgc3ludGF4IGlzIHNpbXBsZQorOyAgIGFuZCB5ZXQgY29tcGxldGVseSB1cHdhcmQgZXh0ZW5zaWJsZS4gIEFuZCBnaXZlbiB0aGUgbWFjcm8gZmFjaWxpdHksIG9uZQorOyAgIG5lZWRuJ3QgY29kZSBhdCB0aGF0IGxvdyBhIGxldmVsIHNvIGV2ZW4gdGhvdWdoIGl0J2xsIGJlIG1vcmUgdmVyYm9zZSB0aGFuCis7ICAgbmVjZXNzYXJ5IGl0IHdvbid0IG1hdHRlci4gIFRoaXMgc2FtZSByZWFzb25pbmcgY2FuIGJlIGFwcGxpZWQgdG8gbW9zdAorOyAgIHR5cGVzIG9mIGVudHJpZXMgaW4gdGhpcyBmaWxlLgorCis7IE0zMlIgc3BlY2lmaWMgaW5zdHJ1Y3Rpb24gYXR0cmlidXRlczoKKworOyBGSUxMLVNMT1Q6IE5lZWQgbmV4dCBpbnNuIHRvIGJlZ2luIG9uIDMyIGJpdCBib3VuZGFyeS4KKzsgKEEgInNsb3QiIGFzIHVzZWQgaGVyZSBpcyBhIDMyIGJpdCBxdWFudGl0eSB0aGF0IGNhbiBlaXRoZXIgYmUgZmlsbGVkIHdpdGgKKzsgb25lIDMyIGJpdCBpbnNuIG9yIHR3byAxNiBiaXQgaW5zbnMgd2hpY2ggZ28gaW4gdGhlICJsZWZ0IGJpbiIgYW5kICJyaWdodAorOyBiaW4iIHdoZXJlIHRoZSBsZWZ0IGJpbiBpcyB0aGUgb25lIHdpdGggYSBsb3dlciBhZGRyZXNzKS4KKworKGRlZmluZS1hdHRyCisgIChmb3IgaW5zbikKKyAgKHR5cGUgYm9vbGVhbikKKyAgKG5hbWUgRklMTC1TTE9UKQorICAoY29tbWVudCAiZmlsbCByaWdodCBiaW4gd2l0aCBgbm9wJyBpZiBpbnNuIGlzIGluIGxlZnQgYmluIikKKykKKworKGRlZmluZS1hdHRyCisgIChmb3IgaW5zbikKKyAgKHR5cGUgYm9vbGVhbikKKyAgKG5hbWUgU1BFQ0lBTCkKKyAgKGNvbW1lbnQgIm5vbi1wdWJsaWMgbTMycnggaW5zbiIpCispCisKKyhkZWZpbmUtYXR0cgorICAoZm9yIGluc24pCisgICh0eXBlIGJvb2xlYW4pCisgIChuYW1lIFNQRUNJQUxfTTMyUikKKyAgKGNvbW1lbnQgIm5vbi1wdWJsaWMgbTMyciBpbnNuIikKKykKKworKGRlZmluZS1hdHRyCisgIChmb3IgaW5zbikKKyAgKHR5cGUgYm9vbGVhbikKKyAgKG5hbWUgU1BFQ0lBTF9GTE9BVCkKKyAgKGNvbW1lbnQgImZsb2F0aW5nIHBvaW50IGluc24iKQorKQorCis7IElET0MgYXR0cmlidXRlIGZvciBpbnN0cnVjdGlvbiBkb2N1bWVudGF0aW9uLgorCisoZGVmaW5lLWF0dHIKKyAgKGZvciBpbnNuKQorICAodHlwZSBlbnVtKQorICAobmFtZSBJRE9DKQorICAoY29tbWVudCAiaW5zbiBraW5kIGZvciBkb2N1bWVudGF0aW9uIikKKyAgKGF0dHJzIE1FVEEpCisgICh2YWx1ZXMKKyAgIChNRU0gLSAoKSAiTWVtb3J5IikKKyAgIChBTFUgLSAoKSAiQUxVIikKKyAgIChCUiAtICgpICJCcmFuY2giKQorICAgKEFDQ1VNIC0gKCkgIkFjY3VtdWxhdG9yIikKKyAgIChNQUMgLSAoKSAiTXVsdGlwbHkvQWNjdW11bGF0ZSIpCisgICAoTUlTQyAtICgpICJNaXNjZWxsYW5lb3VzIikKKyAgKQorKQorCisoZGVmaW5lLXBtYWNybyAoYmluLW9wIG1uZW1vbmljIG9wMi1vcCBzZW0tb3AgaW1tLXByZWZpeCBpbW0pCisgIChiZWdpbgorICAgICAoZG5pIG1uZW1vbmljCisJICAoLnN0ciBtbmVtb25pYyAiIHJlZy9yZWciKQorCSAgKChQSVBFIE9TKSAoSURPQyBBTFUpKQorCSAgKC5zdHIgbW5lbW9uaWMgIiAkZHIsJHNyIikKKwkgICgrIE9QMV8wIG9wMi1vcCBkciBzcikKKwkgIChzZXQgZHIgKHNlbS1vcCBkciBzcikpCisJICAoKQorICAgICApCisgICAgIChkbmkgKC5zeW0gbW5lbW9uaWMgIjMiKQorCSAgKC5zdHIgbW5lbW9uaWMgIiByZWcvIiBpbW0pCisJICAoKElET0MgQUxVKSkKKwkgICguc3RyIG1uZW1vbmljICIzICRkciwkc3IsIiBpbW0tcHJlZml4ICIkIiBpbW0pCisJICAoKyBPUDFfOCBvcDItb3AgZHIgc3IgaW1tKQorCSAgKHNldCBkciAoc2VtLW9wIHNyIGltbSkpCisJICAoKQorICAgICApCisgICApCispCisoYmluLW9wIGFkZCBPUDJfMTAgYWRkICIkaGFzaCIgc2xvMTYpCis7IHN1YiBpc24ndCBwcmVzZW50IGJlY2F1c2Ugc3ViMyBkb2Vzbid0IGV4aXN0LgorKGJpbi1vcCBhbmQgT1AyXzEyIGFuZCAiIiB1aW1tMTYpCisoYmluLW9wIG9yIE9QMl8xNCBvciAiJGhhc2giIHVsbzE2KQorKGJpbi1vcCB4b3IgT1AyXzEzIHhvciAiIiB1aW1tMTYpCisKKyhkbmkgYWRkaSAiYWRkaSIKKyAgICAgKChQSVBFIE9TKSAoSURPQyBBTFUpKQorICAgICA7Iy4oc3RyaW5nLWFwcGVuZCAiYWRkaSAiICIkZHIsJHNpbW04IikgOyAjLiBleHBlcmltZW50CisgICAgICJhZGRpICRkciwkc2ltbTgiCisgICAgICgrIE9QMV80IGRyIHNpbW04KQorICAgICAoc2V0IGRyIChhZGQgZHIgc2ltbTgpKQorICAgICAoKG0zMnIvZCAodW5pdCB1LWV4ZWMpKQorICAgICAgKG0zMnJ4ICh1bml0IHUtZXhlYykpCisgICAgICAobTMycjIgKHVuaXQgdS1leGVjKSkpCispCisKKyhkbmkgYWRkdiAiYWRkdiIKKyAgICAgKChQSVBFIE9TKSAoSURPQyBBTFUpKQorICAgICAiYWRkdiAkZHIsJHNyIgorICAgICAoKyBPUDFfMCBPUDJfOCBkciBzcikKKyAgICAgKHBhcmFsbGVsICgpCisJICAgICAgIChzZXQgZHIgKGFkZCBkciBzcikpCisJICAgICAgIChzZXQgY29uZGJpdCAoYWRkLW9mbGFnIGRyIHNyIChjb25zdCAwKSkpKQorICAgICAoKQorKQorCisoZG5pIGFkZHYzICJhZGR2MyIKKyAgICAgKChJRE9DIEFMVSkpCisgICAgICJhZGR2MyAkZHIsJHNyLCRzaW1tMTYiCisgICAgICgrIE9QMV84IE9QMl84IGRyIHNyIHNpbW0xNikKKyAgICAgKHBhcmFsbGVsICgpCisJICAgICAgIChzZXQgZHIgKGFkZCBzciBzaW1tMTYpKQorCSAgICAgICAoc2V0IGNvbmRiaXQgKGFkZC1vZmxhZyBzciBzaW1tMTYgKGNvbnN0IDApKSkpCisgICAgICgpCispCisKKyhkbmkgYWRkeCAiYWRkeCIKKyAgICAgKChQSVBFIE9TKSAoSURPQyBBTFUpKQorICAgICAiYWRkeCAkZHIsJHNyIgorICAgICAoKyBPUDFfMCBPUDJfOSBkciBzcikKKyAgICAgKHBhcmFsbGVsICgpCisJICAgICAgIChzZXQgZHIgKGFkZGMgZHIgc3IgY29uZGJpdCkpCisJICAgICAgIChzZXQgY29uZGJpdCAoYWRkLWNmbGFnIGRyIHNyIGNvbmRiaXQpKSkKKyAgICAgKCkKKykKKworKGRuaSBiYzggImJjIHdpdGggOCBiaXQgZGlzcGxhY2VtZW50IgorICAgICAoQ09ORC1DVEkgKFBJUEUgTykgKElET0MgQlIpKQorICAgICAiYmMucyAkZGlzcDgiCisgICAgICgrIE9QMV83IChmLXIxIDEyKSBkaXNwOCkKKyAgICAgKGlmIGNvbmRiaXQgKHNldCBwYyBkaXNwOCkpCisgICAgICgobTMyci9kICh1bml0IHUtY3RpKSkKKyAgICAgIChtMzJyeCAodW5pdCB1LWN0aSkpCisgICAgICAobTMycjIgKHVuaXQgdS1jdGkpKSkKKykKKworKGRubWkgYmM4ciAicmVsYXhhYmxlIGJjOCIKKyAgICAgKENPTkQtQ1RJIFJFTEFYQUJMRSAoUElQRSBPKSAoSURPQyBCUikpCisgICAgICJiYyAkZGlzcDgiCisgICAgIChlbWl0IGJjOCBkaXNwOCkKKykKKworKGRuaSBiYzI0ICJiYyB3aXRoIDI0IGJpdCBkaXNwbGFjZW1lbnQiCisgICAgIChDT05ELUNUSSAoSURPQyBCUikpCisgICAgICJiYy5sICRkaXNwMjQiCisgICAgICgrIE9QMV8xNSAoZi1yMSAxMikgZGlzcDI0KQorICAgICAoaWYgY29uZGJpdCAoc2V0IHBjIGRpc3AyNCkpCisgICAgICgobTMyci9kICh1bml0IHUtY3RpKSkKKyAgICAgIChtMzJyeCAodW5pdCB1LWN0aSkpCisgICAgICAobTMycjIgKHVuaXQgdS1jdGkpKSkKKykKKworKGRubWkgYmMyNHIgInJlbGF4YWJsZSBiYzI0IgorICAgICAoQ09ORC1DVEkgUkVMQVhFRCAoSURPQyBCUikpCisgICAgICJiYyAkZGlzcDI0IgorICAgICAoZW1pdCBiYzI0IGRpc3AyNCkKKykKKworKGRuaSBiZXEgImJlcSIKKyAgICAgKENPTkQtQ1RJIChJRE9DIEJSKSkKKyAgICAgImJlcSAkc3JjMSwkc3JjMiwkZGlzcDE2IgorICAgICAoKyBPUDFfMTEgT1AyXzAgc3JjMSBzcmMyIGRpc3AxNikKKyAgICAgKGlmIChlcSBzcmMxIHNyYzIpIChzZXQgcGMgZGlzcDE2KSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1jdGkpICh1bml0IHUtY21wIChjeWNsZXMgMCkpKQorICAgICAgKG0zMnJ4ICh1bml0IHUtY3RpKSAodW5pdCB1LWNtcCAoY3ljbGVzIDApKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWN0aSkgKHVuaXQgdS1jbXAgKGN5Y2xlcyAwKSkpKQorKQorCisoZGVmaW5lLXBtYWNybyAoY2JyYW5jaCBzeW0gY29tbWVudCBvcDItb3AgY29tcC1vcCkKKyAgKGRuaSBzeW0gY29tbWVudCAoQ09ORC1DVEkgKElET0MgQlIpKQorCSguc3RyIHN5bSAiICRzcmMyLCRkaXNwMTYiKQorCSgrIE9QMV8xMSBvcDItb3AgKGYtcjEgMCkgc3JjMiBkaXNwMTYpCisJKGlmIChjb21wLW9wIHNyYzIgKGNvbnN0IFdJIDApKSAoc2V0IHBjIGRpc3AxNikpCisJKChtMzJyL2QgKHVuaXQgdS1jdGkpICh1bml0IHUtY21wIChjeWNsZXMgMCkpKQorCSAobTMycnggKHVuaXQgdS1jdGkpICh1bml0IHUtY21wIChjeWNsZXMgMCkpKQorCSAobTMycjIgKHVuaXQgdS1jdGkpICh1bml0IHUtY21wIChjeWNsZXMgMCkpKSkKKwkpCispCisoY2JyYW5jaCBiZXF6ICJiZXF6IiBPUDJfOCBlcSkKKyhjYnJhbmNoIGJnZXogImJnZXoiIE9QMl8xMSBnZSkKKyhjYnJhbmNoIGJndHogImJndHoiIE9QMl8xMyBndCkKKyhjYnJhbmNoIGJsZXogImJsZXoiIE9QMl8xMiBsZSkKKyhjYnJhbmNoIGJsdHogImJsdHoiIE9QMl8xMCBsdCkKKyhjYnJhbmNoIGJuZXogImJuZXoiIE9QMl85IG5lKQorCisoZG5pIGJsOCAiYmwgd2l0aCA4IGJpdCBkaXNwbGFjZW1lbnQiCisgICAgIChVTkNPTkQtQ1RJIEZJTEwtU0xPVCAoUElQRSBPKSAoSURPQyBCUikpCisgICAgICJibC5zICRkaXNwOCIKKyAgICAgKCsgT1AxXzcgKGYtcjEgMTQpIGRpc3A4KQorICAgICAoc2VxdWVuY2UgKCkKKwkgICAgICAgKHNldCAocmVnIGgtZ3IgMTQpCisJCSAgICAoYWRkIChhbmQgcGMgKGNvbnN0IC00KSkgKGNvbnN0IDQpKSkKKwkgICAgICAgKHNldCBwYyBkaXNwOCkpCisgICAgICgobTMyci9kICh1bml0IHUtY3RpKSkKKyAgICAgIChtMzJyeCAodW5pdCB1LWN0aSkpCisgICAgICAobTMycjIgKHVuaXQgdS1jdGkpKSkKKykKKworKGRubWkgYmw4ciAicmVsYXhhYmxlIGJsOCIKKyAgICAgKFVOQ09ORC1DVEkgRklMTC1TTE9UIFJFTEFYQUJMRSAoUElQRSBPKSAoSURPQyBCUikpCisgICAgICJibCAkZGlzcDgiCisgICAgIChlbWl0IGJsOCBkaXNwOCkKKykKKworKGRuaSBibDI0ICJibCB3aXRoIDI0IGJpdCBkaXNwbGFjZW1lbnQiCisgICAgIChVTkNPTkQtQ1RJIChJRE9DIEJSKSkKKyAgICAgImJsLmwgJGRpc3AyNCIKKyAgICAgKCsgT1AxXzE1IChmLXIxIDE0KSBkaXNwMjQpCisgICAgIChzZXF1ZW5jZSAoKQorCSAgICAgICAoc2V0IChyZWcgaC1nciAxNCkgKGFkZCBwYyAoY29uc3QgNCkpKQorCSAgICAgICAoc2V0IHBjIGRpc3AyNCkpCisgICAgICgobTMyci9kICh1bml0IHUtY3RpKSkKKyAgICAgIChtMzJyeCAodW5pdCB1LWN0aSkpCisgICAgICAobTMycjIgKHVuaXQgdS1jdGkpKSkKKykKKworKGRubWkgYmwyNHIgInJlbGF4YWJsZSBibDI0IgorICAgICAoVU5DT05ELUNUSSBSRUxBWEVEIChJRE9DIEJSKSkKKyAgICAgImJsICRkaXNwMjQiCisgICAgIChlbWl0IGJsMjQgZGlzcDI0KQorKQorCisoZG5pIGJjbDggImJjbCB3aXRoIDggYml0IGRpc3BsYWNlbWVudCIKKyAgICAgKENPTkQtQ1RJIEZJTEwtU0xPVCAoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgTykgKElET0MgQlIpKQorICAgICAiYmNsLnMgJGRpc3A4IgorICAgICAoKyBPUDFfNyAoZi1yMSA4KSBkaXNwOCkKKyAgICAgKGlmIGNvbmRiaXQKKyAgICAgICAgIChzZXF1ZW5jZSAoKQorCQkgICAoc2V0IChyZWcgaC1nciAxNCkKKwkJCShhZGQgKGFuZCBwYyAoY29uc3QgLTQpKQorCQkJICAgICAoY29uc3QgNCkpKQorCQkgICAoc2V0IHBjIGRpc3A4KSkpCisgICAgICgobTMycnggKHVuaXQgdS1jdGkpKQorICAgICAgKG0zMnIyICh1bml0IHUtY3RpKSkpCispCisKKyhkbm1pIGJjbDhyICJyZWxheGFibGUgYmNsOCIKKyAgICAgKENPTkQtQ1RJIEZJTEwtU0xPVCAoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgTykgUkVMQVhBQkxFIChJRE9DIEJSKSkKKyAgICAgImJjbCAkZGlzcDgiCisgICAgIChlbWl0IGJjbDggZGlzcDgpCispCisKKyhkbmkgYmNsMjQgImJjbCB3aXRoIDI0IGJpdCBkaXNwbGFjZW1lbnQiCisgICAgIChDT05ELUNUSSAoTUFDSCBtMzJyeCxtMzJyMikgKElET0MgQlIpKQorICAgICAiYmNsLmwgJGRpc3AyNCIKKyAgICAgKCsgT1AxXzE1IChmLXIxIDgpIGRpc3AyNCkKKyAgICAgKGlmIGNvbmRiaXQKKyAgICAgICAgIChzZXF1ZW5jZSAoKQorCQkgICAoc2V0IChyZWcgaC1nciAxNCkgKGFkZCBwYyAoY29uc3QgNCkpKQorCQkgICAoc2V0IHBjIGRpc3AyNCkpKQorICAgICAoKG0zMnJ4ICh1bml0IHUtY3RpKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWN0aSkpKQorKQorCisoZG5taSBiY2wyNHIgInJlbGF4YWJsZSBiY2wyNCIKKyAgICAgKENPTkQtQ1RJIChNQUNIIG0zMnJ4LG0zMnIyKSBSRUxBWEVEIChJRE9DIEJSKSkKKyAgICAgImJjbCAkZGlzcDI0IgorICAgICAoZW1pdCBiY2wyNCBkaXNwMjQpCispCisKKyhkbmkgYm5jOCAiYm5jIHdpdGggOCBiaXQgZGlzcGxhY2VtZW50IgorICAgICAoQ09ORC1DVEkgKFBJUEUgTykgKElET0MgQlIpKQorICAgICAiYm5jLnMgJGRpc3A4IgorICAgICAoKyBPUDFfNyAoZi1yMSAxMykgZGlzcDgpCisgICAgIChpZiAobm90IGNvbmRiaXQpIChzZXQgcGMgZGlzcDgpKQorICAgICAoKG0zMnIvZCAodW5pdCB1LWN0aSkpCisgICAgICAobTMycnggKHVuaXQgdS1jdGkpKQorICAgICAgKG0zMnIyICh1bml0IHUtY3RpKSkpCispCisKKyhkbm1pIGJuYzhyICJyZWxheGFibGUgYm5jOCIKKyAgICAgKENPTkQtQ1RJIFJFTEFYQUJMRSAoUElQRSBPKSAoSURPQyBCUikpCisgICAgICJibmMgJGRpc3A4IgorICAgICAoZW1pdCBibmM4IGRpc3A4KQorKQorCisoZG5pIGJuYzI0ICJibmMgd2l0aCAyNCBiaXQgZGlzcGxhY2VtZW50IgorICAgICAoQ09ORC1DVEkgKElET0MgQlIpKQorICAgICAiYm5jLmwgJGRpc3AyNCIKKyAgICAgKCsgT1AxXzE1IChmLXIxIDEzKSBkaXNwMjQpCisgICAgIChpZiAobm90IGNvbmRiaXQpIChzZXQgcGMgZGlzcDI0KSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1jdGkpKQorICAgICAgKG0zMnJ4ICh1bml0IHUtY3RpKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWN0aSkpKQorKQorCisoZG5taSBibmMyNHIgInJlbGF4YWJsZSBibmMyNCIKKyAgICAgKENPTkQtQ1RJIFJFTEFYRUQgKElET0MgQlIpKQorICAgICAiYm5jICRkaXNwMjQiCisgICAgIChlbWl0IGJuYzI0IGRpc3AyNCkKKykKKworKGRuaSBibmUgImJuZSIKKyAgICAgKENPTkQtQ1RJIChJRE9DIEJSKSkKKyAgICAgImJuZSAkc3JjMSwkc3JjMiwkZGlzcDE2IgorICAgICAoKyBPUDFfMTEgT1AyXzEgc3JjMSBzcmMyIGRpc3AxNikKKyAgICAgKGlmIChuZSBzcmMxIHNyYzIpIChzZXQgcGMgZGlzcDE2KSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1jdGkpICh1bml0IHUtY21wIChjeWNsZXMgMCkpKQorICAgICAgKG0zMnJ4ICh1bml0IHUtY3RpKSAodW5pdCB1LWNtcCAoY3ljbGVzIDApKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWN0aSkgKHVuaXQgdS1jbXAgKGN5Y2xlcyAwKSkpKQorKQorCisoZG5pIGJyYTggImJyYSB3aXRoIDggYml0IGRpc3BsYWNlbWVudCIKKyAgICAgKFVOQ09ORC1DVEkgRklMTC1TTE9UIChQSVBFIE8pIChJRE9DIEJSKSkKKyAgICAgImJyYS5zICRkaXNwOCIKKyAgICAgKCsgT1AxXzcgKGYtcjEgMTUpIGRpc3A4KQorICAgICAoc2V0IHBjIGRpc3A4KQorICAgICAoKG0zMnIvZCAodW5pdCB1LWN0aSkpCisgICAgICAobTMycnggKHVuaXQgdS1jdGkpKQorICAgICAgKG0zMnIyICh1bml0IHUtY3RpKSkpCispCisKKyhkbm1pIGJyYThyICJyZWxheGFibGUgYnJhOCIKKyAgICAgKFVOQ09ORC1DVEkgRklMTC1TTE9UIFJFTEFYQUJMRSAoUElQRSBPKSAoSURPQyBCUikpCisgICAgICJicmEgJGRpc3A4IgorICAgICAoZW1pdCBicmE4IGRpc3A4KQorKQorCisoZG5pIGJyYTI0ICJicmEgd2l0aCAyNCBkaXNwbGFjZW1lbnQiCisgICAgIChVTkNPTkQtQ1RJIChJRE9DIEJSKSkKKyAgICAgImJyYS5sICRkaXNwMjQiCisgICAgICgrIE9QMV8xNSAoZi1yMSAxNSkgZGlzcDI0KQorICAgICAoc2V0IHBjIGRpc3AyNCkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1jdGkpKQorICAgICAgKG0zMnJ4ICh1bml0IHUtY3RpKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWN0aSkpKQorKQorCisoZG5taSBicmEyNHIgInJlbGF4YWJsZSBicmEyNCIKKyAgICAgKFVOQ09ORC1DVEkgUkVMQVhFRCAoSURPQyBCUikpCisgICAgICJicmEgJGRpc3AyNCIKKyAgICAgKGVtaXQgYnJhMjQgZGlzcDI0KQorKQorCisoZG5pIGJuY2w4ICJibmNsIHdpdGggOCBiaXQgZGlzcGxhY2VtZW50IgorICAgICAoQ09ORC1DVEkgRklMTC1TTE9UIChNQUNIIG0zMnJ4LG0zMnIyKSAoUElQRSBPKSAoSURPQyBCUikpCisgICAgICJibmNsLnMgJGRpc3A4IgorICAgICAoKyBPUDFfNyAoZi1yMSA5KSBkaXNwOCkKKyAgICAgKGlmIChub3QgY29uZGJpdCkgCisgICAgICAgICAoc2VxdWVuY2UgKCkKKwkJICAgKHNldCAocmVnIGgtZ3IgMTQpCisJCQkoYWRkIChhbmQgcGMgKGNvbnN0IC00KSkKKwkJCSAgICAgKGNvbnN0IDQpKSkKKwkJICAgKHNldCBwYyBkaXNwOCkpKQorICAgICAoKG0zMnJ4ICh1bml0IHUtY3RpKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWN0aSkpKQorKQorCisoZG5taSBibmNsOHIgInJlbGF4YWJsZSBibmNsOCIKKyAgICAgKENPTkQtQ1RJIEZJTEwtU0xPVCAoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgTykgUkVMQVhBQkxFIChJRE9DIEJSKSkKKyAgICAgImJuY2wgJGRpc3A4IgorICAgICAoZW1pdCBibmNsOCBkaXNwOCkKKykKKworKGRuaSBibmNsMjQgImJuY2wgd2l0aCAyNCBiaXQgZGlzcGxhY2VtZW50IgorICAgICAoQ09ORC1DVEkgKE1BQ0ggbTMycngsbTMycjIpIChJRE9DIEJSKSkKKyAgICAgImJuY2wubCAkZGlzcDI0IgorICAgICAoKyBPUDFfMTUgKGYtcjEgOSkgZGlzcDI0KQorICAgICAoaWYgKG5vdCBjb25kYml0KQorICAgICAgICAgKHNlcXVlbmNlICgpCisJCSAgIChzZXQgKHJlZyBoLWdyIDE0KSAoYWRkIHBjIChjb25zdCA0KSkpCisJCSAgIChzZXQgcGMgZGlzcDI0KSkpCisgICAgICgobTMycnggKHVuaXQgdS1jdGkpKQorICAgICAgKG0zMnIyICh1bml0IHUtY3RpKSkpCispCisKKyhkbm1pIGJuY2wyNHIgInJlbGF4YWJsZSBibmNsMjQiCisgICAgIChDT05ELUNUSSAoTUFDSCBtMzJyeCxtMzJyMikgUkVMQVhFRCAoSURPQyBCUikpCisgICAgICJibmNsICRkaXNwMjQiCisgICAgIChlbWl0IGJuY2wyNCBkaXNwMjQpCispCisKKyhkbmkgY21wICJjbXAiCisgICAgICgoUElQRSBPUykgKElET0MgQUxVKSkKKyAgICAgImNtcCAkc3JjMSwkc3JjMiIKKyAgICAgKCsgT1AxXzAgT1AyXzQgc3JjMSBzcmMyKQorICAgICAoc2V0IGNvbmRiaXQgKGx0IHNyYzEgc3JjMikpCisgICAgICgobTMyci9kICh1bml0IHUtY21wKSkKKyAgICAgIChtMzJyeCAodW5pdCB1LWNtcCkpCisgICAgICAobTMycjIgKHVuaXQgdS1jbXApKSkKKykKKworKGRuaSBjbXBpICJjbXBpIgorICAgICAoKElET0MgQUxVKSkKKyAgICAgImNtcGkgJHNyYzIsJHNpbW0xNiIKKyAgICAgKCsgT1AxXzggKGYtcjEgMCkgT1AyXzQgc3JjMiBzaW1tMTYpCisgICAgIChzZXQgY29uZGJpdCAobHQgc3JjMiBzaW1tMTYpKQorICAgICAoKG0zMnIvZCAodW5pdCB1LWNtcCkpCisgICAgICAobTMycnggKHVuaXQgdS1jbXApKQorICAgICAgKG0zMnIyICh1bml0IHUtY21wKSkpCispCisKKyhkbmkgY21wdSAiY21wdSIKKyAgICAgKChQSVBFIE9TKSAoSURPQyBBTFUpKQorICAgICAiY21wdSAkc3JjMSwkc3JjMiIKKyAgICAgKCsgT1AxXzAgT1AyXzUgc3JjMSBzcmMyKQorICAgICAoc2V0IGNvbmRiaXQgKGx0dSBzcmMxIHNyYzIpKQorICAgICAoKG0zMnIvZCAodW5pdCB1LWNtcCkpCisgICAgICAobTMycnggKHVuaXQgdS1jbXApKQorICAgICAgKG0zMnIyICh1bml0IHUtY21wKSkpCispCisKKyhkbmkgY21wdWkgImNtcHVpIgorICAgICAoKElET0MgQUxVKSkKKyAgICAgImNtcHVpICRzcmMyLCRzaW1tMTYiCisgICAgICgrIE9QMV84IChmLXIxIDApIE9QMl81IHNyYzIgc2ltbTE2KQorICAgICAoc2V0IGNvbmRiaXQgKGx0dSBzcmMyIHNpbW0xNikpCisgICAgICgobTMyci9kICh1bml0IHUtY21wKSkKKyAgICAgIChtMzJyeCAodW5pdCB1LWNtcCkpCisgICAgICAobTMycjIgKHVuaXQgdS1jbXApKSkKKykKKworKGRuaSBjbXBlcSAiY21wZXEiCisgICAgICgoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgT1MpIChJRE9DIEFMVSkpCisgICAgICJjbXBlcSAkc3JjMSwkc3JjMiIKKyAgICAgKCsgT1AxXzAgT1AyXzYgc3JjMSBzcmMyKQorICAgICAoc2V0IGNvbmRiaXQgKGVxIHNyYzEgc3JjMikpCisgICAgICgobTMycnggKHVuaXQgdS1jbXApKQorICAgICAgKG0zMnIyICh1bml0IHUtY21wKSkpCispCisKKyhkbmkgY21weiAiY21weiIKKyAgICAgKChNQUNIIG0zMnJ4LG0zMnIyKSAoUElQRSBPUykgKElET0MgQUxVKSkKKyAgICAgImNtcHogJHNyYzIiCisgICAgICgrIE9QMV8wIE9QMl83IChmLXIxIDApIHNyYzIpCisgICAgIChzZXQgY29uZGJpdCAoZXEgc3JjMiAoY29uc3QgMCkpKQorICAgICAoKG0zMnJ4ICh1bml0IHUtY21wKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWNtcCkpKQorKQorCisoZG5pIGRpdiAiZGl2IgorICAgICAoKElET0MgQUxVKSkKKyAgICAgImRpdiAkZHIsJHNyIgorICAgICAoKyBPUDFfOSBPUDJfMCBkciBzciAoZi1zaW1tMTYgMCkpCisgICAgIChpZiAobmUgc3IgKGNvbnN0IDApKSAoc2V0IGRyIChkaXYgZHIgc3IpKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1leGVjIChjeWNsZXMgMzcpKSkKKyAgICAgIChtMzJyeCAodW5pdCB1LWV4ZWMgKGN5Y2xlcyAzNykpKQorICAgICAgKG0zMnIyICh1bml0IHUtZXhlYyAoY3ljbGVzIDM3KSkpKQorKQorCisoZG5pIGRpdnUgImRpdnUiCisgICAgICgoSURPQyBBTFUpKQorICAgICAiZGl2dSAkZHIsJHNyIgorICAgICAoKyBPUDFfOSBPUDJfMSBkciBzciAoZi1zaW1tMTYgMCkpCisgICAgIChpZiAobmUgc3IgKGNvbnN0IDApKSAoc2V0IGRyICh1ZGl2IGRyIHNyKSkpCisgICAgICgobTMyci9kICh1bml0IHUtZXhlYyAoY3ljbGVzIDM3KSkpCisgICAgICAobTMycnggKHVuaXQgdS1leGVjIChjeWNsZXMgMzcpKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWV4ZWMgKGN5Y2xlcyAzNykpKSkKKykKKworKGRuaSByZW0gInJlbSIKKyAgICAgKChJRE9DIEFMVSkpCisgICAgICJyZW0gJGRyLCRzciIKKyAgICAgKCsgT1AxXzkgT1AyXzIgZHIgc3IgKGYtc2ltbTE2IDApKQorICAgICA7IEZJWE1FOiBDaGVjayByb3VuZGluZyBkaXJlY3Rpb24uCisgICAgIChpZiAobmUgc3IgKGNvbnN0IDApKSAoc2V0IGRyIChtb2QgZHIgc3IpKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1leGVjIChjeWNsZXMgMzcpKSkKKyAgICAgIChtMzJyeCAodW5pdCB1LWV4ZWMgKGN5Y2xlcyAzNykpKQorICAgICAgKG0zMnIyICh1bml0IHUtZXhlYyAoY3ljbGVzIDM3KSkpKQorKQorCisoZG5pIHJlbXUgInJlbXUiCisgICAgICgoSURPQyBBTFUpKQorICAgICAicmVtdSAkZHIsJHNyIgorICAgICAoKyBPUDFfOSBPUDJfMyBkciBzciAoZi1zaW1tMTYgMCkpCisgICAgIDsgRklYTUU6IENoZWNrIHJvdW5kaW5nIGRpcmVjdGlvbi4KKyAgICAgKGlmIChuZSBzciAoY29uc3QgMCkpIChzZXQgZHIgKHVtb2QgZHIgc3IpKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1leGVjIChjeWNsZXMgMzcpKSkKKyAgICAgIChtMzJyeCAodW5pdCB1LWV4ZWMgKGN5Y2xlcyAzNykpKQorICAgICAgKG0zMnIyICh1bml0IHUtZXhlYyAoY3ljbGVzIDM3KSkpKQorKQorCisoZG5pIHJlbWggInJlbWgiCisgICAgICgoTUFDSCBtMzJyMikpCisgICAgICJyZW1oICRkciwkc3IiCisgICAgICgrIE9QMV85IE9QMl8yIGRyIHNyIChmLXNpbW0xNiAjeDEwKSkKKyAgICAgOyBGSVhNRTogQ2hlY2sgcm91bmRpbmcgZGlyZWN0aW9uLgorICAgICAoaWYgKG5lIHNyIChjb25zdCAwKSkgKHNldCBkciAobW9kIChleHQgV0kgKHRydW5jIEhJIGRyKSkgc3IpKSkKKyAgICAgKChtMzJyMiAodW5pdCB1LWV4ZWMgKGN5Y2xlcyAyMSkpKSkKKykKKworKGRuaSByZW11aCAicmVtdWgiCisgICAgICgoTUFDSCBtMzJyMikpCisgICAgICJyZW11aCAkZHIsJHNyIgorICAgICAoKyBPUDFfOSBPUDJfMyBkciBzciAoZi1zaW1tMTYgI3gxMCkpCisgICAgIDsgRklYTUU6IENoZWNrIHJvdW5kaW5nIGRpcmVjdGlvbi4KKyAgICAgKGlmIChuZSBzciAoY29uc3QgMCkpIChzZXQgZHIgKHVtb2QgZHIgc3IpKSkKKyAgICAgKChtMzJyMiAodW5pdCB1LWV4ZWMgKGN5Y2xlcyAyMSkpKSkKKykKKworKGRuaSByZW1iICJyZW1iIgorICAgICAoKE1BQ0ggbTMycjIpKQorICAgICAicmVtYiAkZHIsJHNyIgorICAgICAoKyBPUDFfOSBPUDJfMiBkciBzciAoZi1zaW1tMTYgI3gxOCkpCisgICAgIDsgRklYTUU6IENoZWNrIHJvdW5kaW5nIGRpcmVjdGlvbi4KKyAgICAgKGlmIChuZSBzciAoY29uc3QgMCkpIChzZXQgZHIgKG1vZCAoZXh0IFdJICh0cnVuYyBCSSBkcikpIHNyKSkpCisgICAgICgobTMycjIgKHVuaXQgdS1leGVjIChjeWNsZXMgMjEpKSkpCispCisKKyhkbmkgcmVtdWIgInJlbXViIgorICAgICAoKE1BQ0ggbTMycjIpKQorICAgICAicmVtdWIgJGRyLCRzciIKKyAgICAgKCsgT1AxXzkgT1AyXzMgZHIgc3IgKGYtc2ltbTE2ICN4MTgpKQorICAgICA7IEZJWE1FOiBDaGVjayByb3VuZGluZyBkaXJlY3Rpb24uCisgICAgIChpZiAobmUgc3IgKGNvbnN0IDApKSAoc2V0IGRyICh1bW9kIGRyIHNyKSkpCisgICAgICgobTMycjIgKHVuaXQgdS1leGVjIChjeWNsZXMgMjEpKSkpCispCisKKyhkbmkgZGl2dWggImRpdnVoIgorICAgICAoKE1BQ0ggbTMycjIpKQorICAgICAiZGl2dWggJGRyLCRzciIKKyAgICAgKCsgT1AxXzkgT1AyXzEgZHIgc3IgKGYtc2ltbTE2ICN4MTApKQorICAgICAoaWYgKG5lIHNyIChjb25zdCAwKSkgKHNldCBkciAodWRpdiBkciBzcikpKQorICAgICAoKG0zMnIyICh1bml0IHUtZXhlYyAoY3ljbGVzIDIxKSkpKQorKQorCisoZG5pIGRpdmIgImRpdmIiCisgICAgICgoTUFDSCBtMzJyMikpCisgICAgICJkaXZiICRkciwkc3IiCisgICAgICgrIE9QMV85IE9QMl8wIGRyIHNyIChmLXNpbW0xNiAjeDE4KSkKKyAgICAgKGlmIChuZSBzciAoY29uc3QgMCkpIChzZXQgZHIgKGRpdiAoZXh0IFdJICh0cnVuYyBCSSBkcikpIHNyKSkpCisgICAgICgobTMycjIgKHVuaXQgdS1leGVjIChjeWNsZXMgMjEpKSkpCispCisKKyhkbmkgZGl2dWIgImRpdnViIgorICAgICAoKE1BQ0ggbTMycjIpKQorICAgICAiZGl2dWIgJGRyLCRzciIKKyAgICAgKCsgT1AxXzkgT1AyXzEgZHIgc3IgKGYtc2ltbTE2ICN4MTgpKQorICAgICAoaWYgKG5lIHNyIChjb25zdCAwKSkgKHNldCBkciAodWRpdiBkciBzcikpKQorICAgICAoKG0zMnIyICh1bml0IHUtZXhlYyAoY3ljbGVzIDIxKSkpKQorKQorCisoZG5pIGRpdmggImRpdmgiCisgICAgICgoTUFDSCBtMzJyeCxtMzJyMikgKElET0MgQUxVKSkKKyAgICAgImRpdmggJGRyLCRzciIKKyAgICAgKCsgT1AxXzkgT1AyXzAgZHIgc3IgKGYtc2ltbTE2ICN4MTApKQorICAgICAoaWYgKG5lIHNyIChjb25zdCAwKSkgKHNldCBkciAoZGl2IChleHQgV0kgKHRydW5jIEhJIGRyKSkgc3IpKSkKKyAgICAgKChtMzJyeCAodW5pdCB1LWV4ZWMgKGN5Y2xlcyAyMSkpKQorICAgICAgKG0zMnIyICh1bml0IHUtZXhlYyAoY3ljbGVzIDIxKSkpKQorKQorCisoZG5pIGpjICJqYyIKKyAgICAgKENPTkQtQ1RJIChNQUNIIG0zMnJ4LG0zMnIyKSAoUElQRSBPKSBTUEVDSUFMIChJRE9DIEJSKSkKKyAgICAgImpjICRzciIKKyAgICAgKCsgT1AxXzEgKGYtcjEgMTIpIE9QMl8xMiBzcikKKyAgICAgKGlmIGNvbmRiaXQgKHNldCBwYyAoYW5kIHNyIChjb25zdCAtNCkpKSkKKyAgICAgKChtMzJyeCAodW5pdCB1LWN0aSkpCisgICAgICAobTMycjIgKHVuaXQgdS1jdGkpKSkKKykKKworKGRuaSBqbmMgImpuYyIKKyAgICAgKENPTkQtQ1RJIChNQUNIIG0zMnJ4LG0zMnIyKSAoUElQRSBPKSBTUEVDSUFMIChJRE9DIEJSKSkKKyAgICAgImpuYyAkc3IiCisgICAgICgrIE9QMV8xIChmLXIxIDEzKSBPUDJfMTIgc3IpCisgICAgIChpZiAobm90IGNvbmRiaXQpIChzZXQgcGMgKGFuZCBzciAoY29uc3QgLTQpKSkpCisgICAgICgobTMycnggKHVuaXQgdS1jdGkpKQorICAgICAgKG0zMnIyICh1bml0IHUtY3RpKSkpCispCisKKyhkbmkgamwgImpsIgorICAgICAoVU5DT05ELUNUSSBGSUxMLVNMT1QgKFBJUEUgTykgKElET0MgQlIpKQorICAgICAiamwgJHNyIgorICAgICAoKyBPUDFfMSAoZi1yMSAxNCkgT1AyXzEyIHNyKQorICAgICAocGFyYWxsZWwgKCkKKwkgICAgICAgKHNldCAocmVnIGgtZ3IgMTQpCisJCSAgICAoYWRkIChhbmQgcGMgKGNvbnN0IC00KSkgKGNvbnN0IDQpKSkKKwkgICAgICAgKHNldCBwYyAoYW5kIHNyIChjb25zdCAtNCkpKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1jdGkpKQorICAgICAgKG0zMnJ4ICh1bml0IHUtY3RpKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWN0aSkpKQorKQorCisoZG5pIGptcCAiam1wIgorICAgICAoVU5DT05ELUNUSSAoUElQRSBPKSAoSURPQyBCUikpCisgICAgICJqbXAgJHNyIgorICAgICAoKyBPUDFfMSAoZi1yMSAxNSkgT1AyXzEyIHNyKQorICAgICAoc2V0IHBjIChhbmQgc3IgKGNvbnN0IC00KSkpCisgICAgIDsgVGhlIGFib3ZlIHdvcmtzIG5vdyBzbyB0aGlzIGtsdWRnZSBoYXMgYmVlbiBjb21tZW50ZWQgb3V0LgorICAgICA7IEl0J3Mga2VwdCBhcm91bmQgYmVjYXVzZSB0aGUgZi1yMSByZWZlcmVuY2UgaW4gdGhlIHNlbWFudGljIHBhcnQKKyAgICAgOyBzaG91bGQgd29yay4KKyAgICAgOyBGSVhNRToga2x1ZGdlLCBpbnN0cnVjdGlvbiBkZWNvZGluZyBub3QgZmluaXNoZWQuCisgICAgIDsgQnV0IHRoaXMgc2hvdWxkIHdvcmssIHNvIHRoYXQncyBhbm90aGVyIEZJWE1FLgorICAgICA7KHNlcXVlbmNlIFZPSUQgKGlmIFZPSUQgKGVxIFNJIGYtcjEgKGNvbnN0IFNJIDE0KSkKKyAgICAgOyBGSVhNRTogYWJ1Zi0+aW5zbiBzaG91bGQgYmUgYSBtYWNybyBvZiBzb21lIHNvcnQuCisgICAgIDsoc2VxdWVuY2UgVk9JRAorICAgICA7CSAgICAgICAoaWYgVk9JRCAoZXEgU0kgKGMtY29kZSBTSSAiKChhYnVmLT5pbnNuID4+IDgpICYgMTUpIikKKyAgICAgOwkJCSAgKGNvbnN0IFNJIDE0KSkKKyAgICAgOwkJICAgKHNldCBXSSAocmVnIFdJIGgtZ3IgMTQpCisgICAgIDsJCQkoYWRkIFdJIChhbmQgV0kgcGMgKGNvbnN0IFdJIC00KSkgKGNvbnN0IFdJIDQpKSkpCisgICAgIDsJICAgICAgIChzZXQgV0kgcGMgc3IpKQorICAgICAoKG0zMnIvZCAodW5pdCB1LWN0aSkpCisgICAgICAobTMycnggKHVuaXQgdS1jdGkpKQorICAgICAgKG0zMnIyICh1bml0IHUtY3RpKSkpCispCisKKyhkZWZpbmUtcG1hY3JvIChuby1leHQtZXhwciBtb2RlIGV4cHIpIGV4cHIpCisoZGVmaW5lLXBtYWNybyAoZXh0LWV4cHIgbW9kZSBleHByKSAoZXh0IG1vZGUgZXhwcikpCisoZGVmaW5lLXBtYWNybyAoemV4dC1leHByIG1vZGUgZXhwcikgKHpleHQgbW9kZSBleHByKSkKKworKGRlZmluZS1wbWFjcm8gKGxvYWQtb3Agc3VmZml4IG9wMi1vcCBtb2RlIGV4dC1vcCkKKyAgKGJlZ2luCisgICAgKGRuaSAoLnN5bSBsZCBzdWZmaXgpICguc3RyICJsZCIgc3VmZml4KQorCSAoKFBJUEUgTykgKElET0MgTUVNKSkKKwkgKC5zdHIgImxkIiBzdWZmaXggIiAkZHIsQCRzciIpCisJICgrIE9QMV8yIG9wMi1vcCBkciBzcikKKwkgKHNldCBkciAoZXh0LW9wIFdJIChtZW0gbW9kZSBzcikpKQorCSAoKG0zMnIvZCAodW5pdCB1LWxvYWQpKQorCSAgKG0zMnJ4ICh1bml0IHUtbG9hZCkpCisJICAobTMycjIgKHVuaXQgdS1sb2FkKSkpCisJICkKKyAgICAoZG5taSAoLnN5bSBsZCBzdWZmaXggIi0yIikgKC5zdHIgImxkIiBzdWZmaXggIi0yIikKKwkgIChOTy1ESVMgKFBJUEUgTykgKElET0MgTUVNKSkKKwkgICguc3RyICJsZCIgc3VmZml4ICIgJGRyLEAoJHNyKSIpCisJICAoZW1pdCAoLnN5bSBsZCBzdWZmaXgpIGRyIHNyKSkKKyAgICAoZG5pICguc3ltIGxkIHN1ZmZpeCAtZCkgKC5zdHIgImxkIiBzdWZmaXggIi1kIikKKwkgKChJRE9DIE1FTSkpCisJICguc3RyICJsZCIgc3VmZml4ICIgJGRyLEAoJHNsbzE2LCRzcikiKQorCSAoKyBPUDFfMTAgb3AyLW9wIGRyIHNyIHNsbzE2KQorCSAoc2V0IGRyIChleHQtb3AgV0kgKG1lbSBtb2RlIChhZGQgc3Igc2xvMTYpKSkpCisJICgobTMyci9kICh1bml0IHUtbG9hZCAoY3ljbGVzIDIpKSkKKwkgIChtMzJyeCAodW5pdCB1LWxvYWQgKGN5Y2xlcyAyKSkpCisJICAobTMycjIgKHVuaXQgdS1sb2FkIChjeWNsZXMgMikpKSkKKwkgKQorICAgIChkbm1pICguc3ltIGxkIHN1ZmZpeCAtZDIpICguc3RyICJsZCIgc3VmZml4ICItZDIiKQorCSAgKE5PLURJUyAoSURPQyBNRU0pKQorCSAgKC5zdHIgImxkIiBzdWZmaXggIiAkZHIsQCgkc3IsJHNsbzE2KSIpCisJICAoZW1pdCAoLnN5bSBsZCBzdWZmaXggLWQpIGRyIHNyIHNsbzE2KSkKKyAgICApCispCisobG9hZC1vcCAiIiBPUDJfMTIgV0kgbm8tZXh0LWV4cHIpCisobG9hZC1vcCBiIE9QMl84IFFJIGV4dC1leHByKQorKGxvYWQtb3AgaCBPUDJfMTAgSEkgZXh0LWV4cHIpCisobG9hZC1vcCB1YiBPUDJfOSBRSSB6ZXh0LWV4cHIpCisobG9hZC1vcCB1aCBPUDJfMTEgSEkgemV4dC1leHByKQorCisoZG5pIGxkLXBsdXMgImxkKyIKKyAgICAgKChQSVBFIE8pIChJRE9DIE1FTSkpCisgICAgICJsZCAkZHIsQCRzcisiCisgICAgICgrIE9QMV8yIGRyIE9QMl8xNCBzcikKKyAgICAgKHBhcmFsbGVsICgpCisJICAgICAgIDsgd2lwOiBtZW1vcnkgYWRkcmVzc2VzIGluIHByb2ZpbGluZyBzdXBwb3J0CisJICAgICAgIDsoc2V0IGRyIChuYW1lIGxkLW1lbSAobWVtIFdJIHNyKSkpCisJICAgICAgIChzZXQgZHIgKG1lbSBXSSBzcikpCisJICAgICAgIChzZXQgc3IgKGFkZCBzciAoY29uc3QgNCkpKSkKKyAgICAgOyBOb3RlOiBgcHJlZCcgaXMgdGhlIGNvbnN0cmFpbnQuICBBbHNvIHVzZWZ1bCBoZXJlIGlzIChyZWYgbmFtZSkKKyAgICAgOyBhbmQgcmV0dXJucyB0cnVlIGlmIG9wZXJhbmQgPG5hbWU+IHdhcyByZWZlcmVuY2VkCisgICAgIDsgKHdoZXJlICJyZWZlcmVuY2VkIiBtZWFucyBfcmVhZF8gaWYgaW5wdXQgb3BlcmFuZCBhbmQgX3dyaXR0ZW5fIGlmCisgICAgIDsgb3V0cHV0IG9wZXJhbmQpLgorICAgICA7IGFyZ3MgdG8gdW5pdCBhcmUgInVuaXQtbmFtZSAobmFtZTEgdmFsdWUxKSAuLi4iCisgICAgIDsgLSBjeWNsZXMoZG9uZSksaXNzdWUscHJlZCBhcmUgYWxzbyBzcGVjaWZpZWQgdGhpcyB3YXkKKyAgICAgOyAtIGlmIHVuc3BlY2lmaWVkLCBkZWZhdWx0IGlzIHVzZWQKKyAgICAgOyAtIGZvciBpbnMvb3V0cywgZXh0cmEgYXJnIGlzIHBhc3NlZCB0aGF0IHNheXMgd2hhdCB3YXMgc3BlY2lmaWVkCisgICAgIDsgICAtIHRoaXMgaXMgQU5EJ2Qgd2l0aCBgd3JpdHRlbicgZm9yIG91dHMKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1sb2FkIChwcmVkIChjb25zdCAxKSkpCisJICAgICAgKHVuaXQgdS1leGVjIChpbiBzciAjZikgKGluIGRyIHNyKSAob3V0IGRyIHNyKSAoY3ljbGVzIDApIChwcmVkIChjb25zdCAxKSkpKQorICAgICAgKG0zMnJ4ICh1bml0IHUtbG9hZCkKKwkgICAgICh1bml0IHUtZXhlYyAoaW4gc3IgI2YpIChpbiBkciBzcikgKG91dCBkciBzcikgKGN5Y2xlcyAwKSAocHJlZCAoY29uc3QgMSkpKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWxvYWQpCisJICAgICAodW5pdCB1LWV4ZWMgKGluIHNyICNmKSAoaW4gZHIgc3IpIChvdXQgZHIgc3IpIChjeWNsZXMgMCkgKHByZWQgKGNvbnN0IDEpKSkpCisgICAgICApCispCisKKyhkbm1pIHBvcCAicG9wIgorICAgICAgKChQSVBFIE8pIChJRE9DIE1FTSkpCisgICAgICAicG9wICRkciIKKyAgICAgIChlbWl0IGxkLXBsdXMgZHIgKHNyIDE1KSkgOyAibGQgJTAsQHNwKyIKKykKKworKGRuaSBsZDI0ICJsZDI0IgorICAgICAoKElET0MgTUVNKSkKKyAgICAgImxkMjQgJGRyLCR1aW1tMjQiCisgICAgICgrIE9QMV8xNCBkciB1aW1tMjQpCisgICAgIChzZXQgZHIgdWltbTI0KQorICAgICAoKQorKQorCis7IGxkaTggYXBwZWFycyBiZWZvcmUgbGRpMTYgc28gd2UgdHJ5IHRoZSBzaG9ydGVyIHZlcnNpb24gZmlyc3QKKworKGRuaSBsZGk4ICJsZGk4IgorICAgICAoKFBJUEUgT1MpIChJRE9DIEFMVSkpCisgICAgICJsZGk4ICRkciwkc2ltbTgiCisgICAgICgrIE9QMV82IGRyIHNpbW04KQorICAgICAoc2V0IGRyIHNpbW04KQorICAgICAoKQorKQorCisoZG5taSBsZGk4YSAibGRpOCBhbGlhcyIKKyAgICAgKChQSVBFIE9TKSAoSURPQyBBTFUpKQorICAgICAibGRpICRkciwkc2ltbTgiCisgICAgIChlbWl0IGxkaTggZHIgc2ltbTgpCispCisKKyhkbmkgbGRpMTYgImxkaTE2IgorICAgICAoKElET0MgQUxVKSkKKyAgICAgImxkaTE2ICRkciwkaGFzaCRzbG8xNiIKKyAgICAgKCsgT1AxXzkgT1AyXzE1IChmLXIyIDApIGRyIHNsbzE2KQorICAgICAoc2V0IGRyIHNsbzE2KQorICAgICAoKQorKQorCisoZG5taSBsZGkxNmEgImxkaTE2IGFsaWFzIgorICAgICAoKElET0MgQUxVKSkKKyAgICAgImxkaSAkZHIsJGhhc2gkc2xvMTYiCisgICAgIChlbWl0IGxkaTE2IGRyIHNsbzE2KQorKQorCisoZG5pIGxvY2sgImxvY2siCisgICAgICgoUElQRSBPKSAoSURPQyBNSVNDKSkKKyAgICAgImxvY2sgJGRyLEAkc3IiCisgICAgICgrIE9QMV8yIE9QMl8xMyBkciBzcikKKyAgICAgKHNlcXVlbmNlICgpCisJICAgICAgIChzZXQgKHJlZyBoLWxvY2spIChjb25zdCBCSSAxKSkKKwkgICAgICAgKHNldCBkciAobWVtIFdJIHNyKSkpCisgICAgICgobTMyci9kICh1bml0IHUtbG9hZCkpCisgICAgICAobTMycnggKHVuaXQgdS1sb2FkKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWxvYWQpKSkKKykKKworKGRuaSBtYWNoaSAibWFjaGkiCisgICAgICgKKyAgICAgIDsgKE1BQ0ggbTMycikgaXMgYSB0ZW1wb3JhcnkgaGFjay4gIFRoaXMgaW5zbiBjb2xsaWRlcyB3aXRoIG1hY2hpLWEKKyAgICAgIDsgaW4gdGhlIHNpbXVsYXRvciBzbyBkaXNhYmxlIGl0IGZvciBtMzJyeC4KKyAgICAgIChNQUNIIG0zMnIpIChQSVBFIFMpIChJRE9DIE1BQykKKyAgICAgKQorICAgICAibWFjaGkgJHNyYzEsJHNyYzIiCisgICAgICgrIE9QMV8zIE9QMl80IHNyYzEgc3JjMikKKyAgICAgOyBGSVhNRTogVFJBQ0VfUkVTVUxUIHdpbGwgcHJpbnQgdGhlIHdyb25nIHRoaW5nIHNpbmNlIHdlCisgICAgIDsgYWx0ZXIgb25lIG9mIHRoZSBhcmd1bWVudHMuCisgICAgIChzZXQgYWNjdW0KKwkgIChzcmEgREkKKwkgICAgICAgKHNsbCBESQorCQkgICAgKGFkZCBESQorCQkJIGFjY3VtCisJCQkgKG11bCBESQorCQkJICAgICAgKGV4dCBESSAoYW5kIFdJIHNyYzEgKGNvbnN0ICN4ZmZmZjAwMDApKSkKKwkJCSAgICAgIChleHQgREkgKHRydW5jIEhJIChzcmEgV0kgc3JjMiAoY29uc3QgMTYpKSkpKSkKKwkJICAgIChjb25zdCA4KSkKKwkgICAgICAgKGNvbnN0IDgpKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1tYWMpKSkKKykKKworKGRuaSBtYWNoaS1hICJtYWNoaS1hIgorICAgICAoKE1BQ0ggbTMycngsbTMycjIpIChQSVBFIFMpIChJRE9DIE1BQykpCisgICAgICJtYWNoaSAkc3JjMSwkc3JjMiwkYWNjIgorICAgICAoKyBPUDFfMyBzcmMxIGFjYyAoZi1vcDIzIDQpIHNyYzIpCisgICAgIChzZXQgYWNjCisJICAoc3JhIERJCisJICAgICAgIChzbGwgREkKKwkJICAgIChhZGQgREkKKwkJCSBhY2MKKwkJCSAobXVsIERJCisJCQkgICAgICAoZXh0IERJIChhbmQgV0kgc3JjMSAoY29uc3QgI3hmZmZmMDAwMCkpKQorCQkJICAgICAgKGV4dCBESSAodHJ1bmMgSEkgKHNyYSBXSSBzcmMyIChjb25zdCAxNikpKSkpKQorCQkgICAgKGNvbnN0IDgpKQorCSAgICAgICAoY29uc3QgOCkpKQorICAgICAoKG0zMnJ4ICh1bml0IHUtbWFjKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LW1hYykpKQorKQorCisoZG5pIG1hY2xvICJtYWNsbyIKKyAgICAgKChNQUNIIG0zMnIpIChQSVBFIFMpIChJRE9DIE1BQykpCisgICAgICJtYWNsbyAkc3JjMSwkc3JjMiIKKyAgICAgKCsgT1AxXzMgT1AyXzUgc3JjMSBzcmMyKQorICAgICAoc2V0IGFjY3VtCisJICAoc3JhIERJCisJICAgICAgIChzbGwgREkKKwkJICAgIChhZGQgREkKKwkJCSBhY2N1bQorCQkJIChtdWwgREkKKwkJCSAgICAgIChleHQgREkgKHNsbCBXSSBzcmMxIChjb25zdCAxNikpKQorCQkJICAgICAgKGV4dCBESSAodHJ1bmMgSEkgc3JjMikpKSkKKwkJICAgIChjb25zdCA4KSkKKwkgICAgICAgKGNvbnN0IDgpKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1tYWMpKSkKKykKKworKGRuaSBtYWNsby1hICJtYWNsby1hIgorICAgICAoKE1BQ0ggbTMycngsbTMycjIpIChQSVBFIFMpIChJRE9DIE1BQykpCisgICAgICJtYWNsbyAkc3JjMSwkc3JjMiwkYWNjIgorICAgICAoKyBPUDFfMyBzcmMxIGFjYyAoZi1vcDIzIDUpIHNyYzIpCisgICAgIChzZXQgYWNjCisJICAoc3JhIERJCisJICAgICAgIChzbGwgREkKKwkJICAgIChhZGQgREkKKwkJCSBhY2MKKwkJCSAobXVsIERJCisJCQkgICAgICAoZXh0IERJIChzbGwgV0kgc3JjMSAoY29uc3QgMTYpKSkKKwkJCSAgICAgIChleHQgREkgKHRydW5jIEhJIHNyYzIpKSkpCisJCSAgICAoY29uc3QgOCkpCisJICAgICAgIChjb25zdCA4KSkpCisgICAgICgobTMycnggKHVuaXQgdS1tYWMpKQorICAgICAgKG0zMnIyICh1bml0IHUtbWFjKSkpCispCisKKyhkbmkgbWFjd2hpICJtYWN3aGkiCisgICAgICgoTUFDSCBtMzJyKSAoUElQRSBTKSAoSURPQyBNQUMpKQorICAgICAibWFjd2hpICRzcmMxLCRzcmMyIgorICAgICAoKyBPUDFfMyBPUDJfNiBzcmMxIHNyYzIpCisgICAgIChzZXQgYWNjdW0KKwkgIChzcmEgREkKKwkgICAgICAgKHNsbCBESQorCQkgICAgKGFkZCBESQorCQkJIGFjY3VtCisJCQkgKG11bCBESQorCQkJICAgICAgKGV4dCBESSBzcmMxKQorCQkJICAgICAgKGV4dCBESSAodHJ1bmMgSEkgKHNyYSBXSSBzcmMyIChjb25zdCAxNikpKSkpKQorCQkgICAgKGNvbnN0IDgpKQorCSAgICAgICAoY29uc3QgOCkpKQorICAgICAoKG0zMnIvZCAodW5pdCB1LW1hYykpKQorKQorCisoZG5pIG1hY3doaS1hICJtYWN3aGktYSIKKyAgICAgKChNQUNIIG0zMnJ4LG0zMnIyKSAoUElQRSBTKSBTUEVDSUFMIChJRE9DIE1BQykpCisgICAgICJtYWN3aGkgJHNyYzEsJHNyYzIsJGFjYyIKKyAgICAgKCsgT1AxXzMgc3JjMSBhY2MgKGYtb3AyMyA2KSBzcmMyKQorICAgICA7IE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgZG8gdGhlIHNpZ24gZXh0ZW5zaW9uLCB3aGljaCBpcyBjb3JyZWN0LgorICAgICAoc2V0IGFjYworCSAgKGFkZCBhY2MKKwkgICAgICAgKG11bCAoZXh0IERJIHNyYzEpCisJCSAgICAoZXh0IERJICh0cnVuYyBISSAoc3JhIHNyYzIgKGNvbnN0IDE2KSkpKSkpKQorICAgICAoKG0zMnJ4ICh1bml0IHUtbWFjKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LW1hYykpKQorKQorCisoZG5pIG1hY3dsbyAibWFjd2xvIgorICAgICAoKE1BQ0ggbTMycikgKFBJUEUgUykgKElET0MgTUFDKSkKKyAgICAgIm1hY3dsbyAkc3JjMSwkc3JjMiIKKyAgICAgKCsgT1AxXzMgT1AyXzcgc3JjMSBzcmMyKQorICAgICAoc2V0IGFjY3VtCisJICAoc3JhIERJCisJICAgICAgIChzbGwgREkKKwkJICAgIChhZGQgREkKKwkJCSBhY2N1bQorCQkJIChtdWwgREkKKwkJCSAgICAgIChleHQgREkgc3JjMSkKKwkJCSAgICAgIChleHQgREkgKHRydW5jIEhJIHNyYzIpKSkpCisJCSAgICAoY29uc3QgOCkpCisJICAgICAgIChjb25zdCA4KSkpCisgICAgICgobTMyci9kICh1bml0IHUtbWFjKSkpCispCisKKyhkbmkgbWFjd2xvLWEgIm1hY3dsby1hIgorICAgICAoKE1BQ0ggbTMycngsbTMycjIpIChQSVBFIFMpIFNQRUNJQUwgKElET0MgTUFDKSkKKyAgICAgIm1hY3dsbyAkc3JjMSwkc3JjMiwkYWNjIgorICAgICAoKyBPUDFfMyBzcmMxIGFjYyAoZi1vcDIzIDcpIHNyYzIpCisgICAgIDsgTm90ZSB0aGF0IHRoaXMgZG9lc24ndCBkbyB0aGUgc2lnbiBleHRlbnNpb24sIHdoaWNoIGlzIGNvcnJlY3QuCisgICAgIChzZXQgYWNjCisJICAoYWRkIGFjYworCSAgICAgICAobXVsIChleHQgREkgc3JjMSkKKwkJICAgIChleHQgREkgKHRydW5jIEhJIHNyYzIpKSkpKQorICAgICAoKG0zMnJ4ICh1bml0IHUtbWFjKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LW1hYykpKQorKQorCisoZG5pIG11bCAibXVsIgorICAgICAoKFBJUEUgUykgKElET0MgQUxVKSkKKyAgICAgIm11bCAkZHIsJHNyIgorICAgICAoKyBPUDFfMSBPUDJfNiBkciBzcikKKyAgICAgKHNldCBkciAobXVsIGRyIHNyKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1leGVjIChjeWNsZXMgNCkpKQorICAgICAgKG0zMnJ4ICh1bml0IHUtZXhlYyAoY3ljbGVzIDQpKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWV4ZWMgKGN5Y2xlcyA0KSkpKQorKQorCisoZG5pIG11bGhpICJtdWxoaSIKKyAgICAgKChNQUNIIG0zMnIpIChQSVBFIFMpIChJRE9DIEFDQ1VNKSkKKyAgICAgIm11bGhpICRzcmMxLCRzcmMyIgorICAgICAoKyBPUDFfMyBPUDJfMCBzcmMxIHNyYzIpCisgICAgIChzZXQgYWNjdW0KKwkgIChzcmEgREkKKwkgICAgICAgKHNsbCBESQorCQkgICAgKG11bCBESQorCQkJIChleHQgREkgKGFuZCBXSSBzcmMxIChjb25zdCAjeGZmZmYwMDAwKSkpCisJCQkgKGV4dCBESSAodHJ1bmMgSEkgKHNyYSBXSSBzcmMyIChjb25zdCAxNikpKSkpCisJCSAgICAoY29uc3QgMTYpKQorCSAgICAgICAoY29uc3QgMTYpKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1tYWMpKSkKKykKKworKGRuaSBtdWxoaS1hICJtdWxoaS1hIgorICAgICAoKE1BQ0ggbTMycngsbTMycjIpIChQSVBFIFMpIChJRE9DIEFDQ1VNKSkKKyAgICAgIm11bGhpICRzcmMxLCRzcmMyLCRhY2MiCisgICAgICgrIE9QMV8zIChmLW9wMjMgMCkgc3JjMSBhY2Mgc3JjMikKKyAgICAgKHNldCBhY2MKKwkgIChzcmEgREkKKwkgICAgICAgKHNsbCBESQorCQkgICAgKG11bCBESQorCQkJIChleHQgREkgKGFuZCBXSSBzcmMxIChjb25zdCAjeGZmZmYwMDAwKSkpCisJCQkgKGV4dCBESSAodHJ1bmMgSEkgKHNyYSBXSSBzcmMyIChjb25zdCAxNikpKSkpCisJCSAgICAoY29uc3QgMTYpKQorCSAgICAgICAoY29uc3QgMTYpKSkKKyAgICAgKChtMzJyeCAodW5pdCB1LW1hYykpCisgICAgICAobTMycjIgKHVuaXQgdS1tYWMpKSkKKykKKworKGRuaSBtdWxsbyAibXVsbG8iCisgICAgICgoTUFDSCBtMzJyKSAoUElQRSBTKSAoSURPQyBBQ0NVTSkpCisgICAgICJtdWxsbyAkc3JjMSwkc3JjMiIKKyAgICAgKCsgT1AxXzMgT1AyXzEgc3JjMSBzcmMyKQorICAgICAoc2V0IGFjY3VtCisJICAoc3JhIERJCisJICAgICAgIChzbGwgREkKKwkJICAgIChtdWwgREkKKwkJCSAoZXh0IERJIChzbGwgV0kgc3JjMSAoY29uc3QgMTYpKSkKKwkJCSAoZXh0IERJICh0cnVuYyBISSBzcmMyKSkpCisJCSAgICAoY29uc3QgMTYpKQorCSAgICAgICAoY29uc3QgMTYpKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1tYWMpKSkKKykKKworKGRuaSBtdWxsby1hICJtdWxsby1hIgorICAgICAoKE1BQ0ggbTMycngsbTMycjIpIChQSVBFIFMpIChJRE9DIEFDQ1VNKSkKKyAgICAgIm11bGxvICRzcmMxLCRzcmMyLCRhY2MiCisgICAgICgrIE9QMV8zIHNyYzEgYWNjIChmLW9wMjMgMSkgc3JjMikKKyAgICAgKHNldCBhY2MKKwkgIChzcmEgREkKKwkgICAgICAgKHNsbCBESQorCQkgICAgKG11bCBESQorCQkJIChleHQgREkgKHNsbCBXSSBzcmMxIChjb25zdCAxNikpKQorCQkJIChleHQgREkgKHRydW5jIEhJIHNyYzIpKSkKKwkJICAgIChjb25zdCAxNikpCisJICAgICAgIChjb25zdCAxNikpKQorICAgICAoKG0zMnJ4ICh1bml0IHUtbWFjKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LW1hYykpKQorKQorCisoZG5pIG11bHdoaSAibXVsd2hpIgorICAgICAoKE1BQ0ggbTMycikgKFBJUEUgUykgKElET0MgQUNDVU0pKQorICAgICAibXVsd2hpICRzcmMxLCRzcmMyIgorICAgICAoKyBPUDFfMyBPUDJfMiBzcmMxIHNyYzIpCisgICAgIChzZXQgYWNjdW0KKwkgIChzcmEgREkKKwkgICAgICAgKHNsbCBESQorCQkgICAgKG11bCBESQorCQkJIChleHQgREkgc3JjMSkKKwkJCSAoZXh0IERJICh0cnVuYyBISSAoc3JhIFdJIHNyYzIgKGNvbnN0IDE2KSkpKSkKKwkJICAgIChjb25zdCA4KSkKKwkgICAgICAgKGNvbnN0IDgpKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1tYWMpKSkKKykKKworKGRuaSBtdWx3aGktYSAibXVsd2hpLWEiCisgICAgICgoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgUykgU1BFQ0lBTCAoSURPQyBBQ0NVTSkpCisgICAgICJtdWx3aGkgJHNyYzEsJHNyYzIsJGFjYyIKKyAgICAgKCsgT1AxXzMgc3JjMSBhY2MgKGYtb3AyMyAyKSBzcmMyKQorICAgICA7IE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgZG8gdGhlIHNpZ24gZXh0ZW5zaW9uLCB3aGljaCBpcyBjb3JyZWN0LgorICAgICAoc2V0IGFjYworCSAgKG11bCAoZXh0IERJIHNyYzEpCisJICAgICAgIChleHQgREkgKHRydW5jIEhJIChzcmEgc3JjMiAoY29uc3QgMTYpKSkpKSkKKyAgICAgKChtMzJyeCAodW5pdCB1LW1hYykpCisgICAgICAobTMycjIgKHVuaXQgdS1tYWMpKSkKKykKKworKGRuaSBtdWx3bG8gIm11bHdsbyIKKyAgICAgKChNQUNIIG0zMnIpIChQSVBFIFMpIChJRE9DIEFDQ1VNKSkKKyAgICAgIm11bHdsbyAkc3JjMSwkc3JjMiIKKyAgICAgKCsgT1AxXzMgT1AyXzMgc3JjMSBzcmMyKQorICAgICAoc2V0IGFjY3VtCisJICAoc3JhIERJCisJICAgICAgIChzbGwgREkKKwkJICAgIChtdWwgREkKKwkJCSAoZXh0IERJIHNyYzEpCisJCQkgKGV4dCBESSAodHJ1bmMgSEkgc3JjMikpKQorCQkgICAgKGNvbnN0IDgpKQorCSAgICAgICAoY29uc3QgOCkpKQorICAgICAoKG0zMnIvZCAodW5pdCB1LW1hYykpKQorKQorCisoZG5pIG11bHdsby1hICJtdWx3bG8tYSIKKyAgICAgKChNQUNIIG0zMnJ4LG0zMnIyKSAoUElQRSBTKSBTUEVDSUFMIChJRE9DIEFDQ1VNKSkKKyAgICAgIm11bHdsbyAkc3JjMSwkc3JjMiwkYWNjIgorICAgICAoKyBPUDFfMyBzcmMxIGFjYyAoZi1vcDIzIDMpIHNyYzIpCisgICAgIDsgTm90ZSB0aGF0IHRoaXMgZG9lc24ndCBkbyB0aGUgc2lnbiBleHRlbnNpb24sIHdoaWNoIGlzIGNvcnJlY3QuCisgICAgIChzZXQgYWNjCisJICAobXVsIChleHQgREkgc3JjMSkKKwkgICAgICAgKGV4dCBESSAodHJ1bmMgSEkgc3JjMikpKSkKKyAgICAgKChtMzJyeCAodW5pdCB1LW1hYykpCisgICAgICAobTMycjIgKHVuaXQgdS1tYWMpKSkKKykKKworKGRuaSBtdiAibXYiCisgICAgICgoUElQRSBPUykgKElET0MgQUxVKSkKKyAgICAgIm12ICRkciwkc3IiCisgICAgICgrIE9QMV8xIE9QMl84IGRyIHNyKQorICAgICAoc2V0IGRyIHNyKQorICAgICAoKQorKQorCisoZG5pIG12ZmFjaGkgIm12ZmFjaGkiCisgICAgICgoTUFDSCBtMzJyKSAoUElQRSBTKSAoSURPQyBBQ0NVTSkpCisgICAgICJtdmZhY2hpICRkciIKKyAgICAgKCsgT1AxXzUgT1AyXzE1IChmLXIyIDApIGRyKQorICAgICAoc2V0IGRyICh0cnVuYyBXSSAoc3JhIERJIGFjY3VtIChjb25zdCAzMikpKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1leGVjIChjeWNsZXMgMikpKSkKKykKKworKGRuaSBtdmZhY2hpLWEgIm12ZmFjaGktYSIKKyAgICAgKChNQUNIIG0zMnJ4LG0zMnIyKSAoUElQRSBTKSAoSURPQyBBQ0NVTSkpCisgICAgICJtdmZhY2hpICRkciwkYWNjcyIKKyAgICAgKCsgT1AxXzUgZHIgT1AyXzE1IGFjY3MgKGYtb3AzIDApKQorICAgICAoc2V0IGRyICh0cnVuYyBXSSAoc3JhIERJIGFjY3MgKGNvbnN0IDMyKSkpKQorICAgICAoKG0zMnJ4ICh1bml0IHUtZXhlYyAoY3ljbGVzIDIpKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LWV4ZWMgKGN5Y2xlcyAyKSkpKQorKQorCisoZG5pIG12ZmFjbG8gIm12ZmFjbG8iCisgICAgICgoTUFDSCBtMzJyKSAoUElQRSBTKSAoSURPQyBBQ0NVTSkpCisgICAgICJtdmZhY2xvICRkciIKKyAgICAgKCsgT1AxXzUgT1AyXzE1IChmLXIyIDEpIGRyKQorICAgICAoc2V0IGRyICh0cnVuYyBXSSBhY2N1bSkpCisgICAgICgobTMyci9kICh1bml0IHUtZXhlYyAoY3ljbGVzIDIpKSkpCispCisKKyhkbmkgbXZmYWNsby1hICJtdmZhY2xvLWEiCisgICAgICgoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgUykgKElET0MgQUNDVU0pKQorICAgICAibXZmYWNsbyAkZHIsJGFjY3MiCisgICAgICgrIE9QMV81IGRyIE9QMl8xNSBhY2NzIChmLW9wMyAxKSkKKyAgICAgKHNldCBkciAodHJ1bmMgV0kgYWNjcykpCisgICAgICgobTMycnggKHVuaXQgdS1leGVjIChjeWNsZXMgMikpKQorICAgICAgKG0zMnIyICh1bml0IHUtZXhlYyAoY3ljbGVzIDIpKSkpCispCisKKyhkbmkgbXZmYWNtaSAibXZmYWNtaSIKKyAgICAgKChNQUNIIG0zMnIpIChQSVBFIFMpIChJRE9DIEFDQ1VNKSkKKyAgICAgIm12ZmFjbWkgJGRyIgorICAgICAoKyBPUDFfNSBPUDJfMTUgKGYtcjIgMikgZHIpCisgICAgIChzZXQgZHIgKHRydW5jIFdJIChzcmEgREkgYWNjdW0gKGNvbnN0IDE2KSkpKQorICAgICAoKG0zMnIvZCAodW5pdCB1LWV4ZWMgKGN5Y2xlcyAyKSkpKQorKQorCisoZG5pIG12ZmFjbWktYSAibXZmYWNtaS1hIgorICAgICAoKE1BQ0ggbTMycngsbTMycjIpIChQSVBFIFMpIChJRE9DIEFDQ1VNKSkKKyAgICAgIm12ZmFjbWkgJGRyLCRhY2NzIgorICAgICAoKyBPUDFfNSBkciBPUDJfMTUgYWNjcyAoZi1vcDMgMikpCisgICAgIChzZXQgZHIgKHRydW5jIFdJIChzcmEgREkgYWNjcyAoY29uc3QgMTYpKSkpCisgICAgICgobTMycnggKHVuaXQgdS1leGVjIChjeWNsZXMgMikpKQorICAgICAgKG0zMnIyICh1bml0IHUtZXhlYyAoY3ljbGVzIDIpKSkpCispCisKKyhkbmkgbXZmYyAibXZmYyIKKyAgICAgKChQSVBFIE8pIChJRE9DIE1JU0MpKQorICAgICAibXZmYyAkZHIsJHNjciIKKyAgICAgKCsgT1AxXzEgT1AyXzkgZHIgc2NyKQorICAgICAoc2V0IGRyIHNjcikKKyAgICAgKCkKKykKKworKGRuaSBtdnRhY2hpICJtdnRhY2hpIgorICAgICAoKE1BQ0ggbTMycikgKFBJUEUgUykgKElET0MgQUNDVU0pKQorICAgICAibXZ0YWNoaSAkc3JjMSIKKyAgICAgKCsgT1AxXzUgT1AyXzcgKGYtcjIgMCkgc3JjMSkKKyAgICAgKHNldCBhY2N1bQorCSAgKG9yIERJCisJICAgICAgKGFuZCBESSBhY2N1bSAoY29uc3QgREkgI3hmZmZmZmZmZikpCisJICAgICAgKHNsbCBESSAoZXh0IERJIHNyYzEpIChjb25zdCAzMikpKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1leGVjIChpbiBzciBzcmMxKSkpKQorKQorCisoZG5pIG12dGFjaGktYSAibXZ0YWNoaS1hIgorICAgICAoKE1BQ0ggbTMycngsbTMycjIpIChQSVBFIFMpIChJRE9DIEFDQ1VNKSkKKyAgICAgIm12dGFjaGkgJHNyYzEsJGFjY3MiCisgICAgICgrIE9QMV81IHNyYzEgT1AyXzcgYWNjcyAoZi1vcDMgMCkpCisgICAgIChzZXQgYWNjcworCSAgKG9yIERJCisJICAgICAgKGFuZCBESSBhY2NzIChjb25zdCBESSAjeGZmZmZmZmZmKSkKKwkgICAgICAoc2xsIERJIChleHQgREkgc3JjMSkgKGNvbnN0IDMyKSkpKQorICAgICAoKG0zMnJ4ICh1bml0IHUtZXhlYyAoaW4gc3Igc3JjMSkpKQorICAgICAgKG0zMnIyICh1bml0IHUtZXhlYyAoaW4gc3Igc3JjMSkpKSkKKykKKworKGRuaSBtdnRhY2xvICJtdnRhY2xvIgorICAgICAoKE1BQ0ggbTMycikgKFBJUEUgUykgKElET0MgQUNDVU0pKQorICAgICAibXZ0YWNsbyAkc3JjMSIKKyAgICAgKCsgT1AxXzUgT1AyXzcgKGYtcjIgMSkgc3JjMSkKKyAgICAgKHNldCBhY2N1bQorCSAgKG9yIERJCisJICAgICAgKGFuZCBESSBhY2N1bSAoY29uc3QgREkgI3hmZmZmZmZmZjAwMDAwMDAwKSkKKwkgICAgICAoemV4dCBESSBzcmMxKSkpCisgICAgICgobTMyci9kICh1bml0IHUtZXhlYyAoaW4gc3Igc3JjMSkpKSkKKykKKworKGRuaSBtdnRhY2xvLWEgIm12dGFjbG8tYSIKKyAgICAgKChNQUNIIG0zMnJ4LG0zMnIyKSAoUElQRSBTKSAoSURPQyBBQ0NVTSkpCisgICAgICJtdnRhY2xvICRzcmMxLCRhY2NzIgorICAgICAoKyBPUDFfNSBzcmMxIE9QMl83IGFjY3MgKGYtb3AzIDEpKQorICAgICAoc2V0IGFjY3MKKwkgIChvciBESQorCSAgICAgIChhbmQgREkgYWNjcyAoY29uc3QgREkgI3hmZmZmZmZmZjAwMDAwMDAwKSkKKwkgICAgICAoemV4dCBESSBzcmMxKSkpCisgICAgICgobTMycnggKHVuaXQgdS1leGVjIChpbiBzciBzcmMxKSkpCisgICAgICAobTMycjIgKHVuaXQgdS1leGVjIChpbiBzciBzcmMxKSkpKQorKQorCisoZG5pIG12dGMgIm12dGMiCisgICAgICgoUElQRSBPKSAoSURPQyBNSVNDKSkKKyAgICAgIm12dGMgJHNyLCRkY3IiCisgICAgICgrIE9QMV8xIE9QMl8xMCBkY3Igc3IpCisgICAgIChzZXQgZGNyIHNyKQorICAgICAoKQorKQorCisoZG5pIG5lZyAibmVnIgorICAgICAoKFBJUEUgT1MpIChJRE9DIEFMVSkpCisgICAgICJuZWcgJGRyLCRzciIKKyAgICAgKCsgT1AxXzAgT1AyXzMgZHIgc3IpCisgICAgIChzZXQgZHIgKG5lZyBzcikpCisgICAgICgpCispCisKKyhkbmkgbm9wICJub3AiCisgICAgICgoUElQRSBPUykgKElET0MgTUlTQykpCisgICAgICJub3AiCisgICAgICgrIE9QMV83IE9QMl8wIChmLXIxIDApIChmLXIyIDApKQorICAgICAoYy1jb2RlIFZPSUQgIlBST0ZJTEVfQ09VTlRfRklMTE5PUFMgKGN1cnJlbnRfY3B1LCBhYnVmLT5hZGRyKTtcbiIpCisgICAgIDsgRklYTUU6IHF1aWNrIGhhY2s6IHBhcmFsbGVsIG5vcHMgZG9uJ3QgY29udHJpYnV0ZSB0byBjeWNsZSBjb3VudC4KKyAgICAgOyBPdGhlciBraW5kcyBvZiBub3BzIGRvIGhvd2V2ZXIgKHdoaWNoIHdlIGN1cnJlbnRseSBpZ25vcmUpLgorICAgICAoKG0zMnIvZCAodW5pdCB1LWV4ZWMgKGN5Y2xlcyAwKSkpCisgICAgICAobTMycnggKHVuaXQgdS1leGVjIChjeWNsZXMgMCkpKQorICAgICAgKG0zMnIyICh1bml0IHUtZXhlYyAoY3ljbGVzIDApKSkpCispCisKKyhkbmkgbm90ICJub3QiCisgICAgICgoUElQRSBPUykgKElET0MgQUxVKSkKKyAgICAgIm5vdCAkZHIsJHNyIgorICAgICAoKyBPUDFfMCBPUDJfMTEgZHIgc3IpCisgICAgIChzZXQgZHIgKGludiBzcikpCisgICAgICgpCispCisKKyhkbmkgcmFjICJyYWMiCisgICAgICgoTUFDSCBtMzJyKSAoUElQRSBTKSAoSURPQyBNQUMpKQorICAgICAicmFjIgorICAgICAoKyBPUDFfNSBPUDJfOSAoZi1yMSAwKSAoZi1yMiAwKSkKKyAgICAgKHNlcXVlbmNlICgoREkgdG1wMSkpCisJICAgICAgIChzZXQgdG1wMSAoc2xsIERJIGFjY3VtIChjb25zdCAxKSkpCisJICAgICAgIChzZXQgdG1wMSAoYWRkIERJIHRtcDEgKGNvbnN0IERJICN4ODAwMCkpKQorCSAgICAgICAoc2V0IGFjY3VtCisJCSAgICAoY29uZCBESQorCQkJICAoKGd0IHRtcDEgKGNvbnN0IERJICN4MDAwMDdmZmZmZmZmMDAwMCkpCisJCQkgICAoY29uc3QgREkgI3gwMDAwN2ZmZmZmZmYwMDAwKSkKKwkJCSAgKChsdCB0bXAxIChjb25zdCBESSAjeGZmZmY4MDAwMDAwMDAwMDApKQorCQkJICAgKGNvbnN0IERJICN4ZmZmZjgwMDAwMDAwMDAwMCkpCisJCQkgIChlbHNlIChhbmQgdG1wMSAoY29uc3QgREkgI3hmZmZmZmZmZmZmZmYwMDAwKSkpKSkKKwkgICAgICAgKQorICAgICAoKG0zMnIvZCAodW5pdCB1LW1hYykpKQorKQorCisoZG5pIHJhYy1kc2kgInJhYy1kc2kiCisgICAgICgoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgUykgKElET0MgTUFDKSkKKyAgICAgInJhYyAkYWNjZCwkYWNjcywkaW1tMSIKKyAgICAgKCsgT1AxXzUgYWNjZCAoZi1iaXRzNjcgMCkgT1AyXzkgYWNjcyAoZi1iaXQxNCAwKSBpbW0xKQorICAgICAoc2VxdWVuY2UgKChESSB0bXAxKSkKKwkgICAgICAgKHNldCB0bXAxIChzbGwgYWNjcyBpbW0xKSkKKwkgICAgICAgKHNldCB0bXAxIChhZGQgdG1wMSAoY29uc3QgREkgI3g4MDAwKSkpCisJICAgICAgIChzZXQgYWNjZAorCQkgICAgKGNvbmQgREkKKwkJCSAgKChndCB0bXAxIChjb25zdCBESSAjeDAwMDA3ZmZmZmZmZjAwMDApKQorCQkJICAgKGNvbnN0IERJICN4MDAwMDdmZmZmZmZmMDAwMCkpCisJCQkgICgobHQgdG1wMSAoY29uc3QgREkgI3hmZmZmODAwMDAwMDAwMDAwKSkKKwkJCSAgIChjb25zdCBESSAjeGZmZmY4MDAwMDAwMDAwMDApKQorCQkJICAoZWxzZSAoYW5kIHRtcDEgKGNvbnN0IERJICN4ZmZmZmZmZmZmZmZmMDAwMCkpKSkpCisJICAgICAgICkKKyAgICAgKChtMzJyeCAodW5pdCB1LW1hYykpCisgICAgICAobTMycjIgKHVuaXQgdS1tYWMpKSkKKykKKworKGRubWkgcmFjLWQgInJhYy1kIgorICAgICAoKE1BQ0ggbTMycngsbTMycjIpIChQSVBFIFMpIChJRE9DIE1BQykpCisgICAgICJyYWMgJGFjY2QiCisgICAgIChlbWl0IHJhYy1kc2kgYWNjZCAoZi1hY2NzIDApIChmLWltbTEgMCkpCispCisKKyhkbm1pIHJhYy1kcyAicmFjLWRzIgorICAgICAoKE1BQ0ggbTMycngsbTMycjIpIChQSVBFIFMpIChJRE9DIE1BQykpCisgICAgICJyYWMgJGFjY2QsJGFjY3MiCisgICAgIChlbWl0IHJhYy1kc2kgYWNjZCBhY2NzIChmLWltbTEgMCkpCispCisKKworKGRuaSByYWNoICJyYWNoIgorICAgICAoKE1BQ0ggbTMycikgKFBJUEUgUykgKElET0MgTUFDKSkKKyAgICAgInJhY2giCisgICAgICgrIE9QMV81IE9QMl84IChmLXIxIDApIChmLXIyIDApKQorICAgICAoc2VxdWVuY2UgKChESSB0bXAxKSkKKwkgICAgICAgOyBMb3Agb2ZmIHRvcCA4IGJpdHMuCisJICAgICAgIDsgVGhlIHNpZ24gYml0IHdlIHdhbnQgdG8gdXNlIGlzIGJpdCA1NSBzbyB0aGUgNjQgYml0IHZhbHVlCisJICAgICAgIDsgaXNuJ3QgcHJvcGVybHkgc2lnbmVkIHdoaWNoIHdlIGRlYWwgd2l0aCBpbiB0aGUgaWYncyBiZWxvdy4KKwkgICAgICAgKHNldCB0bXAxIChhbmQgYWNjdW0gKGNvbnN0IERJICN4ZmZmZmZmZmZmZmZmZmYpKSkKKwkgICAgICAgKGlmIChhbmRpZiAoZ2UgdG1wMSAoY29uc3QgREkgI3gwMDNmZmY4MDAwMDAwMCkpCisJCQkgIChsZSB0bXAxIChjb25zdCBESSAjeDdmZmZmZmZmZmZmZmZmKSkpCisJCSAgIChzZXQgdG1wMSAoY29uc3QgREkgI3gwMDNmZmY4MDAwMDAwMCkpCisJCSAgIDsgZWxzZSBwYXJ0CisJCSAgIChpZiAoYW5kaWYgKGdlIHRtcDEgKGNvbnN0IERJICN4ODAwMDAwMDAwMDAwMDApKQorCQkJICAgICAgKGxlIHRtcDEgKGNvbnN0IERJICN4ZmZjMDAwMDAwMDAwMDApKSkKKwkJICAgICAgIChzZXQgdG1wMSAoY29uc3QgREkgI3hmZmMwMDAwMDAwMDAwMCkpCisJCSAgICAgICAoc2V0IHRtcDEgKGFuZCAoYWRkIGFjY3VtIChjb25zdCBESSAjeDQwMDAwMDAwKSkKKwkJCQkgICAgICAoY29uc3QgREkgI3hmZmZmZmZmZjgwMDAwMDAwKSkpKSkKKwkgICAgICAgKHNldCB0bXAxIChzbGwgdG1wMSAoY29uc3QgMSkpKQorCSAgICAgICA7IFNpZ24gZXh0ZW5kIHRvcCA4IGJpdHMuCisJICAgICAgIChzZXQgYWNjdW0KKwkJICAgIDsgRklYTUU6IDc/CisJCSAgICAoc3JhIERJIChzbGwgREkgdG1wMSAoY29uc3QgNykpIChjb25zdCA3KSkpCisJICAgICAgICkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1tYWMpKSkKKykKKworKGRuaSByYWNoLWRzaSAicmFjaC1kc2kiCisgICAgICgoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgUykgKElET0MgTUFDKSkKKyAgICAgInJhY2ggJGFjY2QsJGFjY3MsJGltbTEiCisgICAgICgrIE9QMV81IGFjY2QgKGYtYml0czY3IDApIE9QMl84IGFjY3MgKGYtYml0MTQgMCkgaW1tMSkKKyAgICAgKHNlcXVlbmNlICgoREkgdG1wMSkpCisJICAgICAgIChzZXQgdG1wMSAoc2xsIGFjY3MgaW1tMSkpCisJICAgICAgIChzZXQgdG1wMSAoYWRkIHRtcDEgKGNvbnN0IERJICN4ODAwMDAwMDApKSkKKwkgICAgICAgKHNldCBhY2NkCisJCSAgICAoY29uZCBESQorCQkJICAoKGd0IHRtcDEgKGNvbnN0IERJICN4MDAwMDdmZmYwMDAwMDAwMCkpCisJCQkgICAoY29uc3QgREkgI3gwMDAwN2ZmZjAwMDAwMDAwKSkKKwkJCSAgKChsdCB0bXAxIChjb25zdCBESSAjeGZmZmY4MDAwMDAwMDAwMDApKQorCQkJICAgKGNvbnN0IERJICN4ZmZmZjgwMDAwMDAwMDAwMCkpCisJCQkgIChlbHNlIChhbmQgdG1wMSAoY29uc3QgREkgI3hmZmZmZmZmZjAwMDAwMDAwKSkpKSkKKwkgICAgICAgKQorICAgICAoKG0zMnJ4ICh1bml0IHUtbWFjKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LW1hYykpKQorKQorCisoZG5taSByYWNoLWQgInJhY2gtZCIKKyAgICAgKChNQUNIIG0zMnJ4LG0zMnIyKSAoUElQRSBTKSAoSURPQyBNQUMpKQorICAgICAicmFjaCAkYWNjZCIKKyAgICAgKGVtaXQgcmFjaC1kc2kgYWNjZCAoZi1hY2NzIDApIChmLWltbTEgMCkpCispCisKKyhkbm1pIHJhY2gtZHMgInJhY2gtZHMiCisgICAgICgoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgUykgKElET0MgTUFDKSkKKyAgICAgInJhY2ggJGFjY2QsJGFjY3MiCisgICAgIChlbWl0IHJhY2gtZHNpIGFjY2QgYWNjcyAoZi1pbW0xIDApKQorKQorCisoZG5pIHJ0ZSAicnRlIgorICAgICAoVU5DT05ELUNUSSAoUElQRSBPKSAoSURPQyBCUikpCisgICAgICJydGUiCisgICAgICgrIE9QMV8xIE9QMl8xMyAoZi1yMSAwKSAoZi1yMiA2KSkKKyAgICAgKHNlcXVlbmNlICgpCisJICAgICAgIDsgcGMgPSBicGMgJiAtNAorCSAgICAgICAoc2V0IHBjIChhbmQgKHJlZyBoLWNyIDYpIChjb25zdCAtNCkpKQorCSAgICAgICA7IGJwYyA9IGJicGMKKwkgICAgICAgKHNldCAocmVnIGgtY3IgNikgKHJlZyBoLWNyIDE0KSkKKwkgICAgICAgOyBwc3cgPSBicHN3CisJICAgICAgIChzZXQgKHJlZyBoLXBzdykgKHJlZyBoLWJwc3cpKQorCSAgICAgICA7IGJwc3cgPSBiYnBzdworCSAgICAgICAoc2V0IChyZWcgaC1icHN3KSAocmVnIGgtYmJwc3cpKQorICAgICApCisgICAgICgpCispCisKKyhkbmkgc2V0aCAic2V0aCIKKyAgICAgKChJRE9DIEFMVSkpCisgICAgICJzZXRoICRkciwkaGFzaCRoaTE2IgorICAgICAoKyBPUDFfMTMgT1AyXzEyIGRyIChmLXIyIDApIGhpMTYpCisgICAgIChzZXQgZHIgKHNsbCBXSSBoaTE2IChjb25zdCAxNikpKQorICAgICAoKQorKQorCisoZGVmaW5lLXBtYWNybyAoc2hpZnQtb3Agc3ltIG9wMi1yLW9wIG9wMi0zLW9wIG9wMi1pLW9wIHNlbS1vcCkKKyAgKGJlZ2luCisgICAgIChkbmkgc3ltIHN5bSAoKFBJUEUgT19PUykgKElET0MgQUxVKSkKKwkgICguc3RyIHN5bSAiICRkciwkc3IiKQorCSAgKCsgT1AxXzEgb3AyLXItb3AgZHIgc3IpCisJICAoc2V0IGRyIChzZW0tb3AgZHIgKGFuZCBzciAoY29uc3QgMzEpKSkpCisJICAoKQorICAgICApCisgICAgIChkbmkgKC5zeW0gc3ltICIzIikgc3ltICgoSURPQyBBTFUpKQorCSAgKC5zdHIgc3ltICIzICRkciwkc3IsJHNpbW0xNiIpCisJICAoKyBPUDFfOSBvcDItMy1vcCBkciBzciBzaW1tMTYpCisJICAoc2V0IGRyIChzZW0tb3Agc3IgKGFuZCBXSSBzaW1tMTYgKGNvbnN0IDMxKSkpKQorCSAgKCkKKyAgICAgKQorICAgICAoZG5pICguc3ltIHN5bSAiaSIpIHN5bSAoKFBJUEUgT19PUykgKElET0MgQUxVKSkKKwkgICguc3RyIHN5bSAiaSAkZHIsJHVpbW01IikKKwkgICgrIE9QMV81IChmLXNoaWZ0LW9wMiBvcDItaS1vcCkgZHIgdWltbTUpCisJICAoc2V0IGRyIChzZW0tb3AgZHIgdWltbTUpKQorCSAgKCkKKyAgICAgKQorICAgKQorKQorKHNoaWZ0LW9wIHNsbCBPUDJfNCBPUDJfMTIgMiBzbGwpCisoc2hpZnQtb3Agc3JhIE9QMl8yIE9QMl8xMCAxIHNyYSkKKyhzaGlmdC1vcCBzcmwgT1AyXzAgT1AyXzggMCBzcmwpCisKKyhkZWZpbmUtcG1hY3JvIChzdG9yZS1vcCBzdWZmaXggb3AyLW9wIG1vZGUpCisgIChiZWdpbgorICAgIChkbmkgKC5zeW0gc3Qgc3VmZml4KSAoLnN0ciAic3QiIHN1ZmZpeCkKKwkgKChQSVBFIE8pIChJRE9DIE1FTSkpCisJICguc3RyICJzdCIgc3VmZml4ICIgJHNyYzEsQCRzcmMyIikKKwkgKCsgT1AxXzIgb3AyLW9wIHNyYzEgc3JjMikKKwkgKHNldCBtb2RlIChtZW0gbW9kZSBzcmMyKSBzcmMxKQorCSAoKG0zMnIvZCAodW5pdCB1LXN0b3JlIChjeWNsZXMgMSkpKQorCSAgKG0zMnJ4ICh1bml0IHUtc3RvcmUgKGN5Y2xlcyAxKSkpCisJICAobTMycjIgKHVuaXQgdS1zdG9yZSAoY3ljbGVzIDEpKSkpCisJICkKKyAgICAoZG5taSAoLnN5bSBzdCBzdWZmaXggIi0yIikgKC5zdHIgInN0IiBzdWZmaXggIi0yIikKKwkgIChOTy1ESVMgKFBJUEUgTykgKElET0MgTUVNKSkKKwkgICguc3RyICJzdCIgc3VmZml4ICIgJHNyYzEsQCgkc3JjMikiKQorCSAgKGVtaXQgKC5zeW0gc3Qgc3VmZml4KSBzcmMxIHNyYzIpKQorICAgIChkbmkgKC5zeW0gc3Qgc3VmZml4IC1kKSAoLnN0ciAic3QiIHN1ZmZpeCAiLWQiKQorCSAoKElET0MgTUVNKSkKKwkgKC5zdHIgInN0IiBzdWZmaXggIiAkc3JjMSxAKCRzbG8xNiwkc3JjMikiKQorCSAoKyBPUDFfMTAgb3AyLW9wIHNyYzEgc3JjMiBzbG8xNikKKwkgKHNldCBtb2RlIChtZW0gbW9kZSAoYWRkIHNyYzIgc2xvMTYpKSBzcmMxKQorCSAoKG0zMnIvZCAodW5pdCB1LXN0b3JlIChjeWNsZXMgMikpKQorCSAgKG0zMnJ4ICh1bml0IHUtc3RvcmUgKGN5Y2xlcyAyKSkpCisJICAobTMycjIgKHVuaXQgdS1zdG9yZSAoY3ljbGVzIDIpKSkpCisJICkKKyAgICAoZG5taSAoLnN5bSBzdCBzdWZmaXggLWQyKSAoLnN0ciAic3QiIHN1ZmZpeCAiLWQyIikKKwkgIChOTy1ESVMgKElET0MgTUVNKSkKKwkgICguc3RyICJzdCIgc3VmZml4ICIgJHNyYzEsQCgkc3JjMiwkc2xvMTYpIikKKwkgIChlbWl0ICguc3ltIHN0IHN1ZmZpeCAtZCkgc3JjMSBzcmMyIHNsbzE2KSkKKyAgICApCispCisoc3RvcmUtb3AgIiIgT1AyXzQgV0kpCisoc3RvcmUtb3AgYiBPUDJfMCBRSSkKKyhzdG9yZS1vcCBoIE9QMl8yIEhJKQorCisoZG5pIHN0LXBsdXMgInN0KyIKKyAgICAgKChQSVBFIE8pIChJRE9DIE1FTSkpCisgICAgICJzdCAkc3JjMSxAKyRzcmMyIgorICAgICAoKyBPUDFfMiBPUDJfNiBzcmMxIHNyYzIpCisgICAgIDsgVGhpcyBoYXMgdG8gYmUgY29kZWQgY2FyZWZ1bGx5IHRvIGF2b2lkIGFuICJlYXJseWNsb2JiZXIiIG9mIHNyYzIuCisgICAgIChzZXF1ZW5jZSAoKFdJIG5ldy1zcmMyKSkKKwkgICAgICAgKHNldCBuZXctc3JjMiAoYWRkIFdJIHNyYzIgKGNvbnN0IFdJIDQpKSkKKwkgICAgICAgKHNldCAobWVtIFdJIG5ldy1zcmMyKSBzcmMxKQorCSAgICAgICAoc2V0IHNyYzIgbmV3LXNyYzIpKQorICAgICAoKG0zMnIvZCAodW5pdCB1LXN0b3JlKQorCSAgICAgICh1bml0IHUtZXhlYyAoaW4gZHIgc3JjMikgKG91dCBkciBzcmMyKSAoY3ljbGVzIDApKSkKKyAgICAgIChtMzJyeCAodW5pdCB1LXN0b3JlKQorCSAgICAgKHVuaXQgdS1leGVjIChpbiBkciBzcmMyKSAob3V0IGRyIHNyYzIpIChjeWNsZXMgMCkpKQorICAgICAgKG0zMnIyICh1bml0IHUtc3RvcmUpCisJICAgICAodW5pdCB1LWV4ZWMgKGluIGRyIHNyYzIpIChvdXQgZHIgc3JjMikgKGN5Y2xlcyAwKSkpCisgICAgICApCispCisKKyhkbmkgc3RoLXBsdXMgInN0aCsiCisgICAgICgoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgTykgU1BFQ0lBTCkKKyAgICAgInN0aCAkc3JjMSxAJHNyYzIrIgorICAgICAoKyBPUDFfMiBPUDJfMyBzcmMxIHNyYzIpCisgICAgIDsgVGhpcyBoYXMgdG8gYmUgY29kZWQgY2FyZWZ1bGx5IHRvIGF2b2lkIGFuICJlYXJseWNsb2JiZXIiIG9mIHNyYzIuCisgICAgIChzZXF1ZW5jZSAoKEhJIG5ldy1zcmMyKSkKKyAgICAgICAgICAgICAoc2V0IChtZW0gSEkgbmV3LXNyYzIpIHNyYzEpCisgICAgICAgICAgICAgKHNldCBuZXctc3JjMiAoYWRkIHNyYzIgKGNvbnN0IDIpKSkKKyAgICAgICAgICAgICAoc2V0IHNyYzIgbmV3LXNyYzIpKQorICAgICAoKG0zMnJ4ICh1bml0IHUtc3RvcmUpCisgICAgICAgICAgICh1bml0IHUtZXhlYyAoaW4gZHIgc3JjMikgKG91dCBkciBzcmMyKSAoY3ljbGVzIDApKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LXN0b3JlKQorICAgICAgICAgICAodW5pdCB1LWV4ZWMgKGluIGRyIHNyYzIpIChvdXQgZHIgc3JjMikgKGN5Y2xlcyAwKSkpCisgICAgICApCispCisKKyhkbmkgc3RiLXBsdXMgInN0YisiCisgICAgICgoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgTykgU1BFQ0lBTCkKKyAgICAgInN0YiAkc3JjMSxAJHNyYzIrIgorICAgICAoKyBPUDFfMiBPUDJfMSBzcmMxIHNyYzIpCisgICAgIDsgVGhpcyBoYXMgdG8gYmUgY29kZWQgY2FyZWZ1bGx5IHRvIGF2b2lkIGFuICJlYXJseWNsb2JiZXIiIG9mIHNyYzIuCisgICAgIChzZXF1ZW5jZSAoKFFJIG5ldy1zcmMyKSkKKyAgICAgICAgICAgICAoc2V0IChtZW0gUUkgbmV3LXNyYzIpIHNyYzEpCisgICAgICAgICAgICAgKHNldCBuZXctc3JjMiAoYWRkIHNyYzIgKGNvbnN0IDEpKSkKKyAgICAgICAgICAgICAoc2V0IHNyYzIgbmV3LXNyYzIpKQorICAgICAoKG0zMnJ4ICh1bml0IHUtc3RvcmUpCisgICAgICAgICAgICh1bml0IHUtZXhlYyAoaW4gZHIgc3JjMikgKG91dCBkciBzcmMyKSAoY3ljbGVzIDApKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LXN0b3JlKQorICAgICAgICAgICAodW5pdCB1LWV4ZWMgKGluIGRyIHNyYzIpIChvdXQgZHIgc3JjMikgKGN5Y2xlcyAwKSkpCisgICAgICApCispCisKKyhkbmkgc3QtbWludXMgInN0LSIKKyAgICAgKChQSVBFIE8pIChJRE9DIE1FTSkpCisgICAgICJzdCAkc3JjMSxALSRzcmMyIgorICAgICAoKyBPUDFfMiBPUDJfNyBzcmMxIHNyYzIpCisgICAgIDsgVGhpcyBpcyB0aGUgb3JpZ2luYWwgd2F5LiAgSXQgZG9lc24ndCB3b3JrIGZvciBwYXJhbGxlbCBleGVjdXRpb24KKyAgICAgOyBiZWNhdXNlIG9mIHRoZSBlYXJseWNsb2JiZXIgb2Ygc3JjMi4KKyAgICAgOyhzZXF1ZW5jZSAoKQorICAgICA7CSAgICAgICAoc2V0IHNyYzIgKHN1YiBzcmMyIChjb25zdCA0KSkpCisgICAgIDsJICAgICAgIChzZXQgKG1lbSBXSSBzcmMyKSBzcmMxKSkKKyAgICAgKHNlcXVlbmNlICgoV0kgbmV3LXNyYzIpKQorCSAgICAgICAoc2V0IG5ldy1zcmMyIChzdWIgc3JjMiAoY29uc3QgNCkpKQorCSAgICAgICAoc2V0IChtZW0gV0kgbmV3LXNyYzIpIHNyYzEpCisJICAgICAgIChzZXQgc3JjMiBuZXctc3JjMikpCisgICAgICgobTMyci9kICh1bml0IHUtc3RvcmUpCisJICAgICAgKHVuaXQgdS1leGVjIChpbiBkciBzcmMyKSAob3V0IGRyIHNyYzIpIChjeWNsZXMgMCkpKQorICAgICAgKG0zMnJ4ICh1bml0IHUtc3RvcmUpCisJICAgICAodW5pdCB1LWV4ZWMgKGluIGRyIHNyYzIpIChvdXQgZHIgc3JjMikgKGN5Y2xlcyAwKSkpCisgICAgICAobTMycjIgKHVuaXQgdS1zdG9yZSkKKwkgICAgICh1bml0IHUtZXhlYyAoaW4gZHIgc3JjMikgKG91dCBkciBzcmMyKSAoY3ljbGVzIDApKSkKKyAgICAgICkKKykKKworKGRubWkgcHVzaCAicHVzaCIgKChQSVBFIE8pIChJRE9DIE1FTSkpCisgICJwdXNoICRzcmMxIgorICAoZW1pdCBzdC1taW51cyBzcmMxIChzcmMyIDE1KSkgOyAic3QgJTAsQC1zcCIKKykKKworKGRuaSBzdWIgInN1YiIKKyAgICAgKChQSVBFIE9TKSAoSURPQyBBTFUpKQorICAgICAic3ViICRkciwkc3IiCisgICAgICgrIE9QMV8wIE9QMl8yIGRyIHNyKQorICAgICAoc2V0IGRyIChzdWIgZHIgc3IpKQorICAgICAoKQorKQorCisoZG5pIHN1YnYgInN1YjpydiIKKyAgICAgKChQSVBFIE9TKSAoSURPQyBBTFUpKQorICAgICAic3VidiAkZHIsJHNyIgorICAgICAoKyBPUDFfMCBPUDJfMCBkciBzcikKKyAgICAgKHBhcmFsbGVsICgpCisJICAgICAgIChzZXQgZHIgKHN1YiBkciBzcikpCisJICAgICAgIChzZXQgY29uZGJpdCAoc3ViLW9mbGFnIGRyIHNyIChjb25zdCAwKSkpKQorICAgICAoKQorKQorCisoZG5pIHN1YnggInN1YjpyeCIKKyAgICAgKChQSVBFIE9TKSAoSURPQyBBTFUpKQorICAgICAic3VieCAkZHIsJHNyIgorICAgICAoKyBPUDFfMCBPUDJfMSBkciBzcikKKyAgICAgKHBhcmFsbGVsICgpCisJICAgICAgIChzZXQgZHIgKHN1YmMgZHIgc3IgY29uZGJpdCkpCisJICAgICAgIChzZXQgY29uZGJpdCAoc3ViLWNmbGFnIGRyIHNyIGNvbmRiaXQpKSkKKyAgICAgKCkKKykKKworKGRuaSB0cmFwICJ0cmFwIgorICAgICAoVU5DT05ELUNUSSBGSUxMLVNMT1QgKFBJUEUgTykgKElET0MgTUlTQykpCisgICAgICJ0cmFwICR1aW1tNCIKKyAgICAgKCsgT1AxXzEgT1AyXzE1IChmLXIxIDApIHVpbW00KQorICAgICAoc2VxdWVuY2UgKCkKKwkgICAgICAgOyBiYnBjID0gYnBjCisJICAgICAgIChzZXQgKHJlZyBoLWNyIDE0KSAocmVnIGgtY3IgNikpCisJICAgICAgIDsgU2V0IGJwYyB0byB0aGUgcmV0dXJuIGFkZHJlc3MuICBBY3R1YWxseSBpdCdzIG5vdCBxdWl0ZSB0aGUKKwkgICAgICAgOyByZXR1cm4gYWRkcmVzcyBhcyBSVEUgcm91bmRzIHRoZSBhZGRyZXNzIGRvd24gdG8gYSB3b3JkCisJICAgICAgIDsgYm91bmRhcnkuCisJICAgICAgIChzZXQgKHJlZyBoLWNyIDYpIChhZGQgcGMgKGNvbnN0IDQpKSkKKwkgICAgICAgOyBiYnBzdyA9IGJwc3cKKwkgICAgICAgKHNldCAocmVnIGgtYmJwc3cpIChyZWcgaC1icHN3KSkKKwkgICAgICAgOyBicHN3ID0gcHN3CisJICAgICAgIChzZXQgKHJlZyBoLWJwc3cpIChyZWcgaC1wc3cpKQorCSAgICAgICA7IHNtIGlzIHVuY2hhbmdlZCwgaWUsYyBhcmUgc2V0IHRvIHplcm8uCisJICAgICAgIChzZXQgKHJlZyBoLXBzdykgKGFuZCAocmVnIGgtcHN3KSAoY29uc3QgI3g4MCkpKQorCSAgICAgICA7IG0zMnJfdHJhcCBoYW5kbGVzIG9wZXJhdGluZyB2cyB1c2VyIG1vZGUKKwkgICAgICAgKHNldCBXSSBwYyAoYy1jYWxsIFdJICJtMzJyX3RyYXAiIHBjIHVpbW00KSkKKyAgICAgKQorICAgICAoKQorKQorCisoZG5pIHVubG9jayAidW5sb2NrIgorICAgICAoKFBJUEUgTykgKElET0MgTUlTQykpCisgICAgICJ1bmxvY2sgJHNyYzEsQCRzcmMyIgorICAgICAoKyBPUDFfMiBPUDJfNSBzcmMxIHNyYzIpCisgICAgIChzZXF1ZW5jZSAoKQorCSAgICAgICAoaWYgKHJlZyBoLWxvY2spCisJCSAgIChzZXQgKG1lbSBXSSBzcmMyKSBzcmMxKSkKKwkgICAgICAgKHNldCAocmVnIGgtbG9jaykgKGNvbnN0IEJJIDApKSkKKyAgICAgKChtMzJyL2QgKHVuaXQgdS1sb2FkKSkKKyAgICAgIChtMzJyeCAodW5pdCB1LWxvYWQpKQorICAgICAgKG0zMnIyICh1bml0IHUtbG9hZCkpKQorKQorCis7IFNhdHVyYXRlIGludG8gYnl0ZS4KKyhkbmkgc2F0YiAic2F0YiIKKyAgICAgKChNQUNIIG0zMnJ4LG0zMnIyKSAoSURPQyBBTFUpKQorICAgICAic2F0YiAkZHIsJHNyIgorICAgICAoKyBPUDFfOCBkciBPUDJfNiBzciAoZi11aW1tMTYgI3gwMzAwKSkKKyAgICAgKHNldCBkcgorCSAgOyBGSVhNRTogbWluL21heCB3b3VsZCBzaW1wbGlmeSB0aGlzIG5pY2VseSBvZiBjb3Vyc2UuCisJICAoY29uZCBXSQorCQkoKGdlIHNyIChjb25zdCAxMjcpKSAoY29uc3QgMTI3KSkKKwkJKChsZSBzciAoY29uc3QgLTEyOCkpIChjb25zdCAtMTI4KSkKKwkJKGVsc2Ugc3IpKSkKKyAgICAgKCkKKykKKworOyBTYXR1cmF0ZSBpbnRvIGhhbGYgd29yZC4KKyhkbmkgc2F0aCAic2F0aCIKKyAgICAgKChNQUNIIG0zMnJ4LG0zMnIyKSAoSURPQyBBTFUpKQorICAgICAic2F0aCAkZHIsJHNyIgorICAgICAoKyBPUDFfOCBkciBPUDJfNiBzciAoZi11aW1tMTYgI3gwMjAwKSkKKyAgICAgKHNldCBkcgorCSAgKGNvbmQgV0kKKwkJKChnZSBzciAoY29uc3QgMzI3NjcpKSAoY29uc3QgMzI3NjcpKQorCQkoKGxlIHNyIChjb25zdCAtMzI3NjgpKSAoY29uc3QgLTMyNzY4KSkKKwkJKGVsc2Ugc3IpKSkKKyAgICAgKCkKKykKKworOyBTYXR1cmF0ZSB3b3JkLgorKGRuaSBzYXQgInNhdCIKKyAgICAgKChNQUNIIG0zMnJ4LG0zMnIyKSBTUEVDSUFMIChJRE9DIEFMVSkpCisgICAgICJzYXQgJGRyLCRzciIKKyAgICAgKCsgT1AxXzggZHIgT1AyXzYgc3IgKGYtdWltbTE2IDApKQorICAgICAoc2V0IGRyCisJICAoaWYgV0kgY29uZGJpdAorCSAgICAgICAoaWYgV0kgKGx0IHNyIChjb25zdCAwKSkKKwkJICAgIChjb25zdCAjeDdmZmZmZmZmKQorCQkgICAgKGNvbnN0ICN4ODAwMDAwMDApKQorCSAgICAgICBzcikpCisgICAgICgpCispCisKKzsgUGFyYWxsZWwgY29tcGFyZSBieXRlIHplcm9zLgorOyBTZXQgQyBiaXQgaW4gY29uZGl0aW9uIHJlZ2lzdGVyIGlmIGFueSBieXRlIGluIHNvdXJjZSByZWdpc3RlciBpcyB6ZXJvLgorKGRuaSBwY21wYnogInBjbXBieiIKKyAgICAgKChNQUNIIG0zMnJ4LG0zMnIyKSAoUElQRSBPUykgU1BFQ0lBTCAoSURPQyBBTFUpKQorICAgICAicGNtcGJ6ICRzcmMyIgorICAgICAoKyBPUDFfMCAoZi1yMSAzKSBPUDJfNyBzcmMyKQorICAgICAoc2V0IGNvbmRiaXQKKwkgIChjb25kIEJJCisJCSAoKGVxIChhbmQgc3JjMiAoY29uc3QgI3hmZikpIChjb25zdCAwKSkgKGNvbnN0IEJJIDEpKQorCQkgKChlcSAoYW5kIHNyYzIgKGNvbnN0ICN4ZmYwMCkpIChjb25zdCAwKSkgKGNvbnN0IEJJIDEpKQorCQkgKChlcSAoYW5kIHNyYzIgKGNvbnN0ICN4ZmYwMDAwKSkgKGNvbnN0IDApKSAoY29uc3QgQkkgMSkpCisJCSAoKGVxIChhbmQgc3JjMiAoY29uc3QgI3hmZjAwMDAwMCkpIChjb25zdCAwKSkgKGNvbnN0IEJJIDEpKQorCQkgKGVsc2UgKGNvbnN0IEJJIDApKSkpCisgICAgICgobTMycnggKHVuaXQgdS1jbXApKQorICAgICAgKG0zMnIyICh1bml0IHUtY21wKSkpCispCisKKzsgQWRkIGFjY3VtdWxhdG9ycworKGRuaSBzYWRkICJzYWRkIgorICAgICAoKE1BQ0ggbTMycngsbTMycjIpIChQSVBFIFMpIChJRE9DIEFDQ1VNKSkKKyAgICAgInNhZGQiCisgICAgICgrIE9QMV81IChmLXIxIDApIE9QMl8xNCAoZi1yMiA0KSkKKyAgICAgKHNldCAocmVnIGgtYWNjdW1zIDApCisJICAoYWRkIChzcmEgKHJlZyBoLWFjY3VtcyAxKSAoY29uc3QgMTYpKQorCSAgICAgICAocmVnIGgtYWNjdW1zIDApKSkKKyAgICAgKChtMzJyeCAodW5pdCB1LW1hYykpCisgICAgICAobTMycjIgKHVuaXQgdS1tYWMpKSkKKykKKworOyBNdWx0aXBseSBhbmQgYWRkIGludG8gYWNjdW11bGF0b3IgMQorKGRuaSBtYWN3dTEgIm1hY3d1MSIKKyAgICAgKChNQUNIIG0zMnJ4LG0zMnIyKSAoUElQRSBTKSAoSURPQyBNQUMpKQorICAgICAibWFjd3UxICRzcmMxLCRzcmMyIgorICAgICAoKyBPUDFfNSBzcmMxIE9QMl8xMSBzcmMyKQorICAgICAoc2V0IChyZWcgaC1hY2N1bXMgMSkKKwkgIChzcmEgREkKKwkJKHNsbCBESQorCQkgICAgICAoYWRkIERJCisJCQkgICAgKHJlZyBoLWFjY3VtcyAxKQorCQkJICAgIChtdWwgREkKKwkJCQkgIChleHQgREkgc3JjMSkKKwkJCQkgIChleHQgREkgKGFuZCBzcmMyIChjb25zdCAjeGZmZmYpKSkpKQorCQkgICAgICAoY29uc3QgOCkpCisJCShjb25zdCA4KSkpCisgICAgICgobTMycnggKHVuaXQgdS1tYWMpKQorICAgICAgKG0zMnIyICh1bml0IHUtbWFjKSkpCispCisKKzsgTXVsdGlwbHkgYW5kIHN1YnRyYWN0IGZyb20gYWNjdW11bGF0b3IgMAorKGRuaSBtc2JsbyAibXNibG8iCisgICAgICgoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgUykgKElET0MgTUFDKSkKKyAgICAgIm1zYmxvICRzcmMxLCRzcmMyIgorICAgICAoKyBPUDFfNSBzcmMxIE9QMl8xMyBzcmMyKQorICAgICAoc2V0IGFjY3VtCisJICAoc3JhIERJCisJCShzbGwgREkKKwkJICAgICAgKHN1YiBhY2N1bQorCQkJICAgKHNyYSBESQorCQkJCSAoc2xsIERJCisJCQkJICAgICAgIChtdWwgREkKKwkJCQkJICAgICAoZXh0IERJICh0cnVuYyBISSBzcmMxKSkKKwkJCQkJICAgICAoZXh0IERJICh0cnVuYyBISSBzcmMyKSkpCisJCQkJICAgICAgIChjb25zdCAzMikpCisJCQkJIChjb25zdCAxNikpKQorCQkgICAgICAoY29uc3QgOCkpCisJCShjb25zdCA4KSkpCisgICAgICgobTMycnggKHVuaXQgdS1tYWMpKQorICAgICAgKG0zMnIyICh1bml0IHUtbWFjKSkpCispCisKKzsgTXVsdGlwbHkgaW50byBhY2N1bXVsYXRvciAxCisoZG5pIG11bHd1MSAibXVsd3UxIgorICAgICAoKE1BQ0ggbTMycngsbTMycjIpIChQSVBFIFMpIChJRE9DIE1BQykpCisgICAgICJtdWx3dTEgJHNyYzEsJHNyYzIiCisgICAgICgrIE9QMV81IHNyYzEgT1AyXzEwIHNyYzIpCisgICAgIChzZXQgKHJlZyBoLWFjY3VtcyAxKQorCSAgKHNyYSBESQorCQkoc2xsIERJCisJCSAgICAgIChtdWwgREkKKwkJCSAgICAoZXh0IERJIHNyYzEpCisJCQkgICAgKGV4dCBESSAoYW5kIHNyYzIgKGNvbnN0ICN4ZmZmZikpKSkKKwkJICAgICAgKGNvbnN0IDE2KSkKKwkJKGNvbnN0IDE2KSkpCisgICAgICgobTMycnggKHVuaXQgdS1tYWMpKQorICAgICAgKG0zMnIyICh1bml0IHUtbWFjKSkpCispCisKKzsgTXVsdGlwbHkgYW5kIGFkZCBpbnRvIGFjY3VtdWxhdG9yIDEKKyhkbmkgbWFjbGgxICJtYWNsaDEiCisgICAgICgoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgUykgKElET0MgTUFDKSkKKyAgICAgIm1hY2xoMSAkc3JjMSwkc3JjMiIKKyAgICAgKCsgT1AxXzUgc3JjMSBPUDJfMTIgc3JjMikKKyAgICAgKHNldCAocmVnIGgtYWNjdW1zIDEpCisJICAoc3JhIERJCisJCShzbGwgREkKKwkJICAgIChhZGQgREkKKwkJCSAgKHJlZyBoLWFjY3VtcyAxKQorCQkJICAoc2xsIERJCisJCQkJKGV4dCBESQorCQkJCSAgICAgIChtdWwgU0kKKwkJCQkJICAgIChleHQgU0kgKHRydW5jIEhJIHNyYzEpKQorCQkJCQkgICAgKHNyYSBTSSBzcmMyIChjb25zdCBTSSAxNikpKSkKKwkJCSAgICAgIChjb25zdCAxNikpKQorCQkgICAgKGNvbnN0IDgpKQorCSAgICAgICAoY29uc3QgOCkpKQorICAgICAoKG0zMnJ4ICh1bml0IHUtbWFjKSkKKyAgICAgIChtMzJyMiAodW5pdCB1LW1hYykpKQorKQorCis7IHNraXAgaW5zdHJ1Y3Rpb24gaWYgQworKGRuaSBzYyAic2MiCisgICAgICgoTUFDSCBtMzJyeCxtMzJyMikgKFBJUEUgTykgU1BFQ0lBTCAoSURPQyBCUikpCisgICAgICJzYyIKKyAgICAgKCsgT1AxXzcgKGYtcjEgNCkgT1AyXzAgKGYtcjIgMSkpCisgICAgIChza2lwICh6ZXh0IElOVCBjb25kYml0KSkKKyAgICAgKCkKKykKKworOyBza2lwIGluc3RydWN0aW9uIGlmIG5vdCBDCisoZG5pIHNuYyAic25jIgorICAgICAoKE1BQ0ggbTMycngsbTMycjIpIChQSVBFIE8pIFNQRUNJQUwgKElET0MgQlIpKQorICAgICAic25jIgorICAgICAoKyBPUDFfNyAoZi1yMSA1KSBPUDJfMCAoZi1yMiAxKSkKKyAgICAgKHNraXAgKHpleHQgSU5UIChub3QgY29uZGJpdCkpKQorICAgICAoKQorKQorCis7IFBTVyAmPSB+KCh1bnNpZ25lZCBjaGFyKSB1aW1tOCB8IDB4MDAwZmYwMCkKKyhkbmkgY2xycHN3ICJjbHJwc3ciCisgICAgICgoUElQRSBPKSBTUEVDSUFMX00zMlIpCisgICAgICJjbHJwc3cgJHVpbW04IgorICAgICAoKyBPUDFfNyAoZi1yMSAyKSB1aW1tOCkKKyAgICAgKHNldCBVU0kgKHJlZyBoLWNyIDApCisgICAgICAgICAgICAgIChhbmQgVVNJIChyZWcgaC1jciAwKQorICAgICAgICAgICAgICAgICAgICAgKG9yIFVTSSAoaW52IEJJIHVpbW04KSAoY29uc3QgI3hmZjAwKSkpKQorICAgICAoKQorKQorCis7IFBTVyB8PSAodW5zaWduZWQgY2hhcikgdWltbTgKKyhkbmkgc2V0cHN3ICJzZXRwc3ciCisgICAgICgoUElQRSBPKSBTUEVDSUFMX00zMlIpCisgICAgICJzZXRwc3cgJHVpbW04IgorICAgICAoKyBPUDFfNyAoZi1yMSAxKSB1aW1tOCkKKyAgICAgKHNldCBVU0kgKHJlZyBoLWNyIDApIHVpbW04KQorICAgICAoKQorKQorCis7IGJzZXQKKyhkbmkgYnNldCAiYnNldCIKKyAgICAgKFNQRUNJQUxfTTMyUikKKyAgICAgImJzZXQgJHVpbW0zLEAoJHNsbzE2LCRzcikiCisgICAgICgrIE9QMV8xMCAoZi1iaXQ0IDApIHVpbW0zIE9QMl82IHNyIHNsbzE2KQorICAgICAoc2V0IFFJIChtZW0gUUkgKGFkZCBzciBzbG8xNikpCisgICAgICAgICAgICAgKG9yIFFJIChtZW0gUUkgKGFkZCBzciBzbG8xNikpCisgICAgICAgICAgICAgICAgICAoc2xsIFVTSSAoY29uc3QgMSkgKHN1YiAoY29uc3QgNykgdWltbTMpKSkpCisgICAgICgpCispCisKKzsgYmNscgorKGRuaSBiY2xyICJiY2xyIgorICAgICAoU1BFQ0lBTF9NMzJSKQorICAgICAiYmNsciAkdWltbTMsQCgkc2xvMTYsJHNyKSIKKyAgICAgKCsgT1AxXzEwIChmLWJpdDQgMCkgdWltbTMgIE9QMl83IHNyIHNsbzE2KQorICAgICAoc2V0IFFJIChtZW0gUUkgKGFkZCBzciBzbG8xNikpCisgICAgICAgICAgICAgKGFuZCBRSSAobWVtIFFJIChhZGQgc3Igc2xvMTYpKQorICAgICAgICAgICAgICAgICAgIChpbnYgUUkgKHNsbCBVU0kgKGNvbnN0IDEpIChzdWIgKGNvbnN0IDcpIHVpbW0zKSkpKSkKKyAgICAgKCkKKykKKworOyBidHN0CisoZG5pIGJ0c3QgImJ0c3QiCisgICAgIChTUEVDSUFMX00zMlIgKFBJUEUgTykpCisgICAgICJidHN0ICR1aW1tMywkc3IiCisgICAgICgrIE9QMV8wIChmLWJpdDQgMCkgdWltbTMgT1AyXzE1IHNyKQorICAgICAoc2V0IGNvbmRiaXQgKGFuZCBRSSAoc3JsIFVTSSBzciAoc3ViIChjb25zdCA3KSB1aW1tMykpIChjb25zdCAxKSkpCisgICAgICgpCispCisKZGlmZiAtLWdpdCBhL2NwdS9tMzJyLm9wYyBiL2NwdS9tMzJyLm9wYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGJkMGZhCi0tLSAvZGV2L251bGwKKysrIGIvY3B1L20zMnIub3BjCkBAIC0wLDAgKzEsMzQyIEBACisvKiBNMzJSIG9wY29kZSBzdXBwb3J0LiAgLSotIEMgLSotCisKKyAgIENvcHlyaWdodCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBDb250cmlidXRlZCBieSBSZWQgSGF0IEluYzsgZGV2ZWxvcGVkIHVuZGVyIGNvbnRyYWN0IGZyb20KKyAgIE1pdHN1YmlzaGkgRWxlY3RyaWMgQ29ycG9yYXRpb24uCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQmludXRpbHMuCisKKyAgIENvbnRyaWJ1dGVkIGJ5IFJlZCBIYXQgSW5jOyBkZXZlbG9wZWQgdW5kZXIgY29udHJhY3QgZnJvbSBGdWppdHN1LgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEJpbnV0aWxzLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworCisvKiBUaGlzIGZpbGUgaXMgYW4gYWRkZW5kdW0gdG8gbTMyci5jcHUuICBIZWF2eSB1c2Ugb2YgQyBjb2RlIGlzbid0CisgICBhcHByb3ByaWF0ZSBpbiAuY3B1IGZpbGVzLCBzbyBpdCByZXNpZGVzIGhlcmUuICBUaGlzIGVzcGVjaWFsbHkgYXBwbGllcworICAgdG8gYXNzZW1ibHkvZGlzYXNzZW1ibHkgd2hlcmUgcGFyc2luZy9wcmludGluZyBjYW4gYmUgcXVpdGUgaW52b2x2ZWQuCisgICBTdWNoIHRoaW5ncyBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhlIHNwZWNpZmljYXRpb24gb2YgdGhlIGNwdSwgcGVyIHNlLAorICAgc28gLmNwdSBmaWxlcyBwcm92aWRlIHRoZSBnZW5lcmFsIGZyYW1ld29yayBhbmQgLm9wYyBmaWxlcyBoYW5kbGUgdGhlCisgICBuaXR0eS1ncml0dHkgZGV0YWlscyBhcyBuZWNlc3NhcnkuCisKKyAgIEVhY2ggc2VjdGlvbiBpcyBkZWxpbWl0ZWQgd2l0aCBzdGFydCBhbmQgZW5kIG1hcmtlcnMuCisKKyAgIDxhcmNoPi1vcGMuaCBhZGRpdGlvbnMgdXNlOiAiLS0gb3BjLmgiCisgICA8YXJjaD4tb3BjLmMgYWRkaXRpb25zIHVzZTogIi0tIG9wYy5jIgorICAgPGFyY2g+LWFzbS5jIGFkZGl0aW9ucyB1c2U6ICItLSBhc20uYyIKKyAgIDxhcmNoPi1kaXMuYyBhZGRpdGlvbnMgdXNlOiAiLS0gZGlzLmMiCisgICA8YXJjaD4taWJkLmggYWRkaXRpb25zIHVzZTogIi0tIGliZC5oIiAgKi8KKwwKKy8qIC0tIG9wYy5oICovCisKKyN1bmRlZiAgQ0dFTl9ESVNfSEFTSF9TSVpFCisjZGVmaW5lIENHRU5fRElTX0hBU0hfU0laRSAyNTYKKyN1bmRlZiAgQ0dFTl9ESVNfSEFTSAorI2lmIDAKKyNkZWZpbmUgWChiKSAoKCh1bnNpZ25lZCBjaGFyICopIChiKSlbMF0gJiAweGYwKQorI2RlZmluZSBDR0VOX0RJU19IQVNIKGJ1ZmZlciwgdmFsdWUpIFwKKyhYIChidWZmZXIpIHwgXAorIChYIChidWZmZXIpID09IDB4NDAgfHwgWCAoYnVmZmVyKSA9PSAweGUwIHx8IFggKGJ1ZmZlcikgPT0gMHg2MCB8fCBYIChidWZmZXIpID09IDB4NTAgPyAwIFwKKyAgOiBYIChidWZmZXIpID09IDB4NzAgfHwgWCAoYnVmZmVyKSA9PSAweGYwID8gKCgodW5zaWduZWQgY2hhciAqKSAoYnVmZmVyKSlbMF0gJiAweGYpIFwKKyAgOiBYIChidWZmZXIpID09IDB4MzAgPyAoKCgodW5zaWduZWQgY2hhciAqKSAoYnVmZmVyKSlbMV0gJiAweDcwKSA+PiA0KSBcCisgIDogKCgoKHVuc2lnbmVkIGNoYXIgKikgKGJ1ZmZlcikpWzFdICYgMHhmMCkgPj4gNCkpKQorI2Vsc2UKKyNkZWZpbmUgQ0dFTl9ESVNfSEFTSChidWZmZXIsIHZhbHVlKSBtMzJyX2NnZW5fZGlzX2hhc2goYnVmZmVyLCB2YWx1ZSkKK2V4dGVybiB1bnNpZ25lZCBpbnQgbTMycl9jZ2VuX2Rpc19oYXNoKGNvbnN0IGNoYXIgKiwgQ0dFTl9JTlNOX0lOVCk7CisjZW5kaWYKKworLyogLS0gKi8KKwwKKy8qIC0tIG9wYy5jICovCit1bnNpZ25lZCBpbnQKK20zMnJfY2dlbl9kaXNfaGFzaCAoYnVmLCB2YWx1ZSkKKyAgICAgY29uc3QgY2hhciAqIGJ1ZiBBVFRSSUJVVEVfVU5VU0VEOworICAgICBDR0VOX0lOU05fSU5UIHZhbHVlOworeworICB1bnNpZ25lZCBpbnQgeDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApIC8qIDMyYml0IGluc3RydWN0aW9ucyAqLworICAgIHZhbHVlID0gKHZhbHVlID4+IDE2KSAmIDB4ZmZmZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHggPSAodmFsdWU+PjgpICYgMHhmMDsKKyAgaWYgKHggPT0gMHg0MCB8fCB4ID09IDB4ZTAgfHwgeCA9PSAweDYwIHx8IHggPT0gMHg1MCkKKyAgICByZXR1cm4geDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGlmICh4ID09IDB4NzAgfHwgeCA9PSAweGYwKQorICAgIHJldHVybiB4IHwgKCh2YWx1ZT4+OCkgJiAweDBmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGlmICh4ID09IDB4MzApCisgICAgcmV0dXJuIHggfCAoKHZhbHVlICYgMHg3MCkgPj4gNCk7CisgIGVsc2UKKyAgICByZXR1cm4geCB8ICgodmFsdWUgJiAweGYwKSA+PiA0KTsKK30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisvKiAtLSAqLworDAorLyogLS0gYXNtLmMgKi8KK3N0YXRpYyBjb25zdCBjaGFyICogcGFyc2VfaGFzaAorICBQQVJBTVMgKChDR0VOX0NQVV9ERVNDLCBjb25zdCBjaGFyICoqLCBpbnQsIHVuc2lnbmVkIGxvbmcgKikpOworc3RhdGljIGNvbnN0IGNoYXIgKiBwYXJzZV9oaTE2CisgIFBBUkFNUyAoKENHRU5fQ1BVX0RFU0MsIGNvbnN0IGNoYXIgKiosIGludCwgdW5zaWduZWQgbG9uZyAqKSk7CitzdGF0aWMgY29uc3QgY2hhciAqIHBhcnNlX3NsbzE2CisgIFBBUkFNUyAoKENHRU5fQ1BVX0RFU0MsIGNvbnN0IGNoYXIgKiosIGludCwgbG9uZyAqKSk7CitzdGF0aWMgY29uc3QgY2hhciAqIHBhcnNlX3VsbzE2CisgIFBBUkFNUyAoKENHRU5fQ1BVX0RFU0MsIGNvbnN0IGNoYXIgKiosIGludCwgdW5zaWduZWQgbG9uZyAqKSk7CisKKy8qIEhhbmRsZSAnIycgcHJlZml4ZXMgKGkuZS4gc2tpcCBvdmVyIHRoZW0pLiAgKi8KKworc3RhdGljIGNvbnN0IGNoYXIgKgorcGFyc2VfaGFzaCAoY2QsIHN0cnAsIG9waW5kZXgsIHZhbHVlcCkKKyAgICAgQ0dFTl9DUFVfREVTQyBjZCBBVFRSSUJVVEVfVU5VU0VEOworICAgICBjb25zdCBjaGFyICoqc3RycDsKKyAgICAgaW50IG9waW5kZXggQVRUUklCVVRFX1VOVVNFRDsKKyAgICAgdW5zaWduZWQgbG9uZyAqdmFsdWVwIEFUVFJJQlVURV9VTlVTRUQ7Cit7CisgIGlmICgqKnN0cnAgPT0gJyMnKQorICAgICsrKnN0cnA7CisgIHJldHVybiBOVUxMOworfQorCisvKiBIYW5kbGUgc2hpZ2goKSwgaGlnaCgpLiAgKi8KKworc3RhdGljIGNvbnN0IGNoYXIgKgorcGFyc2VfaGkxNiAoY2QsIHN0cnAsIG9waW5kZXgsIHZhbHVlcCkKKyAgICAgQ0dFTl9DUFVfREVTQyBjZDsKKyAgICAgY29uc3QgY2hhciAqKnN0cnA7CisgICAgIGludCBvcGluZGV4OworICAgICB1bnNpZ25lZCBsb25nICp2YWx1ZXA7Cit7CisgIGNvbnN0IGNoYXIgKmVycm1zZzsKKyAgZW51bSBjZ2VuX3BhcnNlX29wZXJhbmRfcmVzdWx0IHJlc3VsdF90eXBlOworICBiZmRfdm1hIHZhbHVlOworCisgIGlmICgqKnN0cnAgPT0gJyMnKQorICAgICsrKnN0cnA7CisKKyAgaWYgKHN0cm5jYXNlY21wICgqc3RycCwgImhpZ2goIiwgNSkgPT0gMCkKKyAgICB7CisgICAgICAqc3RycCArPSA1OworICAgICAgZXJybXNnID0gY2dlbl9wYXJzZV9hZGRyZXNzIChjZCwgc3RycCwgb3BpbmRleCwgQkZEX1JFTE9DX00zMlJfSEkxNl9VTE8sCisJCQkJICAgJnJlc3VsdF90eXBlLCAmdmFsdWUpOworICAgICAgaWYgKCoqc3RycCAhPSAnKScpCisJcmV0dXJuICJtaXNzaW5nIGApJyI7CisgICAgICArKypzdHJwOworICAgICAgaWYgKGVycm1zZyA9PSBOVUxMCisgIAkgICYmIHJlc3VsdF90eXBlID09IENHRU5fUEFSU0VfT1BFUkFORF9SRVNVTFRfTlVNQkVSKQorCXZhbHVlID4+PSAxNjsKKyAgICAgICp2YWx1ZXAgPSB2YWx1ZTsKKyAgICAgIHJldHVybiBlcnJtc2c7CisgICAgfQorICBlbHNlIGlmIChzdHJuY2FzZWNtcCAoKnN0cnAsICJzaGlnaCgiLCA2KSA9PSAwKQorICAgIHsKKyAgICAgICpzdHJwICs9IDY7CisgICAgICBlcnJtc2cgPSBjZ2VuX3BhcnNlX2FkZHJlc3MgKGNkLCBzdHJwLCBvcGluZGV4LCBCRkRfUkVMT0NfTTMyUl9ISTE2X1NMTywKKyAJCQkJICAgJnJlc3VsdF90eXBlLCAmdmFsdWUpOworICAgICAgaWYgKCoqc3RycCAhPSAnKScpCisJcmV0dXJuICJtaXNzaW5nIGApJyI7CisgICAgICArKypzdHJwOworICAgICAgaWYgKGVycm1zZyA9PSBOVUxMCisJICAmJiByZXN1bHRfdHlwZSA9PSBDR0VOX1BBUlNFX09QRVJBTkRfUkVTVUxUX05VTUJFUikKKyAgICAgICAgeworICAgICAgICAgIHZhbHVlID0gdmFsdWUgKyAodmFsdWUgJiAweDgwMDAgPyAweDEwMDAwIDogMCk7CisgICAgICAgICAgdmFsdWUgPj49IDE2OworICAgICAgICB9CisgICAgICAqdmFsdWVwID0gdmFsdWU7CisgICAgICByZXR1cm4gZXJybXNnOworICAgIH0KKworICByZXR1cm4gY2dlbl9wYXJzZV91bnNpZ25lZF9pbnRlZ2VyIChjZCwgc3RycCwgb3BpbmRleCwgdmFsdWVwKTsKK30KKworLyogSGFuZGxlIGxvdygpIGluIGEgc2lnbmVkIGNvbnRleHQuICBBbHNvIGhhbmRsZSBzZGEoKS4KKyAgIFRoZSBzaWduZWRuZXNzIG9mIHRoZSB2YWx1ZSBkb2Vzbid0IG1hdHRlciB0byBsb3coKSwgYnV0IHRoaXMgYWxzbworICAgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSBsb3coKSBpc24ndCBwcmVzZW50LiAgKi8KKworc3RhdGljIGNvbnN0IGNoYXIgKgorcGFyc2Vfc2xvMTYgKGNkLCBzdHJwLCBvcGluZGV4LCB2YWx1ZXApCisgICAgIENHRU5fQ1BVX0RFU0MgY2Q7CisgICAgIGNvbnN0IGNoYXIgKipzdHJwOworICAgICBpbnQgb3BpbmRleDsKKyAgICAgbG9uZyAqdmFsdWVwOworeworICBjb25zdCBjaGFyICplcnJtc2c7CisgIGVudW0gY2dlbl9wYXJzZV9vcGVyYW5kX3Jlc3VsdCByZXN1bHRfdHlwZTsKKyAgYmZkX3ZtYSB2YWx1ZTsKKworICBpZiAoKipzdHJwID09ICcjJykKKyAgICArKypzdHJwOworCisgIGlmIChzdHJuY2FzZWNtcCAoKnN0cnAsICJsb3coIiwgNCkgPT0gMCkKKyAgICB7CisgICAgICAqc3RycCArPSA0OworICAgICAgZXJybXNnID0gY2dlbl9wYXJzZV9hZGRyZXNzIChjZCwgc3RycCwgb3BpbmRleCwgQkZEX1JFTE9DX00zMlJfTE8xNiwKKwkJCQkgICAmcmVzdWx0X3R5cGUsICZ2YWx1ZSk7CisgICAgICBpZiAoKipzdHJwICE9ICcpJykKKwlyZXR1cm4gIm1pc3NpbmcgYCknIjsKKyAgICAgICsrKnN0cnA7CisgICAgICBpZiAoZXJybXNnID09IE5VTEwKKwkgICYmIHJlc3VsdF90eXBlID09IENHRU5fUEFSU0VfT1BFUkFORF9SRVNVTFRfTlVNQkVSKQorICAgICAgICB7CisJICB2YWx1ZSAmPSAweGZmZmY7CisgICAgICAgICAgaWYgKHZhbHVlICYgMHg4MDAwKQorICAgICAgICAgICAgIHZhbHVlIHw9IDB4ZmZmZjAwMDA7CisgICAgICAgIH0KKyAgICAgICp2YWx1ZXAgPSB2YWx1ZTsKKyAgICAgIHJldHVybiBlcnJtc2c7CisgICAgfQorCisgIGlmIChzdHJuY2FzZWNtcCAoKnN0cnAsICJzZGEoIiwgNCkgPT0gMCkKKyAgICB7CisgICAgICAqc3RycCArPSA0OworICAgICAgZXJybXNnID0gY2dlbl9wYXJzZV9hZGRyZXNzIChjZCwgc3RycCwgb3BpbmRleCwgQkZEX1JFTE9DX00zMlJfU0RBMTYsCisJCQkJICAgTlVMTCwgJnZhbHVlKTsKKyAgICAgIGlmICgqKnN0cnAgIT0gJyknKQorCXJldHVybiAibWlzc2luZyBgKSciOworICAgICAgKysqc3RycDsKKyAgICAgICp2YWx1ZXAgPSB2YWx1ZTsKKyAgICAgIHJldHVybiBlcnJtc2c7CisgICAgfQorCisgIHJldHVybiBjZ2VuX3BhcnNlX3NpZ25lZF9pbnRlZ2VyIChjZCwgc3RycCwgb3BpbmRleCwgdmFsdWVwKTsKK30KKworLyogSGFuZGxlIGxvdygpIGluIGFuIHVuc2lnbmVkIGNvbnRleHQuCisgICBUaGUgc2lnbmVkbmVzcyBvZiB0aGUgdmFsdWUgZG9lc24ndCBtYXR0ZXIgdG8gbG93KCksIGJ1dCB0aGlzIGFsc28KKyAgIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgbG93KCkgaXNuJ3QgcHJlc2VudC4gICovCisKK3N0YXRpYyBjb25zdCBjaGFyICoKK3BhcnNlX3VsbzE2IChjZCwgc3RycCwgb3BpbmRleCwgdmFsdWVwKQorICAgICBDR0VOX0NQVV9ERVNDIGNkOworICAgICBjb25zdCBjaGFyICoqc3RycDsKKyAgICAgaW50IG9waW5kZXg7CisgICAgIHVuc2lnbmVkIGxvbmcgKnZhbHVlcDsKK3sKKyAgY29uc3QgY2hhciAqZXJybXNnOworICBlbnVtIGNnZW5fcGFyc2Vfb3BlcmFuZF9yZXN1bHQgcmVzdWx0X3R5cGU7CisgIGJmZF92bWEgdmFsdWU7CisKKyAgaWYgKCoqc3RycCA9PSAnIycpCisgICAgKysqc3RycDsKKworICBpZiAoc3RybmNhc2VjbXAgKCpzdHJwLCAibG93KCIsIDQpID09IDApCisgICAgeworICAgICAgKnN0cnAgKz0gNDsKKyAgICAgIGVycm1zZyA9IGNnZW5fcGFyc2VfYWRkcmVzcyAoY2QsIHN0cnAsIG9waW5kZXgsIEJGRF9SRUxPQ19NMzJSX0xPMTYsCisJCQkJICAgJnJlc3VsdF90eXBlLCAmdmFsdWUpOworICAgICAgaWYgKCoqc3RycCAhPSAnKScpCisJcmV0dXJuICJtaXNzaW5nIGApJyI7CisgICAgICArKypzdHJwOworICAgICAgaWYgKGVycm1zZyA9PSBOVUxMCisJICAmJiByZXN1bHRfdHlwZSA9PSBDR0VOX1BBUlNFX09QRVJBTkRfUkVTVUxUX05VTUJFUikKKwl2YWx1ZSAmPSAweGZmZmY7CisgICAgICAqdmFsdWVwID0gdmFsdWU7CisgICAgICByZXR1cm4gZXJybXNnOworICAgIH0KKworICByZXR1cm4gY2dlbl9wYXJzZV91bnNpZ25lZF9pbnRlZ2VyIChjZCwgc3RycCwgb3BpbmRleCwgdmFsdWVwKTsKK30KKworLyogLS0gKi8KKwwKKy8qIC0tIGRpcy5jICovCitzdGF0aWMgdm9pZCBwcmludF9oYXNoIFBBUkFNUyAoKENHRU5fQ1BVX0RFU0MsIFBUUiwgbG9uZywgdW5zaWduZWQsIGJmZF92bWEsIGludCkpOworc3RhdGljIGludCBteV9wcmludF9pbnNuIFBBUkFNUyAoKENHRU5fQ1BVX0RFU0MsIGJmZF92bWEsIGRpc2Fzc2VtYmxlX2luZm8gKikpOworCisvKiBJbW1lZGlhdGUgdmFsdWVzIGFyZSBwcmVmaXhlZCB3aXRoICcjJy4gICovCisKKyNkZWZpbmUgQ0dFTl9QUklOVF9OT1JNQUwoY2QsIGluZm8sIHZhbHVlLCBhdHRycywgcGMsIGxlbmd0aCkJXAorICBkbwkJCQkJCQkJXAorICAgIHsJCQkJCQkJCVwKKyAgICAgIGlmIChDR0VOX0JPT0xfQVRUUiAoKGF0dHJzKSwgQ0dFTl9PUEVSQU5EX0hBU0hfUFJFRklYKSkJXAorICAgICAgICAoKmluZm8tPmZwcmludGZfZnVuYykgKGluZm8tPnN0cmVhbSwgIiMiKTsJCVwKKyAgICB9CQkJCQkJCQlcCisgIHdoaWxlICgwKQorCisvKiBIYW5kbGUgJyMnIHByZWZpeGVzIGFzIG9wZXJhbmRzLiAgKi8KKworc3RhdGljIHZvaWQKK3ByaW50X2hhc2ggKGNkLCBkaXNfaW5mbywgdmFsdWUsIGF0dHJzLCBwYywgbGVuZ3RoKQorICAgICBDR0VOX0NQVV9ERVNDIGNkIEFUVFJJQlVURV9VTlVTRUQ7CisgICAgIFBUUiBkaXNfaW5mbzsKKyAgICAgbG9uZyB2YWx1ZSBBVFRSSUJVVEVfVU5VU0VEOworICAgICB1bnNpZ25lZCBpbnQgYXR0cnMgQVRUUklCVVRFX1VOVVNFRDsKKyAgICAgYmZkX3ZtYSBwYyBBVFRSSUJVVEVfVU5VU0VEOworICAgICBpbnQgbGVuZ3RoIEFUVFJJQlVURV9VTlVTRUQ7Cit7CisgIGRpc2Fzc2VtYmxlX2luZm8gKmluZm8gPSAoZGlzYXNzZW1ibGVfaW5mbyAqKSBkaXNfaW5mbzsKKyAgKCppbmZvLT5mcHJpbnRmX2Z1bmMpIChpbmZvLT5zdHJlYW0sICIjIik7Cit9CisKKyN1bmRlZiAgQ0dFTl9QUklOVF9JTlNOCisjZGVmaW5lIENHRU5fUFJJTlRfSU5TTiBteV9wcmludF9pbnNuCisKK3N0YXRpYyBpbnQKK215X3ByaW50X2luc24gKGNkLCBwYywgaW5mbykKKyAgICAgQ0dFTl9DUFVfREVTQyBjZDsKKyAgICAgYmZkX3ZtYSBwYzsKKyAgICAgZGlzYXNzZW1ibGVfaW5mbyAqaW5mbzsKK3sKKyAgY2hhciBidWZmZXJbQ0dFTl9NQVhfSU5TTl9TSVpFXTsKKyAgY2hhciAqYnVmID0gYnVmZmVyOworICBpbnQgc3RhdHVzOworICBpbnQgYnVmbGVuID0gKHBjICYgMykgPT0gMCA/IDQgOiAyOworICBpbnQgYmlnX3AgPSBDR0VOX0NQVV9JTlNOX0VORElBTiAoY2QpID09IENHRU5fRU5ESUFOX0JJRzsKKyAgY2hhciAqeDsKKworICAvKiBSZWFkIHRoZSBiYXNlIHBhcnQgb2YgdGhlIGluc24uICAqLworCisgIHN0YXR1cyA9ICgqaW5mby0+cmVhZF9tZW1vcnlfZnVuYykgKHBjIC0gKCghYmlnX3AgJiYgKHBjICYgMykgIT0gMCkgPyAyIDogMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgYnVmbGVuLCBpbmZvKTsKKyAgaWYgKHN0YXR1cyAhPSAwKQorICAgIHsKKyAgICAgICgqaW5mby0+bWVtb3J5X2Vycm9yX2Z1bmMpIChzdGF0dXMsIHBjLCBpbmZvKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgLyogMzIgYml0IGluc24/ICAqLworICB4ID0gKGJpZ19wID8gJmJ1ZlswXSA6ICZidWZbM10pOworICBpZiAoKHBjICYgMykgPT0gMCAmJiAoKnggJiAweDgwKSAhPSAwKQorICAgIHJldHVybiBwcmludF9pbnNuIChjZCwgcGMsIGluZm8sIGJ1ZiwgYnVmbGVuKTsKKworICAvKiBQcmludCB0aGUgZmlyc3QgaW5zbi4gICovCisgIGlmICgocGMgJiAzKSA9PSAwKQorICAgIHsKKyAgICAgIGJ1ZiArPSAoYmlnX3AgPyAwIDogMik7CisgICAgICBpZiAocHJpbnRfaW5zbiAoY2QsIHBjLCBpbmZvLCBidWYsIDIpID09IDApCisJKCppbmZvLT5mcHJpbnRmX2Z1bmMpIChpbmZvLT5zdHJlYW0sIFVOS05PV05fSU5TTl9NU0cpOworICAgICAgYnVmICs9IChiaWdfcCA/IDIgOiAtMik7CisgICAgfQorCisgIHggPSAoYmlnX3AgPyAmYnVmWzBdIDogJmJ1ZlsxXSk7CisgIGlmICgqeCAmIDB4ODApCisgICAgeworICAgICAgLyogUGFyYWxsZWwuICAqLworICAgICAgKCppbmZvLT5mcHJpbnRmX2Z1bmMpIChpbmZvLT5zdHJlYW0sICIgfHwgIik7CisgICAgICAqeCAmPSAweDdmOworICAgIH0KKyAgZWxzZQorICAgICgqaW5mby0+ZnByaW50Zl9mdW5jKSAoaW5mby0+c3RyZWFtLCAiIC0+ICIpOworCisgIC8qIFRoZSAiJiAzIiBpcyB0byBwYXNzIGEgY29uc2lzdGVudCBhZGRyZXNzLgorICAgICBQYXJhbGxlbCBpbnNucyBhcmd1YWJseSBib3RoIGJlZ2luIG9uIHRoZSB3b3JkIGJvdW5kYXJ5LgorICAgICBBbHNvLCBicmFuY2ggaW5zbnMgYXJlIGNhbGN1bGF0ZWQgcmVsYXRpdmUgdG8gdGhlIHdvcmQgYm91bmRhcnkuICAqLworICBpZiAocHJpbnRfaW5zbiAoY2QsIHBjICYgfiAoYmZkX3ZtYSkgMywgaW5mbywgYnVmLCAyKSA9PSAwKQorICAgICgqaW5mby0+ZnByaW50Zl9mdW5jKSAoaW5mby0+c3RyZWFtLCBVTktOT1dOX0lOU05fTVNHKTsKKworICByZXR1cm4gKHBjICYgMykgPyAyIDogNDsKK30KKworLyogLS0gKi8KZGlmZiAtLWdpdCBhL2NwdS9zaC5jcHUgYi9jcHUvc2guY3B1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZDZlYTYKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvc2guY3B1CkBAIC0wLDAgKzEsMzY4IEBACis7IEhpdGFjaGkgU0ggYXJjaGl0ZWN0dXJlIGRlc2NyaXB0aW9uLiAgLSotIFNjaGVtZSAtKi0KKzsKKzsgQ29weXJpZ2h0IDIwMDAsIDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7Cis7IENvbnRyaWJ1dGVkIGJ5IFJlZCBIYXQgSW5jOyBkZXZlbG9wZWQgdW5kZXIgY29udHJhY3QgZnJvbSBIaXRhY2hpCis7IFNlbWljb25kdWN0b3IgKEFtZXJpY2EpIEluYy4KKzsKKzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBCaW51dGlscy4KKzsKKzsgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzsKKzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzsKKzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzsgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKzsgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKworCisoaW5jbHVkZSAic2ltcGxpZnkuaW5jIikKKworKGRlZmluZS1hcmNoCisgIChuYW1lIHNoKQorICAoY29tbWVudCAiSGl0YWNoaSBTdXBlckggKFNIKSIpCisgIChpbnNuLWxzYjA/ICN0KQorICAobWFjaHMgc2gyIHNoMyBzaDNlIHNoNCBzaDUpCisgIChpc2FzIGNvbXBhY3QgbWVkaWEpCispCisKKwwKKzsgSW5zdHJ1Y3Rpb24gc2V0cy4KKworKGRlZmluZS1pc2EKKyAgKG5hbWUgbWVkaWEpCisgIChjb21tZW50ICJTSG1lZGlhIDMyLWJpdCBpbnN0cnVjdGlvbiBzZXQiKQorICAoYmFzZS1pbnNuLWJpdHNpemUgMzIpCispCisKKyhkZWZpbmUtaXNhCisgIChuYW1lIGNvbXBhY3QpCisgIChjb21tZW50ICJTSGNvbXBhY3QgMTYtYml0IGluc3RydWN0aW9uIHNldCIpCisgIChiYXNlLWluc24tYml0c2l6ZSAxNikKKykKKworDAorOyBDUFUgZmFtaWx5LgorCisoZGVmaW5lLWNwdQorICAobmFtZSBzaDY0KQorICAoY29tbWVudCAiU0ggNjQtYml0IGZhbWlseSIpCisgIChlbmRpYW4gZWl0aGVyKQorICAod29yZC1iaXRzaXplIDMyKQorKQorDAorCisoZGVmaW5lLW1hY2gKKyAgKG5hbWUgc2gyKQorICAoY29tbWVudCAiU0gtMiBDUFUgY29yZSIpCisgIChjcHUgc2g2NCkKKyAgKGlzYXMgY29tcGFjdCkKKykKKworKGRlZmluZS1tYWNoCisgIChuYW1lIHNoMykKKyAgKGNvbW1lbnQgIlNILTMgQ1BVIGNvcmUiKQorICAoY3B1IHNoNjQpCisgIChpc2FzIGNvbXBhY3QpCispCisKKyhkZWZpbmUtbWFjaAorICAobmFtZSBzaDNlKQorICAoY29tbWVudCAiU0gtM2UgQ1BVIGNvcmUiKQorICAoY3B1IHNoNjQpCisgIChpc2FzIGNvbXBhY3QpCispCisKKyhkZWZpbmUtbWFjaAorICAobmFtZSBzaDQpCisgIChjb21tZW50ICJTSC00IENQVSBjb3JlIikKKyAgKGNwdSBzaDY0KQorICAoaXNhcyBjb21wYWN0KQorKQorCisoZGVmaW5lLW1hY2gKKyAgKG5hbWUgc2g1KQorICAoY29tbWVudCAiU0gtNSBDUFUgY29yZSIpCisgIChjcHUgc2g2NCkKKyAgKGlzYXMgY29tcGFjdCBtZWRpYSkKKykKKworKGRlZmluZS1tb2RlbAorICAobmFtZSBzaDUpCisgIChjb21tZW50ICJTSC01IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiIpCisgIChtYWNoIHNoNSkKKyAgKHVuaXQgdS1leGVjICJFeGVjdXRpb24gdW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgKCkgKCkgKCkpCispCisMCis7IEhhcmR3YXJlIGVsZW1lbnRzLgorCisoZGVmaW5lLWhhcmR3YXJlCisgIChuYW1lIGgtcGMpCisgIChjb21tZW50ICJQcm9ncmFtIGNvdW50ZXIiKQorICAoYXR0cnMgUEMgKElTQSBjb21wYWN0LG1lZGlhKSkKKyAgKHR5cGUgcGMgVURJKQorICAoZ2V0ICgpIChyYXctcmVnIGgtcGMpKQorICAoc2V0IChuZXd2YWwpIChzZXF1ZW5jZSAoKQorCQkJICAoc2V0IChyYXctcmVnIGgtaXNtKSAoYW5kIG5ld3ZhbCAxKSkKKwkJCSAgKHNldCAocmF3LXJlZyBoLXBjKSAoYW5kIG5ld3ZhbCAoaW52IFVESSAxKSkpKSkKKykKKworKGRlZmluZS1wbWFjcm8gKC1idWlsZC1ncmVnLW5hbWUgbikgKCguc3ltIHIgbikgbikpCisKKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC1ncikKKyAgKGNvbW1lbnQgIkdlbmVyYWwgcHVycG9zZSBpbnRlZ2VyIHJlZ2lzdGVycyIpCisgIChhdHRycyAoSVNBIG1lZGlhLGNvbXBhY3QpKQorICAodHlwZSByZWdpc3RlciBESSAoNjQpKQorICAoaW5kaWNlcyBrZXl3b3JkICIiICgubWFwIC1idWlsZC1ncmVnLW5hbWUgKC5pb3RhIDY0KSkpCisgIChnZXQgKGluZGV4KQorICAgICAgIChpZiBESSAoZXEgaW5kZXggNjMpCisJICAgKGNvbnN0IDApCisJICAgKHJhdy1yZWcgaC1nciBpbmRleCkpKQorICAoc2V0IChpbmRleCBuZXd2YWwpCisgICAgICAgKGlmIChuZSBpbmRleCA2MykKKwkgICAoc2V0IChyYXctcmVnIGgtZ3IgaW5kZXgpIG5ld3ZhbCkKKwkgICAobm9wKSkpCispCisKKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC1ncmMpCisgIChjb21tZW50ICJHZW5lcmFsIHB1cnBvc2UgaW50ZWdlciByZWdpc3RlcnMgKFNIY29tcGFjdCB2aWV3KSIpCisgIChhdHRycyBWSVJUVUFMIChJU0EgY29tcGFjdCkpCisgICh0eXBlIHJlZ2lzdGVyIFNJICgxNikpCisgIChpbmRpY2VzIGtleXdvcmQgIiIgKC5tYXAgLWJ1aWxkLWdyZWctbmFtZSAoLmlvdGEgMTYpKSkKKyAgKGdldCAoaW5kZXgpCisJKGFuZCAocmF3LXJlZyBoLWdyIGluZGV4KSAoemV4dCBESSAjeEZGRkZGRkZGKSkpCisgIChzZXQgKGluZGV4IG5ld3ZhbCkKKyAgICAgICAoc2V0IChyYXctcmVnIGgtZ3IgaW5kZXgpIChleHQgREkgbmV3dmFsKSkpCispCisKKyhkZWZpbmUtcG1hY3JvICgtYnVpbGQtY3JlZy1uYW1lIG4pICgoLnN5bSBjciBuKSBuKSkKKworKGRlZmluZS1oYXJkd2FyZQorICAobmFtZSBoLWNyKQorICAoY29tbWVudCAiQ29udHJvbCByZWdpc3RlcnMiKQorICAoYXR0cnMgKElTQSBtZWRpYSkpCisgICh0eXBlIHJlZ2lzdGVyIERJICg2NCkpCisgIChpbmRpY2VzIGtleXdvcmQgIiIgKC5tYXAgLWJ1aWxkLWNyZWctbmFtZSAoLmlvdGEgNjQpKSkKKyAgKGdldCAoaW5kZXgpCisgICAgICAgKGlmIERJIChlcSBpbmRleCAwKQorCSAgICh6ZXh0IERJIChyZWcgaC1zcikpCisJICAgKHJhdy1yZWcgaC1jciBpbmRleCkpKQorICAoc2V0IChpbmRleCBuZXd2YWwpCisgICAgICAgKGlmIChlcSBpbmRleCAwKQorCSAgIChzZXQgKHJlZyBoLXNyKSBuZXd2YWwpCisJICAgKHNldCAocmF3LXJlZyBoLWNyIGluZGV4KSBuZXd2YWwpKSkKKykKKworKGRlZmluZS1oYXJkd2FyZQorICAobmFtZSBoLXNyKQorICAoY29tbWVudCAiU3RhdHVzIHJlZ2lzdGVyIikKKyAgKGF0dHJzIChJU0EgY29tcGFjdCxtZWRpYSkpCisgICh0eXBlIHJlZ2lzdGVyIFNJKQorKQorCisoZGVmaW5lLWhhcmR3YXJlCisgIChuYW1lIGgtZnBzY3IpCisgIChjb21tZW50ICJGbG9hdGluZyBwb2ludCBzdGF0dXMgYW5kIGNvbnRyb2wgcmVnaXN0ZXIiKQorICAoYXR0cnMgKElTQSBjb21wYWN0LG1lZGlhKSkKKyAgKHR5cGUgcmVnaXN0ZXIgU0kpCispCisKKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC1mcmJpdCkKKyAgKGNvbW1lbnQgIkZsb2F0aW5nIHBvaW50IHJlZ2lzdGVyIGZpbGUgYml0IikKKyAgKGF0dHJzIChJU0EgbWVkaWEsY29tcGFjdCkgVklSVFVBTCkKKyAgKHR5cGUgcmVnaXN0ZXIgQkkpCisgIChnZXQgKCkgKGFuZCAoc3JsIChyZWcgaC1zcikgMTQpIDEpKQorICAoc2V0IChuZXd2YWx1ZSkgKHNldCAocmVnIGgtc3IpIChvciAoYW5kIChyZWcgaC1zcikgKGludiAoc2xsIDEgMTQpKSkgKHNsbCBTSSBuZXd2YWx1ZSAxNCkpKSkKKykKKworKGRlZmluZS1oYXJkd2FyZQorICAobmFtZSBoLXN6Yml0KQorICAoY29tbWVudCAiRmxvYXRpbmcgcG9pbnQgdHJhbnNmZXIgc2l6ZSBiaXQiKQorICAoYXR0cnMgKElTQSBtZWRpYSxjb21wYWN0KSBWSVJUVUFMKQorICAodHlwZSByZWdpc3RlciBCSSkKKyAgKGdldCAoKSAoYW5kIChzcmwgKHJlZyBoLXNyKSAxMykgMSkpCisgIChzZXQgKG5ld3ZhbHVlKSAoc2V0IChyZWcgaC1zcikgKG9yIChhbmQgKHJlZyBoLXNyKSAoaW52IChzbGwgMSAxMykpKSAoc2xsIFNJIG5ld3ZhbHVlIDEzKSkpKQorKQorCisoZGVmaW5lLWhhcmR3YXJlCisgIChuYW1lIGgtcHJiaXQpCisgIChjb21tZW50ICJGbG9hdGluZyBwb2ludCBwcmVjaXNpb24gYml0IikKKyAgKGF0dHJzIChJU0EgbWVkaWEsY29tcGFjdCkgVklSVFVBTCkKKyAgKHR5cGUgcmVnaXN0ZXIgQkkpCisgIChnZXQgKCkgKGFuZCAoc3JsIChyZWcgaC1zcikgMTIpIDEpKQorICAoc2V0IChuZXd2YWx1ZSkgKHNldCAocmVnIGgtc3IpIChvciAoYW5kIChyZWcgaC1zcikgKGludiAoc2xsIDEgMTIpKSkgKHNsbCBTSSBuZXd2YWx1ZSAxMikpKSkKKykKKworKGRlZmluZS1oYXJkd2FyZQorICAobmFtZSBoLXNiaXQpCisgIChjb21tZW50ICJNdWx0aXBseS1hY2N1bXVsYXRlIHNhdHVyYXRpb24gZmxhZyIpCisgIChhdHRycyAoSVNBIGNvbXBhY3QpIFZJUlRVQUwpCisgICh0eXBlIHJlZ2lzdGVyIEJJKQorICAoZ2V0ICgpIChhbmQgKHNybCAocmVnIGgtc3IpIDEpIDEpKQorICAoc2V0IChuZXd2YWx1ZSkgKHNldCAocmVnIGgtc3IpIChvciAoYW5kIChyZWcgaC1zcikgKGludiAyKSkgKHNsbCBTSSBuZXd2YWx1ZSAxKSkpKQorKQorCisoZGVmaW5lLWhhcmR3YXJlCisgIChuYW1lIGgtbWJpdCkKKyAgKGNvbW1lbnQgIkRpdmlkZS1zdGVwIE0gZmxhZyIpCisgIChhdHRycyAoSVNBIGNvbXBhY3QpIFZJUlRVQUwpCisgICh0eXBlIHJlZ2lzdGVyIEJJKQorICAoZ2V0ICgpIChhbmQgKHNybCAocmVnIGgtc3IpIDkpIDEpKQorICAoc2V0IChuZXd2YWx1ZSkgKHNldCAocmVnIGgtc3IpIChvciAoYW5kIChyZWcgaC1zcikgKGludiAoc2xsIDEgOSkpKSAoc2xsIFNJIG5ld3ZhbHVlIDkpKSkpCispCisKKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC1xYml0KQorICAoY29tbWVudCAiRGl2aWRlLXN0ZXAgUSBmbGFnIikKKyAgKGF0dHJzIChJU0EgY29tcGFjdCkgVklSVFVBTCkKKyAgKHR5cGUgcmVnaXN0ZXIgQkkpCisgIChnZXQgKCkgKGFuZCAoc3JsIChyZWcgaC1zcikgOCkgMSkpCisgIChzZXQgKG5ld3ZhbHVlKSAoc2V0IChyZWcgaC1zcikgKG9yIChhbmQgKHJlZyBoLXNyKSAoaW52IChzbGwgMSA4KSkpIChzbGwgU0kgbmV3dmFsdWUgOCkpKSkKKykKKworKGRlZmluZS1wbWFjcm8gKC1idWlsZC1mcmVnLW5hbWUgbikgKCguc3ltIGZyIG4pIG4pKQorCisoZGVmaW5lLWhhcmR3YXJlCisgIChuYW1lIGgtZnIpCisgIChjb21tZW50ICJTaW5nbGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyIpCisgIChhdHRycyAoSVNBIG1lZGlhLGNvbXBhY3QpKQorICAodHlwZSByZWdpc3RlciBTRiAoNjQpKQorICAoaW5kaWNlcyBrZXl3b3JkICIiICgubWFwIC1idWlsZC1mcmVnLW5hbWUgKC5pb3RhIDY0KSkpCispCisKKworKGRlZmluZS1wbWFjcm8gKC1idWlsZC1mcGFpci1uYW1lIG4pICgoLnN5bSBmcCBuKSBuKSkKKworKGRlZmluZS1oYXJkd2FyZQorICAobmFtZSBoLWZwKQorICAoY29tbWVudCAiU2luZ2xlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCByZWdpc3RlciBwYWlycyIpCisgIChhdHRycyAoSVNBIG1lZGlhLGNvbXBhY3QpKQorICAodHlwZSByZWdpc3RlciBERiAoMzIpKQorICAoaW5kaWNlcyBrZXl3b3JkICIiICgubWFwIC1idWlsZC1mcGFpci1uYW1lICguaW90YSAzMikpKQorKQorCisoZGVmaW5lLXBtYWNybyAoLWJ1aWxkLWZ2ZWMtbmFtZSBuKSAoKC5zeW0gZnYgbikgbikpCisKKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC1mdikKKyAgKGNvbW1lbnQgIlNpbmdsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmVjdG9ycyIpCisgIChhdHRycyBWSVJUVUFMIChJU0EgbWVkaWEsY29tcGFjdCkpCisgICh0eXBlIHJlZ2lzdGVyIFNGICgxNikpCisgIChpbmRpY2VzIGtleXdvcmQgIiIgKC5tYXAgLWJ1aWxkLWZ2ZWMtbmFtZSAoLmlvdGEgMTYpKSkKKyAgOyBNYXNrIHdpdGggJEYgdG8gZW5zdXJlIDAgPD0gaW5kZXggPCAxNS4KKyAgKGdldCAoaW5kZXgpIChyZWcgaC1mciAobXVsIChhbmQgVVFJIGluZGV4IDE1KSA0KSkpCisgIChzZXQgKGluZGV4IG5ld3ZhbCkgKHNldCAocmVnIGgtZnIgKG11bCAoYW5kIFVRSSBpbmRleCAxNSkgNCkpIG5ld3ZhbCkpCispCisKKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC1mbXR4KQorICAoY29tbWVudCAiU2luZ2xlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBtYXRyaWNlcyIpCisgIChhdHRycyBWSVJUVUFMIChJU0EgbWVkaWEpKQorICAodHlwZSByZWdpc3RlciBTRiAoNCkpCisgIChpbmRpY2VzIGtleXdvcmQgIiIgKChtdHJ4MCAwKSAobXRyeDEgMSkgKG10cngyIDIpIChtdHJ4MyAzKSkpCisgIDsgTWFzayB3aXRoICQzIHRvIGVuc3VyZSAwIDw9IGluZGV4IDwgNC4KKyAgKGdldCAoaW5kZXgpIChyZWcgaC1mciAobXVsIChhbmQgVVFJIGluZGV4IDMpIDE2KSkpCisgIChzZXQgKGluZGV4IG5ld3ZhbCkgKHNldCAocmVnIGgtZnIgKG11bCAoYW5kIFVRSSBpbmRleCAzKSAxNikpIG5ld3ZhbCkpCispCisKKyhkZWZpbmUtcG1hY3JvICgtYnVpbGQtZHJlZy1uYW1lIG4pICgoLnN5bSBkciBuKSBuKSkKKworKGRlZmluZS1oYXJkd2FyZQorICAobmFtZSBoLWRyKQorICAoY29tbWVudCAiRG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMiKQorICAoYXR0cnMgKElTQSBtZWRpYSxjb21wYWN0KSBWSVJUVUFMKQorICAodHlwZSByZWdpc3RlciBERiAoMzIpKQorICAoaW5kaWNlcyBrZXl3b3JkICIiICgubWFwIC1idWlsZC1kcmVnLW5hbWUgKC5pb3RhIDY0KSkpCisgIChnZXQgKGluZGV4KQorICAgICAgIChzdWJ3b3JkIERGCisJCShvcgorCQkgKHNsbCBESSAoemV4dCBESSAoc3Vid29yZCBTSSAocmVnIGgtZnIgaW5kZXgpIDApKSAzMikKKwkJICh6ZXh0IERJIChzdWJ3b3JkIFNJIChyZWcgaC1mciAoYWRkIGluZGV4IDEpKSAwKSkpIDApKQorICAoc2V0IChpbmRleCBuZXd2YWwpCisgICAgICAgKHNlcXVlbmNlICgpCisJCSAoc2V0IChyZWcgaC1mciBpbmRleCkKKwkJICAgICAgKHN1YndvcmQgU0YgKHN1YndvcmQgU0kgbmV3dmFsIDApIDApKQorCQkgKHNldCAocmVnIGgtZnIgKGFkZCBpbmRleCAxKSkKKwkJICAgICAgKHN1YndvcmQgU0YgKHN1YndvcmQgU0kgbmV3dmFsIDEpIDApKSkpCispCisKKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC10cikKKyAgKGNvbW1lbnQgIkJyYW5jaCB0YXJnZXQgcmVnaXN0ZXJzIikKKyAgKGF0dHJzIChJU0EgbWVkaWEpKQorICAodHlwZSByZWdpc3RlciBESSAoOCkpCisgIChpbmRpY2VzIGtleXdvcmQgIiIgKCh0cjAgMCkgKHRyMSAxKSAodHIyIDIpICh0cjMgMykgKHRyNCA0KSAodHI1IDUpICh0cjYgNikgKHRyNyA3KSkpCispCisKKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC1lbmRpYW4pCisgIChjb21tZW50ICJDdXJyZW50IGVuZGlhbiBtb2RlIikKKyAgKGF0dHJzIChJU0EgY29tcGFjdCxtZWRpYSkgVklSVFVBTCkKKyAgKHR5cGUgcmVnaXN0ZXIgQkkpCisgIChnZXQgKCkgKGMtY2FsbCBCSSAic2g2NF9lbmRpYW4iKSkKKyAgKHNldCAobmV3dmFsKSAoZXJyb3IgImNhbm5vdCBhbHRlciB0YXJnZXQgYnl0ZSBvcmRlciBtaWQtcHJvZ3JhbSIpKQorKQorCisoZGVmaW5lLWhhcmR3YXJlCisgIChuYW1lIGgtaXNtKQorICAoY29tbWVudCAiQ3VycmVudCBpbnN0cnVjdGlvbiBzZXQgbW9kZSIpCisgIChhdHRycyAoSVNBIGNvbXBhY3QsbWVkaWEpKQorICAodHlwZSByZWdpc3RlciBCSSkKKyAgKGdldCAoKSAocmF3LXJlZyBoLWlzbSkpCisgIChzZXQgKG5ld3ZhbCkgKGVycm9yICJjYW5ub3Qgc2V0IGlzbSBkaXJlY3RseSIpKQorKQorCisMCis7IE9wZXJhbmRzLgorCisoZG5vcCBlbmRpYW4gIkVuZGlhbiBtb2RlIiAoKElTQSBjb21wYWN0LG1lZGlhKSkgaC1lbmRpYW4gZi1uaWwpCisoZG5vcCBpc20gICAgIkluc3RydWN0aW9uIHNldCBtb2RlIiAoKElTQSBjb21wYWN0LG1lZGlhKSkgaC1pc20gZi1uaWwpCisKKzsgVW5pdmVyc2FsbHkgdXNlZnVsIG1hY3Jvcy4KKworOyBBIHBtYWNybyBmb3IgdXNlIGluIHNlbWFudGljIGJvZGllcyBvZiB1bmltcGxlbWVudGVkIGluc25zLgorKGRlZmluZS1wbWFjcm8gKHVuaW1wIG1uZW1vbmljKSAobm9wKSkKKworOyBKb2luIDIgaW50cyB0b2dldGhlciBpbiBuYXR1cmFsIGJpdCBvcmRlci4KKyhkZWZpbmUtcG1hY3JvICgtam9pbi1zaSBzMSBzMCkKKyAgKG9yIChzbGwgKHpleHQgREkgczEpIDMyKQorICAgICAgKHpleHQgREkgczApKSkKKworOyBKb2luIDQgaGFsZi1pbnRzIHRvZ2V0aGVyIGluIG5hdHVyYWwgYml0IG9yZGVyLgorKGRlZmluZS1wbWFjcm8gKC1qb2luLWhpIGgzIGgyIGgxIGgwKQorICAob3IgKHNsbCAoemV4dCBESSBoMykgNDgpCisgICAgICAob3IgKHNsbCAoemV4dCBESSBoMikgMzIpCisJICAob3IgKHNsbCAoemV4dCBESSBoMSkgMTYpCisJICAgICAgKHpleHQgREkgaDApKSkpKQorCis7IEpvaW4gOCBxdWFydGVyLWludHMgdG9nZXRoZXIgaW4gbmF0dXJhbCBiaXQgb3JkZXIuCisoZGVmaW5lLXBtYWNybyAoLWpvaW4tcWkgYjcgYjYgYjUgYjQgYjMgYjIgYjEgYjApCisgIChvciAoc2xsICh6ZXh0IERJIGI3KSA1NikKKyAgICAgIChvciAoc2xsICh6ZXh0IERJIGI2KSA0OCkKKwkgIChvciAoc2xsICh6ZXh0IERJIGI1KSA0MCkKKwkgICAgICAob3IgKHNsbCAoemV4dCBESSBiNCkgMzIpCisJCSAgKG9yIChzbGwgKHpleHQgREkgYjMpIDI0KQorCQkgICAgICAob3IgKHNsbCAoemV4dCBESSBiMikgMTYpCisJCQkgIChvciAoc2xsICh6ZXh0IERJIGIxKSA4KQorCQkJICAgICAgKHpleHQgREkgYjApKSkpKSkpKSkKKworDAorOyBJbmNsdWRlIHRoZSB0d28gaW5zdHJ1Y3Rpb24gc2V0IGRlc2NyaXB0aW9ucyBmcm9tIHRoZWlyIHJlc3BlY3RpdmUKKzsgc291cmNlIGZpbGVzLgorCisoaWYgKGtlZXAtaXNhPyAoY29tcGFjdCkpCisgICAgKGluY2x1ZGUgInNoNjQtY29tcGFjdC5jcHUiKSkKKworKGlmIChrZWVwLWlzYT8gKG1lZGlhKSkKKyAgICAoaW5jbHVkZSAic2g2NC1tZWRpYS5jcHUiKSkKZGlmZiAtLWdpdCBhL2NwdS9zaC5vcGMgYi9jcHUvc2gub3BjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZGI5N2YKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvc2gub3BjCkBAIC0wLDAgKzEsNzggQEAKKy8qIFNIbWVkaWEgb3Bjb2RlIHN1cHBvcnQuICAtKi0gQyAtKi0KKworICAgQ29weXJpZ2h0IDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIENvbnRyaWJ1dGVkIGJ5IFJlZCBIYXQgSW5jOyBkZXZlbG9wZWQgdW5kZXIgY29udHJhY3QgZnJvbSBIaXRhY2hpCisgICBTZW1pY29uZHVjdG9yIChBbWVyaWNhKSBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQmludXRpbHMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKworKi8KKy8qIFRoaXMgZmlsZSBpcyBhbiBhZGRlbmR1bSB0byBzaC1tZWRpYS5jcHUuICBIZWF2eSB1c2Ugb2YgQyBjb2RlIGlzbid0CisgICBhcHByb3ByaWF0ZSBpbiAuY3B1IGZpbGVzLCBzbyBpdCByZXNpZGVzIGhlcmUuICBUaGlzIGVzcGVjaWFsbHkgYXBwbGllcworICAgdG8gYXNzZW1ibHkvZGlzYXNzZW1ibHkgd2hlcmUgcGFyc2luZy9wcmludGluZyBjYW4gYmUgcXVpdGUgaW52b2x2ZWQuCisgICBTdWNoIHRoaW5ncyBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhlIHNwZWNpZmljYXRpb24gb2YgdGhlIGNwdSwgcGVyIHNlLAorICAgc28gLmNwdSBmaWxlcyBwcm92aWRlIHRoZSBnZW5lcmFsIGZyYW1ld29yayBhbmQgLm9wYyBmaWxlcyBoYW5kbGUgdGhlCisgICBuaXR0eS1ncml0dHkgZGV0YWlscyBhcyBuZWNlc3NhcnkuCisKKyAgIEVhY2ggc2VjdGlvbiBpcyBkZWxpbWl0ZWQgd2l0aCBzdGFydCBhbmQgZW5kIG1hcmtlcnMuCisKKyAgIDxhcmNoPi1vcGMuaCBhZGRpdGlvbnMgdXNlOiAiLS0gb3BjLmgiCisgICA8YXJjaD4tb3BjLmMgYWRkaXRpb25zIHVzZTogIi0tIG9wYy5jIgorICAgPGFyY2g+LWFzbS5jIGFkZGl0aW9ucyB1c2U6ICItLSBhc20uYyIKKyAgIDxhcmNoPi1kaXMuYyBhZGRpdGlvbnMgdXNlOiAiLS0gZGlzLmMiCisgICA8YXJjaD4taWJkLmggYWRkaXRpb25zIHVzZTogIi0tIGliZC5oIgorKi8KKwwKKy8qIC0tIG9wYy5oICovCisKKy8qIEFsbG93cyByZWFzb24gY29kZXMgdG8gYmUgb3V0cHV0IHdoZW4gYXNzZW1ibGVyIGVycm9ycyBvY2N1ci4gICovCisjZGVmaW5lIENHRU5fVkVSQk9TRV9BU1NFTUJMRVJfRVJST1JTCisKKy8qIE92ZXJyaWRlIGRpc2Fzc2VtYmx5IGhhc2hpbmcgLSB0aGVyZSBhcmUgdmFyaWFibGUgYml0cyBpbiB0aGUgdG9wCisgICBieXRlIG9mIHRoZXNlIGluc3RydWN0aW9ucy4gICovCisjZGVmaW5lIENHRU5fRElTX0hBU0hfU0laRSA4CisjZGVmaW5lIENHRU5fRElTX0hBU0goYnVmLHZhbHVlKSAoKCgqICh1bnNpZ25lZCBjaGFyKikgKGJ1ZikpID4+IDYpICUgQ0dFTl9ESVNfSEFTSF9TSVpFKQorCisvKiAtLSBhc20uYyAqLworCitzdGF0aWMgY29uc3QgY2hhciAqCitwYXJzZV9mc2QgKGNkLCBzdHJwLCBvcGluZGV4LCB2YWx1ZXApCisgICAgIENHRU5fQ1BVX0RFU0MgY2Q7CisgICAgIGNvbnN0IGNoYXIgKipzdHJwOworICAgICBpbnQgb3BpbmRleDsKKyAgICAgbG9uZyAqdmFsdWVwOworeworICBhYm9ydCgpOworfQorCisvKiAtLSBkaXMuYyAqLworCitzdGF0aWMgdm9pZAorcHJpbnRfbGlrZWx5IChjZCwgZGlzX2luZm8sIHZhbHVlLCBhdHRycywgcGMsIGxlbmd0aCkKKyAgICAgQ0dFTl9DUFVfREVTQyBjZDsKKyAgICAgUFRSIGRpc19pbmZvOworICAgICBsb25nIHZhbHVlOworICAgICB1bnNpZ25lZCBpbnQgYXR0cnM7CisgICAgIGJmZF92bWEgcGM7CisgICAgIGludCBsZW5ndGg7Cit7CisgIGRpc2Fzc2VtYmxlX2luZm8gKmluZm8gPSAoZGlzYXNzZW1ibGVfaW5mbyAqKSBkaXNfaW5mbzsKKyAgKCppbmZvLT5mcHJpbnRmX2Z1bmMpIChpbmZvLT5zdHJlYW0sICh2YWx1ZSkgPyAiL2wiIDogIi91Iik7Cit9CisKKy8qIC0tICovCmRpZmYgLS1naXQgYS9jcHUvc2g2NC1jb21wYWN0LmNwdSBiL2NwdS9zaDY0LWNvbXBhY3QuY3B1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MzViMWIKLS0tIC9kZXYvbnVsbAorKysgYi9jcHUvc2g2NC1jb21wYWN0LmNwdQpAQCAtMCwwICsxLDE3NDcgQEAKKzsgSGl0YWNoaSBTSGNvbXBhY3QgaW5zdHJ1Y3Rpb24gc2V0IGRlc2NyaXB0aW9uLiAgLSotIFNjaGVtZSAtKi0KKzsKKzsgQ29weXJpZ2h0IDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7Cis7IENvbnRyaWJ1dGVkIGJ5IFJlZCBIYXQgSW5jOyBkZXZlbG9wZWQgdW5kZXIgY29udHJhY3QgZnJvbSBIaXRhY2hpCis7IFNlbWljb25kdWN0b3IgKEFtZXJpY2EpIEluYy4KKzsKKzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBCaW51dGlscy4KKzsKKzsgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzsKKzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzsKKzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzsgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKzsgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKwwKKzsgZHNoY2YgLS0gZGVmaW5lLW5vcm1hbC1zaC1jb21wYWN0LWZpZWxkCisKKyhkZWZpbmUtcG1hY3JvIChkc2hjZiB4bmFtZSB4Y29tbWVudCBpZ25vcmVkIHhzdGFydCB4bGVuZ3RoKQorICAoZG5mIHhuYW1lIHhjb21tZW50ICgoSVNBIGNvbXBhY3QpKSB4c3RhcnQgeGxlbmd0aCkpCisKKzsgZHNoY29wIC0tIGRlZmluZS1ub3JtYWwtc2gtY29tcGFjdC1vcGVyYW5kCisKKyhkZWZpbmUtcG1hY3JvIChkc2hjb3AgeG5hbWUgeGNvbW1lbnQgaWdub3JlZCB4aGFyZHdhcmUgeGZpZWxkKQorICAoZG5vcCB4bmFtZSB4Y29tbWVudCAoKElTQSBjb21wYWN0KSkgeGhhcmR3YXJlIHhmaWVsZCkpCisKKwwKKzsgU0hjb21wYWN0LXNwZWNpZmljIGF0dHJpYnV0ZXMuCisKKyhkZWZpbmUtYXR0cgorICAoZm9yIGluc24pCisgICh0eXBlIGJvb2xlYW4pCisgIChuYW1lIElMTFNMT1QpCisgIChjb21tZW50ICJpbnN0cnVjdGlvbiBtYXkgbm90IGFwcGVhciBpbiBhIGRlbGF5IHNsb3QiKQorKQorCisoZGVmaW5lLWF0dHIKKyAgKGZvciBpbnNuKQorICAodHlwZSBib29sZWFuKQorICAobmFtZSBGUC1JTlNOKQorICAoY29tbWVudCAiZmxvYXRpbmcgcG9pbnQgaW5zdHJ1Y3Rpb24iKQorKQorCisoZGVmaW5lLWtleXdvcmQKKyAgKG5hbWUgZnJjLW5hbWVzKQorICAoYXR0cnMgKElTQSBjb21wYWN0KSkKKyAgKHByaW50LW5hbWUgaC1mcmMpCisgICh2YWx1ZXMgKGZyMCAgIDApIChmcjEgICAxKSAoZnIyICAgMikgKGZyMyAgIDMpIChmcjQgICA0KSAoZnI1ICAgNSkKKwkgIChmcjYgICA2KSAoZnI3ICAgNykgKGZyOCAgIDgpIChmcjkgICA5KSAoZnIxMCAxMCkgKGZyMTEgMTEpCisJICAoZnIxMiAxMikgKGZyMTMgMTMpIChmcjE0IDE0KSAoZnIxNSAxNSkpCispCisKKyhkZWZpbmUta2V5d29yZAorICAobmFtZSBkcmMtbmFtZXMpCisgIChhdHRycyAoSVNBIGNvbXBhY3QpKQorICAocHJpbnQtbmFtZSBoLWRyYykKKyAgKHZhbHVlcyAoZHIwIDApIChkcjIgMikgKGRyNCA0KSAoZHI2IDYpIChkcjggOCkgKGRyMTAgMTApIChkcjEyIDEyKSAoZHIxNCAxNCkpCispCisKKyhkZWZpbmUta2V5d29yZAorICAobmFtZSB4Zi1uYW1lcykKKyAgKGF0dHJzIChJU0EgY29tcGFjdCkpCisgIChwcmludC1uYW1lIGgteGYpCisgICh2YWx1ZXMgKHhmMCAgIDApICh4ZjEgICAxKSAoeGYyICAgMikgKHhmMyAgIDMpICh4ZjQgICA0KSAoeGY1ICAgNSkKKwkgICh4ZjYgICA2KSAoeGY3ICAgNykgKHhmOCAgIDgpICh4ZjkgICA5KSAoeGYxMCAxMCkgKHhmMTEgMTEpCisJICAoeGYxMiAxMikgKHhmMTMgMTMpICh4ZjE0IDE0KSAoeGYxNSAxNSkpCispCisKKzsgSGFyZHdhcmUgc3BlY2lmaWMgdG8gdGhlIFNIY29tcGFjdCBtb2RlLgorCisoZGVmaW5lLXBtYWNybyAoZnJvbnQpIChtdWwgMTYgZnJiaXQpKQorKGRlZmluZS1wbWFjcm8gKGJhY2spIChtdWwgMTYgKG5vdCBmcmJpdCkpKQorCisoZGVmaW5lLWhhcmR3YXJlCisgIChuYW1lIGgtZnJjKQorICAoY29tbWVudCAiU2luZ2xlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMiKQorICAoYXR0cnMgVklSVFVBTCAoSVNBIGNvbXBhY3QpKQorICAoaW5kaWNlcyBleHRlcm4ta2V5d29yZCBmcmMtbmFtZXMpCisgICh0eXBlIHJlZ2lzdGVyIFNGICgxNikpCisgIChnZXQgKGluZGV4KSAocmVnIGgtZnIgKGFkZCAoZnJvbnQpIGluZGV4KSkpCisgIChzZXQgKGluZGV4IG5ld3ZhbCkgKHNldCAocmVnIGgtZnIgKGFkZCAoZnJvbnQpIGluZGV4KSkgbmV3dmFsKSkKKykKKworKGRlZmluZS1oYXJkd2FyZQorICAobmFtZSBoLWRyYykKKyAgKGNvbW1lbnQgIkRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIikKKyAgKGF0dHJzIFZJUlRVQUwgKElTQSBjb21wYWN0KSkKKyAgKGluZGljZXMgZXh0ZXJuLWtleXdvcmQgZHJjLW5hbWVzKQorICAodHlwZSByZWdpc3RlciBERiAoOCkpCisgIChnZXQgKGluZGV4KSAocmVnIGgtZHIgKGFkZCAoZnJvbnQpIGluZGV4KSkpCisgIChzZXQgKGluZGV4IG5ld3ZhbCkgKHNldCAocmVnIGgtZHIgKGFkZCAoZnJvbnQpIGluZGV4KSkgbmV3dmFsKSkKKykKKworKGRlZmluZS1oYXJkd2FyZQorICAobmFtZSBoLXhmKQorICAoY29tbWVudCAiRXh0ZW5kZWQgc2luZ2xlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMiKQorICAoYXR0cnMgVklSVFVBTCAoSVNBIGNvbXBhY3QpKQorICAoaW5kaWNlcyBleHRlcm4ta2V5d29yZCB4Zi1uYW1lcykKKyAgKHR5cGUgcmVnaXN0ZXIgU0YgKDE2KSkKKyAgKGdldCAoaW5kZXgpIChyZWcgaC1mciAoYWRkIChiYWNrKSBpbmRleCkpKQorICAoc2V0IChpbmRleCBuZXd2YWwpIChzZXQgKHJlZyBoLWZyIChhZGQgKGJhY2spIGluZGV4KSkgbmV3dmFsKSkKKykKKworKGRlZmluZS1oYXJkd2FyZQorICAobmFtZSBoLXhkKQorICAoY29tbWVudCAiRXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMiKQorICAoYXR0cnMgVklSVFVBTCAoSVNBIGNvbXBhY3QpKQorICAoaW5kaWNlcyBleHRlcm4ta2V5d29yZCBmcmMtbmFtZXMpCisgICh0eXBlIHJlZ2lzdGVyIERGICg4KSkKKyAgKGdldCAoaW5kZXgpIChyZWcgaC1kciAoYWRkIChiYWNrKSBpbmRleCkpKQorICAoc2V0IChpbmRleCBuZXd2YWwpIChzZXQgKHJlZyBoLWRyIChhZGQgKGJhY2spIGluZGV4KSkgbmV3dmFsKSkKKykKKworKGRlZmluZS1oYXJkd2FyZQorICAobmFtZSBoLWZ2YykKKyAgKGNvbW1lbnQgIlNpbmdsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmVjdG9ycyIpCisgIChhdHRycyBWSVJUVUFMIChJU0EgY29tcGFjdCkpCisgIChpbmRpY2VzIGtleXdvcmQgIiIgKChmdjAgMCkgKGZ2NCA0KSAoZnY4IDgpIChmdjEyIDEyKSkpCisgICh0eXBlIHJlZ2lzdGVyIFNGICg0KSkKKyAgKGdldCAoaW5kZXgpIChyZWcgaC1mciAoYWRkIChmcm9udCkgaW5kZXgpKSkKKyAgKHNldCAoaW5kZXggbmV3dmFsKSAoc2V0IChyZWcgaC1mciAoYWRkIChmcm9udCkgaW5kZXgpKSBuZXd2YWwpKQorKQorCisoZGVmaW5lLWhhcmR3YXJlCisgIChuYW1lIGgtZnBjY3IpCisgIChjb21tZW50ICJTSGNvbXBhY3QgZmxvYXRpbmcgcG9pbnQgc3RhdHVzL2NvbnRyb2wgcmVnaXN0ZXIiKQorICAoYXR0cnMgVklSVFVBTCAoSVNBIGNvbXBhY3QpKQorICAodHlwZSByZWdpc3RlciBTSSkKKyAgKGdldCAoKSAob3IgKG9yIChvciAocmF3LXJlZyBoLWZwc2NyKSAoc2xsIFNJIHByYml0IDE5KSkgKHNsbCBTSSBzemJpdCAyMCkpIChzbGwgU0kgZnJiaXQgMjEpKSkKKyAgKHNldCAobmV3dmFsdWUpIChzZXF1ZW5jZSAoKQorCQkJICAgIChzZXQgKHJlZyBoLWZwc2NyKSBuZXd2YWx1ZSkKKwkJCSAgICAoc2V0IHByYml0IChhbmQgKHNybCBuZXd2YWx1ZSAxOSkgMSkpCisJCQkgICAgKHNldCBzemJpdCAoYW5kIChzcmwgbmV3dmFsdWUgMjApIDEpKQorCQkJICAgIChzZXQgZnJiaXQgKGFuZCAoc3JsIG5ld3ZhbHVlIDIxKSAxKSkpKQorKQorCisoZGVmaW5lLWhhcmR3YXJlCisgIChuYW1lIGgtZ2JyKQorICAoY29tbWVudCAiR2xvYmFsIGJhc2UgcmVnaXN0ZXIiKQorICAoYXR0cnMgVklSVFVBTCAoSVNBIGNvbXBhY3QpKQorICAodHlwZSByZWdpc3RlciBTSSkKKyAgKGdldCAoKSAoc3Vid29yZCBTSSAocmF3LXJlZyBoLWdyIDE2KSAxKSkKKyAgKHNldCAobmV3dmFsKSAoc2V0IChyYXctcmVnIGgtZ3IgMTYpIChleHQgREkgbmV3dmFsKSkpCispCisKKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC1wcikKKyAgKGNvbW1lbnQgIlByb2NlZHVyZSBsaW5rIHJlZ2lzdGVyIikKKyAgKGF0dHJzIFZJUlRVQUwgKElTQSBjb21wYWN0KSkKKyAgKHR5cGUgcmVnaXN0ZXIgU0kpCisgIChnZXQgKCkgKHN1YndvcmQgU0kgKHJhdy1yZWcgaC1nciAxOCkgMSkpCisgIChzZXQgKG5ld3ZhbCkgKHNldCAocmF3LXJlZyBoLWdyIDE4KSAoZXh0IERJIG5ld3ZhbCkpKQorKQorCisoZGVmaW5lLWhhcmR3YXJlCisgIChuYW1lIGgtbWFjbCkKKyAgKGNvbW1lbnQgIk11bHRpcGxlLWFjY3VtdWxhdGUgbG93IHJlZ2lzdGVyIikKKyAgKGF0dHJzIFZJUlRVQUwgKElTQSBjb21wYWN0KSkKKyAgKHR5cGUgcmVnaXN0ZXIgU0kpCisgIChnZXQgKCkgKHN1YndvcmQgU0kgKHJhdy1yZWcgaC1nciAxNykgMSkpCisgIChzZXQgKG5ld3ZhbCkgKHNldCAocmF3LXJlZyBoLWdyIDE3KSAoLWpvaW4tc2kgKHN1YndvcmQgU0kgKHJhdy1yZWcgaC1nciAxNykgMCkgbmV3dmFsKSkpCispCisKKyhkZWZpbmUtaGFyZHdhcmUKKyAgKG5hbWUgaC1tYWNoKQorICAoY29tbWVudCAiTXVsdGlwbHktYWNjdW11bGF0ZSBoaWdoIHJlZ2lzdGVyIikKKyAgKGF0dHJzIFZJUlRVQUwgKElTQSBjb21wYWN0KSkKKyAgKHR5cGUgcmVnaXN0ZXIgU0kpCisgIChnZXQgKCkgKHN1YndvcmQgU0kgKHJhdy1yZWcgaC1nciAxNykgMCkpCisgIChzZXQgKG5ld3ZhbCkgKHNldCAocmF3LXJlZyBoLWdyIDE3KSAoLWpvaW4tc2kgbmV3dmFsIChzdWJ3b3JkIFNJIChyYXctcmVnIGgtZ3IgMTcpIDEpKSkpCispCisgIAorKGRlZmluZS1oYXJkd2FyZQorICAobmFtZSBoLXRiaXQpCisgIChjb21tZW50ICJDb25kaXRpb24gY29kZSBmbGFnIikKKyAgKGF0dHJzIFZJUlRVQUwgKElTQSBjb21wYWN0KSkKKyAgKHR5cGUgcmVnaXN0ZXIgQkkpCisgIChnZXQgKCkgKGFuZCBCSSAocmF3LXJlZyBoLWdyIDE5KSAxKSkKKyAgKHNldCAobmV3dmFsKSAoc2V0IChyYXctcmVnIGgtZ3IgMTkpIChvciAoYW5kIChyYXctcmVnIGgtZ3IgMTkpIChpbnYgREkgMSkpICh6ZXh0IERJIG5ld3ZhbCkpKSkKKykKKworDAorKGRzaGNmIGYtb3A0ICAgICAiT3Bjb2RlICg0IGJpdHMpIiAgICAgICAgICgpICAxNSAgIDQpCisoZHNoY2YgZi1vcDggICAgICJPcGNvZGUgKDggYml0cykiICAgICAgICAgKCkgIDE1ICAgOCkKKyhkc2hjZiBmLW9wMTYgICAgIk9wY29kZSAoMTYgYml0cykiICAgICAgICAoKSAgMTUgIDE2KQorCisoZHNoY2YgZi1zdWI0ICAgICJTdWIgb3Bjb2RlICg0IGJpdHMpIiAgICAgKCkgICAzICAgNCkKKyhkc2hjZiBmLXN1YjggICAgIlN1YiBvcGNvZGUgKDggYml0cykiICAgICAoKSAgIDcgICA4KQorKGRzaGNmIGYtc3ViMTAgICAiU3ViIG9wY29kZSAoMTAgYml0cykiICAgICgpICAgOSAgMTApCisKKyhkc2hjZiBmLXJuICAgICAgIlJlZ2lzdGVyIHNlbGVjdG9yIG4iICAgICAoKSAgMTEgICA0KQorKGRzaGNmIGYtcm0gICAgICAiUmVnaXN0ZXIgc2VsZWN0b3IgbSIgICAgICgpICAgNyAgIDQpCisKKyhkc2hjZiBmLTgtMSAgICAgIk9uZSBiaXQgYXQgYml0IDgiICAgICAgICAoKSAgIDggICAxKQorCisoZGYgIGYtZGlzcDggICJEaXNwbGFjZW1lbnQgKDggYml0cykiICAoKElTQSBjb21wYWN0KSBQQ1JFTC1BRERSKSA3IDggSU5UCisgICAgICgodmFsdWUgcGMpIChzcmEgU0kgdmFsdWUgMSkpCisgICAgICgodmFsdWUgcGMpIChhZGQgU0kgKHNsbCBTSSB2YWx1ZSAxKSAoYWRkIHBjIDQpKSkpCisKKyhkZiAgZi1kaXNwMTIgIkRpc3BsYWNlbWVudCAoMTIgYml0cykiICgoSVNBIGNvbXBhY3QpIFBDUkVMLUFERFIpIDExIDEyIElOVAorICAgICAoKHZhbHVlIHBjKSAoc3JhIFNJIHZhbHVlIDEpKQorICAgICAoKHZhbHVlIHBjKSAoYWRkIFNJIChzbGwgU0kgdmFsdWUgMSkgKGFkZCBwYyA0KSkpKQorCisoZHNoY2YgZi1pbW04ICAgICJJbW1lZGlhdGUgKDggYml0cykiICAgICAgKCkgICA3ICAgOCkKKyhkc2hjZiBmLWltbTQgICAgIkltbWVkaWF0ZSAoNCBiaXRzKSIgICAgICAoKSAgIDMgICA0KQorCisoZGYgZi1pbW00eDIgICAgICJJbW1lZGlhdGUgKDQgYml0cykiICAgICAgKChJU0EgY29tcGFjdCkpIDMgNCBVSU5UCisgICAgKCh2YWx1ZSBwYykgKHNybCBTSSB2YWx1ZSAxKSkKKyAgICAoKHZhbHVlIHBjKSAoc2xsIFNJIHZhbHVlIDEpKSkKKworKGRmIGYtaW1tNHg0ICAgICAiSW1tZWRpYXRlICg0IGJpdHMpIiAgICAgICgoSVNBIGNvbXBhY3QpKSAzIDQgVUlOVAorICAgICgodmFsdWUgcGMpIChzcmwgU0kgdmFsdWUgMikpCisgICAgKCh2YWx1ZSBwYykgKHNsbCBTSSB2YWx1ZSAyKSkpCisKKyhkZiBmLWltbTh4MiAgICAgIkltbWVkaWF0ZSAoOCBiaXRzKSIgICAgICAoKElTQSBjb21wYWN0KSkgNyA4IFVJTlQKKyAgICAoKHZhbHVlIHBjKSAoc3JhIFNJIHZhbHVlIDEpKQorICAgICgodmFsdWUgcGMpIChzbGwgU0kgdmFsdWUgMSkpKQorCisoZGYgZi1pbW04eDQgICAgICJJbW1lZGlhdGUgKDggYml0cykiICAgICAgKChJU0EgY29tcGFjdCkpIDcgOCBVSU5UCisgICAgKCh2YWx1ZSBwYykgKHNyYSBTSSB2YWx1ZSAyKSkKKyAgICAoKHZhbHVlIHBjKSAoc2xsIFNJIHZhbHVlIDIpKSkKKworKGRmIGYtZG4gIkRvdWJsZSBzZWxlY3RvciBuIiAoKElTQSBjb21wYWN0KSkgMTEgMyBVSU5UCisgICAgKCh2YWx1ZSBwYykgKHNybCBTSSB2YWx1ZSAxKSkKKyAgICAoKHZhbHVlIHBjKSAoc2xsIFNJIHZhbHVlIDEpKSkKKworKGRmIGYtZG0gICAgICAgICAiRG91YmxlIHNlbGVjdG9yIG0iICAgICAgICgoSVNBIGNvbXBhY3QpKSA3IDMgVUlOVAorICAgICgodmFsdWUgcGMpIChzcmwgU0kgdmFsdWUgMSkpCisgICAgKCh2YWx1ZSBwYykgKHNsbCBTSSB2YWx1ZSAxKSkpCisKKyhkZiBmLXZuICAgICAgICAgIlZlY3RvciBzZWxlY3RvciBuIiAgICAgICAoKElTQSBjb21wYWN0KSkgMTEgMiBVSU5UCisgICAgKCh2YWx1ZSBwYykgKHNybCBTSSB2YWx1ZSAyKSkKKyAgICAoKHZhbHVlIHBjKSAoc2xsIFNJIHZhbHVlIDIpKSkKKworKGRmIGYtdm0gICAgICAgICAiVmVjdG9yIHNlbGVjdG9yIG0iICAgICAgICgoSVNBIGNvbXBhY3QpKSA5IDIgVUlOVAorICAgICgodmFsdWUgcGMpIChzcmwgU0kgdmFsdWUgMikpCisgICAgKCh2YWx1ZSBwYykgKHNsbCBTSSB2YWx1ZSAyKSkpCisKKyhkZiBmLXhuICAgICAgICAgIkV4dGVuZGVkIHNlbGVjdG9yIG4iICAgICAoKElTQSBjb21wYWN0KSkgMTEgMyBVSU5UCisgICAgKCh2YWx1ZSBwYykgKHNybCBTSSB2YWx1ZSAxKSkKKyAgICAoKHZhbHVlIHBjKSAoYWRkIFNJIChzbGwgU0kgdmFsdWUgMSkgMSkpKQorCisoZGYgZi14bSAgICAgICAgICJFeHRlbmRlZCBzZWxlY3RvciBtIiAgICAgKChJU0EgY29tcGFjdCkpIDcgMyBVSU5UCisgICAgKCh2YWx1ZSBwYykgKHNybCBTSSB2YWx1ZSAxKSkKKyAgICAoKHZhbHVlIHBjKSAoYWRkIFNJIChzbGwgU0kgdmFsdWUgMSkgMSkpKQorCisMCis7IE9wZXJhbmRzLgorCisoZHNoY29wIHJtICAgICAiTGVmdCBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXIiICAgICAgICAgICgpICAgaC1ncmMgICBmLXJtKQorKGRzaGNvcCBybiAgICAgIlJpZ2h0IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlciIgICAgICAgICAoKSAgIGgtZ3JjICAgZi1ybikKKyhkc2hjb3AgcjAgICAgICJSZWdpc3RlciAwIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICBoLWdyYyAgIDApCisKKyhkc2hjb3AgZnJuICAgICJTaW5nbGUgcHJlY2lzaW9uIHJlZ2lzdGVyIiAgICAgICAgICAgICAgKCkgICBoLWZyYyAgIGYtcm4pCisoZHNoY29wIGZybSAgICAiU2luZ2xlIHByZWNpc2lvbiByZWdpc3RlciIgICAgICAgICAgICAgICgpICAgaC1mcmMgICBmLXJtKQorCisoZHNoY29wIGZ2biAgICAiTGVmdCBmbG9hdGluZyBwb2ludCB2ZWN0b3IiICAgICAgICAgICAgICgpICAgaC1mdmMgICBmLXZuKQorKGRzaGNvcCBmdm0gICAgIlJpZ2h0IGZsb2F0aW5nIHBvaW50IHZlY3RvciIgICAgICAgICAgICAoKSAgIGgtZnZjICAgZi12bSkKKworKGRzaGNvcCBkcm4gICAgIkxlZnQgZG91YmxlIHByZWNpc2lvbiByZWdpc3RlciIgICAgICAgICAoKSAgIGgtZHJjICAgZi1kbikKKyhkc2hjb3AgZHJtICAgICJSaWdodCBkb3VibGUgcHJlY2lzaW9uIHJlZ2lzdGVyIiAgICAgICAgKCkgICBoLWRyYyAgIGYtZG0pCisKKyhkc2hjb3AgaW1tNCAgICJJbW1lZGlhdGUgdmFsdWUgKDQgYml0cykiCQkoKSAgIGgtc2ludCAgZi1pbW00KQorKGRzaGNvcCBpbW04ICAgIkltbWVkaWF0ZSB2YWx1ZSAoOCBiaXRzKSIgICAgICAgICAgICAgICAoKSAgIGgtc2ludCAgZi1pbW04KQorKGRzaGNvcCB1aW1tOCAgIkltbWVkaWF0ZSB2YWx1ZSAoOCBiaXRzIHVuc2lnbmVkKSIgICAgICAoKSAgIGgtdWludCAgZi1pbW04KQorCisoZHNoY29wIGltbTR4MiAiSW1tZWRpYXRlIHZhbHVlICg0IGJpdHMsIDJ4IHNjYWxlKSIgICAgICgpICAgaC11aW50ICBmLWltbTR4MikKKyhkc2hjb3AgaW1tNHg0ICJJbW1lZGlhdGUgdmFsdWUgKDQgYml0cywgNHggc2NhbGUpIiAgICAgKCkgICBoLXVpbnQgIGYtaW1tNHg0KQorKGRzaGNvcCBpbW04eDIgIkltbWVkaWF0ZSB2YWx1ZSAoOCBiaXRzLCAyeCBzY2FsZSkiICAgICAoKSAgIGgtdWludCAgZi1pbW04eDIpCisoZHNoY29wIGltbTh4NCAiSW1tZWRpYXRlIHZhbHVlICg4IGJpdHMsIDR4IHNjYWxlKSIgICAgICgpICAgaC11aW50ICBmLWltbTh4NCkKKworKGRzaGNvcCBkaXNwOCAgIkRpc3BsYWNlbWVudCAoOCBiaXRzKSIgICAgICAgICAgICAgICAgICAoKSAgIGgtaWFkZHIgZi1kaXNwOCkKKyhkc2hjb3AgZGlzcDEyICJEaXNwbGFjZW1lbnQgKDEyIGJpdHMpIiAgICAgICAgICAgICAgICAgKCkgICBoLWlhZGRyIGYtZGlzcDEyKQorCisoZHNoY29wIHJtNjQgICAiUmVnaXN0ZXIgbSAoNjQgYml0cykiICAgICAgICAgICAgICAgICAgICgpICAgaC1nciAgICBmLXJtKQorKGRzaGNvcCBybjY0ICAgIlJlZ2lzdGVyIG4gKDY0IGJpdHMpIiAgICAgICAgICAgICAgICAgICAoKSAgIGgtZ3IgICAgZi1ybikKKworKGRzaGNvcCBnYnIgICAgIkdsb2JhbCBiYXNlIHJlZ2lzdGVyIiAgICAgICAgICAgICAgICAgICAoKSAgIGgtZ2JyICAgZi1uaWwpCisoZHNoY29wIHByICAgICAiUHJvY2VkdXJlIGxpbmsgcmVnaXN0ZXIiICAgICAgICAgICAgICAgICgpICAgaC1wciAgICBmLW5pbCkKKworKGRzaGNvcCBmcHNjciAgIkZsb2F0aW5nIHBvaW50IHN0YXR1cy9jb250cm9sIHJlZ2lzdGVyIiAoKSAgIGgtZnBjY3IgZi1uaWwpCisKKyhkc2hjb3AgdGJpdCAgICJDb25kaXRpb24gY29kZSBmbGFnIiAgICAgICAgICAgICAgICAgICAgKCkgICBoLXRiaXQgIGYtbmlsKQorKGRzaGNvcCBzYml0ICAgIk11bHRpcGx5LWFjY3VtdWxhdGUgc2F0dXJhdGlvbiBmbGFnIiAgICAoKSAgIGgtc2JpdCAgZi1uaWwpCisoZHNoY29wIG1iaXQgICAiRGl2aWRlLXN0ZXAgTSBmbGFnIiAgICAgICAgICAgICAgICAgICAgICgpICAgaC1tYml0ICBmLW5pbCkKKyhkc2hjb3AgcWJpdCAgICJEaXZpZGUtc3RlcCBRIGZsYWciICAgICAgICAgICAgICAgICAgICAgKCkgICBoLXFiaXQgIGYtbmlsKQorKGRzaGNvcCBmcHVsICAgIkZsb2F0aW5nIHBvaW50ID8/PyIJCQkoKSAgIGgtZnIgICAgMzIpCisKKyhkc2hjb3AgZnJiaXQgICJGbG9hdGluZyBwb2ludCByZWdpc3RlciBiYW5rIGJpdCIgICAgICAgKCkgICBoLWZyYml0IGYtbmlsKQorKGRzaGNvcCBzemJpdCAgIkZsb2F0aW5nIHBvaW50IHRyYW5zZmVyIHNpemUgYml0IiAgICAgICAoKSAgIGgtc3piaXQgZi1uaWwpCisoZHNoY29wIHByYml0ICAiRmxvYXRpbmcgcG9pbnQgcHJlY2lzaW9uIGJpdCIgICAgICAgICAgICgpICAgaC1wcmJpdCBmLW5pbCkKKworKGRzaGNvcCBtYWNsICAgIk11bHRpcGx5LWFjY3VtdWxhdGUgbG93IHJlZ2lzdGVyIiAgICAgICAoKSAgIGgtbWFjbCAgZi1uaWwpCisoZHNoY29wIG1hY2ggICAiTXVsdGlwbHktYWNjdW11bGF0ZSBoaWdoIHJlZ2lzdGVyIiAgICAgICgpICAgaC1tYWNoICBmLW5pbCkKKworCisoZGVmaW5lLW9wZXJhbmQgKG5hbWUgZnNkbSkgKGNvbW1lbnQgImJhciIpCisgIChhdHRycyAoSVNBIGNvbXBhY3QpKSAodHlwZSBoLWZyYykgKGluZGV4IGYtcm0pIChoYW5kbGVycyAocGFyc2UgImZzZCIpKSkKKworKGRlZmluZS1vcGVyYW5kIChuYW1lIGZzZG4pIChjb21tZW50ICJiYXIiKQorICAoYXR0cnMgKElTQSBjb21wYWN0KSkgKHR5cGUgaC1mcmMpIChpbmRleCBmLXJuKSkKKwwKKworOyBDb3ZlciBtYWNybyB0byBkbmkgdG8gaW5kaWNhdGUgdGhlc2UgYXJlIGFsbCBTSGNvbXBhY3QgaW5zdHJ1Y3Rpb25zLgorOyBkc2htaTogZGVmaW5lLW5vcm1hbC1zaC1jb21wYWN0LWluc24KKworKGRlZmluZS1wbWFjcm8gKGRzaGNpIHhuYW1lIHhjb21tZW50IHhhdHRycyB4c3ludGF4IHhmb3JtYXQgeHNlbWFudGljcykKKyAgKGRlZmluZS1pbnNuCisgICAgKG5hbWUgKC5zeW0geG5hbWUgLWNvbXBhY3QpKQorICAgIChjb21tZW50IHhjb21tZW50KQorICAgICguc3BsaWNlIGF0dHJzICgudW5zcGxpY2UgeGF0dHJzKSAoSVNBIGNvbXBhY3QpKQorICAgIChzeW50YXggeHN5bnRheCkKKyAgICAoZm9ybWF0IHhmb3JtYXQpCisgICAgKHNlbWFudGljcyB4c2VtYW50aWNzKSkpCisKKyhkZWZpbmUtcG1hY3JvIChkciBvcGVyYW5kKSAocmVnIGgtZHIgKGluZGV4LW9mIG9wZXJhbmQpKSkKKyhkZWZpbmUtcG1hY3JvICh4ZCB4KSAocmVnIGgteGQgKGFuZCAoaW5kZXgtb2YgeCkgKGludiBRSSAxKSkpKQorDAorKGRzaGNpIGFkZCAiQWRkIgorICAgICAgICgpCisgICAgICAgImFkZCAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgMykgcm4gcm0gKGYtc3ViNCAxMikpCisgICAgICAgKHNldCBybiAoYWRkIHJuIHJtKSkpCisKKyhkc2hjaSBhZGRpICJBZGQgaW1tZWRpYXRlIgorICAgICAgICgpCisgICAgICAgImFkZCAjJGltbTgsICRybiIKKyAgICAgICAoKyAoZi1vcDQgNykgcm4gaW1tOCkKKyAgICAgICAoc2V0IHJuIChhZGQgcm4gKGV4dCBTSSAoYW5kIFFJIGltbTggMjU1KSkpKSkKKworKGRzaGNpIGFkZGMgIkFkZCB3aXRoIGNhcnJ5IgorICAgICAgICgpCisgICAgICAgImFkZGMgJHJtLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDMpIHJuIHJtIChmLXN1YjQgMTQpKQorICAgICAgIChzZXF1ZW5jZSAoKEJJIGZsYWcpKQorCQkgKHNldCBmbGFnIChhZGQtY2ZsYWcgcm4gcm0gdGJpdCkpCisJCSAoc2V0IHJuIChhZGRjIHJuIHJtIHRiaXQpKQorCQkgKHNldCB0Yml0IGZsYWcpKSkKKworKGRzaGNpIGFkZHYgIkFkZCB3aXRoIG92ZXJmbG93IgorICAgICAgICgpCisgICAgICAgImFkZHYgJHJtLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDMpIHJuIHJtIChmLXN1YjQgMTUpKQorICAgICAgIChzZXF1ZW5jZSAoKEJJIHQpKQorCQkgKHNldCB0IChhZGQtb2ZsYWcgcm4gcm0gMCkpCisJCSAoc2V0IHJuIChhZGQgcm4gcm0pKQorCQkgKHNldCB0Yml0IHQpKSkKKworKGRzaGNpIGFuZCAiQml0d2lzZSBBTkQiCisgICAgICAgKCkKKyAgICAgICAiYW5kICRybTY0LCAkcm42NCIKKyAgICAgICAoKyAoZi1vcDQgMikgcm42NCBybTY0IChmLXN1YjQgOSkpCisgICAgICAgKHNldCBybjY0IChhbmQgcm02NCBybjY0KSkpCisKKyhkc2hjaSBhbmRpICJCaXR3aXNlIEFORCBpbW1lZGlhdGUiCisgICAgICAgKCkKKyAgICAgICAiYW5kICMkdWltbTgsIHIwIgorICAgICAgICgrIChmLW9wOCAjeGM5KSB1aW1tOCkKKyAgICAgICAoc2V0IHIwIChhbmQgcjAgKHpleHQgREkgdWltbTgpKSkpCisKKyhkc2hjaSBhbmRiICJCaXR3aXNlIEFORCBtZW1vcnkgYnl0ZSIKKyAgICAgICAoKQorICAgICAgICJhbmQuYiAjJGltbTgsIEAocjAsIGdicikiCisgICAgICAgKCsgKGYtb3A4ICN4Y2QpIGltbTgpCisgICAgICAgKHNlcXVlbmNlICgoREkgYWRkcikgKFVRSSBkYXRhKSkKKwkJIChzZXQgYWRkciAoYWRkIHIwIGdicikpCisJCSAoc2V0IGRhdGEgKGFuZCAobWVtIFVRSSBhZGRyKSBpbW04KSkKKwkJIChzZXQgKG1lbSBVUUkgYWRkcikgZGF0YSkpKQorCisoZHNoY2kgYmYgIkNvbmRpdGlvbmFsIGJyYW5jaCIKKyAgICAgICAoKQorICAgICAgICJiZiAkZGlzcDgiCisgICAgICAgKCsgKGYtb3A4ICN4OGIpIGRpc3A4KQorICAgICAgIChpZiAobm90IHRiaXQpCisJICAgKHNldCBwYyBkaXNwOCkpKQorCisoZHNoY2kgYmZzICJDb25kaXRpb25hbCBicmFuY2ggd2l0aCBkZWxheSBzbG90IgorICAgICAgICgpCisgICAgICAgImJmL3MgJGRpc3A4IgorICAgICAgICgrIChmLW9wOCAjeDhmKSBkaXNwOCkKKyAgICAgICAoaWYgKG5vdCB0Yml0KQorCSAgIChkZWxheSAxIChzZXQgcGMgZGlzcDgpKSkpCisKKyhkc2hjaSBicmEgIkJyYW5jaCIKKyAgICAgICAoKQorICAgICAgICJicmEgJGRpc3AxMiIKKyAgICAgICAoKyAoZi1vcDQgMTApIGRpc3AxMikKKyAgICAgICAoZGVsYXkgMSAoc2V0IHBjIGRpc3AxMikpKQorCisoZHNoY2kgYnJhZiAiQnJhbmNoIGZhciIKKyAgICAgICAoKQorICAgICAgICJicmFmICRybiIKKyAgICAgICAoKyAoZi1vcDQgMCkgcm4gKGYtc3ViOCAzNSkpCisgICAgICAgKGRlbGF5IDEgKHNldCBwYyAoYWRkIChleHQgREkgcm4pIChhZGQgcGMgNCkpKSkpCisKKyhkc2hjaSBicmsgIkJyZWFrcG9pbnQiCisgICAgICAgKCkKKyAgICAgICAiYnJrIgorICAgICAgICgrIChmLW9wMTYgNTkpKQorICAgICAgIChjLWNhbGwgInNoNjRfYnJlYWsiIHBjKSkKKworKGRzaGNpIGJzciAiQnJhbmNoIHRvIHN1YnJvdXRpbmUiCisgICAgICAgKCkKKyAgICAgICAiYnNyICRkaXNwMTIiCisgICAgICAgKCsgKGYtb3A0IDExKSBkaXNwMTIpCisgICAgICAgKGRlbGF5IDEgKHNlcXVlbmNlICgpCisJCQkgIChzZXQgcHIgKGFkZCBwYyA0KSkKKwkJCSAgKHNldCBwYyBkaXNwMTIpKSkpCisKKyhkc2hjaSBic3JmICJCcmFuY2ggdG8gZmFyIHN1YnJvdXRpbmUiCisgICAgICAgKCkKKyAgICAgICAiYnNyZiAkcm4iCisgICAgICAgKCsgKGYtb3A0IDApIHJuIChmLXN1YjggMykpCisgICAgICAgKGRlbGF5IDEgKHNlcXVlbmNlICgpCisJCQkgIChzZXQgcHIgKGFkZCBwYyA0KSkKKwkJCSAgKHNldCBwYyAoYWRkIChleHQgREkgcm4pIChhZGQgcGMgNCkpKSkpKQorICAgICAgIAorKGRzaGNpIGJ0ICJDb25kaXRpb25hbCBicmFuY2giCisgICAgICAgKCkKKyAgICAgICAiYnQgJGRpc3A4IgorICAgICAgICgrIChmLW9wOCAjeDg5KSBkaXNwOCkKKyAgICAgICAoaWYgdGJpdAorCSAgIChzZXQgcGMgZGlzcDgpKSkKKworKGRzaGNpIGJ0cyAiQ29uZGl0aW9uYWwgYnJhbmNoIHdpdGggZGVsYXkgc2xvdCIKKyAgICAgICAoKQorICAgICAgICJidC9zICRkaXNwOCIKKyAgICAgICAoKyAoZi1vcDggI3g4ZCkgZGlzcDgpCisgICAgICAgKGlmIHRiaXQKKwkgICAoZGVsYXkgMSAoc2V0IHBjIGRpc3A4KSkpKQorCisoZHNoY2kgY2xybWFjICJDbGVhciBNQUNMIGFuZCBNQUNIIgorICAgICAgICgpCisgICAgICAgImNscm1hYyIKKyAgICAgICAoKyAoZi1vcDE2IDQwKSkKKyAgICAgICAoc2VxdWVuY2UgKCkKKwkJIChzZXQgbWFjbCAwKQorCQkgKHNldCBtYWNoIDApKSkKKworKGRzaGNpIGNscnMgIkNsZWFyIFMtYml0IgorICAgICAgICgpCisgICAgICAgImNscnMiCisgICAgICAgKCsgKGYtb3AxNiA3MikpCisgICAgICAgKHNldCBzYml0IDApKQorCisoZHNoY2kgY2xydCAiQ2xlYXIgVC1iaXQiCisgICAgICAgKCkKKyAgICAgICAiY2xydCIKKyAgICAgICAoKyAoZi1vcDE2IDgpKQorICAgICAgIChzZXQgdGJpdCAwKSkKKworKGRzaGNpIGNtcGVxICJDb21wYXJlIGlmIGVxdWFsIgorICAgICAgICgpCisgICAgICAgImNtcC9lcSAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgMykgcm4gcm0gKGYtc3ViNCAwKSkKKyAgICAgICAoc2V0IHRiaXQgKGVxIHJtIHJuKSkpCisKKyhkc2hjaSBjbXBlcWkgIkNvbXBhcmUgaWYgZXF1YWwgKGltbWVkaWF0ZSkiCisgICAgICAgKCkKKyAgICAgICAiY21wL2VxICMkaW1tOCwgcjAiCisgICAgICAgKCsgKGYtb3A4ICN4ODgpIGltbTgpCisgICAgICAgKHNldCB0Yml0IChlcSByMCAoZXh0IFNJIChhbmQgUUkgaW1tOCAyNTUpKSkpKQorCisoZHNoY2kgY21wZ2UgIkNvbXBhcmUgaWYgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIgorICAgICAgICgpCisgICAgICAgImNtcC9nZSAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgMykgcm4gcm0gKGYtc3ViNCAzKSkKKyAgICAgICAoc2V0IHRiaXQgKGdlIHJuIHJtKSkpCisKKyhkc2hjaSBjbXBndCAiQ29tcGFyZSBpZiBncmVhdGVyIHRoYW4iCisgICAgICAgKCkKKyAgICAgICAiY21wL2d0ICRybSwgJHJuIgorICAgICAgICgrIChmLW9wNCAzKSBybiBybSAoZi1zdWI0IDcpKQorICAgICAgIChzZXQgdGJpdCAoZ3Qgcm4gcm0pKSkKKworKGRzaGNpIGNtcGhpICJDb21wYXJlIGlmIGdyZWF0ZXIgdGhhbiAodW5zaWduZWQpIgorICAgICAgICgpCisgICAgICAgImNtcC9oaSAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgMykgcm4gcm0gKGYtc3ViNCA2KSkKKyAgICAgICAoc2V0IHRiaXQgKGd0dSBybiBybSkpKQorCisoZHNoY2kgY21waHMgIkNvbXBhcmUgaWYgZ3JlYXRlciB0aGFuIG9yIGVxdWFsICh1bnNpZ25lZCkiCisgICAgICAgKCkKKyAgICAgICAiY21wL2hzICRybSwgJHJuIgorICAgICAgICgrIChmLW9wNCAzKSBybiBybSAoZi1zdWI0IDIpKQorICAgICAgIChzZXQgdGJpdCAoZ2V1IHJuIHJtKSkpCisKKyhkc2hjaSBjbXBwbCAiQ29tcGFyZSBpZiBncmVhdGVyIHRoYW4gemVybyIKKyAgICAgICAoKQorICAgICAgICJjbXAvcGwgJHJuIgorICAgICAgICgrIChmLW9wNCA0KSBybiAoZi1zdWI4IDIxKSkKKyAgICAgICAoc2V0IHRiaXQgKGd0IHJuIDApKSkKKworKGRzaGNpIGNtcHB6ICJDb21wYXJlIGlmIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB6ZXJvIgorICAgICAgICgpCisgICAgICAgImNtcC9weiAkcm4iCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggMTcpKQorICAgICAgIChzZXQgdGJpdCAoZ2Ugcm4gMCkpKQorCisoZHNoY2kgY21wc3RyICJDb21wYXJlIGJ5dGVzIgorICAgICAgICgpCisgICAgICAgImNtcC9zdHIgJHJtLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDIpIHJuIHJtIChmLXN1YjQgMTIpKQorICAgICAgIChzZXF1ZW5jZSAoKEJJIHQpIChTSSB0ZW1wKSkKKwkJIChzZXQgdGVtcCAoeG9yIHJtIHJuKSkKKwkJIChzZXQgdCAoZXEgKGFuZCB0ZW1wICN4ZmYwMDAwMDApIDApKQorCQkgKHNldCB0IChvciAoZXEgKGFuZCB0ZW1wICN4ZmYwMDAwKSAwKSB0KSkKKwkJIChzZXQgdCAob3IgKGVxIChhbmQgdGVtcCAjeGZmMDApIDApIHQpKQorCQkgKHNldCB0IChvciAoZXEgKGFuZCB0ZW1wICN4ZmYpIDApIHQpKQorCQkgKHNldCB0Yml0IChpZiBCSSAoZ3R1IHQgMCkgMSAwKSkpKQorCisoZHNoY2kgZGl2MHMgIkluaXRpYWxpc2UgZGl2aWRlLXN0ZXAgc3RhdGUgZm9yIHNpZ25lZCBkaXZpc2lvbiIKKyAgICAgICAoKQorICAgICAgICJkaXYwcyAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgMikgcm4gcm0gKGYtc3ViNCA3KSkKKyAgICAgICAoc2VxdWVuY2UgKCkKKwkJIChzZXQgcWJpdCAoc3JsIHJuIDMxKSkKKwkJIChzZXQgbWJpdCAoc3JsIHJtIDMxKSkKKwkJIChzZXQgdGJpdCAoaWYgQkkgKGVxIChzcmwgcm0gMzEpIChzcmwgcm4gMzEpKSAwIDEpKSkpCisKKyhkc2hjaSBkaXYwdSAiSW5pdGlhbGlzZSBkaXZpZGUtc3RlcCBzdGF0ZSBmb3IgdW5zaWduZWQgZGl2aXNpb24iCisgICAgICAgKCkKKyAgICAgICAiZGl2MHUiCisgICAgICAgKCsgKGYtb3AxNiAyNSkpCisgICAgICAgKHNlcXVlbmNlICgpCisJCSAoc2V0IHRiaXQgMCkKKwkJIChzZXQgcWJpdCAwKQorCQkgKHNldCBtYml0IDApKSkKKworKGRzaGNpIGRpdjEgIkRpdmlkZSBzdGVwIgorICAgICAgICgpCisgICAgICAgImRpdjEgJHJtLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDMpIHJuIHJtIChmLXN1YjQgNCkpCisgICAgICAgKHNlcXVlbmNlICgoQkkgb2xkcSkgKFNJIHRtcDApIChVUUkgdG1wMSkpCisJCSAoc2V0IG9sZHEgcWJpdCkKKwkJIChzZXQgcWJpdCAoc3JsIHJuIDMxKSkKKwkJIChzZXQgcm4gKG9yIChzbGwgcm4gMSkgKHpleHQgU0kgdGJpdCkpKQorCQkgKGlmIChub3Qgb2xkcSkKKwkJICAgICAoaWYgKG5vdCBtYml0KQorCQkJIChzZXF1ZW5jZSAoKQorCQkJCSAgIChzZXQgdG1wMCBybikKKwkJCQkgICAoc2V0IHJuIChzdWIgcm4gcm0pKQorCQkJCSAgIChzZXQgdG1wMSAoZ3R1IHJuIHRtcDApKQorCQkJCSAgIChpZiAobm90IHFiaXQpCisJCQkJICAgICAgIChzZXQgcWJpdCAoaWYgQkkgdG1wMSAxIDApKQorCQkJCSAgICAgICAoc2V0IHFiaXQgKGlmIEJJIChlcSB0bXAxIDApIDEgMCkpKSkKKwkJCSAoc2VxdWVuY2UgKCkKKwkJCQkgICAoc2V0IHRtcDAgcm4pCisJCQkJICAgKHNldCBybiAoYWRkIHJuIHJtKSkKKwkJCQkgICAoc2V0IHRtcDEgKGx0dSBybiB0bXAwKSkKKwkJCQkgICAoaWYgKG5vdCBxYml0KQorCQkJCSAgICAgICAoc2V0IHFiaXQgKGlmIEJJIChlcSB0bXAxIDApIDEgMCkpCisJCQkJICAgICAgIChzZXQgcWJpdCAoaWYgQkkgdG1wMSAxIDApKSkpKQorCQkgICAgIChpZiAobm90IG1iaXQpCisJCQkgKHNlcXVlbmNlICgpCisJCQkJICAgKHNldCB0bXAwIHJuKQorCQkJCSAgIChzZXQgcm4gKGFkZCBybSBybikpCisJCQkJICAgKHNldCB0bXAxIChsdHUgcm4gdG1wMCkpCisJCQkJICAgKGlmIChub3QgcWJpdCkKKwkJCQkgICAgICAgKHNldCBxYml0IChpZiBCSSB0bXAxIDEgMCkpCisJCQkJICAgICAgIChzZXQgcWJpdCAoaWYgQkkgKGVxIHRtcDEgMCkgMSAwKSkpKQorCQkJIChzZXF1ZW5jZSAoKQorCQkJCSAgIChzZXQgdG1wMCBybikKKwkJCQkgICAoc2V0IHJuIChzdWIgcm4gcm0pKQorCQkJCSAgIChzZXQgdG1wMSAoZ3R1IHJuIHRtcDApKQorCQkJCSAgIChpZiAobm90IHFiaXQpCisJCQkJICAgICAgIChzZXQgcWJpdCAoaWYgQkkgKGVxIHRtcDEgMCkgMSAwKSkKKwkJCQkgICAgICAgKHNldCBxYml0IChpZiBCSSB0bXAxIDEgMCkpKSkpKQorCQkgKHNldCB0Yml0IChpZiBCSSAoZXEgcWJpdCBtYml0KSAxIDApKSkpCisKKyhkc2hjaSBkbXVsc2wgIk11bHRpcGx5IGxvbmcgKHNpZ25lZCkiCisgICAgICAgKCkKKyAgICAgICAiZG11bHMubCAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgMykgcm4gcm0gKGYtc3ViNCAxMykpCisgICAgICAgKHNlcXVlbmNlICgoREkgcmVzdWx0KSkKKwkJIChzZXQgcmVzdWx0IChtdWwgKGV4dCBESSBybSkgKGV4dCBESSBybikpKQorCQkgKHNldCBtYWNoIChzdWJ3b3JkIFNJIHJlc3VsdCAwKSkKKwkJIChzZXQgbWFjbCAoc3Vid29yZCBTSSByZXN1bHQgMSkpKSkKKworKGRzaGNpIGRtdWx1bCAiTXVsdGlwbHkgbG9uZyAodW5zaWduZWQpIgorICAgICAgICgpCisgICAgICAgImRtdWx1LmwgJHJtLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDMpIHJuIHJtIChmLXN1YjQgNSkpCisgICAgICAgKHNlcXVlbmNlICgoREkgcmVzdWx0KSkKKwkJIChzZXQgcmVzdWx0IChtdWwgKHpleHQgREkgcm0pICh6ZXh0IERJIHJuKSkpCisJCSAoc2V0IG1hY2ggKHN1YndvcmQgU0kgcmVzdWx0IDApKQorCQkgKHNldCBtYWNsIChzdWJ3b3JkIFNJIHJlc3VsdCAxKSkpKQorCisoZHNoY2kgZHQgIkRlY3JlbWVudCBhbmQgc2V0IgorICAgICAgICgpCisgICAgICAgImR0ICRybiIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCAxNikpCisgICAgICAgKHNlcXVlbmNlICgpCisJCSAoc2V0IHJuIChzdWIgcm4gMSkpCisJCSAoc2V0IHRiaXQgKGVxIHJuIDApKSkpCisKKyhkc2hjaSBleHRzYiAiU2lnbiBleHRlbmQgYnl0ZSIKKyAgICAgICAoKQorICAgICAgICJleHRzLmIgJHJtLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDYpIHJuIHJtIChmLXN1YjQgMTQpKQorICAgICAgIChzZXQgcm4gKGV4dCBTSSAoc3Vid29yZCBRSSBybSAzKSkpKQorCisoZHNoY2kgZXh0c3cgIlNpZ24gZXh0ZW5kIHdvcmQiCisgICAgICAgKCkKKyAgICAgICAiZXh0cy53ICRybSwgJHJuIgorICAgICAgICgrIChmLW9wNCA2KSBybiBybSAoZi1zdWI0IDE1KSkKKyAgICAgICAoc2V0IHJuIChleHQgU0kgKHN1YndvcmQgSEkgcm0gMSkpKSkKKworKGRzaGNpIGV4dHViICJaZXJvIGV4dGVuZCBieXRlIgorICAgICAgICgpCisgICAgICAgImV4dHUuYiAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgNikgcm4gcm0gKGYtc3ViNCAxMikpCisgICAgICAgKHNldCBybiAoemV4dCBTSSAoc3Vid29yZCBRSSBybSAzKSkpKQorCisoZHNoY2kgZXh0dXcgIlplcm8gZXR4ZW5kIHdvcmQiCisgICAgICAgKCkKKyAgICAgICAiZXh0dS53ICRybSwgJHJuIgorICAgICAgICgrIChmLW9wNCA2KSBybiBybSAoZi1zdWI0IDEzKSkKKyAgICAgICAoc2V0IHJuICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJtIDEpKSkpCisKKyhkc2hjaSBmYWJzICJGbG9hdGluZyBwb2ludCBhYnNvbHV0ZSIKKyAgICAgICAoRlAtSU5TTikKKyAgICAgICAiZmFicyAkZnNkbiIKKyAgICAgICAoKyAoZi1vcDQgMTUpIGZzZG4gKGYtc3ViOCAjeDVkKSkKKyAgICAgICAoaWYgcHJiaXQKKwkgICAoc2V0IChkciBmc2RuKSAoYy1jYWxsIERGICJzaDY0X2ZhYnNkIiAoZHIgZnNkbikpKQorCSAgIChzZXQgZnNkbiAoYy1jYWxsIFNGICJzaDY0X2ZhYnNzIiBmc2RuKSkpKQorCisoZHNoY2kgZmFkZCAiRmxvYXRpbmcgcG9pbnQgYWRkIgorICAgICAgIChGUC1JTlNOKQorICAgICAgICJmYWRkICRmc2RtLCAkZnNkbiIKKyAgICAgICAoKyAoZi1vcDQgMTUpIGZzZG4gZnNkbSAoZi1zdWI0IDApKQorICAgICAgIChpZiBwcmJpdAorCSAgIChzZXQgKGRyIGZzZG4pIChjLWNhbGwgREYgInNoNjRfZmFkZGQiIChkciBmc2RtKSAoZHIgZnNkbikpKQorCSAgIChzZXQgZnNkbiAoYy1jYWxsIFNGICJzaDY0X2ZhZGRzIiBmc2RtIGZzZG4pKSkpCisKKyhkc2hjaSBmY21wZXEgIkZsb2F0aW5nIHBvaW50IGNvbXBhcmUgZXF1YWwiCisgICAgICAgKEZQLUlOU04pCisgICAgICAgImZjbXAvZXEgJGZzZG0sICRmc2RuIgorICAgICAgICgrIChmLW9wNCAxNSkgZnNkbiBmc2RtIChmLXN1YjQgNCkpCisgICAgICAgKGlmIHByYml0CisJICAgKHNldCB0Yml0IChjLWNhbGwgQkkgInNoNjRfZmNtcGVxZCIgKGRyIGZzZG0pIChkciBmc2RuKSkpCisJICAgKHNldCB0Yml0IChjLWNhbGwgQkkgInNoNjRfZmNtcGVxcyIgZnNkbSBmc2RuKSkpKQorICAgICAgIAorKGRzaGNpIGZjbXBndCAiRmxvYXRpbmcgcG9pbnQgY29tcGFyZSBncmVhdGVyIHRoYW4iCisgICAgICAgKEZQLUlOU04pCisgICAgICAgImZjbXAvZ3QgJGZzZG0sICRmc2RuIgorICAgICAgICgrIChmLW9wNCAxNSkgZnNkbiBmc2RtIChmLXN1YjQgNSkpCisgICAgICAgKGlmIHByYml0CisJICAgKHNldCB0Yml0IChjLWNhbGwgQkkgInNoNjRfZmNtcGd0ZCIgKGRyIGZzZG4pIChkciBmc2RtKSkpCisJICAgKHNldCB0Yml0IChjLWNhbGwgQkkgInNoNjRfZmNtcGd0cyIgZnNkbiBmc2RtKSkpKQorCisoZHNoY2kgZmNudmRzICJGbG9hdGluZyBwb2ludCBjb252ZXJ0IChkb3VibGUgdG8gc2luZ2xlKSIKKyAgICAgICAoRlAtSU5TTikKKyAgICAgICAiZmNudmRzICRkcm4sIGZwdWwiCisgICAgICAgKCsgKGYtb3A0IDE1KSBkcm4gKGYtOC0xIDEwKSAoZi1zdWI4ICN4YmQpKQorICAgICAgIChzZXQgZnB1bCAoYy1jYWxsIFNGICJzaDY0X2ZjbnZkcyIgZHJuKSkpCisKKyhkc2hjaSBmY252c2QgIkZsb2F0aW5nIHBvaW50IGNvbnZlcnQgKHNpbmdsZSB0byBkb3VibGUpIgorICAgICAgIChGUC1JTlNOKQorICAgICAgICJmY252c2QgZnB1bCwgJGRybiIKKyAgICAgICAoKyAoZi1vcDQgMTUpIGRybiAoZi04LTEgMCkgKGYtc3ViOCAjeGFkKSkKKyAgICAgICAoc2V0IGRybiAoYy1jYWxsIERGICJzaDY0X2ZjbnZzZCIgZnB1bCkpKQorCisoZHNoY2kgZmRpdiAiRmxvYXRpbmcgcG9pbnQgZGl2aWRlIgorICAgICAgIChGUC1JTlNOKQorICAgICAgICJmZGl2ICRmc2RtLCAkZnNkbiIKKyAgICAgICAoKyAoZi1vcDQgMTUpIGZzZG4gZnNkbSAoZi1zdWI0IDMpKQorICAgICAgIChpZiBwcmJpdAorCSAgIChzZXQgKGRyIGZzZG4pIChjLWNhbGwgREYgInNoNjRfZmRpdmQiIChkciBmc2RuKSAoZHIgZnNkbSkpKQorCSAgIChzZXQgZnNkbiAoYy1jYWxsIFNGICJzaDY0X2ZkaXZzIiBmc2RuIGZzZG0pKSkpCisKKyhkc2hjaSBmaXByICJGbG9hdGluZyBwb2ludCBpbm5lciBwcm9kdWN0IgorICAgICAgIChGUC1JTlNOKQorICAgICAgICJmaXByICRmdm0sICRmdm4iCisgICAgICAgKCsgKGYtb3A0IDE1KSBmdm4gZnZtIChmLXN1YjggI3hlZCkpCisgICAgICAgKHNlcXVlbmNlICgoUUkgbSkgKFFJIG4pIChTRiByZXMpKQorCQkgKHNldCBtIChpbmRleC1vZiBmdm0pKQorCQkgKHNldCBuIChpbmRleC1vZiBmdm4pKQorCQkgKHNldCByZXMgKGMtY2FsbCBTRiAic2g2NF9mbXVscyIgZnZtIGZ2bikpCisJCSAoc2V0IHJlcyAoYy1jYWxsIFNGICJzaDY0X2ZhZGRzIiByZXMgKGMtY2FsbCBTRiAic2g2NF9mbXVscyIgKHJlZyBoLWZyYyAoYWRkIG0gMSkpIChyZWcgaC1mcmMgKGFkZCBuIDEpKSkpKQorCQkgKHNldCByZXMgKGMtY2FsbCBTRiAic2g2NF9mYWRkcyIgcmVzIChjLWNhbGwgU0YgInNoNjRfZm11bHMiIChyZWcgaC1mcmMgKGFkZCBtIDIpKSAocmVnIGgtZnJjIChhZGQgbiAyKSkpKSkKKwkJIChzZXQgcmVzIChjLWNhbGwgU0YgInNoNjRfZmFkZHMiIHJlcyAoYy1jYWxsIFNGICJzaDY0X2ZtdWxzIiAocmVnIGgtZnJjIChhZGQgbSAzKSkgKHJlZyBoLWZyYyAoYWRkIG4gMykpKSkpCisJCSAoc2V0IChyZWcgaC1mcmMgKGFkZCBuIDMpKSByZXMpKSkKKworKGRzaGNpIGZsZHMgIkZsb2F0aW5nIHBvaW50IGxvYWQgc3RhdHVzIHJlZ2lzdGVyIgorICAgICAgIChGUC1JTlNOKQorICAgICAgICJmbGRzICRmcm4iCisgICAgICAgKCsgKGYtb3A0IDE1KSBmcm4gKGYtc3ViOCAjeDFkKSkKKyAgICAgICAoc2V0IGZwdWwgZnJuKSkKKworKGRzaGNpIGZsZGkwICJGbG9hdGluZyBwb2ludCBsb2FkIGltbWVkaWF0ZSAwLjAiCisgICAgICAgKEZQLUlOU04pCisgICAgICAgImZsZGkwICRmcm4iCisgICAgICAgKCsgKGYtb3A0IDE1KSBmcm4gKGYtc3ViOCAjeDhkKSkKKyAgICAgICAoc2V0IGZybiAoYy1jYWxsIFNGICJzaDY0X2ZsZGkwIikpKQorCisoZHNoY2kgZmxkaTEgIkZsb2F0aW5nIHBvaW50IGxvYWQgaW1tZWRpYXRlIDEuMCIKKyAgICAgICAoRlAtSU5TTikKKyAgICAgICAiZmxkaTEgJGZybiIKKyAgICAgICAoKyAoZi1vcDQgMTUpIGZybiAoZi1zdWI4ICN4OWQpKQorICAgICAgIChzZXQgZnJuIChjLWNhbGwgU0YgInNoNjRfZmxkaTEiKSkpCisKKyhkc2hjaSBmbG9hdCAiRmxvYXRpbmcgcG9pbnQgaW50ZWdlciBjb252ZXJzaW9uIgorICAgICAgIChGUC1JTlNOKQorICAgICAgICJmbG9hdCBmcHVsLCAkZnNkbiIKKyAgICAgICAoKyAoZi1vcDQgMTUpIGZzZG4gKGYtc3ViOCAjeDJkKSkKKyAgICAgICAoaWYgcHJiaXQKKwkgICAoc2V0IChkciBmc2RuKSAoYy1jYWxsIERGICJzaDY0X2Zsb2F0bGQiIGZwdWwpKQorCSAgIChzZXQgZnNkbiAoYy1jYWxsIFNGICJzaDY0X2Zsb2F0bHMiIGZwdWwpKSkpCisKKyhkc2hjaSBmbWFjICJGbG9hdGluZyBwb2ludCBtdWx0aXBseSBhbmQgYWNjdW11bGF0ZSIKKyAgICAgICAoRlAtSU5TTikKKyAgICAgICAiZm1hYyBmcjAsICRmcm0sICRmcm4iCisgICAgICAgKCsgKGYtb3A0IDE1KSBmcm4gZnJtIChmLXN1YjQgMTQpKQorICAgICAgIChzZXQgZnJuIChjLWNhbGwgU0YgInNoNjRfZm1hY3MiIChyZWcgaC1mcmMgMCkgZnJtIGZybikpKQorCisoZGVmaW5lLXBtYWNybyAoZXZlbiB4KSAoZXEgKGFuZCB4IDEpIDApKQorKGRlZmluZS1wbWFjcm8gKG9kZCB4KSAgKGVxIChhbmQgeCAxKSAxKSkKKyhkZWZpbmUtcG1hY3JvIChleHRkIHgpIChvZGQgKGluZGV4LW9mIHgpKSkKKworKGRzaGNpIGZtb3YxICJGbG9hdGluZyBwb2ludCBtb3ZlIChyZWdpc3RlciB0byByZWdpc3RlcikiCisgICAgICAgKEZQLUlOU04pCisgICAgICAgImZtb3YgJGZybSwgJGZybiIKKyAgICAgICAoKyAoZi1vcDQgMTUpIGZybiBmcm0gKGYtc3ViNCAxMikpCisgICAgICAgKGlmIChub3Qgc3piaXQpCisJICAgOyBzaW5nbGUgcHJlY2lzaW9uIG9wZXJhdGlvbgorCSAgIChzZXQgZnJuIGZybSkKKwkgICA7IGRvdWJsZSBvciBleHRlbmRlZCBvcGVyYXRpb24KKwkgICAoaWYgKGV4dGQgZnJtKQorCSAgICAgICAoaWYgKGV4dGQgZnJuKQorCQkgICAoc2V0ICh4ZCBmcm4pICh4ZCBmcm0pKQorCQkgICAoc2V0IChkciBmcm4pICh4ZCBmcm0pKSkKKwkgICAgICAgKGlmIChleHRkIGZybikKKwkJICAgKHNldCAoeGQgZnJuKSAoZHIgZnJtKSkKKwkJICAgKHNldCAoZHIgZnJuKSAoZHIgZnJtKSkpKSkpCisKKyhkc2hjaSBmbW92MiAiRmxvYXRpbmcgcG9pbnQgbG9hZCIKKyAgICAgICAoRlAtSU5TTikKKyAgICAgICAiZm1vdiBAJHJtLCAkZnJuIgorICAgICAgICgrIChmLW9wNCAxNSkgZnJuIHJtIChmLXN1YjQgOCkpCisgICAgICAgKGlmIChub3Qgc3piaXQpCisJICAgOyBzaW5nbGUgcHJlY2lzaW9uIG9wZXJhdGlvbgorCSAgIChzZXQgZnJuIChtZW0gU0Ygcm0pKQorCSAgIDsgZG91YmxlIG9yIGV4dGVuZGVkIG9wZXJhdGlvbgorCSAgIChpZiAoZXh0ZCBmcm4pCisJICAgICAgIChzZXQgKHhkIGZybikgKG1lbSBERiBybSkpCisJICAgICAgIChzZXQgKGRyIGZybikgKG1lbSBERiBybSkpKSkpCisKKyhkc2hjaSBmbW92MyAiRmxvYXRpbmcgcG9pbnQgbG9hZCAocG9zdC1pbmNyZW1lbnQpIgorICAgICAgIChGUC1JTlNOKQorICAgICAgICJmbW92IEAke3JtfSssIGZybiIKKyAgICAgICAoKyAoZi1vcDQgMTUpIGZybiBybSAoZi1zdWI0IDkpKQorICAgICAgIChpZiAobm90IHN6Yml0KQorCSAgIDsgc2luZ2xlIHByZWNpc2lvbiBvcGVyYXRpb24KKwkgICAoc2VxdWVuY2UgKCkKKwkJICAgICAoc2V0IGZybiAobWVtIFNGIHJtKSkKKwkJICAgICAoc2V0IHJtIChhZGQgcm0gNCkpKQorCSAgIDsgZG91YmxlIG9yIGV4dGVuZGVkIG9wZXJhdGlvbgorCSAgIChzZXF1ZW5jZSAoKQorCQkgICAgIChpZiAoZXh0ZCBmcm4pCisJCQkgKHNldCAoeGQgZnJuKSAobWVtIERGIHJtKSkKKwkJCSAoc2V0IChkciBmcm4pIChtZW0gREYgcm0pKSkKKwkJICAgICAoc2V0IHJtIChhZGQgcm0gOCkpKSkpCisKKyhkc2hjaSBmbW92NCAiRmxvYXRpbmcgcG9pbnQgbG9hZCAocmVnaXN0ZXIvcmVnaXN0ZXIgaW5kaXJlY3QpIgorICAgICAgIChGUC1JTlNOKQorICAgICAgICJmbW92IEAocjAsICRybSksICRmcm4iCisgICAgICAgKCsgKGYtb3A0IDE1KSBmcm4gcm0gKGYtc3ViNCA2KSkKKyAgICAgICAoaWYgKG5vdCBzemJpdCkKKwkgICA7IHNpbmdsZSBwcmVjaXNpb24gb3BlcmF0aW9uCisJICAgKHNldCBmcm4gKG1lbSBTRiAoYWRkIHIwIHJtKSkpCisJICAgOyBkb3VibGUgb3IgZXh0ZW5kZWQgb3BlcmF0aW9uCisJICAgKGlmIChleHRkIGZybikKKwkgICAgICAgKHNldCAoeGQgZnJuKSAobWVtIERGIChhZGQgcjAgcm0pKSkKKwkgICAgICAgKHNldCAoZHIgZnJuKSAobWVtIERGIChhZGQgcjAgcm0pKSkpKSkKKworKGRzaGNpIGZtb3Y1ICJGbG9hdGluZyBwb2ludCBzdG9yZSIKKyAgICAgICAoRlAtSU5TTikKKyAgICAgICAiZm1vdiAkZnJtLCBAJHJuIgorICAgICAgICgrIChmLW9wNCAxNSkgcm4gZnJtIChmLXN1YjQgMTApKQorICAgICAgIChpZiAobm90IHN6Yml0KQorCSAgIDsgc2luZ2xlIHByZWNpc2lvbiBvcGVyYXRpb24KKwkgICAoc2V0IChtZW0gU0Ygcm4pIGZybSkKKwkgICA7IGRvdWJsZSBvciBleHRlbmRlZCBvcGVyYXRpb24KKwkgICAoaWYgKGV4dGQgZnJtKQorCSAgICAgICAoc2V0IChtZW0gREYgcm4pICh4ZCBmcm0pKQorCSAgICAgICAoc2V0IChtZW0gREYgcm4pIChkciBmcm0pKSkpKQorCisoZHNoY2kgZm1vdjYgIkZsb2F0aW5nIHBvaW50IHN0b3JlIChwcmUtZGVjcmVtZW50KSIKKyAgICAgICAoRlAtSU5TTikKKyAgICAgICAiZm1vdiAkZnJtLCBALSRybiIKKyAgICAgICAoKyAoZi1vcDQgMTUpIHJuIGZybSAoZi1zdWI0IDExKSkKKyAgICAgICAoaWYgKG5vdCBzemJpdCkKKwkgICA7IHNpbmdsZSBwcmVjaXNpb24gb3BlcmF0aW9uCisJICAgKHNlcXVlbmNlICgpCisJCSAgICAgKHNldCBybiAoc3ViIHJuIDQpKQorCQkgICAgIChzZXQgKG1lbSBTRiBybikgZnJtKSkKKwkgICA7IGRvdWJsZSBvciBleHRlbmRlZCBvcGVyYXRpb24KKwkgICAoc2VxdWVuY2UgKCkKKwkJICAgICAoc2V0IHJuIChzdWIgcm4gOCkpCisJCSAgICAgKGlmIChleHRkIGZybSkKKwkJCSAoc2V0IChtZW0gREYgcm4pICh4ZCBmcm0pKQorCQkJIChzZXQgKG1lbSBERiBybikgKGRyIGZybSkpKSkpKQorCisoZHNoY2kgZm1vdjcgIkZsb2F0aW5nIHBvaW50IHN0b3JlIChyZWdpc3Rlci9yZWdpc3RlciBpbmRpcmVjdCkiCisgICAgICAgKEZQLUlOU04pCisgICAgICAgImZtb3YgJGZybSwgQChyMCwgJHJuKSIKKyAgICAgICAoKyAoZi1vcDQgMTUpIHJuIGZybSAoZi1zdWI0IDcpKQorICAgICAgIChpZiAobm90IHN6Yml0KQorCSAgIDsgc2luZ2xlIHByZWNpc2lvbiBvcGVyYXRpb24KKwkgICAoc2V0IChtZW0gU0YgKGFkZCByMCBybikpIGZybSkKKwkgICA7IGRvdWJsZSBvciBleHRlbmRlZCBvcGVyYXRpb24KKwkgICAoaWYgKGV4dGQgZnJtKQorCSAgICAgICAoc2V0IChtZW0gREYgKGFkZCByMCBybikpICh4ZCBmcm0pKQorCSAgICAgICAoc2V0IChtZW0gREYgKGFkZCByMCBybikpIChkciBmcm0pKSkpKQorCisoZHNoY2kgZm11bCAiRmxvYXRpbmcgcG9pbnQgbXVsdGlwbHkiCisgICAgICAgKEZQLUlOU04pCisgICAgICAgImZtdWwgJGZzZG0sICRmc2RuIgorICAgICAgICgrIChmLW9wNCAxNSkgZnNkbiBmc2RtIChmLXN1YjQgMikpCisgICAgICAgKGlmIHByYml0CisJICAgKHNldCAoZHIgZnNkbikgKGMtY2FsbCBERiAic2g2NF9mbXVsZCIgKGRyIGZzZG0pIChkciBmc2RuKSkpCisJICAgKHNldCBmc2RuIChjLWNhbGwgU0YgInNoNjRfZm11bHMiIGZzZG0gZnNkbikpKSkKKworKGRzaGNpIGZuZWcgIkZsb2F0aW5nIHBvaW50IG5lZ2F0ZSIKKyAgICAgICAoRlAtSU5TTikKKyAgICAgICAiZm5lZyAkZnNkbiIKKyAgICAgICAoKyAoZi1vcDQgMTUpIGZzZG4gKGYtc3ViOCAjeDRkKSkKKyAgICAgICAoaWYgcHJiaXQKKwkgICAoc2V0IChkciBmc2RuKSAoYy1jYWxsIERGICJzaDY0X2ZuZWdkIiAoZHIgZnNkbikpKQorCSAgIChzZXQgZnNkbiAoYy1jYWxsIFNGICJzaDY0X2ZuZWdzIiBmc2RuKSkpKQorCisoZHNoY2kgZnJjaGcgIlRvZ2dsZSBmbG9hdGluZyBwb2ludCByZWdpc3RlciBiYW5rcyIKKyAgICAgICAoRlAtSU5TTikKKyAgICAgICAiZnJjaGciCisgICAgICAgKCsgKGYtb3AxNiAjeGZiZmQpKQorICAgICAgIChzZXQgZnJiaXQgKG5vdCBmcmJpdCkpKQorCisoZHNoY2kgZnNjaGcgIlNldCBzaXplIG9mIGZsb2F0aW5nIHBvaW50IHRyYW5zZmVycyIKKyAgICAgICAoRlAtSU5TTikKKyAgICAgICAiZnNjaGciCisgICAgICAgKCsgKGYtb3AxNiAjeGYzZmQpKQorICAgICAgIChzZXQgc3piaXQgKG5vdCBzemJpdCkpKQorCisoZHNoY2kgZnNxcnQgIkZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290IgorICAgICAgIChGUC1JTlNOKQorICAgICAgICJmc3FydCAkZnNkbiIKKyAgICAgICAoKyAoZi1vcDQgMTUpIGZzZG4gKGYtc3ViOCAjeDZkKSkKKyAgICAgICAoaWYgcHJiaXQKKwkgICAoc2V0IChkciBmc2RuKSAoYy1jYWxsIERGICJzaDY0X2ZzcXJ0ZCIgKGRyIGZzZG4pKSkKKwkgICAoc2V0IGZzZG4gKGMtY2FsbCBTRiAic2g2NF9mc3FydHMiIGZzZG4pKSkpCisKKyhkc2hjaSBmc3RzICJGbG9hdGluZyBwb2ludCBzdG9yZSBzdGF0dXMgcmVnaXN0ZXIiCisgICAgICAgKEZQLUlOU04pCisgICAgICAiZnN0cyBmcHVsLCAkZnJuIgorICAgICAgICgrIChmLW9wNCAxNSkgZnJuIChmLXN1YjggMTMpKQorICAgICAgIChzZXQgZnJuIGZwdWwpKQorCisoZHNoY2kgZnN1YiAiRmxvYXRpbmcgcG9pbnQgc3VidHJhY3QiCisgICAgICAgKEZQLUlOU04pCisgICAgICAgImZzdWIgJGZzZG0sICRmc2RuIgorICAgICAgICgrIChmLW9wNCAxNSkgZnNkbiBmc2RtIChmLXN1YjQgMSkpCisgICAgICAgKGlmIHByYml0CisJICAgKHNldCAoZHIgZnNkbikgKGMtY2FsbCBERiAic2g2NF9mc3ViZCIgKGRyIGZzZG4pIChkciBmc2RtKSkpCisJICAgKHNldCBmc2RuIChjLWNhbGwgU0YgInNoNjRfZnN1YnMiIGZzZG4gZnNkbSkpKSkKKworKGRzaGNpIGZ0cmMgIkZsb2F0aW5nIHBvaW50IHRydW5jYXRlIgorICAgICAgIChGUC1JTlNOKQorICAgICAgICJmdHJjICRmc2RuLCBmcHVsIgorICAgICAgICgrIChmLW9wNCAxNSkgZnNkbiAoZi1zdWI4ICN4M2QpKQorICAgICAgIChzZXQgZnB1bCAoaWYgU0YgcHJiaXQKKwkJICAgICAoYy1jYWxsIFNGICJzaDY0X2Z0cmNkbCIgKGRyIGZzZG4pKQorCQkgICAgIChjLWNhbGwgU0YgInNoNjRfZnRyY3NsIiBmc2RuKSkpKQorCisoZHNoY2kgZnRydiAiRmxvYXRpbmcgcG9pbnQgdHJhbnNmb3JtIHZlY3RvciIKKyAgICAgICAoRlAtSU5TTikKKyAgICAgICAiZnRydiB4bXRyeCwgJGZ2biIKKyAgICAgICAoKyAoZi1vcDQgMTUpIGZ2biAoZi1zdWIxMCAjeDFmZCkpCisgICAgICAgKHNlcXVlbmNlICgoUUkgbikgKFNGIHJlcykpCisJCSAoc2V0IG4gKGluZGV4LW9mIGZ2bikpCisJCSAoc2V0IHJlcyAoYy1jYWxsIFNGICJzaDY0X2ZtdWxzIiAocmVnIGgteGYgMCkgKHJlZyBoLWZyYyBuKSkpCisJCSAoc2V0IHJlcyAoYy1jYWxsIFNGICJzaDY0X2ZhZGRzIiByZXMgKGMtY2FsbCBTRiAic2g2NF9mbXVscyIgKHJlZyBoLXhmIDQpICAocmVnIGgtZnJjIChhZGQgbiAxKSkpKSkKKwkJIChzZXQgcmVzIChjLWNhbGwgU0YgInNoNjRfZmFkZHMiIHJlcyAoYy1jYWxsIFNGICJzaDY0X2ZtdWxzIiAocmVnIGgteGYgOCkgIChyZWcgaC1mcmMgKGFkZCBuIDIpKSkpKQorCQkgKHNldCByZXMgKGMtY2FsbCBTRiAic2g2NF9mYWRkcyIgcmVzIChjLWNhbGwgU0YgInNoNjRfZm11bHMiIChyZWcgaC14ZiAxMikgKHJlZyBoLWZyYyAoYWRkIG4gMykpKSkpCisJCSAoc2V0IChyZWcgaC1mcmMgbikgcmVzKQorCQkgKHNldCByZXMgKGMtY2FsbCBTRiAic2g2NF9mbXVscyIgKHJlZyBoLXhmIDEpIChyZWcgaC1mcmMgbikpKQorCQkgKHNldCByZXMgKGMtY2FsbCBTRiAic2g2NF9mYWRkcyIgcmVzIChjLWNhbGwgU0YgInNoNjRfZm11bHMiIChyZWcgaC14ZiA1KSAgKHJlZyBoLWZyYyAoYWRkIG4gMSkpKSkpCisJCSAoc2V0IHJlcyAoYy1jYWxsIFNGICJzaDY0X2ZhZGRzIiByZXMgKGMtY2FsbCBTRiAic2g2NF9mbXVscyIgKHJlZyBoLXhmIDkpICAocmVnIGgtZnJjIChhZGQgbiAyKSkpKSkKKwkJIChzZXQgcmVzIChjLWNhbGwgU0YgInNoNjRfZmFkZHMiIHJlcyAoYy1jYWxsIFNGICJzaDY0X2ZtdWxzIiAocmVnIGgteGYgMTMpIChyZWcgaC1mcmMgKGFkZCBuIDMpKSkpKQorCQkgKHNldCAocmVnIGgtZnJjIChhZGQgbiAxKSkgcmVzKQorCQkgKHNldCByZXMgKGMtY2FsbCBTRiAic2g2NF9mbXVscyIgKHJlZyBoLXhmIDIpIChyZWcgaC1mcmMgbikpKQorCQkgKHNldCByZXMgKGMtY2FsbCBTRiAic2g2NF9mYWRkcyIgcmVzIChjLWNhbGwgU0YgInNoNjRfZm11bHMiIChyZWcgaC14ZiA2KSAgKHJlZyBoLWZyYyAoYWRkIG4gMSkpKSkpCisJCSAoc2V0IHJlcyAoYy1jYWxsIFNGICJzaDY0X2ZhZGRzIiByZXMgKGMtY2FsbCBTRiAic2g2NF9mbXVscyIgKHJlZyBoLXhmIDEwKSAocmVnIGgtZnJjIChhZGQgbiAyKSkpKSkKKwkJIChzZXQgcmVzIChjLWNhbGwgU0YgInNoNjRfZmFkZHMiIHJlcyAoYy1jYWxsIFNGICJzaDY0X2ZtdWxzIiAocmVnIGgteGYgMTQpIChyZWcgaC1mcmMgKGFkZCBuIDMpKSkpKQorCQkgKHNldCAocmVnIGgtZnJjIChhZGQgbiAyKSkgcmVzKQorCQkgKHNldCByZXMgKGMtY2FsbCBTRiAic2g2NF9mbXVscyIgKHJlZyBoLXhmIDMpIChyZWcgaC1mcmMgbikpKQorCQkgKHNldCByZXMgKGMtY2FsbCBTRiAic2g2NF9mYWRkcyIgcmVzIChjLWNhbGwgU0YgInNoNjRfZm11bHMiIChyZWcgaC14ZiA3KSAgKHJlZyBoLWZyYyAoYWRkIG4gMSkpKSkpCisJCSAoc2V0IHJlcyAoYy1jYWxsIFNGICJzaDY0X2ZhZGRzIiByZXMgKGMtY2FsbCBTRiAic2g2NF9mbXVscyIgKHJlZyBoLXhmIDExKSAocmVnIGgtZnJjIChhZGQgbiAyKSkpKSkKKwkJIChzZXQgcmVzIChjLWNhbGwgU0YgInNoNjRfZmFkZHMiIHJlcyAoYy1jYWxsIFNGICJzaDY0X2ZtdWxzIiAocmVnIGgteGYgMTUpIChyZWcgaC1mcmMgKGFkZCBuIDMpKSkpKQorCQkgKHNldCAocmVnIGgtZnJjIChhZGQgbiAzKSkgcmVzKSkpCisKKyhkc2hjaSBqbXAgIkp1bXAiCisgICAgICAgKCkKKyAgICAgICAiam1wIEAkcm4iCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggNDMpKQorICAgICAgIChkZWxheSAxIChzZXQgcGMgcm4pKSkKKworKGRzaGNpIGpzciAiSnVtcCB0byBzdWJyb3V0aW5lIgorICAgICAgICgpCisgICAgICAgImpzciBAJHJuIgorICAgICAgICgrIChmLW9wNCA0KSBybiAoZi1zdWI4IDExKSkKKyAgICAgICAoZGVsYXkgMSAoc2VxdWVuY2UgKCkKKwkJCSAgKHNldCBwciAoYWRkIHBjIDQpKQorCQkJICAoc2V0IHBjIHJuKSkpKQorCisoZHNoY2kgbGRjICJMb2FkIGNvbnRyb2wgcmVnaXN0ZXIgKEdCUikiCisgICAgICAgKCkKKyAgICAgICAibGRjICRybiwgZ2JyIgorICAgICAgICgrIChmLW9wNCA0KSBybiAoZi1zdWI4IDMwKSkKKyAgICAgICAoc2V0IGdiciBybikpCisKKyhkc2hjaSBsZGNsICJMb2FkIGNvbnRyb2wgcmVnaXN0ZXIgKEdCUikiCisgICAgICAgKCkKKyAgICAgICAibGRjLmwgQCR7cm59KywgZ2JyIgorICAgICAgICgrIChmLW9wNCA0KSBybiAoZi1zdWI4IDM5KSkKKyAgICAgICAoc2VxdWVuY2UgKCkKKwkJIChzZXQgZ2JyIChtZW0gU0kgcm4pKQorCQkgKHNldCBybiAoYWRkIHJuIDQpKSkpCisKKyhkc2hjaSBsZHMtZnBzY3IgIkxvYWQgc3RhdHVzIHJlZ2lzdGVyIChGUFNDUikiCisgICAgICAgKCkKKyAgICAgICAibGRzICRybiwgZnBzY3IiCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggMTA2KSkKKyAgICAgICAoc2V0IGZwc2NyIHJuKSkKKworKGRzaGNpIGxkc2wtZnBzY3IgIkxvYWQgc3RhdHVzIHJlZ2lzdGVyIChGUFNDUikiCisgICAgICAgKCkKKyAgICAgICAibGRzLmwgQCR7cm59KywgZnBzY3IiCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggMTAyKSkKKyAgICAgICAoc2VxdWVuY2UgKCkKKwkJIChzZXQgZnBzY3IgKG1lbSBTSSBybikpCisJCSAoc2V0IHJuIChhZGQgcm4gNCkpKSkKKworKGRzaGNpIGxkcy1mcHVsICJMb2FkIHN0YXR1cyByZWdpc3RlciAoRlBVTCkiCisgICAgICAgKCkKKyAgICAgICAibGRzICRybiwgZnB1bCIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCA5MCkpCisgICAgICAgOyBVc2Ugc3Vid29yZCB0byBjb252ZXJ0IHJuJ3MgbW9kZS4KKyAgICAgICAoc2V0IGZwdWwgKHN1YndvcmQgU0Ygcm4gMCkpKQorCisoZHNoY2kgbGRzbC1mcHVsICJMb2FkIHN0YXR1cyByZWdpc3RlciAoRlBVTCkiCisgICAgICAgKCkKKyAgICAgICAibGRzLmwgQCR7cm59KywgZnB1bCIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCA4NikpCisgICAgICAgKHNlcXVlbmNlICgpCisJCSAoc2V0IGZwdWwgKG1lbSBTRiBybikpCisJCSAoc2V0IHJuIChhZGQgcm4gNCkpKSkKKworKGRzaGNpIGxkcy1tYWNoICJMb2FkIHN0YXR1cyByZWdpc3RlciAoTUFDSCkiCisgICAgICAgKCkKKyAgICAgICAibGRzICRybiwgbWFjaCIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCAxMCkpCisgICAgICAgKHNldCBtYWNoIHJuKSkKKworKGRzaGNpIGxkc2wtbWFjaCAiTG9hZCBzdGF0dXMgcmVnaXN0ZXIgKE1BQ0gpLCBwb3N0LWluY3JlbWVudCIKKyAgICAgICAoKQorICAgICAgICJsZHMubCBAJHtybn0rLCBtYWNoIgorICAgICAgICgrIChmLW9wNCA0KSBybiAoZi1zdWI4IDYpKQorICAgICAgIChzZXF1ZW5jZSAoKQorCQkgKHNldCBtYWNoIChtZW0gU0kgcm4pKQorCQkgKHNldCBybiAoYWRkIHJuIDQpKSkpCisKKyhkc2hjaSBsZHMtbWFjbCAiTG9hZCBzdGF0dXMgcmVnaXN0ZXIgKE1BQ0wpIgorICAgICAgICgpCisgICAgICAgImxkcyAkcm4sIG1hY2wiCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggMjYpKQorICAgICAgIChzZXQgbWFjbCBybikpCisKKyhkc2hjaSBsZHNsLW1hY2wgIkxvYWQgc3RhdHVzIHJlZ2lzdGVyIChNQUNMKSwgcG9zdC1pbmNyZW1lbnQiCisgICAgICAgKCkKKyAgICAgICAibGRzLmwgQCR7cm59KywgbWFjbCIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCAyMikpCisgICAgICAgKHNlcXVlbmNlICgpCisJCSAoc2V0IG1hY2wgKG1lbSBTSSBybikpCisJCSAoc2V0IHJuIChhZGQgcm4gNCkpKSkKKworKGRzaGNpIGxkcy1wciAiTG9hZCBzdGF0dXMgcmVnaXN0ZXIgKFBSKSIKKyAgICAgICAoKQorICAgICAgICJsZHMgJHJuLCBwciIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCA0MikpCisgICAgICAgKHNldCBwciBybikpCisKKyhkc2hjaSBsZHNsLXByICJMb2FkIHN0YXR1cyByZWdpc3RlciAoUFIpLCBwb3N0LWluY3JlbWVudCIKKyAgICAgICAoKQorICAgICAgICJsZHMubCBAJHtybn0rLCBwciIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCAzOCkpCisgICAgICAgKHNlcXVlbmNlICgpCisJCSAoc2V0IHByIChtZW0gU0kgcm4pKQorCQkgKHNldCBybiAoYWRkIHJuIDQpKSkpCisKKyhkc2hjaSBtYWNsICJNdWx0aXBseSBhbmQgYWNjdW11bGF0ZSAobG9uZykiCisgICAgICAgKCkKKyAgICAgICAibWFjLmwgQCR7cm19KywgQCR7cm59KyIKKyAgICAgICAoKyAoZi1vcDQgMCkgcm4gcm0gKGYtc3ViNCAxNSkpCisgICAgICAgKHNlcXVlbmNlICgoREkgdG1wcnkpIChESSBtYWMpIChESSByZXN1bHQpIChTSSB4KSAoU0kgeSkpCisJCSAoc2V0IHggKG1lbSBTSSBybikpCisJCSAoc2V0IHJuIChhZGQgcm4gNCkpCisJCSAoaWYgKGVxIChpbmRleC1vZiBybikgKGluZGV4LW9mIHJtKSkKKwkJICAgICAoc2VxdWVuY2UgKCkKKwkJCSAgICAgICAoc2V0IHJuIChhZGQgcm4gNCkpCisJCQkgICAgICAgKHNldCBybSAoYWRkIHJtIDQpKSkpCisJCSAoc2V0IHkgKG1lbSBTSSBybSkpCisJCSAoc2V0IHJtIChhZGQgcm0gNCkpCisJCSAoc2V0IHRtcHJ5IChtdWwgKHpleHQgREkgeCkgKHpleHQgREkgeSkpKQorCQkgKHNldCBtYWMgKG9yIERJIChzbGwgKHpleHQgREkgbWFjaCkgMzIpICh6ZXh0IERJIG1hY2wpKSkKKwkJIChzZXQgcmVzdWx0IChhZGQgbWFjIHRtcHJ5KSkKKwkJIChzZXF1ZW5jZSAoKQorCQkJICAgKGlmIHNiaXQKKwkJCSAgICAgICAoc2VxdWVuY2UgKChTSSBtaW4pIChTSSBtYXgpKQorCQkJCQkgKHNldCBtYXggKHNybCAoaW52IERJIDApIDE2KSkKKwkJCQkJOyBQcmVzZXJ2ZSBiaXQgNDggZm9yIHNpZ24uCisJCQkJCSAoc2V0IG1pbiAoc3JsIChpbnYgREkgMCkgMTUpKQorCQkJCQkgKGlmIChndCByZXN1bHQgbWF4KQorCQkJCQkgICAgIChzZXQgcmVzdWx0IG1heCkKKwkJCQkJICAgICAoaWYgKGx0IHJlc3VsdCBtaW4pCisJCQkJCQkgKHNldCByZXN1bHQgbWluKSkpKSkKKwkJCSAgIChzZXQgbWFjaCAoc3Vid29yZCBTSSByZXN1bHQgMCkpCisJCQkgICAoc2V0IG1hY2wgKHN1YndvcmQgU0kgcmVzdWx0IDEpKSkpKQorCisoZHNoY2kgbWFjdyAiTXVsdGlwbHkgYW5kIGFjY3VtdWxhdGUgKHdvcmQpIgorICAgICAgICgpCisgICAgICAgIm1hYy53IEAke3JtfSssIEAke3JufSsiCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIHJtIChmLXN1YjQgMTUpKQorICAgICAgIChzZXF1ZW5jZSAoKFNJIHRtcHJ5KSAoREkgbWFjKSAoREkgcmVzdWx0KSAoSEkgeCkgKEhJIHkpKQorCQkgKHNldCB4IChtZW0gSEkgcm4pKQorCQkgKHNldCBybiAoYWRkIHJuIDIpKQorCQkgKGlmIChlcSAoaW5kZXgtb2Ygcm4pIChpbmRleC1vZiBybSkpCisJCSAgICAgKHNlcXVlbmNlICgpCisJCQkgICAgICAgKHNldCBybiAoYWRkIHJuIDIpKQorCQkJICAgICAgIChzZXQgcm0gKGFkZCBybSAyKSkpKQorCQkgKHNldCB5IChtZW0gSEkgcm0pKQorCQkgKHNldCBybSAoYWRkIHJtIDIpKQorCQkgKHNldCB0bXByeSAobXVsICh6ZXh0IFNJIHgpICh6ZXh0IFNJIHkpKSkKKwkJIChpZiBzYml0CisJCSAgICAgKHNlcXVlbmNlICgpCisJCQkgICAgICAgKGlmIChhZGQtb2ZsYWcgdG1wcnkgbWFjbCAwKQorCQkJCSAgIChzZXQgbWFjaCAxKSkKKwkJCSAgICAgICAoc2V0IG1hY2wgKGFkZCB0bXByeSBtYWNsKSkpCisJCSAgICAgKHNlcXVlbmNlICgpCisJCQkgICAgICAgKHNldCBtYWMgKG9yIERJIChzbGwgKHpleHQgREkgbWFjaCkgMzIpICh6ZXh0IERJIG1hY2wpKSkKKwkJCSAgICAgICAoc2V0IHJlc3VsdCAoYWRkIG1hYyAoZXh0IERJIHRtcHJ5KSkpCisJCQkgICAgICAgKHNldCBtYWNoIChzdWJ3b3JkIFNJIHJlc3VsdCAwKSkKKwkJCSAgICAgICAoc2V0IG1hY2wgKHN1YndvcmQgU0kgcmVzdWx0IDEpKSkpKSkKKworKGRzaGNpIG1vdiAiTW92ZSIKKyAgICAgICAoKQorICAgICAgICJtb3YgJHJtNjQsICRybjY0IgorICAgICAgICgrIChmLW9wNCA2KSBybjY0IHJtNjQgKGYtc3ViNCAzKSkKKyAgICAgICAoc2V0IHJuNjQgcm02NCkpCisKKyhkc2hjaSBtb3ZpICJNb3ZlIGltbWVkaWF0ZSIKKyAgICAgICAoKQorICAgICAgICJtb3YgIyRpbW04LCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDE0KSBybiBpbW04KQorICAgICAgIChzZXQgcm4gKGV4dCBESSAoYW5kIFFJIGltbTggMjU1KSkpKQorCisoZHNoY2kgbW92YjEgIlN0b3JlIGJ5dGUgdG8gbWVtb3J5IChyZWdpc3RlciBpbmRpcmVjdCB3LyB6ZXJvIGRpc3BsYWNlbWVudCkiCisgICAgICAgKCkKKyAgICAgICAibW92LmIgJHJtLCBAJHJuIgorICAgICAgICgrIChmLW9wNCAyKSBybiBybSAoZi1zdWI0IDApKQorICAgICAgIChzZXQgKG1lbSBVUUkgcm4pIChzdWJ3b3JkIFVRSSBybSAzKSkpCisKKyhkc2hjaSBtb3ZiMiAiU3RvcmUgYnl0ZSB0byBtZW1vcnkgKHJlZ2lzdGVyIGluZGlyZWN0IHcvIHByZS1kZWNyZW1lbnQpIgorICAgICAgICgpCisgICAgICAgIm1vdi5iICRybSwgQC0kcm4iCisgICAgICAgKCsgKGYtb3A0IDIpIHJuIHJtIChmLXN1YjQgNCkpCisgICAgICAgKHNlcXVlbmNlICgoREkgYWRkcikpCisJCSAoc2V0IGFkZHIgKHN1YiBybiAxKSkKKwkJIChzZXQgKG1lbSBVUUkgYWRkcikgKHN1YndvcmQgVVFJIHJtIDMpKQorCQkgKHNldCBybiBhZGRyKSkpCisKKyhkc2hjaSBtb3ZiMyAiU3RvcmUgYnl0ZSB0byBtZW1vcnkgKHJlZ2lzdGVyL3JlZ2lzdGVyIGluZGlyZWN0KSIKKyAgICAgICAoKQorICAgICAgICJtb3YuYiAkcm0sIEAocjAsJHJuKSIKKyAgICAgICAoKyAoZi1vcDQgMCkgcm4gcm0gKGYtc3ViNCA0KSkKKyAgICAgICAoc2V0IChtZW0gVVFJIChhZGQgcjAgcm4pKSAoc3Vid29yZCBVUUkgcm0gMykpKQorCisoZHNoY2kgbW92YjQgIlN0b3JlIGJ5dGUgdG8gbWVtb3J5IChHQlItcmVsYXRpdmUgdy8gZGlzcGxhY2VtZW50KSIKKyAgICAgICAoKQorICAgICAgICJtb3YuYiByMCwgQCgkaW1tOCwgZ2JyKSIKKyAgICAgICAoKyAoZi1vcDggI3hjMCkgaW1tOCkKKyAgICAgICAoc2VxdWVuY2UgKChESSBhZGRyKSkKKwkJIChzZXQgYWRkciAoYWRkIGdiciBpbW04KSkKKwkJIChzZXQgKG1lbSBVUUkgYWRkcikgKHN1YndvcmQgVVFJIHIwIDMpKSkpCisKKyhkc2hjaSBtb3ZiNSAiU3RvcmUgYnl0ZSB0byBtZW1vcnkgKHJlZ2lzdGVyIGluZGlyZWN0IHcvIGRpc3BsYWNlbWVudCkiCisgICAgICAgKCkKKyAgICAgICAibW92LmIgcjAsIEAoJGltbTQsICRybSkiCisgICAgICAgKCsgKGYtb3A4ICN4ODApIHJtIGltbTQpCisgICAgICAgKHNlcXVlbmNlICgoREkgYWRkcikpCisJCSAoc2V0IGFkZHIgKGFkZCBybSBpbW00KSkKKwkJIChzZXQgKG1lbSBVUUkgYWRkcikgKHN1YndvcmQgVVFJIHIwIDMpKSkpCisKKyhkc2hjaSBtb3ZiNiAiTG9hZCBieXRlIGZyb20gbWVtb3J5IChyZWdpc3RlciBpbmRpcmVjdCB3LyB6ZXJvIGRpc3BsYWNlbWVudCkiCisgICAgICAgKCkKKyAgICAgICAibW92LmIgQCRybSwgJHJuIgorICAgICAgICgrIChmLW9wNCA2KSBybiBybSAoZi1zdWI0IDApKQorICAgICAgIChzZXQgcm4gKGV4dCBTSSAobWVtIFFJIHJtKSkpKQorCisoZHNoY2kgbW92YjcgIkxvYWQgYnl0ZSBmcm9tIG1lbW9yeSAocmVnaXN0ZXIgaW5kaXJlY3Qgdy8gcG9zdC1pbmNyZW1lbnQpIgorICAgICAgICgpCisgICAgICAgIm1vdi5iIEAke3JtfSssICRybiIKKyAgICAgICAoKyAoZi1vcDQgNikgcm4gcm0gKGYtc3ViNCA0KSkKKyAgICAgICAoc2VxdWVuY2UgKChRSSBkYXRhKSkKKwkJIChzZXQgZGF0YSAobWVtIFFJIHJtKSkKKwkJIChpZiAoZXEgKGluZGV4LW9mIHJtKSAoaW5kZXgtb2Ygcm4pKQorCQkgICAgIChzZXQgcm0gKGV4dCBTSSBkYXRhKSkKKwkJICAgICAoc2V0IHJtIChhZGQgcm0gMSkpKQorCQkgKHNldCBybiAoZXh0IFNJIGRhdGEpKSkpCisKKyhkc2hjaSBtb3ZiOCAiTG9hZCBieXRlIGZyb20gbWVtb3J5IChyZWdpc3Rlci9yZWdpc3RlciBpbmRpcmVjdCkiCisgICAgICAgKCkKKyAgICAgICAibW92LmIgQChyMCwgJHJtKSwgJHJuIgorICAgICAgICgrIChmLW9wNCAwKSBybiBybSAoZi1zdWI0IDEyKSkKKyAgICAgICAoc2V0IHJuIChleHQgU0kgKG1lbSBRSSAoYWRkIHIwIHJtKSkpKSkKKworKGRzaGNpIG1vdmI5ICJMb2FkIGJ5dGUgZnJvbSBtZW1vcnkgKEdCUi1yZWxhdGl2ZSB3aXRoIGRpc3BsYWNlbWVudCkiCisgICAgICAgKCkKKyAgICAgICAibW92LmIgQCgkaW1tOCwgZ2JyKSwgcjAiCisgICAgICAgKCsgKGYtb3A4ICN4YzQpIGltbTgpCisgICAgICAgKHNldCByMCAoZXh0IFNJIChtZW0gUUkgKGFkZCBnYnIgaW1tOCkpKSkpCisKKyhkc2hjaSBtb3ZiMTAgIkxvYWQgYnl0ZSBmcm9tIG1lbW9yeSAocmVnaXN0ZXIgaW5kaXJlY3Qgdy8gZGlzcGxhY2VtZW50KSIKKyAgICAgICAoKQorICAgICAgICJtb3YuYiBAKCRpbW00LCAkcm0pLCByMCIKKyAgICAgICAoKyAoZi1vcDggI3g4NCkgcm0gaW1tNCkKKyAgICAgICAoc2V0IHIwIChleHQgU0kgKG1lbSBRSSAoYWRkIHJtIGltbTQpKSkpKQorCisoZHNoY2kgbW92bDEgIlN0b3JlIGxvbmcgd29yZCB0byBtZW1vcnkgKHJlZ2lzdGVyIGluZGlyZWN0IHcvIHplcm8gZGlzcGxhY2VtZW50KSIKKyAgICAgICAoKQorICAgICAgICJtb3YubCAkcm0sIEAkcm4iCisgICAgICAgKCsgKGYtb3A0IDIpIHJuIHJtIChmLXN1YjQgMikpCisgICAgICAgKHNldCAobWVtIFNJIHJuKSBybSkpCisKKyhkc2hjaSBtb3ZsMiAiU3RvcmUgbG9uZyB3b3JkIHRvIG1lbW9yeSAocmVnaXN0ZXIgaW5kaXJlY3Qgdy8gcHJlLWRlY3JlbWVudCkiCisgICAgICAgKCkKKyAgICAgICAibW92LmwgJHJtLCBALSRybiIKKyAgICAgICAoKyAoZi1vcDQgMikgcm4gcm0gKGYtc3ViNCA2KSkKKyAgICAgICAoc2VxdWVuY2UgKChTSSBhZGRyKSkKKwkJIChzZXQgYWRkciAoc3ViIHJuIDQpKQorCQkgKHNldCAobWVtIFNJIGFkZHIpIHJtKQorCQkgKHNldCBybiBhZGRyKSkpCisKKyhkc2hjaSBtb3ZsMyAiU3RvcmUgbG9uZyB3b3JkIHRvIG1lbW9yeSAocmVnaXN0ZXIvcmVnaXN0ZXIgaW5kaXJlY3QpIgorICAgICAgICgpCisgICAgICAgIm1vdi5sICRybSwgQChyMCwgJHJuKSIKKyAgICAgICAoKyAoZi1vcDQgMCkgcm4gcm0gKGYtc3ViNCA2KSkKKyAgICAgICAoc2V0IChtZW0gU0kgKGFkZCByMCBybikpIHJtKSkKKworKGRzaGNpIG1vdmw0ICJTdG9yZSBsb25nIHdvcmQgdG8gbWVtb3J5IChHQlItcmVsYXRpdmUgdy8gZGlzcGxhY2VtZW50KSIKKyAgICAgICAoKQorICAgICAgICJtb3YubCByMCwgQCgkaW1tOHg0LCBnYnIpIgorICAgICAgICgrIChmLW9wOCAjeGMyKSBpbW04eDQpCisgICAgICAgKHNldCAobWVtIFNJIChhZGQgZ2JyIGltbTh4NCkpIHIwKSkKKworKGRzaGNpIG1vdmw1ICJTdG9yZSBsb25nIHdvcmQgdG8gbWVtb3J5IChyZWdpc3RlciBpbmRpcmVjdCB3LyBkaXNwbGFjZW1lbnQpIgorICAgICAgICgpCisgICAgICAgIm1vdi5sICRybSwgQCgkaW1tNHg0LCAkcm4pIgorICAgICAgICgrIChmLW9wNCAxKSBybiBybSBpbW00eDQpCisgICAgICAgKHNldCAobWVtIFNJIChhZGQgcm4gaW1tNHg0KSkgcm0pKQorCisoZHNoY2kgbW92bDYgIkxvYWQgbG9uZyB3b3JkIHRvIG1lbW9yeSAocmVnaXN0ZXIgaW5kaXJlY3Qgdy8gemVybyBkaXNwbGFjZW1lbnQpIgorICAgICAgICgpCisgICAgICAgIm1vdi5sIEAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgNikgcm4gcm0gKGYtc3ViNCAyKSkKKyAgICAgICAoc2V0IHJuIChtZW0gU0kgcm0pKSkKKworKGRzaGNpIG1vdmw3ICJMb2FkIGxvbmcgd29yZCBmcm9tIG1lbW9yeSAocmVnaXN0ZXIgaW5kaXJlY3Qgdy8gcG9zdC1pbmNyZW1lbnQpIgorICAgICAgICgpCisgICAgICAgIm1vdi5sIEAke3JtfSssICRybiIKKyAgICAgICAoKyAoZi1vcDQgNikgcm4gcm0gKGYtc3ViNCA2KSkKKyAgICAgICAoc2VxdWVuY2UgKCkKKwkJIChzZXQgcm4gKG1lbSBTSSBybSkpCisJCSAoaWYgKGVxIChpbmRleC1vZiBybSkgKGluZGV4LW9mIHJuKSkKKwkJICAgICAoc2V0IHJtIHJuKQorCQkgICAgIChzZXQgcm0gKGFkZCBybSA0KSkpKSkKKworKGRzaGNpIG1vdmw4ICJMb2FkIGxvbmcgd29yZCBmcm9tIG1lbW9yeSAocmVnaXN0ZXIvcmVnaXN0ZXIgaW5kaXJlY3QpIgorICAgICAgICgpCisgICAgICAgIm1vdi5sIEAocjAsICRybSksICRybiIKKyAgICAgICAoKyAoZi1vcDQgMCkgcm4gcm0gKGYtc3ViNCAxNCkpCisgICAgICAgKHNldCBybiAobWVtIFNJIChhZGQgcjAgcm0pKSkpCisKKyhkc2hjaSBtb3ZsOSAiTG9hZCBsb25nIHdvcmQgZnJvbSBtZW1vcnkgKEdCUi1yZWxhdGl2ZSB3LyBkaXNwbGFjZW1lbnQpIgorICAgICAgICgpCisgICAgICAgIm1vdi5sIEAoJGltbTh4NCwgZ2JyKSwgcjAiCisgICAgICAgKCsgKGYtb3A4ICN4YzYpIGltbTh4NCkKKyAgICAgICAoc2V0IHIwIChtZW0gU0kgKGFkZCBnYnIgaW1tOHg0KSkpKQorCisoZHNoY2kgbW92bDEwICJMb2FkIGxvbmcgd29yZCBmcm9tIG1lbW9yeSAoUEMtcmVsYXRpdmUgdy8gZGlzcGxhY2VtZW50KSIKKyAgICAgICAoSUxMU0xPVCkKKyAgICAgICAibW92LmwgQCgkaW1tOHg0LCBwYyksICRybiIKKyAgICAgICAoKyAoZi1vcDQgMTMpIHJuIGltbTh4NCkKKyAgICAgICAoc2V0IHJuIChtZW0gU0kgKGFkZCBpbW04eDQgKGFuZCAoYWRkIHBjIDQpIChpbnYgMykpKSkpKQorCisoZHNoY2kgbW92bDExICJMb2FkIGxvbmcgd29yZCBmcm9tIG1lbW9yeSAocmVnaXN0ZXIgaW5kaXJlY3Qgdy8gZGlzcGxhY2VtZW50KSIKKyAgICAgICAoKQorICAgICAgICJtb3YubCBAKCRpbW00eDQsICRybSksICRybiIKKyAgICAgICAoKyAoZi1vcDQgNSkgcm4gcm0gaW1tNHg0KQorICAgICAgIChzZXQgcm4gKG1lbSBTSSAoYWRkIHJtIGltbTR4NCkpKSkKKworKGRzaGNpIG1vdncxICJTdG9yZSB3b3JkIHRvIG1lbW9yeSAocmVnaXN0ZXIgaW5kaXJlY3Qgdy8gemVybyBkaXNwbGFjZW1lbnQpIgorICAgICAgICgpCisgICAgICAgIm1vdi53ICRybSwgQCRybiIKKyAgICAgICAoKyAoZi1vcDQgMikgcm4gcm0gKGYtc3ViNCAxKSkKKyAgICAgICAoc2V0IChtZW0gSEkgcm4pIChzdWJ3b3JkIEhJIHJtIDEpKSkKKworKGRzaGNpIG1vdncyICJTdG9yZSB3b3JkIHRvIG1lbW9yeSAocmVnaXN0ZXIgaW5kaXJlY3Qgdy8gcHJlLWRlY3JlbWVudCkiCisgICAgICAgKCkKKyAgICAgICAibW92LncgJHJtLCBALSRybiIKKyAgICAgICAoKyAoZi1vcDQgMikgcm4gcm0gKGYtc3ViNCA1KSkKKyAgICAgICAoc2VxdWVuY2UgKChESSBhZGRyKSkKKwkJIChzZXQgYWRkciAoc3ViIHJuIDIpKQorCQkgKHNldCAobWVtIEhJIGFkZHIpIChzdWJ3b3JkIEhJIHJtIDEpKQorCQkgKHNldCBybiBhZGRyKSkpCisKKyhkc2hjaSBtb3Z3MyAiU3RvcmUgd29yZCB0byBtZW1vcnkgKHJlZ2lzdGVyL3JlZ2lzdGVyIGluZGlyZWN0KSIKKyAgICAgICAoKQorICAgICAgICJtb3YudyAkcm0sIEAocjAsICRybikiCisgICAgICAgKCsgKGYtb3A0IDApIHJuIHJtIChmLXN1YjQgNSkpCisgICAgICAgKHNldCAobWVtIEhJIChhZGQgcjAgcm4pKSAoc3Vid29yZCBISSBybSAxKSkpCisKKyhkc2hjaSBtb3Z3NCAiU3RvcmUgd29yZCB0byBtZW1vcnkgKEdCUi1yZWxhdGl2ZSB3LyBkaXNwbGFjZW1lbnQpIgorICAgICAgICgpCisgICAgICAgIm1vdi53IHIwLCBAKCRpbW04eDIsIGdicikiCisgICAgICAgKCsgKGYtb3A4ICN4YzEpIGltbTh4MikKKyAgICAgICAoc2V0IChtZW0gSEkgKGFkZCBnYnIgaW1tOHgyKSkgKHN1YndvcmQgSEkgcjAgMSkpKQorCisoZHNoY2kgbW92dzUgIlN0b3JlIHdvcmQgdG8gbWVtb3J5IChyZWdpc3RlciBpbmRpcmVjdCB3LyBkaXNwbGFjZW1lbnQpIgorICAgICAgICgpCisgICAgICAgIm1vdi53IHIwLCBAKCRpbW00eDIsICRybikiCisgICAgICAgKCsgKGYtb3A4ICN4ODEpIHJuIGltbTR4MikKKyAgICAgICAoc2V0IChtZW0gSEkgKGFkZCBybiBpbW00eDIpKSAoc3Vid29yZCBISSByMCAxKSkpCisKKyhkc2hjaSBtb3Z3NiAiTG9hZCB3b3JkIGZyb20gbWVtb3J5IChyZWdpc3RlciBpbmRpcmVjdCB3LyB6ZXJvIGRpc3BsYWNlbWVudCkiCisgICAgICAgKCkKKyAgICAgICAibW92LncgQCRybSwgJHJuIgorICAgICAgICgrIChmLW9wNCA2KSBybiBybSAoZi1zdWI0IDEpKQorICAgICAgIChzZXQgcm4gKGV4dCBTSSAobWVtIEhJIHJtKSkpKQorCisoZHNoY2kgbW92dzcgIkxvYWQgd29yZCBmcm9tIG1lbW9yeSAocmVnaXN0ZXIgaW5kaXJlY3Qgdy8gcG9zdC1pbmNyZW1lbnQpIgorICAgICAgICgpCisgICAgICAgIm1vdi53IEAke3JtfSssICRybiIKKyAgICAgICAoKyAoZi1vcDQgNikgcm4gcm0gKGYtc3ViNCA1KSkKKyAgICAgICAoc2VxdWVuY2UgKChISSBkYXRhKSkKKwkJIChzZXQgZGF0YSAobWVtIEhJIHJtKSkKKwkJIChpZiAoZXEgKGluZGV4LW9mIHJtKSAoaW5kZXgtb2Ygcm4pKQorCQkgICAgIChzZXQgcm0gKGV4dCBTSSBkYXRhKSkKKwkJICAgICAoc2V0IHJtIChhZGQgcm0gMikpKQorCQkgKHNldCBybiAoZXh0IFNJIGRhdGEpKSkpCisKKyhkc2hjaSBtb3Z3OCAiTG9hZCB3b3JkIGZyb20gbWVtb3J5IChyZWdpc3Rlci9yZWdpc3RlciBpbmRpcmVjdCkiCisgICAgICAgKCkKKyAgICAgICAibW92LncgQChyMCwgJHJtKSwgJHJuIgorICAgICAgICgrIChmLW9wNCAwKSBybiBybSAoZi1zdWI0IDEzKSkKKyAgICAgICAoc2V0IHJuIChleHQgU0kgKG1lbSBISSAoYWRkIHIwIHJtKSkpKSkKKworKGRzaGNpIG1vdnc5ICJMb2FkIHdvcmQgZnJvbSBtZW1vcnkgKEdCUi1yZWxhdGl2ZSB3LyBkaXNwbGFjZW1lbnQpIgorICAgICAgICgpCisgICAgICAgIm1vdi53IEAoJGltbTh4MiwgZ2JyKSwgcjAiCisgICAgICAgKCsgKGYtb3A4ICN4YzUpIGltbTh4MikKKyAgICAgICAoc2V0IHIwIChleHQgU0kgKG1lbSBISSAoYWRkIGdiciBpbW04eDIpKSkpKQorCisoZHNoY2kgbW92dzEwICJMb2FkIHdvcmQgZnJvbSBtZW1vcnkgKFBDLXJlbGF0aXZlIHcvIGRpc3BsYWNlbWVudCkiCisgICAgICAgKElMTFNMT1QpCisgICAgICAgIm1vdi53IEAoJGltbTh4MiwgcGMpLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDkpIHJuIGltbTh4MikKKyAgICAgICAoc2V0IHJuIChleHQgU0kgKG1lbSBISSAoYWRkIChhZGQgcGMgNCkgaW1tOHgyKSkpKSkKKworKGRzaGNpIG1vdncxMSAiTG9hZCB3b3JkIGZyb20gbWVtb3J5IChyZWdpc3RlciBpbmRpcmVjdCB3LyBkaXNwbGFjZW1lbnQpIgorICAgICAgICgpCisgICAgICAgIm1vdi53IEAoJGltbTR4MiwgJHJtKSwgcjAiCisgICAgICAgKCsgKGYtb3A4ICN4ODUpIHJtIGltbTR4MikKKyAgICAgICAoc2V0IHIwIChleHQgU0kgKG1lbSBISSAoYWRkIHJtIGltbTR4MikpKSkpCisKKyhkc2hjaSBtb3ZhICJNb3ZlIGVmZmVjdGl2ZSBhZGRyZXNzIgorICAgICAgIChJTExTTE9UKQorICAgICAgICJtb3ZhIEAoJGltbTh4NCwgcGMpLCByMCIKKyAgICAgICAoKyAoZi1vcDggI3hjNykgaW1tOHg0KQorICAgICAgIChzZXQgcjAgKGFkZCAoYW5kIChhZGQgcGMgNCkgKGludiAzKSkgaW1tOHg0KSkpCisKKyhkc2hjaSBtb3ZjYWwgIk1vdmUgd2l0aCBjYWNoZSBibG9jayBhbGxvY2F0aW9uIgorICAgICAgICgpCisgICAgICAgIm1vdmNhLmwgcjAsIEAkcm4iCisgICAgICAgKCsgKGYtb3A0IDApIHJuIChmLXN1YjggI3hjMykpCisgICAgICAgKHNldCAobWVtIFNJIHJuKSByMCkpCisgICAgICAgCisoZHNoY2kgbW92dCAiTW92ZSB0LWJpdCIKKyAgICAgICAoKQorICAgICAgICJtb3Z0ICRybiIKKyAgICAgICAoKyAoZi1vcDQgMCkgcm4gKGYtc3ViOCA0MSkpCisgICAgICAgKHNldCBybiAoemV4dCBTSSB0Yml0KSkpCisKKyhkc2hjaSBtdWxsICJNdWx0aXBseSIKKyAgICAgICAoKQorICAgICAgICJtdWwubCAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgMCkgcm4gcm0gKGYtc3ViNCA3KSkKKyAgICAgICAoc2V0IG1hY2wgKG11bCBybSBybikpKQorCisoZHNoY2kgbXVsc3cgIk11bHRpcGx5IHdvcmRzIChzaWduZWQpIgorICAgICAgICgpCisgICAgICAgIm11bHMudyAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgMikgcm4gcm0gKGYtc3ViNCAxNSkpCisgICAgICAgKHNldCBtYWNsIChtdWwgKGV4dCBTSSAoc3Vid29yZCBISSBybSAxKSkgKGV4dCBTSSAoc3Vid29yZCBISSBybiAxKSkpKSkKKworKGRzaGNpIG11bHV3ICJNdWx0aXBseSB3b3JkcyAodW5zaWduZWQpIgorICAgICAgICgpCisgICAgICAgIm11bHUudyAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgMikgcm4gcm0gKGYtc3ViNCAxNCkpCisgICAgICAgKHNldCBtYWNsIChtdWwgKHpleHQgU0kgKHN1YndvcmQgSEkgcm0gMSkpICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJuIDEpKSkpKQorCisoZHNoY2kgbmVnICJOZWdhdGUiCisgICAgICAgKCkKKyAgICAgICAibmVnICRybSwgJHJuIgorICAgICAgICgrIChmLW9wNCA2KSBybiBybSAoZi1zdWI0IDExKSkKKyAgICAgICAoc2V0IHJuIChuZWcgcm0pKSkKKworKGRzaGNpIG5lZ2MgIk5lZ2F0ZSB3aXRoIGNhcnJ5IgorICAgICAgICgpCisgICAgICAgIm5lZ2MgJHJtLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDYpIHJuIHJtIChmLXN1YjQgMTApKQorICAgICAgIChzZXF1ZW5jZSAoKEJJIGZsYWcpKQorCQkgKHNldCBmbGFnIChzdWItY2ZsYWcgMCBybSB0Yml0KSkKKwkJIChzZXQgcm4gKHN1YmMgMCBybSB0Yml0KSkKKwkJIChzZXQgdGJpdCBmbGFnKSkpCisKKyhkc2hjaSBub3AgIk5vIG9wZXJhdGlvbiIKKyAgICAgICAoKQorICAgICAgICJub3AiCisgICAgICAgKCsgKGYtb3AxNiA5KSkKKyAgICAgICAobm9wKSkKKworKGRzaGNpIG5vdCAiQml0d2lzZSBOT1QiCisgICAgICAgKCkKKyAgICAgICAibm90ICRybTY0LCAkcm42NCIKKyAgICAgICAoKyAoZi1vcDQgNikgcm42NCBybTY0IChmLXN1YjQgNykpCisgICAgICAgKHNldCBybjY0IChpbnYgcm02NCkpKQorCisoZHNoY2kgb2NiaSAiSW52YWxpZGF0ZSBvcGVyYW5kIGNhY2hlIGJsb2NrIgorICAgICAgICgpCisgICAgICAgIm9jYmkgQCRybiIKKyAgICAgICAoKyAoZi1vcDQgMCkgcm4gKGYtc3ViOCAxNDcpKQorICAgICAgICh1bmltcCAib2NiaSIpKQorCisoZHNoY2kgb2NicCAiUHVyZ2Ugb3BlcmFuZCBjYWNoZSBibG9jayIKKyAgICAgICAoKQorICAgICAgICJvY2JwIEAkcm4iCisgICAgICAgKCsgKGYtb3A0IDApIHJuIChmLXN1YjggMTYzKSkKKyAgICAgICAodW5pbXAgIm9jYnAiKSkKKworKGRzaGNpIG9jYndiICJXcml0ZSBiYWNrIG9wZXJhbmQgY2FjaGUgYmxvY2siCisgICAgICAgKCkKKyAgICAgICAib2Nid2IgQCRybiIKKyAgICAgICAoKyAoZi1vcDQgMCkgcm4gKGYtc3ViOCAxNzkpKQorICAgICAgICh1bmltcCAib2Nid2IiKSkKKworKGRzaGNpIG9yICJCaXR3aXNlIE9SIgorICAgICAgICgpCisgICAgICAgIm9yICRybTY0LCAkcm42NCIKKyAgICAgICAoKyAoZi1vcDQgMikgcm42NCBybTY0IChmLXN1YjQgMTEpKQorICAgICAgIChzZXQgcm42NCAob3Igcm02NCBybjY0KSkpCisKKyhkc2hjaSBvcmkgIkJpdHdpc2UgT1IgaW1tZWRpYXRlIgorICAgICAgICgpCisgICAgICAgIm9yICMkdWltbTgsIHIwIgorICAgICAgICgrIChmLW9wOCAjeGNiKSB1aW1tOCkKKyAgICAgICAoc2V0IHIwIChvciByMCAoemV4dCBESSB1aW1tOCkpKSkKKworKGRzaGNpIG9yYiAiQml0d2lzZSBPUiBpbW1lZGlhdGUiCisgICAgICAgKCkKKyAgICAgICAib3IuYiAjJGltbTgsIEAocjAsIGdicikiCisgICAgICAgKCsgKGYtb3A4ICN4Y2YpIGltbTgpCisgICAgICAgKHNlcXVlbmNlICgoREkgYWRkcikgKFVRSSBkYXRhKSkKKwkJIChzZXQgYWRkciAoYWRkIHIwIGdicikpCisJCSAoc2V0IGRhdGEgKG9yIChtZW0gVVFJIGFkZHIpIGltbTgpKQorCQkgKHNldCAobWVtIFVRSSBhZGRyKSBkYXRhKSkpCisKKyhkc2hjaSBwcmVmICJQcmVmZXRjaCBkYXRhIgorICAgICAgICgpCisgICAgICAgInByZWYgQCRybiIKKyAgICAgICAoKyAoZi1vcDQgMCkgcm4gKGYtc3ViOCAxMzEpKQorICAgICAgICh1bmltcCAicHJlZiIpKQorCisoZHNoY2kgcm90Y2wgIlJvdGF0ZSB3aXRoIGNhcnJ5IGxlZnQiCisgICAgICAgKCkKKyAgICAgICAicm90Y2wgJHJuIgorICAgICAgICgrIChmLW9wNCA0KSBybiAoZi1zdWI4IDM2KSkKKyAgICAgICAoc2VxdWVuY2UgKChCSSB0ZW1wKSkKKwkJIChzZXQgdGVtcCAoc3JsIHJuIDMxKSkKKwkJIChzZXQgcm4gKG9yIChzbGwgcm4gMSkgdGJpdCkpCisJCSAoc2V0IHRiaXQgKGlmIEJJIHRlbXAgMSAwKSkpKQorCisoZHNoY2kgcm90Y3IgIlJvdGF0ZSB3aXRoIGNhcnJ5IHJpZ2h0IgorICAgICAgICgpCisgICAgICAgInJvdGNyICRybiIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCAzNykpCisgICAgICAgKHNlcXVlbmNlICgoQkkgbHNiaXQpIChTSSB0ZW1wKSkKKwkJIChzZXQgbHNiaXQgKGlmIEJJIChlcSAoYW5kIHJuIDEpIDApIDAgMSkpCisJCSAoc2V0IHRlbXAgdGJpdCkKKwkJIChzZXQgcm4gKG9yIChzcmwgcm4gMSkgKHNsbCB0ZW1wIDMxKSkpCisJCSAoc2V0IHRiaXQgKGlmIEJJIGxzYml0IDEgMCkpKSkKKworKGRzaGNpIHJvdGwgIlJvdGF0ZSBsZWZ0IgorICAgICAgICgpCisgICAgICAgInJvdGwgJHJuIgorICAgICAgICgrIChmLW9wNCA0KSBybiAoZi1zdWI4IDQpKQorICAgICAgIChzZXF1ZW5jZSAoKEJJIHRlbXApKQorCQkgKHNldCB0ZW1wIChzcmwgcm4gMzEpKQorCQkgKHNldCBybiAob3IgKHNsbCBybiAxKSB0ZW1wKSkKKwkJIChzZXQgdGJpdCAoaWYgQkkgdGVtcCAxIDApKSkpCisKKyhkc2hjaSByb3RyICJSb3RhdGUgcmlnaHQiCisgICAgICAgKCkKKyAgICAgICAicm90ciAkcm4iCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggNSkpCisgICAgICAgKHNlcXVlbmNlICgoQkkgbHNiaXQpIChTSSB0ZW1wKSkKKwkJIChzZXQgbHNiaXQgKGlmIEJJIChlcSAoYW5kIHJuIDEpIDApIDAgMSkpCisJCSAoc2V0IHRlbXAgbHNiaXQpCisJCSAoc2V0IHJuIChvciAoc3JsIHJuIDEpIChzbGwgdGVtcCAzMSkpKQorCQkgKHNldCB0Yml0IChpZiBCSSBsc2JpdCAxIDApKSkpCisKKyhkc2hjaSBydHMgIlJldHVybiBmcm9tIHN1YnJvdXRpbmUiCisgICAgICAgKCkKKyAgICAgICAicnRzIgorICAgICAgICgrIChmLW9wMTYgMTEpKQorICAgICAgIChkZWxheSAxIChzZXQgcGMgcHIpKSkKKworKGRzaGNpIHNldHMgIlNldCBTLWJpdCIKKyAgICAgICAoKQorICAgICAgICJzZXRzIgorICAgICAgICgrIChmLW9wMTYgODgpKQorICAgICAgIChzZXQgc2JpdCAxKSkKKworKGRzaGNpIHNldHQgIlNldCBULWJpdCIKKyAgICAgICAoKQorICAgICAgICJzZXR0IgorICAgICAgICgrIChmLW9wMTYgMjQpKQorICAgICAgIChzZXQgdGJpdCAxKSkKKworKGRzaGNpIHNoYWQgIlNoaWZ0IGFyaXRobWV0aWMgZHluYW1pYyIKKyAgICAgICAoKQorICAgICAgICJzaGFkICRybSwgJHJuIgorICAgICAgICgrIChmLW9wNCA0KSBybiBybSAoZi1zdWI0IDEyKSkKKyAgICAgICAoc2VxdWVuY2UgKChRSSBzaGFtdCkpCisJCSAoc2V0IHNoYW10IChhbmQgUUkgcm0gMzEpKQorCQkgKGlmIChnZSBybSAwKQorCQkgICAgIChzZXQgcm4gKHNsbCBybiBzaGFtdCkpCisJCSAgICAgKGlmIChuZSBzaGFtdCAwKQorCQkJIChzZXQgcm4gKHNyYSBybiAoc3ViIDMyIHNoYW10KSkpCisJCQkgKGlmIChsdCBybiAwKQorCQkJICAgICAoc2V0IHJuIChuZWcgMSkpCisJCQkgICAgIChzZXQgcm4gMCkpKSkpKQorCisoZHNoY2kgc2hhbCAiU2hpZnQgbGVmdCBhcml0aG1ldGljIG9uZSBiaXQiCisgICAgICAgKCkKKyAgICAgICAic2hhbCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggMzIpKQorICAgICAgIChzZXF1ZW5jZSAoKEJJIHQpKQorCQkgKHNldCB0IChzcmwgcm4gMzEpKQorCQkgKHNldCBybiAoc2xsIHJuIDEpKQorCQkgKHNldCB0Yml0IChpZiBCSSB0IDEgMCkpKSkKKworKGRzaGNpIHNoYXIgIlNoaWZ0IHJpZ2h0IGFyaXRobWV0aWMgb25lIGJpdCIKKyAgICAgICAoKQorICAgICAgICJzaGFyICRybiIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCAzMykpCisgICAgICAgKHNlcXVlbmNlICgoQkkgdCkpCisJCSAoc2V0IHQgKGFuZCBybiAxKSkKKwkJIChzZXQgcm4gKHNyYSBybiAxKSkKKwkJIChzZXQgdGJpdCAoaWYgQkkgdCAxIDApKSkpCisKKyhkc2hjaSBzaGxkICJTaGlmdCBsb2dpY2FsIGR5bmFtaWMiCisgICAgICAgKCkKKyAgICAgICAic2hsZCAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gcm0gKGYtc3ViNCAxMykpCisgICAgICAgKHNlcXVlbmNlICgoUUkgc2hhbXQpKQorCQkgKHNldCBzaGFtdCAoYW5kIFFJIHJtIDMxKSkKKwkJIChpZiAoZ2Ugcm0gMCkKKwkJICAgICAoc2V0IHJuIChzbGwgcm4gc2hhbXQpKQorCQkgICAgIChpZiAobmUgc2hhbXQgMCkKKwkJCSAoc2V0IHJuIChzcmwgcm4gKHN1YiAzMiBzaGFtdCkpKQorCQkJIChzZXQgcm4gMCkpKSkpCisKKyhkc2hjaSBzaGxsICJTaGlmdCBsZWZ0IGxvZ2ljYWwgb25lIGJpdCIKKyAgICAgICAoKQorICAgICAgICJzaGxsICRybiIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCAwKSkKKyAgICAgICAoc2VxdWVuY2UgKChCSSB0KSkKKwkJIChzZXQgdCAoc3JsIHJuIDMxKSkKKwkJIChzZXQgcm4gKHNsbCBybiAxKSkKKwkJIChzZXQgdGJpdCAoaWYgQkkgdCAxIDApKSkpCisKKyhkc2hjaSBzaGxsMiAiU2hpZnQgbGVmdCBsb2dpY2FsIHR3byBiaXRzIgorICAgICAgICgpCisgICAgICAgInNobGwyICRybiIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCA4KSkKKyAgICAgICAoc2V0IHJuIChzbGwgcm4gMikpKQorCisoZHNoY2kgc2hsbDggIlNoaWZ0IGxlZnQgbG9naWNhbCBlaWdodCBiaXRzIgorICAgICAgICgpCisgICAgICAgInNobGw4ICRybiIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCAyNCkpCisgICAgICAgKHNldCBybiAoc2xsIHJuIDgpKSkKKworKGRzaGNpIHNobGwxNiAiU2hpZnQgbGVmdCBsb2dpY2FsIHNpeHRlZW4gYml0cyIKKyAgICAgICAoKQorICAgICAgICJzaGxsMTYgJHJuIgorICAgICAgICgrIChmLW9wNCA0KSBybiAoZi1zdWI4IDQwKSkKKyAgICAgICAoc2V0IHJuIChzbGwgcm4gMTYpKSkKKworKGRzaGNpIHNobHIgIlNoaWZ0IHJpZ2h0IGxvZ2ljYWwgb25lIGJpdCIKKyAgICAgICAoKQorICAgICAgICJzaGxyICRybiIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCAxKSkKKyAgICAgICAoc2VxdWVuY2UgKChCSSB0KSkKKwkJIChzZXQgdCAoYW5kIHJuIDEpKQorCQkgKHNldCBybiAoc3JsIHJuIDEpKQorCQkgKHNldCB0Yml0IChpZiBCSSB0IDEgMCkpKSkKKworKGRzaGNpIHNobHIyICJTaGlmdCByaWdodCBsb2dpY2FsIHR3byBiaXRzIgorICAgICAgICgpCisgICAgICAgInNobHIyICRybiIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCA5KSkKKyAgICAgICAoc2V0IHJuIChzcmwgcm4gMikpKQorCisoZHNoY2kgc2hscjggIlNoaWZ0IHJpZ2h0IGxvZ2ljYWwgZWlnaHQgYml0cyIKKyAgICAgICAoKQorICAgICAgICJzaGxyOCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggMjUpKQorICAgICAgIChzZXQgcm4gKHNybCBybiA4KSkpCisKKyhkc2hjaSBzaGxyMTYgIlNoaWZ0IHJpZ2h0IGxvZ2ljYWwgc2l4dGVlbiBiaXRzIgorICAgICAgICgpCisgICAgICAgInNobHIxNiAkcm4iCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggNDEpKQorICAgICAgIChzZXQgcm4gKHNybCBybiAxNikpKQorCisoZHNoY2kgc3RjLWdiciAiU3RvcmUgY29udHJvbCByZWdpc3RlciAoR0JSKSIKKyAgICAgICAoKQorICAgICAgICJzdGMgZ2JyLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDApIHJuIChmLXN1YjggMTgpKQorICAgICAgIChzZXQgcm4gZ2JyKSkKKworKGRzaGNpIHN0Y2wtZ2JyICJTdG9yZSBjb250cm9sIHJlZ2lzdGVyIChHQlIpIgorICAgICAgICgpCisgICAgICAgInN0Yy5sIGdiciwgQC0kcm4iCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggMTkpKQorICAgICAgIChzZXF1ZW5jZSAoKERJIGFkZHIpKQorCQkgKHNldCBhZGRyIChzdWIgcm4gNCkpCisJCSAoc2V0IChtZW0gU0kgYWRkcikgZ2JyKQorCQkgKHNldCBybiBhZGRyKSkpCisKKyhkc2hjaSBzdHMtZnBzY3IgIlN0b3JlIHN0YXR1cyByZWdpc3RlciAoRlBTQ1IpIgorICAgICAgICgpCisgICAgICAgInN0cyBmcHNjciwgJHJuIgorICAgICAgICgrIChmLW9wNCAwKSBybiAoZi1zdWI4IDEwNikpCisgICAgICAgKHNldCBybiBmcHNjcikpCisKKyhkc2hjaSBzdHNsLWZwc2NyICJTdG9yZSBzdGF0dXMgcmVnaXN0ZXIgKEZQU0NSKSIKKyAgICAgICAoKQorICAgICAgICJzdHMubCBmcHNjciwgQC0kcm4iCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggOTgpKQorICAgICAgIChzZXF1ZW5jZSAoKERJIGFkZHIpKQorCQkgKHNldCBhZGRyIChzdWIgcm4gNCkpCisJCSAoc2V0IChtZW0gU0kgYWRkcikgZnBzY3IpCisJCSAoc2V0IHJuIGFkZHIpKSkKKworKGRzaGNpIHN0cy1mcHVsICJTdG9yZSBzdGF0dXMgcmVnaXN0ZXIgKEZQVUwpIgorICAgICAgICgpCisgICAgICAgInN0cyBmcHVsLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDApIHJuIChmLXN1YjggOTApKQorICAgICAgIChzZXQgcm4gKHN1YndvcmQgU0kgZnB1bCAwKSkpCisKKyhkc2hjaSBzdHNsLWZwdWwgIlN0b3JlIHN0YXR1cyByZWdpc3RlciAoRlBVTCkiCisgICAgICAgKCkKKyAgICAgICAic3RzLmwgZnB1bCwgQC0kcm4iCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggODIpKQorICAgICAgIChzZXF1ZW5jZSAoKERJIGFkZHIpKQorCQkgKHNldCBhZGRyIChzdWIgcm4gNCkpCisJCSAoc2V0IChtZW0gU0YgYWRkcikgZnB1bCkKKwkJIChzZXQgcm4gYWRkcikpKQorCisoZHNoY2kgc3RzLW1hY2ggIlN0b3JlIHN0YXR1cyByZWdpc3RlciAoTUFDSCkiCisgICAgICAgKCkKKyAgICAgICAic3RzIG1hY2gsICRybiIKKyAgICAgICAoKyAoZi1vcDQgMCkgcm4gKGYtc3ViOCAxMCkpCisgICAgICAgKHNldCBybiBtYWNoKSkKKworKGRzaGNpIHN0c2wtbWFjaCAiU3RvcmUgc3RhdHVzIHJlZ2lzdGVyIChNQUNIKSIKKyAgICAgICAoKQorICAgICAgICJzdHMubCBtYWNoLCBALSRybiIKKyAgICAgICAoKyAoZi1vcDQgNCkgcm4gKGYtc3ViOCAyKSkKKyAgICAgICAoc2VxdWVuY2UgKChESSBhZGRyKSkKKwkJIChzZXQgYWRkciAoc3ViIHJuIDQpKQorCQkgKHNldCAobWVtIFNJIGFkZHIpIG1hY2gpCisJCSAoc2V0IHJuIGFkZHIpKSkKKworKGRzaGNpIHN0cy1tYWNsICJTdG9yZSBzdGF0dXMgcmVnaXN0ZXIgKE1BQ0wpIgorICAgICAgICgpCisgICAgICAgInN0cyBtYWNsLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDApIHJuIChmLXN1YjggMjYpKQorICAgICAgIChzZXQgcm4gbWFjbCkpCisKKyhkc2hjaSBzdHNsLW1hY2wgIlN0b3JlIHN0YXR1cyByZWdpc3RlciAoTUFDTCkiCisgICAgICAgKCkKKyAgICAgICAic3RzLmwgbWFjbCwgQC0kcm4iCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggMTgpKQorICAgICAgIChzZXF1ZW5jZSAoKERJIGFkZHIpKQorCQkgKHNldCBhZGRyIChzdWIgcm4gNCkpCisJCSAoc2V0IChtZW0gU0kgYWRkcikgbWFjbCkKKwkJIChzZXQgcm4gYWRkcikpKQorCisoZHNoY2kgc3RzLXByICJTdG9yZSBzdGF0dXMgcmVnaXN0ZXIgKFBSKSIKKyAgICAgICAoKQorICAgICAgICJzdHMgcHIsICRybiIKKyAgICAgICAoKyAoZi1vcDQgMCkgcm4gKGYtc3ViOCA0MikpCisgICAgICAgKHNldCBybiBwcikpCisKKyhkc2hjaSBzdHNsLXByICJTdG9yZSBzdGF0dXMgcmVnaXN0ZXIgKFBSKSIKKyAgICAgICAoKQorICAgICAgICJzdHMubCBwciwgQC0kcm4iCisgICAgICAgKCsgKGYtb3A0IDQpIHJuIChmLXN1YjggMzQpKQorICAgICAgIChzZXF1ZW5jZSAoKERJIGFkZHIpKQorCQkgKHNldCBhZGRyIChzdWIgcm4gNCkpCisJCSAoc2V0IChtZW0gU0kgYWRkcikgcHIpCisJCSAoc2V0IHJuIGFkZHIpKSkKKworKGRzaGNpIHN1YiAiU3VidHJhY3QiCisgICAgICAgKCkKKyAgICAgICAic3ViICRybSwgJHJuIgorICAgICAgICgrIChmLW9wNCAzKSBybiBybSAoZi1zdWI0IDgpKQorICAgICAgIChzZXQgcm4gKHN1YiBybiBybSkpKQorCisoZHNoY2kgc3ViYyAiU3VidHJhY3QgYW5kIGRldGVjdCBjYXJyeSIKKyAgICAgICAoKQorICAgICAgICJzdWJjICRybSwgJHJuIgorICAgICAgICgrIChmLW9wNCAzKSBybiBybSAoZi1zdWI0IDEwKSkKKyAgICAgICAoc2VxdWVuY2UgKChCSSBmbGFnKSkKKwkJIChzZXQgZmxhZyAoc3ViLWNmbGFnIHJuIHJtIHRiaXQpKQorCQkgKHNldCBybiAoc3ViYyBybiBybSB0Yml0KSkKKwkJIChzZXQgdGJpdCBmbGFnKSkpCisKKyhkc2hjaSBzdWJ2ICJTdWJ0cmFjdCBhbmQgZGV0ZWN0IG92ZXJmbG93IgorICAgICAgICgpCisgICAgICAgInN1YnYgJHJtLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDMpIHJuIHJtIChmLXN1YjQgMTEpKQorICAgICAgIChzZXF1ZW5jZSAoKEJJIHQpKQorCQkgKHNldCB0IChzdWItb2ZsYWcgcm4gcm0gMCkpCisJCSAoc2V0IHJuIChzdWIgcm4gcm0pKQorCQkgKHNldCB0Yml0IChpZiBCSSB0IDEgMCkpKSkKKworKGRzaGNpIHN3YXBiICJTd2FwIGJ5dGVzIgorICAgICAgICgpCisgICAgICAgInN3YXAuYiAkcm0sICRybiIKKyAgICAgICAoKyAoZi1vcDQgNikgcm4gcm0gKGYtc3ViNCA4KSkKKyAgICAgICAoc2VxdWVuY2UgKChVSEkgdG9wLWhhbGYpIChVUUkgYnl0ZTEpIChVUUkgYnl0ZTApKQorCQkgKHNldCB0b3AtaGFsZiAoc3Vid29yZCBISSBybSAwKSkKKwkJIChzZXQgYnl0ZTEgKHN1YndvcmQgUUkgcm0gMikpCisJCSAoc2V0IGJ5dGUwIChzdWJ3b3JkIFFJIHJtIDMpKQorCQkgKHNldCBybiAob3IgU0kgKHNsbCBTSSB0b3AtaGFsZiAxNikgKG9yIFNJIChzbGwgU0kgYnl0ZTAgOCkgYnl0ZTEpKSkpKQorCisoZHNoY2kgc3dhcHcgIlN3YXAgd29yZHMiCisgICAgICAgKCkKKyAgICAgICAic3dhcC53ICRybSwgJHJuIgorICAgICAgICgrIChmLW9wNCA2KSBybiBybSAoZi1zdWI0IDkpKQorICAgICAgIChzZXQgcm4gKG9yIChzcmwgcm0gMTYpIChzbGwgcm0gMTYpKSkpCisKKyhkc2hjaSB0YXNiICJUZXN0IGFuZCBzZXQgYnl0ZSIKKyAgICAgICAoKQorICAgICAgICJ0YXMuYiBAJHJuIgorICAgICAgICgrIChmLW9wNCA0KSBybiAoZi1zdWI4IDI3KSkKKyAgICAgICAoc2VxdWVuY2UgKChVUUkgYnl0ZSkpCisJCSAoc2V0IGJ5dGUgKG1lbSBVUUkgcm4pKQorCQkgKHNldCB0Yml0IChpZiBCSSAoZXEgYnl0ZSAwKSAxIDApKQorCQkgKHNldCBieXRlIChvciBieXRlIDEyOCkpCisJCSAoc2V0IChtZW0gVVFJIHJuKSBieXRlKSkpCisKKyhkc2hjaSB0cmFwYSAiVHJhcCIKKyAgICAgICAoSUxMU0xPVCkKKyAgICAgICAidHJhcGEgIyR1aW1tOCIKKyAgICAgICAoKyAoZi1vcDggI3hjMykgdWltbTgpCisgICAgICAgKGMtY2FsbCAic2g2NF9jb21wYWN0X3RyYXBhIiB1aW1tOCBwYykpCisKKyhkc2hjaSB0c3QgIlRlc3QgYW5kIHNldCB0LWJpdCIKKyAgICAgICAoKQorICAgICAgICJ0c3QgJHJtLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDIpIHJuIHJtIChmLXN1YjQgOCkpCisgICAgICAgKHNldCB0Yml0IChpZiBCSSAoZXEgKGFuZCBybSBybikgMCkgMSAwKSkpCisKKyhkc2hjaSB0c3RpICJUZXN0IGFuZCBzZXQgdC1iaXQgaW1tZWRpYXRlIiAKKyAgICAgICAoKQorICAgICAgICJ0c3QgIyR1aW1tOCwgcjAiCisgICAgICAgKCsgKGYtb3A4ICN4YzgpIHVpbW04KQorICAgICAgIChzZXQgdGJpdCAoaWYgQkkgKGVxIChhbmQgcjAgKHpleHQgU0kgdWltbTgpKSAwKSAxIDApKSkKKworKGRzaGNpIHRzdGIgIlRlc3QgYW5kIHNldCB0LWJpdCBpbW1lZGF0ZSB3aXRoIG1lbW9yeSBieXRlIgorICAgICAgICgpCisgICAgICAgInRzdC5iICMkaW1tOCwgQChyMCwgZ2JyKSIKKyAgICAgICAoKyAoZi1vcDggI3hjYykgaW1tOCkKKyAgICAgICAoc2VxdWVuY2UgKChESSBhZGRyKSkKKwkJIChzZXQgYWRkciAoYWRkIHIwIGdicikpCisJCSAoc2V0IHRiaXQgKGlmIEJJIChlcSAoYW5kIChtZW0gVVFJIGFkZHIpIGltbTgpIDApIDEgMCkpKSkKKworKGRzaGNpIHhvciAiRXhjbHVzaXZlIE9SIgorICAgICAgICgpCisgICAgICAgInhvciAkcm02NCwgJHJuNjQiCisgICAgICAgKCsgKGYtb3A0IDIpIHJuNjQgcm02NCAoZi1zdWI0IDEwKSkKKyAgICAgICAoc2V0IHJuNjQgKHhvciBybjY0IHJtNjQpKSkKKworKGRzaGNpIHhvcmkgIkV4Y2x1c2l2ZSBPUiBpbW1lZGlhdGUiCisgICAgICAgKCkKKyAgICAgICAieG9yICMkdWltbTgsIHIwIgorICAgICAgICgrIChmLW9wOCAjeGNhKSB1aW1tOCkKKyAgICAgICAoc2V0IChyZWcgaC1nciAwKSAoeG9yIChyZWcgaC1nciAwKSAoemV4dCBESSB1aW1tOCkpKSkKKworKGRzaGNpIHhvcmIgIkV4Y2x1c2l2ZSBPUiBpbW1lZGlhdGUgd2l0aCBtZW1vcnkgYnl0ZSIKKyAgICAgICAoKQorICAgICAgICJ4b3IuYiAjJGltbTgsIEAocjAsIGdicikiCisgICAgICAgKCsgKGYtb3A4ICN4Y2UpIGltbTgpCisgICAgICAgKHNlcXVlbmNlICgoREkgYWRkcikgKFVRSSBkYXRhKSkKKwkJIChzZXQgYWRkciAoYWRkIHIwIGdicikpCisJCSAoc2V0IGRhdGEgKHhvciAobWVtIFVRSSBhZGRyKSBpbW04KSkKKwkJIChzZXQgKG1lbSBVUUkgYWRkcikgZGF0YSkpKQorCisoZHNoY2kgeHRyY3QgIkV4dHJhY3QiCisgICAgICAgKCkKKyAgICAgICAieHRyY3QgJHJtLCAkcm4iCisgICAgICAgKCsgKGYtb3A0IDIpIHJuIHJtIChmLXN1YjQgMTMpKQorICAgICAgIChzZXQgcm4gKG9yIChzbGwgcm0gMTYpIChzcmwgcm4gMTYpKSkpCmRpZmYgLS1naXQgYS9jcHUvc2g2NC1tZWRpYS5jcHUgYi9jcHUvc2g2NC1tZWRpYS5jcHUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU1NWUzOAotLS0gL2Rldi9udWxsCisrKyBiL2NwdS9zaDY0LW1lZGlhLmNwdQpAQCAtMCwwICsxLDE3MzIgQEAKKzsgSGl0YWNoaSBTSG1lZGlhIGluc3RydWN0aW9uIHNldCBkZXNjcmlwdGlvbi4gIC0qLSBTY2hlbWUgLSotCis7Cis7IENvcHlyaWdodCAyMDAwLCAyMDAxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorOworOyBDb250cmlidXRlZCBieSBSZWQgSGF0IEluYzsgZGV2ZWxvcGVkIHVuZGVyIGNvbnRyYWN0IGZyb20gSGl0YWNoaQorOyBTZW1pY29uZHVjdG9yIChBbWVyaWNhKSBJbmMuCis7Cis7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQmludXRpbHMuCis7Cis7IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCis7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7Cis7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7Cis7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCis7IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisKKwwKKzsgZHNobWYgLS0gZGVmaW5lLW5vcm1hbC1zaC1tZWRpYS1maWVsZAorCisoZGVmaW5lLXBtYWNybyAoZHNobWYgeG5hbWUgeGNvbW1lbnQgaWdub3JlZCB4c3RhcnQgeGxlbmd0aCkKKyAgKGRuZiB4bmFtZSB4Y29tbWVudCAoKElTQSBtZWRpYSkpIHhzdGFydCB4bGVuZ3RoKSkKKworOyBkc2htb3AgLS0gZGVmaW5lLW5vcm1hbC1zaC1tZWRpYS1vcGVyYW5kCisKKyhkZWZpbmUtcG1hY3JvIChkc2htb3AgeG5hbWUgeGNvbW1lbnQgaWdub3JlZCB4aGFyZHdhcmUgeGZpZWxkKQorICAoZG5vcCB4bmFtZSB4Y29tbWVudCAoKElTQSBtZWRpYSkpIHhoYXJkd2FyZSB4ZmllbGQpKQorCis7IGRuc2htaSAtLSBkZWZpbmUtbm9ybWFsLXNoLW1lZGlhLWluc24KKworKGRlZmluZS1wbWFjcm8gKGRzaG1pIHhuYW1lIHhjb21tZW50IHhhdHRycyB4c3ludGF4IHhmb3JtYXQgeHNlbWFudGljcykKKyAgKGRlZmluZS1pbnNuCisgICAgKG5hbWUgeG5hbWUpCisgICAgKGNvbW1lbnQgeGNvbW1lbnQpCisgICAgKC5zcGxpY2UgYXR0cnMgKC51bnNwbGljZSB4YXR0cnMpIChJU0EgbWVkaWEpKQorICAgIChzeW50YXggeHN5bnRheCkKKyAgICAoZm9ybWF0IHhmb3JtYXQpCisgICAgKHNlbWFudGljcyB4c2VtYW50aWNzKSkpCisKKzsgU2F0dXJhdGlvbiBmdW5jdGlvbnMuCis7IEZvcmNlIGEgdmFsdWUgYGknIGludG8gd29yZHMgYG4nIGJpdHMgd2lkZS4KKzsgU2VlIEhpdGFjaGkgU0gtNSBDUFUgY29yZSwgdm9sdW1lIDIsIHAuIDI1IGZvciBkZXRhaWxzLgorCis7IHNhdHVyYXRlIC0tIHNpZ25lZCBzYXR1cmF0YXRpb24gZnVuY3Rpb24KKworKGRlZmluZS1wbWFjcm8gKHNhdHVyYXRlIG1vZGUgbiBpKQorICAoaWYgbW9kZSAobHQgaSAobmVnIG1vZGUgKHNsbCBtb2RlIDEgKHN1YiBuIDEpKSkpCisgICAgICAobmVnIChzbGwgbW9kZSAxIChzdWIgbiAxKSkpCisgICAgICAoaWYgbW9kZSAobHQgaSAoc2xsIG1vZGUgMSAoc3ViIG4gMSkpKQorCSAgaQorIAkgIChzdWIgbW9kZSAoc2xsIG1vZGUgMSAoc3ViIG4gMSkpIDEpKSkpCisKKzsgdXNhdHVyYXRlIC0tIHVuc2lnbmVkIHNhdHVyYXRpb24gZnVuY3Rpb24KKworKGRlZmluZS1wbWFjcm8gKHVzYXR1cmF0ZSBtb2RlIG4gaSkKKyAgKGlmIG1vZGUgKGx0IGkgKGNvbnN0IG1vZGUgMCkpCisgICAgICAoY29uc3QgbW9kZSAwKQorICAgICAgKGlmIG1vZGUgKGx0IGkgKHNsbCBtb2RlIDEgbikpCisJICBpCisJICAoc3ViIG1vZGUgKHNsbCBtb2RlIDEgbikgMSkpKSkKKworDAorOyBJZmllbGRzLgorCisoZHNobWYgZi1vcCAgICAgICAgICAiT3Bjb2RlIiAgICAgICAgICAgICAgICAgICAgICAgKCkgIDMxICA2KQorKGRzaG1mIGYtZXh0ICAgICAgICAgIkV4dGVuc2lvbiBvcGNvZGUiICAgICAgICAgICAgICgpICAxOSAgNCkKKyhkc2htZiBmLXJzdmQgICAgICAgICJSZXNlcnZlZCIJCSAgICAoUkVTRVJWRUQpICAgMyAgNCkKKworKGRzaG1mIGYtbGVmdCAgICAgICAgIkxlZnQgcmVnaXN0ZXIiICAgICAgICAgICAgICAgICgpICAyNSAgNikKKyhkc2htZiBmLXJpZ2h0ICAgICAgICJSaWdodCByZWdpc3RlciIgICAgICAgICAgICAgICAoKSAgMTUgIDYpCisoZHNobWYgZi1kZXN0ICAgICAgICAiRGVzdGluYXRpb24gcmVnaXN0ZXIiICAgICAgICAgKCkgICA5ICA2KQorCisoZGVmaW5lLW11bHRpLWlmaWVsZAorICAobmFtZSBmLWxlZnQtcmlnaHQpCisgIChjb21tZW50ICJMZWZ0IGFuZCByaWdodCBtYXRjaGVkIHJlZ2lzdGVyIHBhaXIiKQorICAoYXR0cnMgKElTQSBtZWRpYSkpCisgIChtb2RlIFVJTlQpCisgIChzdWJmaWVsZHMgZi1sZWZ0IGYtcmlnaHQpCisgIChpbnNlcnQgKHNlcXVlbmNlICgpCisJCSAgICAoc2V0IChpZmllbGQgZi1sZWZ0KQorCQkJIChhbmQgKGlmaWVsZCBmLWxlZnQtcmlnaHQpIDYzKSkKKwkJICAgIChzZXQgKGlmaWVsZCBmLXJpZ2h0KQorCQkJIChhbmQgKGlmaWVsZCBmLWxlZnQtcmlnaHQpIDYzKSkpKQorICAoZXh0cmFjdCAoc2V0IChpZmllbGQgZi1sZWZ0LXJpZ2h0KSAoaWZpZWxkIGYtbGVmdCkpKQorKQorCisoZHNobWYgZi10cmEgICAgICAgICAiVGFyZ2V0IHJlZ2lzdGVyIiAgICAgICAgICAgICAgKCkgICA2ICAzKQorKGRzaG1mIGYtdHJiICAgICAgICAgIlRhcmdldCByZWdpc3RlciIgICAgICAgICAgICAgICgpICAyMiAgMykKKyhkc2htZiBmLWxpa2VseSAgICAgICJMaWtlbHkgYml0IiAgICAgICAgICAgICAgICAgICAoKSAgIDkgIDEpCisoZHNobWYgZi0yNSAgICAgICAgICAiVGhyZWUgdW51c2VkIGJpdHMgYXQgYml0IDI1IiAgKCkgIDI1ICAzKQorKGRzaG1mIGYtOC0yICAgICAgICAgIlR3byB1bnVzZWQgYml0cyBhdCBiaXQgOCIgICAgICgpICAgOCAgMikKKworKGRmIGYtaW1tNiAgICJJbW1lZGlhdGUgdmFsdWUgKDYgYml0cykiICAgICAgKChJU0EgbWVkaWEpKSAxNSA2IElOVCAjZiAjZikKKyhkZiBmLWltbTEwICAiSW1tZWRpYXRlIHZhbHVlICgxMCBiaXRzKSIgICAgICgoSVNBIG1lZGlhKSkgMTkgMTAgSU5UICNmICNmKQorKGRmIGYtaW1tMTYgICJJbW1lZGlhdGUgdmFsdWUgKDE2IGJpdHMpIiAgICAgKChJU0EgbWVkaWEpKSAyNSAxNiBJTlQgI2YgI2YpCisKKyhkc2htZiBmLXVpbW02ICAgICAgICJJbW1lZGlhdGUgdmFsdWUgKDYgYml0cykiICAgICAoKSAgMTUgIDYpCisoZHNobWYgZi11aW1tMTYgICAgICAiSW1tZWRpYXRlIHZhbHVlICgxNiBiaXRzKSIgICAgKCkgIDI1IDE2KQorCis7IFZhcmlvdXMgZGlzcGxhY2VtZW50IGZpZWxkcy4KKzsgVGhlIDEwIGJpdCBmaWVsZCwgZm9yIGV4YW1wbGUsIGhhcyBkaWZmZXJlbnQgc2NhbGluZyBmb3IgZGlzcGxhY2VtZW50cy4KKworKGRmIGYtZGlzcDYJICAgICAiRGlzcGxhY2VtZW50ICg2IGJpdHMpIiAgICAgICAgKChJU0EgbWVkaWEpKSAxNSA2IElOVCAjZiAjZikKKworKGRmIGYtZGlzcDZ4MzIgICAgICAgIkRpc3BsYWNlbWVudCAoNiBiaXRzKSIgICAgICAgICgoSVNBIG1lZGlhKSkgMTUgNiBJTlQKKyAgICAoKHZhbHVlIHBjKSAoc3JhIFNJIHZhbHVlIDUpKQorICAgICgodmFsdWUgcGMpIChzbGwgU0kgdmFsdWUgNSkpKQorCisoZGYgZi1kaXNwMTAgICAgICAgICAiRGlzcGxhY2VtZW50ICgxMCBiaXRzKSIgICAgICAgKChJU0EgbWVkaWEpKSAxOSAxMCBJTlQgI2YgI2YpCisKKyhkZiBmLWRpc3AxMHg4ICAgICAgICJEaXNwbGFjZW1lbnQgKDEwIGJpdHMpIiAgICAgICAoKElTQSBtZWRpYSkpIDE5IDEwIElOVAorICAgICgodmFsdWUgcGMpIChzcmEgU0kgdmFsdWUgMykpCisgICAgKCh2YWx1ZSBwYykgKHNsbCBTSSB2YWx1ZSAzKSkpCisKKyhkZiBmLWRpc3AxMHg0ICAgICAgICJEaXNwbGFjZW1lbnQgKDEwIGJpdHMpIiAgICAgICAoKElTQSBtZWRpYSkpIDE5IDEwIElOVAorICAgICgodmFsdWUgcGMpIChzcmEgU0kgdmFsdWUgMikpCisgICAgKCh2YWx1ZSBwYykgKHNsbCBTSSB2YWx1ZSAyKSkpCisKKyhkZiBmLWRpc3AxMHgyICAgICAgICJEaXNwbGFjZW1lbnQgKDEwIGJpdHMpIiAgICAgICAoKElTQSBtZWRpYSkpIDE5IDEwIElOVAorICAgICgodmFsdWUgcGMpIChzcmEgU0kgdmFsdWUgMSkpCisgICAgKCh2YWx1ZSBwYykgKHNsbCBTSSB2YWx1ZSAxKSkpCisKKyhkZiBmLWRpc3AxNiAgICAgICAgICJEaXNwbGFjZW1lbnQgKDE2IGJpdHMpIiAgICAgICAoKElTQSBtZWRpYSkgUENSRUwtQUREUikgMjUgMTYgSU5UCisgICAgKCh2YWx1ZSBwYykgKHNyYSBESSB2YWx1ZSAyKSkKKyAgICAoKHZhbHVlIHBjKSAoYWRkIERJIChzbGwgREkgdmFsdWUgMikgcGMpKSkKKworDAorOyBPcGVyYW5kcy4KKworKGRzaG1vcCBybSAgICAgICAgIkxlZnQgZ2VuZXJhbCBwdXJwb3NlIHJlZyIgICAgICAgICAgICAoKSAgaC1nciAgICBmLWxlZnQpCisoZHNobW9wIHJuICAgICAgICAiUmlnaHQgZ2VuZXJhbCBwdXJwb3NlIHJlZyIgICAgICAgICAgICgpICBoLWdyICAgIGYtcmlnaHQpCisoZHNobW9wIHJkICAgICAgICAiRGVzdGluYXRpb24gZ2VuZXJhbCBwdXJwb3NlIHJlZyIgICAgICgpICBoLWdyICAgIGYtZGVzdCkKKworKGRzaG1vcCBmcmcgICAgICAgIkxlZnQgc2luZ2xlIHByZWNpc2lvbiByZWdpc3RlciIgICAgICAoKSAgaC1mciAgICBmLWxlZnQpCisoZHNobW9wIGZyaCAgICAgICAiUmlnaHQgc2luZ2xlIHByZWNpc2lvbiByZWdpc3RlciIgICAgICgpICBoLWZyICAgIGYtcmlnaHQpCisoZHNobW9wIGZyZiAgICAgICAiRGVzdGluYXRpb24gc2luZ2xlIHByZWNpc2lvbiByZWciICAgICgpICBoLWZyICAgIGYtZGVzdCkKKyhkc2htb3AgZnJnaCAgICAgICJTaW5nbGUgcHJlY2lzaW9uIHJlZ2lzdGVyIHBhaXIiICAgICAgKCkgIGgtZnIgICAgZi1sZWZ0LXJpZ2h0KQorCisoZHNobW9wIGZwZiAgICAgICAiUGFpciBvZiBzaW5nbGUgcHJlY2lzaW9uIHJlZ2lzdGVycyIgICgpICBoLWZwICAgIGYtZGVzdCkKKworKGRzaG1vcCBmdmcgICAgICAgIkxlZnQgc2luZ2xlIHByZWNpc2lvbiB2ZWN0b3IiICAgICAgICAoKSAgaC1mdiAgICBmLWxlZnQpCisoZHNobW9wIGZ2aCAgICAgICAiUmlnaHQgc2luZ2xlIHByZWNpc2lvbiB2ZWN0b3IiICAgICAgICgpICBoLWZ2ICAgIGYtcmlnaHQpCisoZHNobW9wIGZ2ZiAgICAgICAiRGVzdGluYXRpb24gc2luZ2xlIHByZWNpc2lvbiB2ZWN0b3IiICgpICBoLWZ2ICAgIGYtZGVzdCkKKyhkc2htb3AgbXRyeGcgICAgICJMZWZ0IHNpbmdsZSBwcmVjaXNpb24gbWF0cml4IiAgICAgICAgKCkgIGgtZm10eCAgZi1sZWZ0KQorCisoZHNobW9wIGRyZyAgICAgICAiTGVmdCBkb3VibGUgcHJlY2lzaW9uIHJlZ2lzdGVyIiAgICAgICgpICBoLWRyICAgIGYtbGVmdCkKKyhkc2htb3AgZHJoICAgICAgICJSaWdodCBkb3VibGUgcHJlY2lzaW9uIHJlZ2lzdGVyIiAgICAgKCkgIGgtZHIgICAgZi1yaWdodCkKKyhkc2htb3AgZHJmICAgICAgICJEZXN0aW5hdGlvbiBkb3VibGUgcHJlY2lzaW9uIHJlZyIgICAgKCkgIGgtZHIgICAgZi1kZXN0KQorKGRzaG1vcCBkcmdoICAgICAgIkRvdWJsZSBwcmVjaXNpb24gcmVnaXN0ZXIgcGFpciIgICAgICAoKSAgaC1kciAgICBmLWxlZnQtcmlnaHQpCisKKyhkc2htb3AgZnBzY3IgICAgICJGbG9hdGluZyBwb2ludCBzdGF0dXMgcmVnaXN0ZXIiICAgICAgKCkgIGgtZnBzY3IgZi1uaWwpCisoZHNobW9wIGNyaiAgICAgICAiQ29udHJvbCByZWdpc3RlciBqIiAgICAgICAgICAgICAgICAgICgpICBoLWNyICAgIGYtZGVzdCkKKyhkc2htb3AgY3JrICAgICAgICJDb250cm9sIHJlZ2lzdGVyIGsiCQkJKCkgIGgtY3IgICAgZi1sZWZ0KQorCisoZHNobW9wIHRyYSAgICAgICAiVGFyZ2V0IHJlZ2lzdGVyIGEiICAgICAgICAgICAgICAgICAgICgpICBoLXRyICAgIGYtdHJhKQorKGRzaG1vcCB0cmIgICAgICAgIlRhcmdldCByZWdpc3RlciBiIiAgICAgICAgICAgICAgICAgICAoKSAgaC10ciAgICBmLXRyYikKKworKGRzaG1vcCBkaXNwNiAgICAgIkRpc3BsYWNlbWVudCAoNiBiaXRzKSIJCSgpICBoLXNpbnQgIGYtZGlzcDYpCisoZHNobW9wIGRpc3A2eDMyICAiRGlzcGxhY2VtZW50ICg2IGJpdHMsIHNjYWxlIDMyKSIgICAgICgpICBoLXNpbnQgIGYtZGlzcDZ4MzIpCisoZHNobW9wIGRpc3AxMCAgICAiRGlzcGxhY2VtZW50ICgxMCBiaXRzKSIgICAgICAgICAgICAgICgpICBoLXNpbnQgIGYtZGlzcDEwKQorKGRzaG1vcCBkaXNwMTB4MiAgIkRpc3BsYWNlbWVudCAoMTAgYml0cywgc2NhbGUgMikiICAgICAoKSAgaC1zaW50ICBmLWRpc3AxMHgyKQorKGRzaG1vcCBkaXNwMTB4NCAgIkRpc3BsYWNlbWVudCAoMTAgYml0cywgc2NhbGUgNCkiICAgICAoKSAgaC1zaW50ICBmLWRpc3AxMHg0KQorKGRzaG1vcCBkaXNwMTB4OCAgIkRpc3BsYWNlbWVudCAoMTAgYml0cywgc2NhbGUgOCkiICAgICAoKSAgaC1zaW50ICBmLWRpc3AxMHg4KQorKGRzaG1vcCBkaXNwMTYgICAgIkRpc3BsYWNlbWVudCAoMTYgYml0cykiICAgICAgICAgICAgICAoKSAgaC1zaW50ICBmLWRpc3AxNikKKworKGRzaG1vcCBpbW02ICAgICAgIkltbWVkaWF0ZSAoNiBiaXRzKSIgICAgICAgICAgICAgICAgICAoKSAgaC1zaW50ICBmLWltbTYpCisoZHNobW9wIGltbTEwICAgICAiSW1tZWRpYXRlICgxMCBiaXRzKSIgICAgICAgICAgICAgICAgICgpICBoLXNpbnQgIGYtaW1tMTApCisoZHNobW9wIGltbTE2ICAgICAiSW1tZWRpYXRlICgxNiBiaXRzKSIgICAgICAgICAgICAgICAgICgpICBoLXNpbnQgIGYtaW1tMTYpCisoZHNobW9wIHVpbW02ICAgICAiSW1tZWRpYXRlICg2IGJpdHMpIiAgICAgICAgICAgICAgICAgICgpICBoLXVpbnQgIGYtdWltbTYpCisoZHNobW9wIHVpbW0xNiAgICAiVW5zaWduZWQgaW1tZWRpYXRlICgxNiBiaXRzKSIgICAgICAgICgpICBoLXVpbnQgIGYtdWltbTE2KQorCis7IEZJWE1FOiBwcm92aWRlIHRoZXNlIHBhcnNlL3ByaW50IGZ1bmN0aW9ucyBpbiBgc2gtbWVkaWEub3BjJy4KKworKGRlZmluZS1vcGVyYW5kIChuYW1lIGxpa2VseSkgKGNvbW1lbnQgIkxpa2VseSBicmFuY2g/IikgKGF0dHJzIChJU0EgbWVkaWEpKQorICAodHlwZSBoLXVpbnQpIChpbmRleCBmLWxpa2VseSkgKGhhbmRsZXJzIChwYXJzZSAibGlrZWx5IikgKHByaW50ICJsaWtlbHkiKSkpCisKKwwKKzsgSW5zdHJ1Y3Rpb25zLgorCisoZHNobWkgYWRkICJBZGQiCisgICAgICAgKCkKKyAgICAgICAiYWRkICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMCkgcm0gKGYtZXh0IDkpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoYWRkIHJtIHJuKSkpCisKKyhkc2htaSBhZGRsICJBZGQgbG9uZyIKKyAgICAgICAoKQorICAgICAgICJhZGQubCAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDApIHJtIChmLWV4dCA4KSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKGFkZCAoc3Vid29yZCBTSSBybSAxKSAoc3Vid29yZCBTSSBybiAxKSkpKQorCisoZHNobWkgYWRkaSAiQWRkIGltbWVkaWF0ZSIKKyAgICAgICAoKQorICAgICAgICJhZGRpICRybSwgJGRpc3AxMCwgJHJkIgorICAgICAgICgrIChmLW9wIDUyKSBybSBkaXNwMTAgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChhZGQgcm0gKGV4dCBESSBkaXNwMTApKSkpCisKKyhkc2htaSBhZGRpbCAiQWRkIGltbWVkaWF0ZSBsb25nIgorICAgICAgICgpCisgICAgICAgImFkZGkubCAkcm0sICRkaXNwMTAsICRyZCIKKyAgICAgICAoKyAoZi1vcCA1Mykgcm0gZGlzcDEwIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoZXh0IERJIChhZGQgKGV4dCBTSSBkaXNwMTApIChzdWJ3b3JkIFNJIHJtIDEpKSkpKQorCisoZHNobWkgYWRkemwgIkFkZCB6ZXJvIGV4dGVuZGVkIGxvbmciCisgICAgICAgKCkKKyAgICAgICAiYWRkei5sICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMCkgcm0gKGYtZXh0IDEyKSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKHpleHQgREkgKGFkZCAoc3Vid29yZCBTSSBybSAxKSAoc3Vid29yZCBTSSBybiAxKSkpKSkKKworKGRzaG1pIGFsbG9jbyAiQWxsb2NhdGUgb3BlcmFuZCBjYWNoZSBibG9jayIKKyAgICAgICAoKQorICAgICAgICJhbGxvY28gJHJtLCAkZGlzcDZ4MzIiCisgICAgICAgKCsgKGYtb3AgNTYpIHJtIChmLWV4dCA0KSBkaXNwNngzMiAoZi1kZXN0IDYzKSAoZi1yc3ZkIDApKQorICAgICAgICh1bmltcCAiYWxsb2NvIikpCisKKyhkc2htaSBhbmQgIkFORCIKKyAgICAgICAoKQorICAgICAgICJhbmQgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxKSBybSAoZi1leHQgMTEpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoYW5kIHJtIHJuKSkpCisKKyhkc2htaSBhbmRjICJBTkQgY29tcGxlbWVudCIKKyAgICAgICAoKQorICAgICAgICJhbmRjICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMSkgcm0gKGYtZXh0IDE1KSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKGFuZCBybSAoaW52IHJuKSkpKQorCisoZHNobWkgYW5kaSAiQU5EIGltbWVkaWF0ZSIKKyAgICAgICAoKQorICAgICAgICJhbmRpICRybSwgJGRpc3AxMCwgJHJkIgorICAgICAgICgrIChmLW9wIDU0KSBybSBkaXNwMTAgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChhbmQgcm0gKGV4dCBESSBkaXNwMTApKSkpCisKKyhkc2htaSBiZXEgIkJyYW5jaCBpZiBlcXVhbCIKKyAgICAgICAoKQorICAgICAgICJiZXEkbGlrZWx5ICRybSwgJHJuLCAkdHJhIgorICAgICAgICgrIChmLW9wIDI1KSBybSAoZi1leHQgMSkgcm4gbGlrZWx5IChmLTgtMiAwKSB0cmEgKGYtcnN2ZCAwKSkKKyAgICAgICAoaWYgKGVxIHJtIHJuKQorCSAgIChzZXQgcGMgdHJhKSkpCisKKyhkc2htaSBiZXFpICJCcmFuY2ggaWYgZXF1YWwgaW1tZWRpYXRlIgorICAgICAgICgpCisgICAgICAgImJlcWkkbGlrZWx5ICRybSwgJGltbTYsICR0cmEiCisgICAgICAgKCsgKGYtb3AgNTcpIHJtIChmLWV4dCAxKSBpbW02IGxpa2VseSAoZi04LTIgMCkgdHJhIChmLXJzdmQgMCkpCisgICAgICAgKGlmIChlcSBybSAoZXh0IERJIGltbTYpKQorCSAgIChzZXQgcGMgdHJhKSkpCisKKyhkc2htaSBiZ2UgIkJyYW5jaCBpZiBncmVhdGVyIHRoYW4gb3IgZXF1YWwiCisgICAgICAgKCkKKyAgICAgICAiYmdlJGxpa2VseSAkcm0sICRybiwgJHRyYSIKKyAgICAgICAoKyAoZi1vcCAyNSkgcm0gKGYtZXh0IDMpIHJuIGxpa2VseSAoZi04LTIgMCkgdHJhIChmLXJzdmQgMCkpCisgICAgICAgKGlmIChnZSBybSBybikKKwkgICAoc2V0IHBjIHRyYSkpKQorCisoZHNobWkgYmdldSAiQnJhbmNoIGlmIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCAodW5zaWduZWQgY29tcGFyaXNvbikiCisgICAgICAgKCkKKyAgICAgICAiYmdldSRsaWtlbHkgJHJtLCAkcm4sICR0cmEiCisgICAgICAgKCsgKGYtb3AgMjUpIHJtIChmLWV4dCAxMSkgcm4gbGlrZWx5IChmLTgtMiAwKSB0cmEgKGYtcnN2ZCAwKSkKKyAgICAgICAoaWYgKGdldSBybSBybikKKwkgICAoc2V0IHBjIHRyYSkpKQorCisoZHNobWkgYmd0ICJCcmFuY2ggZ3JlYXRlciB0aGFuIgorICAgICAgICgpCisgICAgICAgImJndCRsaWtlbHkgJHJtLCAkcm4sICR0cmEiCisgICAgICAgKCsgKGYtb3AgMjUpIHJtIChmLWV4dCA3KSBybiBsaWtlbHkgKGYtOC0yIDApIHRyYSAoZi1yc3ZkIDApKQorICAgICAgIChpZiAoZ3Qgcm0gcm4pCisJICAgKHNldCBwYyB0cmEpKSkKKworKGRzaG1pIGJndHUgIkJyYW5jaCBncmVhdGVyIHRoYW4gKHVuc2lnbmVkIGNvbXBhcmlzb24pIgorICAgICAgICgpCisgICAgICAgImJndHUkbGlrZWx5ICRybSwgJHJuLCAkdHJhIgorICAgICAgICgrIChmLW9wIDI1KSBybSAoZi1leHQgMTUpIHJuIGxpa2VseSAoZi04LTIgMCkgdHJhIChmLXJzdmQgMCkpCisgICAgICAgKGlmIChndHUgcm0gcm4pCisJICAgKHNldCBwYyB0cmEpKSkKKworKGRzaG1pIGJsaW5rICJCcmFuY2ggYW5kIGxpbmsiCisgICAgICAgKCkKKyAgICAgICAiYmxpbmsgJHRyYiwgJHJkIgorICAgICAgICgrIChmLW9wIDE3KSAoZi0yNSAwKSB0cmIgKGYtZXh0IDEpIChmLXJpZ2h0IDYzKSByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXF1ZW5jZSAoKQorCQkgKHNldCByZCAob3IgKGFkZCBwYyA0KSAxKSkKKwkJIChzZXQgcGMgdHJiKSkpCisKKyhkc2htaSBibmUgIkJyYW5jaCBpZiBub3QgZXF1YWwiCisgICAgICAgKCkKKyAgICAgICAiYm5lJGxpa2VseSAkcm0sICRybiwgJHRyYSIKKyAgICAgICAoKyAoZi1vcCAyNSkgcm0gKGYtZXh0IDUpIHJuIGxpa2VseSAoZi04LTIgMCkgdHJhIChmLXJzdmQgMCkpCisgICAgICAgKGlmIChuZSBybSBybikKKwkgICAoc2V0IHBjIHRyYSkpKQorCisoZHNobWkgYm5laSAiQnJhbmNoIGlmIG5vdCBlcXVhbCBpbW1lZGlhdGUiCisgICAgICAgKCkKKyAgICAgICAiYm5laSRsaWtlbHkgJHJtLCAkaW1tNiwgJHRyYSIKKyAgICAgICAoKyAoZi1vcCA1Nykgcm0gKGYtZXh0IDUpIHJuIGxpa2VseSAoZi04LTIgMCkgdHJhIChmLXJzdmQgMCkpCisgICAgICAgKGlmIChuZSBybSAoZXh0IERJIGltbTYpKQorCSAgIChzZXQgcGMgdHJhKSkpCisKKyhkc2htaSBicmsgIkJyZWFrcG9pbnQgaW5zdHJ1Y3Rpb24iCisgICAgICAgKCkKKyAgICAgICAiYnJrIgorICAgICAgICgrIChmLW9wIDI3KSAoZi1sZWZ0IDYzKSAoZi1leHQgNSkgKGYtcmlnaHQgNjMpIChmLWRlc3QgNjMpIChmLXJzdmQgMCkpCisgICAgICAgKGMtY2FsbCAic2g2NF9icmVhayIgcGMpKQorCisoZGVmaW5lLXBtYWNybyAoLWJ5dGVyZXYtc3RlcCkKKyAgKHNlcXVlbmNlICgpCisgICAgKHNldCByZXN1bHQgKG9yIChzbGwgcmVzdWx0IDgpIChhbmQgc291cmNlIDI1NSkpKQorICAgIChzZXQgc291cmNlIChzcmwgc291cmNlIDgpKSkKKykKKworKGRzaG1pIGJ5dGVyZXYgIkJ5dGUgcmV2ZXJzZSIKKyAgICAgICAoKQorICAgICAgICJieXRlcmV2ICRybSwgJHJkIgorICAgICAgICgrIChmLW9wIDApIHJtIChmLWV4dCAxNSkgKGYtcmlnaHQgNjMpIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNlcXVlbmNlICgoREkgc291cmNlKSAoREkgcmVzdWx0KSkKKwkJIChzZXQgc291cmNlIHJtKQorCQkgKHNldCByZXN1bHQgMCkKKwkJICgtYnl0ZXJldi1zdGVwKQorCQkgKC1ieXRlcmV2LXN0ZXApCisJCSAoLWJ5dGVyZXYtc3RlcCkKKwkJICgtYnl0ZXJldi1zdGVwKQorCQkgKC1ieXRlcmV2LXN0ZXApCisJCSAoLWJ5dGVyZXYtc3RlcCkKKwkJICgtYnl0ZXJldi1zdGVwKQorCQkgKC1ieXRlcmV2LXN0ZXApCisJCSAoc2V0IHJkIHJlc3VsdCkpKQorCisoZHNobWkgY21wZXEgIkNvbXBhcmUgZXF1YWwiCisgICAgICAgKCkKKyAgICAgICAiY21wZXEgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAwKSBybSAoZi1leHQgMSkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChpZiBESSAoZXEgcm0gcm4pIDEgMCkpKQorCisoZHNobWkgY21wZ3QgIkNvbXBhcmUgZ3JlYXRlciB0aGFuIgorICAgICAgICgpCisgICAgICAgImNtcGd0ICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMCkgcm0gKGYtZXh0IDMpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoaWYgREkgKGd0IHJtIHJuKSAxIDApKSkKKworKGRzaG1pIGNtcGd0dSAiQ29tcGFyZSBncmVhdGVyIHRoYW4gKHVuc2lnbmVkIGNvbXBhcmlzb24pIgorICAgICAgICgpCisgICAgICAgImNtcGd0dSAkcm0sJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMCkgcm0gKGYtZXh0IDcpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoaWYgREkgKGd0dSBybSBybikgMSAwKSkpCisKKyhkc2htaSBjbXZlcSAiQ29uZGl0aW9uYWwgbW92ZSBpZiBlcXVhbCB0byB6ZXJvIgorICAgICAgICgpCisgICAgICAgImNtdmVxICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgOCkgcm0gKGYtZXh0IDEpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKGlmIChlcSBybSAwKQorCSAgIChzZXQgcmQgcm4pKSkKKworKGRzaG1pIGNtdm5lICJDb25kaXRpb25hbCBtb3ZlIGlmIG5vdCBlcXVhbCB0byB6ZXJvIgorICAgICAgICgpCisgICAgICAgImNtdm5lICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgOCkgcm0gKGYtZXh0IDUpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKGlmIChuZSBybSAwKQorCSAgIChzZXQgcmQgcm4pKSkKKworKGRzaG1pIGZhYnNkICJGbG9hdGluZyBwb2ludCBhYnNvbHV0ZSAoZG91YmxlKSIKKyAgICAgICAoKQorICAgICAgICJmYWJzLmQgJGRyZ2gsICRkcmYiCisgICAgICAgKCsgKGYtb3AgNikgZHJnaCAoZi1leHQgMSkgZHJmIChmLXJzdmQgMCkpCisgICAgICAgKHNldCBkcmYgKGMtY2FsbCBERiAic2g2NF9mYWJzZCIgZHJnaCkpKQorCisoZHNobWkgZmFic3MgIkZsb2F0aW5nIHBvaW50IGFic29sdXRlIChzaW5nbGUpIgorICAgICAgICgpCisgICAgICAgImZhYnMucyAkZnJnaCwgJGZyZiIKKyAgICAgICAoKyAoZi1vcCA2KSBmcmdoIChmLWV4dCAwKSBmcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGZyZiAoYy1jYWxsIFNGICJzaDY0X2ZhYnNzIiBmcmdoKSkpCisKKyhkc2htaSBmYWRkZCAiRmxvYXRpbmcgcG9pbnQgYWRkIChkb3VibGUpIgorICAgICAgICgpCisgICAgICAgImZhZGQuZCAkZHJnLCAkZHJoLCAkZHJmIgorICAgICAgICgrIChmLW9wIDEzKSBkcmcgKGYtZXh0IDEpIGRyaCBkcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGRyZiAoYy1jYWxsIERGICJzaDY0X2ZhZGRkIiBkcmcgZHJoKSkpCisKKyhkc2htaSBmYWRkcyAiRmxvYXRpbmcgcG9pbnQgYWRkIChzaW5nbGUpIgorICAgICAgICgpCisgICAgICAgImZhZGQucyAkZnJnLCAkZnJoLCAkZnJmIgorICAgICAgICgrIChmLW9wIDEzKSBmcmcgKGYtZXh0IDApIGZyaCBmcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGZyZiAoYy1jYWxsIFNGICJzaDY0X2ZhZGRzIiBmcmcgZnJoKSkpCisKKyhkc2htaSBmY21wZXFkICJGbG9hdGluZyBwb2ludCBjb21wYXJlIGlmIGVxdWFsIChkb3VibGUpIgorICAgICAgICgpCisgICAgICAgImZjbXBlcS5kICRkcmcsICRkcmgsICRyZCIKKyAgICAgICAoKyAoZi1vcCAxMikgZHJnIChmLWV4dCA5KSBkcmggcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkICh6ZXh0IERJIChjLWNhbGwgQkkgInNoNjRfZmNtcGVxZCIgZHJnIGRyaCkpKSkKKworKGRzaG1pIGZjbXBlcXMgIkZsb2F0aW5nIHBvaW50IGNvbXBhcmUgaWYgZXF1YWwgKHNpbmdsZSkiCisgICAgICAgKCkKKyAgICAgICAiZmNtcGVxLnMgJGZyZywgJGZyaCwgJHJkIgorICAgICAgICgrIChmLW9wIDEyKSBmcmcgKGYtZXh0IDgpIGZyaCByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKHpleHQgREkgKGMtY2FsbCBCSSAic2g2NF9mY21wZXFzIiBmcmcgZnJoKSkpKQorCisoZHNobWkgZmNtcGdlZCAiRmxvYXRpbmcgY29tcGFyZSBjb21wYXJlIGlmIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCAoZG91YmxlKSIKKyAgICAgICAoKQorICAgICAgICJmY21wZ2UuZCAkZHJnLCAkZHJoLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTIpIGRyZyAoZi1leHQgMTUpIGRyaCByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKHpleHQgREkgKGMtY2FsbCBCSSAic2g2NF9mY21wZ2VkIiBkcmcgZHJoKSkpKQorCisoZHNobWkgZmNtcGdlcyAiRmxvYXRpbmcgcG9pbnQgY29tcGFyZSBpZiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgKHNpbmdsZSkiCisgICAgICAgKCkKKyAgICAgICAiZmNtcGdlLnMgJGZyZywgJGZyaCwgJHJkIgorICAgICAgICgrIChmLW9wIDEyKSBmcmcgKGYtZXh0IDE0KSBmcmggcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkICh6ZXh0IERJIChjLWNhbGwgQkkgInNoNjRfZmNtcGdlcyIgZnJnIGZyaCkpKSkKKworKGRzaG1pIGZjbXBndGQgIkZsb2F0aW5nIHBvaW50IGNvbXBhcmUgaWYgZ3JlYXRlciB0aGFuIChkb3VibGUpIgorICAgICAgICgpCisgICAgICAgImZjbXBndC5kICRkcmcsICRkcmgsICRyZCIKKyAgICAgICAoKyAoZi1vcCAxMikgZHJnIChmLWV4dCAxMykgZHJoIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoemV4dCBESSAoYy1jYWxsIEJJICJzaDY0X2ZjbXBndGQiIGRyZyBkcmgpKSkpCisKKyhkc2htaSBmY21wZ3RzICJGbG9hdGluZyBwb2ludCBjb21wYXJlIGlmIGdyZWF0ZXIgdGhhbiAoc2luZ2xlKSIKKyAgICAgICAoKQorICAgICAgICJmY21wZ3QucyAkZnJnLCAkZnJoLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTIpIGZyZyAoZi1leHQgMTIpIGZyaCByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKHpleHQgREkgKGMtY2FsbCBCSSAic2g2NF9mY21wZ3RzIiBmcmcgZnJoKSkpKQorCisoZHNobWkgZmNtcHVuZCAiRmxvYXRpbmcgcG9pbnQgdW5vcmRlcmVkIGNvbXBhcmlzb24gKGRvdWJsZSkiCisgICAgICAgKCkKKyAgICAgICAiZmNtcHVuLmQgJGRyZywgJGRyaCwgJHJkIgorICAgICAgICgrIChmLW9wIDEyKSBkcmcgKGYtZXh0IDExKSBkcmggcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkICh6ZXh0IERJIChjLWNhbGwgQkkgInNoNjRfZmNtcHVuZCIgZHJnIGRyaCkpKSkKKworKGRzaG1pIGZjbXB1bnMgIkZsb2F0aW5nIHBvaW50IHVub3JkZXJlZCBjb21wYXJpc29uIChzaW5nbGUpIgorICAgICAgICgpCisgICAgICAgImZjbXB1bi5zICRmcmcsICRmcmgsICRyZCIKKyAgICAgICAoKyAoZi1vcCAxMikgZnJnIChmLWV4dCAxMCkgZnJoIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoemV4dCBESSAoYy1jYWxsIEJJICJzaDY0X2ZjbXB1bnMiIGZyZyBmcmgpKSkpCisKKyhkc2htaSBmY252ZHMgIkZsb2F0aW5nIHBvaW50IGNvdmVyc2lvbiAoZG91YmxlIHRvIHNpbmdsZSkiCisgICAgICAgKCkKKyAgICAgICAiZmNudi5kcyAkZHJnaCwgJGZyZiIKKyAgICAgICAoKyAoZi1vcCAxNCkgZHJnaCAoZi1leHQgNykgZnJmIChmLXJzdmQgMCkpCisgICAgICAgKHNldCBmcmYgKGMtY2FsbCBTRiAic2g2NF9mY252ZHMiIGRyZ2gpKSkKKworKGRzaG1pIGZjbnZzZCAiRmxvYXRpbmcgcG9pbnQgY29udmVyc2lvbiAoc2luZ2xlIHRvIGRvdWJsZSkiCisgICAgICAgKCkKKyAgICAgICAiZmNudi5zZCAkZnJnaCwgJGRyZiIKKyAgICAgICAoKyAoZi1vcCAxNCkgZnJnaCAoZi1leHQgNikgZHJmIChmLXJzdmQgMCkpCisgICAgICAgKHNldCBkcmYgKGMtY2FsbCBERiAic2g2NF9mY252c2QiIGZyZ2gpKSkKKworKGRzaG1pIGZkaXZkICJGbG9hdGluZyBwb2ludCBkaXZpZGUgKGRvdWJsZSkiCisgICAgICAgKCkKKyAgICAgICAiZmRpdi5kICRkcmcsICRkcmgsICRkcmYiCisgICAgICAgKCsgKGYtb3AgMTMpIGRyZyAoZi1leHQgNSkgZHJoIGRyZiAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgZHJmIChjLWNhbGwgREYgInNoNjRfZmRpdmQiIGRyZyBkcmgpKSkKKworKGRzaG1pIGZkaXZzICJGbG9hdGluZyBwb2ludCBkaXZpZGUgKHNpbmdsZSkiCisgICAgICAgKCkKKyAgICAgICAiZmRpdi5zICRmcmcsICRmcmgsICRmcmYiCisgICAgICAgKCsgKGYtb3AgMTMpIGZyZyAoZi1leHQgNCkgZnJoIGZyZiAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgZnJmIChjLWNhbGwgU0YgInNoNjRfZmRpdnMiIGZyZyBmcmgpKSkKKworKGRzaG1pIGZnZXRzY3IgIkZsb2F0aW5nIHBvaW50IGdldCBmcm9tIEZQU0NSIgorICAgICAgICgpCisgICAgICAgImZnZXRzY3IgJGZyZiIKKyAgICAgICAoKyAoZi1vcCA3KSAoZi1sZWZ0IDYzKSAoZi1leHQgMikgKGYtcmlnaHQgNjMpIGZyZiAoZi1yc3ZkIDApKQorICAgICAgICh1bmltcCAiZnB1dHNjciIpKQorICAgICAgIDsgRklYTUU6IHRoaXMgc2hvdWxkIHdvcmshCisgICAgICAgOyAoc2V0IGZyZiBmcHNjcikpCisKKyhkc2htaSBmaXBycyAiRmxvYXRpbmcgcG9pbnQgaW5uZXIgcHJvZHVjdCAoc2luZ2xlKSIKKyAgICAgICAoKQorICAgICAgICJmaXByLnMgJGZ2ZywgJGZ2aCwgJGZyZiIKKyAgICAgICAoKyAoZi1vcCA1KSBmdmcgKGYtZXh0IDYpIGZ2aCBmcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2VxdWVuY2UgKChVUUkgZykgKFVRSSBoKSAoU0YgdGVtcCkpCisJCSAoc2V0IGcgKGluZGV4LW9mIGZ2ZykpCisJCSAoc2V0IGggKGluZGV4LW9mIGZ2aCkpCisJCSAoc2V0IHRlbXAgKGMtY2FsbCBTRiAic2g2NF9mbXVscyIgKHJlZyBoLWZyIGcpIChyZWcgaC1mciBoKSkpCisJCSAoc2V0IHRlbXAgKGMtY2FsbCBTRiAic2g2NF9mYWRkcyIgdGVtcAorCQkgICAoYy1jYWxsIFNGICJzaDY0X2ZtdWxzIiAocmVnIGgtZnIgKGFkZCBnIDEpKSAocmVnIGgtZnIgKGFkZCBoIDEpKSkpKQorCQkgKHNldCB0ZW1wIChjLWNhbGwgU0YgInNoNjRfZmFkZHMiIHRlbXAKKwkJICAgKGMtY2FsbCBTRiAic2g2NF9mbXVscyIgKHJlZyBoLWZyIChhZGQgZyAyKSkgKHJlZyBoLWZyIChhZGQgaCAyKSkpKSkKKwkJIChzZXQgdGVtcCAoYy1jYWxsIFNGICJzaDY0X2ZhZGRzIiB0ZW1wCisJCSAgIChjLWNhbGwgU0YgInNoNjRfZm11bHMiIChyZWcgaC1mciAoYWRkIGcgMykpIChyZWcgaC1mciAoYWRkIGggMykpKSkpCisJCSAoc2V0IGZyZiB0ZW1wKSkpCisKKyhkc2htaSBmbGRkICJGbG9hdGluZyBwb2ludCBsb2FkIChkb3VibGUpIgorICAgICAgICgpCisgICAgICAgImZsZC5kICRybSwgJGRpc3AxMHg4LCAkZHJmIgorICAgICAgICgrIChmLW9wIDM5KSBybSBkaXNwMTB4OCBkcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGRyZiAobWVtIERGIChhZGQgcm0gZGlzcDEweDgpKSkpCisKKyhkc2htaSBmbGRwICJGbG9hdGluZyBwb2ludCBsb2FkIChwYWlyIG9mIHNpbmdsZXMpIgorICAgICAgICgpCisgICAgICAgImZsZC5wICRybSwgJGRpc3AxMHg4LCAkZnBmIgorICAgICAgICgrIChmLW9wIDM4KSBybSBkaXNwMTB4OCBmcGYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2VxdWVuY2UgKChRSSBmKSkKKwkJIChzZXQgZiAoaW5kZXgtb2YgZnBmKSkKKwkJIChzZXQgKHJlZyBoLWZyIGYpIChtZW0gU0YgKGFkZCBybSBkaXNwMTB4OCkpKQorCQkgKHNldCAocmVnIGgtZnIgKGFkZCBmIDEpKSAobWVtIFNGIChhZGQgcm0gKGFkZCBkaXNwMTB4OCA0KSkpKSkpCisKKyhkc2htaSBmbGRzICJGbG9hdGluZyBwb2ludCBsb2FkIChzaW5nbGUpIgorICAgICAgICgpCisgICAgICAgImZsZC5zICRybSwgJGRpc3AxMHg0LCAkZnJmIgorICAgICAgICgrIChmLW9wIDM3KSBybSBkaXNwMTB4NCBmcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGZyZiAobWVtIFNGIChhZGQgcm0gZGlzcDEweDQpKSkpCisKKyhkc2htaSBmbGR4ZCAiRmxvYXRpbmcgcG9pbnQgZXh0ZW5kZWQgbG9hZCAoZG91YmxlKSIKKyAgICAgICAoKQorICAgICAgICJmbGR4LmQgJHJtLCAkcm4sICRkcmYiCisgICAgICAgKCsgKGYtb3AgNykgcm0gKGYtZXh0IDkpIHJuIGZyZiAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgZHJmIChtZW0gREYgKGFkZCBybSBybikpKSkKKworKGRzaG1pIGZsZHhwICJGbG9hdGluZyBwb2ludCBleHRlbmRlZCBsb2FkIChwYWlyIG9mIHNpbmdsZXMpIgorICAgICAgICgpCisgICAgICAgImZsZHgucCAkcm0sICRybiwgJGZwZiIKKyAgICAgICAoKyAoZi1vcCA3KSBybSAoZi1leHQgMTMpIHJuIGZwZiAoZi1yc3ZkIDApKQorICAgICAgIChzZXF1ZW5jZSAoKFFJIGYpKQorCQkgKHNldCBmIChpbmRleC1vZiBmcGYpKQorCQkgKHNldCAocmVnIGgtZnIgZikgKG1lbSBTRiAoYWRkIHJtIHJuKSkpCisJCSAoc2V0IChyZWcgaC1mciAoYWRkIGYgMSkpIChtZW0gU0YgKGFkZCBybSAoYWRkIHJuIDQpKSkpKSkKKworKGRzaG1pIGZsZHhzICJGbG9hdGluZyBwb2ludCBleHRlbmRlZCBsb2FkIChzaW5nbGUpIgorICAgICAgICgpCisgICAgICAgImZsZHgucyAkcm0sICRybiwgJGZyZiIKKyAgICAgICAoKyAoZi1vcCA3KSBybSAoZi1leHQgOCkgcm4gZnJmIChmLXJzdmQgMCkpCisgICAgICAgKHNldCBmcmYgKG1lbSBTRiAoYWRkIHJtIHJuKSkpKQorCisoZHNobWkgZmxvYXRsZCAiRmxvYXRpbmcgcG9pbnQgY29udmVyc2lvbiAobG9uZyB0byBkb3VibGUpIgorICAgICAgICgpCisgICAgICAgImZsb2F0LmxkICRmcmdoLCAkZHJmIgorICAgICAgICgrIChmLW9wIDE0KSBmcmdoIChmLWV4dCAxNCkgZHJmIChmLXJzdmQgMCkpCisgICAgICAgKHNldCBkcmYgKGMtY2FsbCBERiAic2g2NF9mbG9hdGxkIiBmcmdoKSkpCisKKyhkc2htaSBmbG9hdGxzICJGbG9hdGluZyBwb2ludCBjb252ZXJzaW9uIChsb25nIHRvIHNpbmdsZSkiCisgICAgICAgKCkKKyAgICAgICAiZmxvYXQubHMgJGZyZ2gsICRmcmYiCisgICAgICAgKCsgKGYtb3AgMTQpIGZyZ2ggKGYtZXh0IDEyKSBmcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGZyZiAoYy1jYWxsIFNGICJzaDY0X2Zsb2F0bHMiIGZyZ2gpKSkKKworKGRzaG1pIGZsb2F0cWQgIkZsb2F0aW5nIHBvaW50IGNvbnZlcnNpb24gKHF1YWQgdG8gZG91YmxlKSIKKyAgICAgICAoKQorICAgICAgICJmbG9hdC5xZCAkZHJnaCwgJGRyZiIKKyAgICAgICAoKyAoZi1vcCAxNCkgZHJnaCAoZi1leHQgMTMpIGRyZiAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgZHJmIChjLWNhbGwgREYgInNoNjRfZmxvYXRxZCIgZHJnaCkpKQorCisoZHNobWkgZmxvYXRxcyAiRmxvYXRpbmcgcG9pbnQgY29udmVyc2lvbiAocXVhZCB0byBzaW5nbGUpIgorICAgICAgICgpCisgICAgICAgImZsb2F0LnFzICRkcmdoLCAkZnJmIgorICAgICAgICgrIChmLW9wIDE0KSBkcmdoIChmLWV4dCAxNSkgZnJmIChmLXJzdmQgMCkpCisgICAgICAgKHNldCBmcmYgKGMtY2FsbCBTRiAic2g2NF9mbG9hdHFzIiBkcmdoKSkpCisKKyhkc2htaSBmbWFjcyAiRmxvYXRpbmcgcG9pbnQgbXVsdGlwbHkgYW5kIGFjY3VtdWxhdGUgKHNpbmdsZSkiCisgICAgICAgKCkKKyAgICAgICAiZm1hYy5zICRmcmcsICRmcmgsICRmcmYiCisgICAgICAgKCsgKGYtb3AgMTMpIGZyZyAoZi1leHQgMTQpIGZyaCBmcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGZyZiAoYy1jYWxsIFNGICJzaDY0X2ZhZGRzIiBmcmYgKGMtY2FsbCBTRiAic2g2NF9mbXVscyIgZnJnIGZyaCkpKSkKKworKGRzaG1pIGZtb3ZkICJGbG9hdGluZyBwb2ludCBtb3ZlIGRvdWJsZSIKKyAgICAgICAoKQorICAgICAgICJmbW92LmQgJGRyZ2gsICRkcmYiCisgICAgICAgKCsgKGYtb3AgMTQpIGRyZ2ggKGYtZXh0IDEpIGRyZiAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgZHJmIGRyZ2gpKQorCisoZHNobWkgZm1vdmRxICJGbG9hdGluZyBwb2ludCBtb3ZlIChkb3VibGUgdG8gcXVhZCBpbnRlZ2VyKSIKKyAgICAgICAoKQorICAgICAgICJmbW92LmRxICRkcmdoLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTIpIGRyZ2ggKGYtZXh0IDEpIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoc3Vid29yZCBESSBkcmdoIDApKSkKKworKGRzaG1pIGZtb3ZscyAiRmxvYXRpbmcgcG9pbnQgbW92ZSAobG93ZXIgdG8gc2luZ2xlKSIKKyAgICAgICAoKQorICAgICAgICJmbW92LmxzICRybSwgJGZyZiIKKyAgICAgICAoKyAoZi1vcCA3KSBybSAoZi1leHQgMCkgKGYtcmlnaHQgNjMpIGZyZiAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgZnJmIChzdWJ3b3JkIFNGIChzdWJ3b3JkIFNJIHJtIDEpIDApKSkKKworKGRzaG1pIGZtb3ZxZCAiRmxvYXRpbmcgcG9pbnQgbW92ZSAocXVhZCB0byBkb3VibGUpIgorICAgICAgICgpCisgICAgICAgImZtb3YucWQgJHJtLCAkZHJmIgorICAgICAgICgrIChmLW9wIDcpIHJtIChmLWV4dCAxKSAoZi1yaWdodCA2MykgZnJmIChmLXJzdmQgMCkpCisgICAgICAgKHNldCBkcmYgKHN1YndvcmQgREYgcm0gMCkpKQorCisoZHNobWkgZm1vdnMgIkZsb2F0aW5nIHBvaW50IG1vdmUgKHNpbmdsZSkiCisgICAgICAgKCkKKyAgICAgICAiZm1vdi5zICRmcmdoLCAkZnJmIgorICAgICAgICgrIChmLW9wIDE0KSBmcmdoIChmLWV4dCAwKSBmcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGZyZiBmcmdoKSkKKworKGRzaG1pIGZtb3ZzbCAiRmxvYXRpbmcgcG9pbnQgbW92ZSAoc2luZ2xlIHRvIGxvd2VyKSIKKyAgICAgICAoKQorICAgICAgICJmbW92LnNsICRmcmdoLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTIpIGZyZ2ggKGYtZXh0IDApIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoZXh0IERJIChzdWJ3b3JkIFNJIGZyZ2ggMSkpKSkKKworKGRzaG1pIGZtdWxkICJGbG9hdGluZyBwb2ludCBtdWx0aXBseSAoZG91YmxlKSIKKyAgICAgICAoKQorICAgICAgICJmbXVsLmQgJGRyZywgJGRyaCwgJGRyZiIKKyAgICAgICAoKyAoZi1vcCAxMykgZHJnIChmLWV4dCA3KSBkcmggZHJmIChmLXJzdmQgMCkpCisgICAgICAgKHNldCBkcmYgKGMtY2FsbCBERiAic2g2NF9mbXVsZCIgZHJnIGRyaCkpKQorCisoZHNobWkgZm11bHMgIkZsb2F0aW5nIHBvaW50IG11bHRpcGx5IChzaW5nbGUpIgorICAgICAgICgpCisgICAgICAgImZtdWwucyAkZnJnLCAkZnJoLCAkZnJmIgorICAgICAgICgrIChmLW9wIDEzKSBmcmcgKGYtZXh0IDYpIGZyaCBmcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGZyZiAoYy1jYWxsIFNGICJzaDY0X2ZtdWxzIiBmcmcgZnJoKSkpCisKKyhkc2htaSBmbmVnZCAiRmxvYXRpbmcgcG9pbnQgbmVnYXRlIChkb3VibGUpIgorICAgICAgICgpCisgICAgICAgImZuZWcuZCAkZHJnaCwgJGRyZiIKKyAgICAgICAoKyAoZi1vcCA2KSBkcmdoIChmLWV4dCAzKSBkcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGRyZiAoYy1jYWxsIERGICJzaDY0X2ZuZWdkIiBkcmdoKSkpCisKKyhkc2htaSBmbmVncyAiRmxvYXRpbmcgcG9pbnQgbmVnYXRlIChzaW5nbGUpIgorICAgICAgICgpCisgICAgICAgImZuZWcucyAkZnJnaCwgJGZyZiIKKyAgICAgICAoKyAoZi1vcCA2KSBmcmdoIChmLWV4dCAyKSBmcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGZyZiAoYy1jYWxsIFNGICJzaDY0X2ZuZWdzIiBmcmdoKSkpCisKKyhkc2htaSBmcHV0c2NyICJGbG9hdGluZyBwb2ludCBwdXQgdG8gRlBTQ1IiCisgICAgICAgKCkKKyAgICAgICAiZnB1dHNjciAkZnJnaCIKKyAgICAgICAoKyAoZi1vcCAxMikgZnJnaCAoZi1leHQgMikgKGYtZGVzdCA2MykgKGYtcnN2ZCAwKSkKKyAgICAgICAodW5pbXAgImZwdXRzY3IiKSkKKyAgICAgICA7IEZJWE1FOiB0aGlzIHNob3VsZCB3b3JrIQorICAgICAgIDsgKHNldCBmcHNjciAoc3Vid29yZCBTSSBmcmdoIDApKSkKKworKGRzaG1pIGZzcXJ0ZCAiRmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QgKGRvdWJsZSkiCisgICAgICAgKCkKKyAgICAgICAiZnNxcnQuZCAkZHJnaCwgJGRyZiIKKyAgICAgICAoKyAoZi1vcCAxNCkgZHJnaCAoZi1leHQgNSkgZHJmIChmLXJzdmQgMCkpCisgICAgICAgKHNldCBkcmYgKGMtY2FsbCBERiAic2g2NF9mc3FydGQiIGRyZ2gpKSkKKworKGRzaG1pIGZzcXJ0cyAiRmxvYXRpbmcgcG9pbnQgc3F1YXJ0IHJvb3QgKHNpbmdsZSkiCisgICAgICAgKCkKKyAgICAgICAiZnNxcnQucyAkZnJnaCwgJGZyZiIKKyAgICAgICAoKyAoZi1vcCAxNCkgZnJnaCAoZi1leHQgNCkgZnJmIChmLXJzdmQgMCkpCisgICAgICAgKHNldCBmcmYgKGMtY2FsbCBTRiAic2g2NF9mc3FydHMiIGZyZ2gpKSkKKworKGRzaG1pIGZzdGQgIkZsb2F0aW5nIHBvaW50IHN0b3JlIChkb3VibGUpIgorICAgICAgICgpCisgICAgICAgImZzdC5kICRybSwgJGRpc3AxMHg4LCAkZHJmIgorICAgICAgICgrIChmLW9wIDQ3KSBybSBkaXNwMTB4OCBkcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IChtZW0gREYgKGFkZCBybSBkaXNwMTB4OCkpIGRyZikpCisKKyhkc2htaSBmc3RwICJGbG9hdGluZyBwb2ludCBzdG9yZSAocGFpciBvZiBzaW5nbGVzKSIKKyAgICAgICAoKQorICAgICAgICJmc3QucCAkcm0sICRkaXNwMTB4OCwgJGZwZiIKKyAgICAgICAoKyAoZi1vcCA0Nikgcm0gZGlzcDEweDggZnBmIChmLXJzdmQgMCkpCisgICAgICAgKHNlcXVlbmNlICgoUUkgZikpCisJCSAoc2V0IGYgKGluZGV4LW9mIGZwZikpCisJCSAoc2V0IChtZW0gU0YgKGFkZCBybSBkaXNwMTB4OCkpIChyZWcgaC1mciBmKSkKKwkJIChzZXQgKG1lbSBTRiAoYWRkIHJtIChhZGQgZGlzcDEweDggNCkpKSAocmVnIGgtZnIgKGFkZCBmIDEpKSkpKQorCisoZHNobWkgZnN0cyAiRmxvYXRpbmcgcG9pbnQgc3RvcmUgKHNpbmdsZSkiCisgICAgICAgKCkKKyAgICAgICAiZnN0LnMgJHJtLCAkZGlzcDEweDQsICRmcmYiCisgICAgICAgKCsgKGYtb3AgNDUpIHJtIGRpc3AxMHg0IGZyZiAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgKG1lbSBTRiAoYWRkIHJtIGRpc3AxMHg0KSkgZnJmKSkKKworKGRzaG1pIGZzdHhkICJGbG9hdGluZyBwb2ludCBleHRlbmRlZCBzdG9yZSAoZG91YmxlKSIKKyAgICAgICAoKQorICAgICAgICJmc3R4LmQgJHJtLCAkcm4sICRkcmYiCisgICAgICAgKCsgKGYtb3AgMTUpIHJtIChmLWV4dCA5KSBybiBkcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IChtZW0gREYgKGFkZCBybSBybikpIGRyZikpCisKKyhkc2htaSBmc3R4cCAiRmxvYXRpbmcgcG9pbnQgZXh0ZW5kZWQgc3RvcmUgKHBhaXIgb2Ygc2luZ2xlcykiCisgICAgICAgKCkKKyAgICAgICAiZnN0eC5wICRybSwgJHJuLCAkZnBmIgorICAgICAgICgrIChmLW9wIDE1KSBybSAoZi1leHQgMTMpIHJuIGZwZiAoZi1yc3ZkIDApKQorICAgICAgIChzZXF1ZW5jZSAoKFFJIGYpKQorCQkgKHNldCBmIChpbmRleC1vZiBmcGYpKQorCQkgKHNldCAobWVtIFNGIChhZGQgcm0gcm4pKSAocmVnIGgtZnIgZikpCisJCSAoc2V0IChtZW0gU0YgKGFkZCBybSAoYWRkIHJuIDQpKSkgKHJlZyBoLWZyIChhZGQgZiAxKSkpKSkKKworKGRzaG1pIGZzdHhzICJGbG9hdGluZyBwb2ludCBleHRlbmRlZCBzdG9yZSAoc2luZ2xlKSIKKyAgICAgICAoKQorICAgICAgICJmc3R4LnMgJHJtLCAkcm4sICRmcmYiCisgICAgICAgKCsgKGYtb3AgMTUpIHJtIChmLWV4dCA4KSBybiBmcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IChtZW0gU0YgKGFkZCBybSBybikpIGZyZikpCisKKyhkc2htaSBmc3ViZCAiRmxvYXRpbmcgcG9pbnQgc3VidHJhY3QgKGRvdWJsZSkiCisgICAgICAgKCkKKyAgICAgICAiZnN1Yi5kICRkcmcsICRkcmgsICRkcmYiCisgICAgICAgKCsgKGYtb3AgMTMpIGZyZyAoZi1leHQgMykgZnJoIGZyZiAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgZHJmIChjLWNhbGwgREYgInNoNjRfZnN1YmQiIGRyZyBkcmgpKSkKKworKGRzaG1pIGZzdWJzICJGbG9hdGluZyBwb2ludCBzdWJ0cmFjdCAoc2luZ2xlKSIKKyAgICAgICAoKQorICAgICAgICJmc3ViLnMgJGZyZywgJGZyaCwgJGZyZiIKKyAgICAgICAoKyAoZi1vcCAxMykgZnJnIChmLWV4dCAyKSBmcmggZnJmIChmLXJzdmQgMCkpCisgICAgICAgKHNldCBmcmYgKGMtY2FsbCBTRiAic2g2NF9mc3VicyIgZnJnIGZyaCkpKQorCisoZHNobWkgZnRyY2RsICJGbG9hdGluZyBwb2ludCBjb252ZXJzaW9uIChkb3VibGUgdG8gbG9uZykiCisgICAgICAgKCkKKyAgICAgICAiZnRyYy5kbCAkZHJnaCwgJGZyZiIKKyAgICAgICAoKyAoZi1vcCAxNCkgZHJnaCAoZi1leHQgMTEpIGZyZiAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgZnJmIChjLWNhbGwgU0YgInNoNjRfZnRyY2RsIiBkcmdoKSkpCisKKyhkc2htaSBmdHJjc2wgIkZsb2F0aW5nIHBvaW50IGNvbnZlcnNpb24gKHNpbmdsZSB0byBsb25nKSIKKyAgICAgICAoKQorICAgICAgICJmdHJjLnNsICRmcmdoLCAkZnJmIgorICAgICAgICgrIChmLW9wIDE0KSBmcmdoIChmLWV4dCA4KSBmcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGZyZiAoYy1jYWxsIFNGICJzaDY0X2Z0cmNzbCIgZnJnaCkpKQorCisoZHNobWkgZnRyY2RxICJGbG9hdGluZyBwb2ludCBjb252ZXJzaW9uIChkb3VibGUgdG8gcXVhZCkiCisgICAgICAgKCkKKyAgICAgICAiZnRyYy5kcSAkZHJnaCwgJGRyZiIKKyAgICAgICAoKyAoZi1vcCAxNCkgZHJnaCAoZi1leHQgOSkgZnJmIChmLXJzdmQgMCkpCisgICAgICAgKHNldCBkcmYgKGMtY2FsbCBERiAic2g2NF9mdHJjZHEiIGRyZ2gpKSkKKworKGRzaG1pIGZ0cmNzcSAiRmxvYXRpbmcgcG9pbnQgY29udmVyc2lvbiAoc2luZ2xlIHRvIHF1YWQpIgorICAgICAgICgpCisgICAgICAgImZ0cmMuc3EgJGZyZ2gsICRkcmYiCisgICAgICAgKCsgKGYtb3AgMTQpIGZyZ2ggKGYtZXh0IDEwKSBkcmYgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IGRyZiAoYy1jYWxsIERGICJzaDY0X2Z0cmNzcSIgZnJnaCkpKQorCisoZHNobWkgZnRydnMgIkZsb2F0aW5nIHBvaW50IG1hdHJpeCBtdWx0aXBseSIKKyAgICAgICAoKQorICAgICAgICJmdHJ2LnMgJG10cnhnLCAkZnZoLCAkZnZmIgorICAgICAgICgrIChmLW9wIDUpIG10cnhnIChmLWV4dCAxNCkgZnZoIGZ2ZiAoZi1yc3ZkIDApKQorICAgICAgIChjLWNhbGwgInNoNjRfZnRydnMiIChpbmRleC1vZiBtdHJ4ZykgKGluZGV4LW9mIGZ2aCkgKGluZGV4LW9mIGZ2ZikpKQorCisoZHNobWkgZ2V0Y2ZnICJHZXQgY29uZmlndXJhdGlvbiByZWdpc3RlciIKKyAgICAgICAoKQorICAgICAgICJnZXRjZmcgJHJtLCAkZGlzcDYsICRyZCIKKyAgICAgICAoKyAoZi1vcCA0OCkgcm0gKGYtZXh0IDE1KSBkaXNwNiByZCAoZi1yc3ZkIDApKQorICAgICAgICh1bmltcCAiZ2V0Y2ZnIikpCisKKyhkc2htaSBnZXRjb24gIkdldCBjb250cm9sIHJlZ2lzdGVyIgorICAgICAgICgpCisgICAgICAgImdldGNvbiAkY3JrLCAkcmQiCisgICAgICAgKCsgKGYtb3AgOSkgY3JrIChmLWV4dCAxNSkgKGYtcmlnaHQgNjMpIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCBjcmspKQorCisoZHNobWkgZ2V0dHIgIkdldCB0YXJnZXQgcmVnaXN0ZXIiCisgICAgICAgKCkKKyAgICAgICAiZ2V0dHIgJHRyYiwgJHJkIgorICAgICAgICgrIChmLW9wIDE3KSAoZi0yNSAwKSB0cmIgKGYtZXh0IDUpIChmLXJpZ2h0IDYzKSByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgdHJiKSkKKworKGRzaG1pIGljYmkgIkludmFsaWRhdGUgaW5zdHJ1Y3Rpb24gY2FjaGUgYmxvY2siCisgICAgICAgKCkKKyAgICAgICAiaWNiaSAkcm0sICRkaXNwNngzMiIKKyAgICAgICAoKyAoZi1vcCA1Nikgcm0gKGYtZXh0IDUpIGRpc3A2eDMyIChmLWRlc3QgNjMpIChmLXJzdmQgMCkpCisgICAgICAgKHVuaW1wICJpY2JpIikpCisKKyhkc2htaSBsZGIgIkxvYWQgYnl0ZSIKKyAgICAgICAoKQorICAgICAgICJsZC5iICRybSwgJGRpc3AxMCwgJHJkIgorICAgICAgICgrIChmLW9wIDMyKSBybSBkaXNwMTAgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChleHQgREkgKG1lbSBRSSAoYWRkIHJtIChleHQgREkgZGlzcDEwKSkpKSkpCisKKyhkc2htaSBsZGwgIkxvYWQgbG9uZyB3b3JkIgorICAgICAgICgpCisgICAgICAgImxkLmwgJHJtLCAkZGlzcDEweDQsICRyZCIKKyAgICAgICAoKyAoZi1vcCAzNCkgcm0gZGlzcDEweDQgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChleHQgREkgKG1lbSBTSSAoYWRkIHJtIChleHQgREkgZGlzcDEweDQpKSkpKSkKKworKGRzaG1pIGxkcSAiTG9hZCBxdWFkIHdvcmQiCisgICAgICAgKCkKKyAgICAgICAibGQucSAkcm0sICRkaXNwMTB4OCwgJHJkIgorICAgICAgICgrIChmLW9wIDM1KSBybSBkaXNwMTB4OCByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKG1lbSBESSAoYWRkIHJtIChleHQgREkgZGlzcDEweDgpKSkpKQorCisoZHNobWkgbGR1YiAiTG9hZCB1bnNpZ25lZCBieXRlIgorICAgICAgICgpCisgICAgICAgImxkLnViICRybSwgJGRpc3AxMCwgJHJkIgorICAgICAgICgrIChmLW9wIDM2KSBybSBkaXNwMTAgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkICh6ZXh0IERJIChtZW0gUUkgKGFkZCBybSAoZXh0IERJIGRpc3AxMCkpKSkpKQorCisoZHNobWkgbGR1dyAiTG9hZCB1bnNpZ25lZCB3b3JkIgorICAgICAgICgpCisgICAgICAgImxkLnV3ICRybSwgJGRpc3AxMHgyLCAkcmQiCisgICAgICAgKCsgKGYtb3AgNDQpIHJtIGRpc3AxMCByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKHpleHQgREkgKG1lbSBISSAoYWRkIHJtIChleHQgREkgZGlzcDEweDIpKSkpKSkKKworKGRzaG1pIGxkdyAiTG9hZCB3b3JkIgorICAgICAgICgpCisgICAgICAgImxkLncgJHJtLCAkZGlzcDEweDIsICRyZCIKKyAgICAgICAoKyAoZi1vcCAzMykgcm0gZGlzcDEwIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoZXh0IERJIChtZW0gSEkgKGFkZCBybSAoZXh0IERJIGRpc3AxMHgyKSkpKSkpCisKKyhkc2htaSBsZGhpbCAiTG9hZCBoaWdoIHBhcnQgKGxvbmcgd29yZCkiCisgICAgICAgKCkKKyAgICAgICAibGRoaS5sICRybSwgJGRpc3A2LCAkcmQiCisgICAgICAgKCsgKGYtb3AgNDgpIHJtIChmLWV4dCA2KSBkaXNwNiByZCAoZi1yc3ZkIDApKQorICAgICAgIDsgRklYTUUuCisgICAgICAgKHVuaW1wICJsZGhpbCIpKQorCisoZHNobWkgbGRoaXEgIkxvYWQgaGlnaCBwYXJ0IChxdWFkIHdvcmQpIgorICAgICAgICgpCisgICAgICAgImxkaGkucSAkcm0sICRkaXNwNiwgJHJkIgorICAgICAgICgrIChmLW9wIDQ4KSBybSAoZi1leHQgNykgZGlzcDYgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICA7IEZJWE1FLgorICAgICAgICh1bmltcCAibGRoaXEiKSkKKworKGRzaG1pIGxkbG9sICJMb2FkIGxvdyBwYXJ0IChsb25nIHdvcmQpIgorICAgICAgICgpCisgICAgICAgImxkbG8ubCAkcm0sICRkaXNwNiwgJHJkIgorICAgICAgICgrIChmLW9wIDQ4KSBybSAoZi1leHQgMikgZGlzcDYgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICA7IEZJWE1FLgorICAgICAgICh1bmltcCAibGRsb2wiKSkKKworKGRzaG1pIGxkbG9xICJMb2FkIGxvdyBwYXJ0IChxdWFkIHdvcmQpIgorICAgICAgICgpCisgICAgICAgImxkbG8ucSAkcm0sICRkaXNwNiwgJHJkIgorICAgICAgICgrIChmLW9wIDQ4KSBybSAoZi1leHQgMykgZGlzcDYgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICA7IEZJWE1FOworICAgICAgICh1bmltcCAibGRsb3EiKSkKKworKGRzaG1pIGxkeGIgIkxvYWQgYnl0ZSAoZXh0ZW5kZWQgZGlzcGxhY2VtZW50KSIKKyAgICAgICAoKQorICAgICAgICJsZHguYiAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDE2KSBybSAoZi1leHQgMCkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChleHQgREkgKG1lbSBRSSAoYWRkIHJtIHJuKSkpKSkKKworKGRzaG1pIGxkeGwgIkxvYWQgbG9uZyB3b3JkIChleHRlbmRlZCBkaXNwbGFjZW1lbnQpIgorICAgICAgICgpCisgICAgICAgImxkeC5sICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTYpIHJtIChmLWV4dCAyKSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKGV4dCBESSAobWVtIFNJIChhZGQgcm0gcm4pKSkpKQorCisoZHNobWkgbGR4cSAiTG9hZCBxdWFkIHdvcmQgKGV4dGVuZGVkIGRpc3BsYWNlbWVudCkiCisgICAgICAgKCkKKyAgICAgICAibGR4LnEgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxNikgcm0gKGYtZXh0IDMpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAobWVtIERJIChhZGQgcm0gcm4pKSkpCisKKyhkc2htaSBsZHh1YiAiTG9hZCB1bnNpZ25lZCBieXRlIChleHRlbmRlZCBkaXNwbGFjZW1lbnQpIgorICAgICAgICgpCisgICAgICAgImxkeC51YiAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDE2KSBybSAoZi1leHQgNCkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkICh6ZXh0IERJIChtZW0gVVFJIChhZGQgcm0gcm4pKSkpKQorCisoZHNobWkgbGR4dXcgIkxvYWQgdW5zaWduZWQgd29yZCAoZXh0ZW5kZWQgZGlzcGxhY2VtZW50KSIKKyAgICAgICAoKQorICAgICAgICJsZHgudXcgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxNikgcm0gKGYtZXh0IDUpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoemV4dCBESSAobWVtIFVISSAoYWRkIHJtIHJuKSkpKSkKKworKGRzaG1pIGxkeHcgIkxvYWQgd29yZCAoZXh0ZW5kZWQgZGlzcGxhY2VtZW50KSIKKyAgICAgICAoKQorICAgICAgICJsZHgudyAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDE2KSBybSAoZi1leHQgMSkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChleHQgREkgKG1lbSBISSAoYWRkIHJtIHJuKSkpKSkKKworDAorOyBNYWNyb3MgdG8gZmFjaWxpdGF0ZSBtdWx0aW1lZGlhIGluc3RydWN0aW9ucy4KKworKGRlZmluZS1wbWFjcm8gKHNsaWNlLWJ5dGUgZXhwcikKKyAgKHNlcXVlbmNlICgoUUkgcmVzdWx0NykgKFFJIHJlc3VsdDYpIChRSSByZXN1bHQ1KSAoUUkgcmVzdWx0NCkKKwkgICAgIChRSSByZXN1bHQzKSAoUUkgcmVzdWx0MikgKFFJIHJlc3VsdDEpIChRSSByZXN1bHQwKSkKKwkgICAgKHNldCByZXN1bHQwIChleHByIChzdWJ3b3JkIFFJIHJtIDcpIChzdWJ3b3JkIFFJIHJuIDcpKSkKKwkgICAgKHNldCByZXN1bHQxIChleHByIChzdWJ3b3JkIFFJIHJtIDYpIChzdWJ3b3JkIFFJIHJuIDYpKSkKKwkgICAgKHNldCByZXN1bHQyIChleHByIChzdWJ3b3JkIFFJIHJtIDUpIChzdWJ3b3JkIFFJIHJuIDUpKSkKKwkgICAgKHNldCByZXN1bHQzIChleHByIChzdWJ3b3JkIFFJIHJtIDQpIChzdWJ3b3JkIFFJIHJuIDQpKSkKKwkgICAgKHNldCByZXN1bHQ0IChleHByIChzdWJ3b3JkIFFJIHJtIDMpIChzdWJ3b3JkIFFJIHJuIDMpKSkKKwkgICAgKHNldCByZXN1bHQ1IChleHByIChzdWJ3b3JkIFFJIHJtIDIpIChzdWJ3b3JkIFFJIHJuIDIpKSkKKwkgICAgKHNldCByZXN1bHQ2IChleHByIChzdWJ3b3JkIFFJIHJtIDEpIChzdWJ3b3JkIFFJIHJuIDEpKSkKKwkgICAgKHNldCByZXN1bHQ3IChleHByIChzdWJ3b3JkIFFJIHJtIDApIChzdWJ3b3JkIFFJIHJuIDApKSkKKwkgICAgKHNldCByZCAoLWpvaW4tcWkgcmVzdWx0NyByZXN1bHQ2IHJlc3VsdDUgcmVzdWx0NCByZXN1bHQzIHJlc3VsdDIKKwkJCSAgIHJlc3VsdDEgcmVzdWx0MCkpKSkKKworKGRlZmluZS1wbWFjcm8gKHNsaWNlLXdvcmQgZXhwcikKKyAgKHNlcXVlbmNlICgoSEkgcmVzdWx0MykgKEhJIHJlc3VsdDIpIChISSByZXN1bHQxKSAoSEkgcmVzdWx0MCkpCisJICAgIChzZXQgcmVzdWx0MCAoZXhwciAoc3Vid29yZCBISSBybSAzKSAoc3Vid29yZCBISSBybiAzKSkpCisJICAgIChzZXQgcmVzdWx0MSAoZXhwciAoc3Vid29yZCBISSBybSAyKSAoc3Vid29yZCBISSBybiAyKSkpCisJICAgIChzZXQgcmVzdWx0MiAoZXhwciAoc3Vid29yZCBISSBybSAxKSAoc3Vid29yZCBISSBybiAxKSkpCisJICAgIChzZXQgcmVzdWx0MyAoZXhwciAoc3Vid29yZCBISSBybSAwKSAoc3Vid29yZCBISSBybiAwKSkpCisJICAgIChzZXQgcmQgKC1qb2luLWhpIHJlc3VsdDMgcmVzdWx0MiByZXN1bHQxIHJlc3VsdDApKSkpCisKKyhkZWZpbmUtcG1hY3JvIChzbGljZS13b3JkLXVub3AgZXhwcikKKyAgKHNlcXVlbmNlICgoSEkgcmVzdWx0MykgKEhJIHJlc3VsdDIpIChISSByZXN1bHQxKSAoSEkgcmVzdWx0MCkpCisJICAgIChzZXQgcmVzdWx0MCAoZXhwciAoc3Vid29yZCBISSBybSAzKSkpCisJICAgIChzZXQgcmVzdWx0MSAoZXhwciAoc3Vid29yZCBISSBybSAyKSkpCisJICAgIChzZXQgcmVzdWx0MiAoZXhwciAoc3Vid29yZCBISSBybSAxKSkpCisJICAgIChzZXQgcmVzdWx0MyAoZXhwciAoc3Vid29yZCBISSBybSAwKSkpCisJICAgIChzZXQgcmQgKC1qb2luLWhpIHJlc3VsdDMgcmVzdWx0MiByZXN1bHQxIHJlc3VsdDApKSkpCisKKyhkZWZpbmUtcG1hY3JvIChzbGljZS1sb25nIGV4cHIpCisgIChzZXF1ZW5jZSAoKFNJIHJlc3VsdDEpIChTSSByZXN1bHQwKSkKKwkgICAgKHNldCByZXN1bHQwIChleHByIChzdWJ3b3JkIFNJIHJtIDEpIChzdWJ3b3JkIFNJIHJuIDEpKSkKKwkgICAgKHNldCByZXN1bHQxIChleHByIChzdWJ3b3JkIFNJIHJtIDApIChzdWJ3b3JkIFNJIHJuIDApKSkKKwkgICAgKHNldCByZCAoLWpvaW4tc2kgcmVzdWx0MSByZXN1bHQwKSkpKQorCisoZGVmaW5lLXBtYWNybyAoc2xpY2UtbG9uZy11bm9wIGV4cHIpCisgIChzZXF1ZW5jZSAoKFNJIHJlc3VsdDEpIChTSSByZXN1bHQwKSkKKwkgICAgKHNldCByZXN1bHQwIChleHByIChzdWJ3b3JkIFNJIHJtIDEpKSkKKwkgICAgKHNldCByZXN1bHQxIChleHByIChzdWJ3b3JkIFNJIHJtIDApKSkKKwkgICAgKHNldCByZCAoLWpvaW4tc2kgcmVzdWx0MSByZXN1bHQwKSkpKQorCis7IE11bHRpbWVkaWEgaW5zdHJ1Y3Rpb25zLgorCisoZHNobWkgbWFic2wgIk11bHRpbWVkaWEgYWJzb2x1dGUgdmFsdWUgKGxvbmcgd29yZCkiCisgICAgICAgKCkKKyAgICAgICAibWFicy5sICRybSwgJHJkIgorICAgICAgICgrIChmLW9wIDEwKSBybSAoZi1leHQgMTApIChmLXJpZ2h0IDYzKSByZCAoZi1yc3ZkIDApKQorICAgICAgIChzbGljZS1sb25nLXVub3AgYWJzKSkKKworKGRzaG1pIG1hYnN3ICJNdWx0aW1lZGlhIGFic29sdXRlIHZhbHVlICh3b3JkKSIKKyAgICAgICAoKQorICAgICAgICJtYWJzLncgJHJtLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTApIHJtIChmLWV4dCA5KSAoZi1yaWdodCA2MykgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2xpY2Utd29yZC11bm9wIGFicykpCisKKyhkc2htaSBtYWRkbCAiTXVsdGltZWRpYSBhZGQgKGxvbmcgd29yZCkiCisgICAgICAgKCkKKyAgICAgICAibWFkZC5sICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMikgcm0gKGYtZXh0IDIpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNsaWNlLWxvbmcgYWRkKSkKKworKGRzaG1pIG1hZGR3ICJNdWx0aW1lZGlhIGFkZCAod29yZCkiCisgICAgICAgKCkKKyAgICAgICAibWFkZC53ICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMikgcm0gKGYtZXh0IDEpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNsaWNlLXdvcmQgYWRkKSkKKworKGRlZmluZS1wbWFjcm8gKC1tYWRkc2wgYXJnMSBhcmcyKSAoc2F0dXJhdGUgU0kgMzIgKGFkZCBhcmcxIGFyZzIpKSkKKyhkc2htaSBtYWRkc2wgIk11bHRpbWVkaWEgYWRkIChzYXR1cmF0aW5nLCBsb25nIHdvcmQpIgorICAgICAgICgpCisgICAgICAgIm1hZGRzLmwgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAyKSBybSAoZi1leHQgNikgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2xpY2UtbG9uZyAtbWFkZHNsKSkKKworKGRlZmluZS1wbWFjcm8gKC1tYWRkc3ViIGFyZzEgYXJnMikgKHVzYXR1cmF0ZSBRSSA4IChhZGQgYXJnMSBhcmcyKSkpCisoZHNobWkgbWFkZHN1YiAiTXVsdGltZWRpYSBhZGQgKHNhdHVyYXRpbmcsIHVuc2lnbmVkIGJ5dGUpIgorICAgICAgICgpCisgICAgICAgIm1hZGRzLnViICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMikgcm0gKGYtZXh0IDQpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNsaWNlLWJ5dGUgLW1hZGRzdWIpKQorCisoZGVmaW5lLXBtYWNybyAoLW1hZGRzdyBhcmcxIGFyZzIpIChzYXR1cmF0ZSBISSAxNiAoYWRkIGFyZzEgYXJnMikpKQorKGRzaG1pIG1hZGRzdyAiTXVsdGltZWRpYSBhZGQgKHNhdHVyYXRpbmcsIHdvcmQpIgorICAgICAgICgpCisgICAgICAgIm1hZGRzLncgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAyKSBybSAoZi1leHQgNSkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2xpY2Utd29yZCAtbWFkZHN3KSkKKworKGRlZmluZS1wbWFjcm8gKC1tY21wZXEgbW9kZSBhcmcxIGFyZzIpCisgIChpZiBtb2RlIChlcSBhcmcxIGFyZzIpIChpbnYgbW9kZSAwKSAoY29uc3QgbW9kZSAwKSkpCisKKyhkZWZpbmUtcG1hY3JvICgtbWNtcGVxYiBhcmcxIGFyZzIpICgtbWNtcGVxIFFJIGFyZzEgYXJnMikpCisoZHNobWkgbWNtcGVxYiAiTXVsdGltZWRpYSBjb21wYXJlIGVxdWFsIChieXRlKSIKKyAgICAgICAoKQorICAgICAgICJtY21wZXEuYiAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDEwKSBybSAoZi1leHQgMCkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2xpY2UtYnl0ZSAtbWNtcGVxYikpCisKKyhkZWZpbmUtcG1hY3JvICgtbWNtcGVxbCBhcmcxIGFyZzIpICgtbWNtcGVxIFNJIGFyZzEgYXJnMikpCisoZHNobWkgbWNtcGVxbCAiTXVsdGltZWRpYSBjb21wYXJlIGVxdWFsIChsb25nIHdvcmQpIgorICAgICAgICgpCisgICAgICAgIm1jbXBlcS5sICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTApIHJtIChmLWV4dCAyKSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzbGljZS1sb25nIC1tY21wZXFsKSkKKworKGRlZmluZS1wbWFjcm8gKC1tY21wZXF3IGFyZzEgYXJnMikgKC1tY21wZXEgSEkgYXJnMSBhcmcyKSkKKyhkc2htaSBtY21wZXF3ICJNdWx0aW1lZGlhIGNvbXBhcmUgZXF1YWwgKHdvcmQpIgorICAgICAgICgpCisgICAgICAgIm1jbXBlcS53ICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTApIHJtIChmLWV4dCAxKSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzbGljZS13b3JkIC1tY21wZXF3KSkKKworKGRlZmluZS1wbWFjcm8gKC1tY21wZ3QgbW9kZSBhcmcxIGFyZzIpCisgIChpZiBtb2RlIChndCBhcmcxIGFyZzIpIChpbnYgbW9kZSAwKSAoY29uc3QgbW9kZSAwKSkpCisoZGVmaW5lLXBtYWNybyAoLW1jbXBndHUgbW9kZSBhcmcxIGFyZzIpCisgIChpZiBtb2RlIChndHUgYXJnMSBhcmcyKSAoaW52IG1vZGUgMCkgKGNvbnN0IG1vZGUgMCkpKQorCisoZGVmaW5lLXBtYWNybyAoLW1jbXBndGwgYXJnMSBhcmcyKSAoLW1jbXBndCBTSSBhcmcxIGFyZzIpKQorKGRzaG1pIG1jbXBndGwgIk11bHRpbWVkaWEgY29tcGFyZSBncmVhdGVyIHRoYW4gKGxvbmcgd29yZCkiCisgICAgICAgKCkKKyAgICAgICAibWNtcGd0LmwgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxMCkgcm0gKGYtZXh0IDYpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNsaWNlLWxvbmcgLW1jbXBndGwpKQorCisoZGVmaW5lLXBtYWNybyAoLW1jbXBndHViIGFyZzEgYXJnMikgKC1tY21wZ3R1IFFJIGFyZzEgYXJnMikpCisoZHNobWkgbWNtcGd0dWIgIk11bHRpbWVkaWF0ZSBjb21wYXJlIHVuc2lnbmVkIGdyZWF0ZXIgdGhhbiAoYnl0ZSkiCisgICAgICAgKCkKKyAgICAgICAibWNtcGd0LnViICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTApIHJtIChmLWV4dCA0KSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzbGljZS1ieXRlIC1tY21wZ3R1YikpCisKKyhkZWZpbmUtcG1hY3JvICgtbWNtcGd0dyBhcmcxIGFyZzIpICgtbWNtcGd0IEhJIGFyZzEgYXJnMikpCisoZHNobWkgbWNtcGd0dyAiTXVsdGltZWRpYSBjb21wYXJlIGdyZWF0ZXIgdGhhbiAod29yZCkiCisgICAgICAgKCkKKyAgICAgICAibWNtcGd0LncgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxMCkgcm0gKGYtZXh0IDUpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNsaWNlLXdvcmQgLW1jbXBndHcpKQorCisoZHNobWkgbWNtdiAiTXVsdGltZWRpYSBjb25kaXRpb25hbCBtb3ZlIgorICAgICAgICgpCisgICAgICAgIm1jbXYgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxOCkgcm0gKGYtZXh0IDMpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAob3IgKGFuZCBybSBybikgKGFuZCByZCAoaW52IHJuKSkpKSkKKworKGRzaG1pIG1jbnZzbHcgIk11bHRpbWVkaWEgY29udmVydC9zYXR1cmF0ZSAobG9uZyB0byB3b3JkKSIKKyAgICAgICAoKQorICAgICAgICJtY252cy5sdyAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDE5KSBybSAoZi1leHQgMTMpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNlcXVlbmNlICgoSEkgcmVzdWx0MykgKEhJIHJlc3VsdDIpIChISSByZXN1bHQxKSAoSEkgcmVzdWx0MCkpCisJCSAoc2V0IHJlc3VsdDAgKHNhdHVyYXRlIEhJIDE2IChzdWJ3b3JkIFNJIHJtIDApKSkKKwkJIChzZXQgcmVzdWx0MSAoc2F0dXJhdGUgSEkgMTYgKHN1YndvcmQgU0kgcm0gMSkpKQorCQkgKHNldCByZXN1bHQyIChzYXR1cmF0ZSBISSAxNiAoc3Vid29yZCBTSSBybiAwKSkpCisJCSAoc2V0IHJlc3VsdDMgKHNhdHVyYXRlIEhJIDE2IChzdWJ3b3JkIFNJIHJuIDEpKSkKKwkJIChzZXQgcmQgKC1qb2luLWhpIHJlc3VsdDMgcmVzdWx0MiByZXN1bHQxIHJlc3VsdDApKSkpCisKKyhkc2htaSBtY252c3diICJNdWx0aW1lZGlhIGNvbnZlcnQvc2F0dXJhdGUgKHdvcmQgdG8gYnl0ZSkiCisgICAgICAgKCkKKyAgICAgICAibWNudnMud2IgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxOSkgcm0gKGYtZXh0IDgpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNlcXVlbmNlICgoUUkgcmVzdWx0NykgKFFJIHJlc3VsdDYpIChRSSByZXN1bHQ1KSAoUUkgcmVzdWx0NCkgCisJCSAgKFFJIHJlc3VsdDMpIChRSSByZXN1bHQyKSAoUUkgcmVzdWx0MSkgKFFJIHJlc3VsdDApKQorCQkgKHNldCByZXN1bHQwIChzYXR1cmF0ZSBRSSA4IChzdWJ3b3JkIEhJIHJtIDApKSkKKwkJIChzZXQgcmVzdWx0MSAoc2F0dXJhdGUgUUkgOCAoc3Vid29yZCBISSBybSAxKSkpCisJCSAoc2V0IHJlc3VsdDIgKHNhdHVyYXRlIFFJIDggKHN1YndvcmQgSEkgcm0gMikpKQorCQkgKHNldCByZXN1bHQzIChzYXR1cmF0ZSBRSSA4IChzdWJ3b3JkIEhJIHJtIDMpKSkKKwkJIChzZXQgcmVzdWx0NCAoc2F0dXJhdGUgUUkgOCAoc3Vid29yZCBISSBybiAwKSkpCisJCSAoc2V0IHJlc3VsdDUgKHNhdHVyYXRlIFFJIDggKHN1YndvcmQgSEkgcm4gMSkpKQorCQkgKHNldCByZXN1bHQ2IChzYXR1cmF0ZSBRSSA4IChzdWJ3b3JkIEhJIHJuIDIpKSkKKwkJIChzZXQgcmVzdWx0NyAoc2F0dXJhdGUgUUkgOCAoc3Vid29yZCBISSBybiAzKSkpCisJCSAoc2V0IHJkICgtam9pbi1xaSByZXN1bHQ3IHJlc3VsdDYgcmVzdWx0NSByZXN1bHQ0CisJCQkJIHJlc3VsdDMgcmVzdWx0MiByZXN1bHQxIHJlc3VsdDApKSkpCisKKyhkc2htaSBtY252c3d1YiAiTXVsdGltZWRpYSBjb252ZXJ0L3NhdHVyYXRlICh3b3JkIHRvIHVuc2lnbmVkIGJ5dGUpIgorICAgICAgICgpCisgICAgICAgIm1jbnZzLnd1YiAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDE5KSBybSAoZi1leHQgMTIpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNlcXVlbmNlICgoUUkgcmVzdWx0NykgKFFJIHJlc3VsdDYpIChRSSByZXN1bHQ1KSAoUUkgcmVzdWx0NCkKKwkJCSAgICAgICAoUUkgcmVzdWx0MykgKFFJIHJlc3VsdDIpIChRSSByZXN1bHQxKSAoUUkgcmVzdWx0MCkpCisJCSAoc2V0IHJlc3VsdDAgKHVzYXR1cmF0ZSBRSSA4IChzdWJ3b3JkIEhJIHJtIDApKSkKKwkJIChzZXQgcmVzdWx0MSAodXNhdHVyYXRlIFFJIDggKHN1YndvcmQgSEkgcm0gMSkpKQorCQkgKHNldCByZXN1bHQyICh1c2F0dXJhdGUgUUkgOCAoc3Vid29yZCBISSBybSAyKSkpCisJCSAoc2V0IHJlc3VsdDMgKHVzYXR1cmF0ZSBRSSA4IChzdWJ3b3JkIEhJIHJtIDMpKSkKKwkJIChzZXQgcmVzdWx0NCAodXNhdHVyYXRlIFFJIDggKHN1YndvcmQgSEkgcm4gMCkpKQorCQkgKHNldCByZXN1bHQ1ICh1c2F0dXJhdGUgUUkgOCAoc3Vid29yZCBISSBybiAxKSkpCisJCSAoc2V0IHJlc3VsdDYgKHVzYXR1cmF0ZSBRSSA4IChzdWJ3b3JkIEhJIHJuIDIpKSkKKwkJIChzZXQgcmVzdWx0NyAodXNhdHVyYXRlIFFJIDggKHN1YndvcmQgSEkgcm4gMykpKQorCQkgKHNldCByZCAoLWpvaW4tcWkgcmVzdWx0NyByZXN1bHQ2IHJlc3VsdDUgcmVzdWx0NCByZXN1bHQzCisJCQkJIHJlc3VsdDIgcmVzdWx0MSByZXN1bHQwKSkpKQorCis7IG1leHRlciAtLSBnZW5lcmF0ZSBhbiBtZXh0ZXJOIGluc3RydWN0aW9uLCB3aGVyZToKKzsgICBvcCA9IHByaW1hcnkgb3Bjb2RlCis7ICAgZXh0b3AgPSBleHRlbmRlZCBvcGNvZGUKKworKGRlZmluZS1wbWFjcm8gKG1ha2UtbWV4dHIgbiBvcCBleHRvcCkKKyAgKGRzaG1pICguc3ltIG1leHRyIG4pCisJICguc3RyICJNdWx0aW1lZGlhIGV4dHJhY3QgNjQtYml0IHNsaWNlIChmcm9tIGJ5dGUgIiBuICIpIikKKwkgKCkKKwkgKC5zdHIgIm1leHRyIiBuICIgJHJtLCAkcm4sICRyZCIpCisJICgrIChmLW9wIG9wKSBybSAoZi1leHQgZXh0b3ApIHJuIHJkIChmLXJzdmQgMCkpCisJIChzZXF1ZW5jZSAoKFFJIGNvdW50KSAoREkgbWFzaykgKERJIHJocykpCisJCSAgIChzZXQgY291bnQgKG11bCBRSSA4IChzdWIgUUkgOCBuKSkpCisJCSAgIChzZXQgbWFzayAoc2xsIERJIChpbnYgMCkgY291bnQpKQorCQkgICAoc2V0IHJocyAoc3JsIChhbmQgcm0gbWFzaykgY291bnQpKQorCQkgICAoc2V0IGNvdW50IChtdWwgUUkgOCBuKSkKKwkJICAgKHNldCBtYXNrIChzcmwgREkgKGludiAwKSBjb3VudCkpCisJCSAgIChzZXQgcmQgKG9yIERJIHJocyAoc2xsIERJIChhbmQgcm4gbWFzaykgY291bnQpKSkpKSkKKworKG1ha2UtbWV4dHIgMSAxMCAgNykKKyhtYWtlLW1leHRyIDIgMTAgMTEpCisobWFrZS1tZXh0ciAzIDEwIDE1KQorKG1ha2UtbWV4dHIgNCAxMSAgMykKKyhtYWtlLW1leHRyIDUgMTEgIDcpCisobWFrZS1tZXh0ciA2IDExIDExKQorKG1ha2UtbWV4dHIgNyAxMSAxNSkKKworKGRzaG1pIG1tYWNmeHdsICJNdWx0aW1lZGlhIGZyYWN0aW9uYWwgbXVsdGlwbHkgKHdvcmQgdG8gbG9uZykiCisgICAgICAgKCkKKyAgICAgICAibW1hY2Z4LndsICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTgpIHJtIChmLWV4dCAxKSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXF1ZW5jZSAoKFNJIHRlbXApIChTSSByZXN1bHQxKSAoU0kgcmVzdWx0MCkpCisJCSAoc2V0IHJlc3VsdDAgKHN1YndvcmQgU0kgcmQgMCkpCisJCSAoc2V0IHJlc3VsdDEgKHN1YndvcmQgU0kgcmQgMSkpCisJCSAoc2V0IHRlbXAgKG11bCAoemV4dCBTSSAoc3Vid29yZCBISSBybSAwKSkgKHpleHQgU0kgKHN1YndvcmQgSEkgcm4gMCkpKSkKKwkJIChzZXQgdGVtcCAoc2F0dXJhdGUgU0kgMzIgKHNsbCB0ZW1wIDEpKSkKKwkJIChzZXQgcmVzdWx0MCAoc2F0dXJhdGUgU0kgMzIgKGFkZCByZXN1bHQwIHRlbXApKSkKKwkJIChzZXQgdGVtcCAobXVsICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJtIDEpKSAoemV4dCBTSSAoc3Vid29yZCBISSBybiAxKSkpKQorCQkgKHNldCB0ZW1wIChzYXR1cmF0ZSBTSSAzMiAoc2xsIHRlbXAgMSkpKQorCQkgKHNldCByZXN1bHQxIChzYXR1cmF0ZSBTSSAzMiAoYWRkIHJlc3VsdDEgdGVtcCkpKQorCQkgKHNldCByZCAoLWpvaW4tc2kgcmVzdWx0MSByZXN1bHQwKSkpKQorCisoZHNobWkgbW1hY25meC53bCAiTXVsdGltZWRpYSBmcmFjdGlvbmFsIG11bHRpcGxlICh3b3JkIHRvIGxvbmcpIgorICAgICAgICgpCisgICAgICAgIm1tYWNuZngud2wgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxOCkgcm4gKGYtZXh0IDUpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNlcXVlbmNlICgoU0kgdGVtcCkgKFNJIHJlc3VsdDEpIChTSSByZXN1bHQwKSkKKwkJIChzZXQgcmVzdWx0MCAoc3Vid29yZCBTSSByZCAwKSkKKwkJIChzZXQgcmVzdWx0MSAoc3Vid29yZCBTSSByZCAxKSkKKwkJIChzZXQgdGVtcCAobXVsICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJtIDApKSAoemV4dCBTSSAoc3Vid29yZCBISSBybiAwKSkpKQorCQkgKHNldCB0ZW1wIChzYXR1cmF0ZSBTSSAzMiAoc2xsIHRlbXAgMSkpKQorCQkgKHNldCByZXN1bHQwIChzYXR1cmF0ZSBTSSAzMiAoc3ViIHJlc3VsdDAgdGVtcCkpKQorCQkgKHNldCB0ZW1wIChtdWwgKHpleHQgU0kgKHN1YndvcmQgSEkgcm0gMSkpICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJuIDEpKSkpCisJCSAoc2V0IHRlbXAgKHNhdHVyYXRlIFNJIDMyIChzbGwgdGVtcCAxKSkpCisJCSAoc2V0IHJlc3VsdDEgKHNhdHVyYXRlIFNJIDMyIChzdWIgcmVzdWx0MSB0ZW1wKSkpCisJCSAoc2V0IHJkICgtam9pbi1zaSByZXN1bHQxIHJlc3VsdDApKSkpCisKKyhkc2htaSBtbXVsbCAiTXVsdGltZWRpYSBtdWx0aXBseSAobG9uZyB3b3JkKSIKKyAgICAgICAoKQorICAgICAgICJtbXVsLmwgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxOSkgcm0gKGYtZXh0IDIpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNsaWNlLWxvbmcgbXVsKSkKKworKGRzaG1pIG1tdWx3ICJNdWx0aW1lZGlhIG11bHRpcGx5ICh3b3JkKSIKKyAgICAgICAoKQorICAgICAgICJtbXVsLncgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxOSkgcm0gKGYtZXh0IDEpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNsaWNlLXdvcmQgbXVsKSkKKworKGRzaG1pIG1tdWxmeGwgIk11bHRpbWVkaWEgZnJhY3Rpb25hbCBtdWx0aXBseSAobG9uZyB3b3JkKSIKKyAgICAgICAoKQorICAgICAgICJtbXVsZngubCAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDE5KSBybSAoZi1leHQgNikgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2VxdWVuY2UgKChESSB0ZW1wKSAoU0kgcmVzdWx0MCkgKFNJIHJlc3VsdDEpKQorCQkgKHNldCB0ZW1wIChtdWwgKHpleHQgREkgKHN1YndvcmQgU0kgcm0gMCkpICh6ZXh0IERJIChzdWJ3b3JkIFNJIHJuIDApKSkpCisJCSAoc2V0IHJlc3VsdDAgKHNhdHVyYXRlIFNJIDMyIChzcmEgdGVtcCAzMSkpKQorCQkgKHNldCB0ZW1wIChtdWwgKHpleHQgREkgKHN1YndvcmQgU0kgcm0gMSkpICh6ZXh0IERJIChzdWJ3b3JkIFNJIHJuIDEpKSkpCisJCSAoc2V0IHJlc3VsdDEgKHNhdHVyYXRlIFNJIDMyIChzcmEgdGVtcCAzMSkpKQorCQkgKHNldCByZCAoLWpvaW4tc2kgcmVzdWx0MSByZXN1bHQwKSkpKQorCisoZHNobWkgbW11bGZ4dyAiTXVsdGltZWRpYSBmcmFjdGlvbmFsIG11bHRpcGx5ICh3b3JkKSIKKyAgICAgICAoKQorICAgICAgICJtbXVsZngudyAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDE5KSBybSAoZi1leHQgNSkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2VxdWVuY2UgKChTSSB0ZW1wKSAoSEkgcmVzdWx0MCkgKEhJIHJlc3VsdDEpIChISSByZXN1bHQyKSAoSEkgcmVzdWx0MykpCisJCSAoc2V0IHRlbXAgKG11bCAoemV4dCBTSSAoc3Vid29yZCBISSBybSAwKSkgKHpleHQgU0kgKHN1YndvcmQgSEkgcm4gMCkpKSkKKwkJIChzZXQgcmVzdWx0MCAoc2F0dXJhdGUgSEkgMTYgKHNyYSB0ZW1wIDE1KSkpCisJCSAoc2V0IHRlbXAgKG11bCAoemV4dCBTSSAoc3Vid29yZCBISSBybSAxKSkgKHpleHQgU0kgKHN1YndvcmQgSEkgcm4gMSkpKSkKKwkJIChzZXQgcmVzdWx0MSAoc2F0dXJhdGUgSEkgMTYgKHNyYSB0ZW1wIDE1KSkpCisJCSAoc2V0IHRlbXAgKG11bCAoemV4dCBTSSAoc3Vid29yZCBISSBybSAyKSkgKHpleHQgU0kgKHN1YndvcmQgSEkgcm4gMikpKSkKKwkJIChzZXQgcmVzdWx0MiAoc2F0dXJhdGUgSEkgMTYgKHNyYSB0ZW1wIDE1KSkpCisJCSAoc2V0IHRlbXAgKG11bCAoemV4dCBTSSAoc3Vid29yZCBISSBybSAzKSkgKHpleHQgU0kgKHN1YndvcmQgSEkgcm4gMykpKSkKKwkJIChzZXQgcmVzdWx0MyAoc2F0dXJhdGUgSEkgMTYgKHNyYSB0ZW1wIDE1KSkpCisJCSAoc2V0IHJkICgtam9pbi1oaSByZXN1bHQzIHJlc3VsdDIgcmVzdWx0MSByZXN1bHQwKSkpKQorCisoZHNobWkgbW11bGZ4cnB3ICJNdWx0aW1lZGlhIGZyYWN0aW9uYWwgbXVsdGlwbHkgcm91bmQgcG9zaXRpdmUgKHdvcmQgb3ApIgorICAgICAgICgpCisgICAgICAgIm1tdWxmeHJwLncgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxOSkgcm0gKGYtZXh0IDkpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNlcXVlbmNlICgoU0kgdGVtcCkgKEhJIHJlc3VsdDApIChISSByZXN1bHQxKSAoSEkgcmVzdWx0MikgKEhJIHJlc3VsdDMpIChISSBjKSkKKwkJIChzZXQgYyAoc2xsIDEgMTQpKQorCQkgKHNldCB0ZW1wIChtdWwgKHpleHQgU0kgKHN1YndvcmQgSEkgcm0gMCkpICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJuIDApKSkpCisJCSAoc2V0IHJlc3VsdDAgKHNhdHVyYXRlIEhJIDE2IChzcmEgKGFkZCB0ZW1wIGMpIDE1KSkpCisJCSAoc2V0IHRlbXAgKG11bCAoemV4dCBTSSAoc3Vid29yZCBISSBybSAxKSkgKHpleHQgU0kgKHN1YndvcmQgSEkgcm4gMSkpKSkKKwkJIChzZXQgcmVzdWx0MSAoc2F0dXJhdGUgSEkgMTYgKHNyYSAoYWRkIHRlbXAgYykgMTUpKSkKKwkJIChzZXQgdGVtcCAobXVsICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJtIDIpKSAoemV4dCBTSSAoc3Vid29yZCBISSBybiAyKSkpKQorCQkgKHNldCByZXN1bHQyIChzYXR1cmF0ZSBISSAxNiAoc3JhIChhZGQgdGVtcCBjKSAxNSkpKQorCQkgKHNldCB0ZW1wIChtdWwgKHpleHQgU0kgKHN1YndvcmQgSEkgcm0gMykpICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJuIDMpKSkpCisJCSAoc2V0IHJlc3VsdDMgKHNhdHVyYXRlIEhJIDE2IChzcmEgKGFkZCB0ZW1wIGMpIDE1KSkpCisJCSAoc2V0IHJkICgtam9pbi1oaSByZXN1bHQzIHJlc3VsdDIgcmVzdWx0MSByZXN1bHQwKSkpKQorCisoZHNobWkgbW11bGhpd2wgIk11bHRpbWVkaWEgbXVsdGlwbHkgaGlnaGVyIGhhbHZlcyAod29yZCB0byBsb25nKSIKKyAgICAgICAoKQorICAgICAgICJtbXVsaGkud2wgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxOSkgcm0gKGYtZXh0IDE0KSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXF1ZW5jZSAoKFNJIHJlc3VsdDEpIChTSSByZXN1bHQwKSkKKwkJIChzZXQgcmVzdWx0MCAobXVsICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJtIDIpKSAoemV4dCBTSSAoc3Vid29yZCBISSBybiAyKSkpKQorCQkgKHNldCByZXN1bHQxIChtdWwgKHpleHQgU0kgKHN1YndvcmQgSEkgcm0gMykpICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJuIDMpKSkpCisJCSAoc2V0IHJkICgtam9pbi1zaSByZXN1bHQxIHJlc3VsdDApKSkpCisKKyhkc2htaSBtbXVsbG93bCAiTXVsdGltZWRpYSBtdWx0aXBseSBsb3dlciBoYWx2ZXMgKHdvcmQgdG8gbG9uZykiCisgICAgICAgKCkKKyAgICAgICAibW11bGxvLndsICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTkpIHJtIChmLWV4dCAxMCkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2VxdWVuY2UgKChTSSByZXN1bHQxKSAoU0kgcmVzdWx0MCkpCisJCSAoc2V0IHJlc3VsdDAgKG11bCAoemV4dCBTSSAoc3Vid29yZCBISSBybSAwKSkgKHpleHQgU0kgKHN1YndvcmQgSEkgcm4gMCkpKSkKKwkJIChzZXQgcmVzdWx0MSAobXVsICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJtIDEpKSAoemV4dCBTSSAoc3Vid29yZCBISSBybiAxKSkpKQorCQkgKHNldCByZCAoLWpvaW4tc2kgcmVzdWx0MSByZXN1bHQwKSkpKQorCisoZHNobWkgbW11bHN1bXdxICJNdWx0aW1lZGlhIG11bHRpcGx5IGFuZCBhY2N1bXVsYXRlICh3b3JkIHRvIHF1YWQpIgorICAgICAgICgpCisgICAgICAgIm1tdWxzdW0ud3EgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxOCkgcm0gKGYtZXh0IDkpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNlcXVlbmNlICgoREkgYWNjKSkKKwkJIChzZXQgYWNjIChtdWwgU0kgKHpleHQgU0kgKHN1YndvcmQgSEkgcm0gMCkpICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJuIDApKSkpCisJCSAoc2V0IGFjYyAoYWRkIGFjYyAobXVsIFNJICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJtIDEpKSAoemV4dCBTSSAoc3Vid29yZCBISSBybiAxKSkpKSkKKwkJIChzZXQgYWNjIChhZGQgYWNjIChtdWwgU0kgKHpleHQgU0kgKHN1YndvcmQgSEkgcm0gMikpICh6ZXh0IFNJIChzdWJ3b3JkIEhJIHJuIDIpKSkpKQorCQkgKHNldCBhY2MgKGFkZCBhY2MgKG11bCBTSSAoemV4dCBTSSAoc3Vid29yZCBISSBybSAzKSkgKHpleHQgU0kgKHN1YndvcmQgSEkgcm4gMykpKSkpCisJCSAoc2V0IHJkIChhZGQgcmQgYWNjKSkpKQorCisoZHNobWkgbW92aSAiTW92ZSBpbW1lZGlhdGUiCisgICAgICAgKCkKKyAgICAgICAibW92aSAkaW1tMTYsICRyZCIKKyAgICAgICAoKyAoZi1vcCA1MSkgaW1tMTYgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChleHQgREkgaW1tMTYpKSkKKworKGRzaG1pIG1wZXJtdyAiTXVsdGltZWRpYSBwZXJtdXRhdGUgd29yZCIKKyAgICAgICAoKQorICAgICAgICJtcGVybS53ICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTApIHJtIChmLWV4dCAxMykgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2VxdWVuY2UgKChRSSBjb250cm9sKSAoSEkgcmVzdWx0MykgKEhJIHJlc3VsdDIpIChISSByZXN1bHQxKSAoSEkgcmVzdWx0MCkpCisJCSAoc2V0IGNvbnRyb2wgKGFuZCBRSSBybiAjeDNmKSkKKwkJIChzZXQgcmVzdWx0MCAoc3Vid29yZCBISSBybSAoc3ViIDMgKGFuZCBjb250cm9sIDMpKSkpCisJCSAoc2V0IHJlc3VsdDEgKHN1YndvcmQgSEkgcm0gKHN1YiAzIChhbmQgKHNybCBjb250cm9sIDIpIDMpKSkpCisJCSAoc2V0IHJlc3VsdDIgKHN1YndvcmQgSEkgcm0gKHN1YiAzIChhbmQgKHNybCBjb250cm9sIDQpIDMpKSkpCisJCSAoc2V0IHJlc3VsdDMgKHN1YndvcmQgSEkgcm0gKHN1YiAzIChhbmQgKHNybCBjb250cm9sIDYpIDMpKSkpCisJCSAoc2V0IHJkICgtam9pbi1oaSByZXN1bHQzIHJlc3VsdDIgcmVzdWx0MSByZXN1bHQwKSkpKQorCisoZHNobWkgbXNhZHVicSAiTXVsdGltZWRpYSBhYnNvbHV0ZSBkaWZmZXJlbmNlIChieXRlKSIKKyAgICAgICAoKQorICAgICAgICJtc2FkLnVicSAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDE4KSBybSAoZi1leHQgMCkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2VxdWVuY2UgKChESSBhY2MpKQorCQkgKHNldCBhY2MgKGFicyBESSAoc3ViIChzdWJ3b3JkIFFJIHJtIDApIChzdWJ3b3JkIFFJIHJuIDEpKSkpCisJCSAoc2V0IGFjYyAoYWRkIERJIGFjYyAoYWJzIChzdWIgKHN1YndvcmQgUUkgcm0gMSkgKHN1YndvcmQgUUkgcm4gMSkpKSkpCisJCSAoc2V0IGFjYyAoYWRkIERJIGFjYyAoYWJzIChzdWIgKHN1YndvcmQgUUkgcm0gMikgKHN1YndvcmQgUUkgcm4gMikpKSkpCisJCSAoc2V0IGFjYyAoYWRkIERJIGFjYyAoYWJzIChzdWIgKHN1YndvcmQgUUkgcm0gMykgKHN1YndvcmQgUUkgcm4gMykpKSkpCisJCSAoc2V0IGFjYyAoYWRkIERJIGFjYyAoYWJzIChzdWIgKHN1YndvcmQgUUkgcm0gNCkgKHN1YndvcmQgUUkgcm4gNCkpKSkpCisJCSAoc2V0IGFjYyAoYWRkIERJIGFjYyAoYWJzIChzdWIgKHN1YndvcmQgUUkgcm0gNSkgKHN1YndvcmQgUUkgcm4gNSkpKSkpCisJCSAoc2V0IGFjYyAoYWRkIERJIGFjYyAoYWJzIChzdWIgKHN1YndvcmQgUUkgcm0gNikgKHN1YndvcmQgUUkgcm4gNikpKSkpCisJCSAoc2V0IGFjYyAoYWRkIERJIGFjYyAoYWJzIChzdWIgKHN1YndvcmQgUUkgcm0gNykgKHN1YndvcmQgUUkgcm4gNykpKSkpCisJCSAoc2V0IHJkIChhZGQgcmQgYWNjKSkpKQorCisoZGVmaW5lLXBtYWNybyAoLW1zaGFsZHNsIGFyZykgKHNhdHVyYXRlIFNJIDMyIChzbGwgYXJnIChhbmQgcm4gMzEpKSkpCisoZHNobWkgbXNoYWxkc2wgIk11bHRpbWVkaWEgc2F0dXJhdGluZyBhcml0aG1ldGljIGxlZnQgc2hpZnQgKGxvbmcgd29yZCkiCisgICAgICAgKCkKKyAgICAgICAibXNoYWxkcy5sICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMykgcm0gKGYtZXh0IDYpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNsaWNlLWxvbmctdW5vcCAtbXNoYWxkc2wpKQorCisoZGVmaW5lLXBtYWNybyAoLW1zaGFsZHN3IGFyZykgKHNhdHVyYXRlIEhJIDE2IChzbGwgYXJnIChhbmQgcm4gMTUpKSkpCisoZHNobWkgbXNoYWxkc3cgIk11bHRpbWVkaWEgc2F0dXJhdGluZyBhcml0aG1ldGljIGxlZnQgc2hpZnQgKHdvcmQpIgorICAgICAgICgpCisgICAgICAgIm1zaGFsZHMudyAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDMpIHJtIChmLWV4dCA1KSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzbGljZS13b3JkLXVub3AgLW1zaGFsZHN3KSkKKworKGRlZmluZS1wbWFjcm8gKC1tc2hhcmRsIGFyZykgKHNyYSBhcmcgKGFuZCBybiAzMSkpKQorKGRzaG1pIG1zaGFyZGwgIk11bHRpbWVkaWEgYXJpdGhtZXRpYyByaWdodCBzaGlmdCAobG9uZykiCisgICAgICAgKCkKKyAgICAgICAibXNoYXJkLmwgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAzKSBybSAoZi1leHQgMTApIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNsaWNlLWxvbmctdW5vcCAtbXNoYXJkbCkpCisKKyhkZWZpbmUtcG1hY3JvICgtbXNoYXJkdyBhcmcpIChzcmEgYXJnIChhbmQgcm4gMTUpKSkKKyhkc2htaSBtc2hhcmR3ICJNdWx0aW1lZGlhIGFyaXRobWV0aWMgcmlnaHQgc2hpZnQgKHdvcmQpIgorICAgICAgICgpCisgICAgICAgIm1zaGFyZC53ICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMykgcm0gKGYtZXh0IDkpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNsaWNlLXdvcmQtdW5vcCAtbXNoYXJkdykpCisKKyhkc2htaSBtc2hhcmRzcSAiTXVsdGltZWRpYSBzYXR1cmF0aW5nIGFyaXRobWV0aWMgcmlnaHQgc2hpZnQgKHF1YWQgd29yZCkiCisgICAgICAgKCkKKyAgICAgICAibXNoYXJkcy5xICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMykgcm0gKGYtZXh0IDExKSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKHNhdHVyYXRlIERJIDE2IChzcmEgcm0gKGFuZCBybiA2MykpKSkpCisKKyhkc2htaSBtc2hmaGliICJNdWx0aW1lZGlhIHNodWZmbGUgaGlnaGVyLWhhbGYgKGJ5dGUpIgorICAgICAgICgpCisgICAgICAgIm1zaGZoaS5iICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTEpIHJtIChmLWV4dCA0KSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXF1ZW5jZSAoKFFJIHJlc3VsdDcpIChRSSByZXN1bHQ2KSAoUUkgcmVzdWx0NSkgKFFJIHJlc3VsdDQpCisJCSAgKFFJIHJlc3VsdDMpIChRSSByZXN1bHQyKSAoUUkgcmVzdWx0MSkgKFFJIHJlc3VsdDApKQorCQkgKHNldCByZXN1bHQwIChzdWJ3b3JkIFFJIHJtIDQpKQorCQkgKHNldCByZXN1bHQxIChzdWJ3b3JkIFFJIHJuIDQpKQorCQkgKHNldCByZXN1bHQyIChzdWJ3b3JkIFFJIHJtIDUpKQorCQkgKHNldCByZXN1bHQzIChzdWJ3b3JkIFFJIHJuIDUpKQorCQkgKHNldCByZXN1bHQ0IChzdWJ3b3JkIFFJIHJtIDYpKQorCQkgKHNldCByZXN1bHQ1IChzdWJ3b3JkIFFJIHJuIDYpKQorCQkgKHNldCByZXN1bHQ2IChzdWJ3b3JkIFFJIHJtIDcpKQorCQkgKHNldCByZXN1bHQ3IChzdWJ3b3JkIFFJIHJuIDcpKQorCQkgKHNldCByZCAoLWpvaW4tcWkgcmVzdWx0NyByZXN1bHQ2IHJlc3VsdDUgcmVzdWx0NCByZXN1bHQzCisJCQkJIHJlc3VsdDIgcmVzdWx0MSByZXN1bHQwKSkpKQorCisoZHNobWkgbXNoZmhpbCAiTXVsdGltZWRpYSBzaHVmZmxlIGhpZ2hlci1oYWxmIChsb25nKSIKKyAgICAgICAoKQorICAgICAgICJtc2hmaGkubCAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDExKSBybSAoZi1leHQgNikgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2VxdWVuY2UgKChTSSByZXN1bHQxKSAoU0kgcmVzdWx0MCkpCisJCSAoc2V0IHJlc3VsdDAgKHN1YndvcmQgU0kgcm0gMSkpCisJCSAoc2V0IHJlc3VsdDEgKHN1YndvcmQgU0kgcm4gMSkpCisJCSAoc2V0IHJkICgtam9pbi1zaSByZXN1bHQxIHJlc3VsdDApKSkpCisKKyhkc2htaSBtc2hmaGl3ICJNdWx0aW1lZGlhIHNodWZmbGUgaGlnaGVyLWhhbGYgKHdvcmQpIgorICAgICAgICgpCisgICAgICAgIm1zaGZoaS53ICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMTEpIHJtIChmLWV4dCA1KSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXF1ZW5jZSAoKEhJIHJlc3VsdDMpIChISSByZXN1bHQyKSAoSEkgcmVzdWx0MSkgKEhJIHJlc3VsdDApKQorCQkgKHNldCByZXN1bHQwIChzdWJ3b3JkIEhJIHJtIDIpKQorCQkgKHNldCByZXN1bHQxIChzdWJ3b3JkIEhJIHJuIDIpKQorCQkgKHNldCByZXN1bHQyIChzdWJ3b3JkIEhJIHJtIDMpKQorCQkgKHNldCByZXN1bHQzIChzdWJ3b3JkIEhJIHJuIDMpKQorCQkgKHNldCByZCAoLWpvaW4taGkgcmVzdWx0MyByZXN1bHQyIHJlc3VsdDEgcmVzdWx0MCkpKSkKKworKGRzaG1pIG1zaGZsb2IgIk11bHRpbWVkaWEgc2h1ZmZsZSBsb3dlci1oYWxmIChieXRlKSIKKyAgICAgICAoKQorICAgICAgICJtc2hmbG8uYiAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDExKSBybSAoZi1leHQgMCkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2VxdWVuY2UgKChRSSByZXN1bHQ3KSAoUUkgcmVzdWx0NikgKFFJIHJlc3VsdDUpIChRSSByZXN1bHQ0KQorCQkgIChRSSByZXN1bHQzKSAoUUkgcmVzdWx0MikgKFFJIHJlc3VsdDEpIChRSSByZXN1bHQwKSkKKwkJIChzZXQgcmVzdWx0MCAoc3Vid29yZCBRSSBybSAwKSkKKwkJIChzZXQgcmVzdWx0MSAoc3Vid29yZCBRSSBybiAwKSkKKwkJIChzZXQgcmVzdWx0MiAoc3Vid29yZCBRSSBybSAxKSkKKwkJIChzZXQgcmVzdWx0MyAoc3Vid29yZCBRSSBybiAxKSkKKwkJIChzZXQgcmVzdWx0NCAoc3Vid29yZCBRSSBybSAyKSkKKwkJIChzZXQgcmVzdWx0NSAoc3Vid29yZCBRSSBybiAyKSkKKwkJIChzZXQgcmVzdWx0NiAoc3Vid29yZCBRSSBybSAzKSkKKwkJIChzZXQgcmVzdWx0NyAoc3Vid29yZCBRSSBybiAzKSkKKwkJIChzZXQgcmQgKC1qb2luLXFpIHJlc3VsdDcgcmVzdWx0NiByZXN1bHQ1IHJlc3VsdDQgcmVzdWx0MworCQkJCSByZXN1bHQyIHJlc3VsdDEgcmVzdWx0MCkpKSkKKworKGRzaG1pIG1zaGZsb2wgIk11bHRpbWVkaWEgc2h1ZmZsZSBsb3dlci1oYWxmIChsb25nKSIKKyAgICAgICAoKQorICAgICAgICJtc2hmbG8ubCAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDExKSBybSAoZi1leHQgMikgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2VxdWVuY2UgKChTSSByZXN1bHQxKSAoU0kgcmVzdWx0MCkpCisJCSAoc2V0IHJlc3VsdDAgKHN1YndvcmQgU0kgcm0gMCkpCisJCSAoc2V0IHJlc3VsdDEgKHN1YndvcmQgU0kgcm4gMCkpCisJCSAoc2V0IHJkICgtam9pbi1zaSByZXN1bHQxIHJlc3VsdDApKSkpCisKKyhkc2htaSBtc2hmbG93ICJNdWx0aW1lZGlhIHNodWZmbGUgbG93ZXItaGFsZiAod29yZCkiCisgICAgICAgKCkKKyAgICAgICAibXNoZmxvLncgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxMSkgcm0gKGYtZXh0IDEpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNlcXVlbmNlICgoSEkgcmVzdWx0MykgKEhJIHJlc3VsdDIpIChISSByZXN1bHQxKSAoSEkgcmVzdWx0MCkpCisJCSAoc2V0IHJlc3VsdDAgKHN1YndvcmQgSEkgcm0gMCkpCisJCSAoc2V0IHJlc3VsdDEgKHN1YndvcmQgSEkgcm4gMCkpCisJCSAoc2V0IHJlc3VsdDIgKHN1YndvcmQgSEkgcm0gMSkpCisJCSAoc2V0IHJlc3VsdDMgKHN1YndvcmQgSEkgcm4gMSkpCisJCSAoc2V0IHJkICgtam9pbi1oaSByZXN1bHQzIHJlc3VsdDIgcmVzdWx0MSByZXN1bHQwKSkpKQorCisoZGVmaW5lLXBtYWNybyAoLW1zaGxsZGwgYXJnKSAoc2xsIGFyZyAoYW5kIHJuIDMxKSkpCisoZHNobWkgbXNobGxkbCAiTXVsdGltZWRpYSBsb2dpY2FsIGxlZnQgc2hpZnQgKGxvbmcgd29yZCkiCisgICAgICAgKCkKKyAgICAgICAibXNobGxkLmwgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAzKSBybSAoZi1leHQgMikgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2xpY2UtbG9uZy11bm9wIC1tc2hsbGRsKSkKKworKGRlZmluZS1wbWFjcm8gKC1tc2hsbGR3IGFyZykgKHNsbCBhcmcgKGFuZCBybiAxNSkpKQorKGRzaG1pIG1zaGxsZHcgIk11bHRpbWVkaWEgbG9naWNhbCBsZWZ0IHNoaWZ0ICh3b3JkKSIKKyAgICAgICAoKQorICAgICAgICJtc2hsbGQudyAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDMpIHJtIChmLWV4dCAxKSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzbGljZS13b3JkLXVub3AgLW1zaGxsZHcpKQorCisoZGVmaW5lLXBtYWNybyAoLW1zaGxyZGwgYXJnKSAoc3JsIGFyZyAoYW5kIHJuIDMxKSkpCisoZHNobWkgbXNobHJkbCAiTXVsdGltZWRpYSBsb2dpY2FsIHJpZ2h0IHNoaWZ0IChsb25nIHdvcmQpIgorICAgICAgICgpCisgICAgICAgIm1zaGxyZC5sICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMykgcm0gKGYtZXh0IDE0KSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzbGljZS1sb25nLXVub3AgLW1zaGxyZGwpKQorCisoZGVmaW5lLXBtYWNybyAoLW1zaGxyZHcgYXJnKSAoc3JsIGFyZyAoYW5kIHJuIDE1KSkpCisoZHNobWkgbXNobHJkdyAiTXVsdGltZWRpYSBsb2dpY2FsIHJpZ2h0IHNoaWZ0ICh3b3JkKSIKKyAgICAgICAoKQorICAgICAgICJtc2hscmQudyAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDMpIHJtIChmLWV4dCAxMykgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2xpY2Utd29yZC11bm9wIC1tc2hscmR3KSkKKworKGRzaG1pIG1zdWJsICJNdWx0aW1lZGlhIHN1YnRyYWN0IChsb25nIHdvcmQpIgorICAgICAgICgpCisgICAgICAgIm1zdWIubCAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDIpIHJtIChmLWV4dCAxMCkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2xpY2UtbG9uZyBzdWIpKQorCisoZHNobWkgbXN1YncgIk11bHRpbWVkaWEgYWRkICh3b3JkKSIKKyAgICAgICAoKQorICAgICAgICJtc3ViLncgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAyKSBybSAoZi1leHQgOSkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2xpY2Utd29yZCBzdWIpKQorCisoZGVmaW5lLXBtYWNybyAoLW1zdWJzbCBhcmcxIGFyZzIpIChzYXR1cmF0ZSBTSSAzMiAoc3ViIGFyZzEgYXJnMikpKQorKGRzaG1pIG1zdWJzbCAiTXVsdGltZWRpYSBzdWJ0cmFjdCAoc2F0dXJhdGluZyBsb25nKSIKKyAgICAgICAoKQorICAgICAgICJtc3Vicy5sICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMikgcm0gKGYtZXh0IDE0KSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzbGljZS1sb25nIC1tc3Vic2wpKQorCisoZGVmaW5lLXBtYWNybyAoLW1zdWJzdWIgYXJnMSBhcmcyKSAodXNhdHVyYXRlIFFJIDggKHN1YiBhcmcxIGFyZzIpKSkKKyhkc2htaSBtc3Vic3ViICJNdWx0aW1lZGlhIHN1YnRyYWN0IChzYXR1cmF0aW5nIGJ5dGUpIgorICAgICAgICgpCisgICAgICAgIm1zdWJzLnViICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMikgcm0gKGYtZXh0IDEyKSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzbGljZS1ieXRlIC1tc3Vic3ViKSkKKworKGRlZmluZS1wbWFjcm8gKC1tc3Vic3cgYXJnMSBhcmcyKSAoc2F0dXJhdGUgSEkgMTYgKHN1YiBhcmcxIGFyZzIpKSkKKyhkc2htaSBtc3Vic3cgIk11bHRpbWVkaWEgc3VidHJhY3QgKHNhdHVyYXRpbmcgd29yZCkiCisgICAgICAgKCkKKyAgICAgICAibXN1YnMudyAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDIpIHJtIChmLWV4dCAxMykgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2xpY2UtYnl0ZSAtbXN1YnN3KSkKKworKGRzaG1pIG11bHNsICJNdWx0aXBseSBzaWduZWQgbG9uZyIKKyAgICAgICAoKQorICAgICAgICJtdWxzLmwgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxKSBybSAoZi1leHQgMTQpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAobXVsIChleHQgREkgKHN1YndvcmQgU0kgcm0gMSkpIChleHQgREkgKHN1YndvcmQgU0kgcm4gMSkpKSkpCisKKyhkc2htaSBtdWx1bCAiTXVsdGlwbHkgdW5zaWduZWQgbG9uZyIKKyAgICAgICAoKQorICAgICAgICJtdWx1LmwgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAwKSBybSAoZi1leHQgMTQpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAobXVsICh6ZXh0IERJIChzdWJ3b3JkIFNJIHJtIDEpKSAoemV4dCBESSAoc3Vid29yZCBTSSBybiAxKSkpKSkKKworKGRzaG1pIG5vcCAiTm8gb3BlcmF0aW9uIgorICAgICAgICgpCisgICAgICAgIm5vcCIKKyAgICAgICAoKyAoZi1vcCAyNykgKGYtbGVmdCA2MykgKGYtZXh0IDApIChmLXJpZ2h0IDYzKSAoZi1kZXN0IDYzKSAoZi1yc3ZkIDApKQorICAgICAgIChub3ApKQorCisoZHNobWkgbnNiICJOdW1iZXIgb2YgY29uc2VjdXRpdmUgc2lnbiBiaXRzIgorICAgICAgICgpCisgICAgICAgIm5zYiAkcm0sICRyZCIKKyAgICAgICAoKyAoZi1vcCAwKSBybSAoZi1leHQgMTMpIChmLXJpZ2h0IDYzKSByZCAoZi1yc3ZkIDApKQorICAgICAgIDsgU2VtYW50aWNzIHJlcXVpcmVzIGEgbG9vcCBjb25zdHJ1Y3QsIHNvIHB1bnQgdG8gQy4KKyAgICAgICAoc2V0IHJkIChjLWNhbGwgREkgInNoNjRfbnNiIiBybSkpKQorCisoZHNobWkgb2NiaSAiSW52YWxpZGF0ZSBvcGVyYW5kIGNhY2hlIGJsb2NrIgorICAgICAgICgpCisgICAgICAgIm9jYmkgJHJtLCAkZGlzcDZ4MzIiCisgICAgICAgKCsgKGYtb3AgNTYpIHJtIChmLWV4dCA5KSBkaXNwNngzMiAoZi1kZXN0IDYzKSAoZi1yc3ZkIDApKQorICAgICAgICh1bmltcCAib2NiaSIpKQorCisoZHNobWkgb2NicCAiUHVyZ2Ugb3BlcmFuZCBjYWNoZSBibG9jayIKKyAgICAgICAoKQorICAgICAgICJvY2JwICRybSwgJGRpc3A2eDMyIgorICAgICAgICgrIChmLW9wIDU2KSBybSAoZi1leHQgOCkgZGlzcDZ4MzIgKGYtZGVzdCA2MykgKGYtcnN2ZCAwKSkKKyAgICAgICAodW5pbXAgIm9jYnAiKSkKKworKGRzaG1pIG9jYndiICJXcml0ZS1iYWNrIG9wZXJhbmQgY2FjaGUgYmxvY2siCisgICAgICAgKCkKKyAgICAgICAib2Nid2IgJHJtLCAkZGlzcDZ4MzIiCisgICAgICAgKCsgKGYtb3AgNTYpIHJtIChmLWV4dCAxMikgZGlzcDZ4MzIgKGYtZGVzdCA2MykgKGYtcnN2ZCAwKSkKKyAgICAgICAodW5pbXAgIm9jYndiIikpCisKKyhkc2htaSBvciAiT1IiCisgICAgICAgKCkKKyAgICAgICAib3IgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxKSBybSAoZi1leHQgOSkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChvciBybSBybikpKQorCisoZHNobWkgb3JpICJPUiBpbW1lZGlhdGUiCisgICAgICAgKCkKKyAgICAgICAib3JpICRybSwgJGltbTEwLCAkcmQiCisgICAgICAgKCsgKGYtb3AgNTUpIHJtIGltbTEwIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAob3Igcm0gKGV4dCBESSBpbW0xMCkpKSkKKworKGRzaG1pIHByZWZpICJQcmVmZXRjaCBpbnN0cnVjdGlvbiIKKyAgICAgICAoKQorICAgICAgICJwcmVmaSAkcm0sICRkaXNwNngzMiIKKyAgICAgICAoKyAoZi1vcCA1Nikgcm0gKGYtZXh0IDEpIGRpc3A2eDMyIChmLXJpZ2h0IDYzKSAoZi1yc3ZkIDApKQorICAgICAgICh1bmltcCAicHJlZmkiKSkKKworKGRzaG1pIHB0YSAiUHJlcGFyZSB0YXJnZXQgcmVnaXN0ZXIgZm9yIFNIbWVkaWEgdGFyZ2V0IgorICAgICAgICgpCisgICAgICAgInB0YSRsaWtlbHkgJGRpc3AxNiwgJHRyYSIKKyAgICAgICAoKyAoZi1vcCA1OCkgZGlzcDE2IGxpa2VseSAoZi04LTIgMCkgdHJhIChmLXJzdmQgMCkpCisgICAgICAgKHNldCB0cmEgKGFkZCBkaXNwMTYgMSkpKQorCisoZHNobWkgcHRhYnMgIlByZXBhcmUgdGFyZ2V0IHJlZ2lzdGVyIHdpdGggYWJzb2x1dGUgdmFsdWUgZnJvbSByZWdpc3RlciIKKyAgICAgICAoKQorICAgICAgICJwdGFicyRsaWtlbHkgJHJuLCAkdHJhIgorICAgICAgICgrIChmLW9wIDI2KSAoZi1sZWZ0IDYzKSAoZi1leHQgMSkgcm4gbGlrZWx5IChmLTgtMiAwKSB0cmEgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHRyYSBybikpCisKKyhkc2htaSBwdGIgIlByZXBhcmUgdGFyZ2V0IHJlZ2lzdGVyIGZvciBTSGNvbXBhY3QgdGFyZ2V0IgorICAgICAgICgpCisgICAgICAgInB0YiRsaWtlbHkgJGRpc3AxNiwgJHRyYSIKKyAgICAgICAoKyAoZi1vcCA1OSkgZGlzcDE2IGxpa2VseSAoZi04LTIgMCkgdHJhIChmLXJzdmQgMCkpCisgICAgICAgKHNldCB0cmEgZGlzcDE2KSkKKworKGRzaG1pIHB0cmVsICJQcmVwYXJlIHRhcmdldCByZWdpc3RlciB3aXRoIHJlbGF0aXZlIHZhbHVlIGZyb20gcmVnaXN0ZXIiCisgICAgICAgKCkKKyAgICAgICAicHRyZWwkbGlrZWx5ICRybiwgJHRyYSIKKyAgICAgICAoKyAoZi1vcCAyNikgKGYtbGVmdCA2MykgKGYtZXh0IDUpIHJuIGxpa2VseSAoZi04LTIgMCkgdHJhIChmLXJzdmQgMCkpCisgICAgICAgKHNldCB0cmEgKGFkZCBwYyBybikpKQorCisoZHNobWkgcHV0Y2ZnICJQdXQgY29uZmlndXJhdGlvbiByZWdpc3RlciIKKyAgICAgICAoKQorICAgICAgICJwdXRjZmcgJHJtLCAkZGlzcDYsICRyZCIKKyAgICAgICAoKyAoZi1vcCA1Nikgcm0gKGYtZXh0IDE1KSBkaXNwNiByZCAoZi1yc3ZkIDApKQorICAgICAgICh1bmltcCAicHV0Y2ZnIikpCisKKyhkc2htaSBwdXRjb24gIlB1dCBjb250cm9sIHJlZ2lzdGVyIgorICAgICAgICgpCisgICAgICAgInB1dGNvbiAkcm0sICRjcmoiCisgICAgICAgKCsgKGYtb3AgMjcpIHJtIChmLWV4dCAxNSkgKGYtcmlnaHQgNjMpIGNyaiAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgY3JqIHJtKSkKKworKGRzaG1pIHJ0ZSAiUmV0dXJuIGZyb20gZXhjZXB0aW9uIgorICAgICAgICgpCisgICAgICAgInJ0ZSIKKyAgICAgICAoKyAoZi1vcCAyNykgKGYtbGVmdCA2MykgKGYtZXh0IDMpIChmLXJpZ2h0IDYzKSAoZi1kZXN0IDYzKSAoZi1yc3ZkIDApKQorICAgICAgICh1bmltcCAicnRlIikpCisKKyhkc2htaSBzaGFyZCAiQXJpdGhtZXRpYyByaWdodCBzaGlmdCIKKyAgICAgICAoKQorICAgICAgICJzaGFyZCAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDEpIHJtIChmLWV4dCA3KSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKHNyYSBybSAoYW5kIHJuIDYzKSkpKQorCisoZHNobWkgc2hhcmRsICJBcml0aG1ldGljIHJpZ2h0IHNoaWZ0IChsb25nIHdvcmQpIgorICAgICAgICgpCisgICAgICAgInNoYXJkLmwgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxKSBybSAoZi1leHQgNikgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChleHQgREkgKHNyYSAoc3Vid29yZCBTSSBybSAxKSAoYW5kIHJuIDYzKSkpKSkKKworKGRzaG1pIHNoYXJpICJBcml0aG1ldGljIHJpZ2h0IHNoaWZ0IChpbW1lZGlhdGUgY291bnQpIgorICAgICAgICgpCisgICAgICAgInNoYXJpICRybSwgJHVpbW02LCAkcmQiCisgICAgICAgKCsgKGYtb3AgNDkpIHJtIChmLWV4dCA3KSB1aW1tNiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKHNyYSBybSB1aW1tNikpKQorCisoZHNobWkgc2hhcmlsICJBcml0aG1ldGljIHJpZ2h0IHNoaWZ0IChsb25nIHdvcmQsIGltbWVkaWF0ZSBjb3VudCkiCisgICAgICAgKCkKKyAgICAgICAic2hhcmkubCAkcm0sICR1aW1tNiwgJHJkIgorICAgICAgICgrIChmLW9wIDQ5KSBybSAoZi1leHQgNikgdWltbTYgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChleHQgREkgKHNyYSAoc3Vid29yZCBTSSBybSAxKSAoYW5kIHVpbW02IDYzKSkpKSkKKworKGRzaG1pIHNobGxkICJMb2dpY2FsIGxlZnQgc2hpZnQiCisgICAgICAgKCkKKyAgICAgICAic2hsbGQgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxKSBybSAoZi1leHQgMSkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChzbGwgcm0gKGFuZCBybiA2MykpKSkKKworKGRzaG1pIHNobGxkbCAiTG9naWNhbCBsZWZ0IHNoaWZ0IChsb25nIHdvcmQpIgorICAgICAgICgpCisgICAgICAgInNobGxkLmwgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxKSBybSAoZi1leHQgMCkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChleHQgREkgKHNsbCAoc3Vid29yZCBTSSBybSAxKSAoYW5kIHJuIDYzKSkpKSkKKworKGRzaG1pIHNobGxpICJMb2dpY2FsIGxlZnQgc2hpZnQgKGltbWVkaWF0ZSBjb3VudCkiCisgICAgICAgKCkKKyAgICAgICAic2hsbGkgJHJtLCAkdWltbTYsICRyZCIKKyAgICAgICAoKyAoZi1vcCA0OSkgcm0gKGYtZXh0IDEpIHVpbW02IHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoc2xsIHJtIHVpbW02KSkpCisKKyhkc2htaSBzaGxsaWwgIkxvZ2ljYWwgbGVmdCBzaGlmdCAobG9uZyB3b3JkLCBpbW1lZGlhdGUgY291bnQpIgorICAgICAgICgpCisgICAgICAgInNobGxpLmwgJHJtLCAkdWltbTYsICRyZCIKKyAgICAgICAoKyAoZi1vcCA0OSkgcm0gKGYtZXh0IDApIHVpbW02IHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoZXh0IERJIChzbGwgKHN1YndvcmQgU0kgcm0gMSkgKGFuZCB1aW1tNiA2MykpKSkpCisKKyhkc2htaSBzaGxyZCAiTG9naWNhbCByaWdodCBzaGlmdCIKKyAgICAgICAoKQorICAgICAgICJzaGxyZCAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDEpIHJtIChmLWV4dCAzKSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKHNybCBybSAoYW5kIHJuIDYzKSkpKQorCisoZHNobWkgc2hscmRsICJMb2dpY2FsIHJpZ2h0IHNoaWZ0IChsb25nIHdvcmQpIgorICAgICAgICgpCisgICAgICAgInNobHJkLmwgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAxKSBybSAoZi1leHQgMikgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChleHQgREkgKHNybCAoc3Vid29yZCBTSSBybSAxKSAoYW5kIHJuIDYzKSkpKSkKKworKGRzaG1pIHNobHJpICJMb2dpY2FsIHJpZ2h0IHNoaWZ0IChpbW1lZGlhdGUgY291bnQpIgorICAgICAgICgpCisgICAgICAgInNobHJpICRybSwgJHVpbW02LCAkcmQiCisgICAgICAgKCsgKGYtb3AgNDkpIHJtIChmLWV4dCAzKSB1aW1tNiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKHNybCBybSB1aW1tNikpKQorCisoZHNobWkgc2hscmlsICJMb2dpY2FsIHJpZ2h0IHNoaWZ0IChsb25nIHdvcmQsIGltbWVkaWF0ZSBjb3VudCkiCisgICAgICAgKCkKKyAgICAgICAic2hscmkubCAkcm0sICR1aW1tNiwgJHJkIgorICAgICAgICgrIChmLW9wIDQ5KSBybSAoZi1leHQgMikgdWltbTYgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChleHQgREkgKHNybCAoc3Vid29yZCBTSSBybSAxKSAoYW5kIHVpbW02IDYzKSkpKSkKKworKGRzaG1pIHNob3JpICJTaGlmdC1vciBpbW1lZGlhdGUiCisgICAgICAgKCkKKyAgICAgICAic2hvcmkgJHVpbW0xNiwgJHJkIgorICAgICAgICgrIChmLW9wIDUwKSB1aW1tMTYgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChvciAoc2xsIHJkIDE2KSAoemV4dCBESSB1aW1tMTYpKSkpCisKKyhkc2htaSBzbGVlcCAiU2xlZXAiCisgICAgICAgKCkKKyAgICAgICAic2xlZXAiCisgICAgICAgKCsgKGYtb3AgMjcpIChmLWxlZnQgNjMpIChmLWV4dCA3KSAoZi1yaWdodCA2MykgKGYtZGVzdCA2MykgKGYtcnN2ZCAwKSkKKyAgICAgICAodW5pbXAgInNsZWVwIikpCisKKyhkc2htaSBzdGIgIlN0b3JlIGJ5dGUiCisgICAgICAgKCkKKyAgICAgICAic3QuYiAkcm0sICRkaXNwMTAsICRyZCIKKyAgICAgICAoKyAoZi1vcCA0MCkgcm0gZGlzcDEwIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCAobWVtIFVRSSAoYWRkIHJtIChleHQgREkgZGlzcDEwKSkpIChhbmQgUUkgcmQgI3hmZikpKQorCisoZHNobWkgc3RsICJTdG9yZSBsb25nIHdvcmQiCisgICAgICAgKCkKKyAgICAgICAic3QubCAkcm0sICRkaXNwMTB4NCwgJHJkIgorICAgICAgICgrIChmLW9wIDQyKSBybSBkaXNwMTB4NCByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgKG1lbSBTSSAoYWRkIHJtIChleHQgREkgZGlzcDEweDQpKSkgKGFuZCBTSSByZCAjeGZmZmZmZmZmKSkpCisKKyhkc2htaSBzdHEgIlN0b3JlIHF1YWQgd29yZCIKKyAgICAgICAoKQorICAgICAgICJzdC5xICRybSwgJGRpc3AxMHg4LCAkcmQiCisgICAgICAgKCsgKGYtb3AgNDMpIHJtIGRpc3AxMHg4IHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCAobWVtIERJIChhZGQgcm0gKGV4dCBESSBkaXNwMTB4OCkpKSByZCkpCisKKyhkc2htaSBzdHcgIlN0b3JlIHdvcmQiCisgICAgICAgKCkKKyAgICAgICAic3QudyAkcm0sICRkaXNwMTB4MiwgJHJkIgorICAgICAgICgrIChmLW9wIDQxKSBybSBkaXNwMTB4MiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgKG1lbSBISSAoYWRkIHJtIChleHQgREkgZGlzcDEweDIpKSkgKGFuZCBISSByZCAjeGZmZmYpKSkKKworKGRlZmluZS1wbWFjcm8gKC1zdGhpLWJ5dGUpCisgIChzZXF1ZW5jZSAoKQorCSAgICAoc2V0IChtZW0gVVFJIGFkZHIpIChhbmQgUUkgdmFsICN4ZmYpKQorCSAgICAoc2V0IHZhbCAoc3JsIHZhbCA4KSkKKwkgICAgKHNldCBhZGRyIChhZGQgYWRkciAxKSkpKQorCisoZHNobWkgc3RoaWwgIlN0b3JlIGhpZ2ggcGFydCAobG9uZyB3b3JkKSIKKyAgICAgICgpCisgICAgICAgInN0aGkubCAkcm0sICRkaXNwNiwgJHJkIgorICAgICAgICgrIChmLW9wIDU2KSBybSAoZi1leHQgNikgZGlzcDYgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2VxdWVuY2UgKChESSBhZGRyKSAoUUkgYnl0ZWNvdW50KSAoREkgdmFsKSkKKwkJIChzZXQgYWRkciAoYWRkIHJtIGRpc3A2KSkKKwkJIChzZXQgYnl0ZWNvdW50IChhZGQgKGFuZCBhZGRyIDMpIDEpKQorCQkgKGlmIGVuZGlhbgorCQkgICAgIChzZXQgdmFsIHJkKQorCQkgICAgIChzZXQgdmFsIChzcmwgcmQgKHN1YiAzMiAobXVsIDggYnl0ZWNvdW50KSkpKSkKKwkJIChzZXQgYWRkciAoYWRkIChzdWIgYWRkciBieXRlY291bnQpIDEpKQorCQkgKGlmIChndCBieXRlY291bnQgMykKKwkJICAgICAoLXN0aGktYnl0ZSkpCisJCSAoaWYgKGd0IGJ5dGVjb3VudCAyKQorCQkgICAgICgtc3RoaS1ieXRlKSkKKwkJIChpZiAoZ3QgYnl0ZWNvdW50IDEpCisJCSAgICAgKC1zdGhpLWJ5dGUpKQorCQkgKGlmIChndCBieXRlY291bnQgMCkKKwkJICAgICAoLXN0aGktYnl0ZSkpKSkKKworKGRzaG1pIHN0aGlxICJTdG9yZSBoaWdoIHBhcnQgKHF1YWQgd29yZCkiCisgICAgICAgKCkKKyAgICAgICAic3RoaS5xICRybSwgJGRpc3A2LCAkcmQiCisgICAgICAgKCsgKGYtb3AgNTYpIHJtIChmLWV4dCA3KSBkaXNwNiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXF1ZW5jZSAoKERJIGFkZHIpIChRSSBieXRlY291bnQpIChESSB2YWwpKQorCQkgKHNldCBhZGRyIChhZGQgcm0gZGlzcDYpKQorCQkgKHNldCBieXRlY291bnQgKGFkZCAoYW5kIGFkZHIgNykgMSkpCisJCSAoaWYgZW5kaWFuCisJCSAgICAgKHNldCB2YWwgcmQpCisJCSAgICAgKHNldCB2YWwgKHNybCByZCAoc3ViIDY0IChtdWwgOCBieXRlY291bnQpKSkpKQorCQkgKHNldCBhZGRyIChhZGQgKHN1YiBhZGRyIGJ5dGVjb3VudCkgMSkpCisJCSAoaWYgKGd0IGJ5dGVjb3VudCA3KQorCQkgICAgICgtc3RoaS1ieXRlKSkKKwkJIChpZiAoZ3QgYnl0ZWNvdW50IDYpCisJCSAgICAgKC1zdGhpLWJ5dGUpKQorCQkgKGlmIChndCBieXRlY291bnQgNSkKKwkJICAgICAoLXN0aGktYnl0ZSkpCisJCSAoaWYgKGd0IGJ5dGVjb3VudCA0KQorCQkgICAgICgtc3RoaS1ieXRlKSkKKwkJIChpZiAoZ3QgYnl0ZWNvdW50IDMpCisJCSAgICAgKC1zdGhpLWJ5dGUpKQorCQkgKGlmIChndCBieXRlY291bnQgMikKKwkJICAgICAoLXN0aGktYnl0ZSkpCisJCSAoaWYgKGd0IGJ5dGVjb3VudCAxKQorCQkgICAgICgtc3RoaS1ieXRlKSkKKwkJIChpZiAoZ3QgYnl0ZWNvdW50IDApCisJCSAgICAgKC1zdGhpLWJ5dGUpKSkpCisKKyhkc2htaSBzdGxvbCAiU3RvcmUgbG93IHBhcnQgKGxvbmcgd29yZCkiCisgICAgICAgKCkKKyAgICAgICAic3Rsby5sICRybSwgJGRpc3A2LCAkcmQiCisgICAgICAgKCsgKGYtb3AgNTYpIHJtIChmLWV4dCAyKSBkaXNwNiByZCAoZi1yc3ZkIDApKQorICAgICAgIDsgRklYTUUuCisgICAgICAgKHVuaW1wICJzdGxvbCIpKQorCisoZHNobWkgc3Rsb3EgIlN0b3JlIGxvdyBwYXJ0IChxdWFkIHdvcmQpIgorICAgICAgICgpCisgICAgICAgInN0bG8ucSAkcm0sICRkaXNwNiwgJHJkIgorICAgICAgICgrIChmLW9wIDU2KSBybSAoZi1leHQgMykgZGlzcDYgcmQgKGYtcnN2ZCAwKSkKKyAgICAgICA7IEZJWE1FLgorICAgICAgICh1bmltcCAic3Rsb3EiKSkKKworKGRzaG1pIHN0eGIgIlN0b3JlIGJ5dGUgKGV4dGVuZGVkIGRpc3BsYWNlbWVudCkiCisgICAgICAgKCkKKyAgICAgICAic3R4LmIgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAyNCkgcm0gKGYtZXh0IDApIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCAobWVtIFVRSSAoYWRkIHJtIHJuKSkgKHN1YndvcmQgUUkgcmQgNykpKQorCisoZHNobWkgc3R4bCAiU3RvcmUgbG9uZyAoZXh0ZW5kZWQgZGlzcGxhY2VtZW50KSIKKyAgICAgICAoKQorICAgICAgICJzdHgubCAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDI0KSBybSAoZi1leHQgMikgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IChtZW0gU0kgKGFkZCBybSBybikpIChzdWJ3b3JkIFNJIHJkIDEpKSkKKworKGRzaG1pIHN0eHEgIlN0b3JlIHF1YWQgd29yZCAoZXh0ZW5kZWQgZGlzcGxhY2VtZW50KSIKKyAgICAgICAoKQorICAgICAgICJzdHgucSAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDI0KSBybSAoZi1leHQgMykgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IChtZW0gREkgKGFkZCBybSBybikpIHJkKSkKKworKGRzaG1pIHN0eHcgIlN0b3JlIHdvcmQgKGV4dGVuZGVkIGRpc3BsYWNlbWVudCkiCisgICAgICAgKCkKKyAgICAgICAic3R4LncgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAyNCkgcm0gKGYtZXh0IDEpIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCAobWVtIEhJIChhZGQgcm0gcm4pKSAoc3Vid29yZCBISSByZCAzKSkpCisKKyhkc2htaSBzdWIgIlN1YnRyYWN0IgorICAgICAgICgpCisgICAgICAgInN1YiAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDApIHJtIChmLWV4dCAxMSkgcm4gcmQgKGYtcnN2ZCAwKSkKKyAgICAgICAoc2V0IHJkIChzdWIgcm0gcm4pKSkKKworKGRzaG1pIHN1YmwgIlN1YnRyYWN0IGxvbmciCisgICAgICAgKCkKKyAgICAgICAic3ViLmwgJHJtLCAkcm4sICRyZCIKKyAgICAgICAoKyAoZi1vcCAwKSBybSAoZi1leHQgMTApIHJuIHJkIChmLXJzdmQgMCkpCisgICAgICAgKHNldCByZCAoZXh0IERJIChzdWIgKHN1YndvcmQgU0kgcm0gMSkgKHN1YndvcmQgU0kgcm4gMSkpKSkpCisKKyhkc2htaSBzd2FwcSAiU3dhcCBxdWFkIHdvcmRzIgorICAgICAgICgpCisgICAgICAgInN3YXAucSAkcm0sICRybiwgJHJkIgorICAgICAgICgrIChmLW9wIDgpIHJtIChmLWV4dCAzKSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXF1ZW5jZSAoKERJIGFkZHIpIChESSB0ZW1wKSkKKwkJIChzZXQgYWRkciAoYWRkIHJtIHJuKSkKKwkJIChzZXQgdGVtcCAobWVtIERJIGFkZHIpKQorCQkgKHNldCAobWVtIERJIGFkZHIpIHJkKQorCQkgKHNldCByZCB0ZW1wKSkpCisKKyhkc2htaSBzeW5jaSAiU3luY2hyb25pc2UgaW5zdHJ1Y3Rpb24gZmV0Y2giCisgICAgICAgKCkKKyAgICAgICAic3luY2kiCisgICAgICAgKCsgKGYtb3AgMjcpIChmLWxlZnQgNjMpIChmLWV4dCAyKSAoZi1yaWdodCA2MykgKGYtZGVzdCA2MykgKGYtcnN2ZCAwKSkKKyAgICAgICAodW5pbXAgInN5bmNpIikpCisKKyhkc2htaSBzeW5jbyAiU3luY2hyb25pc2UgZGF0YSBvcGVyYXRpb25zIgorICAgICAgICgpCisgICAgICAgInN5bmNvIgorICAgICAgICgrIChmLW9wIDI3KSAoZi1sZWZ0IDYzKSAoZi1leHQgNikgKGYtcmlnaHQgNjMpIChmLWRlc3QgNjMpIChmLXJzdmQgMCkpCisgICAgICAgKHVuaW1wICJzeW5jbyIpKQorCisoZHNobWkgdHJhcGEgIlRyYXAiCisgICAgICAgKCkKKyAgICAgICAidHJhcGEgJHJtIgorICAgICAgICgrIChmLW9wIDI3KSBybSAoZi1leHQgMSkgKGYtcmlnaHQgNjMpIChmLWRlc3QgNjMpIChmLXJzdmQgMCkpCisgICAgICAgKGMtY2FsbCAic2g2NF90cmFwYSIgcm0gcGMpKQorCisoZHNobWkgeG9yICJFeGNsdXNpdmUgT1IiCisgICAgICAgKCkKKyAgICAgICAieG9yICRybSwgJHJuLCAkcmQiCisgICAgICAgKCsgKGYtb3AgMSkgcm0gKGYtZXh0IDEzKSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKHhvciBybSBybikpKQorCisoZHNobWkgeG9yaSAiRXhjbHVzaXZlIE9SIGltbWVkaWF0ZSIKKyAgICAgICAoKQorICAgICAgICJ4b3JpICRybSwgJGltbTYsICRyZCIKKyAgICAgICAoKyAoZi1vcCA0OSkgcm0gKGYtZXh0IDEzKSBybiByZCAoZi1yc3ZkIDApKQorICAgICAgIChzZXQgcmQgKHhvciBybSAoZXh0IERJIGltbTYpKSkpCmRpZmYgLS1naXQgYS9nYXMvQ2hhbmdlTG9nIGIvZ2FzL0NoYW5nZUxvZwppbmRleCA0OTZiNTc4Li45OTQ5NDAxIDEwMDY0NAotLS0gYS9nYXMvQ2hhbmdlTG9nCisrKyBiL2dhcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAwNC0wNC0wNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKworCVBSIDk2CisJKiBjb25maWcvdGMtcHBjLmMgKHBwY19lbGZfc3VmZml4KTogQWRkIHZhbGlkMzIgYW5kIHZhbGlkNjQgZmllbGRzCisJdG8gc3RydWN0IG1hcF9iZmQuICBBZGp1c3QgTUFQIG1hY3JvLCBhbmQgZGVmaW5lIE1BUDMyLCBNQVA2NC4KKwlVcGRhdGUgIm1hcHBpbmciLiAgUmVzdHJpY3Qgc29tZSBAIG1vZGlmaWVycyB0byAzMiBiaXQuCisKKzIwMDQtMDQtMDEgIEFzZ2FyaSBKaW5pYSAgPGFzZ2FyaWpAa3BpdGN1bW1pbnMuY29tPgorCSAgICBEaGFuYW5qYXkgRGVzaHBhbmRlIDxkaGFuYW5qYXlkQGtwaXRjdW1taW5zLmNvbT4KKworCSogY29uZmlnL3RjLXNoLmMgKGRvbnRfYWRqdXN0X3JlbG9jXzMyKTogTmV3IHZhcmlhYmxlLgorCShzaF9maXhfYWRqdXN0YWJsZSk6IEF2b2lkIGFkanVzdGluZyBCRkRfUkVMT0NfMzIgd2hlbgorCWRvbnRfYWRqdXN0X3JlbG9jXzMyIGlzIHNldC4KKwkobWRfbG9uZ29wdHMpOiBBZGQgb3B0aW9uIC1yZW5lc2FzLgorCShtZF9wYXJzZV9vcHRpb24sIG1kX3Nob3dfdXNhZ2UpOiBMaWtld2lzZS4KKwkqIGRvYy9jLXNoLnRleGk6IExpa2V3aXNlLgorCisyMDA0LTA0LTAxICBEYXZlIEtvcm4gIDxka0BhcnRpbWkuY29tPgorCisJKiBjb25maWcvdGMtZGx4LmMgKG1kX2Fzc2VtYmxlKTogc2V0IGZ4X25vX292ZXJmbG93IGZsYWcgZm9yCisJaGkxNiBhbmQgbG8xNiBmaXhTIHN0cnVjdHMuCisJKG1kX2Fzc2VtYmxlKTogZ2VuZXJhdGUgYml0X2ZpeFMgZm9yIFJFTE9DX0RMWF9MTzE2IGluCisJZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgZm9yIFJFTE9DX0RMWF9SRUwxNi4KKwkobWFjaGluZV9pcCk6IHByb3Blcmx5IHJlc3BlY3QgTE8gZmxhZyBpbiB0aGVfaW5zbiBhbmQKKwlvdXRwdXQgUkVMT0NfRExYX0xPMTYgcmF0aGVyIHRoYW4gUkVMT0NfRExYXzE2LgorCShtZF9hcHBseV9maXgzKTogYXBwbHkgUkVMT0NfRExYX0xPMTYuCisKKzIwMDQtMDMtMzAgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CisKKwlSZW1vdmUgbG9uZy1vYnNvbGV0ZSBNUFcgc3VwcG9ydC4KKwkqIG1wdy1jb25maWcuaW4sIG1wdy1tYWtlLnNlZCwgbWFjLWFzLnI6IFJlbW92ZSBmaWxlcy4KKwkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIG1lbnRpb24gb2YgcHBjLSotbXB3KiBjb25maWcuCisJKiBjb25maWd1cmUuaW46IExpa2V3aXNlLgorCisyMDA0LTAzLTMwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgorCisJKiBjb25maWcvdGMtYXJtLmMgKG1lYWJpX2ZsYWdzKTogTWFrZSBpdHMgdXNlIGNvbmRpdGlvbmFsIHVwb24KKwlPQkpfRUxGIGJlaW5nIGRlZmluZWQuCisKKzIwMDQtMDMtMjcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKKwkqIGNvbmZpZy9vYmotYW91dC5jIChvYmpfYW91dF90eXBlKTogUmVtb3ZlICNpZmRlZiBCRkRfQVNTRU1CTEVSIGNvZGUuCisKKzIwMDQtMDMtMjMgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CisKKwkqIGNvbmZpZy90Yy1hcm0uYyAobWVhYmlfZmxhZ3MpOiBOZXcgdmFyaWFibGUuCisJKGFybV9wYXJzZV9lYWJpKTogTmV3IGZ1bmN0aW9uLgorCShtZF9iZWdpbik6IFNldCBmbGFncyBmb3IgRUFCSSB2My4KKwkoYXJtX2VhYmlzKTogQWRkLgorCShhcm1fbG9uZ19vcHRzKTogQWRkIG1lYWJpLgorCSogZG9jL2FzLnRleGluZiA8QVJNPjogRG9jdW1lbnQgLW1lYWJpLgorCSogZG9jL2MtYXJtLnRleGk6IERpdHRvLgorCisyMDA0LTAzLTIyICBCb2IgV2lsc29uICA8Ym9iLndpbHNvbkBhY20ub3JnPgorCisJKiBjb25maWcvdGMteHRlbnNhLmMgKHh0ZW5zYV9wb3N0X3JlbGF4X2hvb2spOiBDcmVhdGUgbGl0ZXJhbAorCXRhYmxlcyBldmVuIHdoZW4gdXNlX2xpdGVyYWxfc2VjdGlvbiBmbGFnIGlzIG5vdCBzZXQuCisKKzIwMDQtMDMtMjIgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKKwkqIGNvbmZpZy90Yy1zaC5jOiBSZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKwogMjAwNC0wMy0yMiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CiAKIAkqIGRvYy9jLWNyaXMudGV4aSAoQ1JJUy1PcHRzKTogRG9jdW1lbnQgLS1uby1tdWwtYnVnLWFib3J0LApAQCAtMjcsNiArODksMzggQEAKIAlzZWdtZW50cywgaW5jbHVkaW5nIGluaXQgYW5kIGZpbmkgbGl0ZXJhbCBzZWdtZW50cy4KIAkoeHRlbnNhX3Bvc3RfcmVsYXhfaG9vayk6IFN3YXAgdXNlIG9mIHh0X2luc25fc2VjIGFuZCB4dF9saXRlcmFsX3NlYy4KIAorMjAwNC0wMy0xOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KKworCSogdGMtaHBwYS5jIChjb25zX2ZpeF9uZXdfaHBwYSk6IENoZWNrIGZvciBQQyByZWxhdGl2ZSBiYXNlIHR5cGUuCisJKHBhX2NvbW0pOiBTZXQgQlNGX09CSkVDVCBpbiBzeW1ib2wgZmxhZ3MuCisKKzIwMDQtMDMtMTkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKKwkqIE1ha2VmaWxlLmFtOiBSdW4gIm1ha2UgZGVwLWFtIi4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCSogZG9jL01ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgorCSogcG8vZ2FzLnBvdDogUmVnZW5lcmF0ZS4KKworMjAwNC0wMy0xOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KKworCSogcmVhZC5jIChyZWFkX2Ffc291cmNlX2ZpbGUpOiBVc2UgZGVtYW5kX2VtcHR5X3Jlc3Rfb2ZfbGluZS4KKwkoZGVtYW5kX2VtcHR5X3Jlc3Rfb2ZfbGluZSk6IElzc3VlIGFuIGVycm9yIGhlcmUuCisJKGlnbm9yZV9yZXN0X29mX2xpbmUpOiBTaWxlbnRseSBza2lwIHRvIGVuZC4KKwkoZGVtYW5kX2NvcHlfc3RyaW5nKTogSXNzdWUgYW4gZXJyb3IsIG5vdCB3YXJuaW5nLgorCShlcXVhbHMpOiBMaWtld2lzZS4KKwkqIGNvbmZpZy9vYmotZWxmLmMgKG9ial9lbGZfc2VjdGlvbl9uYW1lKTogTGlrZXdpc2UuCisJKG9ial9lbGZfc2VjdGlvbik6IExpa2V3aXNlLgorCSogY29uZmlnL3RjLWFyYy5jIChhcmNfZXh0b3Blcik6IFJlbW92ZSBib2d1cyBOVUxMIGNoZWNrcy4KKwkoYXJjX2V4dGluc3QpOiBMaWtld2lzZS4KKwkqIGNvbmZpZy90Yy1pYTY0LmMgKGRvdF9zYXZlYik6IFVzZSBkZW1hbmRfZW1wdHlfcmVzdF9vZl9saW5lLgorCShkb3Rfc3BpbGwpOiBMaWtld2lzZS4KKwkoZG90X3Vud2FiaSk6IExpa2V3aXNlLgorCShkb3RfcHJvbG9ndWUpOiBMaWtld2lzZS4KKworCSogZXhwci5jIChvcGVyYW5kKTogUmVqZWN0ICsrIGFuZCAtLS4KKwkob3BlcmF0b3IpOiBMaWtld2lzZS4KKwogMjAwNC0wMy0xNyAgS2F6IEtvamltYSAgPGtrb2ppbWFAcnIuaWlqNHUub3IuanA+CiAKIAkqIGNvbmZpZy90Yy1zaC5jOiBJbmNsdWRlIGR3MmdlbmNmaS5oLgpAQCAtNTYsMTEgKzE1MCwxMjkgQEAKIAkqIGNvbmZpZy90Yy1pMzg2LmggKENwdVBhZExvY2spOiBOZXcgZGVmaW5lLgogCShDcHVVbmtub3duRmxhZ3MpOiBBZGRlZCBDcHVQYWRMb2NrLgogCisyMDA0LTAzLTA3ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgorCisJKiBkb2MvYy1ocHBhLnRleGkgKEhQUEEgRGlyZWN0aXZlcyk6IEZpeCB0eXBvLgorCisyMDA0LTAzLTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgorCisJKiBkdzJnZW5jZmkuYyAob3V0cHV0X2NpZSk6IEFsaWduIGxlbmd0aCB0byA0IGJ5dGUgYm91bmRhcnkuCisJKGNmaV9maW5pc2gpOiBMaWtld2lzZSBmb3IgZmRlLgorCisyMDA0LTAzLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CisKKwkqIGNvbmZpZy90Yy1pYTY0LmMgKG1kX2Fzc2VtYmxlKTogUHJvcGVybHkgaGFuZGxlIE5VTEwKKwlhbGlnbl9mcmFnLgorCShpYTY0X2hhbmRsZV9hbGlnbik6IERvbid0IGFib3J0IGlmIGZhaWxlZCB0byBhZGQgYSBzdG9wIGJpdC4KKworMjAwNC0wMy0wNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgorCisJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZWQuCisJKiBhY2xvY2FsLm00OiBMaWtld2lzZS4KKwkqIGNvbmZpZ3VyZTogTGlrZXdpc2UuCisJKiBkb2MvTWFrZWZpbGUuaW46IExpa2V3aXNlLgorCisyMDA0LTAzLTAzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CisKKwkqIGNvbmZpZy90Yy1pYTY0LmMgKGRvdF9hbGlnbik6IE5ldy4KKwkoaWE2NF9kb19hbGlnbik6IE1ha2UgaXQgc3RhdGljLgorCShtZF9wc2V1ZG9fdGFibGUpOiBVc2UgImRvdF9hbGlnbiIgZm9yICJhbGlnbiIuCisJKGlhNjRfbWRfZG9fYWxpZ24pOiBEb24ndCBzZXQgYWxpZ25fZnJhZyBoZXJlLgorCShpYTY0X2hhbmRsZV9hbGlnbik6IEFkZCBhIHN0b3AgYml0IHRvIHRoZSBwcmV2aW91cyBidW5kbGUgaWYKKwluZWVkZWQuCisKKwkqIGNvbmZpZy90Yy1pYTY0LmggKGlhNjRfZG9fYWxpZ24pOiBSZW1vdmVkLgorCisyMDAzLTAzLTAzICBBbmRyZXcgU3R1YmJzICA8YW5kcmV3LnN0dWJic0BzdXBlcmguY29tPgorCisJKiBjb25maWcvdGMtc2guYyAobWRfcGFyc2Vfb3B0aW9uKTogQWRkIC1pc2E9c2g0LW5vZnB1IGFuZAorCS1pc2E9c2g0LW5vbW11LW5vZnB1IG9wdGlvbnMuIEFkanVzdCBoZWxwIG1lc3NhZ2VzIGFjY29yZGluZ2x5LgorCShzaF9lbGZfZmluYWxfcHJvY2Vzc2luZyk6IE91dHB1dCBCRkQgdHlwZSBzaDRfbm9mcHUgaWYgdGhhdCBpcworCXRoZSBtb3N0IGdlbmVyYWwgdHlwZSBvciB0aGUgdXNlciBzcGVjaWZpY2FsbHkgcmVxdWVzdGVkIGl0LgorCShtZF9hc3NlbWJsZSk6IEFkZCBhIG5ldyBlcnJvciBtZXNzYWdlIGZvciB3aGVuIGFuIGluc3RydWN0aW9uCisJaXMgdW5kZXJzdG9vZCwgYnV0IGlzIG5vdCBhbGxvd2VkIGR1ZSB0byBhbiAtaXNhIG9wdGlvbi4KKworMjAwNC0wMy0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgorCisJKiBjb25maWcvdGMtaWE2NC5jIChhbGlnbl9mcmFnKTogTmV3LgorCShtZF9hc3NlbWJsZSk6IFNldCB0aGUgdGNfZnJhZ19kYXRhIGZpZWxkIGluIGFsaWduX2ZyYWcgZm9yCisJSUE2NF9PUENPREVfRklSU1QgaW5zdHJ1Y3Rpb25zLgorCShpYTY0X21kX2RvX2FsaWduKTogU2V0IGFsaWduX2ZyYWcuCisJKGlhNjRfaGFuZGxlX2FsaWduKTogQWRkIGEgc3RvcCBiaXQgaWYgbmVlZGVkLgorCisJKiBjb25maWcvdGMtaWE2NC5oIChUQ19GUkFHX1RZUEUpOiBOZXcuCisJKFRDX0ZSQUdfSU5JVCk6IE5ldy4KKworMjAwNC0wMy0wMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgorCisJKiBjb25maWcvdGMtZnJ2LmMgKGZyNDAwX2F1ZGlvKTogTmV3IHZhcmlhYmxlLgorCShtZF9wYXJzZV9vcHRpb24sIG1kX3Nob3dfdXNhZ2UpOiBBZGQgLW1jcHU9ZnI0MDUgYW5kIC1tY3B1PWZyNDUwLgorCShtZF9wYXJzZV9vcHRpb24pOiBTZXQgZnI0MDBfYXVkaW8gZm9yIC1tY3B1PWZyNDAwIGFuZCAtbWNwdT1mcjQwNS4KKwkodGFyZ2V0X2ltcGxlbWVudHNfaW5zbl9wKTogTmV3IGZ1bmN0aW9uLgorCShtZF9hc3NlbWJsZSk6IFJlcG9ydCBhbiBlcnJvciBpZiB0aGUgcHJvY2Vzc29yIGRvZXNuJ3QgaW1wbGVtZW50CisJdGhlIGluc3RydWN0aW9uLgorCisyMDA0LTAyLTI3ICBLYXp1aGlybyBJbmFva2EgIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CisKKwkqIGNvbmZpZy90Yy1tMzJyLmMgKG1kX2xvbmdvcHRzKTogQWRkZWQgLW5vLWJpdGluc3Qgb3B0aW9uLgorCShtZF9wYXJzZV9vcHRpb24pOiBEaXR0by4KKwkoT1BUSU9OX05PX1NQRUNJQUxfTTMyUik6IEFkZGVkLgorCShtZF9zaG93X3VzYWdlKTogRG9jdW1lbnQgaXQuCisJKGVuYWJsZV9zcGVpYWxfbTMycik6IENoYW5nZWQgYSBkZWZhdWx0IHZhbHVlIGZyb20gMCB0byAxLgorCSogZG9jL2MtbTMyci50ZXhpOiBEb2N1bWVudCB0aGUgLW5vLWJpdGluc3Qgb3B0aW9uLgorCisyMDA0LTAyLTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgorCisJKiBjb25maWcvdGMtc2guYyAoZ2V0X29wZXJhbmQpOiBSZXZlcnQgcHJldmlvdXMgZGVsdGEuCisJKHRjX2dlbl9yZWxvYyk6IENoZWNrIGZvciBhbiB1bmtub3duIHJlbG9jIHR5cGUgYmVmb3JlIHByb2Nlc3NpbmcKKwl0aGUgYWRkZW5kLgorCisyMDA0LTAyLTI3ICBIYW5uZXMgUmVpbmVja2UgIDxoYXJlQHN1c2UuZGU+CisKKwkqIGNvbmZpZy90Yy1zMzkwLmMgKHMzOTBfaW5zbik6IENvcnJlY3QgcmFuZ2UgY2hlY2sgZm9yIG9wY29kZSBpbgorCS5pbnNuIHBzZXVkbyBvcGVyYXRpb24uCisKKzIwMDQtMDItMjcgIEFuaWwgUGFyYW5qcGUgIDxhbmlscDFAa3BpdGN1bW1pbnMuY29tPgorCisJKiBjb25maWcvdGMtc2guYyAoZ2V0X29wZXJhbmQpOiAgSW4gY2FzZSBvZiAjSW1tLCBjaGVjayBoYXMgYmVlbgorCWFkZGVkIGZvciB3cm9uZyBzeW50YXguCisKIDIwMDQtMDItMjYgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgogCiAJKiBjb25maWcvdGMtbWlwcy5jIChtaXBzX2R3YXJmMl9hZGRyX3NpemUpOiBOZXcuCiAJKiBjb25maWcvdGMtbWlwcy5oIChEV0FSRjJfQUREUl9TSVpFKTogVXNlLgogCisyMDA0LTAyLTI2ICBBbmRyZXcgU3R1YmJzIDxhbmRyZXcuc3R1YmJzQHN1cGVyaC5jb20+CisKKwkqIGNvbmZpZy90Yy1zaC5jIChidWlsZF9NeXRlcyk6IEFkZCBSRUdfTl9EIGFuZCBSRUdfTl9CMDEKKwluaWJibGUgdHlwZXMgdG8gYXNzZW1ibGVyLgorCisyMDA0LTAyLTI1ICBGcmVkIEZpc2ggIDxmbmZAcmVkaGF0LmNvbT4KKworCSogY29uZmlnL3RjLWlxMjAwMC5jOiBBZGQgbWlzc2luZyBcblwgaW4gbXVsdGlsaW5lIHN0cmluZyBsaXRlcmFsLgorCisyMDA0LTAyLTIwICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CisKKwkqIGNvbmZpZy90Yy1pYTY0LmMgKHNsb3RfaW5kZXgpOiBOZXcgYXJnIGJlZm9yZV9yZWxheC4gIFVzZSBpbnN0ZWFkIG9mCisJZmluYWxpemVfc3ltcy4KKwkoZml4dXBfdW53X3JlY29yZHMpOiBOZXcgYXJnIGJlZm9yZV9yZWxheC4gIFBhc3MgdG8gc2xvdF9pbmRleC4KKwkoaWE2NF9lc3RpbWF0ZV9zaXplX2JlZm9yZV9yZWxheCk6IE5ldy4KKwkoaWE2NF9jb252ZXJ0X2ZyYWcpOiBQYXNzIDAgdG8gZml4dXBfdW53X3JlY29yZHMuICBBZGQgY29tbWVudC4KKwkoZ2VuZXJhdGVfdW53aW5kX2ltYWdlKTogUGFzcyAxIHRvIGZpeHVwX3Vud19yZWNvcmRzLgorCSogY29uZmlnL3RjLWlhNjQuaCAoaWE2NF9lc3RpbWF0ZV9zaXplX2JlZm9yZV9yZWxheCk6IERlY2xhcmUuCisJKG1kX2VzdGltYXRlX3NpemVfYmVmb3JlX3JlbGF4KTogQ2FsbCBpYTY0X2VzdGltYXRlX3NpemVfYmVmb3JlX3JlbGF4LgorCisyMDA0LTAyLTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCSogc3RhYnMuYyAoZ2VuZXJhdGVfYXNtX2ZpbGUpOiBBdm9pZCB3YXJuaW5nIGFib3V0IHVzZSBvZgorCXVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCisKKzIwMDQtMDItMTggIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgorCisJKiBjb25maWcvdGMtaWE2NC5jIChpYTY0X2ZsdXNoX2luc25zKTogSW4gYWRkaXRpb24gdG8gcHJvbG9ndWUsCisJYm9keSwgYW5kIGVuZHAsIGFsbG93IHVud2luZCByZWNvcmRzIHdoaWNoIGRvIG5vdCBoYXZlIGEgInQiCisJKHRpbWUvaW5zdHJ1Y3Rpb24pIGZpZWxkLgorCiAyMDA0LTAyLTE3ICBQZXRrbyBNYW5vbG92ICA8cGV0a2FuQG51Y2xldXN5cy5jb20+CiAKIAkqIGNvbmZpZy90Yy1hcm0uYyAoZG9fbWF2X2RzcHNjXzEpOiBDb3JyZWN0IG9mZnNldCBvZiBDUm4uCkBAIC02OCw3ICsyODAsNyBAQAogCUZpeCBhY2N1bXVsYXRvciByZWdpc3RlcnMgbW92ZSBvcGNvZGVzLgogCiAyMDA0LTAyLTEzICBIYW5uZXMgUmVpbmVja2UgIDxoYXJlQHN1c2UuZGU+Ci0gICAgICAgICAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKwkgICAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CiAKIAkqIGR3YXJmMmRiZy5jIChnZXRfZmlsZW51bSk6IERvIG5vdCByZWFkIGJleW9uZCBhbGxvY2F0ZWQgbWVtb3J5LgogCmRpZmYgLS1naXQgYS9nYXMvTWFrZWZpbGUuYW0gYi9nYXMvTWFrZWZpbGUuYW0KaW5kZXggNDlhMGYxMy4uYjM2ODkyNCAxMDA2NDQKLS0tIGEvZ2FzL01ha2VmaWxlLmFtCisrKyBiL2dhcy9NYWtlZmlsZS5hbQpAQCAtMTE5NywxMyArMTE5NywxNCBAQAogICAkKEJGRERJUikvbGliY29mZi5oICQoSU5DRElSKS9iZmRsaW5rLmggJChJTkNESVIpL3NhZmUtY3R5cGUuaCBcCiAgIHN1YnNlZ3MuaCAkKElOQ0RJUikvb2JzdGFjay5oICQoc3JjZGlyKS8uLi9vcGNvZGVzL20zMnItZGVzYy5oIFwKICAgJChJTkNESVIpL29wY29kZS9jZ2VuLmggJChzcmNkaXIpLy4uL29wY29kZXMvbTMyci1vcGMuaCBcCi0gIGNnZW4uaAorICBjZ2VuLmggJChJTkNESVIpL2VsZi9tMzJyLmggJChJTkNESVIpL2VsZi9yZWxvYy1tYWNyb3MuaAogREVQVENfbTMycl9lbGYgPSAkKElOQ0RJUikvc3ltY2F0LmggJChzcmNkaXIpL2NvbmZpZy9vYmotZWxmLmggXAogICAkKEJGRERJUikvZWxmLWJmZC5oICQoSU5DRElSKS9lbGYvY29tbW9uLmggJChJTkNESVIpL2VsZi9pbnRlcm5hbC5oIFwKICAgJChJTkNESVIpL2VsZi9leHRlcm5hbC5oICQoSU5DRElSKS9iZmRsaW5rLmggJChzcmNkaXIpL2NvbmZpZy90Yy1tMzJyLmggXAogICAkKElOQ0RJUikvc2FmZS1jdHlwZS5oIHN1YnNlZ3MuaCAkKElOQ0RJUikvb2JzdGFjay5oIFwKICAgJChzcmNkaXIpLy4uL29wY29kZXMvbTMyci1kZXNjLmggJChJTkNESVIpL29wY29kZS9jZ2VuLmggXAotICAkKHNyY2RpcikvLi4vb3Bjb2Rlcy9tMzJyLW9wYy5oIGNnZW4uaAorICAkKHNyY2RpcikvLi4vb3Bjb2Rlcy9tMzJyLW9wYy5oIGNnZW4uaCAkKElOQ0RJUikvZWxmL20zMnIuaCBcCisgICQoSU5DRElSKS9lbGYvcmVsb2MtbWFjcm9zLmgKIERFUFRDX202OGhjMTFfY29mZiA9ICQoSU5DRElSKS9zeW1jYXQuaCAkKHNyY2RpcikvY29uZmlnL29iai1jb2ZmLmggXAogICAkKHNyY2RpcikvY29uZmlnL3RjLW02OGhjMTEuaCAkKElOQ0RJUikvY29mZi9pbnRlcm5hbC5oIFwKICAgJChJTkNESVIpL2NvZmYvbTY4ay5oICQoSU5DRElSKS9jb2ZmL2V4dGVybmFsLmggJChCRkRESVIpL2xpYmNvZmYuaCBcCkBAIC0xNDAwLDIwICsxNDAxLDIzIEBACiAgICQoc3JjZGlyKS9jb25maWcvdGMtc2guaCAkKElOQ0RJUikvY29mZi9pbnRlcm5hbC5oIFwKICAgJChJTkNESVIpL2NvZmYvc2guaCAkKElOQ0RJUikvY29mZi9leHRlcm5hbC5oICQoQkZERElSKS9saWJjb2ZmLmggXAogICAkKElOQ0RJUikvYmZkbGluay5oIHN1YnNlZ3MuaCAkKElOQ0RJUikvb2JzdGFjay5oICQoc3JjZGlyKS8uLi9vcGNvZGVzL3NoLW9wYy5oIFwKLSAgJChJTkNESVIpL3NhZmUtY3R5cGUuaCBzdHJ1Yy1zeW1ib2wuaCBkd2FyZjJkYmcuaCBkdzJnZW5jZmkuaAorICAkKElOQ0RJUikvc2FmZS1jdHlwZS5oIHN0cnVjLXN5bWJvbC5oIGR3YXJmMmRiZy5oIGR3MmdlbmNmaS5oIFwKKyAgJChJTkNESVIpL2VsZi9kd2FyZjIuaAogREVQVENfc2hfZWxmID0gJChJTkNESVIpL3N5bWNhdC5oICQoc3JjZGlyKS9jb25maWcvb2JqLWVsZi5oIFwKICAgJChCRkRESVIpL2VsZi1iZmQuaCAkKElOQ0RJUikvZWxmL2NvbW1vbi5oICQoSU5DRElSKS9lbGYvaW50ZXJuYWwuaCBcCiAgICQoSU5DRElSKS9lbGYvZXh0ZXJuYWwuaCAkKElOQ0RJUikvYmZkbGluay5oICQoc3JjZGlyKS9jb25maWcvdGMtc2guaCBcCiAgIHN1YnNlZ3MuaCAkKElOQ0RJUikvb2JzdGFjay5oICQoc3JjZGlyKS8uLi9vcGNvZGVzL3NoLW9wYy5oIFwKICAgJChJTkNESVIpL3NhZmUtY3R5cGUuaCBzdHJ1Yy1zeW1ib2wuaCAkKElOQ0RJUikvZWxmL3NoLmggXAotICAkKElOQ0RJUikvZWxmL3JlbG9jLW1hY3Jvcy5oIGR3YXJmMmRiZy5oIGR3MmdlbmNmaS5oCisgICQoSU5DRElSKS9lbGYvcmVsb2MtbWFjcm9zLmggZHdhcmYyZGJnLmggZHcyZ2VuY2ZpLmggXAorICAkKElOQ0RJUikvZWxmL2R3YXJmMi5oCiBERVBUQ19zaDY0X2VsZiA9ICQoSU5DRElSKS9zeW1jYXQuaCAkKHNyY2RpcikvY29uZmlnL29iai1lbGYuaCBcCiAgICQoQkZERElSKS9lbGYtYmZkLmggJChJTkNESVIpL2VsZi9jb21tb24uaCAkKElOQ0RJUikvZWxmL2ludGVybmFsLmggXAogICAkKElOQ0RJUikvZWxmL2V4dGVybmFsLmggJChJTkNESVIpL2JmZGxpbmsuaCAkKHNyY2RpcikvY29uZmlnL3RjLXNoNjQuaCBcCiAgICQoc3JjZGlyKS9jb25maWcvdGMtc2guaCAkKElOQ0RJUikvZWxmL3NoLmggJChJTkNESVIpL2VsZi9yZWxvYy1tYWNyb3MuaCBcCiAgICQoQkZERElSKS9lbGYzMi1zaDY0LmggJChJTkNESVIpL3NhZmUtY3R5cGUuaCAkKHNyY2RpcikvLi4vb3Bjb2Rlcy9zaDY0LW9wYy5oIFwKICAgJChzcmNkaXIpL2NvbmZpZy90Yy1zaC5jIHN1YnNlZ3MuaCAkKElOQ0RJUikvb2JzdGFjay5oIFwKLSAgJChzcmNkaXIpLy4uL29wY29kZXMvc2gtb3BjLmggc3RydWMtc3ltYm9sLmggZHdhcmYyZGJnLmggZHcyZ2VuY2ZpLmgKKyAgJChzcmNkaXIpLy4uL29wY29kZXMvc2gtb3BjLmggc3RydWMtc3ltYm9sLmggZHdhcmYyZGJnLmggXAorICBkdzJnZW5jZmkuaCAkKElOQ0RJUikvZWxmL2R3YXJmMi5oCiBERVBUQ19zcGFyY19hb3V0ID0gJChJTkNESVIpL3N5bWNhdC5oICQoc3JjZGlyKS9jb25maWcvb2JqLWFvdXQuaCBcCiAgICQoc3JjZGlyKS9jb25maWcvdGMtc3BhcmMuaCAkKEJGRERJUikvbGliYW91dC5oICQoSU5DRElSKS9iZmRsaW5rLmggXAogICAkKElOQ0RJUikvc2FmZS1jdHlwZS5oIHN1YnNlZ3MuaCAkKElOQ0RJUikvb2JzdGFjay5oIFwKZGlmZiAtLWdpdCBhL2dhcy9NYWtlZmlsZS5pbiBiL2dhcy9NYWtlZmlsZS5pbgppbmRleCAxNzkyMGM4Li4wZmRkZDkzIDEwMDY0NAotLS0gYS9nYXMvTWFrZWZpbGUuaW4KKysrIGIvZ2FzL01ha2VmaWxlLmluCkBAIC0xLDggKzEsOCBAQAotIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS43LjggZnJvbSBNYWtlZmlsZS5hbS4KKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuOC4yIGZyb20gTWFrZWZpbGUuYW0uCiAjIEBjb25maWd1cmVfaW5wdXRACiAKLSMgQ29weXJpZ2h0IDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMKLSMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKKyMgMjAwMywgMjAwNCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC0xNCw2ICsxNCw5IEBACiAKIEBTRVRfTUFLRUAKIAorCitTT1VSQ0VTID0gJChhc19uZXdfU09VUkNFUykgJChFWFRSQV9hc19uZXdfU09VUkNFUykgJChpdGJsX3Rlc3RfU09VUkNFUykKKwogc3JjZGlyID0gQHNyY2RpckAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIFZQQVRIID0gQHNyY2RpckAKQEAgLTIxLDcgKzI0LDYgQEAKIHBrZ2xpYmRpciA9ICQobGliZGlyKS9AUEFDS0FHRUAKIHBrZ2luY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL0BQQUNLQUdFQAogdG9wX2J1aWxkZGlyID0gLgotCiBhbV9fY2QgPSBDRFBBVEg9IiQke1pTSF9WRVJTSU9OKy59JChQQVRIX1NFUEFSQVRPUikiICYmIGNkCiBJTlNUQUxMID0gQElOU1RBTExACiBpbnN0YWxsX3NoX0RBVEEgPSAkKGluc3RhbGxfc2gpIC1jIC1tIDY0NApAQCAtMzgsNiArNDAsODEgQEAKIGJ1aWxkX3RyaXBsZXQgPSBAYnVpbGRACiBob3N0X3RyaXBsZXQgPSBAaG9zdEAKIHRhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKK25vaW5zdF9QUk9HUkFNUyA9IGFzLW5ldyQoRVhFRVhUKQorRVhUUkFfUFJPR1JBTVMgPSBpdGJsLXRlc3QkKEVYRUVYVCkKK0RJU1RfQ09NTU9OID0gJChzcmNkaXIpLy4uL2NvbmZpZy5ndWVzcyAkKHNyY2RpcikvLi4vY29uZmlnLnN1YiBORVdTIFwKKwlSRUFETUUgQ2hhbmdlTG9nICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHNyY2RpcikvTWFrZWZpbGUuYW0gXAorCSQodG9wX3NyY2RpcikvY29uZmlndXJlICQoYW1fX2NvbmZpZ3VyZV9kZXBzKSBcCisJJChzcmNkaXIpL2NvbmZpZy5pbiAkKHNyY2RpcikvLi4vbWtpbnN0YWxsZGlycyBcCisJJChzcmNkaXIpL2dkYmluaXQuaW4gJChzcmNkaXIpL2dkYmluaXQuaW4gXAorCSQodG9wX3NyY2RpcikvcG8vTWFrZS1pbiBtNjhrLXBhcnNlLmMgaXRibC1wYXJzZS5jIGl0YmwtbGV4LmMgXAorCSQoc3JjZGlyKS8uLi95bHdyYXAgJChzcmNkaXIpLy4uL2x0bWFpbi5zaCBcCisJJChzcmNkaXIpLy4uL2NvbmZpZy5ndWVzcyAkKHNyY2RpcikvLi4vY29uZmlnLnN1Ygorc3ViZGlyID0gLgorQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAorYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvYWNpbmNsdWRlLm00IFwKKwkkKHRvcF9zcmNkaXIpLy4uL2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS8uLi9nZXR0ZXh0Lm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5pbgorYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKKwkkKEFDTE9DQUxfTTQpCithbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUyA9IGNvbmZpZy5zdGF0dXMgY29uZmlnLmNhY2hlIGNvbmZpZy5sb2cgXAorIGNvbmZpZ3VyZS5saW5lbm8gY29uZmlndXJlLnN0YXR1cy5saW5lbm8KK21raW5zdGFsbGRpcnMgPSAkKFNIRUxMKSAkKHRvcF9zcmNkaXIpLy4uL21raW5zdGFsbGRpcnMKK0NPTkZJR19IRUFERVIgPSBjb25maWcuaAorQ09ORklHX0NMRUFOX0ZJTEVTID0gZ2RiLmluaSAuZ2RiaW5pdCBwby9NYWtlZmlsZS5pbgorUFJPR1JBTVMgPSAkKG5vaW5zdF9QUk9HUkFNUykKK2FtX19vYmplY3RzXzEgPSBhcHAuJChPQkpFWFQpIGFzLiQoT0JKRVhUKSBhdG9mLWdlbmVyaWMuJChPQkpFWFQpIFwKKwliaWdudW0tY29weS4kKE9CSkVYVCkgY29uZC4kKE9CSkVYVCkgZGVwZW5kLiQoT0JKRVhUKSBcCisJZHdhcmYyZGJnLiQoT0JKRVhUKSBkdzJnZW5jZmkuJChPQkpFWFQpIGVjb2ZmLiQoT0JKRVhUKSBcCisJZWhvcHQuJChPQkpFWFQpIGV4cHIuJChPQkpFWFQpIGZsb251bS1jb3B5LiQoT0JKRVhUKSBcCisJZmxvbnVtLWtvbnN0LiQoT0JKRVhUKSBmbG9udW0tbXVsdC4kKE9CSkVYVCkgZnJhZ3MuJChPQkpFWFQpIFwKKwloYXNoLiQoT0JKRVhUKSBpbnB1dC1maWxlLiQoT0JKRVhUKSBpbnB1dC1zY3J1Yi4kKE9CSkVYVCkgXAorCWxpc3RpbmcuJChPQkpFWFQpIGxpdGVyYWwuJChPQkpFWFQpIG1hY3JvLiQoT0JKRVhUKSBcCisJbWVzc2FnZXMuJChPQkpFWFQpIG91dHB1dC1maWxlLiQoT0JKRVhUKSByZWFkLiQoT0JKRVhUKSBcCisJc2IuJChPQkpFWFQpIHN0YWJzLiQoT0JKRVhUKSBzdWJzZWdzLiQoT0JKRVhUKSBcCisJc3ltYm9scy4kKE9CSkVYVCkgd3JpdGUuJChPQkpFWFQpCithbV9hc19uZXdfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMSkKK2FzX25ld19PQkpFQ1RTID0gJChhbV9hc19uZXdfT0JKRUNUUykKK2FtX19ERVBFTkRFTkNJRVNfMSA9IHRjLUB0YXJnZXRfY3B1X3R5cGVALm8KK2FtX19ERVBFTkRFTkNJRVNfMiA9IG9iai1Ab2JqX2Zvcm1hdEAubworYW1fX0RFUEVOREVOQ0lFU18zID0gYXRvZi1AYXRvZkAubworYW1fX0RFUEVOREVOQ0lFU180ID0KK2FtX19ERVBFTkRFTkNJRVNfNSA9IC4uL2xpYmliZXJ0eS9saWJpYmVydHkuYQorYW1faXRibF90ZXN0X09CSkVDVFMgPSBpdGJsLXBhcnNlLiQoT0JKRVhUKSBpdGJsLWxleC4kKE9CSkVYVCkKK2l0YmxfdGVzdF9PQkpFQ1RTID0gJChhbV9pdGJsX3Rlc3RfT0JKRUNUUykKK2l0YmxfdGVzdF9ERVBFTkRFTkNJRVMgPSBpdGJsLXRvcHMubyBpdGJsLXRlc3QubyAkKGFtX19ERVBFTkRFTkNJRVNfNSkKK1NDUklQVFMgPSAkKG5vaW5zdF9TQ1JJUFRTKQorREVGQVVMVF9JTkNMVURFUyA9IC1JLiAtSSQoc3JjZGlyKSAtSS4KK2RlcGNvbXAgPQorYW1fX2RlcGZpbGVzX21heWJlID0KK0NPTVBJTEUgPSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgXAorCSQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKK0xUQ09NUElMRSA9ICQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSBcCisJJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSBcCisJJChBTV9DRkxBR1MpICQoQ0ZMQUdTKQorQ0NMRCA9ICQoQ0MpCitMSU5LID0gJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENDTEQpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgXAorCSQoQU1fTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAorTEVYQ09NUElMRSA9ICQoTEVYKSAkKExGTEFHUykgJChBTV9MRkxBR1MpCitMVExFWENPTVBJTEUgPSAkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoTEVYKSAkKExGTEFHUykgJChBTV9MRkxBR1MpCitZQUNDQ09NUElMRSA9ICQoWUFDQykgJChZRkxBR1MpICQoQU1fWUZMQUdTKQorTFRZQUNDQ09NUElMRSA9ICQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChZQUNDKSAkKFlGTEFHUykgXAorCSQoQU1fWUZMQUdTKQorWUxXUkFQID0gJCh0b3Bfc3JjZGlyKS8uLi95bHdyYXAKK1NPVVJDRVMgPSAkKGFzX25ld19TT1VSQ0VTKSAkKEVYVFJBX2FzX25ld19TT1VSQ0VTKSBcCisJJChpdGJsX3Rlc3RfU09VUkNFUykKK0RJU1RfU09VUkNFUyA9ICQoYXNfbmV3X1NPVVJDRVMpICQoRVhUUkFfYXNfbmV3X1NPVVJDRVMpIFwKKwkkKGl0YmxfdGVzdF9TT1VSQ0VTKQorUkVDVVJTSVZFX1RBUkdFVFMgPSBhbGwtcmVjdXJzaXZlIGNoZWNrLXJlY3Vyc2l2ZSBkdmktcmVjdXJzaXZlIFwKKwlodG1sLXJlY3Vyc2l2ZSBpbmZvLXJlY3Vyc2l2ZSBpbnN0YWxsLWRhdGEtcmVjdXJzaXZlIFwKKwlpbnN0YWxsLWV4ZWMtcmVjdXJzaXZlIGluc3RhbGwtaW5mby1yZWN1cnNpdmUgXAorCWluc3RhbGwtcmVjdXJzaXZlIGluc3RhbGxjaGVjay1yZWN1cnNpdmUgaW5zdGFsbGRpcnMtcmVjdXJzaXZlIFwKKwlwZGYtcmVjdXJzaXZlIHBzLXJlY3Vyc2l2ZSB1bmluc3RhbGwtaW5mby1yZWN1cnNpdmUgXAorCXVuaW5zdGFsbC1yZWN1cnNpdmUKK0VUQUdTID0gZXRhZ3MKK0NUQUdTID0gY3RhZ3MKK0RFSkFUT09MID0gJChQQUNLQUdFKQorUlVOVEVTVERFRkFVTFRGTEFHUyA9IC0tdG9vbCAkJHRvb2wgLS1zcmNkaXIgJCRzcmNkaXIKIEFDTE9DQUwgPSBAQUNMT0NBTEAKIEFMTE9DQSA9IEBBTExPQ0FACiBBTExfT0JKX0RFUFMgPSBAQUxMX09CSl9ERVBTQApAQCAtNDksNyArMTI2LDYgQEAKIEFVVE9NQUtFID0gQEFVVE9NQUtFQAogQVdLID0gQEFXS0AKIEJGRExJQiA9IEBCRkRMSUJACi0KIEJGRFZFUl9IID0gQEJGRFZFUl9IQAogQ0FUQUxPR1MgPSBAQ0FUQUxPR1NACiBDQVRPQkpFWFQgPSBAQ0FUT0JKRVhUQApAQCAtNzksNyArMTU1LDYgQEAKIElOU1RBTExfU1RSSVBfUFJPR1JBTSA9IEBJTlNUQUxMX1NUUklQX1BST0dSQU1ACiBJTlNUT0JKRVhUID0gQElOU1RPQkpFWFRACiBJTlRMREVQUyA9IEBJTlRMREVQU0AKLQogSU5UTExJQlMgPSBASU5UTExJQlNACiBJTlRMT0JKUyA9IEBJTlRMT0JKU0AKIExERkxBR1MgPSBATERGTEFHU0AKQEAgLTExNiwxMCArMTkxLDggQEAKIFVTRV9JTkNMVURFRF9MSUJJTlRMID0gQFVTRV9JTkNMVURFRF9MSUJJTlRMQAogVVNFX05MUyA9IEBVU0VfTkxTQAogVkVSU0lPTiA9IEBWRVJTSU9OQAotCiBXQVJOX0NGTEFHUyA9IEBXQVJOX0NGTEFHU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQAotCiBZQUNDID0gYGlmIFsgLWYgLi4vYmlzb24vYmlzb24gXSA7IHRoZW4gZWNobyAuLi9iaXNvbi9iaXNvbiAteSAtTC4uL2Jpc29uL2Jpc29uIDsgZWxzZSBlY2hvIEBZQUNDQCA7IGZpYAogYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACiBhY19jdF9SQU5MSUIgPSBAYWNfY3RfUkFOTElCQApAQCAtMTU0LDYgKzIyNyw3IEBACiBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACiBsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJACiBtYW5kaXIgPSBAbWFuZGlyQAorbWtkaXJfcCA9IEBta2Rpcl9wQAogb2JqX2Zvcm1hdCA9IEBvYmpfZm9ybWF0QAogb2xkaW5jbHVkZWRpciA9IEBvbGRpbmNsdWRlZGlyQAogcHJlZml4ID0gQHByZWZpeEAKQEAgLTE2OCwxNiArMjQyLDExIEBACiB0YXJnZXRfb3MgPSBAdGFyZ2V0X29zQAogdGFyZ2V0X3ZlbmRvciA9IEB0YXJnZXRfdmVuZG9yQAogdGVfZmlsZSA9IEB0ZV9maWxlQAotCi1BVVRPTUFLRV9PUFRJT05TID0gY3lnbnVzIGRlamFnbnUKLQorQVVUT01BS0VfT1BUSU9OUyA9IDEuOCBjeWdudXMgZGVqYWdudQogU1VCRElSUyA9IGRvYyBwbwotCiB0b29sZGlyID0gJChleGVjX3ByZWZpeCkvJCh0YXJnZXRfYWxpYXMpCiBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKQotCiBNS0RFUCA9IGdjYyAtTU0KLQogVEFSR19DUFUgPSBAdGFyZ2V0X2NwdV90eXBlQAogVEFSR19DUFVfQyA9ICQoc3JjZGlyKS9jb25maWcvdGMtQHRhcmdldF9jcHVfdHlwZUAuYwogVEFSR19DUFVfTyA9IHRjLUB0YXJnZXRfY3B1X3R5cGVALm8KQEAgLTE5NSw3ICsyNjQsNiBAQAogSVRfREVQUyA9ICQoc3JjZGlyKS9pdGJsLXBhcnNlLnkgJChzcmNkaXIpL2l0YmwtbGV4LmwgJChzcmNkaXIpL2NvbmZpZy9pdGJsLUB0YXJnZXRfY3B1X3R5cGVALmgKIElUX09CSlMgPSBpdGJsLXBhcnNlLm8gaXRibC1sZXgubyBpdGJsLW9wcy5vCiAKLQogIyBDUFUgdHlwZXMuICBUaGlzIGlzIG9ubHkgdXNlZCBmb3IgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbi4KIENQVV9UWVBFUyA9IFwKIAlhMjlrIFwKQEAgLTI1MSw3ICszMTksNiBAQAogCXo4awogCiAKLQogIyBPYmplY3QgZm9ybWF0IHR5cGVzLiAgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24uCiAjIFdlIGRlbGliZXJhdGVseSBvbWl0IFNPTSwgc2luY2UgaXQgZG9lcyBub3Qgd29yayBhcyBhIGNyb3NzIGFzc2VtYmxlci4KIE9CSl9GT1JNQVRTID0gXApAQCAtMjY2LDcgKzMzMyw2IEBACiAJdm1zCiAKIAotCiAjIFRoaXMgaXMgYW4gc2ggY2FzZSB3aGljaCBzZXRzIHZhbGlkIGFjY29yZGluZyB0byB3aGV0aGVyIHRoZSBDUFUKICMgdHlwZSBpbiB0aGUgc2hlbGwgdmFyaWFibGUgYyBhbmQgdGhlIE9TIHR5cGUgaW4gdGhlIHNoZWxsIHZhcmlhYmxlIG8KICMgYXJlIHN1cHBvcnRlZC4gIFRoaXMgaGVscHMgY3V0cyBkb3duIG9uIHRoZSBhbW91bnQgb2YgZGVwZW5kZW5jeQpAQCAtMzA4LDEwICszNzQsOCBAQAogCWVzYWM7CiAKIAotCiAjIFRoZXNlIGFyZSBsaWtlIENQVV9UWVBFUyBhbmQgQ1BVX09CSl9WQUxJRCwgZm9yIHRoZSBvYmo9bXVsdGkgY2FzZS4KIE1VTFRJX0NQVV9UWVBFUyA9IGkzODYgbWlwcyBjcmlzCi0KIE1VTFRJX0NQVV9PQkpfVkFMSUQgPSBcCiAJdmFsaWQ9IDsgXAogCWNhc2UgJCRvIGluIFwKQEAgLTMzMSw3ICszOTUsNiBAQAogCWVzYWM7CiAKIAotCiAjIFJlZ3VsYXIgc291cmNlIGZpbGVzLgogR0FTX0NGSUxFUyA9IFwKIAlhcHAuYyBcCkBAIC0zNjQsOSArNDI3LDcgQEAKIAlzeW1ib2xzLmMgXAogCXdyaXRlLmMKIAotCiBDRklMRVMgPSAkKEdBU19DRklMRVMpIGl0Ymwtb3BzLmMKLQogSEZJTEVTID0gXAogCWFzLmggXAogCWFzaW50bC5oIFwKQEAgLTM5Nyw3ICs0NTgsNiBAQAogCXdyaXRlLmgKIAogCi0KICMgQ1BVIGZpbGVzIGluIGNvbmZpZy4KIFRBUkdFVF9DUFVfQ0ZJTEVTID0gXAogCWNvbmZpZy90Yy1hMjlrLmMgXApAQCAtNDUxLDcgKzUxMSw2IEBACiAJY29uZmlnL3RjLXh0ZW5zYS5jIFwKIAljb25maWcvdGMtejhrLmMKIAotCiBUQVJHRVRfQ1BVX0hGSUxFUyA9IFwKIAljb25maWcvdGMtYTI5ay5oIFwKIAljb25maWcvdGMtYWxwaGEuaCBcCkBAIC01MDUsNyArNTY0LDYgQEAKIAljb25maWcvdGMtejhrLmgKIAogCi0KICMgT0JKIGZpbGVzIGluIGNvbmZpZwogT0JKX0ZPUk1BVF9DRklMRVMgPSBcCiAJY29uZmlnL29iai1hb3V0LmMgXApAQCAtNTE5LDcgKzU3Nyw2IEBACiAJY29uZmlnL29iai1zb20uYyBcCiAJY29uZmlnL29iai12bXMuYwogCi0KIE9CSl9GT1JNQVRfSEZJTEVTID0gXAogCWNvbmZpZy9vYmotYW91dC5oIFwKIAljb25maWcvb2JqLWJvdXQuaCBcCkBAIC01MzMsNyArNTkwLDYgQEAKIAljb25maWcvb2JqLXZtcy5oCiAKIAotCiAjIEVtdWxhdGlvbiBoZWFkZXIgZmlsZXMgaW4gY29uZmlnCiBUQVJHX0VOVl9IRklMRVMgPSBcCiAJY29uZmlnL3RlLTM4NmJzZC5oIFwKQEAgLTU3MSw3ICs2MjcsNiBAQAogCWNvbmZpZy90ZS10bWlwcy5oCiAKIAotCiAjIE11bHRpIGZpbGVzIGluIGNvbmZpZwogTVVMVElfQ0ZJTEVTID0gXAogCWNvbmZpZy9lLWNyaXNhb3V0LmMgXApAQCAtNTgyLDE0ICs2MzcsMTIgQEAKIAljb25maWcvZS1taXBzZWNvZmYuYyBcCiAJY29uZmlnL2UtbWlwc2VsZi5jCiAKLQogQ09ORklHX09CSlMgPSBcCiAJJChUQVJHX0NQVV9PKSBcCiAJJChPQkpfRk9STUFUX08pIFwKIAkkKEFUT0ZfVEFSR19PKSBcCiAJJChleHRyYV9vYmplY3RzKQogCi0KIEdFTkVSSUNfT0JKUyA9IFwKIAlhcHAubyBcCiAJYXMubyBcCkBAIC02MjEsMjYgKzY3NCwxNiBAQAogCXNiLm8gXAogCW1hY3JvLm8KIAotCiBPQkpTID0gJChDT05GSUdfT0JKUykgJChHRU5FUklDX09CSlMpCi0KIFBPVEZJTEVTID0gJChNVUxUSV9DRklMRVMpICQoVEFSR0VUX0VOVl9IRklMRVMpICQoT0JKX0ZPUk1BVF9IRklMRVMpIFwKIAkkKE9CSl9GT1JNQVRfQ0ZJTEVTKSAkKFRBUkdFVF9DUFVfSEZJTEVTKSAkKFRBUkdFVF9DUFVfQ0ZJTEVTKSBcCiAJJChIRklMRVMpICQoQ0ZJTEVTKSAkKEdBU19DRklMRVMpCiAKLVJFQ1VSU0lWRV9UQVJHRVRTID0gaW5zdGFsbC1pbmZvLXJlY3Vyc2l2ZQotCi0jIE5vdGU6IEdBU1AgaXMgbm93IGRlcHJlY2F0ZWQgYW5kIGhhcyBiZWVuIHJlbW92ZWQuICBJdCBpcyBzdGlsbAotIyBhdmFpbGFibGUgaW4gdGhlIENWUyBhcmNoaXZlIG9yIG9sZGVyIGJpbnV0aWxzIHJlbGVhc2VzIGlmIGl0IGlzIG5lZWRlZC4KLW5vaW5zdF9QUk9HUkFNUyA9IGFzLW5ldwogbm9pbnN0X1NDUklQVFMgPSAkKEdEQklOSVQpCiBFWFRSQV9TQ1JJUFRTID0gLmdkYmluaXQKLQogRVhUUkFfRElTVCA9IG1ha2UtZ2FzLmNvbSBtNjhrLXBhcnNlLmMgaXRibC1wYXJzZS5jIGl0YmwtcGFyc2UuaCBpdGJsLWxleC5jCi0KIERJU1RDTEVBTkZJTEVTID0gdGFyZy1jcHUuaCBvYmotZm9ybWF0LmggdGFyZy1lbnYuaCBpdGJsLWNwdS5oIGNnZW4tZGVzYy5oCiAKLQogIyBOb3cgZmlndXJlIG91dCBmcm9tIHRob3NlIHZhcmlhYmxlcyBob3cgdG8gY29tcGlsZSBhbmQgbGluay4KIEJBU0VESVIgPSAkKHNyY2RpcikvLi4KIEJGRERJUiA9ICQoQkFTRURJUikvYmZkCkBAIC02NTgsMTkgKzcwMSwxNiBAQAogIyB3aGVuIGJ1aWxkaW5nIGRlcGVuZGVuY2llcywgYmVjYXVzZSB0aGUgZGVwZW5kZW5jeSBidWlsZGluZyBpcyBkb25lCiAjIGluIGEgc3ViZGlyZWN0b3J5LgogREVQX0lOQ0xVREVTID0gLURfR05VX1NPVVJDRSAtSS4uIC1JJCR7c3JjZGlyfSAtSS4uLy4uL2JmZCAtSSQke3NyY2Rpcn0vY29uZmlnIC1JJCR7c3JjZGlyfS8uLi9pbmNsdWRlIC1JJCR7c3JjZGlyfS8uLiAtSSQke3NyY2Rpcn0vLi4vYmZkIC1JJCR7c3JjZGlyfS8uLi9pbnRsIC1JLi4vLi4vaW50bCAtRExPQ0FMRURJUj0iXCIkKHByZWZpeCkvc2hhcmUvbG9jYWxlXCIiCi0KIERFUF9GTEFHUyA9IC1EQkZEX0FTU0VNQkxFUiAtRE9CSl9NQVlCRV9FTEYgXAogCS1JLiAtSS4uIC1JJCR7c3JjZGlyfSAtSS4uLy4uL2JmZCAkKERFUF9JTkNMVURFUykKIAogCi0KICMgSG93IHRvIGxpbmsgd2l0aCBib3RoIG91ciBzcGVjaWFsIGxpYnJhcnkgZmFjaWxpdGllcwogIyBhbmQgdGhlIHN5c3RlbSdzIGluc3RhbGxlZCBsaWJyYXJpZXMuCiBHQVNMSUJTID0gQE9QQ09ERVNfTElCQCBAQkZETElCQCAuLi9saWJpYmVydHkvbGliaWJlcnR5LmEKIAogIyBGaWxlcyB0byBiZSBjb3BpZWQgYXdheSBhZnRlciBlYWNoIHN0YWdlIGluIGJ1aWxkaW5nLgogU1RBR0VTVFVGRiA9ICoubyAkKG5vaW5zdF9QUk9HUkFNUykKLQogYXNfbmV3X1NPVVJDRVMgPSAkKEdBU19DRklMRVMpCiBhc19uZXdfTERBREQgPSAkKFRBUkdfQ1BVX08pICQoT0JKX0ZPUk1BVF9PKSAkKEFUT0ZfVEFSR19PKSBcCiAJJChleHRyYV9vYmplY3RzKSAkKEdBU0xJQlMpICQoSU5UTExJQlMpICQoTElCTSkKQEAgLTY3OCw0NyArNzE4LDM1IEBACiBhc19uZXdfREVQRU5ERU5DSUVTID0gJChUQVJHX0NQVV9PKSAkKE9CSl9GT1JNQVRfTykgJChBVE9GX1RBUkdfTykgXAogCSQoZXh0cmFfb2JqZWN0cykgJChHQVNMSUJTKSAkKElOVExERVBTKQogCi0KIEVYUEVDVCA9IGBpZiBbIC1mICQke3Jvb3RtZX0vLi4vZXhwZWN0L2V4cGVjdCBdIDsgdGhlbiBcCiAgICAgICAgICAgZWNobyAkJHtyb290bWV9Ly4uL2V4cGVjdC9leHBlY3QgOyBcCiAgICAgICAgICAgZWxzZSBlY2hvIGV4cGVjdCA7IGZpYAogCi0KIFJVTlRFU1QgPSBgaWYgWyAtZiAkJHtzcmNkaXJ9Ly4uL2RlamFnbnUvcnVudGVzdCBdIDsgdGhlbiBcCiAJCWVjaG8gJCR7c3JjZGlyfS8uLi9kZWphZ251L3J1bnRlc3QgOyBlbHNlIGVjaG8gcnVudGVzdDsgXAogCSAgIGZpYAogCiBSVU5URVNURkxBR1MgPSAKIAotCiAjIFRoZSBtNjhrIG9wZXJhbmQgcGFyc2VyLgogRVhUUkFfYXNfbmV3X1NPVVJDRVMgPSBjb25maWcvbTY4ay1wYXJzZS55Ci0KLQotIyBzdGFuZC1hbG9uZSBpdGJsIGFzc2VtYmxlciAmIGRpc2Fzc2VtYmxlcgotRVhUUkFfUFJPR1JBTVMgPSBpdGJsLXRlc3QKIGl0YmxfdGVzdF9TT1VSQ0VTID0gaXRibC1wYXJzZS55IGl0YmwtbGV4LmwKIGl0YmxfdGVzdF9MREFERCA9IGl0YmwtdG9wcy5vIGl0YmwtdGVzdC5vICQoR0FTTElCUykgQExFWExJQkAKIAotCiAjIENHRU4gaW50ZXJmYWNlLgogQ0dFTl9DUFVfUFJFRklYID0gQGNnZW5fY3B1X3ByZWZpeEAKIAotCiAjIFJlbWFrZSB0aGUgaW5mbyBmaWxlcy4KIE1PU1RMWUNMRUFORklMRVMgPSAkKFNUQUdFU1RVRkYpIGNvcmUgc3RhbXAtbWsuY29tIFwKIAl0ZXN0c3VpdGUvKi5vIHRlc3RzdWl0ZS8qLm91dCB0ZXN0c3VpdGUvZ2FzLmxvZyB0ZXN0c3VpdGUvZ2FzLnN1bSBcCiAJdGVzdHN1aXRlL3NpdGUuZXhwIHNpdGUuYmFrIHNpdGUuZXhwIHN0YWdlIHN0YWdlMSBzdGFnZTIKIAotCiBDTEVBTkZJTEVTID0gZGVwLnNlZCBERVBUQyBERVBUQ0EgREVQT0JKIERFUE9CSkEgREVQMiBERVAyQSBERVAxIERFUEEgREVQIERFUERJUgotCiBhZ2FpbnN0ID0gc3RhZ2UyCi0KIERFUF9GSUxFX0RFUFMgPSAkKENGSUxFUykgJChIRklMRVMpICQoVEFSR0VUX0NQVV9DRklMRVMpIFwKIAkkKFRBUkdFVF9DUFVfSEZJTEVTKSAkKE9CSl9GT1JNQVRfQ0ZJTEVTKSAkKE9CSl9GT1JNQVRfSEZJTEVTKQogCi0KK0NPTkZJR19TVEFUVVNfREVQRU5ERU5DSUVTID0gJChCRkRESVIpL2NvbmZpZ3VyZS5pbgogQU1LREVQID0gI0RPIE5PVCBQVVQgQU5ZVEhJTkcgQkVUV0VFTiBUSElTIExJTkUgQU5EIFRIRSBNQVRDSElORyBXQVJOSU5HIEJFTE9XLgogREVQVENfYTI5a19hb3V0ID0gJChJTkNESVIpL3N5bWNhdC5oICQoc3JjZGlyKS9jb25maWcvb2JqLWFvdXQuaCBcCiAgICQoc3JjZGlyKS9jb25maWcvdGMtYTI5ay5oICQoQkZERElSKS9saWJhb3V0LmggJChJTkNESVIpL2JmZGxpbmsuaCBcCkBAIC05OTIsMTQgKzEwMjAsMTUgQEAKICAgJChCRkRESVIpL2xpYmNvZmYuaCAkKElOQ0RJUikvYmZkbGluay5oICQoSU5DRElSKS9zYWZlLWN0eXBlLmggXAogICBzdWJzZWdzLmggJChJTkNESVIpL29ic3RhY2suaCAkKHNyY2RpcikvLi4vb3Bjb2Rlcy9tMzJyLWRlc2MuaCBcCiAgICQoSU5DRElSKS9vcGNvZGUvY2dlbi5oICQoc3JjZGlyKS8uLi9vcGNvZGVzL20zMnItb3BjLmggXAotICBjZ2VuLmgKKyAgY2dlbi5oICQoSU5DRElSKS9lbGYvbTMyci5oICQoSU5DRElSKS9lbGYvcmVsb2MtbWFjcm9zLmgKIAogREVQVENfbTMycl9lbGYgPSAkKElOQ0RJUikvc3ltY2F0LmggJChzcmNkaXIpL2NvbmZpZy9vYmotZWxmLmggXAogICAkKEJGRERJUikvZWxmLWJmZC5oICQoSU5DRElSKS9lbGYvY29tbW9uLmggJChJTkNESVIpL2VsZi9pbnRlcm5hbC5oIFwKICAgJChJTkNESVIpL2VsZi9leHRlcm5hbC5oICQoSU5DRElSKS9iZmRsaW5rLmggJChzcmNkaXIpL2NvbmZpZy90Yy1tMzJyLmggXAogICAkKElOQ0RJUikvc2FmZS1jdHlwZS5oIHN1YnNlZ3MuaCAkKElOQ0RJUikvb2JzdGFjay5oIFwKICAgJChzcmNkaXIpLy4uL29wY29kZXMvbTMyci1kZXNjLmggJChJTkNESVIpL29wY29kZS9jZ2VuLmggXAotICAkKHNyY2RpcikvLi4vb3Bjb2Rlcy9tMzJyLW9wYy5oIGNnZW4uaAorICAkKHNyY2RpcikvLi4vb3Bjb2Rlcy9tMzJyLW9wYy5oIGNnZW4uaCAkKElOQ0RJUikvZWxmL20zMnIuaCBcCisgICQoSU5DRElSKS9lbGYvcmVsb2MtbWFjcm9zLmgKIAogREVQVENfbTY4aGMxMV9jb2ZmID0gJChJTkNESVIpL3N5bWNhdC5oICQoc3JjZGlyKS9jb25maWcvb2JqLWNvZmYuaCBcCiAgICQoc3JjZGlyKS9jb25maWcvdGMtbTY4aGMxMS5oICQoSU5DRElSKS9jb2ZmL2ludGVybmFsLmggXApAQCAtMTIzNCwxNCArMTI2MywxNiBAQAogICAkKHNyY2RpcikvY29uZmlnL3RjLXNoLmggJChJTkNESVIpL2NvZmYvaW50ZXJuYWwuaCBcCiAgICQoSU5DRElSKS9jb2ZmL3NoLmggJChJTkNESVIpL2NvZmYvZXh0ZXJuYWwuaCAkKEJGRERJUikvbGliY29mZi5oIFwKICAgJChJTkNESVIpL2JmZGxpbmsuaCBzdWJzZWdzLmggJChJTkNESVIpL29ic3RhY2suaCAkKHNyY2RpcikvLi4vb3Bjb2Rlcy9zaC1vcGMuaCBcCi0gICQoSU5DRElSKS9zYWZlLWN0eXBlLmggc3RydWMtc3ltYm9sLmggZHdhcmYyZGJnLmggZHcyZ2VuY2ZpLmgKKyAgJChJTkNESVIpL3NhZmUtY3R5cGUuaCBzdHJ1Yy1zeW1ib2wuaCBkd2FyZjJkYmcuaCBkdzJnZW5jZmkuaCBcCisgICQoSU5DRElSKS9lbGYvZHdhcmYyLmgKIAogREVQVENfc2hfZWxmID0gJChJTkNESVIpL3N5bWNhdC5oICQoc3JjZGlyKS9jb25maWcvb2JqLWVsZi5oIFwKICAgJChCRkRESVIpL2VsZi1iZmQuaCAkKElOQ0RJUikvZWxmL2NvbW1vbi5oICQoSU5DRElSKS9lbGYvaW50ZXJuYWwuaCBcCiAgICQoSU5DRElSKS9lbGYvZXh0ZXJuYWwuaCAkKElOQ0RJUikvYmZkbGluay5oICQoc3JjZGlyKS9jb25maWcvdGMtc2guaCBcCiAgIHN1YnNlZ3MuaCAkKElOQ0RJUikvb2JzdGFjay5oICQoc3JjZGlyKS8uLi9vcGNvZGVzL3NoLW9wYy5oIFwKICAgJChJTkNESVIpL3NhZmUtY3R5cGUuaCBzdHJ1Yy1zeW1ib2wuaCAkKElOQ0RJUikvZWxmL3NoLmggXAotICAkKElOQ0RJUikvZWxmL3JlbG9jLW1hY3Jvcy5oIGR3YXJmMmRiZy5oIGR3MmdlbmNmaS5oCisgICQoSU5DRElSKS9lbGYvcmVsb2MtbWFjcm9zLmggZHdhcmYyZGJnLmggZHcyZ2VuY2ZpLmggXAorICAkKElOQ0RJUikvZWxmL2R3YXJmMi5oCiAKIERFUFRDX3NoNjRfZWxmID0gJChJTkNESVIpL3N5bWNhdC5oICQoc3JjZGlyKS9jb25maWcvb2JqLWVsZi5oIFwKICAgJChCRkRESVIpL2VsZi1iZmQuaCAkKElOQ0RJUikvZWxmL2NvbW1vbi5oICQoSU5DRElSKS9lbGYvaW50ZXJuYWwuaCBcCkBAIC0xMjQ5LDcgKzEyODAsOCBAQAogICAkKHNyY2RpcikvY29uZmlnL3RjLXNoLmggJChJTkNESVIpL2VsZi9zaC5oICQoSU5DRElSKS9lbGYvcmVsb2MtbWFjcm9zLmggXAogICAkKEJGRERJUikvZWxmMzItc2g2NC5oICQoSU5DRElSKS9zYWZlLWN0eXBlLmggJChzcmNkaXIpLy4uL29wY29kZXMvc2g2NC1vcGMuaCBcCiAgICQoc3JjZGlyKS9jb25maWcvdGMtc2guYyBzdWJzZWdzLmggJChJTkNESVIpL29ic3RhY2suaCBcCi0gICQoc3JjZGlyKS8uLi9vcGNvZGVzL3NoLW9wYy5oIHN0cnVjLXN5bWJvbC5oIGR3YXJmMmRiZy5oIGR3MmdlbmNmaS5oCisgICQoc3JjZGlyKS8uLi9vcGNvZGVzL3NoLW9wYy5oIHN0cnVjLXN5bWJvbC5oIGR3YXJmMmRiZy5oIFwKKyAgZHcyZ2VuY2ZpLmggJChJTkNESVIpL2VsZi9kd2FyZjIuaAogCiBERVBUQ19zcGFyY19hb3V0ID0gJChJTkNESVIpL3N5bWNhdC5oICQoc3JjZGlyKS9jb25maWcvb2JqLWFvdXQuaCBcCiAgICQoc3JjZGlyKS9jb25maWcvdGMtc3BhcmMuaCAkKEJGRERJUikvbGliYW91dC5oICQoSU5DRElSKS9iZmRsaW5rLmggXApAQCAtMjUxMiw3OSArMjU0NCw0MyBAQAogCiBERVBfY3Jpc19tdWx0aSA9ICQoREVQX2NyaXNfYW91dCkgJChERVBfY3Jpc19lbGYpCiBCTUtERVAgPSAjRE8gTk9UIFBVVCBBTllUSElORyBCRVRXRUVOIFRISVMgTElORSBBTkQgVEhFIE1BVENISU5HIFdBUk5JTkcgQUJPVkUuCi1zdWJkaXIgPSAuCi1BQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00Ci1ta2luc3RhbGxkaXJzID0gJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS8uLi9ta2luc3RhbGxkaXJzCi1DT05GSUdfSEVBREVSID0gY29uZmlnLmgKLUNPTkZJR19DTEVBTl9GSUxFUyA9IGdkYi5pbmkgLmdkYmluaXQgcG8vTWFrZWZpbGUuaW4KLUVYVFJBX1BST0dSQU1TID0gaXRibC10ZXN0JChFWEVFWFQpCi1ub2luc3RfUFJPR1JBTVMgPSBhcy1uZXckKEVYRUVYVCkKLVBST0dSQU1TID0gJChub2luc3RfUFJPR1JBTVMpCi0KLWFtX19vYmplY3RzXzEgPSBhcHAuJChPQkpFWFQpIGFzLiQoT0JKRVhUKSBhdG9mLWdlbmVyaWMuJChPQkpFWFQpIFwKLQliaWdudW0tY29weS4kKE9CSkVYVCkgY29uZC4kKE9CSkVYVCkgZGVwZW5kLiQoT0JKRVhUKSBcCi0JZHdhcmYyZGJnLiQoT0JKRVhUKSBkdzJnZW5jZmkuJChPQkpFWFQpIGVjb2ZmLiQoT0JKRVhUKSBcCi0JZWhvcHQuJChPQkpFWFQpIGV4cHIuJChPQkpFWFQpIGZsb251bS1jb3B5LiQoT0JKRVhUKSBcCi0JZmxvbnVtLWtvbnN0LiQoT0JKRVhUKSBmbG9udW0tbXVsdC4kKE9CSkVYVCkgZnJhZ3MuJChPQkpFWFQpIFwKLQloYXNoLiQoT0JKRVhUKSBpbnB1dC1maWxlLiQoT0JKRVhUKSBpbnB1dC1zY3J1Yi4kKE9CSkVYVCkgXAotCWxpc3RpbmcuJChPQkpFWFQpIGxpdGVyYWwuJChPQkpFWFQpIG1hY3JvLiQoT0JKRVhUKSBcCi0JbWVzc2FnZXMuJChPQkpFWFQpIG91dHB1dC1maWxlLiQoT0JKRVhUKSByZWFkLiQoT0JKRVhUKSBcCi0Jc2IuJChPQkpFWFQpIHN0YWJzLiQoT0JKRVhUKSBzdWJzZWdzLiQoT0JKRVhUKSBcCi0Jc3ltYm9scy4kKE9CSkVYVCkgd3JpdGUuJChPQkpFWFQpCi1hbV9hc19uZXdfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMSkKLWFzX25ld19PQkpFQ1RTID0gJChhbV9hc19uZXdfT0JKRUNUUykKLWFzX25ld19MREZMQUdTID0KLWFtX2l0YmxfdGVzdF9PQkpFQ1RTID0gaXRibC1wYXJzZS4kKE9CSkVYVCkgaXRibC1sZXguJChPQkpFWFQpCi1pdGJsX3Rlc3RfT0JKRUNUUyA9ICQoYW1faXRibF90ZXN0X09CSkVDVFMpCi1pdGJsX3Rlc3RfREVQRU5ERU5DSUVTID0gaXRibC10b3BzLm8gaXRibC10ZXN0Lm8gXAotCS4uL2xpYmliZXJ0eS9saWJpYmVydHkuYQotaXRibF90ZXN0X0xERkxBR1MgPQotU0NSSVBUUyA9ICQobm9pbnN0X1NDUklQVFMpCi0KLQotREVGQVVMVF9JTkNMVURFUyA9ICAtSS4gLUkkKHNyY2RpcikgLUkuCi1kZXBjb21wID0KLWFtX19kZXBmaWxlc19tYXliZSA9Ci1DT01QSUxFID0gJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpIFwKLQkkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCi1MVENPTVBJTEUgPSAkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSBcCi0JJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKQotQ0NMRCA9ICQoQ0MpCi1MSU5LID0gJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENDTEQpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgXAotCSQoQU1fTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAotTEVYQ09NUElMRSA9ICQoTEVYKSAkKExGTEFHUykgJChBTV9MRkxBR1MpCi1MVExFWENPTVBJTEUgPSAkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoTEVYKSAkKExGTEFHUykgJChBTV9MRkxBR1MpCi1ZQUNDQ09NUElMRSA9ICQoWUFDQykgJChZRkxBR1MpICQoQU1fWUZMQUdTKQotTFRZQUNDQ09NUElMRSA9ICQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChZQUNDKSAkKFlGTEFHUykgJChBTV9ZRkxBR1MpCi1ZTFdSQVAgPSAkKHRvcF9zcmNkaXIpLy4uL3lsd3JhcAotRElTVF9TT1VSQ0VTID0gJChhc19uZXdfU09VUkNFUykgJChFWFRSQV9hc19uZXdfU09VUkNFUykgXAotCSQoaXRibF90ZXN0X1NPVVJDRVMpCi0KLVJFQ1VSU0lWRV9UQVJHRVRTID0gaW5zdGFsbC1pbmZvLXJlY3Vyc2l2ZSBpbmZvLXJlY3Vyc2l2ZSBkdmktcmVjdXJzaXZlIFwKLQlwZGYtcmVjdXJzaXZlIHBzLXJlY3Vyc2l2ZSB1bmluc3RhbGwtaW5mby1yZWN1cnNpdmUgXAotCWFsbC1yZWN1cnNpdmUgaW5zdGFsbC1kYXRhLXJlY3Vyc2l2ZSBpbnN0YWxsLWV4ZWMtcmVjdXJzaXZlIFwKLQlpbnN0YWxsZGlycy1yZWN1cnNpdmUgaW5zdGFsbC1yZWN1cnNpdmUgdW5pbnN0YWxsLXJlY3Vyc2l2ZSBcCi0JY2hlY2stcmVjdXJzaXZlIGluc3RhbGxjaGVjay1yZWN1cnNpdmUKLVNPVVJDRVMgPSAkKGFzX25ld19TT1VSQ0VTKSAkKEVYVFJBX2FzX25ld19TT1VSQ0VTKSAkKGl0YmxfdGVzdF9TT1VSQ0VTKQotCiBhbGw6IGNvbmZpZy5oCiAJJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYWxsLXJlY3Vyc2l2ZQogCiAuU1VGRklYRVM6CiAuU1VGRklYRVM6IC5jIC5sIC5sbyAubyAub2JqIC55Ci0KLWFtX19DT05GSUdfRElTVENMRUFOX0ZJTEVTID0gY29uZmlnLnN0YXR1cyBjb25maWcuY2FjaGUgY29uZmlnLmxvZyBcCi0gY29uZmlndXJlLmxpbmVubwotJChzcmNkaXIpL01ha2VmaWxlLmluOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAIE1ha2VmaWxlLmFtICAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5pbiAkKEFDTE9DQUxfTTQpCithbS0tcmVmcmVzaDoKKwlAOgorJChzcmNkaXIpL01ha2VmaWxlLmluOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAgJChhbV9fY29uZmlndXJlX2RlcHMpCisJQGZvciBkZXAgaW4gJD87IGRvIFwKKwkgIGNhc2UgJyQoYW1fX2NvbmZpZ3VyZV9kZXBzKScgaW4gXAorCSAgICAqJCRkZXAqKSBcCisJICAgICAgZWNobyAnIGNkICQoc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWZvcmVpZ24gJzsgXAorCSAgICAgIGNkICQoc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWZvcmVpZ24gIFwKKwkJJiYgZXhpdCAwOyBcCisJICAgICAgZXhpdCAxOzsgXAorCSAgZXNhYzsgXAorCWRvbmU7IFwKKwllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWZvcmVpZ24gIE1ha2VmaWxlJzsgXAogCWNkICQodG9wX3NyY2RpcikgJiYgXAotCSAgJChBVVRPTUFLRSkgLS1jeWdudXMgIE1ha2VmaWxlCisJICAkKEFVVE9NQUtFKSAtLWZvcmVpZ24gIE1ha2VmaWxlCisuUFJFQ0lPVVM6IE1ha2VmaWxlCitNYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisJQGNhc2UgJyQ/JyBpbiBcCisJICAqY29uZmlnLnN0YXR1cyopIFwKKwkgICAgZWNobyAnICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyc7IFwKKwkgICAgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzOzsgXAorCSAgKikgXAorCSAgICBlY2hvICcgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkQCAkKGFtX19kZXBmaWxlc19tYXliZSknOyBcCisJICAgIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpOzsgXAorCWVzYWM7CiAKLSQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzOiAkKHNyY2RpcikvY29uZmlndXJlICQoQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMpCiskKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1czogJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUgJChDT05GSUdfU1RBVFVTX0RFUEVOREVOQ0lFUykKIAkkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgLS1yZWNoZWNrCi0kKHNyY2RpcikvY29uZmlndXJlOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAICQoc3JjZGlyKS9jb25maWd1cmUuaW4gJChBQ0xPQ0FMX000KSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpCi0JY2QgJChzcmNkaXIpICYmICQoQVVUT0NPTkYpCiAKLSQoQUNMT0NBTF9NNCk6IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgY29uZmlndXJlLmluIGFjaW5jbHVkZS5tNAorJCh0b3Bfc3JjZGlyKS9jb25maWd1cmU6IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChhbV9fY29uZmlndXJlX2RlcHMpCisJY2QgJChzcmNkaXIpICYmICQoQVVUT0NPTkYpCiskKEFDTE9DQUxfTTQpOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAICQoYW1fX2FjbG9jYWxfbTRfZGVwcykKIAljZCAkKHNyY2RpcikgJiYgJChBQ0xPQ0FMKSAkKEFDTE9DQUxfQU1GTEFHUykKIAogY29uZmlnLmg6IHN0YW1wLWgxCkBAIC0yNTk2LDE2ICsyNTkyLDE2IEBACiBzdGFtcC1oMTogJChzcmNkaXIpL2NvbmZpZy5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwogCUBybSAtZiBzdGFtcC1oMQogCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgY29uZmlnLmgKLQotJChzcmNkaXIpL2NvbmZpZy5pbjogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5pbiAkKEFDTE9DQUxfTTQpIAorJChzcmNkaXIpL2NvbmZpZy5pbjogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKGFtX19jb25maWd1cmVfZGVwcykgCiAJY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9IRUFERVIpCi0JdG91Y2ggJChzcmNkaXIpL2NvbmZpZy5pbgorCXJtIC1mIHN0YW1wLWgxCisJdG91Y2ggJEAKIAogZGlzdGNsZWFuLWhkcjoKIAktcm0gLWYgY29uZmlnLmggc3RhbXAtaDEKLWdkYi5pbmk6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzIGdkYmluaXQuaW4KK2dkYi5pbmk6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGlyKS9nZGJpbml0LmluCiAJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkQAotLmdkYmluaXQ6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzIGdkYmluaXQuaW4KKy5nZGJpbml0OiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2RpcikvZ2RiaW5pdC5pbgogCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJEAKIHBvL01ha2VmaWxlLmluOiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHRvcF9zcmNkaXIpL3BvL01ha2UtaW4KIAljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRACkBAIC0yNjI0LDI3ICsyNjIwLDI3IEBACiAJJChMSU5LKSAkKGl0YmxfdGVzdF9MREZMQUdTKSAkKGl0YmxfdGVzdF9PQkpFQ1RTKSAkKGl0YmxfdGVzdF9MREFERCkgJChMSUJTKQogCiBtb3N0bHljbGVhbi1jb21waWxlOgotCS1ybSAtZiAqLiQoT0JKRVhUKSBjb3JlICouY29yZQorCS1ybSAtZiAqLiQoT0JKRVhUKQogCiBkaXN0Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi50YWIuYwogCiAuYy5vOgotCSQoQ09NUElMRSkgLWMgYHRlc3QgLWYgJyQ8JyB8fCBlY2hvICckKHNyY2RpcikvJ2AkPAorCSQoQ09NUElMRSkgLWMgJDwKIAogLmMub2JqOgotCSQoQ09NUElMRSkgLWMgYGlmIHRlc3QgLWYgJyQ8JzsgdGhlbiAkKENZR1BBVEhfVykgJyQ8JzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS8kPCc7IGZpYAorCSQoQ09NUElMRSkgLWMgYCQoQ1lHUEFUSF9XKSAnJDwnYAogCiAuYy5sbzoKLQkkKExUQ09NUElMRSkgLWMgLW8gJEAgYHRlc3QgLWYgJyQ8JyB8fCBlY2hvICckKHNyY2RpcikvJ2AkPAorCSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAogCiAubC5jOgotCSQoTEVYQ09NUElMRSkgYHRlc3QgLWYgJDwgfHwgZWNobyAnJChzcmNkaXIpLydgJDwKKwkkKExFWENPTVBJTEUpICQ8CiAJc2VkICcvXiMvIHN8JChMRVhfT1VUUFVUX1JPT1QpXC5jfCRAfCcgJChMRVhfT1VUUFVUX1JPT1QpLmMgPiRACiAJcm0gLWYgJChMRVhfT1VUUFVUX1JPT1QpLmMKIAogLnkuYzoKLQkkKFNIRUxMKSAkKFlMV1JBUCkgYHRlc3QgLWYgJyQ8JyB8fCBlY2hvICckKHNyY2RpcikvJ2AkPCB5LnRhYi5jICRAIHkudGFiLmggJCouaCB5Lm91dHB1dCAkKi5vdXRwdXQgLS0gJChZQUNDQ09NUElMRSkKKwkkKFNIRUxMKSAkKFlMV1JBUCkgJDwgeS50YWIuYyAkQCB5LnRhYi5oICQqLmggeS5vdXRwdXQgJCoub3V0cHV0IC0tICQoWUFDQ0NPTVBJTEUpCiAKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KQEAgLTI3MTUsMTQgKzI3MTEsNiBAQAogCSAgdGVzdCAiJCRzdWJkaXIiID0gLiB8fCAoY2QgJCRzdWJkaXIgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgY3RhZ3MpOyBcCiAJZG9uZQogCi1FVEFHUyA9IGV0YWdzCi1FVEFHU0ZMQUdTID0KLQotQ1RBR1MgPSBjdGFncwotQ1RBR1NGTEFHUyA9Ci0KLXRhZ3M6IFRBR1MKLQogSUQ6ICQoSEVBREVSUykgJChTT1VSQ0VTKSAkKExJU1ApICQoVEFHU19GSUxFUykKIAlsaXN0PSckKFNPVVJDRVMpICQoSEVBREVSUykgJChMSVNQKSAkKFRBR1NfRklMRVMpJzsgXAogCXVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcCkBAIC0yNzMxLDYgKzI3MTksNyBAQAogCSAgJChBV0spICcgICAgeyBmaWxlc1skJDBdID0gMTsgfSBcCiAJICAgICAgIEVORCB7IGZvciAoaSBpbiBmaWxlcykgcHJpbnQgaTsgfSdgOyBcCiAJbWtpZCAtZklEICQkdW5pcXVlCit0YWdzOiBUQUdTCiAKIFRBR1M6IHRhZ3MtcmVjdXJzaXZlICQoSEVBREVSUykgJChTT1VSQ0VTKSBjb25maWcuaW4gJChUQUdTX0RFUEVOREVOQ0lFUykgXAogCQkkKFRBR1NfRklMRVMpICQoTElTUCkKQEAgLTI3NTYsNyArMjc0NSw2IEBACiAJdGVzdCAteiAiJChFVEFHU19BUkdTKSQkdGFncyQkdW5pcXVlIiBcCiAJICB8fCAkKEVUQUdTKSAkKEVUQUdTRkxBR1MpICQoQU1fRVRBR1NGTEFHUykgJChFVEFHU19BUkdTKSBcCiAJICAgICAkJHRhZ3MgJCR1bmlxdWUKLQogY3RhZ3M6IENUQUdTCiBDVEFHUzogY3RhZ3MtcmVjdXJzaXZlICQoSEVBREVSUykgJChTT1VSQ0VTKSBjb25maWcuaW4gJChUQUdTX0RFUEVOREVOQ0lFUykgXAogCQkkKFRBR1NfRklMRVMpICQoTElTUCkKQEAgLTI3NzksOCArMjc2Nyw2IEBACiAKIGRpc3RjbGVhbi10YWdzOgogCS1ybSAtZiBUQUdTIElEIEdUQUdTIEdSVEFHUyBHU1lNUyBHUEFUSCB0YWdzCi1ERUpBVE9PTCA9ICQoUEFDS0FHRSkKLVJVTlRFU1RERUZBVUxURkxBR1MgPSAtLXRvb2wgJCR0b29sIC0tc3JjZGlyICQkc3JjZGlyCiBzaXRlLmV4cDogTWFrZWZpbGUKIAlAZWNobyAnTWFraW5nIGEgbmV3IHNpdGUuZXhwIGZpbGUuLi4nCiAJQGVjaG8gJyMjIHRoZXNlIHZhcmlhYmxlcyBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgbWFrZSAjIycgPnNpdGUudG1wCkBAIC0yODEyLDYgKzI3OTgsNyBAQAogYWxsLWFtOiBNYWtlZmlsZSAkKFBST0dSQU1TKSAkKFNDUklQVFMpIGNvbmZpZy5oCiBpbnN0YWxsZGlyczogaW5zdGFsbGRpcnMtcmVjdXJzaXZlCiBpbnN0YWxsZGlycy1hbToKK2luc3RhbGw6IGluc3RhbGwtcmVjdXJzaXZlCiBpbnN0YWxsLWV4ZWM6IGluc3RhbGwtZXhlYy1yZWN1cnNpdmUKIGluc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLXJlY3Vyc2l2ZQogdW5pbnN0YWxsOiB1bmluc3RhbGwtcmVjdXJzaXZlCkBAIC0yODIyLDcgKzI4MDksNyBAQAogaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stcmVjdXJzaXZlCiBpbnN0YWxsLXN0cmlwOgogCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCi0JICBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCiAJICBgdGVzdCAteiAnJChTVFJJUCknIHx8IFwKIAkgICAgZWNobyAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyJgIGluc3RhbGwKIG1vc3RseWNsZWFuLWdlbmVyaWM6CkBAIC0yODU3LDYgKzI4NDQsOCBAQAogCiBkdmktYW06CiAKK2h0bWw6IGh0bWwtcmVjdXJzaXZlCisKIGluZm86IGluZm8tcmVjdXJzaXZlCiAKIGluZm8tYW06CkBAIC0yODY1LDcgKzI4NTQsNyBAQAogCiBpbnN0YWxsLWV4ZWMtYW06IGluc3RhbGwtZXhlYy1sb2NhbAogCi1pbnN0YWxsLWluZm86CitpbnN0YWxsLWluZm86IGluc3RhbGwtaW5mby1yZWN1cnNpdmUKIAogaW5zdGFsbC1tYW46CiAKQEAgLTI4OTQsMzMgKzI4ODMsMjUgQEAKIAogdW5pbnN0YWxsLWluZm86IHVuaW5zdGFsbC1pbmZvLXJlY3Vyc2l2ZQogCi0uUEhPTlk6ICQoUkVDVVJTSVZFX1RBUkdFVFMpIENUQUdTIEdUQUdTIGFsbCBhbGwtYW0gY2hlY2sgY2hlY2stREVKQUdOVSBcCi0JY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBjbGVhbi1saWJ0b29sIGNsZWFuLW5vaW5zdFBST0dSQU1TIFwKLQljbGVhbi1yZWN1cnNpdmUgY3RhZ3MgY3RhZ3MtcmVjdXJzaXZlIGRpc3RjbGVhbiBcCi0JZGlzdGNsZWFuLURFSkFHTlUgZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAotCWRpc3RjbGVhbi1oZHIgZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGNsZWFuLXJlY3Vyc2l2ZSBcCi0JZGlzdGNsZWFuLXRhZ3MgZHZpIGR2aS1hbSBkdmktcmVjdXJzaXZlIGluZm8gaW5mby1hbSBcCi0JaW5mby1yZWN1cnNpdmUgaW5zdGFsbCBpbnN0YWxsLWFtIGluc3RhbGwtZGF0YSBpbnN0YWxsLWRhdGEtYW0gXAotCWluc3RhbGwtZGF0YS1yZWN1cnNpdmUgaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBcCi0JaW5zdGFsbC1leGVjLWxvY2FsIGluc3RhbGwtZXhlYy1yZWN1cnNpdmUgaW5zdGFsbC1pbmZvIFwKLQlpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1tYW4gaW5zdGFsbC1yZWN1cnNpdmUgaW5zdGFsbC1zdHJpcCBcCi0JaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBpbnN0YWxsZGlycy1hbSBcCi0JaW5zdGFsbGRpcnMtcmVjdXJzaXZlIG1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIFwKLQltYWludGFpbmVyLWNsZWFuLXJlY3Vyc2l2ZSBtb3N0bHljbGVhbiBtb3N0bHljbGVhbi1jb21waWxlIFwKLQltb3N0bHljbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWxpYnRvb2wgbW9zdGx5Y2xlYW4tcmVjdXJzaXZlIFwKLQlwZGYgcGRmLWFtIHBkZi1yZWN1cnNpdmUgcHMgcHMtYW0gcHMtcmVjdXJzaXZlIHRhZ3MgXAotCXRhZ3MtcmVjdXJzaXZlIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0gdW5pbnN0YWxsLWluZm8tYW0gXAotCXVuaW5zdGFsbC1pbmZvLXJlY3Vyc2l2ZSB1bmluc3RhbGwtcmVjdXJzaXZlCisuUEhPTlk6ICQoUkVDVVJTSVZFX1RBUkdFVFMpIENUQUdTIEdUQUdTIGFsbCBhbGwtYW0gYW0tLXJlZnJlc2ggY2hlY2sgXAorCWNoZWNrLURFSkFHTlUgY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBjbGVhbi1saWJ0b29sIFwKKwljbGVhbi1ub2luc3RQUk9HUkFNUyBjbGVhbi1yZWN1cnNpdmUgY3RhZ3MgY3RhZ3MtcmVjdXJzaXZlIFwKKwlkaXN0Y2xlYW4gZGlzdGNsZWFuLURFSkFHTlUgZGlzdGNsZWFuLWNvbXBpbGUgXAorCWRpc3RjbGVhbi1nZW5lcmljIGRpc3RjbGVhbi1oZHIgZGlzdGNsZWFuLWxpYnRvb2wgXAorCWRpc3RjbGVhbi1yZWN1cnNpdmUgZGlzdGNsZWFuLXRhZ3MgZHZpIGR2aS1hbSBodG1sIGh0bWwtYW0gXAorCWluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIGluc3RhbGwtZGF0YS1hbSBcCisJaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWV4ZWMtbG9jYWwgaW5zdGFsbC1pbmZvIFwKKwlpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1tYW4gaW5zdGFsbC1zdHJpcCBpbnN0YWxsY2hlY2sgXAorCWluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBpbnN0YWxsZGlycy1hbSBtYWludGFpbmVyLWNsZWFuIFwKKwltYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbWFpbnRhaW5lci1jbGVhbi1yZWN1cnNpdmUgXAorCW1vc3RseWNsZWFuIG1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBcCisJbW9zdGx5Y2xlYW4tbGlidG9vbCBtb3N0bHljbGVhbi1yZWN1cnNpdmUgcGRmIHBkZi1hbSBwcyBwcy1hbSBcCisJdGFncyB0YWdzLXJlY3Vyc2l2ZSB1bmluc3RhbGwgdW5pbnN0YWxsLWFtIHVuaW5zdGFsbC1pbmZvLWFtCiAKIHBvL1BPVEZJTEVTLmluOiBATUFJTlRAIE1ha2VmaWxlCiAJZm9yIGYgaW4gJChQT1RGSUxFUyk7IGRvIGVjaG8gJCRmOyBkb25lIHwgTENfQ09MTEFURT0gc29ydCA+IHRtcCBcCiAJICAmJiBtdiB0bXAgJChzcmNkaXIpL3BvL1BPVEZJTEVTLmluCiAKLSMgV2Ugd2FudCBpbnN0YWxsIHRvIGltcGx5IGluc3RhbGwtaW5mbyBhcyBwZXIgR05VIHN0YW5kYXJkcywgZGVzcGl0ZSB0aGUKLSMgY3lnbnVzIG9wdGlvbi4KLWluc3RhbGw6IGluc3RhbGwtcmVjdXJzaXZlIGluc3RhbGwtaW5mbwotaW5zdGFsbC1pbmZvOiBpbnN0YWxsLWluZm8tcmVjdXJzaXZlCi0KICQoc3JjZGlyKS9tYWtlLWdhcy5jb206IHN0YW1wLW1rLmNvbQogc3RhbXAtbWsuY29tOiB2bXNjb25mLnNoIE1ha2VmaWxlCiAJc2ggJChzcmNkaXIpL3Ztc2NvbmYuc2ggJChHRU5FUklDX09CSlMpID4gbmV3LW1ha2UuY29tCkBAIC0zMTY5LDggKzMxNTAsNiBAQAogCS0gKGNkIHN0YWdlMyA7IHJtIC1mIGFzJChFWEVFWFQpIDsgbXYgLWYgKiAuLikKIAktIHJtZGlyIHN0YWdlMwogCi1NYWtlZmlsZTogJChCRkRESVIpL2NvbmZpZ3VyZS5pbgotCiAjIEF1dG9tYXRpYyBkZXBlbmRlbmN5IGNvbXB1dGF0aW9uLiAgVGhpcyBpcyBhIHJlYWwgcGFpbiwgYmVjYXVzZSB0aGUKICMgZGVwZW5kZW5jaWVzIGNoYW5nZSBiYXNlZCBvbiB0YXJnZXRfY3B1X3R5cGUgYW5kIG9ial9mb3JtYXQuCiAjIEp1c3QgdG8gbWFrZSB0aGluZ3MgZXZlbiBtb3JlIGNvbXBsaWNhdGVkLCBhdXRvbWFrZSBzZXBhcmF0ZXMgdGhlCmRpZmYgLS1naXQgYS9nYXMvYWNsb2NhbC5tNCBiL2dhcy9hY2xvY2FsLm00CmluZGV4IGEwYWE1NzguLjZjM2UwY2QgMTAwNjQ0Ci0tLSBhL2dhcy9hY2xvY2FsLm00CisrKyBiL2dhcy9hY2xvY2FsLm00CkBAIC0xLDYgKzEsNiBAQAotIyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBhY2xvY2FsIDEuNy44IC0qLSBBdXRvY29uZiAtKi0KKyMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYWNsb2NhbCAxLjguMiAtKi0gQXV0b2NvbmYgLSotCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNAogIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKQEAgLTExLDIzMiArMTEsOSBAQAogIyBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBCiAjIFBBUlRJQ1VMQVIgUFVSUE9TRS4KIAotZG5sIEdBU19DSEVDS19ERUNMX05FRURFRChuYW1lLCB0eXBlZGVmbmFtZSwgdHlwZWRlZiwgaGVhZGVycykKLUFDX0RFRlVOKEdBU19DSEVDS19ERUNMX05FRURFRCxbCi1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBkZWNsYXJhdGlvbiBpcyByZXF1aXJlZCBmb3IgJDEpCi1BQ19DQUNIRV9WQUwoZ2FzX2N2X2RlY2xfbmVlZGVkXyQxLAotQUNfVFJZX0xJTksoWyQ0XSwKLVsKLXR5cGVkZWYgJDM7Ci0kMiB4OwoteCA9ICgkMikgJDE7Ci1dLCBnYXNfY3ZfZGVjbF9uZWVkZWRfJDE9bm8sIGdhc19jdl9kZWNsX25lZWRlZF8kMT15ZXMpKWRubAotQUNfTVNHX1JFU1VMVCgkZ2FzX2N2X2RlY2xfbmVlZGVkXyQxKQotaWYgdGVzdCAkZ2FzX2N2X2RlY2xfbmVlZGVkXyQxID0geWVzOyB0aGVuCi0gQUNfREVGSU5FKFtORUVEX0RFQ0xBUkFUSU9OX110cmFuc2xpdCgkMSwgW2Etel0sIFtBLVpdKSwgMSwKLQkgICBbRGVmaW5lIGlmICQxIGlzIG5vdCBkZWNsYXJlZCBpbiBzeXN0ZW0gaGVhZGVyIGZpbGVzLl0pCi1maQotXSlkbmwKLWRubAotZG5sIFNvbWUgbm9uLUFOU0kgcHJlcHJvY2Vzc29ycyBib3RjaCByZXF1b3RpbmcgaW5zaWRlIHN0cmluZ3MuICBUaGF0J3MgYmFkCi1kbmwgZW5vdWdoLCBidXQgb24gc29tZSBvZiB0aG9zZSBzeXN0ZW1zLCB0aGUgYXNzZXJ0IG1hY3JvIHJlbGllcyBvbiByZXF1b3RpbmcKLWRubCB3b3JraW5nIHByb3Blcmx5IQotZG5sIEdBU19XT1JLSU5HX0FTU0VSVAotQUNfREVGVU4oR0FTX1dPUktJTkdfQVNTRVJULAotW0FDX01TR19DSEVDS0lORyhbZm9yIHdvcmtpbmcgYXNzZXJ0IG1hY3JvXSkKLUFDX0NBQ0hFX1ZBTChnYXNfY3ZfYXNzZXJ0X29rLAotQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxzdGRpby5oPl0sIFsKLS8qIGNoZWNrIGZvciByZXF1b3RpbmcgcHJvYmxlbXMgKi8KLXN0YXRpYyBpbnQgYSwgYiwgYywgZDsKLXN0YXRpYyBjaGFyICpzOwotYXNzZXJ0ICghc3RyY21wKHMsICJmb28gYmFyIGJheiBxdXV4IikpOwotLyogY2hlY2sgZm9yIG5ld2xpbmUgaGFuZGxpbmcgKi8KLWFzc2VydCAoYSA9PSBiCi0gICAgICAgIHx8IGMgPT0gZCk7Ci1dLCBnYXNfY3ZfYXNzZXJ0X29rPXllcywgZ2FzX2N2X2Fzc2VydF9vaz1ubykpZG5sCi1BQ19NU0dfUkVTVUxUKCRnYXNfY3ZfYXNzZXJ0X29rKQotdGVzdCAkZ2FzX2N2X2Fzc2VydF9vayA9IHllcyB8fCBBQ19ERUZJTkUoQlJPS0VOX0FTU0VSVCwgMSwgW2Fzc2VydCBicm9rZW4/XSkKLV0pZG5sCi1kbmwKLWRubCBTaW5jZSBtYW55IEJvdXJuZSBzaGVsbCBpbXBsZW1lbnRhdGlvbnMgbGFjayBzdWJyb3V0aW5lcywgdXNlIHRoaXMKLWRubCBoYWNrIHRvIHNpbXBsaWZ5IHRoZSBjb2RlIGluIGNvbmZpZ3VyZS5pbi4KLWRubCBHQVNfVU5JUShsaXN0dmFyKQotQUNfREVGVU4oR0FTX1VOSVEsCi1bX2dhc191bmlxX2xpc3Q9IlskXSQxIgotX2dhc191bmlxX25ld2xpc3Q9IiIKLWRubCBQcm90ZWN0IGFnYWluc3QgZW1wdHkgaW5wdXQgbGlzdC4KLWZvciBfZ2FzX3VuaXFfaSBpbiBfZ2FzX3VuaXFfZHVtbXkgWyRdX2dhc191bmlxX2xpc3QgOyBkbwotICBjYXNlIFskXV9nYXNfdW5pcV9pIGluCi0gIF9nYXNfdW5pcV9kdW1teSkgOzsKLSAgKikgY2FzZSAiIFskXV9nYXNfdW5pcV9uZXdsaXN0ICIgaW4KLSAgICAgICAqIiBbJF1fZ2FzX3VuaXFfaSAiKikgOzsKLSAgICAgICAqKSBfZ2FzX3VuaXFfbmV3bGlzdD0iWyRdX2dhc191bmlxX25ld2xpc3QgWyRdX2dhc191bmlxX2kiIDs7Ci0gICAgIGVzYWMgOzsKLSAgZXNhYwotZG9uZQotJDE9WyRdX2dhc191bmlxX25ld2xpc3QKLV0pZG5sCi0KLXNpbmNsdWRlKC4uL2xpYnRvb2wubTQpCi1kbmwgVGhlIGxpbmVzIGJlbG93IGFycmFuZ2UgZm9yIGFjbG9jYWwgbm90IHRvIGJyaW5nIGxpYnRvb2wubTQKLWRubCBBTV9QUk9HX0xJQlRPT0wgaW50byBhY2xvY2FsLm00LCB3aGlsZSBzdGlsbCBhcnJhbmdpbmcgZm9yIGF1dG9tYWtlCi1kbmwgdG8gYWRkIGEgZGVmaW5pdGlvbiBvZiBMSUJUT09MIHRvIE1ha2VmaWxlLmluLgotaWZlbHNlKHllcyxubyxbCi1BQ19ERUZVTihbQU1fUFJPR19MSUJUT09MXSwpCi1BQ19ERUZVTihbQUNfQ0hFQ0tfTElCTV0sKQotQUNfU1VCU1QoTElCVE9PTCkKLV0pCi0KLXNpbmNsdWRlKC4uL2dldHRleHQubTQpCi1pZmVsc2UoeWVzLG5vLFsKLUFDX0RFRlVOKFtDWV9XSVRIX05MU10sKQotQUNfU1VCU1QoSU5UTExJQlMpCi1dKQotCi0jIGlzYy1wb3NpeC5tNCBzZXJpYWwgMiAoZ2V0dGV4dC0wLjExLjIpCi1kbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi1kbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi1kbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi1kbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLWRubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0KLSMgVGhpcyBmaWxlIGlzIG5vdCBuZWVkZWQgd2l0aCBhdXRvY29uZi0yLjUzIGFuZCBuZXdlci4gIFJlbW92ZSBpdCBpbiAyMDA1LgotCi0jIFRoaXMgdGVzdCByZXBsYWNlcyB0aGUgb25lIGluIGF1dG9jb25mLgotIyBDdXJyZW50bHkgdGhpcyBtYWNybyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZSBhdXRvY29uZiBtYWNybwotIyBiZWNhdXNlIGdldHRleHQncyBnZXR0ZXh0Lm00IChkaXN0cmlidXRlZCBpbiB0aGUgYXV0b21ha2UgcGFja2FnZSkKLSMgc3RpbGwgdXNlcyBpdC4gIE90aGVyd2lzZSwgdGhlIHVzZSBpbiBnZXR0ZXh0Lm00IG1ha2VzIGF1dG9oZWFkZXIKLSMgZ2l2ZSB0aGVzZSBkaWFnbm9zdGljczoKLSMgICBjb25maWd1cmUuaW46NTU2OiBBQ19UUllfQ09NUElMRSB3YXMgY2FsbGVkIGJlZm9yZSBBQ19JU0NfUE9TSVgKLSMgICBjb25maWd1cmUuaW46NTU2OiBBQ19UUllfUlVOIHdhcyBjYWxsZWQgYmVmb3JlIEFDX0lTQ19QT1NJWAotCi11bmRlZmluZShbQUNfSVNDX1BPU0lYXSkKLQotQUNfREVGVU4oW0FDX0lTQ19QT1NJWF0sCi0gIFsKLSAgICBkbmwgVGhpcyB0ZXN0IHJlcGxhY2VzIHRoZSBvYnNvbGVzY2VudCBBQ19JU0NfUE9TSVgga2x1ZGdlLgotICAgIEFDX0NIRUNLX0xJQihjcG9zaXgsIHN0cmVycm9yLCBbTElCUz0iJExJQlMgLWxjcG9zaXgiXSkKLSAgXQotKQotCi0jIERvIGFsbCB0aGUgd29yayBmb3IgQXV0b21ha2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KLQotIyBUaGlzIG1hY3JvIGFjdHVhbGx5IGRvZXMgdG9vIG11Y2ggc29tZSBjaGVja3MgYXJlIG9ubHkgbmVlZGVkIGlmCi0jIHlvdXIgcGFja2FnZSBkb2VzIGNlcnRhaW4gdGhpbmdzLiAgQnV0IHRoaXMgaXNuJ3QgcmVhbGx5IGEgYmlnIGRlYWwuCi0KLSMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzCi0jIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSMgYW55IGxhdGVyIHZlcnNpb24uCi0KLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSMgMDIxMTEtMTMwNywgVVNBLgotCi0jIHNlcmlhbCAxMAotCi1BQ19QUkVSRVEoWzIuNTRdKQotCi0jIEF1dG9jb25mIDIuNTAgd2FudHMgdG8gZGlzYWxsb3cgQU1fIG5hbWVzLiAgV2UgZXhwbGljaXRseSBhbGxvdwotIyB0aGUgb25lcyB3ZSBjYXJlIGFib3V0LgotbTRfcGF0dGVybl9hbGxvdyhbXkFNX1tBLVpdK0ZMQUdTJF0pZG5sCi0KLSMgQU1fSU5JVF9BVVRPTUFLRShQQUNLQUdFLCBWRVJTSU9OLCBbTk8tREVGSU5FXSkKLSMgQU1fSU5JVF9BVVRPTUFLRShbT1BUSU9OU10pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFRoZSBjYWxsIHdpdGggUEFDS0FHRSBhbmQgVkVSU0lPTiBhcmd1bWVudHMgaXMgdGhlIG9sZCBzdHlsZQotIyBjYWxsIChwcmUgYXV0b2NvbmYtMi41MCksIHdoaWNoIGlzIGJlaW5nIHBoYXNlZCBvdXQuICBQQUNLQUdFCi0jIGFuZCBWRVJTSU9OIHNob3VsZCBub3cgYmUgcGFzc2VkIHRvIEFDX0lOSVQgYW5kIHJlbW92ZWQgZnJvbQotIyB0aGUgY2FsbCB0byBBTV9JTklUX0FVVE9NQUtFLgotIyBXZSBzdXBwb3J0IGJvdGggY2FsbCBzdHlsZXMgZm9yIHRoZSB0cmFuc2l0aW9uLiAgQWZ0ZXIKLSMgdGhlIG5leHQgQXV0b21ha2UgcmVsZWFzZSwgQXV0b2NvbmYgY2FuIG1ha2UgdGhlIEFDX0lOSVQKLSMgYXJndW1lbnRzIG1hbmRhdG9yeSwgYW5kIHRoZW4gd2UgY2FuIGRlcGVuZCBvbiBhIG5ldyBBdXRvY29uZgotIyByZWxlYXNlIGFuZCBkcm9wIHRoZSBvbGQgY2FsbCBzdXBwb3J0LgotQUNfREVGVU4oW0FNX0lOSVRfQVVUT01BS0VdLAotW0FDX1JFUVVJUkUoW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT05dKWRubAotIEFDX1JFUVVJUkUoW0FDX1BST0dfSU5TVEFMTF0pZG5sCi0jIHRlc3QgdG8gc2VlIGlmIHNyY2RpciBhbHJlYWR5IGNvbmZpZ3VyZWQKLWlmIHRlc3QgImBjZCAkc3JjZGlyICYmIHB3ZGAiICE9ICJgcHdkYCIgJiYKLSAgIHRlc3QgLWYgJHNyY2Rpci9jb25maWcuc3RhdHVzOyB0aGVuCi0gIEFDX01TR19FUlJPUihbc291cmNlIGRpcmVjdG9yeSBhbHJlYWR5IGNvbmZpZ3VyZWQ7IHJ1biAibWFrZSBkaXN0Y2xlYW4iIHRoZXJlIGZpcnN0XSkKLWZpCi0KLSMgdGVzdCB3aGV0aGVyIHdlIGhhdmUgY3lncGF0aAotaWYgdGVzdCAteiAiJENZR1BBVEhfVyI7IHRoZW4KLSAgaWYgKGN5Z3BhdGggLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCi0gICAgQ1lHUEFUSF9XPSdjeWdwYXRoIC13JwotICBlbHNlCi0gICAgQ1lHUEFUSF9XPWVjaG8KLSAgZmkKLWZpCi1BQ19TVUJTVChbQ1lHUEFUSF9XXSkKLQotIyBEZWZpbmUgdGhlIGlkZW50aXR5IG9mIHRoZSBwYWNrYWdlLgotZG5sIERpc3Rpbmd1aXNoIGJldHdlZW4gb2xkLXN0eWxlIGFuZCBuZXctc3R5bGUgY2FsbHMuCi1tNF9pZnZhbChbJDJdLAotW200X2lmdmFsKFskM10sIFtfQU1fU0VUX09QVElPTihbbm8tZGVmaW5lXSldKWRubAotIEFDX1NVQlNUKFtQQUNLQUdFXSwgWyQxXSlkbmwKLSBBQ19TVUJTVChbVkVSU0lPTl0sIFskMl0pXSwKLVtfQU1fU0VUX09QVElPTlMoWyQxXSlkbmwKLSBBQ19TVUJTVChbUEFDS0FHRV0sIFsnQUNfUEFDS0FHRV9UQVJOQU1FJ10pZG5sCi0gQUNfU1VCU1QoW1ZFUlNJT05dLCBbJ0FDX1BBQ0tBR0VfVkVSU0lPTiddKV0pZG5sCi0KLV9BTV9JRl9PUFRJT04oW25vLWRlZmluZV0sLAotW0FDX0RFRklORV9VTlFVT1RFRChQQUNLQUdFLCAiJFBBQ0tBR0UiLCBbTmFtZSBvZiBwYWNrYWdlXSkKLSBBQ19ERUZJTkVfVU5RVU9URUQoVkVSU0lPTiwgIiRWRVJTSU9OIiwgW1ZlcnNpb24gbnVtYmVyIG9mIHBhY2thZ2VdKV0pZG5sCi0KLSMgU29tZSB0b29scyBBdXRvbWFrZSBuZWVkcy4KLUFDX1JFUVVJUkUoW0FNX1NBTklUWV9DSEVDS10pZG5sCi1BQ19SRVFVSVJFKFtBQ19BUkdfUFJPR1JBTV0pZG5sCi1BTV9NSVNTSU5HX1BST0coQUNMT0NBTCwgYWNsb2NhbC0ke2FtX19hcGlfdmVyc2lvbn0pCi1BTV9NSVNTSU5HX1BST0coQVVUT0NPTkYsIGF1dG9jb25mKQotQU1fTUlTU0lOR19QUk9HKEFVVE9NQUtFLCBhdXRvbWFrZS0ke2FtX19hcGlfdmVyc2lvbn0pCi1BTV9NSVNTSU5HX1BST0coQVVUT0hFQURFUiwgYXV0b2hlYWRlcikKLUFNX01JU1NJTkdfUFJPRyhNQUtFSU5GTywgbWFrZWluZm8pCi1BTV9NSVNTSU5HX1BST0coQU1UQVIsIHRhcikKLUFNX1BST0dfSU5TVEFMTF9TSAotQU1fUFJPR19JTlNUQUxMX1NUUklQCi0jIFdlIG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlzIGJhZCBvbgotIyBzb21lIHBsYXRmb3Jtcy4KLUFDX1JFUVVJUkUoW0FDX1BST0dfQVdLXSlkbmwKLUFDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKWRubAotQUNfUkVRVUlSRShbQU1fU0VUX0xFQURJTkdfRE9UXSlkbmwKLQotX0FNX0lGX09QVElPTihbbm8tZGVwZW5kZW5jaWVzXSwsCi1bQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfQ0NdLAotICAgICAgICAgICAgICAgICAgW19BTV9ERVBFTkRFTkNJRVMoQ0MpXSwKLSAgICAgICAgICAgICAgICAgIFtkZWZpbmUoW0FDX1BST0dfQ0NdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZuKFtBQ19QUk9HX0NDXSlbX0FNX0RFUEVOREVOQ0lFUyhDQyldKV0pZG5sCi1BQ19QUk9WSURFX0lGRUxTRShbQUNfUFJPR19DWFhdLAotICAgICAgICAgICAgICAgICAgW19BTV9ERVBFTkRFTkNJRVMoQ1hYKV0sCi0gICAgICAgICAgICAgICAgICBbZGVmaW5lKFtBQ19QUk9HX0NYWF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRlZm4oW0FDX1BST0dfQ1hYXSlbX0FNX0RFUEVOREVOQ0lFUyhDWFgpXSldKWRubAotXSkKLV0pCi0KLQotIyBXaGVuIGNvbmZpZy5zdGF0dXMgZ2VuZXJhdGVzIGEgaGVhZGVyLCB3ZSBtdXN0IHVwZGF0ZSB0aGUgc3RhbXAtaCBmaWxlLgotIyBUaGlzIGZpbGUgcmVzaWRlcyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGNvbmZpZyBoZWFkZXIKLSMgdGhhdCBpcyBnZW5lcmF0ZWQuICBUaGUgc3RhbXAgZmlsZXMgYXJlIG51bWJlcmVkIHRvIGhhdmUgZGlmZmVyZW50IG5hbWVzLgotCi0jIEF1dG9jb25mIGNhbGxzIF9BQ19BTV9DT05GSUdfSEVBREVSX0hPT0sgKHdoZW4gZGVmaW5lZCkgaW4gdGhlCi0jIGxvb3Agd2hlcmUgY29uZmlnLnN0YXR1cyBjcmVhdGVzIHRoZSBoZWFkZXJzLCBzbyB3ZSBjYW4gZ2VuZXJhdGUKLSMgb3VyIHN0YW1wIGZpbGVzIHRoZXJlLgotQUNfREVGVU4oW19BQ19BTV9DT05GSUdfSEVBREVSX0hPT0tdLAotWyMgQ29tcHV0ZSAkMSdzIGluZGV4IGluICRjb25maWdfaGVhZGVycy4KLV9hbV9zdGFtcF9jb3VudD0xCi1mb3IgX2FtX2hlYWRlciBpbiAkY29uZmlnX2hlYWRlcnMgOjsgZG8KLSAgY2FzZSAkX2FtX2hlYWRlciBpbgotICAgICQxIHwgJDE6KiApCi0gICAgICBicmVhayA7OwotICAgICogKQotICAgICAgX2FtX3N0YW1wX2NvdW50PWBleHByICRfYW1fc3RhbXBfY291bnQgKyAxYCA7OwotICBlc2FjCi1kb25lCi1lY2hvICJ0aW1lc3RhbXAgZm9yICQxIiA+YEFTX0RJUk5BTUUoWyQxXSlgL3N0YW1wLWhbXSRfYW1fc3RhbXBfY291bnRdKQotCi0jIENvcHlyaWdodCAyMDAyICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKyMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgR2VuZXJhdGVkIGZyb20gYW12ZXJzaW9uLmluOyBkbyBub3QgZWRpdCBieSBoYW5kLgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0yNTYsMTcyICszMywxOCBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEF1dG9tYWtlIFguWSB0cmFjZXMgdGhpcyBtYWNybyB0byBlbnN1cmUgYWNsb2NhbC5tNCBoYXMgYmVlbgogIyBnZW5lcmF0ZWQgZnJvbSB0aGUgbTQgZmlsZXMgYWNjb21wYW55aW5nIEF1dG9tYWtlIFguWS4KLUFDX0RFRlVOKFtBTV9BVVRPTUFLRV9WRVJTSU9OXSxbYW1fX2FwaV92ZXJzaW9uPSIxLjciXSkKK0FDX0RFRlVOKFtBTV9BVVRPTUFLRV9WRVJTSU9OXSwgW2FtX19hcGlfdmVyc2lvbj0iMS44Il0pCiAKICMgQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTgogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIENhbGwgQU1fQVVUT01BS0VfVkVSU0lPTiBzbyBpdCBjYW4gYmUgdHJhY2VkLgogIyBUaGlzIGZ1bmN0aW9uIGlzIEFDX1JFUVVJUkVkIGJ5IEFDX0lOSVRfQVVUT01BS0UuCiBBQ19ERUZVTihbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0sCi0JIFtBTV9BVVRPTUFLRV9WRVJTSU9OKFsxLjcuOF0pXSkKLQotIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBvcHRpb24gaGFuZGxpbmcuICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCi0KLSMgQ29weXJpZ2h0IDIwMDEsIDIwMDIgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSMgYW55IGxhdGVyIHZlcnNpb24uCi0KLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSMgMDIxMTEtMTMwNywgVVNBLgotCi0jIHNlcmlhbCAyCi0KLSMgX0FNX01BTkdMRV9PUFRJT04oTkFNRSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtfQU1fTUFOR0xFX09QVElPTl0sCi1bW19BTV9PUFRJT05fXW00X2JwYXRzdWJzdCgkMSwgW1teYS16QS1aMC05X11dLCBbX10pXSkKLQotIyBfQU1fU0VUX09QVElPTihOQU1FKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgU2V0IG9wdGlvbiBOQU1FLiAgUHJlc2VudGx5IHRoYXQgb25seSBtZWFucyBkZWZpbmluZyBhIGZsYWcgZm9yIHRoaXMgb3B0aW9uLgotQUNfREVGVU4oW19BTV9TRVRfT1BUSU9OXSwKLVttNF9kZWZpbmUoX0FNX01BTkdMRV9PUFRJT04oWyQxXSksIDEpXSkKLQotIyBfQU1fU0VUX09QVElPTlMoT1BUSU9OUykKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBPUFRJT05TIGlzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgQXV0b21ha2Ugb3B0aW9ucy4KLUFDX0RFRlVOKFtfQU1fU0VUX09QVElPTlNdLAotW0FDX0ZPUkVBQ0goW19BTV9PcHRpb25dLCBbJDFdLCBbX0FNX1NFVF9PUFRJT04oX0FNX09wdGlvbildKV0pCi0KLSMgX0FNX0lGX09QVElPTihPUFRJT04sIElGLVNFVCwgW0lGLU5PVC1TRVRdKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEV4ZWN1dGUgSUYtU0VUIGlmIE9QVElPTiBpcyBzZXQsIElGLU5PVC1TRVQgb3RoZXJ3aXNlLgotQUNfREVGVU4oW19BTV9JRl9PUFRJT05dLAotW200X2lmc2V0KF9BTV9NQU5HTEVfT1BUSU9OKFskMV0pLCBbJDJdLCBbJDNdKV0pCi0KLSMKLSMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmUuCi0jCi0KLSMgQ29weXJpZ2h0IDE5OTYsIDE5OTcsIDIwMDAsIDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0KLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotIyAwMjExMS0xMzA3LCBVU0EuCi0KLSMgc2VyaWFsIDMKLQotIyBBTV9TQU5JVFlfQ0hFQ0sKLSMgLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQU1fU0FOSVRZX0NIRUNLXSwKLVtBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2FuZV0pCi0jIEp1c3QgaW4gY2FzZQotc2xlZXAgMQotZWNobyB0aW1lc3RhbXAgPiBjb25mdGVzdC5maWxlCi0jIERvIGBzZXQnIGluIGEgc3Vic2hlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB0aGUgY3VycmVudCBzaGVsbCdzCi0jIGFyZ3VtZW50cy4gIE11c3QgdHJ5IC1MIGZpcnN0IGluIGNhc2UgY29uZmlndXJlIGlzIGFjdHVhbGx5IGEKLSMgc3ltbGluazsgc29tZSBzeXN0ZW1zIHBsYXkgd2VpcmQgZ2FtZXMgd2l0aCB0aGUgbW9kIHRpbWUgb2Ygc3ltbGlua3MKLSMgKGVnIEZyZWVCU0QgcmV0dXJucyB0aGUgbW9kIHRpbWUgb2YgdGhlIHN5bWxpbmsncyBjb250YWluaW5nCi0jIGRpcmVjdG9yeSkuCi1pZiAoCi0gICBzZXQgWCBgbHMgLUx0ICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGUgMj4gL2Rldi9udWxsYAotICAgaWYgdGVzdCAiJFsqXSIgPSAiWCI7IHRoZW4KLSAgICAgICMgLUwgZGlkbid0IHdvcmsuCi0gICAgICBzZXQgWCBgbHMgLXQgJHNyY2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmlsZWAKLSAgIGZpCi0gICBybSAtZiBjb25mdGVzdC5maWxlCi0gICBpZiB0ZXN0ICIkWypdIiAhPSAiWCAkc3JjZGlyL2NvbmZpZ3VyZSBjb25mdGVzdC5maWxlIiBcCi0gICAgICAmJiB0ZXN0ICIkWypdIiAhPSAiWCBjb25mdGVzdC5maWxlICRzcmNkaXIvY29uZmlndXJlIjsgdGhlbgotCi0gICAgICAjIElmIG5laXRoZXIgbWF0Y2hlZCwgdGhlbiB3ZSBoYXZlIGEgYnJva2VuIGxzLiAgVGhpcyBjYW4gaGFwcGVuCi0gICAgICAjIGlmLCBmb3IgaW5zdGFuY2UsIENPTkZJR19TSEVMTCBpcyBiYXNoIGFuZCBpdCBpbmhlcml0cyBhCi0gICAgICAjIGJyb2tlbiBscyBhbGlhcyBmcm9tIHRoZSBlbnZpcm9ubWVudC4gIFRoaXMgaGFzIGFjdHVhbGx5Ci0gICAgICAjIGhhcHBlbmVkLiAgU3VjaCBhIHN5c3RlbSBjb3VsZCBub3QgYmUgY29uc2lkZXJlZCAic2FuZSIuCi0gICAgICBBQ19NU0dfRVJST1IoW2xzIC10IGFwcGVhcnMgdG8gZmFpbC4gIE1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYSBicm9rZW4KLWFsaWFzIGluIHlvdXIgZW52aXJvbm1lbnRdKQotICAgZmkKLQotICAgdGVzdCAiJFsyXSIgPSBjb25mdGVzdC5maWxlCi0gICApCi10aGVuCi0gICAjIE9rLgotICAgOgotZWxzZQotICAgQUNfTVNHX0VSUk9SKFtuZXdseSBjcmVhdGVkIGZpbGUgaXMgb2xkZXIgdGhhbiBkaXN0cmlidXRlZCBmaWxlcyEKLUNoZWNrIHlvdXIgc3lzdGVtIGNsb2NrXSkKLWZpCi1BQ19NU0dfUkVTVUxUKHllcyldKQotCi0jICAtKi0gQXV0b2NvbmYgLSotCi0KLQotIyBDb3B5cmlnaHQgMTk5NywgMTk5OSwgMjAwMCwgMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLQotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0jIGFueSBsYXRlciB2ZXJzaW9uLgotCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0jIDAyMTExLTEzMDcsIFVTQS4KLQotIyBzZXJpYWwgMwotCi0jIEFNX01JU1NJTkdfUFJPRyhOQU1FLCBQUk9HUkFNKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtBTV9NSVNTSU5HX1BST0ddLAotW0FDX1JFUVVJUkUoW0FNX01JU1NJTkdfSEFTX1JVTl0pCi0kMT0keyQxLSIke2FtX21pc3NpbmdfcnVufSQyIn0KLUFDX1NVQlNUKCQxKV0pCi0KLQotIyBBTV9NSVNTSU5HX0hBU19SVU4KLSMgLS0tLS0tLS0tLS0tLS0tLS0tCi0jIERlZmluZSBNSVNTSU5HIGlmIG5vdCBkZWZpbmVkIHNvIGZhciBhbmQgdGVzdCBpZiBpdCBzdXBwb3J0cyAtLXJ1bi4KLSMgSWYgaXQgZG9lcywgc2V0IGFtX21pc3NpbmdfcnVuIHRvIHVzZSBpdCwgb3RoZXJ3aXNlLCB0byBub3RoaW5nLgotQUNfREVGVU4oW0FNX01JU1NJTkdfSEFTX1JVTl0sCi1bQUNfUkVRVUlSRShbQU1fQVVYX0RJUl9FWFBBTkRdKWRubAotdGVzdCB4IiR7TUlTU0lORytzZXR9IiA9IHhzZXQgfHwgTUlTU0lORz0iXCR7U0hFTEx9ICRhbV9hdXhfZGlyL21pc3NpbmciCi0jIFVzZSBldmFsIHRvIGV4cGFuZCAkU0hFTEwKLWlmIGV2YWwgIiRNSVNTSU5HIC0tcnVuIHRydWUiOyB0aGVuCi0gIGFtX21pc3NpbmdfcnVuPSIkTUlTU0lORyAtLXJ1biAiCi1lbHNlCi0gIGFtX21pc3NpbmdfcnVuPQotICBBQ19NU0dfV0FSTihbYG1pc3NpbmcnIHNjcmlwdCBpcyB0b28gb2xkIG9yIG1pc3NpbmddKQotZmkKLV0pCisJIFtBTV9BVVRPTUFLRV9WRVJTSU9OKFsxLjguMl0pXSkKIAogIyBBTV9BVVhfRElSX0VYUEFORAogCi0jIENvcHlyaWdodCAyMDAxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTQ3NiwxOSArOTksMTYgQEAKICMgYWJzb2x1dGUgUEFUSC4gIFRoZSBkcmF3YmFjayBpcyB0aGF0IHVzaW5nIGFic29sdXRlIHBhdGhzIHByZXZlbnQgYQogIyBjb25maWd1cmVkIHRyZWUgdG8gYmUgbW92ZWQgd2l0aG91dCByZWNvbmZpZ3VyYXRpb24uCiAKLSMgUmVseSBvbiBhdXRvY29uZiB0byBzZXQgdXAgQ0RQQVRIIHByb3Blcmx5LgotQUNfUFJFUkVRKFsyLjUwXSkKLQotQUNfREVGVU4oW0FNX0FVWF9ESVJfRVhQQU5EXSwgWworQUNfREVGVU4oW0FNX0FVWF9ESVJfRVhQQU5EXSwKK1tkbmwgUmVseSBvbiBhdXRvY29uZiB0byBzZXQgdXAgQ0RQQVRIIHByb3Blcmx5LgorQUNfUFJFUkVRKFsyLjUwXSlkbmwKICMgZXhwYW5kICRhY19hdXhfZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKIGFtX2F1eF9kaXI9YGNkICRhY19hdXhfZGlyICYmIHB3ZGAKIF0pCiAKLSMgQU1fUFJPR19JTlNUQUxMX1NICi0jIC0tLS0tLS0tLS0tLS0tLS0tLQotIyBEZWZpbmUgJGluc3RhbGxfc2guCisjIEFNX0NPTkRJVElPTkFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KIAotIyBDb3B5cmlnaHQgMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk3LCAyMDAwLCAyMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC01MDUsODYgKzEyNSwzNCBAQAogIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKICMgMDIxMTEtMTMwNywgVVNBLgogCi1BQ19ERUZVTihbQU1fUFJPR19JTlNUQUxMX1NIXSwKLVtBQ19SRVFVSVJFKFtBTV9BVVhfRElSX0VYUEFORF0pZG5sCi1pbnN0YWxsX3NoPSR7aW5zdGFsbF9zaC0iJGFtX2F1eF9kaXIvaW5zdGFsbC1zaCJ9Ci1BQ19TVUJTVChpbnN0YWxsX3NoKV0pCisjIHNlcmlhbCA2CiAKLSMgQU1fUFJPR19JTlNUQUxMX1NUUklQCi0KLSMgQ29weXJpZ2h0IDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0KLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotIyAwMjExMS0xMzA3LCBVU0EuCi0KLSMgT25lIGlzc3VlIHdpdGggdmVuZG9yIGBpbnN0YWxsJyAoZXZlbiBHTlUpIGlzIHRoYXQgeW91IGNhbid0Ci0jIHNwZWNpZnkgdGhlIHByb2dyYW0gdXNlZCB0byBzdHJpcCBiaW5hcmllcy4gIFRoaXMgaXMgZXNwZWNpYWxseQotIyBhbm5veWluZyBpbiBjcm9zcy1jb21waWxpbmcgZW52aXJvbm1lbnRzLCB3aGVyZSB0aGUgYnVpbGQncyBzdHJpcAotIyBpcyB1bmxpa2VseSB0byBoYW5kbGUgdGhlIGhvc3QncyBiaW5hcmllcy4KLSMgRm9ydHVuYXRlbHkgaW5zdGFsbC1zaCB3aWxsIGhvbm9yIGEgU1RSSVBQUk9HIHZhcmlhYmxlLCBzbyB3ZQotIyBhbHdheXMgdXNlIGluc3RhbGwtc2ggaW4gYG1ha2UgaW5zdGFsbC1zdHJpcCcsIGFuZCBpbml0aWFsaXplCi0jIFNUUklQUFJPRyB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgU1RSSVAgdmFyaWFibGUgKHNldCBieSB0aGUgdXNlcikuCi1BQ19ERUZVTihbQU1fUFJPR19JTlNUQUxMX1NUUklQXSwKLVtBQ19SRVFVSVJFKFtBTV9QUk9HX0lOU1RBTExfU0hdKWRubAotIyBJbnN0YWxsZWQgYmluYXJpZXMgYXJlIHVzdWFsbHkgc3RyaXBwZWQgdXNpbmcgYHN0cmlwJyB3aGVuIHRoZSB1c2VyCi0jIHJ1biBgbWFrZSBpbnN0YWxsLXN0cmlwJy4gIEhvd2V2ZXIgYHN0cmlwJyBtaWdodCBub3QgYmUgdGhlIHJpZ2h0Ci0jIHRvb2wgdG8gdXNlIGluIGNyb3NzLWNvbXBpbGF0aW9uIGVudmlyb25tZW50cywgdGhlcmVmb3JlIEF1dG9tYWtlCi0jIHdpbGwgaG9ub3IgdGhlIGBTVFJJUCcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gb3ZlcnJ1bGUgdGhpcyBwcm9ncmFtLgotZG5sIERvbid0IHRlc3QgZm9yICRjcm9zc19jb21waWxpbmcgPSB5ZXMsIGJlY2F1c2UgaXQgbWlnaHQgYmUgYG1heWJlJy4KLWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciICE9IG5vOyB0aGVuCi0gIEFDX0NIRUNLX1RPT0woW1NUUklQXSwgW3N0cmlwXSwgOikKLWZpCi1JTlNUQUxMX1NUUklQX1BST0dSQU09Ilwke1NIRUxMfSBcJChpbnN0YWxsX3NoKSAtYyAtcyIKLUFDX1NVQlNUKFtJTlNUQUxMX1NUUklQX1BST0dSQU1dKV0pCi0KLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQotIyBDb3B5cmlnaHQgKEMpIDIwMDMgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSMgYW55IGxhdGVyIHZlcnNpb24uCi0KLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSMgMDIxMTEtMTMwNywgVVNBLgotCi0jIHNlcmlhbCAxCi0KLSMgQ2hlY2sgd2hldGhlciB0aGUgdW5kZXJseWluZyBmaWxlLXN5c3RlbSBzdXBwb3J0cyBmaWxlbmFtZXMKLSMgd2l0aCBhIGxlYWRpbmcgZG90LiAgRm9yIGluc3RhbmNlIE1TLURPUyBkb2Vzbid0LgotQUNfREVGVU4oW0FNX1NFVF9MRUFESU5HX0RPVF0sCi1bcm0gLXJmIC50c3QgMj4vZGV2L251bGwKLW1rZGlyIC50c3QgMj4vZGV2L251bGwKLWlmIHRlc3QgLWQgLnRzdDsgdGhlbgotICBhbV9fbGVhZGluZ19kb3Q9LgorIyBBTV9DT05ESVRJT05BTChOQU1FLCBTSEVMTC1DT05ESVRJT04pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVmaW5lIGEgY29uZGl0aW9uYWwuCitBQ19ERUZVTihbQU1fQ09ORElUSU9OQUxdLAorW0FDX1BSRVJFUSgyLjUyKWRubAorIGlmZWxzZShbJDFdLCBbVFJVRV0sICBbQUNfRkFUQUwoWyQwOiBpbnZhbGlkIGNvbmRpdGlvbjogJDFdKV0sCisJWyQxXSwgW0ZBTFNFXSwgW0FDX0ZBVEFMKFskMDogaW52YWxpZCBjb25kaXRpb246ICQxXSldKWRubAorQUNfU1VCU1QoWyQxX1RSVUVdKQorQUNfU1VCU1QoWyQxX0ZBTFNFXSkKK2lmICQyOyB0aGVuCisgICQxX1RSVUU9CisgICQxX0ZBTFNFPScjJwogZWxzZQotICBhbV9fbGVhZGluZ19kb3Q9XworICAkMV9UUlVFPScjJworICAkMV9GQUxTRT0KIGZpCi1ybWRpciAudHN0IDI+L2Rldi9udWxsCi1BQ19TVUJTVChbYW1fX2xlYWRpbmdfZG90XSldKQorQUNfQ09ORklHX0NPTU1BTkRTX1BSRSgKK1tpZiB0ZXN0IC16ICIkeyQxX1RSVUV9IiAmJiB0ZXN0IC16ICIkeyQxX0ZBTFNFfSI7IHRoZW4KKyAgQUNfTVNHX0VSUk9SKFtjb25kaXRpb25hbCAiJDEiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuXSkKK2ZpXSldKQogCi0jIHNlcmlhbCA1CQkJCQkJLSotIEF1dG9jb25mIC0qLQorIyBzZXJpYWwgNgkJCQkJCS0qLSBBdXRvY29uZiAtKi0KIAotIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTczMiw4ICszMDAsOCBAQAogIyAtLS0tLS0tLS0tLS0KIEFDX0RFRlVOKFtBTV9ERVBfVFJBQ0tdLAogW0FDX0FSR19FTkFCTEUoZGVwZW5kZW5jeS10cmFja2luZywKLVsgIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFNwZWVkcyB1cCBvbmUtdGltZSBidWlsZHMKLSAgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyAgRG8gbm90IHJlamVjdCBzbG93IGRlcGVuZGVuY3kgZXh0cmFjdG9yc10pCitbICAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyAgc3BlZWRzIHVwIG9uZS10aW1lIGJ1aWxkCisgIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgICBkbyBub3QgcmVqZWN0IHNsb3cgZGVwZW5kZW5jeSBleHRyYWN0b3JzXSkKIGlmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubzsgdGhlbgogICBhbV9kZXBjb21wPSIkYWNfYXV4X2Rpci9kZXBjb21wIgogICBBTURFUEJBQ0tTTEFTSD0nXCcKQEAgLTc0NCw3ICszMTIsNyBAQAogCiAjIEdlbmVyYXRlIGNvZGUgdG8gc2V0IHVwIGRlcGVuZGVuY3kgdHJhY2tpbmcuICAgLSotIEF1dG9jb25mIC0qLQogCi0jIENvcHlyaWdodCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTgyNiw2ICszOTQsMjg2IEBACiAgICAgIFtBTURFUF9UUlVFPSIkQU1ERVBfVFJVRSIgYWNfYXV4X2Rpcj0iJGFjX2F1eF9kaXIiXSkKIF0pCiAKKyMgTGlrZSBBQ19DT05GSUdfSEVBREVSLCBidXQgYXV0b21hdGljYWxseSBjcmVhdGUgc3RhbXAgZmlsZS4gLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMjAwMCwgMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisjIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BCisjIDAyMTExLTEzMDcsIFVTQS4KKworIyBzZXJpYWwgNworCisjIEFNX0NPTkZJR19IRUFERVIgaXMgb2Jzb2xldGUuICBJdCBoYXMgYmVlbiByZXBsYWNlZCBieSBBQ19DT05GSUdfSEVBREVSUy4KK0FVX0RFRlVOKFtBTV9DT05GSUdfSEVBREVSXSwgW0FDX0NPTkZJR19IRUFERVJTKCRAKV0pCisKKyMgRG8gYWxsIHRoZSB3b3JrIGZvciBBdXRvbWFrZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorCisjIFRoaXMgbWFjcm8gYWN0dWFsbHkgZG9lcyB0b28gbXVjaCBzb21lIGNoZWNrcyBhcmUgb25seSBuZWVkZWQgaWYKKyMgeW91ciBwYWNrYWdlIGRvZXMgY2VydGFpbiB0aGluZ3MuICBCdXQgdGhpcyBpc24ndCByZWFsbHkgYSBiaWcgZGVhbC4KKworIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorIyAwMjExMS0xMzA3LCBVU0EuCisKKyMgc2VyaWFsIDExCisKKyMgQU1fSU5JVF9BVVRPTUFLRShQQUNLQUdFLCBWRVJTSU9OLCBbTk8tREVGSU5FXSkKKyMgQU1fSU5JVF9BVVRPTUFLRShbT1BUSU9OU10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRoZSBjYWxsIHdpdGggUEFDS0FHRSBhbmQgVkVSU0lPTiBhcmd1bWVudHMgaXMgdGhlIG9sZCBzdHlsZQorIyBjYWxsIChwcmUgYXV0b2NvbmYtMi41MCksIHdoaWNoIGlzIGJlaW5nIHBoYXNlZCBvdXQuICBQQUNLQUdFCisjIGFuZCBWRVJTSU9OIHNob3VsZCBub3cgYmUgcGFzc2VkIHRvIEFDX0lOSVQgYW5kIHJlbW92ZWQgZnJvbQorIyB0aGUgY2FsbCB0byBBTV9JTklUX0FVVE9NQUtFLgorIyBXZSBzdXBwb3J0IGJvdGggY2FsbCBzdHlsZXMgZm9yIHRoZSB0cmFuc2l0aW9uLiAgQWZ0ZXIKKyMgdGhlIG5leHQgQXV0b21ha2UgcmVsZWFzZSwgQXV0b2NvbmYgY2FuIG1ha2UgdGhlIEFDX0lOSVQKKyMgYXJndW1lbnRzIG1hbmRhdG9yeSwgYW5kIHRoZW4gd2UgY2FuIGRlcGVuZCBvbiBhIG5ldyBBdXRvY29uZgorIyByZWxlYXNlIGFuZCBkcm9wIHRoZSBvbGQgY2FsbCBzdXBwb3J0LgorQUNfREVGVU4oW0FNX0lOSVRfQVVUT01BS0VdLAorW0FDX1BSRVJFUShbMi41OF0pZG5sCitkbmwgQXV0b2NvbmYgd2FudHMgdG8gZGlzYWxsb3cgQU1fIG5hbWVzLiAgV2UgZXhwbGljaXRseSBhbGxvdworZG5sIHRoZSBvbmVzIHdlIGNhcmUgYWJvdXQuCittNF9wYXR0ZXJuX2FsbG93KFteQU1fW0EtWl0rRkxBR1MkXSlkbmwKK0FDX1JFUVVJUkUoW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT05dKWRubAorQUNfUkVRVUlSRShbQUNfUFJPR19JTlNUQUxMXSlkbmwKKyMgdGVzdCB0byBzZWUgaWYgc3JjZGlyIGFscmVhZHkgY29uZmlndXJlZAoraWYgdGVzdCAiYGNkICRzcmNkaXIgJiYgcHdkYCIgIT0gImBwd2RgIiAmJgorICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZpZy5zdGF0dXM7IHRoZW4KKyAgQUNfTVNHX0VSUk9SKFtzb3VyY2UgZGlyZWN0b3J5IGFscmVhZHkgY29uZmlndXJlZDsgcnVuICJtYWtlIGRpc3RjbGVhbiIgdGhlcmUgZmlyc3RdKQorZmkKKworIyB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBjeWdwYXRoCitpZiB0ZXN0IC16ICIkQ1lHUEFUSF9XIjsgdGhlbgorICBpZiAoY3lncGF0aCAtLXZlcnNpb24pID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KKyAgICBDWUdQQVRIX1c9J2N5Z3BhdGggLXcnCisgIGVsc2UKKyAgICBDWUdQQVRIX1c9ZWNobworICBmaQorZmkKK0FDX1NVQlNUKFtDWUdQQVRIX1ddKQorCisjIERlZmluZSB0aGUgaWRlbnRpdHkgb2YgdGhlIHBhY2thZ2UuCitkbmwgRGlzdGluZ3Vpc2ggYmV0d2VlbiBvbGQtc3R5bGUgYW5kIG5ldy1zdHlsZSBjYWxscy4KK200X2lmdmFsKFskMl0sCitbbTRfaWZ2YWwoWyQzXSwgW19BTV9TRVRfT1BUSU9OKFtuby1kZWZpbmVdKV0pZG5sCisgQUNfU1VCU1QoW1BBQ0tBR0VdLCBbJDFdKWRubAorIEFDX1NVQlNUKFtWRVJTSU9OXSwgWyQyXSldLAorW19BTV9TRVRfT1BUSU9OUyhbJDFdKWRubAorIEFDX1NVQlNUKFtQQUNLQUdFXSwgWydBQ19QQUNLQUdFX1RBUk5BTUUnXSlkbmwKKyBBQ19TVUJTVChbVkVSU0lPTl0sIFsnQUNfUEFDS0FHRV9WRVJTSU9OJ10pXSlkbmwKKworX0FNX0lGX09QVElPTihbbm8tZGVmaW5lXSwsCitbQUNfREVGSU5FX1VOUVVPVEVEKFBBQ0tBR0UsICIkUEFDS0FHRSIsIFtOYW1lIG9mIHBhY2thZ2VdKQorIEFDX0RFRklORV9VTlFVT1RFRChWRVJTSU9OLCAiJFZFUlNJT04iLCBbVmVyc2lvbiBudW1iZXIgb2YgcGFja2FnZV0pXSlkbmwKKworIyBTb21lIHRvb2xzIEF1dG9tYWtlIG5lZWRzLgorQUNfUkVRVUlSRShbQU1fU0FOSVRZX0NIRUNLXSlkbmwKK0FDX1JFUVVJUkUoW0FDX0FSR19QUk9HUkFNXSlkbmwKK0FNX01JU1NJTkdfUFJPRyhBQ0xPQ0FMLCBhY2xvY2FsLSR7YW1fX2FwaV92ZXJzaW9ufSkKK0FNX01JU1NJTkdfUFJPRyhBVVRPQ09ORiwgYXV0b2NvbmYpCitBTV9NSVNTSU5HX1BST0coQVVUT01BS0UsIGF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSkKK0FNX01JU1NJTkdfUFJPRyhBVVRPSEVBREVSLCBhdXRvaGVhZGVyKQorQU1fTUlTU0lOR19QUk9HKE1BS0VJTkZPLCBtYWtlaW5mbykKK0FNX01JU1NJTkdfUFJPRyhBTVRBUiwgdGFyKQorQU1fUFJPR19JTlNUQUxMX1NICitBTV9QUk9HX0lOU1RBTExfU1RSSVAKK0FDX1JFUVVJUkUoW0FNX1BST0dfTUtESVJfUF0pZG5sCisjIFdlIG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlzIGJhZCBvbgorIyBzb21lIHBsYXRmb3Jtcy4KK0FDX1JFUVVJUkUoW0FDX1BST0dfQVdLXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKWRubAorQUNfUkVRVUlSRShbQU1fU0VUX0xFQURJTkdfRE9UXSlkbmwKKworX0FNX0lGX09QVElPTihbbm8tZGVwZW5kZW5jaWVzXSwsCitbQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfQ0NdLAorICAgICAgICAgICAgICAgICAgW19BTV9ERVBFTkRFTkNJRVMoQ0MpXSwKKyAgICAgICAgICAgICAgICAgIFtkZWZpbmUoW0FDX1BST0dfQ0NdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZuKFtBQ19QUk9HX0NDXSlbX0FNX0RFUEVOREVOQ0lFUyhDQyldKV0pZG5sCitBQ19QUk9WSURFX0lGRUxTRShbQUNfUFJPR19DWFhdLAorICAgICAgICAgICAgICAgICAgW19BTV9ERVBFTkRFTkNJRVMoQ1hYKV0sCisgICAgICAgICAgICAgICAgICBbZGVmaW5lKFtBQ19QUk9HX0NYWF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZm4oW0FDX1BST0dfQ1hYXSlbX0FNX0RFUEVOREVOQ0lFUyhDWFgpXSldKWRubAorXSkKK10pCisKKworIyBXaGVuIGNvbmZpZy5zdGF0dXMgZ2VuZXJhdGVzIGEgaGVhZGVyLCB3ZSBtdXN0IHVwZGF0ZSB0aGUgc3RhbXAtaCBmaWxlLgorIyBUaGlzIGZpbGUgcmVzaWRlcyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGNvbmZpZyBoZWFkZXIKKyMgdGhhdCBpcyBnZW5lcmF0ZWQuICBUaGUgc3RhbXAgZmlsZXMgYXJlIG51bWJlcmVkIHRvIGhhdmUgZGlmZmVyZW50IG5hbWVzLgorCisjIEF1dG9jb25mIGNhbGxzIF9BQ19BTV9DT05GSUdfSEVBREVSX0hPT0sgKHdoZW4gZGVmaW5lZCkgaW4gdGhlCisjIGxvb3Agd2hlcmUgY29uZmlnLnN0YXR1cyBjcmVhdGVzIHRoZSBoZWFkZXJzLCBzbyB3ZSBjYW4gZ2VuZXJhdGUKKyMgb3VyIHN0YW1wIGZpbGVzIHRoZXJlLgorQUNfREVGVU4oW19BQ19BTV9DT05GSUdfSEVBREVSX0hPT0tdLAorWyMgQ29tcHV0ZSAkMSdzIGluZGV4IGluICRjb25maWdfaGVhZGVycy4KK19hbV9zdGFtcF9jb3VudD0xCitmb3IgX2FtX2hlYWRlciBpbiAkY29uZmlnX2hlYWRlcnMgOjsgZG8KKyAgY2FzZSAkX2FtX2hlYWRlciBpbgorICAgICQxIHwgJDE6KiApCisgICAgICBicmVhayA7OworICAgICogKQorICAgICAgX2FtX3N0YW1wX2NvdW50PWBleHByICRfYW1fc3RhbXBfY291bnQgKyAxYCA7OworICBlc2FjCitkb25lCitlY2hvICJ0aW1lc3RhbXAgZm9yICQxIiA+YEFTX0RJUk5BTUUoWyQxXSlgL3N0YW1wLWhbXSRfYW1fc3RhbXBfY291bnRdKQorCisjIEFNX1BST0dfSU5TVEFMTF9TSAorIyAtLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVmaW5lICRpbnN0YWxsX3NoLgorCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisjIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BCisjIDAyMTExLTEzMDcsIFVTQS4KKworQUNfREVGVU4oW0FNX1BST0dfSU5TVEFMTF9TSF0sCitbQUNfUkVRVUlSRShbQU1fQVVYX0RJUl9FWFBBTkRdKWRubAoraW5zdGFsbF9zaD0ke2luc3RhbGxfc2gtIiRhbV9hdXhfZGlyL2luc3RhbGwtc2gifQorQUNfU1VCU1QoaW5zdGFsbF9zaCldKQorCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKyMgQ29weXJpZ2h0IChDKSAyMDAzICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisjIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BCisjIDAyMTExLTEzMDcsIFVTQS4KKworIyBzZXJpYWwgMQorCisjIENoZWNrIHdoZXRoZXIgdGhlIHVuZGVybHlpbmcgZmlsZS1zeXN0ZW0gc3VwcG9ydHMgZmlsZW5hbWVzCisjIHdpdGggYSBsZWFkaW5nIGRvdC4gIEZvciBpbnN0YW5jZSBNUy1ET1MgZG9lc24ndC4KK0FDX0RFRlVOKFtBTV9TRVRfTEVBRElOR19ET1RdLAorW3JtIC1yZiAudHN0IDI+L2Rldi9udWxsCitta2RpciAudHN0IDI+L2Rldi9udWxsCitpZiB0ZXN0IC1kIC50c3Q7IHRoZW4KKyAgYW1fX2xlYWRpbmdfZG90PS4KK2Vsc2UKKyAgYW1fX2xlYWRpbmdfZG90PV8KK2ZpCitybWRpciAudHN0IDI+L2Rldi9udWxsCitBQ19TVUJTVChbYW1fX2xlYWRpbmdfZG90XSldKQorCisKKyMgQ29weXJpZ2h0IChDKSAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzCisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyMgYW55IGxhdGVyIHZlcnNpb24uCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKyMgMDIxMTEtMTMwNywgVVNBLgorCisjIHNlcmlhbCA0CisKKyMgQU1fUFJPR19MRVgKKyMgLS0tLS0tLS0tLS0KKyMgQXV0b2NvbmYgbGVhdmVzIExFWD06IGlmIGxleCBvciBmbGV4IGNhbid0IGJlIGZvdW5kLiAgQ2hhbmdlIHRoYXQgdG8gYQorIyAibWlzc2luZyIgaW52b2NhdGlvbiwgZm9yIGJldHRlciBlcnJvciBvdXRwdXQuCitBQ19ERUZVTihbQU1fUFJPR19MRVhdLAorW0FDX1BSRVJFUSgyLjUwKWRubAorQUNfUkVRVUlSRShbQU1fTUlTU0lOR19IQVNfUlVOXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfTEVYXSlkbmwKK2lmIHRlc3QgIiRMRVgiID0gOjsgdGhlbgorICBMRVg9JHthbV9taXNzaW5nX3J1bn1mbGV4CitmaV0pCisKKyMgQWRkIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSBvcHRpb24gdG8gY29uZmlndXJlLgorIyBGcm9tIEppbSBNZXllcmluZworCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5OCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNAorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisjIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BCisjIDAyMTExLTEzMDcsIFVTQS4KKworIyBzZXJpYWwgMworCitBQ19ERUZVTihbQU1fTUFJTlRBSU5FUl9NT0RFXSwKK1tBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzXSkKKyAgZG5sIG1haW50YWluZXItbW9kZSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CisgIEFDX0FSR19FTkFCTEUobWFpbnRhaW5lci1tb2RlLAorWyAgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlICBlbmFibGUgbWFrZSBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIG5vdCB1c2VmdWwKKwkJCSAgKGFuZCBzb21ldGltZXMgY29uZnVzaW5nKSB0byB0aGUgY2FzdWFsIGluc3RhbGxlcl0sCisgICAgICBVU0VfTUFJTlRBSU5FUl9NT0RFPSRlbmFibGV2YWwsCisgICAgICBVU0VfTUFJTlRBSU5FUl9NT0RFPW5vKQorICBBQ19NU0dfUkVTVUxUKFskVVNFX01BSU5UQUlORVJfTU9ERV0pCisgIEFNX0NPTkRJVElPTkFMKE1BSU5UQUlORVJfTU9ERSwgW3Rlc3QgJFVTRV9NQUlOVEFJTkVSX01PREUgPSB5ZXNdKQorICBNQUlOVD0kTUFJTlRBSU5FUl9NT0RFX1RSVUUKKyAgQUNfU1VCU1QoTUFJTlQpZG5sCitdCispCisKK0FVX0RFRlVOKFtqbV9NQUlOVEFJTkVSX01PREVdLCBbQU1fTUFJTlRBSU5FUl9NT0RFXSkKKwogIyBDaGVjayB0byBzZWUgaG93ICdtYWtlJyB0cmVhdHMgaW5jbHVkZXMuCS0qLSBBdXRvY29uZiAtKi0KIAogIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC04ODksNzggKzczNywxMCBAQAogcm0gLWYgY29uZmluYyBjb25mbWYKIF0pCiAKLSMgQU1fQ09ORElUSU9OQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQotCi0jIENvcHlyaWdodCAxOTk3LCAyMDAwLCAyMDAxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSMgYW55IGxhdGVyIHZlcnNpb24uCi0KLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSMgMDIxMTEtMTMwNywgVVNBLgotCi0jIHNlcmlhbCA1Ci0KLUFDX1BSRVJFUSgyLjUyKQotCi0jIEFNX0NPTkRJVElPTkFMKE5BTUUsIFNIRUxMLUNPTkRJVElPTikKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBEZWZpbmUgYSBjb25kaXRpb25hbC4KLUFDX0RFRlVOKFtBTV9DT05ESVRJT05BTF0sCi1baWZlbHNlKFskMV0sIFtUUlVFXSwgIFtBQ19GQVRBTChbJDA6IGludmFsaWQgY29uZGl0aW9uOiAkMV0pXSwKLSAgICAgICAgWyQxXSwgW0ZBTFNFXSwgW0FDX0ZBVEFMKFskMDogaW52YWxpZCBjb25kaXRpb246ICQxXSldKWRubAotQUNfU1VCU1QoWyQxX1RSVUVdKQotQUNfU1VCU1QoWyQxX0ZBTFNFXSkKLWlmICQyOyB0aGVuCi0gICQxX1RSVUU9Ci0gICQxX0ZBTFNFPScjJwotZWxzZQotICAkMV9UUlVFPScjJwotICAkMV9GQUxTRT0KLWZpCi1BQ19DT05GSUdfQ09NTUFORFNfUFJFKAotW2lmIHRlc3QgLXogIiR7JDFfVFJVRX0iICYmIHRlc3QgLXogIiR7JDFfRkFMU0V9IjsgdGhlbgotICBBQ19NU0dfRVJST1IoW2NvbmRpdGlvbmFsICIkMSIgd2FzIG5ldmVyIGRlZmluZWQuCi1Vc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS5dKQotZmldKV0pCi0KLSMgTGlrZSBBQ19DT05GSUdfSEVBREVSLCBidXQgYXV0b21hdGljYWxseSBjcmVhdGUgc3RhbXAgZmlsZS4gLSotIEF1dG9jb25mIC0qLQotCi0jIENvcHlyaWdodCAxOTk2LCAxOTk3LCAyMDAwLCAyMDAxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSMgYW55IGxhdGVyIHZlcnNpb24uCi0KLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSMgMDIxMTEtMTMwNywgVVNBLgotCi1BQ19QUkVSRVEoWzIuNTJdKQotCi0jIHNlcmlhbCA2Ci0KLSMgQU1fQ09ORklHX0hFQURFUiBpcyBvYnNvbGV0ZS4gIEl0IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IEFDX0NPTkZJR19IRUFERVJTLgotQVVfREVGVU4oW0FNX0NPTkZJR19IRUFERVJdLCBbQUNfQ09ORklHX0hFQURFUlMoJEApXSkKKyMgIC0qLSBBdXRvY29uZiAtKi0KIAogCi0jIENvcHlyaWdodCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTcsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTk3OSwyMyArNzU5LDkxIEBACiAKICMgc2VyaWFsIDMKIAotQUNfUFJFUkVRKDIuNTApCisjIEFNX01JU1NJTkdfUFJPRyhOQU1FLCBQUk9HUkFNKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtBTV9NSVNTSU5HX1BST0ddLAorW0FDX1JFUVVJUkUoW0FNX01JU1NJTkdfSEFTX1JVTl0pCiskMT0keyQxLSIke2FtX21pc3NpbmdfcnVufSQyIn0KK0FDX1NVQlNUKCQxKV0pCiAKLSMgQU1fUFJPR19MRVgKLSMgLS0tLS0tLS0tLS0KLSMgQXV0b2NvbmYgbGVhdmVzIExFWD06IGlmIGxleCBvciBmbGV4IGNhbid0IGJlIGZvdW5kLiAgQ2hhbmdlIHRoYXQgdG8gYQotIyAibWlzc2luZyIgaW52b2NhdGlvbiwgZm9yIGJldHRlciBlcnJvciBvdXRwdXQuCi1BQ19ERUZVTihbQU1fUFJPR19MRVhdLAotW0FDX1JFUVVJUkUoW0FNX01JU1NJTkdfSEFTX1JVTl0pZG5sCi1BQ19SRVFVSVJFKFtBQ19QUk9HX0xFWF0pZG5sCi1pZiB0ZXN0ICIkTEVYIiA9IDo7IHRoZW4KLSAgTEVYPSR7YW1fbWlzc2luZ19ydW59ZmxleAotZmldKQogCi0jIEFkZCAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgb3B0aW9uIHRvIGNvbmZpZ3VyZS4KLSMgRnJvbSBKaW0gTWV5ZXJpbmcKKyMgQU1fTUlTU0lOR19IQVNfUlVOCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgTUlTU0lORyBpZiBub3QgZGVmaW5lZCBzbyBmYXIgYW5kIHRlc3QgaWYgaXQgc3VwcG9ydHMgLS1ydW4uCisjIElmIGl0IGRvZXMsIHNldCBhbV9taXNzaW5nX3J1biB0byB1c2UgaXQsIG90aGVyd2lzZSwgdG8gbm90aGluZy4KK0FDX0RFRlVOKFtBTV9NSVNTSU5HX0hBU19SVU5dLAorW0FDX1JFUVVJUkUoW0FNX0FVWF9ESVJfRVhQQU5EXSlkbmwKK3Rlc3QgeCIke01JU1NJTkcrc2V0fSIgPSB4c2V0IHx8IE1JU1NJTkc9Ilwke1NIRUxMfSAkYW1fYXV4X2Rpci9taXNzaW5nIgorIyBVc2UgZXZhbCB0byBleHBhbmQgJFNIRUxMCitpZiBldmFsICIkTUlTU0lORyAtLXJ1biB0cnVlIjsgdGhlbgorICBhbV9taXNzaW5nX3J1bj0iJE1JU1NJTkcgLS1ydW4gIgorZWxzZQorICBhbV9taXNzaW5nX3J1bj0KKyAgQUNfTVNHX1dBUk4oW2BtaXNzaW5nJyBzY3JpcHQgaXMgdG9vIG9sZCBvciBtaXNzaW5nXSkKK2ZpCitdKQogCi0jIENvcHlyaWdodCAxOTk2LCAxOTk4LCAyMDAwLCAyMDAxLCAyMDAyICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQU1fUFJPR19NS0RJUl9QCisjIC0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayB3aGV0aGVyIGBta2RpciAtcCcgaXMgc3VwcG9ydGVkLCBmYWxsYmFjayB0byBta2luc3RhbGxkaXJzIG90aGVyd2lzZS4KKworIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorIyAwMjExMS0xMzA3LCBVU0EuCisKKyMgQXV0b21ha2UgMS44IHVzZWQgYG1rZGlyIC1tIDA3NTUgLXAgLS0nIHRvIGVuc3VyZSB0aGF0IGRpcmVjdG9yaWVzCisjIGNyZWF0ZWQgYnkgYG1ha2UgaW5zdGFsbCcgYXJlIGFsd2F5cyB3b3JsZCByZWFkYWJsZSwgZXZlbiBpZiB0aGUKKyMgaW5zdGFsbGVyIGhhcHBlbnMgdG8gaGF2ZSBhbiBvdmVybHkgcmVzdHJpY3RpdmUgdW1hc2sgKGUuZy4gMDc3KS4KKyMgVGhpcyB3YXMgYSBtaXN0YWtlLiAgVGhlcmUgYXJlIGF0IGxlYXN0IHR3byByZWFzb25zIHdoeSB3ZSBtdXN0IG5vdAorIyB1c2UgYC1tIDA3NTUnOgorIyAgIC0gaXQgY2F1c2VzIHNwZWNpYWwgYml0cyBsaWtlIFNHSUQgdG8gYmUgaWdub3JlZCwKKyMgICAtIGl0IG1heSBiZSB0b28gcmVzdHJpY3RpdmUgKHNvbWUgc2V0dXBzIGV4cGVjdCA3NzUgZGlyZWN0b3JpZXMpLgorIworIyBEbyBub3QgdXNlIC1tIDA3NTUgYW5kIGxldCBwZW9wbGUgY2hvb3NlIHdoYXRldmVyIHRoZXkgZXhwZWN0IGJ5CisjIHNldHRpbmcgdW1hc2suCitBQ19ERUZVTihbQU1fUFJPR19NS0RJUl9QXSwKK1tpZiBta2RpciAtcCAtLSAuIDI+L2Rldi9udWxsOyB0aGVuCisgICMgS2VlcGluZyB0aGUgYC4nIGFyZ3VtZW50IGFsbG93cyAkKG1rZGlyX3ApIHRvIGJlIHVzZWQgd2l0aG91dAorICAjIGFyZ3VtZW50LiAgSW5kZWVkLCB3ZSBzb21ldGltZXMgb3V0cHV0IHJ1bGVzIGxpa2UKKyAgIyAgICQobWtkaXJfcCkgJChzb21lZGlyKQorICAjIHdoZXJlICQoc29tZWRpcikgaXMgY29uZGl0aW9uYWxseSBkZWZpbmVkLgorICAjIChgdGVzdCAtbiAnJChzb21lZGlyKScgJiYgJChta2Rpcl9wKSAkKHNvbWVkaXIpJyBpcyBhIG1vcmUKKyAgIyBleHBlbnNpdmUgc29sdXRpb24sIGFzIGl0IGZvcmNlcyBNYWtlIHRvIHN0YXJ0IGEgc3ViLXNoZWxsLikKKyAgbWtkaXJfcD0nbWtkaXIgLXAgLS0gLicKK2Vsc2UKKyAgIyBPbiBOZXh0U3RlcCBhbmQgT3BlblN0ZXAsIHRoZSBgbWtkaXInIGNvbW1hbmQgZG9lcyBub3QKKyAgIyByZWNvZ25pemUgYW55IG9wdGlvbi4gIEl0IHdpbGwgaW50ZXJwcmV0IGFsbCBvcHRpb25zIGFzCisgICMgZGlyZWN0b3JpZXMgdG8gY3JlYXRlLCBhbmQgdGhlbiBhYm9ydCBiZWNhdXNlIGAuJyBhbHJlYWR5CisgICMgZXhpc3RzLgorICBmb3IgZCBpbiAuLy1wIC4vLS07CisgIGRvCisgICAgdGVzdCAtZCAkZCAmJiBybWRpciAkZAorICBkb25lCisgICMgJChta2luc3RhbGxkaXJzKSBpcyBkZWZpbmVkIGJ5IEF1dG9tYWtlIGlmIG1raW5zdGFsbGRpcnMgZXhpc3RzLgorICBpZiB0ZXN0IC1mICIkYWNfYXV4X2Rpci9ta2luc3RhbGxkaXJzIjsgdGhlbgorICAgIG1rZGlyX3A9JyQobWtpbnN0YWxsZGlycyknCisgIGVsc2UKKyAgICBta2Rpcl9wPSckKGluc3RhbGxfc2gpIC1kJworICBmaQorZmkKK0FDX1NVQlNUKFtta2Rpcl9wXSldKQorCisjIEhlbHBlciBmdW5jdGlvbnMgZm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xMDE0LDIwICs4NjIsMTMwIEBACiAKICMgc2VyaWFsIDIKIAotQUNfREVGVU4oW0FNX01BSU5UQUlORVJfTU9ERV0sCi1bQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1ha2VmaWxlc10pCi0gIGRubCBtYWludGFpbmVyLW1vZGUgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAotICBBQ19BUkdfRU5BQkxFKG1haW50YWluZXItbW9kZSwKLVsgIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSBlbmFibGUgbWFrZSBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIG5vdCB1c2VmdWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCBzb21ldGltZXMgY29uZnVzaW5nKSB0byB0aGUgY2FzdWFsIGluc3RhbGxlcl0sCi0gICAgICBVU0VfTUFJTlRBSU5FUl9NT0RFPSRlbmFibGV2YWwsCi0gICAgICBVU0VfTUFJTlRBSU5FUl9NT0RFPW5vKQotICBBQ19NU0dfUkVTVUxUKFskVVNFX01BSU5UQUlORVJfTU9ERV0pCi0gIEFNX0NPTkRJVElPTkFMKE1BSU5UQUlORVJfTU9ERSwgW3Rlc3QgJFVTRV9NQUlOVEFJTkVSX01PREUgPSB5ZXNdKQotICBNQUlOVD0kTUFJTlRBSU5FUl9NT0RFX1RSVUUKLSAgQUNfU1VCU1QoTUFJTlQpZG5sCi1dCi0pCisjIF9BTV9NQU5HTEVfT1BUSU9OKE5BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0FNX01BTkdMRV9PUFRJT05dLAorW1tfQU1fT1BUSU9OX11tNF9icGF0c3Vic3QoJDEsIFtbXmEtekEtWjAtOV9dXSwgW19dKV0pCiAKLUFVX0RFRlVOKFtqbV9NQUlOVEFJTkVSX01PREVdLCBbQU1fTUFJTlRBSU5FUl9NT0RFXSkKKyMgX0FNX1NFVF9PUFRJT04oTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNldCBvcHRpb24gTkFNRS4gIFByZXNlbnRseSB0aGF0IG9ubHkgbWVhbnMgZGVmaW5pbmcgYSBmbGFnIGZvciB0aGlzIG9wdGlvbi4KK0FDX0RFRlVOKFtfQU1fU0VUX09QVElPTl0sCitbbTRfZGVmaW5lKF9BTV9NQU5HTEVfT1BUSU9OKFskMV0pLCAxKV0pCiAKKyMgX0FNX1NFVF9PUFRJT05TKE9QVElPTlMpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgT1BUSU9OUyBpcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIEF1dG9tYWtlIG9wdGlvbnMuCitBQ19ERUZVTihbX0FNX1NFVF9PUFRJT05TXSwKK1tBQ19GT1JFQUNIKFtfQU1fT3B0aW9uXSwgWyQxXSwgW19BTV9TRVRfT1BUSU9OKF9BTV9PcHRpb24pXSldKQorCisjIF9BTV9JRl9PUFRJT04oT1BUSU9OLCBJRi1TRVQsIFtJRi1OT1QtU0VUXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFeGVjdXRlIElGLVNFVCBpZiBPUFRJT04gaXMgc2V0LCBJRi1OT1QtU0VUIG90aGVyd2lzZS4KK0FDX0RFRlVOKFtfQU1fSUZfT1BUSU9OXSwKK1ttNF9pZnNldChfQU1fTUFOR0xFX09QVElPTihbJDFdKSwgWyQyXSwgWyQzXSldKQorCisjCisjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lLgorIworCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMjAwMCwgMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisjIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BCisjIDAyMTExLTEzMDcsIFVTQS4KKworIyBzZXJpYWwgMworCisjIEFNX1NBTklUWV9DSEVDSworIyAtLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtBTV9TQU5JVFlfQ0hFQ0tdLAorW0FDX01TR19DSEVDS0lORyhbd2hldGhlciBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lXSkKKyMgSnVzdCBpbiBjYXNlCitzbGVlcCAxCitlY2hvIHRpbWVzdGFtcCA+IGNvbmZ0ZXN0LmZpbGUKKyMgRG8gYHNldCcgaW4gYSBzdWJzaGVsbCBzbyB3ZSBkb24ndCBjbG9iYmVyIHRoZSBjdXJyZW50IHNoZWxsJ3MKKyMgYXJndW1lbnRzLiAgTXVzdCB0cnkgLUwgZmlyc3QgaW4gY2FzZSBjb25maWd1cmUgaXMgYWN0dWFsbHkgYQorIyBzeW1saW5rOyBzb21lIHN5c3RlbXMgcGxheSB3ZWlyZCBnYW1lcyB3aXRoIHRoZSBtb2QgdGltZSBvZiBzeW1saW5rcworIyAoZWcgRnJlZUJTRCByZXR1cm5zIHRoZSBtb2QgdGltZSBvZiB0aGUgc3ltbGluaydzIGNvbnRhaW5pbmcKKyMgZGlyZWN0b3J5KS4KK2lmICgKKyAgIHNldCBYIGBscyAtTHQgJHNyY2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmlsZSAyPiAvZGV2L251bGxgCisgICBpZiB0ZXN0ICIkWypdIiA9ICJYIjsgdGhlbgorICAgICAgIyAtTCBkaWRuJ3Qgd29yay4KKyAgICAgIHNldCBYIGBscyAtdCAkc3JjZGlyL2NvbmZpZ3VyZSBjb25mdGVzdC5maWxlYAorICAgZmkKKyAgIHJtIC1mIGNvbmZ0ZXN0LmZpbGUKKyAgIGlmIHRlc3QgIiRbKl0iICE9ICJYICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGUiIFwKKyAgICAgICYmIHRlc3QgIiRbKl0iICE9ICJYIGNvbmZ0ZXN0LmZpbGUgJHNyY2Rpci9jb25maWd1cmUiOyB0aGVuCisKKyAgICAgICMgSWYgbmVpdGhlciBtYXRjaGVkLCB0aGVuIHdlIGhhdmUgYSBicm9rZW4gbHMuICBUaGlzIGNhbiBoYXBwZW4KKyAgICAgICMgaWYsIGZvciBpbnN0YW5jZSwgQ09ORklHX1NIRUxMIGlzIGJhc2ggYW5kIGl0IGluaGVyaXRzIGEKKyAgICAgICMgYnJva2VuIGxzIGFsaWFzIGZyb20gdGhlIGVudmlyb25tZW50LiAgVGhpcyBoYXMgYWN0dWFsbHkKKyAgICAgICMgaGFwcGVuZWQuICBTdWNoIGEgc3lzdGVtIGNvdWxkIG5vdCBiZSBjb25zaWRlcmVkICJzYW5lIi4KKyAgICAgIEFDX01TR19FUlJPUihbbHMgLXQgYXBwZWFycyB0byBmYWlsLiAgTWFrZSBzdXJlIHRoZXJlIGlzIG5vdCBhIGJyb2tlbgorYWxpYXMgaW4geW91ciBlbnZpcm9ubWVudF0pCisgICBmaQorCisgICB0ZXN0ICIkWzJdIiA9IGNvbmZ0ZXN0LmZpbGUKKyAgICkKK3RoZW4KKyAgICMgT2suCisgICA6CitlbHNlCisgICBBQ19NU0dfRVJST1IoW25ld2x5IGNyZWF0ZWQgZmlsZSBpcyBvbGRlciB0aGFuIGRpc3RyaWJ1dGVkIGZpbGVzIQorQ2hlY2sgeW91ciBzeXN0ZW0gY2xvY2tdKQorZmkKK0FDX01TR19SRVNVTFQoeWVzKV0pCisKKyMgQU1fUFJPR19JTlNUQUxMX1NUUklQCisKKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyMgYW55IGxhdGVyIHZlcnNpb24uCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKyMgMDIxMTEtMTMwNywgVVNBLgorCisjIE9uZSBpc3N1ZSB3aXRoIHZlbmRvciBgaW5zdGFsbCcgKGV2ZW4gR05VKSBpcyB0aGF0IHlvdSBjYW4ndAorIyBzcGVjaWZ5IHRoZSBwcm9ncmFtIHVzZWQgdG8gc3RyaXAgYmluYXJpZXMuICBUaGlzIGlzIGVzcGVjaWFsbHkKKyMgYW5ub3lpbmcgaW4gY3Jvc3MtY29tcGlsaW5nIGVudmlyb25tZW50cywgd2hlcmUgdGhlIGJ1aWxkJ3Mgc3RyaXAKKyMgaXMgdW5saWtlbHkgdG8gaGFuZGxlIHRoZSBob3N0J3MgYmluYXJpZXMuCisjIEZvcnR1bmF0ZWx5IGluc3RhbGwtc2ggd2lsbCBob25vciBhIFNUUklQUFJPRyB2YXJpYWJsZSwgc28gd2UKKyMgYWx3YXlzIHVzZSBpbnN0YWxsLXNoIGluIGBtYWtlIGluc3RhbGwtc3RyaXAnLCBhbmQgaW5pdGlhbGl6ZQorIyBTVFJJUFBST0cgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIFNUUklQIHZhcmlhYmxlIChzZXQgYnkgdGhlIHVzZXIpLgorQUNfREVGVU4oW0FNX1BST0dfSU5TVEFMTF9TVFJJUF0sCitbQUNfUkVRVUlSRShbQU1fUFJPR19JTlNUQUxMX1NIXSlkbmwKKyMgSW5zdGFsbGVkIGJpbmFyaWVzIGFyZSB1c3VhbGx5IHN0cmlwcGVkIHVzaW5nIGBzdHJpcCcgd2hlbiB0aGUgdXNlcgorIyBydW4gYG1ha2UgaW5zdGFsbC1zdHJpcCcuICBIb3dldmVyIGBzdHJpcCcgbWlnaHQgbm90IGJlIHRoZSByaWdodAorIyB0b29sIHRvIHVzZSBpbiBjcm9zcy1jb21waWxhdGlvbiBlbnZpcm9ubWVudHMsIHRoZXJlZm9yZSBBdXRvbWFrZQorIyB3aWxsIGhvbm9yIHRoZSBgU1RSSVAnIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG92ZXJydWxlIHRoaXMgcHJvZ3JhbS4KK2RubCBEb24ndCB0ZXN0IGZvciAkY3Jvc3NfY29tcGlsaW5nID0geWVzLCBiZWNhdXNlIGl0IG1pZ2h0IGJlIGBtYXliZScuCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiAhPSBubzsgdGhlbgorICBBQ19DSEVDS19UT09MKFtTVFJJUF0sIFtzdHJpcF0sIDopCitmaQorSU5TVEFMTF9TVFJJUF9QUk9HUkFNPSJcJHtTSEVMTH0gXCQoaW5zdGFsbF9zaCkgLWMgLXMiCitBQ19TVUJTVChbSU5TVEFMTF9TVFJJUF9QUk9HUkFNXSldKQorCittNF9pbmNsdWRlKFthY2luY2x1ZGUubTRdKQpkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy5pbiBiL2dhcy9jb25maWcuaW4KaW5kZXggZmUyYmMzZi4uNTc3NjM2MSAxMDA2NDQKLS0tIGEvZ2FzL2NvbmZpZy5pbgorKysgYi9nYXMvY29uZmlnLmluCkBAIC0xLDE3OSArMSwxNTcgQEAKLS8qIGNvbmZpZy5pbi4gIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gY29uZmlndXJlLmluIGJ5IGF1dG9oZWFkZXIuICAqLworLyogY29uZmlnLmluLiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJlLmluIGJ5IGF1dG9oZWFkZXIuICAqLwogCi0vKiBEZWZpbmUgaWYgdXNpbmcgYWxsb2NhLmMuICAqLwotI3VuZGVmIENfQUxMT0NBCisvKiBEZWZpbmUgaWYgdXNpbmcgQUlYIDUuMiB2YWx1ZSBmb3IgQ19XRUFLRVhULiAqLworI3VuZGVmIEFJWF9XRUFLX1NVUFBPUlQKIAotLyogRGVmaW5lIHRvIGVtcHR5IGlmIHRoZSBrZXl3b3JkIGRvZXMgbm90IHdvcmsuICAqLwotI3VuZGVmIGNvbnN0CisvKiBVc2UgQkZEIGludGVyZmFjZT8gKi8KKyN1bmRlZiBCRkRfQVNTRU1CTEVSCiAKLS8qIERlZmluZSB0byBvbmUgb2YgX2dldGI2NywgR0VUQjY3LCBnZXRiNjcgZm9yIENyYXktMiBhbmQgQ3JheS1ZTVAgc3lzdGVtcy4KLSAgIFRoaXMgZnVuY3Rpb24gaXMgcmVxdWlyZWQgZm9yIGFsbG9jYS5jIHN1cHBvcnQgb24gdGhvc2Ugc3lzdGVtcy4gICovCisvKiBhc3NlcnQgYnJva2VuPyAqLworI3VuZGVmIEJST0tFTl9BU1NFUlQKKworLyogRGVmaW5lIHRvIG9uZSBvZiBgX2dldGI2NycsIGBHRVRCNjcnLCBgZ2V0YjY3JyBmb3IgQ3JheS0yIGFuZCBDcmF5LVlNUAorICAgc3lzdGVtcy4gVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBmb3IgYGFsbG9jYS5jJyBzdXBwb3J0IG9uIHRob3NlIHN5c3RlbXMuCisgICAqLwogI3VuZGVmIENSQVlfU1RBQ0tTRUdfRU5ECiAKLS8qIERlZmluZSBpZiB5b3UgaGF2ZSBhbGxvY2EsIGFzIGEgZnVuY3Rpb24gb3IgbWFjcm8uICAqLwotI3VuZGVmIEhBVkVfQUxMT0NBCisvKiBDb21waWxpbmcgY3Jvc3MtYXNzZW1ibGVyPyAqLworI3VuZGVmIENST1NTX0NPTVBJTEUKIAotLyogRGVmaW5lIGlmIHlvdSBoYXZlIDxhbGxvY2EuaD4gYW5kIGl0IHNob3VsZCBiZSB1c2VkIChub3Qgb24gVWx0cml4KS4gICovCi0jdW5kZWYgSEFWRV9BTExPQ0FfSAotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgYSB3b3JraW5nIGBtbWFwJyBzeXN0ZW0gY2FsbC4gICovCi0jdW5kZWYgSEFWRV9NTUFQCi0KLS8qIERlZmluZSBhcyBfX2lubGluZSBpZiB0aGF0J3Mgd2hhdCB0aGUgQyBjb21waWxlciBjYWxscyBpdC4gICovCi0jdW5kZWYgaW5saW5lCi0KLS8qIERlZmluZSB0byBgbG9uZycgaWYgPHN5cy90eXBlcy5oPiBkb2Vzbid0IGRlZmluZS4gICovCi0jdW5kZWYgb2ZmX3QKLQotLyogRGVmaW5lIHRvIGB1bnNpZ25lZCcgaWYgPHN5cy90eXBlcy5oPiBkb2Vzbid0IGRlZmluZS4gICovCi0jdW5kZWYgc2l6ZV90Ci0KLS8qIElmIHVzaW5nIHRoZSBDIGltcGxlbWVudGF0aW9uIG9mIGFsbG9jYSwgZGVmaW5lIGlmIHlvdSBrbm93IHRoZQotICAgZGlyZWN0aW9uIG9mIHN0YWNrIGdyb3d0aCBmb3IgeW91ciBzeXN0ZW07IG90aGVyd2lzZSBpdCB3aWxsIGJlCi0gICBhdXRvbWF0aWNhbGx5IGRlZHVjZWQgYXQgcnVuLXRpbWUuCi0gU1RBQ0tfRElSRUNUSU9OID4gMCA9PiBncm93cyB0b3dhcmQgaGlnaGVyIGFkZHJlc3NlcwotIFNUQUNLX0RJUkVDVElPTiA8IDAgPT4gZ3Jvd3MgdG93YXJkIGxvd2VyIGFkZHJlc3NlcwotIFNUQUNLX0RJUkVDVElPTiA9IDAgPT4gZGlyZWN0aW9uIG9mIGdyb3d0aCB1bmtub3duCi0gKi8KLSN1bmRlZiBTVEFDS19ESVJFQ1RJT04KLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAgKi8KLSN1bmRlZiBTVERDX0hFQURFUlMKLQotLyogRGVmaW5lIGlmIGxleCBkZWNsYXJlcyB5eXRleHQgYXMgYSBjaGFyICogYnkgZGVmYXVsdCwgbm90IGEgY2hhcltdLiAgKi8KLSN1bmRlZiBZWVRFWFRfUE9JTlRFUgotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9fYXJnel9jb3VudCBmdW5jdGlvbi4gICovCi0jdW5kZWYgSEFWRV9fX0FSR1pfQ09VTlQKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfX2FyZ3pfbmV4dCBmdW5jdGlvbi4gICovCi0jdW5kZWYgSEFWRV9fX0FSR1pfTkVYVAotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9fYXJnel9zdHJpbmdpZnkgZnVuY3Rpb24uICAqLwotI3VuZGVmIEhBVkVfX19BUkdaX1NUUklOR0lGWQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGRjZ2V0dGV4dCBmdW5jdGlvbi4gICovCi0jdW5kZWYgSEFWRV9EQ0dFVFRFWFQKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBnZXRjd2QgZnVuY3Rpb24uICAqLwotI3VuZGVmIEhBVkVfR0VUQ1dECi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZ2V0cGFnZXNpemUgZnVuY3Rpb24uICAqLwotI3VuZGVmIEhBVkVfR0VUUEFHRVNJWkUKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBtdW5tYXAgZnVuY3Rpb24uICAqLwotI3VuZGVmIEhBVkVfTVVOTUFQCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgcHV0ZW52IGZ1bmN0aW9uLiAgKi8KLSN1bmRlZiBIQVZFX1BVVEVOVgotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHJlbW92ZSBmdW5jdGlvbi4gICovCi0jdW5kZWYgSEFWRV9SRU1PVkUKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzYnJrIGZ1bmN0aW9uLiAgKi8KLSN1bmRlZiBIQVZFX1NCUksKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzZXRlbnYgZnVuY3Rpb24uICAqLwotI3VuZGVmIEhBVkVfU0VURU5WCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2V0bG9jYWxlIGZ1bmN0aW9uLiAgKi8KLSN1bmRlZiBIQVZFX1NFVExPQ0FMRQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cGNweSBmdW5jdGlvbi4gICovCi0jdW5kZWYgSEFWRV9TVFBDUFkKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJjYXNlY21wIGZ1bmN0aW9uLiAgKi8KLSN1bmRlZiBIQVZFX1NUUkNBU0VDTVAKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJjaHIgZnVuY3Rpb24uICAqLwotI3VuZGVmIEhBVkVfU1RSQ0hSCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdW5saW5rIGZ1bmN0aW9uLiAgKi8KLSN1bmRlZiBIQVZFX1VOTElOSwotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxhcmd6Lmg+IGhlYWRlciBmaWxlLiAgKi8KLSN1bmRlZiBIQVZFX0FSR1pfSAotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxlcnJuby5oPiBoZWFkZXIgZmlsZS4gICovCi0jdW5kZWYgSEFWRV9FUlJOT19ICi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGxpbWl0cy5oPiBoZWFkZXIgZmlsZS4gICovCi0jdW5kZWYgSEFWRV9MSU1JVFNfSAotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxsb2NhbGUuaD4gaGVhZGVyIGZpbGUuICAqLwotI3VuZGVmIEhBVkVfTE9DQUxFX0gKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8bWFsbG9jLmg+IGhlYWRlciBmaWxlLiAgKi8KLSN1bmRlZiBIQVZFX01BTExPQ19ICi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gICovCi0jdW5kZWYgSEFWRV9NRU1PUllfSAotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxubF90eXBlcy5oPiBoZWFkZXIgZmlsZS4gICovCi0jdW5kZWYgSEFWRV9OTF9UWVBFU19ICi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGFyZy5oPiBoZWFkZXIgZmlsZS4gICovCi0jdW5kZWYgSEFWRV9TVERBUkdfSAotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICAqLwotI3VuZGVmIEhBVkVfU1RETElCX0gKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5nLmg+IGhlYWRlciBmaWxlLiAgKi8KLSN1bmRlZiBIQVZFX1NUUklOR19ICi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZ3MuaD4gaGVhZGVyIGZpbGUuICAqLwotI3VuZGVmIEhBVkVfU1RSSU5HU19ICi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wYXJhbS5oPiBoZWFkZXIgZmlsZS4gICovCi0jdW5kZWYgSEFWRV9TWVNfUEFSQU1fSAotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICAqLwotI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0gKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAgKi8KLSN1bmRlZiBIQVZFX1VOSVNURF9ICi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHZhbHVlcy5oPiBoZWFkZXIgZmlsZS4gICovCi0jdW5kZWYgSEFWRV9WQUxVRVNfSAotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx2YXJhcmdzLmg+IGhlYWRlciBmaWxlLiAgKi8KLSN1bmRlZiBIQVZFX1ZBUkFSR1NfSAotCi0vKiBOYW1lIG9mIHBhY2thZ2UgKi8KLSN1bmRlZiBQQUNLQUdFCi0KLS8qIFZlcnNpb24gbnVtYmVyIG9mIHBhY2thZ2UgKi8KLSN1bmRlZiBWRVJTSU9OCi0KLS8qIERlZmluZSBpZiBkZWZhdWx0aW5nIHRvIEVMRiBvbiBTQ08gNS4gKi8KLSN1bmRlZiBTQ09fRUxGCi0KLS8qIFVzaW5nIHN0cmljdCBDT0ZGPyAqLwotI3VuZGVmIFNUUklDVENPRkYKLQotLyogRGVmaW5lIGlmIGRlZmF1bHQgdGFyZ2V0IGlzIFBvd2VyUEMgU29sYXJpcy4gKi8KLSN1bmRlZiBUQVJHRVRfU09MQVJJU19DT01NRU5UCi0KLS8qIERlZmluZSBhcyAxIGlmIGJpZyBlbmRpYW4uICovCi0jdW5kZWYgVEFSR0VUX0JZVEVTX0JJR19FTkRJQU4KLQotLyogRGVmYXVsdCBDUFUgZm9yIE1JUFMgdGFyZ2V0cy4gICovCi0jdW5kZWYgTUlQU19DUFVfU1RSSU5HX0RFRkFVTFQKLQotLyogQWxsb3cgdXNlIG9mIEVfTUlQU19BQklfTzMyIG9uIE1JUFMgdGFyZ2V0cy4gICovCi0jdW5kZWYgVVNFX0VfTUlQU19BQklfTzMyCi0KLS8qIEdlbmVyYXRlIDY0LWJpdCBjb2RlIGJ5IGRlZmF1bHQgb24gTUlQUyB0YXJnZXRzLiAgKi8KLSN1bmRlZiBNSVBTX0RFRkFVTFRfNjRCSVQKLQotLyogQ2hvb3NlIGEgZGVmYXVsdCBBQkkgZm9yIE1JUFMgdGFyZ2V0cy4gICovCi0jdW5kZWYgTUlQU19ERUZBVUxUX0FCSQorLyogRGVmaW5lIHRvIDEgaWYgdXNpbmcgYGFsbG9jYS5jJy4gKi8KKyN1bmRlZiBDX0FMTE9DQQogCiAvKiBEZWZhdWx0IGFyY2hpdGVjdHVyZS4gKi8KICN1bmRlZiBERUZBVUxUX0FSQ0gKIAotLyogVXNpbmcgY2dlbiBjb2RlPyAqLwotI3VuZGVmIFVTSU5HX0NHRU4KKy8qIERlZmF1bHQgZW11bGF0aW9uLiAqLworI3VuZGVmIERFRkFVTFRfRU1VTEFUSU9OCisKKy8qIFN1cHBvcnRlZCBlbXVsYXRpb25zLiAqLworI3VuZGVmIEVNVUxBVElPTlMKKworLyogRGVmaW5lIHRvIDEgaWYgTkxTIGlzIHJlcXVlc3RlZCAqLworI3VuZGVmIEVOQUJMRV9OTFMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYGFsbG9jYScsIGFzIGEgZnVuY3Rpb24gb3IgbWFjcm8uICovCisjdW5kZWYgSEFWRV9BTExPQ0EKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgPGFsbG9jYS5oPiBhbmQgaXQgc2hvdWxkIGJlIHVzZWQgKG5vdCBvbiBVbHRyaXgpLgorICAgKi8KKyN1bmRlZiBIQVZFX0FMTE9DQV9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8YXJnei5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0FSR1pfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGRjZ2V0dGV4dCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9EQ0dFVFRFWFQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlcnJuby5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0VSUk5PX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRjd2QnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUQ1dECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0cGFnZXNpemUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUUEFHRVNJWkUKKworLyogRGVmaW5lIGFzIDEgaWYgeW91IGhhdmUgZ2V0dGV4dCBhbmQgZG9uJ3Qgd2FudCB0byB1c2UgR05VIGdldHRleHQuICovCisjdW5kZWYgSEFWRV9HRVRURVhUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9JTlRUWVBFU19ICisKKy8qIERlZmluZSBpZiB5b3VyIGxvY2FsZS5oIGZpbGUgY29udGFpbnMgTENfTUVTU0FHRVMuICovCisjdW5kZWYgSEFWRV9MQ19NRVNTQUdFUworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbWl0cy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0xJTUlUU19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bG9jYWxlLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTE9DQUxFX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtYWxsb2MuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9NQUxMT0NfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX01FTU9SWV9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgd29ya2luZyBgbW1hcCcgc3lzdGVtIGNhbGwuICovCisjdW5kZWYgSEFWRV9NTUFQCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbXVubWFwJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01VTk1BUAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5sX3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkxfVFlQRVNfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB1dGVudicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QVVRFTlYKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZW1vdmUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUkVNT1ZFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2JyaycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TQlJLCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0ZW52JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NFVEVOVgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldGxvY2FsZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TRVRMT0NBTEUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRhcmcuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TVERBUkdfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGludC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NURElOVF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1RETElCX0gKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHBjcHkgZnVuY3Rpb24gKi8KKyN1bmRlZiBIQVZFX1NUUENQWQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmNhc2VjbXAnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSQ0FTRUNNUAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmNocicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJDSFIKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmdzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1RSSU5HU19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5nLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1RSSU5HX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvcGFyYW0uaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfUEFSQU1fSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1NUQVRfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19UWVBFU19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfVU5JU1REX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bmxpbmsnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfVU5MSU5LCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dmFsdWVzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfVkFMVUVTX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx2YXJhcmdzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfVkFSQVJHU19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgX19hcmd6X2NvdW50JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX19fQVJHWl9DT1VOVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYF9fYXJnel9uZXh0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX19fQVJHWl9ORVhUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgX19hcmd6X3N0cmluZ2lmeScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9fX0FSR1pfU1RSSU5HSUZZCiAKIC8qIFVzaW5nIGkzODYgQ09GRj8gKi8KICN1bmRlZiBJMzg2Q09GRgpAQCAtMTg0LDYgKzE2MiwzNiBAQAogLyogVXNpbmcgbTg4ayBDT0ZGPyAqLwogI3VuZGVmIE04OEtDT0ZGCiAKKy8qIG9sZCBDT0ZGIHN1cHBvcnQ/ICovCisjdW5kZWYgTUFOWV9TRUdNRU5UUworCisvKiBEZWZhdWx0IENQVSBmb3IgTUlQUyB0YXJnZXRzLiAqLworI3VuZGVmIE1JUFNfQ1BVX1NUUklOR19ERUZBVUxUCisKKy8qIEdlbmVyYXRlIDY0LWJpdCBjb2RlIGJ5IGRlZmF1bHQgb24gTUlQUyB0YXJnZXRzLiAqLworI3VuZGVmIE1JUFNfREVGQVVMVF82NEJJVAorCisvKiBDaG9vc2UgYSBkZWZhdWx0IEFCSSBmb3IgTUlQUyB0YXJnZXRzLiAqLworI3VuZGVmIE1JUFNfREVGQVVMVF9BQkkKKworLyogRGVmaW5lIGlmIGVudmlyb24gaXMgbm90IGRlY2xhcmVkIGluIHN5c3RlbSBoZWFkZXIgZmlsZXMuICovCisjdW5kZWYgTkVFRF9ERUNMQVJBVElPTl9FTlZJUk9OCisKKy8qIERlZmluZSBpZiBlcnJubyBpcyBub3QgZGVjbGFyZWQgaW4gc3lzdGVtIGhlYWRlciBmaWxlcy4gKi8KKyN1bmRlZiBORUVEX0RFQ0xBUkFUSU9OX0VSUk5PCisKKy8qIERlZmluZSBpZiBmcmVlIGlzIG5vdCBkZWNsYXJlZCBpbiBzeXN0ZW0gaGVhZGVyIGZpbGVzLiAqLworI3VuZGVmIE5FRURfREVDTEFSQVRJT05fRlJFRQorCisvKiBEZWZpbmUgaWYgbWFsbG9jIGlzIG5vdCBkZWNsYXJlZCBpbiBzeXN0ZW0gaGVhZGVyIGZpbGVzLiAqLworI3VuZGVmIE5FRURfREVDTEFSQVRJT05fTUFMTE9DCisKKy8qIERlZmluZSBpZiBzYnJrIGlzIG5vdCBkZWNsYXJlZCBpbiBzeXN0ZW0gaGVhZGVyIGZpbGVzLiAqLworI3VuZGVmIE5FRURfREVDTEFSQVRJT05fU0JSSworCisvKiBEZWZpbmUgaWYgc3Ryc3RyIGlzIG5vdCBkZWNsYXJlZCBpbiBzeXN0ZW0gaGVhZGVyIGZpbGVzLiAqLworI3VuZGVmIE5FRURfREVDTEFSQVRJT05fU1RSU1RSCisKIC8qIGEub3V0IHN1cHBvcnQ/ICovCiAjdW5kZWYgT0JKX01BWUJFX0FPVVQKIApAQCAtMjE0LDY5ICsyMjIsODkgQEAKIC8qIFZNUyBzdXBwb3J0PyAqLwogI3VuZGVmIE9CSl9NQVlCRV9WTVMKIAotLyogVXNlIGVtdWxhdGlvbiBzdXBwb3J0PyAqLwotI3VuZGVmIFVTRV9FTVVMQVRJT05TCisvKiBOYW1lIG9mIHBhY2thZ2UgKi8KKyN1bmRlZiBQQUNLQUdFCiAKLS8qIFN1cHBvcnRlZCBlbXVsYXRpb25zLiAqLwotI3VuZGVmIEVNVUxBVElPTlMKKy8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLworI3VuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUCiAKLS8qIERlZmF1bHQgZW11bGF0aW9uLiAqLwotI3VuZGVmIERFRkFVTFRfRU1VTEFUSU9OCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisjdW5kZWYgUEFDS0FHRV9OQU1FCiAKLS8qIG9sZCBDT0ZGIHN1cHBvcnQ/ICovCi0jdW5kZWYgTUFOWV9TRUdNRU5UUworLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfU1RSSU5HCiAKLS8qIFVzZSBCRkQgaW50ZXJmYWNlPyAqLwotI3VuZGVmIEJGRF9BU1NFTUJMRVIKKy8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKworLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX1ZFUlNJT04KKworLyogRGVmaW5lIGlmIGRlZmF1bHRpbmcgdG8gRUxGIG9uIFNDTyA1LiAqLworI3VuZGVmIFNDT19FTEYKKworLyogSWYgdXNpbmcgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YgYWxsb2NhLCBkZWZpbmUgaWYgeW91IGtub3cgdGhlCisgICBkaXJlY3Rpb24gb2Ygc3RhY2sgZ3Jvd3RoIGZvciB5b3VyIHN5c3RlbTsgb3RoZXJ3aXNlIGl0IHdpbGwgYmUKKyAgIGF1dG9tYXRpY2FsbHkgZGVkdWNlZCBhdCBydW4tdGltZS4KKwlTVEFDS19ESVJFQ1RJT04gPiAwID0+IGdyb3dzIHRvd2FyZCBoaWdoZXIgYWRkcmVzc2VzCisJU1RBQ0tfRElSRUNUSU9OIDwgMCA9PiBncm93cyB0b3dhcmQgbG93ZXIgYWRkcmVzc2VzCisJU1RBQ0tfRElSRUNUSU9OID0gMCA9PiBkaXJlY3Rpb24gb2YgZ3Jvd3RoIHVua25vd24gKi8KKyN1bmRlZiBTVEFDS19ESVJFQ1RJT04KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCisjdW5kZWYgU1REQ19IRUFERVJTCisKKy8qIFVzaW5nIHN0cmljdCBDT0ZGPyAqLworI3VuZGVmIFNUUklDVENPRkYKIAogLyogVGFyZ2V0IGFsaWFzLiAqLwogI3VuZGVmIFRBUkdFVF9BTElBUwogCisvKiBEZWZpbmUgYXMgMSBpZiBiaWcgZW5kaWFuLiAqLworI3VuZGVmIFRBUkdFVF9CWVRFU19CSUdfRU5ESUFOCisKIC8qIENhbm9uaWNhbCB0YXJnZXQuICovCiAjdW5kZWYgVEFSR0VUX0NBTk9OSUNBTAogCiAvKiBUYXJnZXQgQ1BVLiAqLwogI3VuZGVmIFRBUkdFVF9DUFUKIAotLyogVGFyZ2V0IHZlbmRvci4gKi8KLSN1bmRlZiBUQVJHRVRfVkVORE9SCi0KIC8qIFRhcmdldCBPUy4gKi8KICN1bmRlZiBUQVJHRVRfT1MKIAotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHBjcHkgZnVuY3Rpb24gKi8KLSN1bmRlZiBIQVZFX1NUUENQWQorLyogRGVmaW5lIGlmIGRlZmF1bHQgdGFyZ2V0IGlzIFBvd2VyUEMgU29sYXJpcy4gKi8KKyN1bmRlZiBUQVJHRVRfU09MQVJJU19DT01NRU5UCiAKLS8qIERlZmluZSBpZiB5b3VyIGxvY2FsZS5oIGZpbGUgY29udGFpbnMgTENfTUVTU0FHRVMuICovCi0jdW5kZWYgSEFWRV9MQ19NRVNTQUdFUworLyogVGFyZ2V0IHZlbmRvci4gKi8KKyN1bmRlZiBUQVJHRVRfVkVORE9SCiAKLS8qIERlZmluZSB0byAxIGlmIE5MUyBpcyByZXF1ZXN0ZWQgKi8KLSN1bmRlZiBFTkFCTEVfTkxTCisvKiBVc2UgZW11bGF0aW9uIHN1cHBvcnQ/ICovCisjdW5kZWYgVVNFX0VNVUxBVElPTlMKIAotLyogRGVmaW5lIGFzIDEgaWYgeW91IGhhdmUgZ2V0dGV4dCBhbmQgZG9uJ3Qgd2FudCB0byB1c2UgR05VIGdldHRleHQuICovCi0jdW5kZWYgSEFWRV9HRVRURVhUCisvKiBBbGxvdyB1c2Ugb2YgRV9NSVBTX0FCSV9PMzIgb24gTUlQUyB0YXJnZXRzLiAqLworI3VuZGVmIFVTRV9FX01JUFNfQUJJX08zMgogCi0vKiBDb21waWxpbmcgY3Jvc3MtYXNzZW1ibGVyPyAqLwotI3VuZGVmIENST1NTX0NPTVBJTEUKKy8qIFVzaW5nIGNnZW4gY29kZT8gKi8KKyN1bmRlZiBVU0lOR19DR0VOCiAKLS8qIGFzc2VydCBicm9rZW4/ICovCi0jdW5kZWYgQlJPS0VOX0FTU0VSVAorLyogVmVyc2lvbiBudW1iZXIgb2YgcGFja2FnZSAqLworI3VuZGVmIFZFUlNJT04KIAotLyogRGVmaW5lIGlmIHN0cnN0ciBpcyBub3QgZGVjbGFyZWQgaW4gc3lzdGVtIGhlYWRlciBmaWxlcy4gKi8KLSN1bmRlZiBORUVEX0RFQ0xBUkFUSU9OX1NUUlNUUgorLyogRGVmaW5lIHRvIDEgaWYgYGxleCcgZGVjbGFyZXMgYHl5dGV4dCcgYXMgYSBgY2hhciAqJyBieSBkZWZhdWx0LCBub3QgYQorICAgYGNoYXJbXScuICovCisjdW5kZWYgWVlURVhUX1BPSU5URVIKIAotLyogRGVmaW5lIGlmIG1hbGxvYyBpcyBub3QgZGVjbGFyZWQgaW4gc3lzdGVtIGhlYWRlciBmaWxlcy4gKi8KLSN1bmRlZiBORUVEX0RFQ0xBUkFUSU9OX01BTExPQworLyogRGVmaW5lIHRvIGVtcHR5IGlmIGBjb25zdCcgZG9lcyBub3QgY29uZm9ybSB0byBBTlNJIEMuICovCisjdW5kZWYgY29uc3QKIAotLyogRGVmaW5lIGlmIGZyZWUgaXMgbm90IGRlY2xhcmVkIGluIHN5c3RlbSBoZWFkZXIgZmlsZXMuICovCi0jdW5kZWYgTkVFRF9ERUNMQVJBVElPTl9GUkVFCisvKiBEZWZpbmUgdG8gYF9faW5saW5lX18nIG9yIGBfX2lubGluZScgaWYgdGhhdCdzIHdoYXQgdGhlIEMgY29tcGlsZXIKKyAgIGNhbGxzIGl0LCBvciB0byBub3RoaW5nIGlmICdpbmxpbmUnIGlzIG5vdCBzdXBwb3J0ZWQgdW5kZXIgYW55IG5hbWUuICAqLworI2lmbmRlZiBfX2NwbHVzcGx1cworI3VuZGVmIGlubGluZQorI2VuZGlmCiAKLS8qIERlZmluZSBpZiBzYnJrIGlzIG5vdCBkZWNsYXJlZCBpbiBzeXN0ZW0gaGVhZGVyIGZpbGVzLiAqLwotI3VuZGVmIE5FRURfREVDTEFSQVRJT05fU0JSSworLyogRGVmaW5lIHRvIGBsb25nJyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KKyN1bmRlZiBvZmZfdAogCi0vKiBEZWZpbmUgaWYgZW52aXJvbiBpcyBub3QgZGVjbGFyZWQgaW4gc3lzdGVtIGhlYWRlciBmaWxlcy4gKi8KLSN1bmRlZiBORUVEX0RFQ0xBUkFUSU9OX0VOVklST04KLQotLyogRGVmaW5lIGlmIGVycm5vIGlzIG5vdCBkZWNsYXJlZCBpbiBzeXN0ZW0gaGVhZGVyIGZpbGVzLiAqLwotI3VuZGVmIE5FRURfREVDTEFSQVRJT05fRVJSTk8KLQorLyogRGVmaW5lIHRvIGB1bnNpZ25lZCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisjdW5kZWYgc2l6ZV90CmRpZmYgLS1naXQgYS9nYXMvY29uZmlnL29iai1hb3V0LmMgYi9nYXMvY29uZmlnL29iai1hb3V0LmMKaW5kZXggNmU1ZmQyOS4uNzRlNTJhNSAxMDA2NDQKLS0tIGEvZ2FzL2NvbmZpZy9vYmotYW91dC5jCisrKyBiL2dhcy9jb25maWcvb2JqLWFvdXQuYwpAQCAtMSw2ICsxLDYgQEAKIC8qIGEub3V0IG9iamVjdCBmaWxlIGZvcm1hdAogICAgQ29weXJpZ2h0IDE5ODksIDE5OTAsIDE5OTEsIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTksIDIwMDAsCi0gICAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0FTLCB0aGUgR05VIEFzc2VtYmxlci4KIApAQCAtNDE5LDE3ICs0MTksOSBAQAogCXsKIAkgICsraW5wdXRfbGluZV9wb2ludGVyOwogCSAgaWYgKHN0cm5jbXAgKGlucHV0X2xpbmVfcG9pbnRlciwgIm9iamVjdCIsIDYpID09IDApCi0jaWZkZWYgQkZEX0FTU0VNQkxFUgotCSAgICBhb3V0X3N5bWJvbCAoc3ltYm9sX2dldF9iZmRzeW0gKHN5bSkpLT5vdGhlciA9IDE7Ci0jZWxzZQotCSAgU19TRVRfT1RIRVIgKHN5bSwgMSk7Ci0jZW5kaWYKKwkgICAgU19TRVRfT1RIRVIgKHN5bSwgMSk7CiAJICBlbHNlIGlmIChzdHJuY21wIChpbnB1dF9saW5lX3BvaW50ZXIsICJmdW5jdGlvbiIsIDgpID09IDApCi0jaWZkZWYgQkZEX0FTU0VNQkxFUgotCSAgICBhb3V0X3N5bWJvbCAoc3ltYm9sX2dldF9iZmRzeW0gKHN5bSkpLT5vdGhlciA9IDI7Ci0jZWxzZQotCSAgU19TRVRfT1RIRVIgKHN5bSwgMik7Ci0jZW5kaWYKKwkgICAgU19TRVRfT1RIRVIgKHN5bSwgMik7CiAJfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy9vYmotZWxmLmMgYi9nYXMvY29uZmlnL29iai1lbGYuYwppbmRleCAwMWJhMDk2Li4xNGQ0OGYyIDEwMDY0NAotLS0gYS9nYXMvY29uZmlnL29iai1lbGYuYworKysgYi9nYXMvY29uZmlnL29iai1lbGYuYwpAQCAtNzg3LDcgKzc4Nyw3IEBACiAJZW5kKys7CiAgICAgICBpZiAoZW5kID09IGlucHV0X2xpbmVfcG9pbnRlcikKIAl7Ci0JICBhc193YXJuIChfKCJtaXNzaW5nIG5hbWUiKSk7CisJICBhc19iYWQgKF8oIm1pc3NpbmcgbmFtZSIpKTsKIAkgIGlnbm9yZV9yZXN0X29mX2xpbmUgKCk7CiAJICByZXR1cm4gTlVMTDsKIAl9CkBAIC05MzgsNyArOTM4LDcgQEAKIAkgICAgICBTS0lQX1dISVRFU1BBQ0UgKCk7CiAJICAgICAgaWYgKCppbnB1dF9saW5lX3BvaW50ZXIgIT0gJyMnKQogCQl7Ci0JCSAgYXNfd2FybiAoXygiY2hhcmFjdGVyIGZvbGxvd2luZyBuYW1lIGlzIG5vdCAnIyciKSk7CisJCSAgYXNfYmFkIChfKCJjaGFyYWN0ZXIgZm9sbG93aW5nIG5hbWUgaXMgbm90ICcjJyIpKTsKIAkJICBpZ25vcmVfcmVzdF9vZl9saW5lICgpOwogCQkgIHJldHVybjsKIAkJfQpkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1hcmMuYyBiL2dhcy9jb25maWcvdGMtYXJjLmMKaW5kZXggYjk5ZmMwYi4uNjBjZmEzNCAxMDA2NDQKLS0tIGEvZ2FzL2NvbmZpZy90Yy1hcmMuYworKysgYi9nYXMvY29uZmlnL3RjLWFyYy5jCkBAIC05MDUsMTEgKzkwNSw2IEBACiAgIG5hbWUgPSBpbnB1dF9saW5lX3BvaW50ZXI7CiAgIGMgPSBnZXRfc3ltYm9sX2VuZCAoKTsKICAgbmFtZSA9IHhzdHJkdXAgKG5hbWUpOwotICBpZiAoTlVMTCA9PSBuYW1lKQotICAgIHsKLSAgICAgIGlnbm9yZV9yZXN0X29mX2xpbmUgKCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQogCiAgIHAgPSBuYW1lOwogICB3aGlsZSAoKnApCkBAIC0xMTUzLDExICsxMTQ4LDYgQEAKICAgbmFtZSA9IGlucHV0X2xpbmVfcG9pbnRlcjsKICAgYyA9IGdldF9zeW1ib2xfZW5kICgpOwogICBuYW1lID0geHN0cmR1cCAobmFtZSk7Ci0gIGlmIChOVUxMID09IG5hbWUpCi0gICAgewotICAgICAgaWdub3JlX3Jlc3Rfb2ZfbGluZSAoKTsKLSAgICAgIHJldHVybjsKLSAgICB9CiAgIHN0cmNweSAoc3ludGF4LCBuYW1lKTsKICAgbmFtZV9sZW4gPSBzdHJsZW4gKG5hbWUpOwogCkBAIC0xMzA1LDE4ICsxMjk1LDcgQEAKICAgc3RyY2F0IChzeW50YXgsICIlUyVMIik7CiAKICAgZXh0X29wID0gKHN0cnVjdCBhcmNfb3Bjb2RlICopIHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IGFyY19vcGNvZGUpKTsKLSAgaWYgKE5VTEwgPT0gZXh0X29wKQotICAgIHsKLSAgICAgIGlnbm9yZV9yZXN0X29mX2xpbmUgKCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCiAgIGV4dF9vcC0+c3ludGF4ID0geHN0cmR1cCAoc3ludGF4KTsKLSAgaWYgKE5VTEwgPT0gZXh0X29wLT5zeW50YXgpCi0gICAgewotICAgICAgaWdub3JlX3Jlc3Rfb2ZfbGluZSAoKTsKLSAgICAgIHJldHVybjsKLSAgICB9CiAKICAgZXh0X29wLT5tYXNrICA9IEkgKC0xKSB8ICgoMHgzID09IG9wY29kZSkgPyBDICgtMSkgOiAwKTsKICAgZXh0X29wLT52YWx1ZSA9IEkgKG9wY29kZSkgfCAoKDB4MyA9PSBvcGNvZGUpID8gQyAoc3Vib3Bjb2RlKSA6IDApOwpkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1hcm0uYyBiL2dhcy9jb25maWcvdGMtYXJtLmMKaW5kZXggNjliMmMyMS4uYTdlYmM1MSAxMDA2NDQKLS0tIGEvZ2FzL2NvbmZpZy90Yy1hcm0uYworKysgYi9nYXMvY29uZmlnL3RjLWFybS5jCkBAIC0xOTEsNiArMTkxLDkgQEAKIHN0YXRpYyBpbnQgbWFyY2hfZnB1X29wdCA9IC0xOwogc3RhdGljIGludCBtZnB1X29wdCA9IC0xOwogc3RhdGljIGludCBtZmxvYXRfYWJpX29wdCA9IC0xOworI2lmZGVmIE9CSl9FTEYKK3N0YXRpYyBpbnQgbWVhYmlfZmxhZ3MgPSBFRl9BUk1fRUFCSV9VTktOT1dOOworI2VuZGlmCiAKIC8qIFRoaXMgYXJyYXkgaG9sZHMgdGhlIGNoYXJzIHRoYXQgYWx3YXlzIHN0YXJ0IGEgY29tbWVudC4gIElmIHRoZQogICAgcHJlLXByb2Nlc3NvciBpcyBkaXNhYmxlZCwgdGhlc2UgYXJlbid0IHZlcnkgdXNlZnVsLiAgKi8KQEAgLTI1NTEsNiArMjU1NCw5IEBACiBzdGF0aWMgaW50IGFybV9wYXJzZV9hcmNoIFBBUkFNUyAoKGNoYXIgKikpOwogc3RhdGljIGludCBhcm1fcGFyc2VfZnB1IFBBUkFNUyAoKGNoYXIgKikpOwogc3RhdGljIGludCBhcm1fcGFyc2VfZmxvYXRfYWJpIFBBUkFNUyAoKGNoYXIgKikpOworI2lmZGVmIE9CSl9FTEYKK3N0YXRpYyBpbnQgYXJtX3BhcnNlX2VhYmkgUEFSQU1TICgoY2hhciAqKSk7CisjZW5kaWYKICNpZiAwIC8qIFN1cHByZXNzZWQgLSBmb3Igbm93LiAgKi8KICNpZiBkZWZpbmVkIE9CSl9DT0ZGIHx8IGRlZmluZWQgT0JKX0VMRgogc3RhdGljIHZvaWQgYXJtX2FkZF9ub3RlIFBBUkFNUyAoKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQpKTsKQEAgLTExNjg1LDQwICsxMTY5MSw1NyBAQAogCiAgIGNwdV92YXJpYW50ID0gbWNwdV9jcHVfb3B0IHwgbWZwdV9vcHQ7CiAKLSNpZiBkZWZpbmVkIE9CSl9DT0ZGIHx8IGRlZmluZWQgT0JKX0VMRgogICB7CiAgICAgdW5zaWduZWQgaW50IGZsYWdzID0gMDsKIAotICAgIC8qIFNldCB0aGUgZmxhZ3MgaW4gdGhlIHByaXZhdGUgc3RydWN0dXJlLiAgKi8KLSAgICBpZiAodXNlc19hcGNzXzI2KSAgICAgIGZsYWdzIHw9IEZfQVBDUzI2OwotICAgIGlmIChzdXBwb3J0X2ludGVyd29yaykgZmxhZ3MgfD0gRl9JTlRFUldPUks7Ci0gICAgaWYgKHVzZXNfYXBjc19mbG9hdCkgICBmbGFncyB8PSBGX0FQQ1NfRkxPQVQ7Ci0gICAgaWYgKHBpY19jb2RlKSAgICAgICAgICBmbGFncyB8PSBGX1BJQzsKLSAgICBpZiAoKGNwdV92YXJpYW50ICYgRlBVX0FOWSkgPT0gRlBVX05PTkUKLQkgfHwgKGNwdV92YXJpYW50ICYgRlBVX0FOWSkgPT0gRlBVX0FSQ0hfVkZQKSAvKiBWRlAgbGF5b3V0IG9ubHkuICAqLwotICAgICAgewotCWZsYWdzIHw9IEZfU09GVF9GTE9BVDsKLSAgICAgIH0KLSAgICBzd2l0Y2ggKG1mbG9hdF9hYmlfb3B0KQotICAgICAgewotICAgICAgY2FzZSBBUk1fRkxPQVRfQUJJX1NPRlQ6Ci0gICAgICBjYXNlIEFSTV9GTE9BVF9BQklfU09GVEZQOgotCWZsYWdzIHw9IEZfU09GVF9GTE9BVDsKLQlicmVhazsKLQotICAgICAgY2FzZSBBUk1fRkxPQVRfQUJJX0hBUkQ6Ci0JaWYgKGZsYWdzICYgRl9TT0ZUX0ZMT0FUKQotCSAgYXNfYmFkIChfKCJoYXJkLWZsb2F0IGNvbmZsaWN0cyB3aXRoIHNwZWNpZmllZCBmcHUiKSk7Ci0JYnJlYWs7Ci0gICAgICB9Ci0gICAgLyogVXNpbmcgVkZQIGNvbnZlbnRpb25zIChldmVuIGlmIHNvZnQtZmxvYXQpLiAgKi8KLSAgICBpZiAoY3B1X3ZhcmlhbnQgJiBGUFVfVkZQX0VYVF9OT05FKSBmbGFncyB8PSBGX1ZGUF9GTE9BVDsKLQogI2lmIGRlZmluZWQgT0JKX0VMRgotICAgIGlmIChjcHVfdmFyaWFudCAmIEZQVV9BUkNIX01BVkVSSUNLKQotCWZsYWdzIHw9IEVGX0FSTV9NQVZFUklDS19GTE9BVDsKLSNlbmRpZgorICAgIGZsYWdzID0gbWVhYmlfZmxhZ3M7CiAKKyAgICBzd2l0Y2ggKG1lYWJpX2ZsYWdzKQorICAgICAgeworICAgICAgY2FzZSBFRl9BUk1fRUFCSV9VTktOT1dOOgorI2VuZGlmCisjaWYgZGVmaW5lZCBPQkpfQ09GRiB8fCBkZWZpbmVkIE9CSl9FTEYKKwkvKiBTZXQgdGhlIGZsYWdzIGluIHRoZSBwcml2YXRlIHN0cnVjdHVyZS4gICovCisJaWYgKHVzZXNfYXBjc18yNikgICAgICBmbGFncyB8PSBGX0FQQ1MyNjsKKwlpZiAoc3VwcG9ydF9pbnRlcndvcmspIGZsYWdzIHw9IEZfSU5URVJXT1JLOworCWlmICh1c2VzX2FwY3NfZmxvYXQpICAgZmxhZ3MgfD0gRl9BUENTX0ZMT0FUOworCWlmIChwaWNfY29kZSkgICAgICAgICAgZmxhZ3MgfD0gRl9QSUM7CisJaWYgKChjcHVfdmFyaWFudCAmIEZQVV9BTlkpID09IEZQVV9OT05FCisJICAgICB8fCAoY3B1X3ZhcmlhbnQgJiBGUFVfQU5ZKSA9PSBGUFVfQVJDSF9WRlApIC8qIFZGUCBsYXlvdXQgb25seS4gICovCisJICBmbGFncyB8PSBGX1NPRlRfRkxPQVQ7CisKKwlzd2l0Y2ggKG1mbG9hdF9hYmlfb3B0KQorCSAgeworCSAgY2FzZSBBUk1fRkxPQVRfQUJJX1NPRlQ6CisJICBjYXNlIEFSTV9GTE9BVF9BQklfU09GVEZQOgorCSAgICBmbGFncyB8PSBGX1NPRlRfRkxPQVQ7CisJICAgIGJyZWFrOworCisJICBjYXNlIEFSTV9GTE9BVF9BQklfSEFSRDoKKwkgICAgaWYgKGZsYWdzICYgRl9TT0ZUX0ZMT0FUKQorCSAgICAgIGFzX2JhZCAoXygiaGFyZC1mbG9hdCBjb25mbGljdHMgd2l0aCBzcGVjaWZpZWQgZnB1IikpOworCSAgICBicmVhazsKKwkgIH0KKworCS8qIFVzaW5nIFZGUCBjb252ZW50aW9ucyAoZXZlbiBpZiBzb2Z0LWZsb2F0KS4gICovCisJaWYgKGNwdV92YXJpYW50ICYgRlBVX1ZGUF9FWFRfTk9ORSkKKwkgIGZsYWdzIHw9IEZfVkZQX0ZMT0FUOworI2VuZGlmCisjaWYgZGVmaW5lZCBPQkpfRUxGCisJaWYgKGNwdV92YXJpYW50ICYgRlBVX0FSQ0hfTUFWRVJJQ0spCisJICAgIGZsYWdzIHw9IEVGX0FSTV9NQVZFUklDS19GTE9BVDsKKwlicmVhazsKKworICAgICAgY2FzZSBFRl9BUk1fRUFCSV9WRVIzOgorCS8qIE5vIGFkZGl0aW9uYWwgZmxhZ3MgdG8gc2V0LiAgKi8KKwlicmVhazsKKworICAgICAgZGVmYXVsdDoKKwlhYm9ydCAoKTsKKyAgICAgIH0KKyNlbmRpZgorI2lmIGRlZmluZWQgT0JKX0NPRkYgfHwgZGVmaW5lZCBPQkpfRUxGCiAgICAgYmZkX3NldF9wcml2YXRlX2ZsYWdzIChzdGRvdXRwdXQsIGZsYWdzKTsKIAogICAgIC8qIFdlIGhhdmUgcnVuIG91dCBmbGFncyBpbiB0aGUgQ09GRiBoZWFkZXIgdG8gZW5jb2RlIHRoZQpAQCAtMTE3MzgsOCArMTE3NjEsOCBAQAogCSAgICBiZmRfc2V0X3NlY3Rpb25fY29udGVudHMgKHN0ZG91dHB1dCwgc2VjLCBOVUxMLCAwLCAwKTsKIAkgIH0KICAgICAgIH0KLSAgfQogI2VuZGlmCisgIH0KIAogICAvKiBSZWNvcmQgdGhlIENQVSB0eXBlIGFzIHdlbGwuICAqLwogICBzd2l0Y2ggKGNwdV92YXJpYW50ICYgQVJNX0NQVV9NQVNLKQpAQCAtMTM0NTAsNiArMTM0NzMsMjIgQEAKICAge05VTEwsIDB9CiB9OwogCitzdHJ1Y3QgYXJtX2VhYmlfb3B0aW9uX3RhYmxlCit7CisgIGNoYXIgKm5hbWU7CisgIHVuc2lnbmVkIGludCB2YWx1ZTsKK307CisKKyNpZmRlZiBPQkpfRUxGCisvKiBXZSBvbmx5IGtub3cgaG90IHRvIG91dHB1dCBHTlUgYW5kIHZlciAzIChBQUVMRikgZm9ybWF0cy4gICovCitzdGF0aWMgc3RydWN0IGFybV9lYWJpX29wdGlvbl90YWJsZSBhcm1fZWFiaXNbXSA9Cit7CisgIHsiZ251IiwJRUZfQVJNX0VBQklfVU5LTk9XTn0sCisgIHsiMyIsCQlFRl9BUk1fRUFCSV9WRVIzfSwKKyAge05VTEwsIDB9Cit9OworI2VuZGlmCisKIHN0cnVjdCBhcm1fbG9uZ19vcHRpb25fdGFibGUKIHsKICAgY2hhciAqb3B0aW9uOwkJLyogU3Vic3RyaW5nIHRvIG1hdGNoLiAgKi8KQEAgLTEzNjEzLDYgKzEzNjUyLDI0IEBACiAgIHJldHVybiAwOwogfQogCisjaWZkZWYgT0JKX0VMRgorc3RhdGljIGludAorYXJtX3BhcnNlX2VhYmkgKHN0cikKKyAgICAgY2hhciAqIHN0cjsKK3sKKyAgc3RydWN0IGFybV9lYWJpX29wdGlvbl90YWJsZSAqb3B0OworCisgIGZvciAob3B0ID0gYXJtX2VhYmlzOyBvcHQtPm5hbWUgIT0gTlVMTDsgb3B0KyspCisgICAgaWYgKHN0cmNtcCAob3B0LT5uYW1lLCBzdHIpID09IDApCisgICAgICB7CisJbWVhYmlfZmxhZ3MgPSBvcHQtPnZhbHVlOworCXJldHVybiAxOworICAgICAgfQorICBhc19iYWQgKF8oInVua25vd24gRUFCSSBgJXMnXG4iKSwgc3RyKTsKKyAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogc3RydWN0IGFybV9sb25nX29wdGlvbl90YWJsZSBhcm1fbG9uZ19vcHRzW10gPQogewogICB7Im1jcHU9IiwgTl8oIjxjcHUgbmFtZT5cdCAgYXNzZW1ibGUgZm9yIENQVSA8Y3B1IG5hbWU+IiksCkBAIC0xMzYyMyw2ICsxMzY4MCwxMCBAQAogICAgYXJtX3BhcnNlX2ZwdSwgTlVMTH0sCiAgIHsibWZsb2F0LWFiaT0iLCBOXygiPGFiaT5cdCAgYXNzZW1ibGUgZm9yIGZsb2F0aW5nIHBvaW50IEFCSSA8YWJpPiIpLAogICAgYXJtX3BhcnNlX2Zsb2F0X2FiaSwgTlVMTH0sCisjaWZkZWYgT0JKX0VMRgorICB7Im1lYWJpPSIsIE5fKCI8dmVyPlx0ICBhc3NlbWJsZSBmb3IgZWFiaSB2ZXJzaW9uIDx2ZXI+IiksCisgICBhcm1fcGFyc2VfZWFiaSwgTlVMTH0sCisjZW5kaWYKICAge05VTEwsIE5VTEwsIDAsIE5VTEx9CiB9OwogCmRpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLWRseC5jIGIvZ2FzL2NvbmZpZy90Yy1kbHguYwppbmRleCA0YjcyYjU2Li44MmI0YWEyIDEwMDY0NAotLS0gYS9nYXMvY29uZmlnL3RjLWRseC5jCisrKyBiL2dhcy9jb25maWcvdGMtZGx4LmMKQEAgLTEsNSArMSw1IEBACiAvKiB0Yy1sZHguYyAtLSBBc3NlbWJsZSBmb3IgdGhlIERMWAotICAgQ29weXJpZ2h0IDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb3B5cmlnaHQgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0FTLCB0aGUgR05VIEFzc2VtYmxlci4KIApAQCAtMzk3LDYgKzM5NywxOCBAQAogCQkJICB0aGVfaW5zbi5zaXplLCAmIHRoZV9pbnNuLmV4cCwgdGhlX2luc24ucGNyZWwsCiAJCQkgIHRoZV9pbnNuLnJlbG9jKTsKIAorICAgICAgLyogVHVybiBvZmYgY29tcGxhaW50cyB0aGF0IHRoZSBhZGRlbmQgaXMKKwkgdG9vIGxhcmdlIGZvciB0aGluZ3MgbGlrZSBmb28rMTAwMDAwQGhhLiAgKi8KKyAgICAgIHN3aXRjaCAodGhlX2luc24ucmVsb2MpCisJeworCWNhc2UgUkVMT0NfRExYX0hJMTY6CisJY2FzZSBSRUxPQ19ETFhfTE8xNjoKKwkgIGZpeFAtPmZ4X25vX292ZXJmbG93ID0gMTsKKwkgIGJyZWFrOworCWRlZmF1bHQ6CisJICBicmVhazsKKwl9CisKICAgICAgIHN3aXRjaCAoZml4UC0+Znhfcl90eXBlKQogCXsKIAljYXNlIFJFTE9DX0RMWF9SRUwyNjoKQEAgLTQxMCw2ICs0MjIsNyBAQAogCSAgYml0UC0+ZnhfYml0X2FkZCA9IDB4MDNGRkZGRkY7CiAJICBmaXhQLT5meF9iaXRfZml4UCA9IGJpdFA7CiAJICBicmVhazsKKwljYXNlIFJFTE9DX0RMWF9MTzE2OgogCWNhc2UgUkVMT0NfRExYX1JFTDE2OgogCSAgYml0UCA9IG1hbGxvYyAoc2l6ZW9mIChiaXRfZml4UykpOwogCSAgYml0UC0+ZnhfYml0X3NpemUgPSAxNjsKQEAgLTk1NSw3ICs5NjgsOCBAQAogCSAgICAgIGNvbnRpbnVlOwogCSAgICB9CiAKLQkgIHRoZV9pbnNuLnJlbG9jICAgICAgICA9ICh0aGVfaW5zbi5ISSkgPyBSRUxPQ19ETFhfSEkxNiA6IFJFTE9DX0RMWF8xNjsKKwkgIHRoZV9pbnNuLnJlbG9jICAgICAgICA9ICh0aGVfaW5zbi5ISSkgPyBSRUxPQ19ETFhfSEkxNiAKKwkgICAgOiAodGhlX2luc24uTE8gPyBSRUxPQ19ETFhfTE8xNiA6IFJFTE9DX0RMWF8xNik7CiAJICB0aGVfaW5zbi5yZWxvY19vZmZzZXQgPSAyOwogCSAgdGhlX2luc24uc2l6ZSAgICAgICAgID0gMjsKIAkgIHRoZV9pbnNuLnBjcmVsICAgICAgICA9IDA7CkBAIC0xMTY0LDYgKzExNzgsNyBAQAogCiAgIHN3aXRjaCAoZml4UC0+Znhfcl90eXBlKQogICAgIHsKKyAgICBjYXNlIFJFTE9DX0RMWF9MTzE2OgogICAgIGNhc2UgUkVMT0NfRExYX1JFTDE2OgogICAgICAgaWYgKGZpeFAtPmZ4X2JpdF9maXhQICE9IChiaXRfZml4UyAqKSBOVUxMKQogCXsKZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtZnJ2LmMgYi9nYXMvY29uZmlnL3RjLWZydi5jCmluZGV4IDk2ZTYzMGIuLjZjNjUyOGIgMTAwNjQ0Ci0tLSBhL2dhcy9jb25maWcvdGMtZnJ2LmMKKysrIGIvZ2FzL2NvbmZpZy90Yy1mcnYuYwpAQCAtMTYzLDYgKzE2Myw3IEBACiAjZW5kaWYKIAogc3RhdGljIHVuc2lnbmVkIGxvbmcgZnJ2X21hY2ggPSBiZmRfbWFjaF9mcnY7CitzdGF0aWMgYmZkX2Jvb2xlYW4gZnI0MDBfYXVkaW87CiAKIC8qIEZsYWdzIHRvIHNldCBpbiB0aGUgZWxmIGhlYWRlciAqLwogc3RhdGljIGZsYWd3b3JkIGZydl9mbGFncyA9IERFRkFVTFRfRkxBR1M7CkBAIC0zNTQsMTAgKzM1NSwyNCBAQAogCSAgICBmcnZfbWFjaCA9IGJmZF9tYWNoX2ZyNTUwOwogCSAgfQogCisJZWxzZSBpZiAoc3RyY21wIChwLCAiZnI0NTAiKSA9PSAwKQorCSAgeworCSAgICBjcHVfZmxhZ3MgPSBFRl9GUlZfQ1BVX0ZSNDUwOworCSAgICBmcnZfbWFjaCA9IGJmZF9tYWNoX2ZyNDUwOworCSAgfQorCisJZWxzZSBpZiAoc3RyY21wIChwLCAiZnI0MDUiKSA9PSAwKQorCSAgeworCSAgICBjcHVfZmxhZ3MgPSBFRl9GUlZfQ1BVX0ZSNDA1OworCSAgICBmcnZfbWFjaCA9IGJmZF9tYWNoX2ZyNDAwOworCSAgICBmcjQwMF9hdWRpbyA9IFRSVUU7CisJICB9CisKIAllbHNlIGlmIChzdHJjbXAgKHAsICJmcjQwMCIpID09IDApCiAJICB7CiAJICAgIGNwdV9mbGFncyA9IEVGX0ZSVl9DUFVfRlI0MDA7CiAJICAgIGZydl9tYWNoID0gYmZkX21hY2hfZnI0MDA7CisJICAgIGZyNDAwX2F1ZGlvID0gRkFMU0U7CiAJICB9CiAKIAllbHNlIGlmIChzdHJjbXAgKHAsICJmcjMwMCIpID09IDApCkBAIC00NDYsNyArNDYxLDcgQEAKICAgZnByaW50ZiAoc3RyZWFtLCBfKCItbXBpYyAgICAgICAgTm90ZSBzbWFsbCBwb3NpdGlvbiBpbmRlcGVuZGVudCBjb2RlXG4iKSk7CiAgIGZwcmludGYgKHN0cmVhbSwgXygiLW1QSUMgICAgICAgIE5vdGUgbGFyZ2UgcG9zaXRpb24gaW5kZXBlbmRlbnQgY29kZVxuIikpOwogICBmcHJpbnRmIChzdHJlYW0sIF8oIi1tbGlicmFyeS1waWMgQ29tcGlsZSBsaWJyYXJ5IGZvciBsYXJnZSBwb3NpdGlvbiBpbmRlcGVkZW50IGNvZGVcbiIpKTsKLSAgZnByaW50ZiAoc3RyZWFtLCBfKCItbWNwdT17ZnI1MDB8ZnI1NTB8ZnI0MDB8ZnIzMDB8ZnJ2fHNpbXBsZXx0b21jYXR9XG4iKSk7CisgIGZwcmludGYgKHN0cmVhbSwgXygiLW1jcHU9e2ZyNTAwfGZyNTUwfGZyNDAwfGZyNDA1fGZyNDUwfGZyMzAwfGZydnxzaW1wbGV8dG9tY2F0fVxuIikpOwogICBmcHJpbnRmIChzdHJlYW0sIF8oIiAgICAgICAgICAgICBSZWNvcmQgdGhlIGNwdSB0eXBlXG4iKSk7CiAgIGZwcmludGYgKHN0cmVhbSwgXygiLW10b21jYXQtc3RhdHMgUHJpbnQgb3V0IHN0YXRzIGZvciB0b21jYXQgd29ya2Fyb3VuZHNcbiIpKTsKICAgZnByaW50ZiAoc3RyZWFtLCBfKCItbXRvbWNhdC1kZWJ1ZyBEZWJ1ZyB0b21jYXQgd29ya2Fyb3VuZHNcbiIpKTsKQEAgLTEwNDIsNiArMTA1NywzNiBAQAogICByZXR1cm4gMDsgLyogYWxsIGlzIG9rICovCiB9CiAKKy8qIFJldHVybiB0cnVlIGlmIHRoZSB0YXJnZXQgaW1wbGVtZW50cyBpbnN0cnVjdGlvbiBJTlNOLiAgKi8KKworc3RhdGljIGJmZF9ib29sZWFuCit0YXJnZXRfaW1wbGVtZW50c19pbnNuX3AgKGNvbnN0IENHRU5fSU5TTiAqaW5zbikKK3sKKyAgc3dpdGNoIChmcnZfbWFjaCkKKyAgICB7CisgICAgZGVmYXVsdDoKKyAgICAgIC8qIGJmZF9tYWNoX2ZydiBvciBnZW5lcmljLiAgKi8KKyAgICAgIHJldHVybiBUUlVFOworCisgICAgY2FzZSBiZmRfbWFjaF9mcjMwMDoKKyAgICBjYXNlIGJmZF9tYWNoX2ZydnNpbXBsZToKKyAgICAgIHJldHVybiBDR0VOX0lOU05fTUFDSF9IQVNfUCAoaW5zbiwgTUFDSF9TSU1QTEUpOworCisgICAgY2FzZSBiZmRfbWFjaF9mcjQwMDoKKyAgICAgIHJldHVybiAoKGZyNDAwX2F1ZGlvIHx8ICFDR0VOX0lOU05fQVRUUl9WQUxVRSAoaW5zbiwgQ0dFTl9JTlNOX0FVRElPKSkKKwkgICAgICAmJiBDR0VOX0lOU05fTUFDSF9IQVNfUCAoaW5zbiwgTUFDSF9GUjQwMCkpOworCisgICAgY2FzZSBiZmRfbWFjaF9mcjQ1MDoKKyAgICAgIHJldHVybiBDR0VOX0lOU05fTUFDSF9IQVNfUCAoaW5zbiwgTUFDSF9GUjQ1MCk7CisKKyAgICBjYXNlIGJmZF9tYWNoX2ZyNTAwOgorICAgICAgcmV0dXJuIENHRU5fSU5TTl9NQUNIX0hBU19QIChpbnNuLCBNQUNIX0ZSNTAwKTsKKworICAgIGNhc2UgYmZkX21hY2hfZnI1NTA6CisgICAgICByZXR1cm4gQ0dFTl9JTlNOX01BQ0hfSEFTX1AgKGluc24sIE1BQ0hfRlI1NTApOworICAgIH0KK30KKwogdm9pZAogbWRfYXNzZW1ibGUgKHN0cikKICAgICAgY2hhciAqIHN0cjsKQEAgLTExMjUsNiArMTE3MCwxMSBAQAogICAgICBpbnN0cnVjdGlvbnMsIGRvbid0IGRvIHZsaXcgY2hlY2tpbmcuICAqLwogICBlbHNlIGlmIChmcnZfbWFjaCAhPSBiZmRfbWFjaF9mcnYpCiAgICAgeworICAgICAgaWYgKCF0YXJnZXRfaW1wbGVtZW50c19pbnNuX3AgKGluc24uaW5zbikpCisJeworCSAgYXNfYmFkIChfKCJJbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYXJjaGl0ZWN0dXJlIikpOworCSAgcmV0dXJuOworCX0KICAgICAgIHBhY2tpbmdfY29uc3RyYWludCA9IGZydl92bGl3X2FkZF9pbnNuICgmIHZsaXcsIGluc24uaW5zbik7CiAgICAgICBpZiAoZnJ2X21hY2ggPT0gYmZkX21hY2hfZnI1NTAgJiYgISBwYWNraW5nX2NvbnN0cmFpbnQpCiAJcGFja2luZ19jb25zdHJhaW50ID0gZnI1NTBfY2hlY2tfYWNjX3JhbmdlICgmIHZsaXcsICYgaW5zbik7CmRpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLWhwcGEuYyBiL2dhcy9jb25maWcvdGMtaHBwYS5jCmluZGV4IDdmYmNkMGEuLjc3NTYzYTkgMTAwNjQ0Ci0tLSBhL2dhcy9jb25maWcvdGMtaHBwYS5jCisrKyBiL2dhcy9jb25maWcvdGMtaHBwYS5jCkBAIC0xMzk5LDYgKzEzOTksOCBAQAogICAvKiBHZXQgYSBiYXNlIHJlbG9jYXRpb24gdHlwZS4gICovCiAgIGlmIChpc19EUF9yZWxhdGl2ZSAoKmV4cCkpCiAgICAgcmVsX3R5cGUgPSBSX0hQUEFfR09UT0ZGOworICBlbHNlIGlmIChpc19QQ19yZWxhdGl2ZSAoKmV4cCkpCisgICAgcmVsX3R5cGUgPSBSX0hQUEFfUENSRUxfQ0FMTDsKICAgZWxzZSBpZiAoaXNfY29tcGxleCAoKmV4cCkpCiAgICAgcmVsX3R5cGUgPSBSX0hQUEFfQ09NUExFWDsKICAgZWxzZQpAQCAtNjM4Niw2ICs2Mzg4LDcgQEAKIAogICBpZiAoc3ltYm9sKQogICAgIHsKKyAgICAgIHN5bWJvbF9nZXRfYmZkc3ltIChzeW1ib2wpLT5mbGFncyB8PSBCU0ZfT0JKRUNUOwogICAgICAgU19TRVRfVkFMVUUgKHN5bWJvbCwgc2l6ZSk7CiAgICAgICBTX1NFVF9TRUdNRU5UIChzeW1ib2wsIGJmZF91bmRfc2VjdGlvbl9wdHIpOwogICAgICAgU19TRVRfRVhURVJOQUwgKHN5bWJvbCk7CmRpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLWlhNjQuYyBiL2dhcy9jb25maWcvdGMtaWE2NC5jCmluZGV4IGZlNjZmZmEuLmY1NTI2YzkgMTAwNjQ0Ci0tLSBhL2dhcy9jb25maWcvdGMtaWE2NC5jCisrKyBiL2dhcy9jb25maWcvdGMtaWE2NC5jCkBAIC02MzYsNiArNjM2LDkgQEAKICAgdmFsdWVUIHZhbHVlOwogfSBncl92YWx1ZXNbMTI4XSA9IHt7IDEsIDAsIDAgfX07CiAKKy8qIFJlbWVtYmVyIHRoZSBhbGlnbm1lbnQgZnJhZy4gICovCitzdGF0aWMgZnJhZ1MgKmFsaWduX2ZyYWc7CisKIC8qIFRoZXNlIGFyZSB0aGUgcm91dGluZXMgcmVxdWlyZWQgdG8gb3V0cHV0IHRoZSB2YXJpb3VzIHR5cGVzIG9mCiAgICB1bndpbmQgcmVjb3Jkcy4gICovCiAKQEAgLTcwMiw2ICs3MDUsNyBAQAogc3RhdGljIHZvaWQgc2V0X3NlY3Rpb24gUEFSQU1TICgoY2hhciAqbmFtZSkpOwogc3RhdGljIHVuc2lnbmVkIGludCBzZXRfcmVnc3RhY2sgUEFSQU1TICgodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsCiAJCQkJCSAgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpKTsKK3N0YXRpYyB2b2lkIGRvdF9hbGlnbiAoaW50KTsKIHN0YXRpYyB2b2lkIGRvdF9yYWRpeCBQQVJBTVMgKChpbnQpKTsKIHN0YXRpYyB2b2lkIGRvdF9zcGVjaWFsX3NlY3Rpb24gUEFSQU1TICgoaW50KSk7CiBzdGF0aWMgdm9pZCBkb3RfcHJvYyBQQVJBTVMgKChpbnQpKTsKQEAgLTg5OCw5ICs5MDIsMTAgQEAKIHN0YXRpYyBpbnQgY2FsY19yZWNvcmRfc2l6ZSBQQVJBTVMgKCh1bndfcmVjX2xpc3QgKikpOwogc3RhdGljIHZvaWQgc2V0X2ltYXNrIFBBUkFNUyAoKHVud19yZWNfbGlzdCAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBpbnQpKTsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIHNsb3RfaW5kZXggUEFSQU1TICgodW5zaWduZWQgbG9uZywgZnJhZ1MgKiwKLQkJCQkJIHVuc2lnbmVkIGxvbmcsIGZyYWdTICopKTsKKwkJCQkJIHVuc2lnbmVkIGxvbmcsIGZyYWdTICosCisJCQkJCSBpbnQpKTsKIHN0YXRpYyB1bndfcmVjX2xpc3QgKm9wdGltaXplX3Vud19yZWNvcmRzIFBBUkFNUyAoKHVud19yZWNfbGlzdCAqKSk7Ci1zdGF0aWMgdm9pZCBmaXh1cF91bndfcmVjb3JkcyBQQVJBTVMgKCh1bndfcmVjX2xpc3QgKikpOworc3RhdGljIHZvaWQgZml4dXBfdW53X3JlY29yZHMgUEFSQU1TICgodW53X3JlY19saXN0ICosIGludCkpOwogc3RhdGljIGludCBjb252ZXJ0X2V4cHJfdG9fYWJfcmVnIFBBUkFNUyAoKGV4cHJlc3Npb25TICosIHVuc2lnbmVkIGludCAqLCB1bnNpZ25lZCBpbnQgKikpOwogc3RhdGljIGludCBjb252ZXJ0X2V4cHJfdG9feHlfcmVnIFBBUkFNUyAoKGV4cHJlc3Npb25TICosIHVuc2lnbmVkIGludCAqLCB1bnNpZ25lZCBpbnQgKikpOwogc3RhdGljIHZvaWQgZ2VuZXJhdGVfdW53aW5kX2ltYWdlIFBBUkFNUyAoKGNvbnN0IGNoYXIgKikpOwpAQCAtMTA5MiwxNCArMTA5NywzNiBAQAogICAgICBoZXJlLiAgR2l2ZSBhbiBlcnJvciBmb3Igb3RoZXJzLiAgKi8KICAgZm9yIChwdHIgPSB1bndpbmQuY3VycmVudF9lbnRyeTsgcHRyOyBwdHIgPSBwdHItPm5leHQpCiAgICAgewotICAgICAgaWYgKHB0ci0+ci50eXBlID09IHByb2xvZ3VlIHx8IHB0ci0+ci50eXBlID09IHByb2xvZ3VlX2dyCi0JICB8fCBwdHItPnIudHlwZSA9PSBib2R5IHx8IHB0ci0+ci50eXBlID09IGVuZHApCisgICAgICBzd2l0Y2ggKHB0ci0+ci50eXBlKQogCXsKKwljYXNlIHByb2xvZ3VlOgorCWNhc2UgcHJvbG9ndWVfZ3I6CisJY2FzZSBib2R5OgorCWNhc2UgZW5kcDoKIAkgIHB0ci0+c2xvdF9udW1iZXIgPSAodW5zaWduZWQgbG9uZykgZnJhZ19tb3JlICgwKTsKIAkgIHB0ci0+c2xvdF9mcmFnID0gZnJhZ19ub3c7CisJICBicmVhazsKKworCSAgLyogQWxsb3cgYW55IHJlY29yZCB3aGljaCBkb2Vzbid0IGhhdmUgYSAidCIgZmllbGQgKGkuZS4sCisJICAgICBkb2Vzbid0IHJlbGF0ZSB0byBhIHBhcnRpY3VsYXIgaW5zdHJ1Y3Rpb24pLiAgKi8KKwljYXNlIHVud2FiaToKKwljYXNlIGJyX2dyOgorCWNhc2UgY29weV9zdGF0ZToKKwljYXNlIGZyX21lbToKKwljYXNlIGZyZ3JfbWVtOgorCWNhc2UgZ3JfZ3I6CisJY2FzZSBncl9tZW06CisJY2FzZSBsYWJlbF9zdGF0ZToKKwljYXNlIHJwX2JyOgorCWNhc2Ugc3BpbGxfYmFzZToKKwljYXNlIHNwaWxsX21hc2s6CisJICAvKiBub3RoaW5nICovCisJICBicmVhazsKKworCWRlZmF1bHQ6CisJICBhc19iYWQgKF8oIlVud2luZCBkaXJlY3RpdmUgbm90IGZvbGxvd2VkIGJ5IGFuIGluc3RydWN0aW9uLiIpKTsKKwkgIGJyZWFrOwogCX0KLSAgICAgIGVsc2UKLQlhc19iYWQgKF8oIlVud2luZCBkaXJlY3RpdmUgbm90IGZvbGxvd2VkIGJ5IGFuIGluc3RydWN0aW9uLiIpKTsKICAgICB9CiAgIHVud2luZC5jdXJyZW50X2VudHJ5ID0gTlVMTDsKIApAQCAtMTEwOSw5ICsxMTM2LDggQEAKICAgICBhc19iYWQgKCJxdWFsaWZ5aW5nIHByZWRpY2F0ZSBub3QgZm9sbG93ZWQgYnkgaW5zdHJ1Y3Rpb24iKTsKIH0KIAotdm9pZAotaWE2NF9kb19hbGlnbiAobmJ5dGVzKQotICAgICBpbnQgbmJ5dGVzOworc3RhdGljIHZvaWQKK2lhNjRfZG9fYWxpZ24gKGludCBuYnl0ZXMpCiB7CiAgIGNoYXIgKnNhdmVkX2lucHV0X2xpbmVfcG9pbnRlciA9IGlucHV0X2xpbmVfcG9pbnRlcjsKIApAQCAtMjU5MCwxNCArMjYxNiwxNiBAQAogCiAvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBpbnN0cnVjdGlvbiBzbG90cyBmcm9tIEZJUlNUX0FERFIgdG8gU0xPVF9BRERSLgogICAgU0xPVF9GUkFHIGlzIHRoZSBmcmFnIGNvbnRhaW5pbmcgU0xPVF9BRERSLCBhbmQgRklSU1RfRlJBRyBpcyB0aGUgZnJhZwotICAgY29udGFpbmluZyBGSVJTVF9BRERSLiAgKi8KKyAgIGNvbnRhaW5pbmcgRklSU1RfQUREUi4gIElmIEJFRk9SRV9SRUxBWCwgdGhlbiB3ZSB1c2Ugd29yc3QtY2FzZSBlc3RpbWF0ZXMKKyAgIGZvciBmcmFnIHNpemVzLiAgKi8KIAogdW5zaWduZWQgbG9uZwotc2xvdF9pbmRleCAoc2xvdF9hZGRyLCBzbG90X2ZyYWcsIGZpcnN0X2FkZHIsIGZpcnN0X2ZyYWcpCitzbG90X2luZGV4IChzbG90X2FkZHIsIHNsb3RfZnJhZywgZmlyc3RfYWRkciwgZmlyc3RfZnJhZywgYmVmb3JlX3JlbGF4KQogICAgICB1bnNpZ25lZCBsb25nIHNsb3RfYWRkcjsKICAgICAgZnJhZ1MgKnNsb3RfZnJhZzsKICAgICAgdW5zaWduZWQgbG9uZyBmaXJzdF9hZGRyOwogICAgICBmcmFnUyAqZmlyc3RfZnJhZzsKKyAgICAgaW50IGJlZm9yZV9yZWxheDsKIHsKICAgdW5zaWduZWQgbG9uZyBpbmRleCA9IDA7CiAKQEAgLTI2MTIsMTAgKzI2NDAsMTAgQEAKICAgICB7CiAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2FkZHIgPSAodW5zaWduZWQgbG9uZykgJmZpcnN0X2ZyYWctPmZyX2xpdGVyYWw7CiAKLSAgICAgIGlmIChmaW5hbGl6ZV9zeW1zKQorICAgICAgaWYgKCEgYmVmb3JlX3JlbGF4KQogCXsKLQkgIC8qIFdlIGNhbiBnZXQgdGhlIGZpbmFsIGFkZHJlc3NlcyBvbmx5IGFmdGVyIHJlbGF4YXRpb24gaXMKLQkgICAgIGRvbmUuICovCisJICAvKiBXZSBjYW4gZ2V0IHRoZSBmaW5hbCBhZGRyZXNzZXMgb25seSBkdXJpbmcgYW5kIGFmdGVyCisJICAgICByZWxheGF0aW9uLiAgKi8KIAkgIGlmIChmaXJzdF9mcmFnLT5mcl9uZXh0ICYmIGZpcnN0X2ZyYWctPmZyX25leHQtPmZyX2FkZHJlc3MpCiAJICAgIGluZGV4ICs9IDMgKiAoKGZpcnN0X2ZyYWctPmZyX25leHQtPmZyX2FkZHJlc3MKIAkJCSAgIC0gZmlyc3RfZnJhZy0+ZnJfYWRkcmVzcwpAQCAtMjY5NCw4ICsyNzIyLDkgQEAKICAgIHdpdGhpbiBlYWNoIHJlY29yZCB0byBnZW5lcmF0ZSBhbiBpbWFnZS4gICovCiAKIHN0YXRpYyB2b2lkCi1maXh1cF91bndfcmVjb3JkcyAobGlzdCkKK2ZpeHVwX3Vud19yZWNvcmRzIChsaXN0LCBiZWZvcmVfcmVsYXgpCiAgICAgIHVud19yZWNfbGlzdCAqbGlzdDsKKyAgICAgaW50IGJlZm9yZV9yZWxheDsKIHsKICAgdW53X3JlY19saXN0ICpwdHIsICpyZWdpb24gPSAwOwogICB1bnNpZ25lZCBsb25nIGZpcnN0X2FkZHIgPSAwLCBybGVuID0gMCwgdDsKQEAgLTI3MDYsNyArMjczNSw3IEBACiAgICAgICBpZiAocHRyLT5zbG90X251bWJlciA9PSBTTE9UX05VTV9OT1RfU0VUKQogCWFzX2JhZCAoIiBJbnNuIHNsb3Qgbm90IHNldCBpbiB1bndpbmQgcmVjb3JkLiIpOwogICAgICAgdCA9IHNsb3RfaW5kZXggKHB0ci0+c2xvdF9udW1iZXIsIHB0ci0+c2xvdF9mcmFnLAotCQkgICAgICBmaXJzdF9hZGRyLCBmaXJzdF9mcmFnKTsKKwkJICAgICAgZmlyc3RfYWRkciwgZmlyc3RfZnJhZywgYmVmb3JlX3JlbGF4KTsKICAgICAgIHN3aXRjaCAocHRyLT5yLnR5cGUpCiAJewogCWNhc2UgcHJvbG9ndWU6CkBAIC0yNzMwLDcgKzI3NTksOCBAQAogCQkgIGxhc3RfZnJhZyA9IGxhc3QtPnNsb3RfZnJhZzsKIAkJICBicmVhazsKIAkJfQotCSAgICBzaXplID0gc2xvdF9pbmRleCAobGFzdF9hZGRyLCBsYXN0X2ZyYWcsIGZpcnN0X2FkZHIsIGZpcnN0X2ZyYWcpOworCSAgICBzaXplID0gc2xvdF9pbmRleCAobGFzdF9hZGRyLCBsYXN0X2ZyYWcsIGZpcnN0X2FkZHIsIGZpcnN0X2ZyYWcsCisJCQkgICAgICAgYmVmb3JlX3JlbGF4KTsKIAkgICAgcmxlbiA9IHB0ci0+ci5yZWNvcmQuci5ybGVuID0gc2l6ZTsKIAkgICAgaWYgKHB0ci0+ci50eXBlID09IGJvZHkpCiAJICAgICAgLyogRW5kIG9mIHJlZ2lvbi4gICovCkBAIC0yODMwLDYgKzI4NjAsMzUgQEAKICAgICB9CiB9CiAKKy8qIEVzdGltYXRlIHRoZSBzaXplIG9mIGEgZnJhZyBiZWZvcmUgcmVsYXhpbmcuICBXZSBvbmx5IGhhdmUgb25lIHR5cGUgb2YgZnJhZworICAgdG8gaGFuZGxlIGhlcmUsIHdoaWNoIGlzIHRoZSB1bndpbmQgaW5mbyBmcmFnLiAgKi8KKworaW50CitpYTY0X2VzdGltYXRlX3NpemVfYmVmb3JlX3JlbGF4IChmcmFnUyAqZnJhZywKKwkJCQkgYXNlY3Rpb24gKnNlZ3R5cGUgQVRUUklCVVRFX1VOVVNFRCkKK3sKKyAgdW53X3JlY19saXN0ICpsaXN0OworICBpbnQgbGVuLCBzaXplLCBwYWQ7CisKKyAgLyogPz8/IFRoaXMgY29kZSBpcyBpZGVudGljYWwgdG8gdGhlIGZpcnN0IHBhcnQgb2YgaWE2NF9jb252ZXJ0X2ZyYWcuICAqLworICBsaXN0ID0gKHVud19yZWNfbGlzdCAqKSBmcmFnLT5mcl9vcGNvZGU7CisgIGZpeHVwX3Vud19yZWNvcmRzIChsaXN0LCAwKTsKKworICBsZW4gPSBjYWxjX3JlY29yZF9zaXplIChsaXN0KTsKKyAgLyogcGFkIHRvIHBvaW50ZXItc2l6ZSBib3VuZGFyeS4gICovCisgIHBhZCA9IGxlbiAlIG1kLnBvaW50ZXJfc2l6ZTsKKyAgaWYgKHBhZCAhPSAwKQorICAgIGxlbiArPSBtZC5wb2ludGVyX3NpemUgLSBwYWQ7CisgIC8qIEFkZCA4IGZvciB0aGUgaGVhZGVyICsgYSBwb2ludGVyIGZvciB0aGUgcGVyc29uYWxpdHkgb2Zmc2V0LiAgKi8KKyAgc2l6ZSA9IGxlbiArIDggKyBtZC5wb2ludGVyX3NpemU7CisKKyAgLyogZnJfdmFyIGNhcnJpZXMgdGhlIG1heF9jaGFycyB0aGF0IHdlIGNyZWF0ZWQgdGhlIGZyYWdtZW50IHdpdGguCisgICAgIFdlIG11c3QsIG9mIGNvdXJzZSwgaGF2ZSBhbGxvY2F0ZWQgZW5vdWdoIG1lbW9yeSBlYXJsaWVyLiAgKi8KKyAgYXNzZXJ0IChmcmFnLT5mcl92YXIgPj0gc2l6ZSk7CisKKyAgcmV0dXJuIGZyYWctPmZyX2ZpeCArIHNpemU7Cit9CisKIC8qIFRoaXMgZnVuY3Rpb24gY29udmVydHMgYSByc19tYWNoaW5lX2RlcGVuZGVudCB2YXJpYW50IGZyYWcgaW50byBhCiAgIG5vcm1hbCBmaWxsIGZyYWcgd2l0aCB0aGUgdW53aW5kIGltYWdlIGZyb20gdGhlIHRoZSByZWNvcmQgbGlzdC4gICovCiB2b2lkCkBAIC0yODM5LDggKzI4OTgsOSBAQAogICBpbnQgbGVuLCBzaXplLCBwYWQ7CiAgIHZhbHVlVCBmbGFnX3ZhbHVlOwogCisgIC8qID8/PyBUaGlzIGNvZGUgaXMgaWRlbnRpY2FsIHRvIGlhNjRfZXN0aW1hdGVfc2l6ZV9iZWZvcmVfcmVsYXguICAqLwogICBsaXN0ID0gKHVud19yZWNfbGlzdCAqKSBmcmFnLT5mcl9vcGNvZGU7Ci0gIGZpeHVwX3Vud19yZWNvcmRzIChsaXN0KTsKKyAgZml4dXBfdW53X3JlY29yZHMgKGxpc3QsIDApOwogCiAgIGxlbiA9IGNhbGNfcmVjb3JkX3NpemUgKGxpc3QpOwogICAvKiBwYWQgdG8gcG9pbnRlci1zaXplIGJvdW5kYXJ5LiAgKi8KQEAgLTI5NzQsNiArMzAzNCwxNCBAQAogfQogCiBzdGF0aWMgdm9pZAorZG90X2FsaWduIChpbnQgYXJnKQoreworICAvKiBUaGUgY3VycmVudCBmcmFnIGlzIGFuIGFsaWdubWVudCBmcmFnLiAgKi8KKyAgYWxpZ25fZnJhZyA9IGZyYWdfbm93OworICBzX2FsaWduX2J5dGVzIChhcmcpOworfQorCitzdGF0aWMgdm9pZAogZG90X3JhZGl4IChkdW1teSkKICAgICAgaW50IGR1bW15IEFUVFJJQlVURV9VTlVTRUQ7CiB7CkBAIC0zMjY0LDcgKzMzMzIsNyBAQAogCiAgIC8qIEdlbmVyYXRlIHRoZSB1bndpbmQgcmVjb3JkLiAgKi8KICAgbGlzdCA9IG9wdGltaXplX3Vud19yZWNvcmRzICh1bndpbmQubGlzdCk7Ci0gIGZpeHVwX3Vud19yZWNvcmRzIChsaXN0KTsKKyAgZml4dXBfdW53X3JlY29yZHMgKGxpc3QsIDEpOwogICBzaXplID0gY2FsY19yZWNvcmRfc2l6ZSAobGlzdCk7CiAKICAgaWYgKHNpemUgPiAwIHx8IHVud2luZC5mb3JjZV91bndpbmRfZW50cnkpCkBAIC0zNTQ5LDcgKzM2MTcsNyBAQAogICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9icl9tZW0gKGJybWFzaykpOwogCiAgIGlmICghaXNfZW5kX29mX2xpbmVbc2VwXSAmJiAhaXNfaXRfZW5kX29mX3N0YXRlbWVudCAoKSkKLSAgICBpZ25vcmVfcmVzdF9vZl9saW5lICgpOworICAgIGRlbWFuZF9lbXB0eV9yZXN0X29mX2xpbmUgKCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0zNTgxLDcgKzM2NDksNyBAQAogCiAgIHNlcCA9IHBhcnNlX29wZXJhbmQgKCZlKTsKICAgaWYgKCFpc19lbmRfb2ZfbGluZVtzZXBdICYmICFpc19pdF9lbmRfb2Zfc3RhdGVtZW50ICgpKQotICAgIGlnbm9yZV9yZXN0X29mX2xpbmUgKCk7CisgICAgZGVtYW5kX2VtcHR5X3Jlc3Rfb2ZfbGluZSAoKTsKIAogICBpZiAoZS5YX29wICE9IE9fY29uc3RhbnQpCiAgICAgYXNfYmFkICgiT3BlcmFuZCB0byAuc3BpbGwgbXVzdCBiZSBhIGNvbnN0YW50Iik7CkBAIC0zODU3LDcgKzM5MjUsNyBAQAogICAgIH0KICAgc2VwID0gcGFyc2Vfb3BlcmFuZCAoJmUyKTsKICAgaWYgKCFpc19lbmRfb2ZfbGluZVtzZXBdICYmICFpc19pdF9lbmRfb2Zfc3RhdGVtZW50ICgpKQotICAgIGlnbm9yZV9yZXN0X29mX2xpbmUgKCk7CisgICAgZGVtYW5kX2VtcHR5X3Jlc3Rfb2ZfbGluZSAoKTsKIAogICBpZiAoZTEuWF9vcCAhPSBPX2NvbnN0YW50KQogICAgIHsKQEAgLTM5NTIsNyArNDAyMCw3IEBACiAJYXNfYmFkICgiTm8gc2Vjb25kIG9wZXJhbmQgdG8gLnByb2xvZ3VlIik7CiAgICAgICBzZXAgPSBwYXJzZV9vcGVyYW5kICgmZTIpOwogICAgICAgaWYgKCFpc19lbmRfb2ZfbGluZVtzZXBdICYmICFpc19pdF9lbmRfb2Zfc3RhdGVtZW50ICgpKQotCWlnbm9yZV9yZXN0X29mX2xpbmUgKCk7CisJZGVtYW5kX2VtcHR5X3Jlc3Rfb2ZfbGluZSAoKTsKIAogICAgICAgaWYgKGUxLlhfb3AgPT0gT19jb25zdGFudCkKIAl7CkBAIC00OTAwLDcgKzQ5NjgsNyBAQAogICAgIHsgImxiIiwgZG90X3Njb3BlLCAwIH0sCiAgICAgeyAibGUiLCBkb3Rfc2NvcGUsIDEgfSwKICNlbmRpZgotICAgIHsgImFsaWduIiwgc19hbGlnbl9ieXRlcywgMCB9LAorICAgIHsgImFsaWduIiwgZG90X2FsaWduLCAwIH0sCiAgICAgeyAicmVnc3RrIiwgZG90X3JlZ3N0aywgMCB9LAogICAgIHsgInJvdHIiLCBkb3Rfcm90LCBEWU5SRUdfR1IgfSwKICAgICB7ICJyb3RmIiwgZG90X3JvdCwgRFlOUkVHX0ZSIH0sCkBAIC05OTMzLDcgKzEwMDAxLDI3IEBACiAgIGZsYWdzID0gaWRlc2MtPmZsYWdzOwogCiAgIGlmICgoZmxhZ3MgJiBJQTY0X09QQ09ERV9GSVJTVCkgIT0gMCkKLSAgICBpbnNuX2dyb3VwX2JyZWFrICgxLCAwLCAwKTsKKyAgICB7CisgICAgICAvKiBUaGUgYWxpZ25tZW50IGZyYWcgaGFzIHRvIGVuZCB3aXRoIGEgc3RvcCBiaXQgb25seSBpZiB0aGUKKwkgbmV4dCBpbnN0cnVjdGlvbiBhZnRlciB0aGUgYWxpZ25tZW50IGRpcmVjdGl2ZSBoYXMgdG8gYmUKKwkgdGhlIGZpcnN0IGluc3RydWN0aW9uIGluIGFuIGluc3RydWN0aW9uIGdyb3VwLiAgKi8KKyAgICAgIGlmIChhbGlnbl9mcmFnKQorCXsKKwkgIHdoaWxlIChhbGlnbl9mcmFnLT5mcl90eXBlICE9IHJzX2FsaWduX2NvZGUpCisJICAgIHsKKwkgICAgICBhbGlnbl9mcmFnID0gYWxpZ25fZnJhZy0+ZnJfbmV4dDsKKwkgICAgICBpZiAoIWFsaWduX2ZyYWcpCisJCWJyZWFrOworCSAgICB9CisJICAvKiBhbGlnbl9mcmFnIGNhbiBiZSBOVUxMIGlmIHRoZXJlIGFyZSBkaXJlY3RpdmVzIGluCisJICAgICBiZXR3ZWVuLiAgKi8KKwkgIGlmIChhbGlnbl9mcmFnICYmIGFsaWduX2ZyYWctPmZyX25leHQgPT0gZnJhZ19ub3cpCisJICAgIGFsaWduX2ZyYWctPnRjX2ZyYWdfZGF0YSA9IDE7CisJfQorCisgICAgICBpbnNuX2dyb3VwX2JyZWFrICgxLCAwLCAwKTsKKyAgICB9CisgIGFsaWduX2ZyYWcgPSBOVUxMOwogCiAgIGlmICgoZmxhZ3MgJiBJQTY0X09QQ09ERV9OT19QUkVEKSAhPSAwICYmIHFwX3JlZ25vICE9IDApCiAgICAgewpAQCAtMTA3NjYsMTYgKzEwODU0LDQzIEBACiAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGxlX25vcFtdCiAgICAgPSB7IDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsCiAJMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMH07CisgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGxlX25vcF9zdG9wW10KKyAgICA9IHsgMHgwZCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwfTsKIAogICBpbnQgYnl0ZXM7CiAgIGNoYXIgKnA7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5vcDsKIAogICBpZiAoZnJhZ3AtPmZyX3R5cGUgIT0gcnNfYWxpZ25fY29kZSkKICAgICByZXR1cm47CiAKKyAgLyogQ2hlY2sgaWYgdGhpcyBmcmFnIGhhcyB0byBlbmQgd2l0aCBhIHN0b3AgYml0LiAgKi8KKyAgbm9wID0gZnJhZ3AtPnRjX2ZyYWdfZGF0YSA/IGxlX25vcF9zdG9wIDogbGVfbm9wOworCiAgIGJ5dGVzID0gZnJhZ3AtPmZyX25leHQtPmZyX2FkZHJlc3MgLSBmcmFncC0+ZnJfYWRkcmVzcyAtIGZyYWdwLT5mcl9maXg7CiAgIHAgPSBmcmFncC0+ZnJfbGl0ZXJhbCArIGZyYWdwLT5mcl9maXg7CiAKKyAgLyogSWYgbm8gcGFkZGluZ3MgYXJlIG5lZWRlZCwgd2UgY2hlY2sgaWYgd2UgbmVlZCBhIHN0b3AgYml0LiAgKi8gCisgIGlmICghYnl0ZXMgJiYgZnJhZ3AtPnRjX2ZyYWdfZGF0YSkKKyAgICB7CisgICAgICBpZiAoZnJhZ3AtPmZyX2ZpeCA8IDE2KQorI2lmIDEKKwkvKiBGSVhNRTogSXQgd29uJ3Qgd29yayB3aXRoCisJICAgLmFsaWduIDE2CisJICAgYWxsb2MgcjMyPWFyLnBmcywxLDIsNCwwCisJICovCisJOworI2Vsc2UKKwlhc19iYWRfd2hlcmUgKGZyYWdwLT5mcl9maWxlLCBmcmFncC0+ZnJfbGluZSwKKwkJICAgICAgXygiQ2FuJ3QgYWRkIHN0b3AgYml0IHRvIG1hcmsgZW5kIG9mIGluc3RydWN0aW9uIGdyb3VwIikpOworI2VuZGlmCisgICAgICBlbHNlCisJLyogQnVuZGxlcyBhcmUgYWx3YXlzIGluIGxpdHRsZS1lbmRpYW4gYnl0ZSBvcmRlci4gTWFrZSBzdXJlCisJICAgdGhlIHByZXZpb3VzIGJ1bmRsZSBoYXMgdGhlIHN0b3AgYml0LiAgKi8KKwkqKHAgLSAxNikgfD0gMTsKKyAgICB9CisKICAgLyogTWFrZSBzdXJlIHdlIGFyZSBvbiBhIDE2LWJ5dGUgYm91bmRhcnksIGluIGNhc2Ugc29tZW9uZSBoYXMgYmVlbgogICAgICBwdXR0aW5nIGRhdGEgaW50byBhIHRleHQgc2VjdGlvbi4gICovCiAgIGlmIChieXRlcyAmIDE1KQpAQCAtMTA3ODgsNyArMTA5MDMsNyBAQAogICAgIH0KIAogICAvKiBJbnN0cnVjdGlvbiBidW5kbGVzIGFyZSBhbHdheXMgbGl0dGxlLWVuZGlhbi4gICovCi0gIG1lbWNweSAocCwgbGVfbm9wLCAxNik7CisgIG1lbWNweSAocCwgbm9wLCAxNik7CiAgIGZyYWdwLT5mcl92YXIgPSAxNjsKIH0KIApkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1pYTY0LmggYi9nYXMvY29uZmlnL3RjLWlhNjQuaAppbmRleCBkMWEwNGVlLi5kY2MyYzI5IDEwMDY0NAotLS0gYS9nYXMvY29uZmlnL3RjLWlhNjQuaAorKysgYi9nYXMvY29uZmlnL3RjLWlhNjQuaApAQCAtODYsNyArODYsNiBAQAogICAgIGVudW0gaWE2NF9vcG5kIG9wbmQ7CiAgIH07CiAKLWV4dGVybiB2b2lkIGlhNjRfZG9fYWxpZ24gUEFSQU1TKChpbnQgbikpOwogZXh0ZXJuIHZvaWQgaWE2NF9lbmRfb2Zfc291cmNlIFBBUkFNUygodm9pZCkpOwogZXh0ZXJuIHZvaWQgaWE2NF9zdGFydF9saW5lIFBBUkFNUygodm9pZCkpOwogZXh0ZXJuIGludCBpYTY0X3VucmVjb2duaXplZF9saW5lIFBBUkFNUygoaW50IGNoKSk7CkBAIC0xMTUsNiArMTE0LDcgQEAKIGV4dGVybiB2b2lkIGlhNjRfYWZ0ZXJfcGFyc2VfYXJncyBQQVJBTVMgKCh2b2lkKSk7CiBleHRlcm4gdm9pZCBpYTY0X2R3YXJmMl9lbWl0X29mZnNldCBQQVJBTVMgKChzeW1ib2xTICosIHVuc2lnbmVkIGludCkpOwogZXh0ZXJuIHZvaWQgaWE2NF9jaGVja19sYWJlbCBQQVJBTVMgKChzeW1ib2xTICopKTsKK2V4dGVybiBpbnQgaWE2NF9lc3RpbWF0ZV9zaXplX2JlZm9yZV9yZWxheCAoZnJhZ1MgKiwgYXNlY3Rpb24gKik7CiBleHRlcm4gdm9pZCBpYTY0X2NvbnZlcnRfZnJhZyAoZnJhZ1MgKik7CiAKICNkZWZpbmUgbWRfZW5kKCkgICAgICAgCQkJaWE2NF9lbmRfb2Zfc291cmNlICgpCkBAIC0xMzgsNyArMTM4LDcgQEAKICNkZWZpbmUgbWRfY3JlYXRlX3Nob3J0X2p1bXAocCxmLHQsZnIscykgXAogCQkJCQlhc19mYXRhbCAoImlhNjRfY3JlYXRlX3Nob3J0X2p1bXAiKQogI2RlZmluZSBtZF9lc3RpbWF0ZV9zaXplX2JlZm9yZV9yZWxheChmLHMpIFwKLQkJCQkJKGYpLT5mcl92YXIKKwkJCQkJaWE2NF9lc3RpbWF0ZV9zaXplX2JlZm9yZV9yZWxheChmLHMpCiAjZGVmaW5lIG1kX2VsZl9zZWN0aW9uX2xldHRlcgkJaWE2NF9lbGZfc2VjdGlvbl9sZXR0ZXIKICNkZWZpbmUgbWRfZWxmX3NlY3Rpb25fZmxhZ3MJCWlhNjRfZWxmX3NlY3Rpb25fZmxhZ3MKICNkZWZpbmUgVENfRklYX1RZUEUJCQlzdHJ1Y3QgaWE2NF9maXgKQEAgLTE1NCw2ICsxNTQsMTAgQEAKICNkZWZpbmUgVENfRFdBUkYyX0VNSVRfT0ZGU0VUCQlpYTY0X2R3YXJmMl9lbWl0X29mZnNldAogI2RlZmluZSB0Y19jaGVja19sYWJlbChsKQkJaWE2NF9jaGVja19sYWJlbCAobCkKIAorLyogUmVjb3JkIGlmIGFuIGFsaWdubWVudCBmcmFnIHNob3VsZCBlbmQgd2l0aCBhIHN0b3AgYml0LiAgKi8KKyNkZWZpbmUgVENfRlJBR19UWVBFCQkJaW50CisjZGVmaW5lIFRDX0ZSQUdfSU5JVChGUkFHUCkJCWRvIHsoRlJBR1ApLT50Y19mcmFnX2RhdGEgPSAwO313aGlsZSAoMCkKKwogI2RlZmluZSBNQVhfTUVNX0ZPUl9SU19BTElHTl9DT0RFICAoMTUgKyAxNikKIAogI2RlZmluZSBXT1JLSU5HX0RPVF9XT1JECS8qIGRvbid0IGRvIGJyb2tlbiB3b3JkIHByb2Nlc3NpbmcgZm9yIG5vdyAqLwpkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1pcTIwMDAuYyBiL2dhcy9jb25maWcvdGMtaXEyMDAwLmMKaW5kZXggMGFiNjUwYS4uOWY1OTFkMyAxMDA2NDQKLS0tIGEvZ2FzL2NvbmZpZy90Yy1pcTIwMDAuYworKysgYi9nYXMvY29uZmlnL3RjLWlxMjAwMC5jCkBAIC0xLDUgKzEsNSBAQAogLyogdGMtaXEyMDAwLmMgLS0gQXNzZW1ibGVyIGZvciB0aGUgU2l0ZXJhIElRMjAwMC4KLSAgIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHQVMsIHRoZSBHTlUgQXNzZW1ibGVyLgogCkBAIC0zNTcsNyArMzU3LDcgQEAKICBvcmkgXFxydCwlMCxcXGltbVxuXAogIC5lbHNlaWYgKFxcaW1tICYgMHhmZmZmMDAwMCA9PSAweGZmZmYwMDAwKVxuXAogIGFkZGkgXFxydCwlMCxcXGltbVxuXAotIC5lbHNlaWYgKFxcaW1tICYgMHgwMDAwZmZmZiA9PSAwKQorIC5lbHNlaWYgKFxcaW1tICYgMHgwMDAwZmZmZiA9PSAwKVxuXAogIGx1aSBcXHJ0LCV1aGkoXFxpbW0pXG5cCiAgLmVsc2VcblwKICBsdWkgXFxydCwldWhpKFxcaW1tKVxuXApkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1tMzJyLmMgYi9nYXMvY29uZmlnL3RjLW0zMnIuYwppbmRleCBmYjFjNjEzLi43YjAxNTE2IDEwMDY0NAotLS0gYS9nYXMvY29uZmlnL3RjLW0zMnIuYworKysgYi9nYXMvY29uZmlnL3RjLW0zMnIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHRjLW0zMnIuYyAtLSBBc3NlbWJsZXIgZm9yIHRoZSBSZW5lc2FzIE0zMlIuCi0gICBDb3B5cmlnaHQgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMworICAgQ29weXJpZ2h0IDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHQVMsIHRoZSBHTlUgQXNzZW1ibGVyLgpAQCAtMTA5LDcgKzEwOSw3IEBACiAKIC8qIE5vbi16ZXJvIGlmIC1iaXRpbnN0IGhhcyBiZWVuIHNwZWNpZmllZCwgaW4gd2hpY2ggY2FzZSBzdXBwb3J0CiAgICBmb3IgZXh0ZW5kZWQgTTMyUiBiaXQtZmllbGQgaW5zdHJ1Y3Rpb24gc2V0IHNob3VsZCBiZSBlbmFibGVkLiAgKi8KLXN0YXRpYyBpbnQgZW5hYmxlX3NwZWNpYWxfbTMyciA9IDA7CitzdGF0aWMgaW50IGVuYWJsZV9zcGVjaWFsX20zMnIgPSAxOwogCiAvKiBOb24temVybyBpZiAtZmxvYXQgaGFzIGJlZW4gc3BlY2lmaWVkLCBpbiB3aGljaCBjYXNlIHN1cHBvcnQgZm9yCiAgICBleHRlbmRlZCBNMzJSIGZsb2F0aW5nIHBvaW50IGluc3RydWN0aW9uIHNldCBzaG91bGQgYmUgZW5hYmxlZC4gICovCkBAIC0yMTYsNyArMjE2LDggQEAKICNkZWZpbmUgT1BUSU9OX05PX0lHTk9SRV9QQVJBTExFTCAoT1BUSU9OX0lHTk9SRV9QQVJBTExFTCArIDEpCiAjZGVmaW5lIE9QVElPTl9TUEVDSUFMCQkgIChPUFRJT05fTk9fSUdOT1JFX1BBUkFMTEVMICsgMSkKICNkZWZpbmUgT1BUSU9OX1NQRUNJQUxfTTMyUiAgICAgICAoT1BUSU9OX1NQRUNJQUwgKyAxKQotI2RlZmluZSBPUFRJT05fU1BFQ0lBTF9GTE9BVCAgICAgIChPUFRJT05fU1BFQ0lBTF9NMzJSICsgMSkKKyNkZWZpbmUgT1BUSU9OX05PX1NQRUNJQUxfTTMyUiAgICAoT1BUSU9OX1NQRUNJQUxfTTMyUiArIDEpCisjZGVmaW5lIE9QVElPTl9TUEVDSUFMX0ZMT0FUICAgICAgKE9QVElPTl9OT19TUEVDSUFMX00zMlIgKyAxKQogI2RlZmluZSBPUFRJT05fV0FSTl9VTk1BVENIRUQgCSAgKE9QVElPTl9TUEVDSUFMX0ZMT0FUICsgMSkKICNkZWZpbmUgT1BUSU9OX05PX1dBUk5fVU5NQVRDSEVEICAoT1BUSU9OX1dBUk5fVU5NQVRDSEVEICsgMSkKICAgeyJtMzJyIiwgIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTTMyUn0sCkBAIC0yMzgsNiArMjM5LDcgQEAKICAgeyJuSXAiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUSU9OX05PX0lHTk9SRV9QQVJBTExFTH0sCiAgIHsiaGlkZGVuIiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9TUEVDSUFMfSwKICAgeyJiaXRpbnN0Iiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9TUEVDSUFMX00zMlJ9LAorICB7Im5vLWJpdGluc3QiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUSU9OX05PX1NQRUNJQUxfTTMyUn0sCiAgIHsiZmxvYXQiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUSU9OX1NQRUNJQUxfRkxPQVR9LAogICAvKiBTaWdoLiAgSSBndWVzcyBhbGwgd2FybmluZ3MgbXVzdCBub3cgaGF2ZSBib3RoIHZhcmlhbnRzLiAgKi8KICAgeyJ3YXJuLXVubWF0Y2hlZC1oaWdoIiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9XQVJOX1VOTUFUQ0hFRH0sCkBAIC0zNTMsNiArMzU1LDEwIEBACiAgICAgICBlbmFibGVfc3BlY2lhbF9tMzJyID0gMTsKICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBPUFRJT05fTk9fU1BFQ0lBTF9NMzJSOgorICAgICAgZW5hYmxlX3NwZWNpYWxfbTMyciA9IDA7CisgICAgICBicmVhazsKKwogICAgIGNhc2UgT1BUSU9OX1NQRUNJQUxfRkxPQVQ6CiAgICAgICBlbmFibGVfc3BlY2lhbF9mbG9hdCA9IDE7CiAgICAgICBicmVhazsKQEAgLTQxMCw2ICs0MTYsOCBAQAogICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKICAgLW5vLXBhcmFsbGVsICAgICAgICAgICAgZGlzYWJsZSAtcGFyYWxsZWxcbiIpKTsKICAgZnByaW50ZiAoc3RyZWFtLCBfKCJcCisgIC1uby1iaXRpbnN0ICAgICAgICAgICAgIGRpc2FsbG93IHRoZSBNMzJSMidzIGV4dGVuZGVkIGJpdC1maWVsZCBpbnN0cnVjdGlvbnNcbiIpKTsKKyAgZnByaW50ZiAoc3RyZWFtLCBfKCJcCiAgIC1PICAgICAgICAgICAgICAgICAgICAgIHRyeSB0byBvcHRpbWl6ZSBjb2RlLiAgSW1wbGllcyAtcGFyYWxsZWxcbiIpKTsKIAogICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtcHBjLmMgYi9nYXMvY29uZmlnL3RjLXBwYy5jCmluZGV4IDg2ZGFlYTAuLjY2MzY2YTUgMTAwNjQ0Ci0tLSBhL2dhcy9jb25maWcvdGMtcHBjLmMKKysrIGIvZ2FzL2NvbmZpZy90Yy1wcGMuYwpAQCAtMSw2ICsxLDYgQEAKIC8qIHRjLXBwYy5jIC0tIEFzc2VtYmxlIGZvciB0aGUgUG93ZXJQQyBvciBQT1dFUiAoUlMvNjAwMCkKLSAgIENvcHlyaWdodCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzCi0gICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLAorICAgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgIFdyaXR0ZW4gYnkgSWFuIExhbmNlIFRheWxvciwgQ3lnbnVzIFN1cHBvcnQuCiAKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdBUywgdGhlIEdOVSBBc3NlbWJsZXIuCkBAIC0xODMsNyArMTgzLDcgQEAKICAgIGFzIGluIDBkMS4wLiAgKi8KIGNvbnN0IGNoYXIgRkxUX0NIQVJTW10gPSAiZEQiOwogCi0vKiAnKycgYW5kICctJyBjYW4gYmUgdXNlZCBhcyBwb3N0Zml4IHByZWRpY2F0ZSBwcmVkaWN0b3JzIGZvciBjb25kaXRpb25hbCAKKy8qICcrJyBhbmQgJy0nIGNhbiBiZSB1c2VkIGFzIHBvc3RmaXggcHJlZGljYXRlIHByZWRpY3RvcnMgZm9yIGNvbmRpdGlvbmFsCiAgICBicmFuY2hlcy4gIFNvIHRoZXkgbmVlZCB0byBiZSBhY2NlcHRlZCBhcyBzeW1ib2wgY2hhcmFjdGVycy4gICovCiBjb25zdCBjaGFyIHBwY19zeW1ib2xfY2hhcnNbXSA9ICIrLSI7CiAKQEAgLTE0OTMsOCArMTQ5MywxMCBAQAogewogICBzdHJ1Y3QgbWFwX2JmZCB7CiAgICAgY2hhciAqc3RyaW5nOwotICAgIGludCBsZW5ndGg7Ci0gICAgaW50IHJlbG9jOworICAgIHVuc2lnbmVkIGludCBsZW5ndGggOiA4OworICAgIHVuc2lnbmVkIGludCB2YWxpZDMyIDogMTsKKyAgICB1bnNpZ25lZCBpbnQgdmFsaWQ2NCA6IDE7CisgICAgdW5zaWduZWQgaW50IHJlbG9jOwogICB9OwogCiAgIGNoYXIgaWRlbnRbMjBdOwpAQCAtMTUwNCw5NyArMTUwNiw5NyBAQAogICBpbnQgbGVuOwogICBjb25zdCBzdHJ1Y3QgbWFwX2JmZCAqcHRyOwogCi0jZGVmaW5lIE1BUChzdHIscmVsb2MpIHsgc3RyLCBzaXplb2YgKHN0ciktMSwgcmVsb2MgfQorI2RlZmluZSBNQVAoc3RyLCByZWxvYykgICB7IHN0ciwgc2l6ZW9mIChzdHIpIC0gMSwgMSwgMSwgcmVsb2MgfQorI2RlZmluZSBNQVAzMihzdHIsIHJlbG9jKSB7IHN0ciwgc2l6ZW9mIChzdHIpIC0gMSwgMSwgMCwgcmVsb2MgfQorI2RlZmluZSBNQVA2NChzdHIsIHJlbG9jKSB7IHN0ciwgc2l6ZW9mIChzdHIpIC0gMSwgMCwgMSwgcmVsb2MgfQogCiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFwX2JmZCBtYXBwaW5nW10gPSB7Ci0gICAgTUFQICgibCIsCQkJKGludCkgQkZEX1JFTE9DX0xPMTYpLAotICAgIE1BUCAoImgiLAkJCShpbnQpIEJGRF9SRUxPQ19ISTE2KSwKLSAgICBNQVAgKCJoYSIsCQkJKGludCkgQkZEX1JFTE9DX0hJMTZfUyksCi0gICAgTUFQICgiYnJ0YWtlbiIsCQkoaW50KSBCRkRfUkVMT0NfUFBDX0IxNl9CUlRBS0VOKSwKLSAgICBNQVAgKCJicm50YWtlbiIsCQkoaW50KSBCRkRfUkVMT0NfUFBDX0IxNl9CUk5UQUtFTiksCi0gICAgTUFQICgiZ290IiwJCQkoaW50KSBCRkRfUkVMT0NfMTZfR09UT0ZGKSwKLSAgICBNQVAgKCJnb3RAbCIsCQkoaW50KSBCRkRfUkVMT0NfTE8xNl9HT1RPRkYpLAotICAgIE1BUCAoImdvdEBoIiwJCShpbnQpIEJGRF9SRUxPQ19ISTE2X0dPVE9GRiksCi0gICAgTUFQICgiZ290QGhhIiwJCShpbnQpIEJGRF9SRUxPQ19ISTE2X1NfR09UT0ZGKSwKLSAgICBNQVAgKCJmaXh1cCIsCQkoaW50KSBCRkRfUkVMT0NfQ1RPUiksCi0gICAgTUFQICgicGx0IiwJCQkoaW50KSBCRkRfUkVMT0NfMjRfUExUX1BDUkVMKSwKLSAgICBNQVAgKCJwbHRyZWwyNCIsCQkoaW50KSBCRkRfUkVMT0NfMjRfUExUX1BDUkVMKSwKLSAgICBNQVAgKCJjb3B5IiwJCShpbnQpIEJGRF9SRUxPQ19QUENfQ09QWSksCi0gICAgTUFQICgiZ2xvYmRhdCIsCQkoaW50KSBCRkRfUkVMT0NfUFBDX0dMT0JfREFUKSwKLSAgICBNQVAgKCJsb2NhbDI0cGMiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19MT0NBTDI0UEMpLAotICAgIE1BUCAoImxvY2FsIiwJCShpbnQpIEJGRF9SRUxPQ19QUENfTE9DQUwyNFBDKSwKLSAgICBNQVAgKCJwbHRyZWwiLAkJKGludCkgQkZEX1JFTE9DXzMyX1BMVF9QQ1JFTCksCi0gICAgTUFQICgicGx0QGwiLAkJKGludCkgQkZEX1JFTE9DX0xPMTZfUExUT0ZGKSwKLSAgICBNQVAgKCJwbHRAaCIsCQkoaW50KSBCRkRfUkVMT0NfSEkxNl9QTFRPRkYpLAotICAgIE1BUCAoInBsdEBoYSIsCQkoaW50KSBCRkRfUkVMT0NfSEkxNl9TX1BMVE9GRiksCi0gICAgTUFQICgic2RhcmVsIiwJCShpbnQpIEJGRF9SRUxPQ19HUFJFTDE2KSwKLSAgICBNQVAgKCJzZWN0b2ZmIiwJCShpbnQpIEJGRF9SRUxPQ18xNl9CQVNFUkVMKSwKLSAgICBNQVAgKCJzZWN0b2ZmQGwiLAkJKGludCkgQkZEX1JFTE9DX0xPMTZfQkFTRVJFTCksCi0gICAgTUFQICgic2VjdG9mZkBoIiwJCShpbnQpIEJGRF9SRUxPQ19ISTE2X0JBU0VSRUwpLAotICAgIE1BUCAoInNlY3RvZmZAaGEiLAkJKGludCkgQkZEX1JFTE9DX0hJMTZfU19CQVNFUkVMKSwKLSAgICBNQVAgKCJuYWRkciIsCQkoaW50KSBCRkRfUkVMT0NfUFBDX0VNQl9OQUREUjMyKSwKLSAgICBNQVAgKCJuYWRkcjE2IiwJCShpbnQpIEJGRF9SRUxPQ19QUENfRU1CX05BRERSMTYpLAotICAgIE1BUCAoIm5hZGRyQGwiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19FTUJfTkFERFIxNl9MTyksCi0gICAgTUFQICgibmFkZHJAaCIsCQkoaW50KSBCRkRfUkVMT0NfUFBDX0VNQl9OQUREUjE2X0hJKSwKLSAgICBNQVAgKCJuYWRkckBoYSIsCQkoaW50KSBCRkRfUkVMT0NfUFBDX0VNQl9OQUREUjE2X0hBKSwKLSAgICBNQVAgKCJzZGFpMTYiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19FTUJfU0RBSTE2KSwKLSAgICBNQVAgKCJzZGEycmVsIiwJCShpbnQpIEJGRF9SRUxPQ19QUENfRU1CX1NEQTJSRUwpLAotICAgIE1BUCAoInNkYTJpMTYiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19FTUJfU0RBMkkxNiksCi0gICAgTUFQICgic2RhMjEiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19FTUJfU0RBMjEpLAotICAgIE1BUCAoIm1ya3JlZiIsCQkoaW50KSBCRkRfUkVMT0NfUFBDX0VNQl9NUktSRUYpLAotICAgIE1BUCAoInJlbHNlY3QiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19FTUJfUkVMU0VDMTYpLAotICAgIE1BUCAoInJlbHNlY3RAbCIsCQkoaW50KSBCRkRfUkVMT0NfUFBDX0VNQl9SRUxTVF9MTyksCi0gICAgTUFQICgicmVsc2VjdEBoIiwJCShpbnQpIEJGRF9SRUxPQ19QUENfRU1CX1JFTFNUX0hJKSwKLSAgICBNQVAgKCJyZWxzZWN0QGhhIiwJCShpbnQpIEJGRF9SRUxPQ19QUENfRU1CX1JFTFNUX0hBKSwKLSAgICBNQVAgKCJiaXRmbGQiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19FTUJfQklUX0ZMRCksCi0gICAgTUFQICgicmVsc2RhIiwJCShpbnQpIEJGRF9SRUxPQ19QUENfRU1CX1JFTFNEQSksCi0gICAgTUFQICgieGdvdCIsCQkoaW50KSBCRkRfUkVMT0NfUFBDX1RPQzE2KSwKLSAgICBNQVAgKCJ0bHMiLAkJCShpbnQpIEJGRF9SRUxPQ19QUENfVExTKSwKLSAgICBNQVAgKCJkdHBtb2QiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19EVFBNT0QpLAotICAgIE1BUCAoImR0cHJlbCIsCQkoaW50KSBCRkRfUkVMT0NfUFBDX0RUUFJFTCksCi0gICAgTUFQICgiZHRwcmVsQGwiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19EVFBSRUwxNl9MTyksCi0gICAgTUFQICgiZHRwcmVsQGgiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19EVFBSRUwxNl9ISSksCi0gICAgTUFQICgiZHRwcmVsQGhhIiwJCShpbnQpIEJGRF9SRUxPQ19QUENfRFRQUkVMMTZfSEEpLAotICAgIE1BUCAoInRwcmVsIiwJCShpbnQpIEJGRF9SRUxPQ19QUENfVFBSRUwpLAotICAgIE1BUCAoInRwcmVsQGwiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19UUFJFTDE2X0xPKSwKLSAgICBNQVAgKCJ0cHJlbEBoIiwJCShpbnQpIEJGRF9SRUxPQ19QUENfVFBSRUwxNl9ISSksCi0gICAgTUFQICgidHByZWxAaGEiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19UUFJFTDE2X0hBKSwKLSAgICBNQVAgKCJnb3RAdGxzZ2QiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19HT1RfVExTR0QxNiksCi0gICAgTUFQICgiZ290QHRsc2dkQGwiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19HT1RfVExTR0QxNl9MTyksCi0gICAgTUFQICgiZ290QHRsc2dkQGgiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19HT1RfVExTR0QxNl9ISSksCi0gICAgTUFQICgiZ290QHRsc2dkQGhhIiwJKGludCkgQkZEX1JFTE9DX1BQQ19HT1RfVExTR0QxNl9IQSksCi0gICAgTUFQICgiZ290QHRsc2xkIiwJCShpbnQpIEJGRF9SRUxPQ19QUENfR09UX1RMU0xEMTYpLAotICAgIE1BUCAoImdvdEB0bHNsZEBsIiwJCShpbnQpIEJGRF9SRUxPQ19QUENfR09UX1RMU0xEMTZfTE8pLAotICAgIE1BUCAoImdvdEB0bHNsZEBoIiwJCShpbnQpIEJGRF9SRUxPQ19QUENfR09UX1RMU0xEMTZfSEkpLAotICAgIE1BUCAoImdvdEB0bHNsZEBoYSIsCShpbnQpIEJGRF9SRUxPQ19QUENfR09UX1RMU0xEMTZfSEEpLAotICAgIE1BUCAoImdvdEBkdHByZWwiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19HT1RfRFRQUkVMMTYpLAotICAgIE1BUCAoImdvdEBkdHByZWxAbCIsCShpbnQpIEJGRF9SRUxPQ19QUENfR09UX0RUUFJFTDE2X0xPKSwKLSAgICBNQVAgKCJnb3RAZHRwcmVsQGgiLAkoaW50KSBCRkRfUkVMT0NfUFBDX0dPVF9EVFBSRUwxNl9ISSksCi0gICAgTUFQICgiZ290QGR0cHJlbEBoYSIsCShpbnQpIEJGRF9SRUxPQ19QUENfR09UX0RUUFJFTDE2X0hBKSwKLSAgICBNQVAgKCJnb3RAdHByZWwiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19HT1RfVFBSRUwxNiksCi0gICAgTUFQICgiZ290QHRwcmVsQGwiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19HT1RfVFBSRUwxNl9MTyksCi0gICAgTUFQICgiZ290QHRwcmVsQGgiLAkJKGludCkgQkZEX1JFTE9DX1BQQ19HT1RfVFBSRUwxNl9ISSksCi0gICAgTUFQICgiZ290QHRwcmVsQGhhIiwJKGludCkgQkZEX1JFTE9DX1BQQ19HT1RfVFBSRUwxNl9IQSksCi0gICAgLyogVGhlIGZvbGxvd2luZyBhcmUgb25seSB2YWxpZCBmb3IgcHBjNjQuICBOZWdhdGl2ZSB2YWx1ZXMgYXJlCi0gICAgICAgdXNlZCBpbnN0ZWFkIG9mIGEgZmxhZy4gICovCi0gICAgTUFQICgiaGlnaGVyIiwJCS0gKGludCkgQkZEX1JFTE9DX1BQQzY0X0hJR0hFUiksCi0gICAgTUFQICgiaGlnaGVyYSIsCQktIChpbnQpIEJGRF9SRUxPQ19QUEM2NF9ISUdIRVJfUyksCi0gICAgTUFQICgiaGlnaGVzdCIsCQktIChpbnQpIEJGRF9SRUxPQ19QUEM2NF9ISUdIRVNUKSwKLSAgICBNQVAgKCJoaWdoZXN0YSIsCQktIChpbnQpIEJGRF9SRUxPQ19QUEM2NF9ISUdIRVNUX1MpLAotICAgIE1BUCAoInRvY2Jhc2UiLAkJLSAoaW50KSBCRkRfUkVMT0NfUFBDNjRfVE9DKSwKLSAgICBNQVAgKCJ0b2MiLAkJCS0gKGludCkgQkZEX1JFTE9DX1BQQ19UT0MxNiksCi0gICAgTUFQICgidG9jQGwiLAkJLSAoaW50KSBCRkRfUkVMT0NfUFBDNjRfVE9DMTZfTE8pLAotICAgIE1BUCAoInRvY0BoIiwJCS0gKGludCkgQkZEX1JFTE9DX1BQQzY0X1RPQzE2X0hJKSwKLSAgICBNQVAgKCJ0b2NAaGEiLAkJLSAoaW50KSBCRkRfUkVMT0NfUFBDNjRfVE9DMTZfSEEpLAotICAgIE1BUCAoImR0cHJlbEBoaWdoZXIiLAktIChpbnQpIEJGRF9SRUxPQ19QUEM2NF9EVFBSRUwxNl9ISUdIRVIpLAotICAgIE1BUCAoImR0cHJlbEBoaWdoZXJhIiwJLSAoaW50KSBCRkRfUkVMT0NfUFBDNjRfRFRQUkVMMTZfSElHSEVSQSksCi0gICAgTUFQICgiZHRwcmVsQGhpZ2hlc3QiLAktIChpbnQpIEJGRF9SRUxPQ19QUEM2NF9EVFBSRUwxNl9ISUdIRVNUKSwKLSAgICBNQVAgKCJkdHByZWxAaGlnaGVzdGEiLAktIChpbnQpIEJGRF9SRUxPQ19QUEM2NF9EVFBSRUwxNl9ISUdIRVNUQSksCi0gICAgTUFQICgidHByZWxAaGlnaGVyIiwJLSAoaW50KSBCRkRfUkVMT0NfUFBDNjRfVFBSRUwxNl9ISUdIRVIpLAotICAgIE1BUCAoInRwcmVsQGhpZ2hlcmEiLAktIChpbnQpIEJGRF9SRUxPQ19QUEM2NF9UUFJFTDE2X0hJR0hFUkEpLAotICAgIE1BUCAoInRwcmVsQGhpZ2hlc3QiLAktIChpbnQpIEJGRF9SRUxPQ19QUEM2NF9UUFJFTDE2X0hJR0hFU1QpLAotICAgIE1BUCAoInRwcmVsQGhpZ2hlc3RhIiwJLSAoaW50KSBCRkRfUkVMT0NfUFBDNjRfVFBSRUwxNl9ISUdIRVNUQSksCi0gICAgeyAoY2hhciAqKSAwLCAwLAkJKGludCkgQkZEX1JFTE9DX1VOVVNFRCB9CisgICAgTUFQICgibCIsCQkJQkZEX1JFTE9DX0xPMTYpLAorICAgIE1BUCAoImgiLAkJCUJGRF9SRUxPQ19ISTE2KSwKKyAgICBNQVAgKCJoYSIsCQkJQkZEX1JFTE9DX0hJMTZfUyksCisgICAgTUFQICgiYnJ0YWtlbiIsCQlCRkRfUkVMT0NfUFBDX0IxNl9CUlRBS0VOKSwKKyAgICBNQVAgKCJicm50YWtlbiIsCQlCRkRfUkVMT0NfUFBDX0IxNl9CUk5UQUtFTiksCisgICAgTUFQICgiZ290IiwJCQlCRkRfUkVMT0NfMTZfR09UT0ZGKSwKKyAgICBNQVAgKCJnb3RAbCIsCQlCRkRfUkVMT0NfTE8xNl9HT1RPRkYpLAorICAgIE1BUCAoImdvdEBoIiwJCUJGRF9SRUxPQ19ISTE2X0dPVE9GRiksCisgICAgTUFQICgiZ290QGhhIiwJCUJGRF9SRUxPQ19ISTE2X1NfR09UT0ZGKSwKKyAgICBNQVAgKCJwbHRAbCIsCQlCRkRfUkVMT0NfTE8xNl9QTFRPRkYpLAorICAgIE1BUCAoInBsdEBoIiwJCUJGRF9SRUxPQ19ISTE2X1BMVE9GRiksCisgICAgTUFQICgicGx0QGhhIiwJCUJGRF9SRUxPQ19ISTE2X1NfUExUT0ZGKSwKKyAgICBNQVAgKCJjb3B5IiwJCUJGRF9SRUxPQ19QUENfQ09QWSksCisgICAgTUFQICgiZ2xvYmRhdCIsCQlCRkRfUkVMT0NfUFBDX0dMT0JfREFUKSwKKyAgICBNQVAgKCJzZWN0b2ZmIiwJCUJGRF9SRUxPQ18xNl9CQVNFUkVMKSwKKyAgICBNQVAgKCJzZWN0b2ZmQGwiLAkJQkZEX1JFTE9DX0xPMTZfQkFTRVJFTCksCisgICAgTUFQICgic2VjdG9mZkBoIiwJCUJGRF9SRUxPQ19ISTE2X0JBU0VSRUwpLAorICAgIE1BUCAoInNlY3RvZmZAaGEiLAkJQkZEX1JFTE9DX0hJMTZfU19CQVNFUkVMKSwKKyAgICBNQVAgKCJ0bHMiLAkJCUJGRF9SRUxPQ19QUENfVExTKSwKKyAgICBNQVAgKCJkdHBtb2QiLAkJQkZEX1JFTE9DX1BQQ19EVFBNT0QpLAorICAgIE1BUCAoImR0cHJlbCIsCQlCRkRfUkVMT0NfUFBDX0RUUFJFTCksCisgICAgTUFQICgiZHRwcmVsQGwiLAkJQkZEX1JFTE9DX1BQQ19EVFBSRUwxNl9MTyksCisgICAgTUFQICgiZHRwcmVsQGgiLAkJQkZEX1JFTE9DX1BQQ19EVFBSRUwxNl9ISSksCisgICAgTUFQICgiZHRwcmVsQGhhIiwJCUJGRF9SRUxPQ19QUENfRFRQUkVMMTZfSEEpLAorICAgIE1BUCAoInRwcmVsIiwJCUJGRF9SRUxPQ19QUENfVFBSRUwpLAorICAgIE1BUCAoInRwcmVsQGwiLAkJQkZEX1JFTE9DX1BQQ19UUFJFTDE2X0xPKSwKKyAgICBNQVAgKCJ0cHJlbEBoIiwJCUJGRF9SRUxPQ19QUENfVFBSRUwxNl9ISSksCisgICAgTUFQICgidHByZWxAaGEiLAkJQkZEX1JFTE9DX1BQQ19UUFJFTDE2X0hBKSwKKyAgICBNQVAgKCJnb3RAdGxzZ2QiLAkJQkZEX1JFTE9DX1BQQ19HT1RfVExTR0QxNiksCisgICAgTUFQICgiZ290QHRsc2dkQGwiLAkJQkZEX1JFTE9DX1BQQ19HT1RfVExTR0QxNl9MTyksCisgICAgTUFQICgiZ290QHRsc2dkQGgiLAkJQkZEX1JFTE9DX1BQQ19HT1RfVExTR0QxNl9ISSksCisgICAgTUFQICgiZ290QHRsc2dkQGhhIiwJQkZEX1JFTE9DX1BQQ19HT1RfVExTR0QxNl9IQSksCisgICAgTUFQICgiZ290QHRsc2xkIiwJCUJGRF9SRUxPQ19QUENfR09UX1RMU0xEMTYpLAorICAgIE1BUCAoImdvdEB0bHNsZEBsIiwJCUJGRF9SRUxPQ19QUENfR09UX1RMU0xEMTZfTE8pLAorICAgIE1BUCAoImdvdEB0bHNsZEBoIiwJCUJGRF9SRUxPQ19QUENfR09UX1RMU0xEMTZfSEkpLAorICAgIE1BUCAoImdvdEB0bHNsZEBoYSIsCUJGRF9SRUxPQ19QUENfR09UX1RMU0xEMTZfSEEpLAorICAgIE1BUCAoImdvdEBkdHByZWwiLAkJQkZEX1JFTE9DX1BQQ19HT1RfRFRQUkVMMTYpLAorICAgIE1BUCAoImdvdEBkdHByZWxAbCIsCUJGRF9SRUxPQ19QUENfR09UX0RUUFJFTDE2X0xPKSwKKyAgICBNQVAgKCJnb3RAZHRwcmVsQGgiLAlCRkRfUkVMT0NfUFBDX0dPVF9EVFBSRUwxNl9ISSksCisgICAgTUFQICgiZ290QGR0cHJlbEBoYSIsCUJGRF9SRUxPQ19QUENfR09UX0RUUFJFTDE2X0hBKSwKKyAgICBNQVAgKCJnb3RAdHByZWwiLAkJQkZEX1JFTE9DX1BQQ19HT1RfVFBSRUwxNiksCisgICAgTUFQICgiZ290QHRwcmVsQGwiLAkJQkZEX1JFTE9DX1BQQ19HT1RfVFBSRUwxNl9MTyksCisgICAgTUFQICgiZ290QHRwcmVsQGgiLAkJQkZEX1JFTE9DX1BQQ19HT1RfVFBSRUwxNl9ISSksCisgICAgTUFQICgiZ290QHRwcmVsQGhhIiwJQkZEX1JFTE9DX1BQQ19HT1RfVFBSRUwxNl9IQSksCisgICAgTUFQMzIgKCJmaXh1cCIsCQlCRkRfUkVMT0NfQ1RPUiksCisgICAgTUFQMzIgKCJwbHQiLAkJQkZEX1JFTE9DXzI0X1BMVF9QQ1JFTCksCisgICAgTUFQMzIgKCJwbHRyZWwyNCIsCQlCRkRfUkVMT0NfMjRfUExUX1BDUkVMKSwKKyAgICBNQVAzMiAoImxvY2FsMjRwYyIsCQlCRkRfUkVMT0NfUFBDX0xPQ0FMMjRQQyksCisgICAgTUFQMzIgKCJsb2NhbCIsCQlCRkRfUkVMT0NfUFBDX0xPQ0FMMjRQQyksCisgICAgTUFQMzIgKCJwbHRyZWwiLAkJQkZEX1JFTE9DXzMyX1BMVF9QQ1JFTCksCisgICAgTUFQMzIgKCJzZGFyZWwiLAkJQkZEX1JFTE9DX0dQUkVMMTYpLAorICAgIE1BUDMyICgibmFkZHIiLAkJQkZEX1JFTE9DX1BQQ19FTUJfTkFERFIzMiksCisgICAgTUFQMzIgKCJuYWRkcjE2IiwJCUJGRF9SRUxPQ19QUENfRU1CX05BRERSMTYpLAorICAgIE1BUDMyICgibmFkZHJAbCIsCQlCRkRfUkVMT0NfUFBDX0VNQl9OQUREUjE2X0xPKSwKKyAgICBNQVAzMiAoIm5hZGRyQGgiLAkJQkZEX1JFTE9DX1BQQ19FTUJfTkFERFIxNl9ISSksCisgICAgTUFQMzIgKCJuYWRkckBoYSIsCQlCRkRfUkVMT0NfUFBDX0VNQl9OQUREUjE2X0hBKSwKKyAgICBNQVAzMiAoInNkYWkxNiIsCQlCRkRfUkVMT0NfUFBDX0VNQl9TREFJMTYpLAorICAgIE1BUDMyICgic2RhMnJlbCIsCQlCRkRfUkVMT0NfUFBDX0VNQl9TREEyUkVMKSwKKyAgICBNQVAzMiAoInNkYTJpMTYiLAkJQkZEX1JFTE9DX1BQQ19FTUJfU0RBMkkxNiksCisgICAgTUFQMzIgKCJzZGEyMSIsCQlCRkRfUkVMT0NfUFBDX0VNQl9TREEyMSksCisgICAgTUFQMzIgKCJtcmtyZWYiLAkJQkZEX1JFTE9DX1BQQ19FTUJfTVJLUkVGKSwKKyAgICBNQVAzMiAoInJlbHNlY3QiLAkJQkZEX1JFTE9DX1BQQ19FTUJfUkVMU0VDMTYpLAorICAgIE1BUDMyICgicmVsc2VjdEBsIiwJCUJGRF9SRUxPQ19QUENfRU1CX1JFTFNUX0xPKSwKKyAgICBNQVAzMiAoInJlbHNlY3RAaCIsCQlCRkRfUkVMT0NfUFBDX0VNQl9SRUxTVF9ISSksCisgICAgTUFQMzIgKCJyZWxzZWN0QGhhIiwJQkZEX1JFTE9DX1BQQ19FTUJfUkVMU1RfSEEpLAorICAgIE1BUDMyICgiYml0ZmxkIiwJCUJGRF9SRUxPQ19QUENfRU1CX0JJVF9GTEQpLAorICAgIE1BUDMyICgicmVsc2RhIiwJCUJGRF9SRUxPQ19QUENfRU1CX1JFTFNEQSksCisgICAgTUFQMzIgKCJ4Z290IiwJCUJGRF9SRUxPQ19QUENfVE9DMTYpLAorICAgIE1BUDY0ICgiaGlnaGVyIiwJCUJGRF9SRUxPQ19QUEM2NF9ISUdIRVIpLAorICAgIE1BUDY0ICgiaGlnaGVyYSIsCQlCRkRfUkVMT0NfUFBDNjRfSElHSEVSX1MpLAorICAgIE1BUDY0ICgiaGlnaGVzdCIsCQlCRkRfUkVMT0NfUFBDNjRfSElHSEVTVCksCisgICAgTUFQNjQgKCJoaWdoZXN0YSIsCQlCRkRfUkVMT0NfUFBDNjRfSElHSEVTVF9TKSwKKyAgICBNQVA2NCAoInRvY2Jhc2UiLAkJQkZEX1JFTE9DX1BQQzY0X1RPQyksCisgICAgTUFQNjQgKCJ0b2MiLAkJQkZEX1JFTE9DX1BQQ19UT0MxNiksCisgICAgTUFQNjQgKCJ0b2NAbCIsCQlCRkRfUkVMT0NfUFBDNjRfVE9DMTZfTE8pLAorICAgIE1BUDY0ICgidG9jQGgiLAkJQkZEX1JFTE9DX1BQQzY0X1RPQzE2X0hJKSwKKyAgICBNQVA2NCAoInRvY0BoYSIsCQlCRkRfUkVMT0NfUFBDNjRfVE9DMTZfSEEpLAorICAgIE1BUDY0ICgiZHRwcmVsQGhpZ2hlciIsCUJGRF9SRUxPQ19QUEM2NF9EVFBSRUwxNl9ISUdIRVIpLAorICAgIE1BUDY0ICgiZHRwcmVsQGhpZ2hlcmEiLAlCRkRfUkVMT0NfUFBDNjRfRFRQUkVMMTZfSElHSEVSQSksCisgICAgTUFQNjQgKCJkdHByZWxAaGlnaGVzdCIsCUJGRF9SRUxPQ19QUEM2NF9EVFBSRUwxNl9ISUdIRVNUKSwKKyAgICBNQVA2NCAoImR0cHJlbEBoaWdoZXN0YSIsCUJGRF9SRUxPQ19QUEM2NF9EVFBSRUwxNl9ISUdIRVNUQSksCisgICAgTUFQNjQgKCJ0cHJlbEBoaWdoZXIiLAlCRkRfUkVMT0NfUFBDNjRfVFBSRUwxNl9ISUdIRVIpLAorICAgIE1BUDY0ICgidHByZWxAaGlnaGVyYSIsCUJGRF9SRUxPQ19QUEM2NF9UUFJFTDE2X0hJR0hFUkEpLAorICAgIE1BUDY0ICgidHByZWxAaGlnaGVzdCIsCUJGRF9SRUxPQ19QUEM2NF9UUFJFTDE2X0hJR0hFU1QpLAorICAgIE1BUDY0ICgidHByZWxAaGlnaGVzdGEiLAlCRkRfUkVMT0NfUFBDNjRfVFBSRUwxNl9ISUdIRVNUQSksCisgICAgeyAoY2hhciAqKSAwLCAwLCAwLCAwLAlCRkRfUkVMT0NfVU5VU0VEIH0KICAgfTsKIAogICBpZiAoKnN0cisrICE9ICdAJykKQEAgLTE2MTUsMTcgKzE2MTcsMTEgQEAKICAgZm9yIChwdHIgPSAmbWFwcGluZ1swXTsgcHRyLT5sZW5ndGggPiAwOyBwdHIrKykKICAgICBpZiAoY2ggPT0gcHRyLT5zdHJpbmdbMF0KIAkmJiBsZW4gPT0gcHRyLT5sZW5ndGgKLQkmJiBtZW1jbXAgKGlkZW50LCBwdHItPnN0cmluZywgcHRyLT5sZW5ndGgpID09IDApCisJJiYgbWVtY21wIChpZGVudCwgcHRyLT5zdHJpbmcsIHB0ci0+bGVuZ3RoKSA9PSAwCisJJiYgKHBwY19vYmo2NCA/IHB0ci0+dmFsaWQ2NCA6IHB0ci0+dmFsaWQzMikpCiAgICAgICB7CiAJaW50IHJlbG9jID0gcHRyLT5yZWxvYzsKIAotCWlmIChyZWxvYyA8IDApCi0JICB7Ci0JICAgIGlmICghcHBjX29iajY0KQotCSAgICAgIHJldHVybiBCRkRfUkVMT0NfVU5VU0VEOwotCSAgICByZWxvYyA9IC1yZWxvYzsKLQkgIH0KLQogCWlmICghcHBjX29iajY0KQogCSAgaWYgKGV4cF9wLT5YX2FkZF9udW1iZXIgIT0gMAogCSAgICAgICYmIChyZWxvYyA9PSAoaW50KSBCRkRfUkVMT0NfMTZfR09UT0ZGCkBAIC01OTAxLDcgKzU4OTcsNyBAQAogCSAgaWYgKGZpeFAtPmZ4X3BjcmVsKQogCSAgICB7CiAJICAgICAgLyogVGhpcyBjYW4gb2NjdXIgaWYgdGhlcmUgaXMgYSBidWcgaW4gdGhlIGlucHV0IGFzc2VtYmxlciwgZWc6Ci0JICAgICAgICAgIi5ieXRlIDx1bmRlZmluZWRfc3ltYm9sPiAtIC4iICAqLworCQkgIi5ieXRlIDx1bmRlZmluZWRfc3ltYm9sPiAtIC4iICAqLwogCSAgICAgIGlmIChmaXhQLT5meF9hZGRzeSkKIAkJYXNfYmFkIChfKCJVbmFibGUgdG8gaGFuZGxlIHJlZmVyZW5jZSB0byBzeW1ib2wgJXMiKSwKIAkJCVNfR0VUX05BTUUgKGZpeFAtPmZ4X2FkZHN5KSk7CkBAIC02MDUyLDE1ICs2MDQ4LDE1IEBACiAgICAgICBpZiAocCA9PSBxIHx8ICpxIHx8IHJlZ251bSA+PSAzMikKIAlyZXR1cm4gLTE7CiAgICAgICBpZiAocmVnbmFtZVswXSA9PSAnZicpCi0gICAgICAgIHJlZ251bSArPSAzMjsKKwlyZWdudW0gKz0gMzI7CiAgICAgICBlbHNlIGlmIChyZWduYW1lWzBdID09ICd2JykKLSAgICAgICAgcmVnbnVtICs9IDc3OworCXJlZ251bSArPSA3NzsKICAgICB9CiAgIGVsc2UgaWYgKHJlZ25hbWVbMF0gPT0gJ2MnICYmIHJlZ25hbWVbMV0gPT0gJ3InKQogICAgIHsKICAgICAgIHAgPSByZWduYW1lICsgMiArIChyZWduYW1lWzJdID09ICcuJyk7CiAgICAgICBpZiAocFswXSA8ICcwJyB8fCBwWzBdID4gJzcnIHx8IHBbMV0pCi0gICAgICAgIHJldHVybiAtMTsKKwlyZXR1cm4gLTE7CiAgICAgICByZWdudW0gPSBwWzBdIC0gJzAnICsgNjg7CiAgICAgfQogICByZXR1cm4gcmVnbnVtOwpkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1zMzkwLmMgYi9nYXMvY29uZmlnL3RjLXMzOTAuYwppbmRleCBlZjUxYmNhLi5jNDUwZWFlIDEwMDY0NAotLS0gYS9nYXMvY29uZmlnL3RjLXMzOTAuYworKysgYi9nYXMvY29uZmlnL3RjLXMzOTAuYwpAQCAtMTYxNCw5ICsxNjE0LDE1IEBACiAgIGV4cHJlc3Npb24gKCZleHApOwogICBpZiAoZXhwLlhfb3AgPT0gT19jb25zdGFudCkKICAgICB7Ci0gICAgICBpZiAoICAgKG9wZm9ybWF0LT5vcGxlbiA9PSA2ICYmIGV4cC5YX29wID4gMCAmJiBleHAuWF9vcCA8ICgxVUxMIDw8IDQ4KSkKLQkgIHx8IChvcGZvcm1hdC0+b3BsZW4gPT0gNCAmJiBleHAuWF9vcCA+IDAgJiYgZXhwLlhfb3AgPCAoMVVMTCA8PCAzMikpCi0JICB8fCAob3Bmb3JtYXQtPm9wbGVuID09IDIgJiYgZXhwLlhfb3AgPiAwICYmIGV4cC5YX29wIDwgKDFVTEwgPDwgMTYpKSkKKyAgICAgIGlmICggICAoICAgb3Bmb3JtYXQtPm9wbGVuID09IDYKKwkgICAgICAmJiBleHAuWF9hZGRfbnVtYmVyID49IDAKKwkgICAgICAmJiAoYWRkcmVzc1QpIGV4cC5YX2FkZF9udW1iZXIgPCAoMVVMTCA8PCA0OCkpCisJICB8fCAoICAgb3Bmb3JtYXQtPm9wbGVuID09IDQKKwkgICAgICAmJiBleHAuWF9hZGRfbnVtYmVyID49IDAKKwkgICAgICAmJiAoYWRkcmVzc1QpIGV4cC5YX2FkZF9udW1iZXIgPCAoMVVMTCA8PCAzMikpCisJICB8fCAoICAgb3Bmb3JtYXQtPm9wbGVuID09IDIKKwkgICAgICAmJiBleHAuWF9hZGRfbnVtYmVyID49IDAKKwkgICAgICAmJiAoYWRkcmVzc1QpIGV4cC5YX2FkZF9udW1iZXIgPCAoMVVMTCA8PCAxNikpKQogCW1kX251bWJlcl90b19jaGFycyAoaW5zbiwgZXhwLlhfYWRkX251bWJlciwgb3Bmb3JtYXQtPm9wbGVuKTsKICAgICAgIGVsc2UKIAlhc19iYWQgKF8oIkludmFsaWQgLmluc24gZm9ybWF0XG4iKSk7CmRpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLXNoLmMgYi9nYXMvY29uZmlnL3RjLXNoLmMKaW5kZXggNDU2OThkNS4uMDRmMDZmZiAxMDA2NDQKLS0tIGEvZ2FzL2NvbmZpZy90Yy1zaC5jCisrKyBiL2dhcy9jb25maWcvdGMtc2guYwpAQCAtMSw2ICsxLDYgQEAKIC8qIHRjLXNoLmMgLS0gQXNzZW1ibGUgY29kZSBmb3IgdGhlIFJlbmVzYXMgLyBTdXBlckggU0gKLSAgIENvcHlyaWdodCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzCi0gICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAorICAgMjAwMywgMjAwNCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdBUywgdGhlIEdOVSBBc3NlbWJsZXIuCiAKQEAgLTEzMiw2ICsxMzIsMTAgQEAKIAogaW50IHNoX3NtYWxsOwogCisvKiBGbGFnIHRvIGdlbmVyYXRlIHJlbG9jYXRpb25zIGFnYWluc3Qgc3ltYm9sIHZhbHVlcyBmb3IgbG9jYWwgc3ltYm9scy4gICovCisKK3N0YXRpYyBpbnQgZG9udF9hZGp1c3RfcmVsb2NfMzI7CisKIC8qIHByZXNldCBhcmNoaXRlY3R1cmUgc2V0LCBpZiBnaXZlbjsgemVybyBvdGhlcndpc2UuICAqLwogCiBzdGF0aWMgaW50IHByZXNldF90YXJnZXRfYXJjaDsKQEAgLTE2MzIsNyArMTYzNiw3IEBACiAJCWdvdG8gZmFpbDsKIAkgICAgICByZWdfbiA9IHVzZXItPnJlZzsKIAkgICAgICBicmVhazsKLQkgICAgICAKKwogCSAgICBjYXNlIEFTX0lOQ19OOgogCSAgICAgIGlmICh1c2VyLT50eXBlICE9IEFfSU5DX04pCiAJCWdvdG8gZmFpbDsKQEAgLTE2NDAsNyArMTY0NCw3IEBACiAJCWdvdG8gZmFpbDsKIAkgICAgICByZWdfbiA9IHVzZXItPnJlZzsKIAkgICAgICBicmVhazsKLQkgICAgICAKKwogCSAgICBjYXNlIEFTX0lORF9OOgogCSAgICAgIGlmICh1c2VyLT50eXBlICE9IEFfSU5EX04pCiAJCWdvdG8gZmFpbDsKQEAgLTE2NDgsNyArMTY1Miw3IEBACiAJCWdvdG8gZmFpbDsKIAkgICAgICByZWdfbiA9IHVzZXItPnJlZzsKIAkgICAgICBicmVhazsKLQkgICAgICAKKwogCSAgICBjYXNlIEFTX1BNT0RfTjoKIAkgICAgICBpZiAodXNlci0+dHlwZSAhPSBBWF9QTU9EX04pCiAJCWdvdG8gZmFpbDsKQEAgLTE2NTYsNyArMTY2MCw3IEBACiAJCWdvdG8gZmFpbDsKIAkgICAgICByZWdfbiA9IHVzZXItPnJlZzsKIAkgICAgICBicmVhazsKLQkgICAgICAKKwogCSAgICBjYXNlIEFYX0lOQ19OOgogCSAgICAgIGlmICh1c2VyLT50eXBlICE9IEFfSU5DX04pCiAJCWdvdG8gZmFpbDsKQEAgLTE2NjQsNyArMTY2OCw3IEBACiAJCWdvdG8gZmFpbDsKIAkgICAgICByZWdfbiA9IHVzZXItPnJlZzsKIAkgICAgICBicmVhazsKLQkgICAgICAKKwogCSAgICBjYXNlIEFYX0lORF9OOgogCSAgICAgIGlmICh1c2VyLT50eXBlICE9IEFfSU5EX04pCiAJCWdvdG8gZmFpbDsKQEAgLTE2NzIsNyArMTY3Niw3IEBACiAJCWdvdG8gZmFpbDsKIAkgICAgICByZWdfbiA9IHVzZXItPnJlZzsKIAkgICAgICBicmVhazsKLQkgICAgICAKKwogCSAgICBjYXNlIEFYX1BNT0RfTjoKIAkgICAgICBpZiAodXNlci0+dHlwZSAhPSBBWF9QTU9EX04pCiAJCWdvdG8gZmFpbDsKQEAgLTE2ODAsNyArMTY4NCw3IEBACiAJCWdvdG8gZmFpbDsKIAkgICAgICByZWdfbiA9IHVzZXItPnJlZzsKIAkgICAgICBicmVhazsKLQkgICAgICAKKwogCSAgICBjYXNlIEFYWV9JTkNfTjoKIAkgICAgICBpZiAodXNlci0+dHlwZSAhPSBBX0lOQ19OKQogCQlnb3RvIGZhaWw7CkBAIC0xNjg5LDcgKzE2OTMsNyBAQAogCQlnb3RvIGZhaWw7CiAJICAgICAgcmVnX24gPSB1c2VyLT5yZWc7CiAJICAgICAgYnJlYWs7Ci0JICAgICAgCisKIAkgICAgY2FzZSBBWFlfSU5EX046CiAJICAgICAgaWYgKHVzZXItPnR5cGUgIT0gQV9JTkRfTikKIAkJZ290byBmYWlsOwpAQCAtMTY5OCw3ICsxNzAyLDcgQEAKIAkJZ290byBmYWlsOwogCSAgICAgIHJlZ19uID0gdXNlci0+cmVnOwogCSAgICAgIGJyZWFrOwotCSAgICAgIAorCiAJICAgIGNhc2UgQVhZX1BNT0RfTjoKIAkgICAgICBpZiAodXNlci0+dHlwZSAhPSBBWF9QTU9EX04pCiAJCWdvdG8gZmFpbDsKQEAgLTE3MDcsNyArMTcxMSw3IEBACiAJCWdvdG8gZmFpbDsKIAkgICAgICByZWdfbiA9IHVzZXItPnJlZzsKIAkgICAgICBicmVhazsKLQkgICAgICAKKwogCSAgICBjYXNlIEFZX0lOQ19OOgogCSAgICAgIGlmICh1c2VyLT50eXBlICE9IEFfSU5DX04pCiAJCWdvdG8gZmFpbDsKQEAgLTE3MTUsNyArMTcxOSw3IEBACiAJCWdvdG8gZmFpbDsKIAkgICAgICByZWdfbiA9IHVzZXItPnJlZzsKIAkgICAgICBicmVhazsKLQkgICAgICAKKwogCSAgICBjYXNlIEFZX0lORF9OOgogCSAgICAgIGlmICh1c2VyLT50eXBlICE9IEFfSU5EX04pCiAJCWdvdG8gZmFpbDsKQEAgLTE3MjMsNyArMTcyNyw3IEBACiAJCWdvdG8gZmFpbDsKIAkgICAgICByZWdfbiA9IHVzZXItPnJlZzsKIAkgICAgICBicmVhazsKLQkgICAgICAKKwogCSAgICBjYXNlIEFZX1BNT0RfTjoKIAkgICAgICBpZiAodXNlci0+dHlwZSAhPSBBWV9QTU9EX04pCiAJCWdvdG8gZmFpbDsKQEAgLTE3NDAsNyArMTc0NCw3IEBACiAJCWdvdG8gZmFpbDsKIAkgICAgICByZWdfbiA9IHVzZXItPnJlZzsKIAkgICAgICBicmVhazsKLQkgICAgICAKKwogCSAgICBjYXNlIEFZWF9JTkRfTjoKIAkgICAgICBpZiAodXNlci0+dHlwZSAhPSBBX0lORF9OKQogCQlnb3RvIGZhaWw7CkBAIC0xNzQ5LDcgKzE3NTMsNyBAQAogCQlnb3RvIGZhaWw7CiAJICAgICAgcmVnX24gPSB1c2VyLT5yZWc7CiAJICAgICAgYnJlYWs7Ci0JICAgICAgCisKIAkgICAgY2FzZSBBWVhfUE1PRF9OOgogCSAgICAgIGlmICh1c2VyLT50eXBlICE9IEFZX1BNT0RfTikKIAkJZ290byBmYWlsOwpAQCAtMjE0Myw2ICsyMTQ3LDcgQEAKIAkgIHN3aXRjaCAoaSkKIAkgICAgewogCSAgICBjYXNlIFJFR19OOgorCSAgICBjYXNlIFJFR19OX0Q6CiAJICAgICAgbmJ1ZltpbmRleF0gPSByZWdfbjsKIAkgICAgICBicmVhazsKIAkgICAgY2FzZSBSRUdfTToKQEAgLTIxNTksNiArMjE2NCw5IEBACiAJICAgIGNhc2UgUkVHX0I6CiAJICAgICAgbmJ1ZltpbmRleF0gPSByZWdfYiB8IDB4MDg7CiAJICAgICAgYnJlYWs7CisJICAgIGNhc2UgUkVHX05fQjAxOgorCSAgICAgIG5idWZbaW5kZXhdID0gcmVnX24gfCAweDAxOworCSAgICAgIGJyZWFrOwogCSAgICBjYXNlIElNTTBfNEJZNDoKIAkgICAgICBpbnNlcnQgKG91dHB1dCArIGxvd19ieXRlLCBCRkRfUkVMT0NfU0hfSU1NNEJZNCwgMCwgb3BlcmFuZCk7CiAJICAgICAgYnJlYWs7CkBAIC0yNTg0LDYgKzI1OTIsNyBAQAogICBzaF9vcGVyYW5kX2luZm8gb3BlcmFuZFszXTsKICAgc2hfb3Bjb2RlX2luZm8gKm9wY29kZTsKICAgdW5zaWduZWQgaW50IHNpemUgPSAwOworICBjaGFyICppbml0aWFsX3N0ciA9IHN0cjsKIAogI2lmZGVmIEhBVkVfU0g2NAogICBpZiAoc2g2NF9pc2FfbW9kZSA9PSBzaDY0X2lzYV9zaG1lZGlhKQpAQCAtMjYxMCw3ICsyNjE5LDQ1IEBACiAKICAgaWYgKG9wY29kZSA9PSBOVUxMKQogICAgIHsKLSAgICAgIGFzX2JhZCAoXygidW5rbm93biBvcGNvZGUiKSk7CisgICAgICAvKiBUaGUgb3Bjb2RlIGlzIG5vdCBpbiB0aGUgaGFzaCB0YWJsZS4KKwkgVGhpcyBtZWFucyB3ZSBkZWZpbmF0ZWx5IGhhdmUgYW4gYXNzZW1ibHkgZmFpbHVyZSwKKwkgYnV0IHRoZSBpbnN0cnVjdGlvbiBtYXkgYmUgdmFsaWQgaW4gYW5vdGhlciBDUFUgdmFyaWFudC4KKwkgSW4gdGhpcyBjYXNlIGVtaXQgc29tZXRoaW5nIGJldHRlciB0aGFuICd1bmtub3duIG9wY29kZScuCisJIFNlYXJjaCB0aGUgZnVsbCB0YWJsZSBpbiBzaC1vcGMuaCB0byBjaGVjay4gKi8KKworICAgICAgY2hhciAqbmFtZSA9IGluaXRpYWxfc3RyOworICAgICAgaW50IG5hbWVfbGVuZ3RoID0gMDsKKyAgICAgIGNvbnN0IHNoX29wY29kZV9pbmZvICpvcDsKKyAgICAgIGludCBmb3VuZCA9IDA7CisKKyAgICAgIC8qIGlkZW50aWZ5IG9wY29kZSBpbiBzdHJpbmcgKi8KKyAgICAgIHdoaWxlIChpc3NwYWNlICgqbmFtZSkpCisJeworCSAgbmFtZSsrOworCX0KKyAgICAgIHdoaWxlICghaXNzcGFjZSAobmFtZVtuYW1lX2xlbmd0aF0pKQorCXsKKwkgIG5hbWVfbGVuZ3RoKys7CisJfQorCisgICAgICAvKiBzZWFyY2ggZm9yIG9wY29kZSBpbiBmdWxsIGxpc3QgKi8KKyAgICAgIGZvciAob3AgPSBzaF90YWJsZTsgb3AtPm5hbWU7IG9wKyspCisJeworCSAgaWYgKHN0cm5jYXNlY21wIChvcC0+bmFtZSwgbmFtZSwgbmFtZV9sZW5ndGgpID09IDApCisJICAgIHsKKwkgICAgICBmb3VuZCA9IDE7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwl9CisKKyAgICAgIGlmICggZm91bmQgKQorCXsKKwkgIGFzX2JhZCAoXygib3Bjb2RlIG5vdCB2YWxpZCBmb3IgdGhpcyBjcHUgdmFyaWFudCIpKTsKKwl9CisgICAgICBlbHNlCisJeworCSAgYXNfYmFkIChfKCJ1bmtub3duIG9wY29kZSIpKTsKKwl9CiAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yODQwLDYgKzI4ODcsNyBAQAogI2RlZmluZSBPUFRJT05fU01BTEwgKE9QVElPTl9MSVRUTEUgKyAxKQogI2RlZmluZSBPUFRJT05fRFNQIChPUFRJT05fU01BTEwgKyAxKQogI2RlZmluZSBPUFRJT05fSVNBICAgICAgICAgICAgICAgICAgICAoT1BUSU9OX0RTUCArIDEpCisjZGVmaW5lIE9QVElPTl9SRU5FU0FTIChPUFRJT05fSVNBICsgMSkKIAogICB7InJlbGF4Iiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9SRUxBWH0sCiAgIHsiYmlnIiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9CSUd9LApAQCAtMjg0Nyw4ICsyODk1LDEwIEBACiAgIHsic21hbGwiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUSU9OX1NNQUxMfSwKICAgeyJkc3AiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUSU9OX0RTUH0sCiAgIHsiaXNhIiwgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fSVNBfSwKKyAgeyJyZW5lc2FzIiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9SRU5FU0FTfSwKKwogI2lmZGVmIEhBVkVfU0g2NAotI2RlZmluZSBPUFRJT05fQUJJICAgICAgICAgICAgICAgICAgICAoT1BUSU9OX0lTQSArIDEpCisjZGVmaW5lIE9QVElPTl9BQkkgICAgICAgICAgICAgICAgICAgIChPUFRJT05fUkVORVNBUyArIDEpCiAjZGVmaW5lIE9QVElPTl9OT19NSVggICAgICAgICAgICAgICAgIChPUFRJT05fQUJJICsgMSkKICNkZWZpbmUgT1BUSU9OX1NIQ09NUEFDVF9DT05TVF9DUkFOR0UgKE9QVElPTl9OT19NSVggKyAxKQogI2RlZmluZSBPUFRJT05fTk9fRVhQQU5EICAgICAgICAgICAgICAoT1BUSU9OX1NIQ09NUEFDVF9DT05TVF9DUkFOR0UgKyAxKQpAQCAtMjg4OSw5ICsyOTM5LDE3IEBACiAgICAgICBwcmVzZXRfdGFyZ2V0X2FyY2ggPSBhcmNoX3NoMV91cCAmIH5hcmNoX3NoMmVfdXA7CiAgICAgICBicmVhazsKIAorICAgIGNhc2UgT1BUSU9OX1JFTkVTQVM6CisgICAgICBkb250X2FkanVzdF9yZWxvY18zMiA9IDE7CisgICAgICBicmVhazsKKwogICAgIGNhc2UgT1BUSU9OX0lTQToKICAgICAgIGlmIChzdHJjYXNlY21wIChhcmcsICJzaDQiKSA9PSAwKQogCXByZXNldF90YXJnZXRfYXJjaCA9IGFyY2hfc2g0OworICAgICAgZWxzZSBpZiAoc3RyY2FzZWNtcCAoYXJnLCAic2g0LW5vZnB1IikgPT0gMCkKKwlwcmVzZXRfdGFyZ2V0X2FyY2ggPSBhcmNoX3NoNF9ub2ZwdTsKKyAgICAgIGVsc2UgaWYgKHN0cmNhc2VjbXAgKGFyZywgInNoNC1ub21tdS1ub2ZwdSIpID09IDApCisJcHJlc2V0X3RhcmdldF9hcmNoID0gYXJjaF9zaDRfbm9tbXVfbm9mcHU7CiAgICAgICBlbHNlIGlmIChzdHJjYXNlY21wIChhcmcsICJzaDRhIikgPT0gMCkKIAlwcmVzZXRfdGFyZ2V0X2FyY2ggPSBhcmNoX3NoNGE7CiAgICAgICBlbHNlIGlmIChzdHJjYXNlY21wIChhcmcsICJkc3AiKSA9PSAwKQpAQCAtMjk3MiwxOCArMzAzMCwyMyBAQAogLWxpdHRsZQkJCWdlbmVyYXRlIGxpdHRsZSBlbmRpYW4gY29kZVxuXAogLWJpZwkJCWdlbmVyYXRlIGJpZyBlbmRpYW4gY29kZVxuXAogLXJlbGF4CQkJYWx0ZXIganVtcCBpbnN0cnVjdGlvbnMgZm9yIGxvbmcgZGlzcGxhY2VtZW50c1xuXAorLXJlbmVzYXMJCWRpc2FibGUgb3B0aW1pemF0aW9uIHdpdGggc2VjdGlvbiBzeW1ib2wgZm9yXG5cCisJCQljb21wYXRpYmlsaXR5IHdpdGggUmVuZXNhcyBhc3NlbWJsZXIuXG5cCiAtc21hbGwJCQlhbGlnbiBzZWN0aW9ucyB0byA0IGJ5dGUgYm91bmRhcmllcywgbm90IDE2XG5cCi0tZHNwCQkJZW5hYmxlIHNoLWRzcCBpbnNucywgYW5kIGRpc2FibGUgZmxvYXRpbmctcG9pbnQgSVNBcy5cbiIpKTsKKy1kc3AJCQllbmFibGUgc2gtZHNwIGluc25zLCBhbmQgZGlzYWJsZSBmbG9hdGluZy1wb2ludCBJU0FzLlxuXAorLWlzYT1bc2g0XG5cCisgICAgfCBzaDQtbm9mcHUJCXNoNCB3aXRoIGZwdSBkaXNhYmxlZFxuXAorICAgIHwgc2g0LW5vbW11LW5vZnB1ICAgc2g0IHdpdGggbm8gTU1VIG9yIEZQVVxuXAorICAgIHwgc2g0YVxuXAorICAgIHwgZHNwICAgICAgICAgICAgICAgc2FtZSBhcyAnLWRzcCdcblwKKyAgICB8IGZwXG5cCisgICAgfCBhbnldCQl1c2UgbW9zdCBhcHByb3ByaWF0ZSBpc2FcbiIpKTsKICNpZmRlZiBIQVZFX1NINjQKICAgZnByaW50ZiAoc3RyZWFtLCBfKCJcCi0taXNhPVtzaDRcblwKLSAgICB8IHNoNGFcblwKLSAgICB8IGRzcAkJc2FtZSBhcyAnLWRzcCdcblwKLSAgICB8IGZwXG5cCi0gICAgfCBzaG1lZGlhCQlzZXQgYXMgdGhlIGRlZmF1bHQgaW5zdHJ1Y3Rpb24gc2V0IGZvciBTSDY0XG5cCistaXNhPVtzaG1lZGlhCQlzZXQgYXMgdGhlIGRlZmF1bHQgaW5zdHJ1Y3Rpb24gc2V0IGZvciBTSDY0XG5cCiAgICAgfCBTSG1lZGlhXG5cCiAgICAgfCBzaGNvbXBhY3RcblwKLSAgICB8IFNIY29tcGFjdFxuIikpOworICAgIHwgU0hjb21wYWN0XVxuIikpOwogICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKIC1hYmk9WzMyfDY0XQkJc2V0IHNpemUgb2YgZXhwYW5kZWQgU0htZWRpYSBvcGVyYW5kcyBhbmQgb2JqZWN0XG5cCiAJCQlmaWxlIHR5cGVcblwKQEAgLTI5OTQsMTMgKzMwNTcsNiBAQAogLW5vLWV4cGFuZAkJZG8gbm90IGV4cGFuZCBNT1ZJLCBQVCwgUFRBIG9yIFBUQiBpbnN0cnVjdGlvbnNcblwKIC1leHBhbmQtcHQzMgkJd2l0aCAtYWJpPTY0LCBleHBhbmQgUFQsIFBUQSBhbmQgUFRCIGluc3RydWN0aW9uc1xuXAogCQkJdG8gMzIgYml0cyBvbmx5XG4iKSk7Ci0jZWxzZQotICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKLS1pc2E9W3NoNFxuXAotICAgIHwgc2g0YVxuXAotICAgIHwgZHNwCQlzYW1lIGFzICctZHNwJ1xuXAotICAgIHwgZnBcblwKLSAgICB8IGFueV1cbiIpKTsKICNlbmRpZiAvKiBIQVZFX1NINjQgKi8KIH0KIAwKQEAgLTM1MjEsNiArMzU3Nyw3IEBACiAgIGlmIChmaXhQLT5meF9yX3R5cGUgPT0gQkZEX1JFTE9DXzMyX1BMVF9QQ1JFTAogICAgICAgfHwgZml4UC0+Znhfcl90eXBlID09IEJGRF9SRUxPQ18zMl9HT1RfUENSRUwKICAgICAgIHx8IGZpeFAtPmZ4X3JfdHlwZSA9PSBCRkRfUkVMT0NfU0hfR09UUEMKKyAgICAgIHx8ICgoZml4UC0+Znhfcl90eXBlID09IEJGRF9SRUxPQ18zMikgJiYgZG9udF9hZGp1c3RfcmVsb2NfMzIpCiAgICAgICB8fCBmaXhQLT5meF9yX3R5cGUgPT0gQkZEX1JFTE9DX1JWQSkKICAgICByZXR1cm4gMDsKIApAQCAtMzU2MCw2ICszNjE3LDggQEAKICAgICB2YWwgPSBFRl9TSDNfRFNQOwogICBlbHNlIGlmICh2YWxpZF9hcmNoICYgYXJjaF9zaDNlKQogICAgIHZhbCA9IEVGX1NIM0U7CisgIGVsc2UgaWYgKHZhbGlkX2FyY2ggJiBhcmNoX3NoNF9ub21tdV9ub2ZwdSkKKyAgICB2YWwgPSBFRl9TSDRfTk9NTVVfTk9GUFU7CiAgIGVsc2UgaWYgKHZhbGlkX2FyY2ggJiBhcmNoX3NoNF9ub2ZwdSkKICAgICB2YWwgPSBFRl9TSDRfTk9GUFU7CiAgIGVsc2UgaWYgKHZhbGlkX2FyY2ggJiBhcmNoX3NoNCkKQEAgLTQxODgsMTAgKzQyNDcsNyBAQAogICAgIHJlbC0+YWRkZW5kID0gMDsKIAogICByZWwtPmhvd3RvID0gYmZkX3JlbG9jX3R5cGVfbG9va3VwIChzdGRvdXRwdXQsIHJfdHlwZSk7Ci0jaWZkZWYgT0JKX0VMRgotICBpZiAocmVsLT5ob3d0by0+dHlwZSA9PSBSX1NIX0lORDEyVykKLSAgICAgIHJlbC0+YWRkZW5kICs9IGZpeHAtPmZ4X29mZnNldCAtIDQ7Ci0jZW5kaWYKKwogICBpZiAocmVsLT5ob3d0byA9PSBOVUxMKQogICAgIHsKICAgICAgIGFzX2JhZF93aGVyZSAoZml4cC0+ZnhfZmlsZSwgZml4cC0+ZnhfbGluZSwKQEAgLTQyMDEsNiArNDI1NywxMCBAQAogICAgICAgcmVsLT5ob3d0byA9IGJmZF9yZWxvY190eXBlX2xvb2t1cCAoc3Rkb3V0cHV0LCBCRkRfUkVMT0NfMzIpOwogICAgICAgYXNzZXJ0IChyZWwtPmhvd3RvICE9IE5VTEwpOwogICAgIH0KKyNpZmRlZiBPQkpfRUxGCisgIGVsc2UgaWYgKHJlbC0+aG93dG8tPnR5cGUgPT0gUl9TSF9JTkQxMlcpCisgICAgcmVsLT5hZGRlbmQgKz0gZml4cC0+Znhfb2Zmc2V0IC0gNDsKKyNlbmRpZgogCiAgIHJldHVybiByZWw7CiB9CmRpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLXh0ZW5zYS5jIGIvZ2FzL2NvbmZpZy90Yy14dGVuc2EuYwppbmRleCA4ZjEwMWRiLi42ZjkxOThhIDEwMDY0NAotLS0gYS9nYXMvY29uZmlnL3RjLXh0ZW5zYS5jCisrKyBiL2dhcy9jb25maWcvdGMteHRlbnNhLmMKQEAgLTc4ODgsMTAgKzc4ODgsOSBAQAogICB4dGVuc2FfY3JlYXRlX3Byb3BlcnR5X3NlZ21lbnRzIChnZXRfZnJhZ19pc19pbnNuLAogCQkJCSAgIFhURU5TQV9JTlNOX1NFQ19OQU1FLAogCQkJCSAgIHh0X2luc25fc2VjKTsKLSAgaWYgKHVzZV9saXRlcmFsX3NlY3Rpb24pCi0gICAgeHRlbnNhX2NyZWF0ZV9wcm9wZXJ0eV9zZWdtZW50cyAoZ2V0X2ZyYWdfaXNfbGl0ZXJhbCwKLQkJCQkgICAgIFhURU5TQV9MSVRfU0VDX05BTUUsCi0JCQkJICAgICB4dF9saXRlcmFsX3NlYyk7CisgIHh0ZW5zYV9jcmVhdGVfcHJvcGVydHlfc2VnbWVudHMgKGdldF9mcmFnX2lzX2xpdGVyYWwsCisJCQkJICAgWFRFTlNBX0xJVF9TRUNfTkFNRSwKKwkJCQkgICB4dF9saXRlcmFsX3NlYyk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKaW5kZXggZDY2M2Y3Mi4uMzUxNDk1NCAxMDA3NTUKLS0tIGEvZ2FzL2NvbmZpZ3VyZQorKysgYi9nYXMvY29uZmlndXJlCkBAIC00NDgyLDcgKzQ0ODIsNyBAQAogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAJICAgIGZpIDs7CiAgICAgICBwcGMtKi1ydGVtcyopCQkJZm10PWVsZiA7OwotICAgICAgcHBjLSotbWFjb3MqIHwgcHBjLSotbXB3KikJZm10PWNvZmYgZW09bWFjb3MgOzsKKyAgICAgIHBwYy0qLW1hY29zKikJCQlmbXQ9Y29mZiBlbT1tYWNvcyA7OwogICAgICAgcHBjLSotbmV0d2FyZSopCQkJZm10PWVsZiBlbT1wcGNudyA7OwogICAgICAgcHBjLSoqLW50byopCQkJZm10PWVsZiA7OwogICAgICAgcHBjLSota2FvcyopCQkJZm10PWVsZiA7OwpkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZS5pbiBiL2dhcy9jb25maWd1cmUuaW4KaW5kZXggYmRjZGRkZS4uMjc3NTJjZSAxMDA2NDQKLS0tIGEvZ2FzL2NvbmZpZ3VyZS5pbgorKysgYi9nYXMvY29uZmlndXJlLmluCkBAIC00MzMsNyArNDMzLDcgQEAKIAkJQUNfTVNHX0VSUk9SKFNvbGFyaXMgbXVzdCBiZSBjb25maWd1cmVkIGxpdHRsZSBlbmRpYW4pCiAJICAgIGZpIDs7CiAgICAgICBwcGMtKi1ydGVtcyopCQkJZm10PWVsZiA7OwotICAgICAgcHBjLSotbWFjb3MqIHwgcHBjLSotbXB3KikJZm10PWNvZmYgZW09bWFjb3MgOzsKKyAgICAgIHBwYy0qLW1hY29zKikJCQlmbXQ9Y29mZiBlbT1tYWNvcyA7OwogICAgICAgcHBjLSotbmV0d2FyZSopCQkJZm10PWVsZiBlbT1wcGNudyA7OwogICAgICAgcHBjLSoqLW50byopCQkJZm10PWVsZiA7OwogICAgICAgcHBjLSota2FvcyopCQkJZm10PWVsZiA7OwpkaWZmIC0tZ2l0IGEvZ2FzL2RvYy9NYWtlZmlsZS5pbiBiL2dhcy9kb2MvTWFrZWZpbGUuaW4KaW5kZXggYjUzYzE3YS4uYzVhYzZjMCAxMDA2NDQKLS0tIGEvZ2FzL2RvYy9NYWtlZmlsZS5pbgorKysgYi9nYXMvZG9jL01ha2VmaWxlLmluCkBAIC0xLDggKzEsOCBAQAotIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS43LjggZnJvbSBNYWtlZmlsZS5hbS4KKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuOC4yIGZyb20gTWFrZWZpbGUuYW0uCiAjIEBjb25maWd1cmVfaW5wdXRACiAKLSMgQ29weXJpZ2h0IDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMKLSMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKKyMgMjAwMywgMjAwNCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC0xMyw3ICsxMyw2IEBACiAjIFBBUlRJQ1VMQVIgUFVSUE9TRS4KIAogQFNFVF9NQUtFQAotCiBzcmNkaXIgPSBAc3JjZGlyQAogdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAogVlBBVEggPSBAc3JjZGlyQApAQCAtMjEsNyArMjAsNiBAQAogcGtnbGliZGlyID0gJChsaWJkaXIpL0BQQUNLQUdFQAogcGtnaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvQFBBQ0tBR0VACiB0b3BfYnVpbGRkaXIgPSAuLgotCiBhbV9fY2QgPSBDRFBBVEg9IiQke1pTSF9WRVJTSU9OKy59JChQQVRIX1NFUEFSQVRPUikiICYmIGNkCiBJTlNUQUxMID0gQElOU1RBTExACiBpbnN0YWxsX3NoX0RBVEEgPSAkKGluc3RhbGxfc2gpIC1jIC1tIDY0NApAQCAtMzgsNiArMzYsNDIgQEAKIGJ1aWxkX3RyaXBsZXQgPSBAYnVpbGRACiBob3N0X3RyaXBsZXQgPSBAaG9zdEAKIHRhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKK3N1YmRpciA9IGRvYworRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJChzcmNkaXIpL01ha2VmaWxlLmFtCitBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CithbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9hY2luY2x1ZGUubTQgXAorCSQodG9wX3NyY2RpcikvLi4vbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpLy4uL2dldHRleHQubTQgXAorCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmluCithbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAorCSQoQUNMT0NBTF9NNCkKK21raW5zdGFsbGRpcnMgPSAkKFNIRUxMKSAkKHRvcF9zcmNkaXIpLy4uL21raW5zdGFsbGRpcnMKK0NPTkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmgKK0NPTkZJR19DTEVBTl9GSUxFUyA9CitkZXBjb21wID0KK2FtX19kZXBmaWxlc19tYXliZSA9CitTT1VSQ0VTID0KK0RJU1RfU09VUkNFUyA9CitJTkZPX0RFUFMgPSAkKHNyY2RpcikvYXMuaW5mbworVEVYSU5GT19URVggPSAkKHRvcF9zcmNkaXIpLy4uL3RleGluZm8vdGV4aW5mby50ZXgKK2FtX19URVhJTkZPX1RFWF9ESVIgPSAkKHRvcF9zcmNkaXIpLy4uL3RleGluZm8KK0RWSVMgPSBhcy5kdmkKK1BERlMgPSBhcy5wZGYKK1BTUyA9IGFzLnBzCitIVE1MUyA9IGFzLmh0bWwKK1RFWElORk9TID0gYXMudGV4aW5mbworVEVYSTJEVkkgPSBgaWYgdGVzdCAtZiAkKHRvcF9zcmNkaXIpLy4uL3RleGluZm8vdXRpbC90ZXhpMmR2aTsgdGhlbiBcCisgICAgICAgICAgICAgZWNobyAkKHRvcF9zcmNkaXIpLy4uL3RleGluZm8vdXRpbC90ZXhpMmR2aTsgXAorICAgICAgICAgICBlbHNlIFwKKyAgICAgICAgICAgICBlY2hvIHRleGkyZHZpOyBcCisgICAgICAgICAgIGZpYAorVEVYSTJQREYgPSAkKFRFWEkyRFZJKSAtLXBkZiAtLWJhdGNoCitNQUtFSU5GT0hUTUwgPSAkKE1BS0VJTkZPKSAtLWh0bWwKK0FNX01BS0VJTkZPSFRNTEZMQUdTID0gJChBTV9NQUtFSU5GT0ZMQUdTKQorRFZJUFMgPSBkdmlwcworbWFuMWRpciA9ICQobWFuZGlyKS9tYW4xCithbV9faW5zdGFsbGRpcnMgPSAkKERFU1RESVIpJChtYW4xZGlyKQorTlJPRkYgPSBucm9mZgorTUFOUyA9ICQobWFuX01BTlMpCiBBQ0xPQ0FMID0gQEFDTE9DQUxACiBBTExPQ0EgPSBAQUxMT0NBQAogQUxMX09CSl9ERVBTID0gQEFMTF9PQkpfREVQU0AKQEAgLTE1MCw2ICsxODQsNyBAQAogbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAogbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQAogbWFuZGlyID0gQG1hbmRpckAKK21rZGlyX3AgPSBAbWtkaXJfcEAKIG9ial9mb3JtYXQgPSBAb2JqX2Zvcm1hdEAKIG9sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVkZWRpckAKIHByZWZpeCA9IEBwcmVmaXhACkBAIC0xNjQsMjUgKzE5OSwxOSBAQAogdGFyZ2V0X29zID0gQHRhcmdldF9vc0AKIHRhcmdldF92ZW5kb3IgPSBAdGFyZ2V0X3ZlbmRvckAKIHRlX2ZpbGUgPSBAdGVfZmlsZUAKLQotQVVUT01BS0VfT1BUSU9OUyA9IGN5Z251cworQVVUT01BS0VfT1BUSU9OUyA9IDEuOCBjeWdudXMKIAogIyBXaGF0IHZlcnNpb24gb2YgdGhlIG1hbnVhbCB5b3Ugd2FudDsgImFsbCIgaW5jbHVkZXMgZXZlcnl0aGluZwogQ09ORklHID0gYWxsCiAKICMgT3B0aW9ucyB0byBleHRyYWN0IHRoZSBtYW4gcGFnZSBmcm9tIGFzLnRleGluZm8KIE1BTkNPTkYgPSAtRG1hbgotCiBURVhJMlBPRCA9IHBlcmwgJCh0b3Bfc3JjZGlyKS8uLi9ldGMvdGV4aTJwb2QucGwKLQogUE9EMk1BTiA9IHBvZDJtYW4gLS1jZW50ZXI9IkdOVSBEZXZlbG9wbWVudCBUb29scyIgXAogCS0tcmVsZWFzZT0iYmludXRpbHMtJChWRVJTSU9OKSIgLS1zZWN0aW9uPTEKIAotCiBtYW5fTUFOUyA9IGFzLjEKLQogaW5mb19URVhJTkZPUyA9IGFzLnRleGluZm8gCi0KIENQVV9ET0NTID0gXAogCWMtYTI5ay50ZXhpIFwKIAljLWFscGhhLnRleGkgXApAQCAtMjE5LDQwICsyNDgsNDYgQEAKIAljLXo4ay50ZXhpCiAKIAotCiAjIFRoaXMgb25lIGlzbid0IHJlYWR5IGZvciBwcmltZSB0aW1lIHlldC4gIE5vdCBldmVuIGEgbGl0dGxlIGJpdC4KIG5vaW5zdF9URVhJTkZPUyA9IGludGVybmFscy50ZXhpCi0KIERJU1RDTEVBTkZJTEVTID0gYXNjb25maWcudGV4aQotCiBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IGdhc3Zlci50ZXhpCi1zdWJkaXIgPSBkb2MKLUFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKLW1raW5zdGFsbGRpcnMgPSAkKFNIRUxMKSAkKHRvcF9zcmNkaXIpLy4uL21raW5zdGFsbGRpcnMKLUNPTkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmgKLUNPTkZJR19DTEVBTl9GSUxFUyA9Ci1kZXBjb21wID0KLWFtX19kZXBmaWxlc19tYXliZSA9Ci1ESVNUX1NPVVJDRVMgPQotVEVYSU5GT19URVggPSAkKHRvcF9zcmNkaXIpLy4uL3RleGluZm8vdGV4aW5mby50ZXgKLWFtX19URVhJTkZPX1RFWF9ESVIgPSAkKHRvcF9zcmNkaXIpLy4uL3RleGluZm8KLUlORk9fREVQUyA9IGFzLmluZm8KLURWSVMgPSBhcy5kdmkKLVBERlMgPSBhcy5wZGYKLVBTUyA9IGFzLnBzCi1URVhJTkZPUyA9IGFzLnRleGluZm8KLQotTlJPRkYgPSBucm9mZgotTUFOUyA9ICQobWFuX01BTlMpCitCQVNFRElSID0gJChzcmNkaXIpLy4uLy4uCitCRkRESVIgPSAkKEJBU0VESVIpL2JmZAorQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMgPSAkKEJGRERJUikvY29uZmlndXJlLmluCiBhbGw6IGFsbC1hbQogCiAuU1VGRklYRVM6Ci0uU1VGRklYRVM6IC5kdmkgLmluZm8gLnBkZiAucHMgLnRleGluZm8KLSQoc3JjZGlyKS9NYWtlZmlsZS5pbjogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCBNYWtlZmlsZS5hbSAgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuaW4gJChBQ0xPQ0FMX000KQorLlNVRkZJWEVTOiAuZHZpIC5odG1sIC5pbmZvIC5wZGYgLnBzIC50ZXhpbmZvCiskKHNyY2RpcikvTWFrZWZpbGUuaW46IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChzcmNkaXIpL01ha2VmaWxlLmFtICAkKGFtX19jb25maWd1cmVfZGVwcykKKwlAZm9yIGRlcCBpbiAkPzsgZG8gXAorCSAgY2FzZSAnJChhbV9fY29uZmlndXJlX2RlcHMpJyBpbiBcCisJICAgICokJGRlcCopIFwKKwkgICAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2ggXAorCQkmJiBleGl0IDA7IFwKKwkgICAgICBleGl0IDE7OyBcCisJICBlc2FjOyBcCisJZG9uZTsgXAorCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZm9yZWlnbiAgZG9jL01ha2VmaWxlJzsgXAogCWNkICQodG9wX3NyY2RpcikgJiYgXAotCSAgJChBVVRPTUFLRSkgLS1jeWdudXMgIGRvYy9NYWtlZmlsZQotTWFrZWZpbGU6IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChzcmNkaXIpL01ha2VmaWxlLmluICAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwotCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRAICQoYW1fX2RlcGZpbGVzX21heWJlKQorCSAgJChBVVRPTUFLRSkgLS1mb3JlaWduICBkb2MvTWFrZWZpbGUKKy5QUkVDSU9VUzogTWFrZWZpbGUKK01ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKwlAY2FzZSAnJD8nIGluIFwKKwkgICpjb25maWcuc3RhdHVzKikgXAorCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2g7OyBcCisJICAqKSBcCisJICAgIGVjaG8gJyBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQCAkKGFtX19kZXBmaWxlc19tYXliZSknOyBcCisJICAgIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRAICQoYW1fX2RlcGZpbGVzX21heWJlKTs7IFwKKwllc2FjOworCiskKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1czogJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUgJChDT05GSUdfU1RBVFVTX0RFUEVOREVOQ0lFUykKKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKKworJCh0b3Bfc3JjZGlyKS9jb25maWd1cmU6IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChhbV9fY29uZmlndXJlX2RlcHMpCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCiskKEFDTE9DQUxfTTQpOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAICQoYW1fX2FjbG9jYWxfbTRfZGVwcykKKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKIAogbW9zdGx5Y2xlYW4tbGlidG9vbDoKIAktcm0gLWYgKi5sbwpAQCAtMjY0LDI5ICsyOTksNDggQEAKIAktcm0gLWYgbGlidG9vbAogCiAudGV4aW5mby5pbmZvOgotCUBybSAtZiAkQCAkQC1bMC05XSAkQC1bMC05XVswLTldICQoQDouaW5mbz0pLmlbMC05XSAkKEA6LmluZm89KS5pWzAtOV1bMC05XQotCSQoTUFLRUlORk8pICQoQU1fTUFLRUlORk9GTEFHUykgJChNQUtFSU5GT0ZMQUdTKSAtSSAkKHNyY2RpcikgXAotCSAtbyAkQCBgdGVzdCAtZiAnJDwnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYCQ8CisJcmVzdG9yZT06ICYmIFwKKwliYWNrdXBkaXI9IiQoYW1fX2xlYWRpbmdfZG90KWFtJCQkJCIgJiYgXAorCWFtX19jd2Q9YHB3ZGAgJiYgY2QgJChzcmNkaXIpICYmIFwKKwlybSAtcmYgJCRiYWNrdXBkaXIgJiYgbWtkaXIgJCRiYWNrdXBkaXIgJiYgXAorCWZvciBmIGluICRAICRALVswLTldICRALVswLTldWzAtOV0gJChAOi5pbmZvPSkuaVswLTldICQoQDouaW5mbz0pLmlbMC05XVswLTldOyBkbyBcCisJICBpZiB0ZXN0IC1mICQkZjsgdGhlbiBcCisJICAgIG12ICQkZiAkJGJhY2t1cGRpcjsgXAorCSAgICByZXN0b3JlPW12OyBcCisJICBmaTsgXAorCWRvbmU7IFwKKwljZCAiJCRhbV9fY3dkIjsgXAorCWlmICQoTUFLRUlORk8pICQoQU1fTUFLRUlORk9GTEFHUykgJChNQUtFSU5GT0ZMQUdTKSAtSSAkKHNyY2RpcikgXAorCSAtbyAkQCAkPDsgXAorCXRoZW4gXAorCSAgcmM9MDsgXAorCSAgY2QgJChzcmNkaXIpOyBcCisJZWxzZSBcCisJICByYz0kJD87IFwKKwkgIGNkICQoc3JjZGlyKSAmJiBcCisJICAkJHJlc3RvcmUgJCRiYWNrdXBkaXIvKiBgZWNobyAiLi8kQCIgfCBzZWQgJ3N8W14vXSokJHx8J2A7IFwKKwlmaTsgXAorCXJtIC1yZiAkJGJhY2t1cGRpcjsgXAorCWV4aXQgJCRyYwogCiAudGV4aW5mby5kdmk6CiAJVEVYSU5QVVRTPSIkKGFtX19URVhJTkZPX1RFWF9ESVIpJChQQVRIX1NFUEFSQVRPUikkJFRFWElOUFVUUyIgXAogCU1BS0VJTkZPPSckKE1BS0VJTkZPKSAkKEFNX01BS0VJTkZPRkxBR1MpICQoTUFLRUlORk9GTEFHUykgLUkgJChzcmNkaXIpJyBcCi0JJChURVhJMkRWSSkgYHRlc3QgLWYgJyQ8JyB8fCBlY2hvICckKHNyY2RpcikvJ2AkPAorCSQoVEVYSTJEVkkpICQ8CiAKIC50ZXhpbmZvLnBkZjoKIAlURVhJTlBVVFM9IiQoYW1fX1RFWElORk9fVEVYX0RJUikkKFBBVEhfU0VQQVJBVE9SKSQkVEVYSU5QVVRTIiBcCiAJTUFLRUlORk89JyQoTUFLRUlORk8pICQoQU1fTUFLRUlORk9GTEFHUykgJChNQUtFSU5GT0ZMQUdTKSAtSSAkKHNyY2RpciknIFwKLQkkKFRFWEkyUERGKSBgdGVzdCAtZiAnJDwnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYCQ8CisJJChURVhJMlBERikgJDwKKworLnRleGluZm8uaHRtbDoKKwkkKE1BS0VJTkZPSFRNTCkgJChBTV9NQUtFSU5GT0hUTUxGTEFHUykgJChNQUtFSU5GT0ZMQUdTKSAtSSAkKHNyY2RpcikgXAorCSAtbyAkQCAkPAorCWlmIHRlc3QgISAtZCAkQCAmJiB0ZXN0IC1kICQoQDouaHRtbD0pOyB0aGVuIFwKKwkgIG12ICQoQDouaHRtbD0pICRAOyBlbHNlIDo7IGZpCiskKHNyY2RpcikvYXMuaW5mbzogYXMudGV4aW5mbyAKIGFzLnBkZjogYXMudGV4aW5mbyAKLQotVEVYSTJEVkkgPSBgaWYgdGVzdCAtZiAkKHRvcF9zcmNkaXIpLy4uL3RleGluZm8vdXRpbC90ZXhpMmR2aTsgdGhlbiBcCi0gICAgICAgICAgICAgZWNobyAkKHRvcF9zcmNkaXIpLy4uL3RleGluZm8vdXRpbC90ZXhpMmR2aTsgXAotICAgICAgICAgICBlbHNlIFwKLSAgICAgICAgICAgICBlY2hvIHRleGkyZHZpOyBcCi0gICAgICAgICAgIGZpYAotCi1URVhJMlBERiA9ICQoVEVYSTJEVkkpIC0tcGRmIC0tYmF0Y2gKLURWSVBTID0gZHZpcHMKK2FzLmh0bWw6IGFzLnRleGluZm8gCiAuZHZpLnBzOgogCSQoRFZJUFMpIC1vICRAICQ8CiAKQEAgLTMxMyw4ICszNjcsMTIgQEAKIAlkb25lCiAKIGRpc3QtaW5mbzogJChJTkZPX0RFUFMpCisJQHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzfC58LnxnJ2A7IFwKIAlsaXN0PSckKElORk9fREVQUyknOyBcCiAJZm9yIGJhc2UgaW4gJCRsaXN0OyBkbyBcCisJICBjYXNlICQkYmFzZSBpbiBcCisJICAgICQoc3JjZGlyKS8qKSBiYXNlPWBlY2hvICIkJGJhc2UiIHwgc2VkICJzfF4kJHNyY2RpcnN0cmlwL3x8ImA7OyBcCisJICBlc2FjOyBcCiAJICBpZiB0ZXN0IC1mICQkYmFzZTsgdGhlbiBkPS47IGVsc2UgZD0kKHNyY2Rpcik7IGZpOyBcCiAJICBmb3IgZmlsZSBpbiAkJGQvJCRiYXNlKjsgZG8gXAogCSAgICByZWxmaWxlPWBleHByICIkJGZpbGUiIDogIiQkZC9cKC4qXCkiYDsgXApAQCAtMzI0LDggKzM4Miw4IEBACiAJZG9uZQogCiBtb3N0bHljbGVhbi1hbWluZm86Ci0JLXJtIC1mIGFzLmF1eCBhcy5jcCBhcy5jcHMgYXMuZm4gYXMuZm5zIGFzLmt5IGFzLmxvZyBhcy5wZyBhcy5wZ3MgYXMudG1wIFwKLQkgIGFzLnRvYyBhcy50cCBhcy50cHMgYXMudnIgYXMudnJzIGFzLmR2aSBhcy5wZGYgYXMucHMKKwktcm0gLXJmIGFzLmF1eCBhcy5jcCBhcy5jcHMgYXMuZm4gYXMuZm5zIGFzLmt5IGFzLmxvZyBhcy5wZyBhcy5wZ3MgYXMudG1wIFwKKwkgIGFzLnRvYyBhcy50cCBhcy50cHMgYXMudnIgYXMudnJzIGFzLmR2aSBhcy5wZGYgYXMucHMgYXMuaHRtbAogCiBtYWludGFpbmVyLWNsZWFuLWFtaW5mbzoKIAlAbGlzdD0nJChJTkZPX0RFUFMpJzsgZm9yIGkgaW4gJCRsaXN0OyBkbyBcCkBAIC0zMzUsMTEgKzM5Myw5IEBACiAJZG9uZQogCiBjbGVhbi1pbmZvOiBtb3N0bHljbGVhbi1hbWluZm8KLQotbWFuMWRpciA9ICQobWFuZGlyKS9tYW4xCiBpbnN0YWxsLW1hbjE6ICQobWFuMV9NQU5TKSAkKG1hbl9NQU5TKQogCUAkKE5PUk1BTF9JTlNUQUxMKQotCSQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobWFuMWRpcikKKwkkKG1rZGlyX3ApICQoREVTVERJUikkKG1hbjFkaXIpCiAJQGxpc3Q9JyQobWFuMV9NQU5TKSAkKGRpc3RfbWFuMV9NQU5TKSAkKG5vZGlzdF9tYW4xX01BTlMpJzsgXAogCWwyPSckKG1hbl9NQU5TKSAkKGRpc3RfbWFuX01BTlMpICQobm9kaXN0X21hbl9NQU5TKSc7IFwKIAlmb3IgaSBpbiAkJGwyOyBkbyBcCkBAIC0zOTEsOSArNDQ3LDkgQEAKIGNoZWNrLWFtOgogY2hlY2s6IGNoZWNrLWFtCiBhbGwtYW06IE1ha2VmaWxlICQoTUFOUykKLQogaW5zdGFsbGRpcnM6Ci0JJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChtYW4xZGlyKQorCSQobWtkaXJfcCkgJChERVNURElSKSQobWFuMWRpcikKK2luc3RhbGw6IGluc3RhbGwtYW0KIGluc3RhbGwtZXhlYzogaW5zdGFsbC1leGVjLWFtCiBpbnN0YWxsLWRhdGE6IGluc3RhbGwtZGF0YS1hbQogdW5pbnN0YWxsOiB1bmluc3RhbGwtYW0KQEAgLTQwNCw3ICs0NjAsNyBAQAogaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stYW0KIGluc3RhbGwtc3RyaXA6CiAJJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKLQkgIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKIAkgIGB0ZXN0IC16ICckKFNUUklQKScgfHwgXAogCSAgICBlY2hvICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknImAgaW5zdGFsbAogbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKQEAgLTQzMSwyMSArNDg3LDI3IEBACiAKIGR2aS1hbTogJChEVklTKQogCi1pbmZvOiBpbmZvLWFtCitodG1sOiBodG1sLWFtCisKK2h0bWwtYW06ICQoSFRNTFMpCiAKIGluZm8tYW06ICQoSU5GT19ERVBTKQogCi1pbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtbWFuCitpbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtZGF0YS1sb2NhbCBpbnN0YWxsLW1hbgogCiBpbnN0YWxsLWV4ZWMtYW06CiAKLWluc3RhbGwtaW5mbzoKK2luc3RhbGwtaW5mbzogaW5zdGFsbC1pbmZvLWFtCiAKIGluc3RhbGwtaW5mby1hbTogJChJTkZPX0RFUFMpCiAJQCQoTk9STUFMX0lOU1RBTEwpCi0JJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChpbmZvZGlyKQotCUBsaXN0PSckKElORk9fREVQUyknOyBcCisJJChta2Rpcl9wKSAkKERFU1RESVIpJChpbmZvZGlyKQorCUBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOyBcCisJbGlzdD0nJChJTkZPX0RFUFMpJzsgXAogCWZvciBmaWxlIGluICQkbGlzdDsgZG8gXAorCSAgY2FzZSAkJGZpbGUgaW4gXAorCSAgICAkKHNyY2RpcikvKikgZmlsZT1gZWNobyAiJCRmaWxlIiB8IHNlZCAic3xeJCRzcmNkaXJzdHJpcC98fCJgOzsgXAorCSAgZXNhYzsgXAogCSAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gZD0uOyBlbHNlIGQ9JChzcmNkaXIpOyBmaTsgXAogCSAgZmlsZV9pPWBlY2hvICIkJGZpbGUiIHwgc2VkICdzfFwuaW5mbyQkfHw7c3wkJHwuaXwnYDsgXAogCSAgZm9yIGlmaWxlIGluICQkZC8kJGZpbGUgJCRkLyQkZmlsZS1bMC05XSAkJGQvJCRmaWxlLVswLTldWzAtOV0gXApAQCAtNDk1LDE1ICs1NTcsMTUgQEAKIAogLlBIT05ZOiBhbGwgYWxsLWFtIGNoZWNrIGNoZWNrLWFtIGNsZWFuIGNsZWFuLWdlbmVyaWMgY2xlYW4taW5mbyBcCiAJY2xlYW4tbGlidG9vbCBkaXN0LWluZm8gZGlzdGNsZWFuIGRpc3RjbGVhbi1nZW5lcmljIFwKLQlkaXN0Y2xlYW4tbGlidG9vbCBkdmkgZHZpLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gXAotCWluc3RhbGwtZGF0YSBpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBcCi0JaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBpbnN0YWxsLW1hbjEgXAotCWluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBcCi0JbWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWFtaW5mbyBcCi0JbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIG1vc3RseWNsZWFuLWFtaW5mbyBcCi0JbW9zdGx5Y2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1saWJ0b29sIHBkZiBwZGYtYW0gcHMgcHMtYW0gXAotCXVuaW5zdGFsbCB1bmluc3RhbGwtYW0gdW5pbnN0YWxsLWluZm8tYW0gdW5pbnN0YWxsLW1hbiBcCi0JdW5pbnN0YWxsLW1hbjEKKwlkaXN0Y2xlYW4tbGlidG9vbCBkdmkgZHZpLWFtIGh0bWwgaHRtbC1hbSBpbmZvIGluZm8tYW0gaW5zdGFsbCBcCisJaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZGF0YS1sb2NhbCBcCisJaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWluZm8gaW5zdGFsbC1pbmZvLWFtIFwKKwlpbnN0YWxsLW1hbiBpbnN0YWxsLW1hbjEgaW5zdGFsbC1zdHJpcCBpbnN0YWxsY2hlY2sgXAorCWluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBtYWludGFpbmVyLWNsZWFuIFwKKwltYWludGFpbmVyLWNsZWFuLWFtaW5mbyBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4gXAorCW1vc3RseWNsZWFuLWFtaW5mbyBtb3N0bHljbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWxpYnRvb2wgcGRmIFwKKwlwZGYtYW0gcHMgcHMtYW0gdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSB1bmluc3RhbGwtaW5mby1hbSBcCisJdW5pbnN0YWxsLW1hbiB1bmluc3RhbGwtbWFuMQogCiAKIGFzY29uZmlnLnRleGk6ICQoQ09ORklHKS50ZXhpCkBAIC01MjEsOCArNTgzLDcgQEAKIAogIyBXZSB3YW50IGluc3RhbGwgdG8gaW1wbHkgaW5zdGFsbC1pbmZvIGFzIHBlciBHTlUgc3RhbmRhcmRzLCBkZXNwaXRlIHRoZQogIyBjeWdudXMgb3B0aW9uLgotaW5zdGFsbDogaW5zdGFsbC1pbmZvCi1pbnN0YWxsLWluZm86IGluc3RhbGwtaW5mby1hbQoraW5zdGFsbC1kYXRhLWxvY2FsOiBpbnN0YWxsLWluZm8KIAogIyBNYWludGVuYW5jZQogCmRpZmYgLS1naXQgYS9nYXMvZG9jL2FzLnRleGluZm8gYi9nYXMvZG9jL2FzLnRleGluZm8KaW5kZXggZDlkMjNkZi4uZmMwMmJiNyAxMDA2NDQKLS0tIGEvZ2FzL2RvYy9hcy50ZXhpbmZvCisrKyBiL2dhcy9kb2MvYXMudGV4aW5mbwpAQCAtMjYzLDYgKzI2Myw3IEBACiAgICBbQGJ7LW1hcmNofT1AdmFye2FyY2hpdGVjdHVyZX1bK0B2YXJ7ZXh0ZW5zaW9ufUBkb3Rze31dXQogICAgW0Biey1tZnB1fT1AdmFye2Zsb2F0aW5nLXBvaW50LWZvcm1hdH1dCiAgICBbQGJ7LW1mbG9hdC1hYml9PUB2YXJ7YWJpfV0KKyAgIFtAYnstbWVhYml9PUB2YXJ7dmVyfV0KICAgIFtAYnstbXRodW1ifV0KICAgIFtAYnstRUJ9fEBiey1FTH1dCiAgICBbQGJ7LW1hcGNzLTMyfXxAYnstbWFwY3MtMjZ9fEBiey1tYXBjcy1mbG9hdH18CmRpZmYgLS1naXQgYS9nYXMvZG9jL2MtYXJtLnRleGkgYi9nYXMvZG9jL2MtYXJtLnRleGkKaW5kZXggMjNjZDdiYi4uZTg3MWQyOCAxMDA2NDQKLS0tIGEvZ2FzL2RvYy9jLWFybS50ZXhpCisrKyBiL2dhcy9kb2MvYy1hcm0udGV4aQpAQCAtMjI4LDYgKzIyOCwxNSBAQAogYW5kCiBAY29kZXtoYXJkfS4KIAorQGNpbmRleCBAY29kZXstZWFiaT19IGNvbW1hbmQgbGluZSBvcHRpb24sIEFSTQorQGl0ZW0gLW1lYWJpPUB2YXJ7dmVyfQorVGhpcyBvcHRpb24gc3BlY2lmaWVzIHdoaWNoIEVBQkkgdmVyc2lvbiB0aGUgcHJvZHVjZWQgb2JqZWN0IGZpbGVzIHNob3VsZAorY29uZm9ybSB0by4KK1RoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSByZWNvZ25pc2VkOgorQGNvZGV7Z251fQorYW5kCitAY29kZXszfS4KKwogQGNpbmRleCBAY29kZXstRUJ9IGNvbW1hbmQgbGluZSBvcHRpb24sIEFSTQogQGl0ZW0gLUVCCiBUaGlzIG9wdGlvbiBzcGVjaWZpZXMgdGhhdCB0aGUgb3V0cHV0IGdlbmVyYXRlZCBieSB0aGUgYXNzZW1ibGVyIHNob3VsZApkaWZmIC0tZ2l0IGEvZ2FzL2RvYy9jLWhwcGEudGV4aSBiL2dhcy9kb2MvYy1ocHBhLnRleGkKaW5kZXggMGRkZGEwNC4uN2U5ZWEzMCAxMDA2NDQKLS0tIGEvZ2FzL2RvYy9jLWhwcGEudGV4aQorKysgYi9nYXMvZG9jL2MtaHBwYS50ZXhpCkBAIC0xLDQgKzEsNCBAQAotQGMgQ29weXJpZ2h0IDE5OTEsIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTgKK0BjIENvcHlyaWdodCAxOTkxLCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk4LCAyMDA0CiBAYyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIEBjIFRoaXMgaXMgcGFydCBvZiB0aGUgR0FTIG1hbnVhbC4KIEBjIEZvciBjb3B5aW5nIGNvbmRpdGlvbnMsIHNlZSB0aGUgZmlsZSBhcy50ZXhpbmZvLgpAQCAtMTgxLDcgKzE4MSw3IEBACiBOb3QgeWV0IHN1cHBvcnRlZDsgdGhlIGFzc2VtYmxlciByZWplY3RzIHByb2dyYW1zIGNvbnRhaW5pbmcgdGhpcyBkaXJlY3RpdmUuCiAKIEBpdGVtIC5vcmlnaW4gQHZhcntsY30KLUFkdmFuY2UgbG9jYXRpb24gY291bnRlciB0byBAdmFye2xjfS4gU3lub255bSBmb3IgdGhlIEBjb2Rle0B2YWx1ZXthc319CitBZHZhbmNlIGxvY2F0aW9uIGNvdW50ZXIgdG8gQHZhcntsY30uIFN5bm9ueW0gZm9yIHRoZSBAY29kZXtAdmFsdWV7QVN9fQogcG9ydGFibGUgZGlyZWN0aXZlIEBjb2Rley5vcmd9LgogCiBAaXRlbSAucGFyYW0gQHZhcntuYW1lfSBbICxAdmFye3R5cH0gXSAgWyAsQHZhcntwYXJhbX09QHZhcntyfSBdCmRpZmYgLS1naXQgYS9nYXMvZG9jL2MtbTMyci50ZXhpIGIvZ2FzL2RvYy9jLW0zMnIudGV4aQppbmRleCA0MzYwZWU2Li41MmE3M2MzIDEwMDY0NAotLS0gYS9nYXMvZG9jL2MtbTMyci50ZXhpCisrKyBiL2dhcy9kb2MvYy1tMzJyLnRleGkKQEAgLTEsNCArMSw1IEBACi1AYyBDb3B5cmlnaHQgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMjAwMCwgMjAwMworQGMgQ29weXJpZ2h0IDE5OTEsIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDIwMDAsCitAYyAyMDAzLCAyMDA0CiBAYyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIEBjIFRoaXMgaXMgcGFydCBvZiB0aGUgR0FTIG1hbnVhbC4KIEBjIEZvciBjb3B5aW5nIGNvbmRpdGlvbnMsIHNlZSB0aGUgZmlsZSBhcy50ZXhpbmZvLgpAQCAtOTEsNiArOTIsMTIgQEAKIEBjaW5kZXggQGNvZGV7LW5vLXBhcmFsbGVsfSBvcHRpb24sIE0zMlJYCiBUaGlzIG9wdGlvbiBkaXNhYmxlcyBhIHByZXZpb3VzbHkgZW5hYmxlZCBAZW1waHstcGFyYWxsZWx9IG9wdGlvbi4KIAorQGl0ZW0gLW5vLWJpdGluc3QKK0BjaW5kZXggQHNhbXB7LW5vLWJpdGluc3R9LCBNMzJSMgorVGhpcyBvcHRpb24gZGlzYWJsZXMgdGhlIHN1cHBvcnQgZm9yIHRoZSBleHRlbmRlZCBiaXQtZmllbGQKK2luc3RydWN0aW9ucyBwcm92aWRlZCBieSB0aGUgTTMyUjIuICBJZiB0aGlzIHN1cHBvcnQgbmVlZHMgdG8gYmUKK3JlLWVuYWJsZWQgdGhlIEBlbXBoey1iaXRpbnN0fSBzd2l0Y2ggY2FuIGJlIHVzZWQgdG8gcmVzdG9yZSBpdC4KKwogQGl0ZW0gLU8KIEBjaW5kZXggQGNvZGV7LU99IG9wdGlvbiwgTTMyUlgKIFRoaXMgb3B0aW9uIHRlbGxzIHRoZSBhc3NlbWJsZXIgdG8gYXR0ZW1wdCB0byBvcHRpbWl6ZSB0aGUKZGlmZiAtLWdpdCBhL2dhcy9kb2MvYy1zaC50ZXhpIGIvZ2FzL2RvYy9jLXNoLnRleGkKaW5kZXggNTA5MTA2Zi4uYjA4ZjMyNSAxMDA2NDQKLS0tIGEvZ2FzL2RvYy9jLXNoLnRleGkKKysrIGIvZ2FzL2RvYy9jLXNoLnRleGkKQEAgLTI5LDYgKzI5LDcgQEAKIEBraW5kZXggLXJlbGF4CiBAa2luZGV4IC1zbWFsbAogQGtpbmRleCAtZHNwCitAa2luZGV4IC1yZW5lc2FzCiAKIEBpdGVtIC1saXR0bGUKIEdlbmVyYXRlIGxpdHRsZSBlbmRpYW4gY29kZS4KQEAgLTQ1LDYgKzQ2LDEwIEBACiBAaXRlbSAtZHNwCiBFbmFibGUgc2gtZHNwIGluc25zLCBhbmQgZGlzYWJsZSBzaDNlIC8gc2g0IGluc25zLgogCitAaXRlbSAtcmVuZXNhcworRGlzYWJsZSBvcHRpbWl6YXRpb24gd2l0aCBzZWN0aW9uIHN5bWJvbCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoCitSZW5lc2FzIGFzc2VtYmxlci4KKwogQGl0ZW0gLWlzYT1zaDQgfCBzaDRhCiBTcGVjaWZ5IHRoZSBzaDQgb3Igc2g0YSBpbnN0cnVjdGlvbiBzZXQuCiBAaXRlbSAtaXNhPWRzcApkaWZmIC0tZ2l0IGEvZ2FzL2R3MmdlbmNmaS5jIGIvZ2FzL2R3MmdlbmNmaS5jCmluZGV4IDNiZTdlMjAuLmZmMGFhMzUgMTAwNjQ0Ci0tLSBhL2dhcy9kdzJnZW5jZmkuYworKysgYi9nYXMvZHcyZ2VuY2ZpLmMKQEAgLTg1Nyw2ICs4NTcsNyBAQAogICAgIGZvciAoaSA9IGNpZS0+Zmlyc3Q7IGkgIT0gY2llLT5sYXN0OyBpID0gaS0+bmV4dCkKICAgICAgIG91dHB1dF9jZmlfaW5zbiAoaSk7CiAKKyAgZnJhZ19hbGlnbiAoMiwgMCwgMCk7CiAgIHN5bWJvbF9zZXRfdmFsdWVfbm93IChlbmRfYWRkcmVzcyk7CiB9CiAKQEAgLTkwNiw4ICs5MDcsNyBAQAogICBmb3IgKDsgZmlyc3Q7IGZpcnN0ID0gZmlyc3QtPm5leHQpCiAgICAgb3V0cHV0X2NmaV9pbnNuIChmaXJzdCk7CiAKLSAgaWYgKGFsaWduKQotICAgIGZyYWdfYWxpZ24gKGFsaWduLCAwLCAwKTsKKyAgZnJhZ19hbGlnbiAoYWxpZ24sIDAsIDApOwogICBzeW1ib2xfc2V0X3ZhbHVlX25vdyAoZW5kX2FkZHJlc3MpOwogfQogCkBAIC0xMDM1LDcgKzEwMzUsNyBAQAogICAgICAgc3RydWN0IGNpZV9lbnRyeSAqY2llOwogCiAgICAgICBjaWUgPSBzZWxlY3RfY2llX2Zvcl9mZGUgKGZkZSwgJmZpcnN0KTsKLSAgICAgIG91dHB1dF9mZGUgKGZkZSwgY2llLCBmaXJzdCwgZmRlLT5uZXh0ID09IE5VTEwgPyBFSF9GUkFNRV9BTElHTk1FTlQgOiAwKTsKKyAgICAgIG91dHB1dF9mZGUgKGZkZSwgY2llLCBmaXJzdCwgZmRlLT5uZXh0ID09IE5VTEwgPyBFSF9GUkFNRV9BTElHTk1FTlQgOiAyKTsKICAgICB9CiAKICAgZmxhZ190cmFkaXRpb25hbF9mb3JtYXQgPSBzYXZlX2ZsYWdfdHJhZGl0aW9uYWxfZm9ybWF0OwpkaWZmIC0tZ2l0IGEvZ2FzL2V4cHIuYyBiL2dhcy9leHByLmMKaW5kZXggYTE4ZDZkOC4uYjdjYzFiOCAxMDA2NDQKLS0tIGEvZ2FzL2V4cHIuYworKysgYi9nYXMvZXhwci5jCkBAIC0xMDIxLDYgKzEwMjEsOSBAQAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlICcrJzoKKyAgICAgIC8qIERvIG5vdCBhY2NlcHQgKytlIGFzICsoK2UpICovCisgICAgICBpZiAoaW5wdXRfbGluZV9wb2ludGVyWzFdID09ICcrJykKKwlnb3RvIHRhcmdldF9vcDsKICAgICAgICh2b2lkKSBvcGVyYW5kIChleHByZXNzaW9uUCk7CiAgICAgICBicmVhazsKIApAQCAtMTAzOCw2ICsxMDQxLDEwIEBACiAgICAgY2FzZSAnISc6CiAgICAgY2FzZSAnLSc6CiAgICAgICB7CisgICAgICAgIC8qIERvIG5vdCBhY2NlcHQgLS1lIGFzIC0oLWUpICovCisJaWYgKGMgPT0gJy0nICYmIGlucHV0X2xpbmVfcG9pbnRlclsxXSA9PSAnLScpCisJICBnb3RvIHRhcmdldF9vcDsKKwkKIAlvcGVyYW5kIChleHByZXNzaW9uUCk7CiAJaWYgKGV4cHJlc3Npb25QLT5YX29wID09IE9fY29uc3RhbnQpCiAJICB7CkBAIC0xMjg5LDYgKzEyOTYsNyBAQAogCX0KICAgICAgIGVsc2UKIAl7CisJdGFyZ2V0X29wOgogCSAgLyogTGV0IHRoZSB0YXJnZXQgdHJ5IHRvIHBhcnNlIGl0LiAgU3VjY2VzcyBpcyBpbmRpY2F0ZWQgYnkgY2hhbmdpbmcKIAkgICAgIHRoZSBYX29wIGZpZWxkIHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIE9fYWJzZW50IGFuZCBwb2ludGluZwogCSAgICAgaW5wdXRfbGluZV9wb2ludGVyIHBhc3QgdGhlIGV4cHJlc3Npb24uICBJZiBpdCBjYW4ndCBwYXJzZSB0aGUKQEAgLTE1NDEsNiArMTU0OSwxMyBAQAogICAgIGRlZmF1bHQ6CiAgICAgICByZXR1cm4gb3BfZW5jb2RpbmdbY107CiAKKyAgICBjYXNlICcrJzoKKyAgICBjYXNlICctJzoKKyAgICAgIC8qIERvIG5vdCBhbGxvdyBhKytiIGFuZCBhLS1iIHRvIGJlIGEgKyAoK2IpIGFuZCBhIC0gKC1iKSAqLworICAgICAgaWYgKGlucHV0X2xpbmVfcG9pbnRlclsxXSAhPSBjKQorCXJldHVybiBvcF9lbmNvZGluZ1tjXTsKKyAgICAgIHJldHVybiBPX2lsbGVnYWw7CisKICAgICBjYXNlICc8JzoKICAgICAgIHN3aXRjaCAoaW5wdXRfbGluZV9wb2ludGVyWzFdKQogCXsKZGlmZiAtLWdpdCBhL2dhcy9tYWMtYXMuciBiL2dhcy9tYWMtYXMucgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM2YzAzMy4uMDAwMDAwMAotLS0gYS9nYXMvbWFjLWFzLnIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKiBSZXNvdXJjZXMgZm9yIEdOVSBBUy4gKi8KLQotI2luY2x1ZGUgIlN5c1R5cGVzLnIiCi0KLS8qIFZlcnNpb24gcmVzb3VyY2VzLiAqLwotCi1yZXNvdXJjZSAndmVycycgKDEpICB7Ci0JMCwKLQkwLAotCTAsCi0JMCwKLQl2ZXJVcywKLQlWRVJTSU9OX1NUUklORywKLQlWRVJTSU9OX1NUUklORyAgIiAoQykgMTk4Ni05NSBGU0YsIEluYy4iCi19OwotCi1yZXNvdXJjZSAndmVycycgKDIsIHB1cmdlYWJsZSkgIHsKLQkwLAotCTAsCi0JMCwKLQkwLAotCXZlclVzLAotCVZFUlNJT05fU1RSSU5HLAotCSJHQVMgIiBWRVJTSU9OX1NUUklORyAiIGZvciBNUFciCi19OwotCi0jaWZkZWYgV0FOVF9DRlJHCi0KLSNpbmNsdWRlICJDb2RlRnJhZ21lbnRUeXBlcy5yIgotCi1yZXNvdXJjZSAnY2ZyZycgKDApIHsKLQl7Ci0JCWtQb3dlclBDLAotCQlrRnVsbExpYiwKLQkJa05vVmVyc2lvbk51bSwga05vVmVyc2lvbk51bSwKLQkJMCwwLAotCQlrSXNBcHAsIGtPbkRpc2tGbGF0LCBrWmVyb09mZnNldCwga1dob2xlRm9yaywKLQkJUFJPR19OQU1FCi0JfQotfTsKLQotI2VuZGlmIC8qIFdBTlRfQ0ZSRyAqLwpkaWZmIC0tZ2l0IGEvZ2FzL21wdy1jb25maWcuaW4gYi9nYXMvbXB3LWNvbmZpZy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUyOWIxZC4uMDAwMDAwMAotLS0gYS9nYXMvbXB3LWNvbmZpZy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0jIENvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZm9yIEdBUy4KLQotU2V0IHRhcmdldF9hcmNoIGBlY2hvIHt0YXJnZXRfY2Fub25pY2FsfSB8IHNlZCAtZSAncy8tLiotLiovLydgCi0KLUlmICJ7dGFyZ2V0X2FyY2h9IiA9fiAvcG93ZXJwYy8KLQlTZXQgc2hvcnRfYXJjaF9uYW1lICJwcGMiCi0JU2V0IHRhcmdldF9jcHUgInBvd2VycGMiCi1FbHNlCi0JU2V0IHNob3J0X2FyY2hfbmFtZSAie3RhcmdldF9hcmNofSIKLUVuZCBJZgotCi0jIFRoZSBmb2xsb3dpbmcgd29ya3MgZm9yIG1hbnkgY29uZmlndXJhdGlvbnMsIHRob3VnaCBub3QgYWxsLgotCi1TZXQgb2JqX2Zvcm1hdCBgZWNobyB7dGFyZ2V0X2Nhbm9uaWNhbH0gfCBzZWQgLWUgJ3MvLiotLiotLy8nYAotU2V0IHRhcmdldF9vcyBgZWNobyB7dGFyZ2V0X2Nhbm9uaWNhbH0gfCBzZWQgLWUgJ3MvLiotLiotLy8nYAotCi1TZXQgYmZkX2dhcyBubwotCi1TZXQgVERFRklORVMgIiIKLQotU2V0IEVYVFJBX09CSkVDVFMgIiIKLQotIyBEZWZhdWx0IGVtdWxhdGlvbi4KLQotU2V0IGVtIGdlbmVyaWMKLQotSWYgInt0YXJnZXRfY2Fub25pY2FsfSIgPX4gL202OGstYXBwbGUtbWFjb3MvCi0JU2V0IG9ial9mb3JtYXQgImNvZmYiCi0JU2V0IFRERUZJTkVTICctZCBNNjhLQ09GRicKLQlTZXQgRVhUUkFfT0JKRUNUUyAnIntvfSJtNjhrLXBhcnNlLmMubycKLQotRWxzZSBJZiAie3RhcmdldF9jYW5vbmljYWx9IiA9fiAvcG93ZXJwYy1hcHBsZS1tYWNvcy8KLQlTZXQgb2JqX2Zvcm1hdCAiY29mZiIKLQlTZXQgYmZkX2dhcyB5ZXMKLQlTZXQgZW0gbWFjb3MKLQotRWxzZSBJZiAie3RhcmdldF9jYW5vbmljYWx9IiA9fiAvaTM4Ni1cT3B0aW9uLXgtZ28zMi8KLQlTZXQgb2JqX2Zvcm1hdCAiY29mZiIKLQlTZXQgVERFRklORVMgJy1kIEkzODZDT0ZGJwotCi1FbHNlIElmICJ7dGFyZ2V0X2Nhbm9uaWNhbH0iID1+IC9tNjhrLVxPcHRpb24teC1jb2ZmLwotCVNldCBUREVGSU5FUyAnLWQgTTY4S0NPRkYnCi0KLUVsc2UgSWYgInt0YXJnZXRfY2Fub25pY2FsfSIgPX4gL21pcHMtaWR0LWVjb2ZmLwotCVNldCBiZmRfZ2FzIHllcwotCVNldCBUREVGSU5FUyAnLWQgVEFSR0VUX0JZVEVTX0JJR19FTkRJQU49MScKLQotRWxzZSBJZiAie3RhcmdldF9jYW5vbmljYWx9IiA9fiAvbWlwcy1cT3B0aW9uLXgtXE9wdGlvbi14LwotCSMgQXNzdW1lIG90aGVyIE9TZXMgZXRjIHVzZSBFTEYKLQlTZXQgb2JqX2Zvcm1hdCAiZWxmIgotCVNldCBiZmRfZ2FzIHllcwotCVNldCBUREVGSU5FUyAnLWQgVEFSR0VUX0JZVEVTX0JJR19FTkRJQU49MScKLQlmb3J3YXJkLWluY2x1ZGUgIntzcmNyb290fSJiZmQ6ZWxmLWJmZC5oICdiZmQvZWxmLWJmZC5oJwotCi1FbHNlIElmICJ7dGFyZ2V0X2Nhbm9uaWNhbH0iID1+IC9zaC1cT3B0aW9uLXgtaG1zLwotCVNldCBvYmpfZm9ybWF0ICJjb2ZmIgotCWZvcndhcmQtaW5jbHVkZSAie3NyY3Jvb3R9Im9wY29kZXM6c2gtb3BjLmggJ29wY29kZXMvc2gtb3BjLmgnCi1FbmQgSWYKLQotZm9yd2FyZC1pbmNsdWRlICJ7c3JjZGlyfSJjb25maWc6dGMte3Nob3J0X2FyY2hfbmFtZX0uYyB0YXJnLWNwdS5jCi1mb3J3YXJkLWluY2x1ZGUgIntzcmNkaXJ9ImNvbmZpZzp0Yy17c2hvcnRfYXJjaF9uYW1lfS5oIHRhcmctY3B1LmgKLQotZm9yd2FyZC1pbmNsdWRlICJ7c3JjZGlyfSJjb25maWc6b2JqLXtvYmpfZm9ybWF0fS5jIG9iai1mb3JtYXQuYwotZm9yd2FyZC1pbmNsdWRlICJ7c3JjZGlyfSJjb25maWc6b2JqLXtvYmpfZm9ybWF0fS5oIG9iai1mb3JtYXQuaAotCi1mb3J3YXJkLWluY2x1ZGUgIntzcmNkaXJ9ImNvbmZpZzp0ZS17ZW19LmggdGFyZy1lbnYuaAotCi0jIFNwZWNpYWwgY2FzZXMgZm9yIGZsb2F0IGhhbmRsaW5nLgotCi1JZiAie3RhcmdldF9hcmNofSIgPX4gL25zMzJrLwotCWZvcndhcmQtaW5jbHVkZSAie3NyY2Rpcn0iY29uZmlnOmF0b2YtbnMzMmsuYyBhdG9mLXRhcmcuYwotRWxzZSBJZiAie3RhcmdldF9hcmNofSIgPX4gL3RhaG9lLwotCWZvcndhcmQtaW5jbHVkZSAie3NyY2Rpcn0iY29uZmlnOmF0b2YtdGFob2UuYyBhdG9mLXRhcmcuYwotRWxzZSBJZiAie3RhcmdldF9hcmNofSIgPX4gL3ZheC8KLQlmb3J3YXJkLWluY2x1ZGUgIntzcmNkaXJ9ImNvbmZpZzphdG9mLXZheC5jIGF0b2YtdGFyZy5jCi1FbHNlCi0JIyBVc2UgSUVFRSBieSBkZWZhdWx0LgotCWZvcndhcmQtaW5jbHVkZSAie3NyY2Rpcn0iY29uZmlnOmF0b2YtaWVlZS5jIGF0b2YtdGFyZy5jCi1FbmQgSWYKLQotRWNobyAnIyBGcm9tIG1wdy1jb25maWcuaW4nICAgICAJCSA+ICJ7b30ibWsudG1wCi1FY2hvICJUREVGSU5FUyA9ICIge1RERUZJTkVTfQkJCT4+ICJ7b30ibWsudG1wCi1FY2hvICJFWFRSQV9PQkpFQ1RTID0gIiB7RVhUUkFfT0JKRUNUU30JCT4+ICJ7b30ibWsudG1wCi0jIChXZSB1c2UgdGhlIC1uIG9wdGlvbiBoZXJlIHNvIGFzIG5vdCB0byBnZXQgZXh0cmEgc3BhY2VzIGluc2VydGVkKQotRWNobyAtbiAnVEFSR19DUFVfREVQID0ge1RBUkdfQ1BVX0RFUF8nCQk+PiAie299Im1rLnRtcAotRWNobyAtbiB7c2hvcnRfYXJjaF9uYW1lfQkJCT4+ICJ7b30ibWsudG1wCi1FY2hvIC1uICd9JwkJCQkJPj4gIntvfSJtay50bXAKLUVjaG8gJyMgRW5kIGZyb20gbXB3LWNvbmZpZy5pbicJCQk+PiAie299Im1rLnRtcAotCi1FY2hvICcvKiBjb25mLiAgR2VuZXJhdGVkIGJ5IG1wdy1jb25maWd1cmUuICAqLycgPiAie299ImNvbmYubmV3Ci1FY2hvIC1uICcjZGVmaW5lIFRBUkdFVF9DUFUgICAgICAgIicgICAgICAgCT4+ICJ7b30iY29uZi5uZXcKLUVjaG8gLW4gInt0YXJnZXRfY3B1fSIgICAgICAgCQkJPj4gIntvfSJjb25mLm5ldwotRWNobyAgICAnIicgICAgICAgCQkJCT4+ICJ7b30iY29uZi5uZXcKLUVjaG8gLW4gJyNkZWZpbmUgVEFSR0VUX09TICAgICAgICInICAgICAgIAk+PiAie299ImNvbmYubmV3Ci1FY2hvIC1uICJ7dGFyZ2V0X29zfSIgICAgICAgCQkJPj4gIntvfSJjb25mLm5ldwotRWNobyAgICAnIicgICAgICAgCQkJCT4+ICJ7b30iY29uZi5uZXcKLUVjaG8gLW4gJyNkZWZpbmUgVEFSR0VUX0FMSUFTICAgICAgICInICAgICAgIAk+PiAie299ImNvbmYubmV3Ci1FY2hvIC1uICJ7dGFyZ2V0X2FsaWFzfSIgICAgICAgCQkJPj4gIntvfSJjb25mLm5ldwotRWNobyAgICAnIicgICAgICAgCQkJCT4+ICJ7b30iY29uZi5uZXcKLUVjaG8gLW4gJyNkZWZpbmUgVEFSR0VUX0NBTk9OSUNBTCAgICAgICAiJyAgICAgCT4+ICJ7b30iY29uZi5uZXcKLUVjaG8gLW4gInt0YXJnZXRfY2Fub25pY2FsfSIJCQk+PiAie299ImNvbmYubmV3Ci1FY2hvICAgICciJyAgICAgICAJCQkJPj4gIntvfSJjb25mLm5ldwotRWNobyAnI2luY2x1ZGUgIm1wdy5oIicJCQkJPj4gIntvfSJjb25mLm5ldwotSWYgIntiZmRfZ2FzfSIgPX4gL3llcy8KLQlFY2hvICIjZGVmaW5lIEJGRF9BU1NFTUJMRVIiCQk+PiAie299ImNvbmYubmV3Ci1FbHNlCi0JRWNobyAiI2RlZmluZSBNQU5ZX1NFR01FTlRTIgkJPj4gIntvfSJjb25mLm5ldwotRW5kIElmCi1FY2hvICcjZGVmaW5lIENSX0VPTCcJCQkJPj4gIntvfSJjb25mLm5ldwotRWNobyAnI2RlZmluZSBPQkpfQ09GRl9PTUlUX1RJTUVTVEFNUCcJCT4+ICJ7b30iY29uZi5uZXcKLUVjaG8gJyNkZWZpbmUgTE9TSU5HX0NPTVBJTEVSJwkJCT4+ICJ7b30iY29uZi5uZXcKLQotTW92ZUlmQ2hhbmdlICJ7b30iY29uZi5uZXcgIntvfSJjb25mCi0KLXNlZCAtZSAicy9Ac3JjZGlyQC97c3JjZGlyfS8iICJ7c3JjZGlyfSJnZGJpbml0LmluID4gIntvfSJfZ2RiaW5pdApkaWZmIC0tZ2l0IGEvZ2FzL21wdy1tYWtlLnNlZCBiL2dhcy9tcHctbWFrZS5zZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiY2IwY2UuLjAwMDAwMDAKLS0tIGEvZ2FzL21wdy1tYWtlLnNlZAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLSMgU2VkIGNvbW1hbmRzIHRoYXQgZmluaXNoIHRyYW5zbGF0aW5nIHRoZSBHQVMgVW5peCBNYWtlZmlsZSB0byBNUFcgc3ludGF4LgotCi0vXiMgQHRhcmdldF9mcmFnQC9hXAotXAotSERFRklORVMgPSBcCi1MT0NBTF9MT0FETElCRVMgPSBcCi0KLS9ec3Jjcm9vdCA9IC9zL14vIy8KLS9edGFyZ2V0X2FsaWFzID0gL3MvXi8jLwotCi0vSU5DTFVERVMvcy8taSAie3NyY2Rpcn0iOlwoW2Etel0qXCkvLWkgInt0b3BzcmNkaXJ9IlwxLwotL0lOQ0xVREVTL3MvLWkgIntzcmNkaXJ9IlwuXC4vLWkgInt0b3BzcmNkaXJ9Ii8KLQotL15JTkNMVURFUyA9IC4qJC9zLyQvIC1pICJ7dG9wc3JjZGlyfSJpbmNsdWRlOm1wdzogLWkgOjpleHRyYS1pbmNsdWRlOi8KLQotLyQoVEFSR19DUFVfREVQX0B0YXJnZXRfY3B1X3R5cGVAKS9zLyQoVEFSR19DUFVfREVQX0B0YXJnZXRfY3B1X3R5cGVAKS97VEFSR19DUFVfREVQfS8KLQotL0BPUENPREVTX0xJQkAvcy9AT1BDT0RFU19MSUJALzo6b3Bjb2RlczpsaWJvcGNvZGVzLm8vCi0vQEJGRExJQkAvcy9AQkZETElCQC86OmJmZDpsaWJiZmQuby8KLQotIyBQb2ludCBhdCB0aGUgbGlicmFyaWVzIGRpcmVjdGx5LgotL0BPUENPREVTX0RFUEAvcy9AT1BDT0RFU19ERVBALzo6b3Bjb2RlczpsaWJvcGNvZGVzLm8vCi0vQEJGRERFUEAvcy9AQkZEREVQQC86OmJmZDpsaWJiZmQuby8KLQotIyBEb24ndCBuZWVkIHRoaXMuCi0vQEhMREZMQUdTQC9zL0BITERGTEFHU0AvLwotCi0vZXh0cmFfb2JqZWN0c0Avcy9leHRyYV9vYmplY3RzQC97RVhUUkFfT0JKRUNUU30vCi0KLS9MT0FETElCRVMvcy97TE9BRExJQkVTfS97RVhUUkFMSUJTfS8KLQotL0BBTExfT0JKX0RFUFNAL3MvQEFMTF9PQkpfREVQU0AvOjpiZmQ6YmZkLmgvCi0KLSMgVGhpcyBjYXVzZXMgcHJvYmxlbXMgLSBub3Qgc3VyZSB3aHkuCi0vXnRhZ3MgVEFHUy8sL2V0YWdzIC9kCi0KLS9ebWFrZS1nYXMuY29tL3MvXi8jLwotCi0vdHJ1ZS9zLyA7IEB0cnVlJC8vCi0KLSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gY29uZi5pbiwgd2UgZG9uJ3QgbmVlZCB0aGVtLgotL2NvbmZcLmluL3MvY29uZlwuaW4vL2cKLQotIyBVc2UgX2dkYmluaXQgZXZlcnl3aGVyZSBpbnN0ZWFkIG9mIC5nZGJpbml0LgotL2dkYmluaXQvcy9cLmdkYmluaXQvX2dkYmluaXQvZwotCi0vYXRvZi10YXJnL3MvIntzfSJhdG9mLXRhcmdcLmMvIntvfSJhdG9mLXRhcmcuYy9nCi0vY29uZmlnL3MvIntzfSJjb25maWdcLmgvIntvfSJjb25maWcuaC9nCi0vY29uZmlnL3MvXmNvbmZpZ1wuaC8ie299ImNvbmZpZy5oLwotL29iai1mb3JtYXQvcy8ie3N9Im9iai1mb3JtYXRcLmMvIntvfSJvYmotZm9ybWF0LmMvZwotL29iai1mb3JtYXQvcy8ie3N9Im9iai1mb3JtYXRcLmgvIntvfSJvYmotZm9ybWF0LmgvZwotL3RhcmctY3B1L3MvIntzfSJ0YXJnLWNwdVwuYy8ie299InRhcmctY3B1LmMvZwotL3RhcmctY3B1L3MvIntzfSJ0YXJnLWNwdVwuaC8ie299InRhcmctY3B1LmgvZwotL3RhcmctZW52L3MvIntzfSJ0YXJnLWVudlwuaC8ie299InRhcmctZW52LmgvZwotCi0vbTY4ay1wYXJzZS5jL3MvIntzfSJtNjhrLXBhcnNlXC5jLyJ7b30ibTY4ay1wYXJzZS5jL2cKLS9tNjhrLXBhcnNlLmMvcy9ebTY4ay1wYXJzZVwuYy8ie299Im02OGstcGFyc2UuYy8KLQotIyBXaGFjayBvdXQgdGhlIGNvbmZpZy5oIGRlcGVuZGVuY3ksIGl0IG9ubHkgY2F1c2VzIGV4Y2VzcyByZWJ1aWxkcy4KLS97T0JKU30vcy97T0JKU30gXFxPcHRpb24tZiAie299ImNvbmZpZy5oL3tPQkpTfSBcXE9wdGlvbi1mLwotCi0jIEFMTF9DRkxBR1MgaW5jbHVkZXMgVERFRklORVMsIHdoaWNoIGlzIG5vdCBkZXNpcmFibGUgYXQgbGluayB0aW1lLgotL0NDX0xEL3MvQUxMX0NGTEFHUy9DRkxBR1MvZwotCi0jIFRoZSByZXNvdXJjZSBmaWxlIGlzIGNhbGxlZCBtYWMtYXMuci4KLS9hcy5uZXcuci9zL2FzXC5uZXdcLnIvbWFjLWFzLnIvCi0KLSMgLi4uYW5kIHRoZSBQUk9HX05BTUUgZG9lc24ndCBoYXZlIGEgLm5ldyBpbiBpdC4KLS9QUk9HX05BTUUvcy9QUk9HX05BTUU9JyInYXMubmV3JyInL1BST0dfTkFNRT0nIidhcyciJy8KLQotIyBXaGFjayBvdXQgcmVjdXJzaXZlIG1ha2VzLCB0aGV5IHdvbid0IHdvcmsuCi0vXlsgCV1bIAldKnNyY3Jvb3Q9LywvXlsgCV1bIAldKihjZCAvZAotCi0jIFdvcmsgYXJvdW5kIHF1b3RpbmcgcHJvYmxlbXMgYnkgdXNpbmcgbXVsdGlwbGUgZWNobyBjb21tYW5kcy4KLS8nI2RlZmluZSBHQVNfVkVSU0lPTiAie1ZFUlNJT059IicvY1wKLQlFY2hvIC1uICcjZGVmaW5lIEdBU19WRVJTSU9OICInID4+ICJ7b30iY29uZmlnLm5ld1wKLQlFY2hvIC1uICJ7VkVSU0lPTn0iID4+ICJ7b30iY29uZmlnLm5ld1wKLQlFY2hvIC1uICciJyA+PiAie299ImNvbmZpZy5uZXcKLQotIyBBZGQgYSAic3RhbXBzIiB0YXJnZXQuCi0kYVwKLXN0YW1wcyBcXE9wdGlvbi1mIGNvbmZpZy1zdGFtcFwKLQotL15pbnN0YWxsIFxcT3B0aW9uLWYvLC9eJC9jXAotaW5zdGFsbCBcXE9wdGlvbi1mIGFsbCBpbnN0YWxsLW9ubHlcCi1cCi1pbnN0YWxsLW9ubHkgXFxPcHRpb24tZlwKLQlOZXdGb2xkZXJSZWN1cnNpdmUgIntiaW5kaXJ9IlwKLQlEdXBsaWNhdGUgLXkgOmFzLm5ldyAie2JpbmRpcn0iYXNcCi0KLQotIyBXaGFjayBvdXQgY29uZmlnLXJlYnVpbGRpbmcgdGFyZ2V0cywgdGhleSB3b24ndCB3b3JrLgotL15NYWtlZmlsZSBcXE9wdGlvbi1mLywvXiQvZAotL15jb25maWcuc3RhdHVzIFxcT3B0aW9uLWYvLC9eJC9kCi0KLS9eIntvfSJjb25maWcuaCBcXE9wdGlvbi1mL3MvXi8jLwpkaWZmIC0tZ2l0IGEvZ2FzL3BvL2dhcy5wb3QgYi9nYXMvcG8vZ2FzLnBvdAppbmRleCBhZTNjYmFiLi5jZDk4M2IzIDEwMDY0NAotLS0gYS9nYXMvcG8vZ2FzLnBvdAorKysgYi9nYXMvcG8vZ2FzLnBvdApAQCAtMSwxMiArMSwxNCBAQAogIyBTT01FIERFU0NSSVBUSVZFIFRJVExFLgotIyBDb3B5cmlnaHQgKEMpIFlFQVIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgWUVBUiBUSEUgUEFDS0FHRSdTIENPUFlSSUdIVCBIT0xERVIKKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIFBBQ0tBR0UgcGFja2FnZS4KICMgRklSU1QgQVVUSE9SIDxFTUFJTEBBRERSRVNTPiwgWUVBUi4KICMKICMsIGZ1enp5CiBtc2dpZCAiIgogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBQQUNLQUdFIFZFUlNJT05cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwMy0wNy0xNyAxNDo1NiswMTAwXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA0LTAzLTE5IDE1OjAxKzEwMzBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiBZRUFSLU1PLURBIEhPOk1JK1pPTkVcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEZVTEwgTkFNRSA8RU1BSUxAQUREUkVTUz5cbiIKICJMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPlxuIgpAQCAtMTQsNzIgKzE2LDczIEBACiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUNIQVJTRVRcbiIKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAKLSM6IGFwcC5jOjQ3NCBhcHAuYzo0ODgKKyM6IGFwcC5jOjQ2OCBhcHAuYzo0ODIKIG1zZ2lkICJlbmQgb2YgZmlsZSBpbiBjb21tZW50IgogbXNnc3RyICIiCiAKLSM6IGFwcC5jOjU2NworIzogYXBwLmM6NTYxCiBtc2dpZCAiZW5kIG9mIGZpbGUgaW4gc3RyaW5nOyBpbnNlcnRlZCAnXCInIgogbXNnc3RyICIiCiAKLSM6IGFwcC5jOjYxMgorIzogYXBwLmM6NjA2CiBtc2dpZCAiZW5kIG9mIGZpbGUgaW4gc3RyaW5nOyAnXCInIGluc2VydGVkIgogbXNnc3RyICIiCiAKLSM6IGFwcC5jOjYzOAorIzogYXBwLmM6NjMyCiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gZXNjYXBlICdcXCVjJyBpbiBzdHJpbmc7IGlnbm9yZWQiCiBtc2dzdHIgIiIKIAotIzogYXBwLmM6NzkwCisjOiBhcHAuYzo3ODgKIG1zZ2lkICJlbmQgb2YgZmlsZSBub3QgYXQgZW5kIG9mIGEgbGluZTsgbmV3bGluZSBpbnNlcnRlZCIKIG1zZ3N0ciAiIgogCi0jOiBhcHAuYzo5NDkKKyM6IGFwcC5jOjk0NwogbXNnaWQgImVuZCBvZiBmaWxlIGluIG11bHRpbGluZSBjb21tZW50IgogbXNnc3RyICIiCiAKLSM6IGFwcC5jOjEwMTMKKyM6IGFwcC5jOjEwMTEKIG1zZ2lkICJlbmQgb2YgZmlsZSBhZnRlciBhIG9uZS1jaGFyYWN0ZXIgcXVvdGU7IFxcMCBpbnNlcnRlZCIKIG1zZ3N0ciAiIgogCi0jOiBhcHAuYzoxMDIxCisjOiBhcHAuYzoxMDE5CiBtc2dpZCAiZW5kIG9mIGZpbGUgaW4gZXNjYXBlIGNoYXJhY3RlciIKIG1zZ3N0ciAiIgogCi0jOiBhcHAuYzoxMDMzCisjOiBhcHAuYzoxMDMxCiBtc2dpZCAibWlzc2luZyBjbG9zZSBxdW90ZTsgKGFzc3VtZWQpIgogbXNnc3RyICIiCiAKLSM6IGFwcC5jOjExMDEgYXBwLmM6MTE1NSBhcHAuYzoxMTY2IGFwcC5jOjEyMzEKKyM6IGFwcC5jOjEwOTkgYXBwLmM6MTE1MyBhcHAuYzoxMTY0IGFwcC5jOjEyMjkKIG1zZ2lkICJlbmQgb2YgZmlsZSBpbiBjb21tZW50OyBuZXdsaW5lIGluc2VydGVkIgogbXNnc3RyICIiCiAKLSM6IGFzLmM6MTYwCisjOiBhcy5jOjE1OAogbXNnaWQgIm1pc3NpbmcgZW11bGF0aW9uIG1vZGUgbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBhcy5jOjE3NQorIzogYXMuYzoxNzMKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGVtdWxhdGlvbiBuYW1lIGAlcyciCiBtc2dzdHIgIiIKIAotIzogYXMuYzoyMjIKKyM6IGFzLmM6MjIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkdOVSBhc3NlbWJsZXIgdmVyc2lvbiAlcyAoJXMpIHVzaW5nIEJGRCB2ZXJzaW9uICVzIgogbXNnc3RyICIiCiAKLSM6IGFzLmM6MjI1CisjOiBhcy5jOjIyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJHTlUgYXNzZW1ibGVyIHZlcnNpb24gJXMgKCVzKSIKIG1zZ3N0ciAiIgogCi0jOiBhcy5jOjIzNAorIzogYXMuYzoyMzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNhZ2U6ICVzIFtvcHRpb24uLi5dIFthc21maWxlLi4uXVxuIgogbXNnc3RyICIiCiAKLSM6IGFzLmM6MjM2CisjOiBhcy5jOjIzNAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiT3B0aW9uczpcbiIKICIgIC1hW3N1Yi1vcHRpb24uLi5dXHQgIHR1cm4gb24gbGlzdGluZ3NcbiIKQEAgLTk0LDEyMiArOTcsMTU0IEBACiAiICAgICAgICAgICAgICAgICAgICAgIFx0ICA9RklMRSAgbGlzdCB0byBGSUxFIChtdXN0IGJlIGxhc3Qgc3ViLW9wdGlvbilcbiIKIG1zZ3N0ciAiIgogCi0jOiBhcy5jOjI0OQorIzogYXMuYzoyNDcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtRCAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlIGFzc2VtYmxlciBkZWJ1Z2dpbmcgbWVzc2FnZXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBhcy5jOjI1MQorIzogYXMuYzoyNDkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtLWRlZnN5bSBTWU09VkFMICAgICAgICBkZWZpbmUgc3ltYm9sIFNZTSB0byBnaXZlbiB2YWx1ZVxuIgogbXNnc3RyICIiCiAKLSM6IGFzLmM6MjY3CisjOiBhcy5jOjI2NQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAgICAgICAgICAgICAgICAgICAgICAgIGVtdWxhdGUgb3V0cHV0IChkZWZhdWx0ICVzKVxuIgogbXNnc3RyICIiCiAKLSM6IGFzLmM6MjcyCisjOiBhcy5jOjI3MAorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC0tZXhlY3N0YWNrICAgICAgICAgICAgIHJlcXVpcmUgZXhlY3V0YWJsZSBzdGFjayBmb3IgdGhpcyBvYmplY3RcbiIKIG1zZ3N0ciAiIgogCi0jOiBhcy5jOjI3NAorIzogYXMuYzoyNzIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLS1ub2V4ZWNzdGFjayAgICAgICAgICAgZG9uJ3QgcmVxdWlyZSBleGVjdXRhYmxlIHN0YWNrIGZvciB0aGlzIG9iamVjdFxuIgogbXNnc3RyICIiCiAKLSM6IGFzLmM6Mjc3CisjOiBhcy5jOjI3NQorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC1mICAgICAgICAgICAgICAgICAgICAgIHNraXAgd2hpdGVzcGFjZSBhbmQgY29tbWVudCBwcmVwcm9jZXNzaW5nXG4iCiBtc2dzdHIgIiIKIAotIzogYXMuYzoyNzkKKyM6IGFzLmM6Mjc3CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLS1nc3RhYnMgICAgICAgICAgICAgICAgZ2VuZXJhdGUgc3RhYnMgZGVidWdnaW5nIGluZm9ybWF0aW9uXG4iCiBtc2dzdHIgIiIKIAorIzogYXMuYzoyNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiAgLS1nc3RhYnMrICAgICAgICAgICAgICAgZ2VuZXJhdGUgc3RhYnMgZGVidWcgaW5mbyB3aXRoIEdOVSBleHRlbnNpb25zXG4iCittc2dzdHIgIiIKKwogIzogYXMuYzoyODEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtLWdkd2FyZjIgICAgICAgICAgICAgICBnZW5lcmF0ZSBEV0FSRjIgZGVidWdnaW5nIGluZm9ybWF0aW9uXG4iCiBtc2dzdHIgIiIKIAogIzogYXMuYzoyODMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtLWhlbHAgICAgICAgICAgICAgICAgICBzaG93IHRoaXMgbWVzc2FnZSBhbmQgZXhpdFxuIgogbXNnc3RyICIiCiAKICM6IGFzLmM6Mjg1CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLS10YXJnZXQtaGVscCAgICAgICAgICAgc2hvdyB0YXJnZXQgc3BlY2lmaWMgb3B0aW9uc1xuIgogbXNnc3RyICIiCiAKICM6IGFzLmM6Mjg3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC1JIERJUiAgICAgICAgICAgICAgICAgIGFkZCBESVIgdG8gc2VhcmNoIGxpc3QgZm9yIC5pbmNsdWRlIGRpcmVjdGl2ZXNcbiIKIG1zZ3N0ciAiIgogCiAjOiBhcy5jOjI4OQorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC1KICAgICAgICAgICAgICAgICAgICAgIGRvbid0IHdhcm4gYWJvdXQgc2lnbmVkIG92ZXJmbG93XG4iCiBtc2dzdHIgIiIKIAogIzogYXMuYzoyOTEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLUsgICAgICAgICAgICAgICAgICAgICAgd2FybiB3aGVuIGRpZmZlcmVuY2VzIGFsdGVyZWQgZm9yIGxvbmcgIgogImRpc3BsYWNlbWVudHNcbiIKIG1zZ3N0ciAiIgogCiAjOiBhcy5jOjI5MworIywgYy1mb3JtYXQKIG1zZ2lkICIgIC1MLC0ta2VlcC1sb2NhbHMgICAgICAgIGtlZXAgbG9jYWwgc3ltYm9scyAoZS5nLiBzdGFydGluZyB3aXRoIGBMJylcbiIKIG1zZ3N0ciAiIgogCiAjOiBhcy5jOjI5NQorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC1NLC0tbXJpICAgICAgICAgICAgICAgIGFzc2VtYmxlIGluIE1SSSBjb21wYXRpYmlsaXR5IG1vZGVcbiIKIG1zZ3N0ciAiIgogCiAjOiBhcy5jOjI5NworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLU1EIEZJTEUgICAgICAgICAgICAgICB3cml0ZSBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGluIEZJTEUgKGRlZmF1bHQgIgogIm5vbmUpXG4iCiBtc2dzdHIgIiIKIAogIzogYXMuYzoyOTkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtbm9jcHAgICAgICAgICAgICAgICAgICBpZ25vcmVkXG4iCiBtc2dzdHIgIiIKIAogIzogYXMuYzozMDEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLW8gT0JKRklMRSAgICAgICAgICAgICAgbmFtZSB0aGUgb2JqZWN0LWZpbGUgb3V0cHV0IE9CSkZJTEUgKGRlZmF1bHQgYS4iCiAib3V0KVxuIgogbXNnc3RyICIiCiAKICM6IGFzLmM6MzAzCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLVIgICAgICAgICAgICAgICAgICAgICAgZm9sZCBkYXRhIHNlY3Rpb24gaW50byB0ZXh0IHNlY3Rpb25cbiIKIG1zZ3N0ciAiIgogCiAjOiBhcy5jOjMwNQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLXN0YXRpc3RpY3MgICAgICAgICAgICBwcmludCB2YXJpb3VzIG1lYXN1cmVkIHN0YXRpc3RpY3MgZnJvbSBleGVjdXRpb25cbiIKIG1zZ3N0ciAiIgogCiAjOiBhcy5jOjMwNworIywgYy1mb3JtYXQKIG1zZ2lkICIgIC0tc3RyaXAtbG9jYWwtYWJzb2x1dGUgIHN0cmlwIGxvY2FsIGFic29sdXRlIHN5bWJvbHNcbiIKIG1zZ3N0ciAiIgogCiAjOiBhcy5jOjMwOQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLXRyYWRpdGlvbmFsLWZvcm1hdCAgICBVc2Ugc2FtZSBmb3JtYXQgYXMgbmF0aXZlIGFzc2VtYmxlciB3aGVuIHBvc3NpYmxlXG4iCiBtc2dzdHIgIiIKIAogIzogYXMuYzozMTEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtLXZlcnNpb24gICAgICAgICAgICAgICBwcmludCBhc3NlbWJsZXIgdmVyc2lvbiBudW1iZXIgYW5kIGV4aXRcbiIKIG1zZ3N0ciAiIgogCiAjOiBhcy5jOjMxMworIywgYy1mb3JtYXQKIG1zZ2lkICIgIC1XICAtLW5vLXdhcm4gICAgICAgICAgIHN1cHByZXNzIHdhcm5pbmdzXG4iCiBtc2dzdHIgIiIKIAogIzogYXMuYzozMTUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtLXdhcm4gICAgICAgICAgICAgICAgICBkb24ndCBzdXBwcmVzcyB3YXJuaW5nc1xuIgogbXNnc3RyICIiCiAKICM6IGFzLmM6MzE3CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLS1mYXRhbC13YXJuaW5ncyAgICAgICAgdHJlYXQgd2FybmluZ3MgYXMgZXJyb3JzXG4iCiBtc2dzdHIgIiIKIAogIzogYXMuYzozMTkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLS1pdGJsIElOU1RUQkwgICAgICAgICAgZXh0ZW5kIGluc3RydWN0aW9uIHNldCB0byBpbmNsdWRlIGluc3RydWN0aW9uc1xuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmcgdGhlIHNwZWNpZmljYXRpb25zIGRlZmluZWQgaW4gZmlsZSAiCkBAIC0yMTcsMTggKzI1MiwyMiBAQAogbXNnc3RyICIiCiAKICM6IGFzLmM6MzIyCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLXcgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZFxuIgogbXNnc3RyICIiCiAKICM6IGFzLmM6MzI0CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLVggICAgICAgICAgICAgICAgICAgICAgaWdub3JlZFxuIgogbXNnc3RyICIiCiAKICM6IGFzLmM6MzI2CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLVogICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgb2JqZWN0IGZpbGUgZXZlbiBhZnRlciBlcnJvcnNcbiIKIG1zZ3N0ciAiIgogCiAjOiBhcy5jOjMyOAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLWxpc3RpbmctbGhzLXdpZHRoICAgICBzZXQgdGhlIHdpZHRoIGluIHdvcmRzIG9mIHRoZSBvdXRwdXQgZGF0YSBjb2x1bW4gIgogIm9mXG4iCkBAIC0yMzYsNiArMjc1LDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBhcy5jOjMzMQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLWxpc3RpbmctbGhzLXdpZHRoMiAgICBzZXQgdGhlIHdpZHRoIGluIHdvcmRzIG9mIHRoZSBjb250aW51YXRpb24gbGluZXNcbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBvdXRwdXQgZGF0YSBjb2x1bW47IGlnbm9yZWQgaWYgc21hbGxlciAiCkBAIC0yNDQsMTIgKzI4NCwxNCBAQAogbXNnc3RyICIiCiAKICM6IGFzLmM6MzM1CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC0tbGlzdGluZy1yaHMtd2lkdGggICAgIHNldCB0aGUgbWF4IHdpZHRoIGluIGNoYXJhY3RlcnMgb2YgdGhlIGxpbmVzIGZyb21cbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgZmlsZVxuIgogbXNnc3RyICIiCiAKICM6IGFzLmM6MzM4CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC0tbGlzdGluZy1jb250LWxpbmVzICAgIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29udGludWF0aW9uIGxpbmVzIHVzZWRcbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgb3V0cHV0IGRhdGEgY29sdW1uIG9mIHRoZSBsaXN0aW5nXG4iCkBAIC0yNjAsOTIgKzMwMiw5NCBAQAogbXNnaWQgIlJlcG9ydCBidWdzIHRvICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYXMuYzo1NTcgYXMuYzo1NTkKKyM6IGFzLmM6NTYxIGFzLmM6NTYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkdOVSBhc3NlbWJsZXIgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBhcy5jOjU2MQorIzogYXMuYzo1NjUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiQ29weXJpZ2h0IDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuXG4iCiBtc2dzdHIgIiIKIAotIzogYXMuYzo1NjIKKyM6IGFzLmM6NTY2CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IG1heSByZWRpc3RyaWJ1dGUgaXQgdW5kZXIgdGhlIHRlcm1zIG9mXG4iCiAidGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBwcm9ncmFtIGhhcyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5LlxuIgogbXNnc3RyICIiCiAKLSM6IGFzLmM6NTY1CisjOiBhcy5jOjU2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGlzIGFzc2VtYmxlciB3YXMgY29uZmlndXJlZCBmb3IgYSB0YXJnZXQgb2YgYCVzJy5cbiIKIG1zZ3N0ciAiIgogCi0jOiBhcy5jOjU3MgorIzogYXMuYzo1NzYKIG1zZ2lkICJtdWx0aXBsZSBlbXVsYXRpb24gbmFtZXMgc3BlY2lmaWVkIgogbXNnc3RyICIiCiAKLSM6IGFzLmM6NTc0CisjOiBhcy5jOjU3OAogbXNnaWQgImVtdWxhdGlvbnMgbm90IGhhbmRsZWQgaW4gdGhpcyBjb25maWd1cmF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGFzLmM6NTc5Ci0jLCBjLWZvcm1hdAotbXNnaWQgImFsaWFzID0gJXNcbiIKLW1zZ3N0ciAiIgotCi0jOiBhcy5jOjU4MAotIywgYy1mb3JtYXQKLW1zZ2lkICJjYW5vbmljYWwgPSAlc1xuIgotbXNnc3RyICIiCi0KLSM6IGFzLmM6NTgxCi0jLCBjLWZvcm1hdAotbXNnaWQgImNwdS10eXBlID0gJXNcbiIKLW1zZ3N0ciAiIgotCiAjOiBhcy5jOjU4MwogIywgYy1mb3JtYXQKK21zZ2lkICJhbGlhcyA9ICVzXG4iCittc2dzdHIgIiIKKworIzogYXMuYzo1ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2Fub25pY2FsID0gJXNcbiIKK21zZ3N0ciAiIgorCisjOiBhcy5jOjU4NQorIywgYy1mb3JtYXQKK21zZ2lkICJjcHUtdHlwZSA9ICVzXG4iCittc2dzdHIgIiIKKworIzogYXMuYzo1ODcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiZm9ybWF0ID0gJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBhcy5jOjU4NgorIzogYXMuYzo1OTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmZkLXRhcmdldCA9ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYXMuYzo1OTkKKyM6IGFzLmM6NjAzCiBtc2dpZCAiYmFkIGRlZnN5bTsgZm9ybWF0IGlzIC0tZGVmc3ltIG5hbWU9dmFsdWUiCiBtc2dzdHIgIiIKIAotIzogYXMuYzo2MjMKKyM6IGFzLmM6NjI3CiBtc2dpZCAibm8gZmlsZSBuYW1lIGZvbGxvd2luZyAtdCBvcHRpb24iCiBtc2dzdHIgIiIKIAotIzogYXMuYzo2MzgKKyM6IGFzLmM6NjQyCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byByZWFkIGluc3RydWN0aW9uIHRhYmxlICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYXMuYzo3NjUKKyM6IGFzLmM6NzcwCiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgbGlzdGluZyBvcHRpb24gYCVjJyIKIG1zZ3N0ciAiIgogCi0jOiBhcy5jOjk4NAotIywgYy1mb3JtYXQKLW1zZ2lkICIlZCB3YXJuaW5ncywgdHJlYXRpbmcgd2FybmluZ3MgYXMgZXJyb3JzIgotbXNnc3RyICIiCi0KLSM6IGFzLmM6MTAxNQorIzogYXMuYzo4MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHRvdGFsIHRpbWUgaW4gYXNzZW1ibHk6ICVsZC4lMDZsZFxuIgogbXNnc3RyICIiCiAKLSM6IGFzLmM6MTAxOAorIzogYXMuYzo4MzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGRhdGEgc2l6ZSAlbGRcbiIKIG1zZ3N0ciAiIgogCisjOiBhcy5jOjExNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgd2FybmluZ3MsIHRyZWF0aW5nIHdhcm5pbmdzIGFzIGVycm9ycyIKK21zZ3N0ciAiIgorCiAjOiBhcy5oOjIxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYXNlIHZhbHVlICVsZCB1bmV4cGVjdGVkIGF0IGxpbmUgJWQgb2YgZmlsZSBcIiVzXCJcbiIKQEAgLTM1NSw3MSArMzk5LDcxIEBACiAjLiAqIFdlIGhhdmUgYSBHUk9TUyBpbnRlcm5hbCBlcnJvci4KICMuICogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLgogIy4KLSM6IGF0b2YtZ2VuZXJpYy5jOjQzNyBjb25maWcvdGMtbTY4ay5jOjI4NjkKKyM6IGF0b2YtZ2VuZXJpYy5jOjQzMyBjb25maWcvdGMtbTY4ay5jOjMwMDIKIG1zZ2lkICJmYWlsZWQgc2FuaXR5IGNoZWNrIgogbXNnc3RyICIiCiAKLSM6IGNvbmQuYzo4MworIzogY29uZC5jOjgyCiBtc2dpZCAiaW52YWxpZCBpZGVudGlmaWVyIGZvciBcIi5pZmRlZlwiIgogbXNnc3RyICIiCiAKLSM6IGNvbmQuYzoxNTEKKyM6IGNvbmQuYzoxNDkKIG1zZ2lkICJub24tY29uc3RhbnQgZXhwcmVzc2lvbiBpbiBcIi5pZlwiIHN0YXRlbWVudCIKIG1zZ3N0ciAiIgogCi0jOiBjb25kLmM6MjQ3CisjOiBjb25kLmM6MjQyCiBtc2dpZCAiYmFkIGZvcm1hdCBmb3IgaWZjIG9yIGlmbmMiCiBtc2dzdHIgIiIKIAotIzogY29uZC5jOjI3OAorIzogY29uZC5jOjI3MgogbXNnaWQgIlwiLmVsc2VpZlwiIHdpdGhvdXQgbWF0Y2hpbmcgXCIuaWZcIiIKIG1zZ3N0ciAiIgogCi0jOiBjb25kLmM6MjgyCisjOiBjb25kLmM6Mjc2CiBtc2dpZCAiXCIuZWxzZWlmXCIgYWZ0ZXIgXCIuZWxzZVwiIgogbXNnc3RyICIiCiAKLSM6IGNvbmQuYzoyODUgY29uZC5jOjM5MworIzogY29uZC5jOjI3OSBjb25kLmM6Mzg1CiBtc2dpZCAiaGVyZSBpcyB0aGUgcHJldmlvdXMgXCJlbHNlXCIiCiBtc2dzdHIgIiIKIAotIzogY29uZC5jOjI4OCBjb25kLmM6Mzk2CisjOiBjb25kLmM6MjgyIGNvbmQuYzozODgKIG1zZ2lkICJoZXJlIGlzIHRoZSBwcmV2aW91cyBcImlmXCIiCiBtc2dzdHIgIiIKIAotIzogY29uZC5jOjMxNworIzogY29uZC5jOjMxMQogbXNnaWQgIm5vbi1jb25zdGFudCBleHByZXNzaW9uIGluIFwiLmVsc2VpZlwiIHN0YXRlbWVudCIKIG1zZ3N0ciAiIgogCi0jOiBjb25kLmM6MzU2CisjOiBjb25kLmM6MzQ5CiBtc2dpZCAiXCIuZW5kaWZcIiB3aXRob3V0IFwiLmlmXCIiCiBtc2dzdHIgIiIKIAotIzogY29uZC5jOjM4NgorIzogY29uZC5jOjM3OAogbXNnaWQgIlwiLmVsc2VcIiB3aXRob3V0IG1hdGNoaW5nIFwiLmlmXCIiCiBtc2dzdHIgIiIKIAotIzogY29uZC5jOjM5MAorIzogY29uZC5jOjM4MgogbXNnaWQgImR1cGxpY2F0ZSBcImVsc2VcIiIKIG1zZ3N0ciAiIgogCi0jOiBjb25kLmM6NDQyCisjOiBjb25kLmM6NDMzCiBtc2dpZCAiLmlmZXFzIHN5bnRheCBlcnJvciIKIG1zZ3N0ciAiIgogCi0jOiBjb25kLmM6NTI1CisjOiBjb25kLmM6NTE0CiBtc2dpZCAiZW5kIG9mIG1hY3JvIGluc2lkZSBjb25kaXRpb25hbCIKIG1zZ3N0ciAiIgogCi0jOiBjb25kLmM6NTI3CisjOiBjb25kLmM6NTE2CiBtc2dpZCAiZW5kIG9mIGZpbGUgaW5zaWRlIGNvbmRpdGlvbmFsIgogbXNnc3RyICIiCiAKLSM6IGNvbmQuYzo1MzAKKyM6IGNvbmQuYzo1MTkKIG1zZ2lkICJoZXJlIGlzIHRoZSBzdGFydCBvZiB0aGUgdW50ZXJtaW5hdGVkIGNvbmRpdGlvbmFsIgogbXNnc3RyICIiCiAKLSM6IGNvbmQuYzo1MzQKKyM6IGNvbmQuYzo1MjMKIG1zZ2lkICJoZXJlIGlzIHRoZSBcImVsc2VcIiBvZiB0aGUgdW50ZXJtaW5hdGVkIGNvbmRpdGlvbmFsIgogbXNnc3RyICIiCiAKQEAgLTQ1MiwxNyArNDk2LDE3IEBACiBtc2dpZCAiJXM6IGJhZCB0eXBlIGZvciB3ZWFrIHN5bWJvbCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLWFvdXQuYzo0NTggY29uZmlnL29iai1jb2ZmLmM6Mjk0NSB3cml0ZS5jOjE5MzEKKyM6IGNvbmZpZy9vYmotYW91dC5jOjQ1OCBjb25maWcvb2JqLWNvZmYuYzoyOTQ1IHdyaXRlLmM6MTg5NgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZ2xvYmFsIHN5bWJvbHMgbm90IHN1cHBvcnRlZCBpbiBjb21tb24gc2VjdGlvbnMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1hb3V0LmM6NTI0CisjOiBjb25maWcvb2JqLWFvdXQuYzo1MjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiTG9jYWwgc3ltYm9sICVzIG5ldmVyIGRlZmluZWQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotYm91dC5jOjMxOSBjb25maWcvb2JqLXZtcy5jOjYyOQorIzogY29uZmlnL29iai1ib3V0LmM6MzE5IGNvbmZpZy9vYmotdm1zLmM6NDU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkxvY2FsIHN5bWJvbCAlcyBuZXZlciBkZWZpbmVkIgogbXNnc3RyICIiCkBAIC00ODIsNyArNTI2LDcgQEAKIG1zZ2lkICIubG4gcHNldWRvLW9wIGluc2lkZSAuZGVmLy5lbmRlZjogaWdub3JlZC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1jb2ZmLmM6NTQ2IGVjb2ZmLmM6MzI3OAorIzogY29uZmlnL29iai1jb2ZmLmM6NTQ2IGVjb2ZmLmM6MzI0MwogbXNnaWQgIi5sb2Mgb3V0c2lkZSBvZiAudGV4dCIKIG1zZ3N0ciAiIgogCkBAIC01NTcsMTMgKzYwMSwxMyBAQAogbXNnaWQgInVuc3VwcG9ydGVkIHNlY3Rpb24gYXR0cmlidXRlICclYyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1jb2ZmLmM6MTQ4NyBjb25maWcvb2JqLWNvZmYuYzozNzU5IGNvbmZpZy90Yy1wcGMuYzo0NTA4CisjOiBjb25maWcvb2JqLWNvZmYuYzoxNDg3IGNvbmZpZy9vYmotY29mZi5jOjM3NTkgY29uZmlnL3RjLXBwYy5jOjQ1OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBzZWN0aW9uIGF0dHJpYnV0ZSAnJWMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotY29mZi5jOjE1MTcgY29uZmlnL3RjLXBwYy5jOjQ1MjYgY29uZmlnL3RjLXRpYzU0eC5jOjQzMzkKLSM6IHJlYWQuYzoyNTYyCisjOiBjb25maWcvb2JqLWNvZmYuYzoxNTE3IGNvbmZpZy90Yy1wcGMuYzo0NjEyIGNvbmZpZy90Yy10aWM1NHguYzo0MzM5CisjOiByZWFkLmM6MjQ0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJlcnJvciBzZXR0aW5nIGZsYWdzIGZvciBcIiVzXCI6ICVzIgogbXNnc3RyICIiCkBAIC01NzksNiArNjIzLDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvb2JqLWNvZmYuYzoxODQ5IGNvbmZpZy9vYmotaWVlZS5jOjY5CisjLCBjLWZvcm1hdAogbXNnaWQgIk91dCBvZiBzdGVwXG4iCiBtc2dzdHIgIiIKIApAQCAtNTg3LDEwICs2MzIsMTEgQEAKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvb2JqLWNvZmYuYzoyNTA3CisjLCBjLWZvcm1hdAogbXNnaWQgImAuYmYnIHN5bWJvbCB3aXRob3V0IHByZWNlZGluZyBmdW5jdGlvblxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotY29mZi5jOjM0NTcgY29uZmlnL29iai1pZWVlLmM6NTIxCisjOiBjb25maWcvb2JqLWNvZmYuYzozNDU3IGNvbmZpZy9vYmotaWVlZS5jOjUxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJGQVRBTDogQ2FuJ3QgY3JlYXRlICVzIgogbXNnc3RyICIiCkBAIC02MDUsNyArNjUxLDcgQEAKIG1zZ2lkICJUb28gbWFueSBuZXcgc2VjdGlvbnM7IGNhbid0IGFkZCBcIiVzXCIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1jb2ZmLmM6NDA1NyBjb25maWcvdGMtc3BhcmMuYzozNjM1CisjOiBjb25maWcvb2JqLWNvZmYuYzo0MDU3IGNvbmZpZy90Yy1zcGFyYy5jOjM2NDYKIG1zZ2lkICJFeHBlY3RlZCBjb21tYSBhZnRlciBuYW1lIgogbXNnc3RyICIiCiAKQEAgLTY2NCwxODEgKzcxMCwxNTggQEAKIG1zZ2lkICJDYW4ndCBzZXQgcmVnaXN0ZXIgbWFza3MiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1lbGYuYzozMTYKLW1zZ2lkICJleHBlY3RlZCBjb21tYSBhZnRlciBzeW1ib2wtbmFtZSIKLW1zZ3N0ciAiIgotCi0jOiBjb25maWcvb2JqLWVsZi5jOjMyNgotIywgYy1mb3JtYXQKLW1zZ2lkICIuQ09NTW9uIGxlbmd0aCAoJWxkKSBvdXQgb2YgcmFuZ2UsIGlnbm9yZWQuIgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy9vYmotZWxmLmM6MzM1IGVjb2ZmLmM6MzM5NyByZWFkLmM6MTQwNiByZWFkLmM6MTUwNyByZWFkLmM6MjE0NQotIzogcmVhZC5jOjIyMzQgcmVhZC5jOjI4NjMgcmVhZC5jOjQ5Njggc3ltYm9scy5jOjM2NyBzeW1ib2xzLmM6NDY2Ci0jLCBjLWZvcm1hdAotbXNnaWQgInN5bWJvbCBgJXMnIGlzIGFscmVhZHkgZGVmaW5lZCIKLW1zZ3N0ciAiIgotCi0jOiBjb25maWcvb2JqLWVsZi5jOjM0MwotIywgYy1mb3JtYXQKLW1zZ2lkICJsZW5ndGggb2YgLmNvbW0gXCIlc1wiIGlzIGFscmVhZHkgJWxkOyBub3QgY2hhbmdlZCB0byAlbGQiCi1tc2dzdHIgIiIKLQotIzogY29uZmlnL29iai1lbGYuYzozNjcKLW1zZ2lkICJjb21tb24gYWxpZ25tZW50IG5lZ2F0aXZlOyAwIGFzc3VtZWQiCi1tc2dzdHIgIiIKLQotIzogY29uZmlnL29iai1lbGYuYzozODYKLW1zZ2lkICJjb21tb24gYWxpZ25tZW50IG5vdCBhIHBvd2VyIG9mIDIiCi1tc2dzdHIgIiIKLQotIzogY29uZmlnL29iai1lbGYuYzo0NDkgY29uZmlnL3RjLXNwYXJjLmM6MzkzMSBjb25maWcvdGMtdjg1MC5jOjQ2MQorIzogY29uZmlnL29iai1lbGYuYzozMDEgY29uZmlnL3RjLXNwYXJjLmM6Mzk0MiBjb25maWcvdGMtdjg1MC5jOjQ2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgLmNvbW1vbiBzZWdtZW50ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotZWxmLmM6NzE3CisjOiBjb25maWcvb2JqLWVsZi5jOjU0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJzZXR0aW5nIGluY29ycmVjdCBzZWN0aW9uIHR5cGUgZm9yICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotZWxmLmM6NzIxCisjOiBjb25maWcvb2JqLWVsZi5jOjU1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJpZ25vcmluZyBpbmNvcnJlY3Qgc2VjdGlvbiB0eXBlIGZvciAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLWVsZi5jOjczNAorIzogY29uZmlnL29iai1lbGYuYzo1ODUKICMsIGMtZm9ybWF0CiBtc2dpZCAic2V0dGluZyBpbmNvcnJlY3Qgc2VjdGlvbiBhdHRyaWJ1dGVzIGZvciAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLWVsZi5jOjc4NgorIzogY29uZmlnL29iai1lbGYuYzo2NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiaWdub3JpbmcgY2hhbmdlZCBzZWN0aW9uIGF0dHJpYnV0ZXMgZm9yICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotZWxmLmM6Nzg4CisjOiBjb25maWcvb2JqLWVsZi5jOjY0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJpZ25vcmluZyBjaGFuZ2VkIHNlY3Rpb24gZW50aXR5IHNpemUgZm9yICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotZWxmLmM6NzkxCisjOiBjb25maWcvb2JqLWVsZi5jOjY0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJpZ25vcmluZyBuZXcgc2VjdGlvbiBncm91cCBmb3IgJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1lbGYuYzo4NDUKKyM6IGNvbmZpZy9vYmotZWxmLmM6NzAxCiBtc2dpZCAidW5yZWNvZ25pemVkIC5zZWN0aW9uIGF0dHJpYnV0ZTogd2FudCBhLHcseCxNLFMsRyxUIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotZWxmLmM6ODg0CisjOiBjb25maWcvb2JqLWVsZi5jOjczOAogbXNnaWQgInVucmVjb2duaXplZCBzZWN0aW9uIGF0dHJpYnV0ZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLWVsZi5jOjkwNiByZWFkLmM6MjU0NQorIzogY29uZmlnL29iai1lbGYuYzo3NjAgcmVhZC5jOjI0MjcKIG1zZ2lkICJ1bnJlY29nbml6ZWQgc2VjdGlvbiB0eXBlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotZWxmLmM6OTM2CisjOiBjb25maWcvb2JqLWVsZi5jOjc5MAogbXNnaWQgIm1pc3NpbmcgbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLWVsZi5jOjEwNDgKKyM6IGNvbmZpZy9vYmotZWxmLmM6OTAxCiBtc2dpZCAiaW52YWxpZCBtZXJnZSBlbnRpdHkgc2l6ZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLWVsZi5jOjEwNTUKKyM6IGNvbmZpZy9vYmotZWxmLmM6OTA4CiBtc2dpZCAiZW50aXR5IHNpemUgZm9yIFNIRl9NRVJHRSBub3Qgc3BlY2lmaWVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotZWxmLmM6MTA3NQorIzogY29uZmlnL29iai1lbGYuYzo5MjgKIG1zZ2lkICJncm91cCBuYW1lIGZvciBTSEZfR1JPVVAgbm90IHNwZWNpZmllZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLWVsZi5jOjEwODgKKyM6IGNvbmZpZy9vYmotZWxmLmM6OTQxCiBtc2dpZCAiY2hhcmFjdGVyIGZvbGxvd2luZyBuYW1lIGlzIG5vdCAnIyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1lbGYuYzoxMTg5CisjOiBjb25maWcvb2JqLWVsZi5jOjEwMzgKIG1zZ2lkICIucHJldmlvdXMgd2l0aG91dCBjb3JyZXNwb25kaW5nIC5zZWN0aW9uOyBpZ25vcmVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotZWxmLmM6MTIxNgorIzogY29uZmlnL29iai1lbGYuYzoxMDY0CiBtc2dpZCAiLnBvcHNlY3Rpb24gd2l0aG91dCBjb3JyZXNwb25kaW5nIC5wdXNoc2VjdGlvbjsgaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLWVsZi5jOjEyNzAKKyM6IGNvbmZpZy9vYmotZWxmLmM6MTExNgogbXNnaWQgImV4cGVjdGVkIGNvbW1hIGFmdGVyIG5hbWUgaW4gLnN5bXZlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLWVsZi5jOjEyOTQKKyM6IGNvbmZpZy9vYmotZWxmLmM6MTE0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJtaXNzaW5nIHZlcnNpb24gbmFtZSBpbiBgJXMnIGZvciBzeW1ib2wgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLWVsZi5jOjEzMDUKKyM6IGNvbmZpZy9vYmotZWxmLmM6MTE1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJtdWx0aXBsZSB2ZXJzaW9ucyBbYCVzJ3xgJXMnXSBmb3Igc3ltYm9sIGAlcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1lbGYuYzoxNTQxCisjOiBjb25maWcvb2JqLWVsZi5jOjEzODEKIG1zZ2lkICJleHBlY3RlZCBxdW90ZWQgc3RyaW5nIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotZWxmLmM6MTU2MgorIzogY29uZmlnL29iai1lbGYuYzoxNDAxCiAjLCBjLWZvcm1hdAogbXNnaWQgImV4cGVjdGVkIGNvbW1hIGFmdGVyIG5hbWUgYCVzJyBpbiAuc2l6ZSBkaXJlY3RpdmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1lbGYuYzoxNTcxCisjOiBjb25maWcvb2JqLWVsZi5jOjE0MTAKIG1zZ2lkICJtaXNzaW5nIGV4cHJlc3Npb24gaW4gLnNpemUgZGlyZWN0aXZlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotZWxmLmM6MTY2MAorIzogY29uZmlnL29iai1lbGYuYzoxNDk3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBzeW1ib2wgdHlwZSBcIiVzXCIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1lbGYuYzoxODQxCisjOiBjb25maWcvb2JqLWVsZi5jOjE2NjUKIG1zZ2lkICIuc2l6ZSBleHByZXNzaW9uIHRvbyBjb21wbGljYXRlZCB0byBmaXggdXAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1lbGYuYzoxODczCisjOiBjb25maWcvb2JqLWVsZi5jOjE2OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogImludmFsaWQgYXR0ZW1wdCB0byBkZWNsYXJlIGV4dGVybmFsIHZlcnNpb24gbmFtZSBhcyBkZWZhdWx0IGluIHN5bWJvbCBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotZWxmLmM6MTkzNCBlY29mZi5jOjM2NDIKKyM6IGNvbmZpZy9vYmotZWxmLmM6MTc1OCBlY29mZi5jOjM2MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAic3ltYm9sIGAlcycgY2FuIG5vdCBiZSBib3RoIHdlYWsgYW5kIGNvbW1vbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLWVsZi5jOjIwNTQKKyM6IGNvbmZpZy9vYmotZWxmLmM6MTg3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJhc3N1bWluZyBhbGwgbWVtYmVycyBvZiBncm91cCBgJXMnIGFyZSBDT01EQVQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1lbGYuYzoyMDc2CisjOiBjb25maWcvb2JqLWVsZi5jOjE4OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FuJ3QgY3JlYXRlIGdyb3VwOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLWVsZi5jOjIxODMKKyM6IGNvbmZpZy9vYmotZWxmLmM6MjAwNQogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gc2V0IHVwIGRlYnVnZ2luZyBpbmZvcm1hdGlvbjogJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai1lbGYuYzoyMjAzCisjOiBjb25maWcvb2JqLWVsZi5jOjIwMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FuJ3Qgc3RhcnQgd3JpdGluZyAubWRlYnVnIHNlY3Rpb246ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotZWxmLmM6MjIxMQorIzogY29uZmlnL29iai1lbGYuYzoyMDMyCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCB3cml0ZSAubWRlYnVnIHNlY3Rpb246ICVzIgogbXNnc3RyICIiCiAKKyM6IGNvbmZpZy9vYmotZWxmLmg6MTQwCisjLCBjLWZvcm1hdAorbXNnaWQgImNhbid0IGFsbG9jYXRlIEVMRiBwcml2YXRlIHNlY3Rpb24gZGF0YTogJXMiCittc2dzdHIgIiIKKwogIzogY29uZmlnL29iai1pZWVlLmM6NDU1CiBtc2dpZCAidG9vIG1hbnkgc2VjdGlvbnMiCiBtc2dzdHIgIiIKQEAgLTg2NSw0NSArODg4LDQ1IEBACiBtc2dpZCAiRkFUQUw6IEF0dGFjaGluZyBjb3B5cmlnaHQgaGVhZGVyICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotdm1zLmM6NTMwCisjOiBjb25maWcvb2JqLXZtcy5jOjM2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb21waWxlciBlbWl0dGVkIHplcm8tc2l6ZSBjb21tb24gc3ltYm9sIGAlcycgYWxyZWFkeSBkZWZpbmVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotdm1zLmM6NTQwCisjOiBjb25maWcvb2JqLXZtcy5jOjM3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb21waWxlciByZWRlZmluZWQgemVyby1zaXplIGNvbW1vbiBzeW1ib2wgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLXZtcy5jOjY2MworIzogY29uZmlnL29iai12bXMuYzo0OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGRuJ3QgY3JlYXRlIFZNUyBvYmplY3QgZmlsZSBcIiVzXCIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai12bXMuYzo2ODgKKyM6IGNvbmZpZy9vYmotdm1zLmM6NTE3CiBtc2dpZCAiSS9PIGVycm9yIHdyaXRpbmcgVk1TIG9iamVjdCBmaWxlIChsZW5ndGggcHJlZml4KSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLXZtcy5jOjcwMgorIzogY29uZmlnL29iai12bXMuYzo1MzEKIG1zZ2lkICJJL08gZXJyb3Igd3JpdGluZyBWTVMgb2JqZWN0IGZpbGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai12bXMuYzoxMjkyCisjOiBjb25maWcvb2JqLXZtcy5jOjEwNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGRuJ3QgZmluZCBzb3VyY2UgZmlsZSBcIiVzXCIsIHN0YXR1cz0lJVgleCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLXZtcy5jOjE3OTAgY29uZmlnL29iai12bXMuYzoyOTY3CisjOiBjb25maWcvb2JqLXZtcy5jOjE1NTkgY29uZmlnL29iai12bXMuYzoyNzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgImRlYnVnZ2VyIGZvcndhcmQgcmVmZXJlbmNlIGVycm9yLCBkYnggdHlwZSAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLXZtcy5jOjE4NjUKKyM6IGNvbmZpZy9vYmotdm1zLmM6MTYzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJWYXJpYWJsZSBkZXNjcmlwdG9yICVkIHRvbyBjb21wbGljYXRlZC4gIERlZmluZWQgYXMgYHZvaWQgKicuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotdm1zLmM6MjE3OQorIzogY29uZmlnL29iai12bXMuYzoxOTQ4CiBtc2dpZCAiIgogIioqKldhcm5pbmcgLSB0aGUgYXNzZW1ibHkgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIGhhcyBwbGFjZWQgXG4iCiAiIGdsb2JhbCBjb25zdGFudChzKSBpbiB0aGUgdGV4dCBwc2VjdC4gIFRoZXNlIHdpbGwgbm90IGJlIGF2YWlsYWJsZSB0byBcbiIKQEAgLTkxNCw5MiArOTM3LDkyIEBACiAiIEkgZGlkbid0IHdhcm4geW91ISBcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLXZtcy5jOjI0OTQKKyM6IGNvbmZpZy9vYmotdm1zLmM6MjI1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJkZWJ1Z2dpbmVyIG91dHB1dDogJWQgaXMgYW4gdW5rbm93biB1bnR5cGVkIHZhcmlhYmxlLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLXZtcy5jOjI3MTIKKyM6IGNvbmZpZy9vYmotdm1zLmM6MjQ3MwogIywgYy1mb3JtYXQKIG1zZ2lkICJkZWJ1Z2dlciBvdXRwdXQ6IHN0cnVjdHVyZSBlbGVtZW50IGAlcycgaGFzIHVuZGVmaW5lZCB0eXBlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotdm1zLmM6MjgyMworIzogY29uZmlnL29iai12bXMuYzoyNTg0CiAjLCBjLWZvcm1hdAogbXNnaWQgImRlYnVnZ2VyIG91dHB1dDogJWQgaXMgYW4gdW5rbm93biB0eXBlIG9mIHZhcmlhYmxlLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLXZtcy5jOjI5NTYKKyM6IGNvbmZpZy9vYmotdm1zLmM6MjcyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJkZWJ1Z2dlciBvdXRwdXQ6IFVuYWJsZSB0byByZXNvbHZlICVkIGNpcmN1bGFyIHJlZmVyZW5jZXMuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotdm1zLmM6MzE1OAorIzogY29uZmlnL29iai12bXMuYzoyOTA4CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1vZHVsZSBuYW1lIHRydW5jYXRlZDogJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLXZtcy5jOjM0MzYKKyM6IGNvbmZpZy9vYmotdm1zLmM6MzE1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJTeW1ib2wgJXMgcmVwbGFjZWQgYnkgJXNcbiIKIG1zZ3N0ciAiIgogCiAjLiBpbXBvc3NpYmxlCi0jOiBjb25maWcvb2JqLXZtcy5jOjM3MTkKKyM6IGNvbmZpZy9vYmotdm1zLmM6MzM4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIFZNUyBwc2VjdCB0eXBlICglbGQpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotdm1zLmM6Mzc2MAorIzogY29uZmlnL29iai12bXMuYzozNDIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkdsb2JhbHN5bWJvbCBhdHRyaWJ1dGUgZm9yIHN5bWJvbCAlcyB3YXMgdW5leHBlY3RlZC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai12bXMuYzozOTA5CisjOiBjb25maWcvb2JqLXZtcy5jOjM1NDcKIG1zZ2lkICJJbnZhbGlkIGRhdGEgdHlwZSBmb3IgZ2xvYmFsdmFsdWUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai12bXMuYzozOTIxCisjOiBjb25maWcvb2JqLXZtcy5jOjM1NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBnbG9iYWx2YWx1ZSBvZiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLXZtcy5jOjQyNzEKKyM6IGNvbmZpZy9vYmotdm1zLmM6Mzc5OQogbXNnaWQgIkNvdWxkbid0IGZpbmQgZml4dXAgZnJhZ21lbnQgd2hlbiBjaGVja2luZyBmb3IgaW5kaXJlY3QgcmVmZXJlbmNlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotdm1zLmM6NDYxNCBjb25maWcvb2JqLXZtcy5jOjQ3NTcKKyM6IGNvbmZpZy9vYmotdm1zLmM6NDA3NyBjb25maWcvb2JqLXZtcy5jOjQyMTIKIG1zZ2lkICJGaXh1cCBkYXRhIGFkZHN5IGFuZCBzdWJzeSBkb24ndCBoYXZlIHRoZSBzYW1lIHR5cGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai12bXMuYzo0NjE4IGNvbmZpZy9vYmotdm1zLmM6NDc2MQorIzogY29uZmlnL29iai12bXMuYzo0MDgxIGNvbmZpZy9vYmotdm1zLmM6NDIxNgogbXNnaWQgIkZpeHVwIGRhdGEgYWRkc3kgYW5kIHN1YnN5IGRvbid0IGhhdmUgYW4gYXBwcm9wcmlhdGUgdHlwZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLXZtcy5jOjQ2MjEgY29uZmlnL29iai12bXMuYzo0NzY0CisjOiBjb25maWcvb2JqLXZtcy5jOjQwODQgY29uZmlnL29iai12bXMuYzo0MjE5CiBtc2dpZCAiRml4dXAgZGF0YSBpcyBlcnJvbmVvdXNseSBcInBjcmVsXCIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai12bXMuYzo0NjM3IGNvbmZpZy9vYmotdm1zLmM6NDc4MworIzogY29uZmlnL29iai12bXMuYzo0MTAwIGNvbmZpZy9vYmotdm1zLmM6NDIzNgogbXNnaWQgIkZpeHVwIGRhdHVtIGlzIG5vdCBhIGxvbmd3b3JkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotdm1zLmM6NDY0MSBjb25maWcvb2JqLXZtcy5jOjQ3ODcKKyM6IGNvbmZpZy9vYmotdm1zLmM6NDEwNCBjb25maWcvb2JqLXZtcy5jOjQyNDAKIG1zZ2lkICJGaXh1cCBkYXR1bSBpcyBub3QgXCJmaXhQLT5meF9hZGRzeVwiIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy9vYmotdm1zLmM6NDg1OAorIzogY29uZmlnL29iai12bXMuYzo0MzA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJnKysgd3JvdGUgYW4gZXh0ZXJuIHJlZmVyZW5jZSB0byBgJXMnIGFzIGEgcm91dGluZS5cbiIKICJJIHdpbGwgZml4IGl0LCBidXQgSSBob3BlIHRoYXQgaXQgd2FzIG5vdGUgcmVhbGx5IGEgcm91dGluZS4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL29iai12bXMuYzo0OTkwCisjOiBjb25maWcvb2JqLXZtcy5jOjQ0MzYKIG1zZ2lkICJDYW4ndCBoYW5kbGUgZ2xvYmFsIHh0b3JzIHN5bWJvbHMgeWV0LiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvb2JqLXZtcy5jOjQ5OTMKKyM6IGNvbmZpZy9vYmotdm1zLmM6NDQzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duICVzIgogbXNnc3RyICIiCkBAIC0xMDA3LDQ2ICsxMDMwLDQ2IEBACiAjLgogIy4gKglFcnJvciBvdGhlcndpc2UuCiAjLgotIzogY29uZmlnL29iai12bXMuYzo1MDc4CisjOiBjb25maWcvb2JqLXZtcy5jOjQ1MjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5oYW5kbGVkIHN0YWIgdHlwZSAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYTI5ay5jOjE2MyBjb25maWcvdGMtc3BhcmMuYzozOTgzCisjOiBjb25maWcvdGMtYTI5ay5jOjE2MyBjb25maWcvdGMtc3BhcmMuYzozOTk0CiBtc2dpZCAiVW5rbm93biBzZWdtZW50IHR5cGUiCiBtc2dzdHIgIiIKIAogIy4gUHJvYmFibHkgYSBtZW1vcnkgYWxsb2NhdGlvbiBwcm9ibGVtPyAgR2l2ZSB1cCBub3cuCi0jOiBjb25maWcvdGMtYTI5ay5jOjMzMyBjb25maWcvdGMtZGx4LmM6MzY5IGNvbmZpZy90Yy1ocHBhLmM6MTQ2MwotIzogY29uZmlnL3RjLW1pcHMuYzoxMTA4IGNvbmZpZy90Yy1taXBzLmM6MTE1MCBjb25maWcvdGMtb3IzMi5jOjIyOAotIzogY29uZmlnL3RjLXNwYXJjLmM6ODUzCisjOiBjb25maWcvdGMtYTI5ay5jOjMzMyBjb25maWcvdGMtZGx4LmM6MzY5IGNvbmZpZy90Yy1ocHBhLmM6MTQ3NgorIzogY29uZmlnL3RjLW1pcHMuYzoxMTUyIGNvbmZpZy90Yy1taXBzLmM6MTE5NCBjb25maWcvdGMtb3IzMi5jOjIyOAorIzogY29uZmlnL3RjLXNwYXJjLmM6ODU4CiBtc2dpZCAiQnJva2VuIGFzc2VtYmxlci4gIE5vIGFzc2VtYmx5IGF0dGVtcHRlZC4iCiBtc2dzdHIgIiIKIAogIzogY29uZmlnL3RjLWEyOWsuYzozNzggY29uZmlnL3RjLWF2ci5jOjExMjEgY29uZmlnL3RjLWQxMHYuYzo1NDUKLSM6IGNvbmZpZy90Yy1kMzB2LmM6NTUxIGNvbmZpZy90Yy1oODMwMC5jOjQ5MiBjb25maWcvdGMtaDg1MDAuYzoyODMKLSM6IGNvbmZpZy90Yy1tY29yZS5jOjYwNyBjb25maWcvdGMtbW1peC5jOjQ3MCBjb25maWcvdGMtbW4xMDIwMC5jOjk0MAotIzogY29uZmlnL3RjLW1uMTAzMDAuYzoxODE1IGNvbmZpZy90Yy1tc3A0MzAuYzoxNTQ0IGNvbmZpZy90Yy1vcjMyLmM6MzM0Ci0jOiBjb25maWcvdGMtb3IzMi5jOjM5MCBjb25maWcvdGMtcHBjLmM6MjMzNCBjb25maWcvdGMtczM5MC5jOjEyMzYKLSM6IGNvbmZpZy90Yy1zaC5jOjEyNjQgY29uZmlnL3RjLXNoNjQuYzoyMjU0IGNvbmZpZy90Yy10aWM4MC5jOjI3OQotIzogY29uZmlnL3RjLXY4NTAuYzoyMDI0IGNvbmZpZy90Yy13NjUuYzoyMTggY29uZmlnL3RjLXo4ay5jOjM3NgorIzogY29uZmlnL3RjLWQzMHYuYzo1NTEgY29uZmlnL3RjLWg4MzAwLmM6NDcwIGNvbmZpZy90Yy1oODUwMC5jOjI4MworIzogY29uZmlnL3RjLW1jb3JlLmM6NjA3IGNvbmZpZy90Yy1tbWl4LmM6NTE1IGNvbmZpZy90Yy1tbjEwMjAwLmM6OTQwCisjOiBjb25maWcvdGMtbW4xMDMwMC5jOjE4MTUgY29uZmlnL3RjLW1zcDQzMC5jOjE1NDkgY29uZmlnL3RjLW9yMzIuYzozMzQKKyM6IGNvbmZpZy90Yy1vcjMyLmM6MzkwIGNvbmZpZy90Yy1wcGMuYzoyMzcxIGNvbmZpZy90Yy1zMzkwLmM6MTIzNgorIzogY29uZmlnL3RjLXNoNjQuYzoyMjA4IGNvbmZpZy90Yy1zaC5jOjEyMzAgY29uZmlnL3RjLXRpYzgwLmM6Mjc5CisjOiBjb25maWcvdGMtdjg1MC5jOjIwNDEgY29uZmlnL3RjLXc2NS5jOjIxOCBjb25maWcvdGMtejhrLmM6MzMxCiBtc2dpZCAibWlzc2luZyBvcGVyYW5kIgogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy1hMjlrLmM6NDE3IGNvbmZpZy90Yy1jcmlzLmM6MTA3NSBjb25maWcvdGMtY3Jpcy5jOjEwODMKLSM6IGNvbmZpZy90Yy1kbHguYzo4MzQgY29uZmlnL3RjLWhwcGEuYzoxNTk5IGNvbmZpZy90Yy1pODYwLmM6NDUzCi0jOiBjb25maWcvdGMtaTg2MC5jOjQ3MCBjb25maWcvdGMtaTg2MC5jOjkzMCBjb25maWcvdGMtc3BhcmMuYzoxNDE1Ci0jOiBjb25maWcvdGMtc3BhcmMuYzoxNDIxCisjOiBjb25maWcvdGMtZGx4LmM6ODMzIGNvbmZpZy90Yy1ocHBhLmM6MTYxMiBjb25maWcvdGMtaTg2MC5jOjQ5MgorIzogY29uZmlnL3RjLWk4NjAuYzo1MDkgY29uZmlnL3RjLWk4NjAuYzo5ODkgY29uZmlnL3RjLXNwYXJjLmM6MTQyMAorIzogY29uZmlnL3RjLXNwYXJjLmM6MTQyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIG9wY29kZTogYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYTI5ay5jOjQyMiBjb25maWcvdGMtZGx4LmM6ODUyCisjOiBjb25maWcvdGMtYTI5ay5jOjQyMiBjb25maWcvdGMtZGx4LmM6ODUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gb3Bjb2RlIGAlcycuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hMjlrLmM6NDU0IGNvbmZpZy90Yy1kbHguYzo5MTMKKyM6IGNvbmZpZy90Yy1hMjlrLmM6NDU0IGNvbmZpZy90Yy1kbHguYzo5MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiVG9vIG1hbnkgb3BlcmFuZHM6ICVzIgogbXNnc3RyICIiCkBAIC0xMDU2LDggKzEwNzksOCBAQAogbXNnaWQgIkltbWVkaWF0ZSB2YWx1ZSBvZiAlbGQgaXMgdG9vIGxhcmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hMjlrLmM6NTQ2IGNvbmZpZy90Yy1pODYwLmM6MzU1IGNvbmZpZy90Yy1pODYwLmM6OTAyCi0jOiBjb25maWcvdGMtbTY4ay5jOjMxNzEgY29uZmlnL3RjLW02OGsuYzozMjAwIGNvbmZpZy90Yy1zcGFyYy5jOjI2NDcKKyM6IGNvbmZpZy90Yy1hMjlrLmM6NTQ2IGNvbmZpZy90Yy1pODYwLmM6Mzk1IGNvbmZpZy90Yy1pODYwLmM6OTQwCisjOiBjb25maWcvdGMtbTY4ay5jOjMzMTAgY29uZmlnL3RjLW02OGsuYzozMzM5IGNvbmZpZy90Yy1zcGFyYy5jOjI2NTgKIG1zZ2lkICJmYWlsZWQgc2FuaXR5IGNoZWNrLiIKIG1zZ3N0ciAiIgogCkBAIC0xMDc5LDEyICsxMTAyLDEyIEBACiBtc2dpZCAiYTI5a19lc3RpbWF0ZV9zaXplX2JlZm9yZV9yZWxheFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hMjlrLmM6MTA5NSBjb25maWcvdGMtZGx4LmM6MTI4MyBjb25maWcvdGMtb3IzMi5jOjEzNzMKKyM6IGNvbmZpZy90Yy1hMjlrLmM6MTA5NSBjb25maWcvdGMtZGx4LmM6MTI4MCBjb25maWcvdGMtb3IzMi5jOjEzNzMKICMsIGMtZm9ybWF0CiBtc2dpZCAibGFiZWwgXCIkJWRcIiByZWRlZmluZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWEyOWsuYzoxMTY4IGNvbmZpZy90Yy1kbHguYzo1MTEgY29uZmlnL3RjLW9yMzIuYzoxNDY2CisjOiBjb25maWcvdGMtYTI5ay5jOjExNjggY29uZmlnL3RjLWRseC5jOjUxMCBjb25maWcvdGMtb3IzMi5jOjE0NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBleHByZXNzaW9uIGFmdGVyICUlJSVcbiIKIG1zZ3N0ciAiIgpAQCAtMTEwMywxNSArMTEyNiwxNSBAQAogbXNnaWQgImludGVybmFsIGVycm9yOiBjYW4ndCBoYXNoIG1hY3JvIGAlcyc6ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjk0MyBjb25maWcvdGMtaTk2MC5jOjI3MDcgY29uZmlnL3RjLXh0ZW5zYS5jOjQ5NTQKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo1MDE1CisjOiBjb25maWcvdGMtYWxwaGEuYzo5NDMgY29uZmlnL3RjLWk5NjAuYzoyNzA3IGNvbmZpZy90Yy14dGVuc2EuYzo0ODQyCisjOiBjb25maWcvdGMteHRlbnNhLmM6NDkwMwogbXNnaWQgInN5bnRheCBlcnJvciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYWxwaGEuYzoxMDE3IGNvbmZpZy90Yy1oODMwMC5jOjIwOTkgY29uZmlnL3RjLWg4NTAwLmM6MTIwNAotIzogY29uZmlnL3RjLWhwcGEuYzo0MDE4IGNvbmZpZy90Yy1pODYwLmM6MTAwNCBjb25maWcvdGMtbTY4aGMxMS5jOjU2OAotIzogY29uZmlnL3RjLW02OGsuYzo0MTk2IGNvbmZpZy90Yy1tODhrLmM6OTkxIGNvbmZpZy90Yy1uczMyay5jOjE2ODkKLSM6IGNvbmZpZy90Yy1vcjMyLmM6OTEwIGNvbmZpZy90Yy1zcGFyYy5jOjI5MzQgY29uZmlnL3RjLXo4ay5jOjEzNzEKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjEwMTcgY29uZmlnL3RjLWg4MzAwLmM6MjEwMCBjb25maWcvdGMtaDg1MDAuYzoxMjA0CisjOiBjb25maWcvdGMtaHBwYS5jOjQwMjkgY29uZmlnL3RjLWk4NjAuYzoxMDU5IGNvbmZpZy90Yy1tNjhoYzExLmM6NTU3CisjOiBjb25maWcvdGMtbTY4ay5jOjQzNjYgY29uZmlnL3RjLW04OGsuYzo5OTEgY29uZmlnL3RjLW5zMzJrLmM6MTY4OQorIzogY29uZmlnL3RjLW9yMzIuYzo5MTAgY29uZmlnL3RjLXNwYXJjLmM6Mjk0NSBjb25maWcvdGMtejhrLmM6MTMzMQogbXNnaWQgIkJhZCBjYWxsIHRvIE1EX0FUT0YoKSIKIG1zZ3N0ciAiIgogCkBAIC0xMTUzLDcgKzExNzYsNyBAQAogbXNnaWQgInR5cGUgJWQgcmVsb2MgZG9uZT9cbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYWxwaGEuYzoxMzczIGNvbmZpZy90Yy1hbHBoYS5jOjEzODAgY29uZmlnL3RjLW1pcHMuYzo4NjAzCisjOiBjb25maWcvdGMtYWxwaGEuYzoxMzczIGNvbmZpZy90Yy1hbHBoYS5jOjEzODAgY29uZmlnL3RjLW1pcHMuYzo4NTc4CiBtc2dpZCAiVXNlZCAkYXQgd2l0aG91dCBcIi5zZXQgbm9hdFwiIgogbXNnc3RyICIiCiAKQEAgLTExNjIsMTIgKzExODUsMTIgQEAKIG1zZ2lkICIhc2FtZWdwIHJlbG9jIGFnYWluc3Qgc3ltYm9sIHdpdGhvdXQgLnByb2xvZ3VlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYWxwaGEuYzoxNTgxIGNvbmZpZy90Yy14dGVuc2EuYzo1NDUxCisjOiBjb25maWcvdGMtYWxwaGEuYzoxNTgxIGNvbmZpZy90Yy14dGVuc2EuYzo1MzM2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZXByZXNlbnQgYCVzJyByZWxvY2F0aW9uIGluIG9iamVjdCBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjE1ODggY29uZmlnL3RjLXh0ZW5zYS5jOjU0NTgKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjE1ODggY29uZmlnL3RjLXh0ZW5zYS5jOjUzNDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW50ZXJuYWwgZXJyb3I/IGNhbm5vdCBnZW5lcmF0ZSBgJXMnIHJlbG9jYXRpb24iCiBtc2dzdHIgIiIKQEAgLTEyNDMsOSArMTI2Niw5IEBACiAKICM6IGNvbmZpZy90Yy1hbHBoYS5jOjI0OTAgY29uZmlnL3RjLWFscGhhLmM6MjUxNCBjb25maWcvdGMtZDEwdi5jOjYzNAogIzogY29uZmlnL3RjLWQzMHYuYzo2MzkgY29uZmlnL3RjLW1uMTAyMDAuYzo5OTUgY29uZmlnL3RjLW1uMTAzMDAuYzoxODg4Ci0jOiBjb25maWcvdGMtcHBjLmM6MjMwMCBjb25maWcvdGMtcHBjLmM6MjUxNyBjb25maWcvdGMtcHBjLmM6MjUyOQorIzogY29uZmlnL3RjLXBwYy5jOjIzMzcgY29uZmlnL3RjLXBwYy5jOjI1NTQgY29uZmlnL3RjLXBwYy5jOjI1NjYKICM6IGNvbmZpZy90Yy1zMzkwLmM6MTI0NiBjb25maWcvdGMtczM5MC5jOjEzNDYgY29uZmlnL3RjLXMzOTAuYzoxNDQyCi0jOiBjb25maWcvdGMtdjg1MC5jOjE4MDQgY29uZmlnL3RjLXY4NTAuYzoxODI3IGNvbmZpZy90Yy12ODUwLmM6MjA0NworIzogY29uZmlnL3RjLXY4NTAuYzoxODIxIGNvbmZpZy90Yy12ODUwLmM6MTg0NCBjb25maWcvdGMtdjg1MC5jOjIwNjQKIG1zZ2lkICJ0b28gbWFueSBmaXh1cHMiCiBtc2dzdHIgIiIKIApAQCAtMTMxMyw3ICsxMzM2LDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMtYWxwaGEuYzoyNzk2IGNvbmZpZy90Yy1hbHBoYS5jOjI4NjkgY29uZmlnL3RjLWF2ci5jOjEwODcKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzo0NDYKKyM6IGNvbmZpZy90Yy1tc3A0MzAuYzo0NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBvcGNvZGUgYCVzJyIKIG1zZ3N0ciAiIgpAQCAtMTM1MiwyMSArMTM3NSwyMiBAQAogbXNnaWQgIm92ZXJmbG93IGluIGxpdGVyYWwgKC5saXQ4KSB0YWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYWxwaGEuYzo0MjYyIGNvbmZpZy90Yy1wcGMuYzoxNzQwIGNvbmZpZy90Yy1wcGMuYzo0MjcxCisjOiBjb25maWcvdGMtYWxwaGEuYzo0MjYyIGNvbmZpZy90Yy1wcGMuYzoxNzc2IGNvbmZpZy90Yy1wcGMuYzo0MzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIi5DT01Nb24gbGVuZ3RoICglbGQuKSA8MCEgSWdub3JlZC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFscGhhLmM6NDI5MSBjb25maWcvdGMtc3BhcmMuYzozNzk5IGNvbmZpZy90Yy12ODUwLmM6MjU2CisjOiBjb25maWcvdGMtYWxwaGEuYzo0MjkxIGNvbmZpZy90Yy1zcGFyYy5jOjM4MTAgY29uZmlnL3RjLXY4NTAuYzoyNTYKIG1zZ2lkICJJZ25vcmluZyBhdHRlbXB0IHRvIHJlLWRlZmluZSBzeW1ib2wiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFscGhhLmM6NDMwMCBjb25maWcvdGMtYWxwaGEuYzo0MzA5IGNvbmZpZy90Yy1wcGMuYzo0MzA4CisjOiBjb25maWcvdGMtYWxwaGEuYzo0MzAwIGNvbmZpZy90Yy1hbHBoYS5jOjQzMDkgY29uZmlnL3RjLXBwYy5jOjQzOTQKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjM4MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiTGVuZ3RoIG9mIC5jb21tIFwiJXNcIiBpcyBhbHJlYWR5ICVsZC4gTm90IGNoYW5nZWQgdG8gJWxkLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYWxwaGEuYzo0NDMwIGVjb2ZmLmM6MzA4MgorIzogY29uZmlnL3RjLWFscGhhLmM6NDQzMCBlY29mZi5jOjMwNTMKIG1zZ2lkICIuZW50IGRpcmVjdGl2ZSBoYXMgbm8gbmFtZSIKIG1zZ3N0ciAiIgogCkBAIC0xMzc0LDcgKzEzOTgsNyBAQAogbXNnaWQgIm5lc3RlZCAuZW50IGRpcmVjdGl2ZXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFscGhhLmM6NDQ4MyBlY29mZi5jOjMwMzIKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjQ0ODMgZWNvZmYuYzozMDA0CiBtc2dpZCAiLmVuZCBkaXJlY3RpdmUgaGFzIG5vIG5hbWUiCiBtc2dzdHIgIiIKIApAQCAtMTM4NiwyNyArMTQxMCwyNyBAQAogbXNnaWQgIi5lbmQgZGlyZWN0aXZlIG5hbWVzIGRpZmZlcmVudCBzeW1ib2wgdGhhbiAuZW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjQ1MzggZWNvZmYuYzozMTcxCisjOiBjb25maWcvdGMtYWxwaGEuYzo0NTM4IGVjb2ZmLmM6MzEzOQogbXNnaWQgIi5mbWFzayBvdXRzaWRlIG9mIC5lbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFscGhhLmM6NDU0MCBlY29mZi5jOjMyNDEKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjQ1NDAgZWNvZmYuYzozMjA3CiBtc2dpZCAiLm1hc2sgb3V0c2lkZSBvZiAuZW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjQ1NDggZWNvZmYuYzozMTc4CisjOiBjb25maWcvdGMtYWxwaGEuYzo0NTQ4IGVjb2ZmLmM6MzE0NgogbXNnaWQgImJhZCAuZm1hc2sgZGlyZWN0aXZlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjQ1NTAgZWNvZmYuYzozMjQ4CisjOiBjb25maWcvdGMtYWxwaGEuYzo0NTUwIGVjb2ZmLmM6MzIxNAogbXNnaWQgImJhZCAubWFzayBkaXJlY3RpdmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFscGhhLmM6NDU4NCBjb25maWcvdGMtbWlwcy5jOjE0MTQzIGVjb2ZmLmM6MzIwMAorIzogY29uZmlnL3RjLWFscGhhLmM6NDU4NCBjb25maWcvdGMtbWlwcy5jOjE0MDAyIGVjb2ZmLmM6MzE2NwogbXNnaWQgIi5mcmFtZSBvdXRzaWRlIG9mIC5lbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFscGhhLmM6NDU5NSBlY29mZi5jOjMyMTEKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjQ1OTUgZWNvZmYuYzozMTc4CiBtc2dpZCAiYmFkIC5mcmFtZSBkaXJlY3RpdmUiCiBtc2dzdHIgIiIKIApAQCAtMTQ0NywxMjEzICsxNDcxLDEzMzMgQEAKIG1zZ2lkICIuZW50IGRpcmVjdGl2ZSBoYXMgbm8gc3ltYm9sIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjQ5NjMKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjQ5NjIKIG1zZ2lkICJCYWQgLmZyYW1lIGRpcmVjdGl2ZSAxLi8yLiBwYXJhbSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYWxwaGEuYzo0OTc1CisjOiBjb25maWcvdGMtYWxwaGEuYzo0OTc0CiBtc2dpZCAiQmFkIC5mcmFtZSBkaXJlY3RpdmUgMy4vNC4gcGFyYW0iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFscGhhLmM6NTAwMAorIzogY29uZmlnL3RjLWFscGhhLmM6NDk5NwogbXNnaWQgIi5wZGVzYyBkaXJlY3RpdmUgbm90IGluIGxpbmsgKC5saW5rKSBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjUwMDgKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjUwMDUKIG1zZ2lkICIucGRlc2MgaGFzIG5vIG1hdGNoaW5nIC5lbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFscGhhLmM6NTAxOQorIzogY29uZmlnL3RjLWFscGhhLmM6NTAxNgogbXNnaWQgIi5wZGVzYyBkaXJlY3RpdmUgaGFzIG5vIGVudHJ5IHN5bWJvbCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYWxwaGEuYzo1MDMyCisjOiBjb25maWcvdGMtYWxwaGEuYzo1MDI5CiBtc2dpZCAiTm8gY29tbWEgYWZ0ZXIgLnBkZXNjIDxlbnRyeW5hbWU+IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjUwNTUKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjUwNTIKIG1zZ2lkICJ1bmtub3duIHByb2NlZHVyZSBraW5kIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjUxNDgKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjUxNDMKIG1zZ2lkICIubmFtZSBkaXJlY3RpdmUgbm90IGluIGxpbmsgKC5saW5rKSBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjUxNTYKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjUxNTEKIG1zZ2lkICIubmFtZSBkaXJlY3RpdmUgaGFzIG5vIHN5bWJvbCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYWxwaGEuYzo1MTkwCisjOiBjb25maWcvdGMtYWxwaGEuYzo1MTgzCiBtc2dpZCAiTm8gc3ltYm9sIGFmdGVyIC5saW5rYWdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjUyMTgKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjUyMDkKIG1zZ2lkICJObyBzeW1ib2wgYWZ0ZXIgLmNvZGVfYWRkcmVzcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYWxwaGEuYzo1MjUxCisjOiBjb25maWcvdGMtYWxwaGEuYzo1MjM5CiBtc2dpZCAiQmFkIC5tYXNrIGRpcmVjdGl2ZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYWxwaGEuYzo1MjcyCisjOiBjb25maWcvdGMtYWxwaGEuYzo1MjU4CiBtc2dpZCAiQmFkIC5mbWFzayBkaXJlY3RpdmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFscGhhLmM6NTQ0MAorIzogY29uZmlnL3RjLWFscGhhLmM6NTQyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJFeHBlY3RlZCBjb21tYSBhZnRlciBuYW1lIFwiJXNcIiIKIG1zZ3N0ciAiIgogCiAjLiAqc3ltYm9sX2dldF9vYmogKHN5bWJvbFApID0gKHNpZ25lZCBjaGFyKSB0ZW1wOwotIzogY29uZmlnL3RjLWFscGhhLmM6NTQ1MQorIzogY29uZmlnL3RjLWFscGhhLmM6NTQzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmhhbmRsZWQ6IC5wcm9jICVzLCVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjU0ODYKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjU0NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVHJpZWQgdG8gLnNldCB1bnJlY29nbml6ZWQgbW9kZSBgJXMnIgogbXNnc3RyICIiCiAKICMuIG5vdCBmYXRhbCwgYnV0IGl0IG1pZ2h0IG5vdCB3b3JrIGluIHRoZSBlbmQKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjU1MDMKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjU0ODMKIG1zZ2lkICJGaWxlIG92ZXJyaWRlcyBuby1iYXNlLXJlZ2lzdGVyIG9wdGlvbi4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFscGhhLmM6NTUyMAorIzogY29uZmlnL3RjLWFscGhhLmM6NTUwMAogIywgYy1mb3JtYXQKIG1zZ2lkICJCYWQgYmFzZSByZWdpc3RlciwgdXNpbmcgJCVkLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYWxwaGEuYzo1NTQyCisjOiBjb25maWcvdGMtYWxwaGEuYzo1NTIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFsaWdubWVudCB0b28gbGFyZ2U6ICVkLiBhc3N1bWVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjU1NDYgY29uZmlnL3RjLWQzMHYuYzoyMjAwCisjOiBjb25maWcvdGMtYWxwaGEuYzo1NTI2IGNvbmZpZy90Yy1kMzB2LmM6MjE5OAogbXNnaWQgIkFsaWdubWVudCBuZWdhdGl2ZTogMCBhc3N1bWVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hbHBoYS5jOjU4NjAKKyM6IGNvbmZpZy90Yy1hbHBoYS5jOjU4MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2hvc2UgR1AgdmFsdWUgb2YgJWx4XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFscGhhLmM6NTg3NgorIzogY29uZmlnL3RjLWFscGhhLmM6NTg1NQogbXNnaWQgIkJhZCAuc2VjdGlvbiBkaXJlY3RpdmU6IHdhbnQgYSxzLHcseCxNLFMsRyxUIGluIHN0cmluZyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJjLmM6MTYxNSBjb25maWcvdGMtYXJtLmM6MTE0MTYgY29uZmlnL3RjLWlwMmsuYzoyMTkKKyM6IGNvbmZpZy90Yy1hcmMuYzoxNTkyIGNvbmZpZy90Yy1hcm0uYzoxMjkwMiBjb25maWcvdGMtaXAyay5jOjIxOQogbXNnaWQgIm1kX2VzdGltYXRlX3NpemVfYmVmb3JlX3JlbGF4XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFyYy5jOjE2MjcKKyM6IGNvbmZpZy90Yy1hcmMuYzoxNjA0CiBtc2dpZCAibWRfY29udmVydF9mcmFnXG4iCiBtc2dzdHIgIiIKIAogIy4gV2UgY2FuJ3QgYWN0dWFsbHkgc3VwcG9ydCBzdWJ0cmFjdGluZyBhIHN5bWJvbC4KLSM6IGNvbmZpZy90Yy1hcmMuYzoxODk4IGNvbmZpZy90Yy1hcm0uYzo2NjE3IGNvbmZpZy90Yy1hcm0uYzo5NzA1Ci0jOiBjb25maWcvdGMtYXJtLmM6OTgwNSBjb25maWcvdGMtYXZyLmM6ODU0IGNvbmZpZy90Yy1jcmlzLmM6MzEyMwotIzogY29uZmlnL3RjLWQxMHYuYzoxNzEwIGNvbmZpZy90Yy1kMzB2LmM6MTg1MSBjb25maWcvdGMtbWlwcy5jOjM2MzAKLSM6IGNvbmZpZy90Yy1taXBzLmM6NDY5NSBjb25maWcvdGMtbWlwcy5jOjU4MjggY29uZmlnL3RjLW1pcHMuYzo2NTE3Ci0jOiBjb25maWcvdGMtbXNwNDMwLmM6MTQwMyBjb25maWcvdGMtcHBjLmM6NTQ2MCBjb25maWcvdGMtdjg1MC5jOjIzNTYKKyM6IGNvbmZpZy90Yy1hcmMuYzoxODc1IGNvbmZpZy90Yy1hcm0uYzo4MDc5IGNvbmZpZy90Yy1hcm0uYzoxMTE1NgorIzogY29uZmlnL3RjLWFybS5jOjExMjU2IGNvbmZpZy90Yy1hdnIuYzo4NTQgY29uZmlnL3RjLWNyaXMuYzozMTIzCisjOiBjb25maWcvdGMtZDEwdi5jOjE3MTAgY29uZmlnL3RjLWQzMHYuYzoxODUxIGNvbmZpZy90Yy1taXBzLmM6MzgwMAorIzogY29uZmlnL3RjLW1pcHMuYzo0OTM4IGNvbmZpZy90Yy1taXBzLmM6NTk0NiBjb25maWcvdGMtbWlwcy5jOjY1NzUKKyM6IGNvbmZpZy90Yy1tc3A0MzAuYzoxNDA5IGNvbmZpZy90Yy1wcGMuYzo1NTQ2IGNvbmZpZy90Yy12ODUwLmM6MjM3MwogIzogY29uZmlnL3RjLXhzdG9ybXkxNi5jOjQ4MwogbXNnaWQgImV4cHJlc3Npb24gdG9vIGNvbXBsZXgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjc2MworIzogY29uZmlnL3RjLWFybS5jOjc4OAogbXNnaWQgIkFSTSByZWdpc3RlciBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6NzY0IGNvbmZpZy90Yy1hcm0uYzozMTc0CisjOiBjb25maWcvdGMtYXJtLmM6Nzg5IGNvbmZpZy90Yy1hcm0uYzozNjAxCiBtc2dpZCAiYmFkIG9yIG1pc3NpbmcgY28tcHJvY2Vzc29yIG51bWJlciIKIG1zZ3N0ciAiIgogCiAjLiBJbiB0aGUgZmV3IGNhc2VzIHdoZXJlIHdlIG1pZ2h0IGJlIGFibGUgdG8gYWNjZXB0IHNvbWV0aGluZyBlbHNlCiAjLiB0aGlzIGVycm9yIGNhbiBiZSBvdmVycmlkZGVuLgotIzogY29uZmlnL3RjLWFybS5jOjc2NSBjb25maWcvdGMtYXJtLmM6MzIyOQorIzogY29uZmlnL3RjLWFybS5jOjc5MCBjb25maWcvdGMtYXJtLmM6MzY1NgogbXNnaWQgImNvLXByb2Nlc3NvciByZWdpc3RlciBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6NzY2CisjOiBjb25maWcvdGMtYXJtLmM6NzkxCiBtc2dpZCAiRlBBIHJlZ2lzdGVyIGV4cGVjdGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo3NjcKKyM6IGNvbmZpZy90Yy1hcm0uYzo3OTIKIG1zZ2lkICJWRlAgc2luZ2xlIHByZWNpc2lvbiByZWdpc3RlciBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6NzY4CisjOiBjb25maWcvdGMtYXJtLmM6NzkzCiBtc2dpZCAiVkZQIGRvdWJsZSBwcmVjaXNpb24gcmVnaXN0ZXIgZXhwZWN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjc2OQorIzogY29uZmlnL3RjLWFybS5jOjc5NAogbXNnaWQgIk1hdmVyaWNrIE1WRiByZWdpc3RlciBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6NzcwCisjOiBjb25maWcvdGMtYXJtLmM6Nzk1CiBtc2dpZCAiTWF2ZXJpY2sgTVZEIHJlZ2lzdGVyIGV4cGVjdGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo3NzEgY29uZmlnL3RjLWFybS5jOjc3MgorIzogY29uZmlnL3RjLWFybS5jOjc5NgogbXNnaWQgIk1hdmVyaWNrIE1WRlggcmVnaXN0ZXIgZXhwZWN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjc3MworIzogY29uZmlnL3RjLWFybS5jOjc5NworbXNnaWQgIk1hdmVyaWNrIE1WRFggcmVnaXN0ZXIgZXhwZWN0ZWQiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjc5OAogbXNnaWQgIk1hdmVyaWNrIE1WQVggcmVnaXN0ZXIgZXhwZWN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjc3NAorIzogY29uZmlnL3RjLWFybS5jOjc5OQogbXNnaWQgIk1hdmVyaWNrIERTUFNDIHJlZ2lzdGVyIGV4cGVjdGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo3NzUKKyM6IGNvbmZpZy90Yy1hcm0uYzo4MDAKIG1zZ2lkICJJbnRlbCBXaXJlbGVzcyBNTVggdGVjaG5vbG9neSByZWdpc3RlciBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MjMwOQorIzogY29uZmlnL3RjLWFybS5jOjI0ODUKIG1zZ2lkICJiYWQgYXJndW1lbnRzIHRvIGluc3RydWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoyMzEwCisjOiBjb25maWcvdGMtYXJtLmM6MjQ4NgogbXNnaWQgInIxNSBub3QgYWxsb3dlZCBoZXJlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoyMzExCisjOiBjb25maWcvdGMtYXJtLmM6MjQ4NwogbXNnaWQgImluc3RydWN0aW9uIGlzIG5vdCBjb25kaXRpb25hbCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MjMxMgorIzogY29uZmlnL3RjLWFybS5jOjI0ODgKIG1zZ2lkICJhY2MwIGV4cGVjdGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoyNTA1CisjOiBjb25maWcvdGMtYXJtLmM6MjY4NgogbXNnaWQgImxpdGVyYWwgcG9vbCBvdmVyZmxvdyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MjY0NworIzogY29uZmlnL3RjLWFybS5jOjMwMDAKIG1zZ2lkICJpbnZhbGlkIHN5bnRheCBmb3IgLnJlcSBkaXJlY3RpdmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjI3MjcKKyM6IGNvbmZpZy90Yy1hcm0uYzozMDQzCisjLCBjLWZvcm1hdAorbXNnaWQgInVucmVxOiBtaXNzaW5nIGhhc2ggZW50cnkgZm9yIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtYXJtLmM6MzA2MiBjb25maWcvdGMtYXJtLmM6MzA2NQorIywgYy1mb3JtYXQKK21zZ2lkICIudW5yZXE6IHVucmVjb2duaXplZCBzeW1ib2wgXCIlc1wiIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1hcm0uYzozMDY4Cittc2dpZCAiaW52YWxpZCBzeW50YXggZm9yIC51bnJlcSBkaXJlY3RpdmUiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjMxNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYWxpZ25tZW50IHRvbyBsYXJnZTogJWQgYXNzdW1lZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MjczMAorIzogY29uZmlnL3RjLWFybS5jOjMxNTUKIG1zZ2lkICJhbGlnbm1lbnQgbmVnYXRpdmUuIDAgYXNzdW1lZC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjI4MTQKKyM6IGNvbmZpZy90Yy1hcm0uYzozMjM5CiAjLCBjLWZvcm1hdAogbXNnaWQgImV4cGVjdGVkIGNvbW1hIGFmdGVyIG5hbWUgXCIlc1wiIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoyODY0IGNvbmZpZy90Yy1tMzJyLmM6NDIwCisjOiBjb25maWcvdGMtYXJtLmM6MzI4OSBjb25maWcvdGMtbTMyci5jOjU4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJzeW1ib2wgYCVzJyBhbHJlYWR5IGRlZmluZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjI4ODkKKyM6IGNvbmZpZy90Yy1hcm0uYzozMzE0CiBtc2dpZCAic2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVEhVTUIgb3Bjb2RlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MjkwMgorIzogY29uZmlnL3RjLWFybS5jOjMzMjgKIG1zZ2lkICJzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBBUk0gb3Bjb2RlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MjkxNAorIzogY29uZmlnL3RjLWFybS5jOjMzNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBpbnN0cnVjdGlvbiBzaXplIHNlbGVjdGVkICglZCkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjI5NDkKKyM6IGNvbmZpZy90Yy1hcm0uYzozMzc2CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb3BlcmFuZCB0byAuY29kZSBkaXJlY3RpdmUgKCVkKSAoZXhwZWN0aW5nIDE2IG9yIDMyKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6Mjk2MAorIzogY29uZmlnL3RjLWFybS5jOjMzODcKIG1zZ2lkICJnYXJiYWdlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiIKIG1zZ3N0ciAiIgogCiAjLiBJbiB0aGUgZmV3IGNhc2VzIHdoZXJlIHdlIG1pZ2h0IGJlIGFibGUgdG8gYWNjZXB0IHNvbWV0aGluZyBlbHNlCiAjLiB0aGlzIGVycm9yIGNhbiBiZSBvdmVycmlkZGVuLgotIzogY29uZmlnL3RjLWFybS5jOjMwMTAKKyM6IGNvbmZpZy90Yy1hcm0uYzozNDM3CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZ2lzdGVyIGV4cGVjdGVkLCBub3QgJyUuMTAwcyciCiBtc2dzdHIgIiIKIAogIy4gSW4gdGhlIGZldyBjYXNlcyB3aGVyZSB3ZSBtaWdodCBiZSBhYmxlIHRvIGFjY2VwdAogIy4gc29tZXRoaW5nIGVsc2UgdGhpcyBlcnJvciBjYW4gYmUgb3ZlcnJpZGRlbi4KLSM6IGNvbmZpZy90Yy1hcm0uYzozMDYxCisjOiBjb25maWcvdGMtYXJtLmM6MzQ4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnRlbCBXaXJlbGVzcyBNTVggdGVjaG5vbG9neSByZWdpc3RlciBleHBlY3RlZCwgbm90ICclLjEwMHMnIgogbXNnc3RyICIiCiAKICMuIEluIHRoZSBmZXcgY2FzZXMgd2hlcmUgd2UgbWlnaHQgYmUgYWJsZSB0byBhY2NlcHQKICMuIHNvbWV0aGluZyBlbHNlIHRoaXMgZXJyb3IgY2FuIGJlIG92ZXJyaWRkZW4uCi0jOiBjb25maWcvdGMtYXJtLmM6MzEzMworIzogY29uZmlnL3RjLWFybS5jOjM1NjAKIG1zZ2lkICJmbGFnIGZvciB7Y31wc3IgaW5zdHJ1Y3Rpb24gZXhwZWN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjMxNjcKKyM6IGNvbmZpZy90Yy1hcm0uYzozNTk0CiBtc2dpZCAiaWxsZWdhbCBjby1wcm9jZXNzb3IgbnVtYmVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzozMTk5IGNvbmZpZy90Yy1hcm0uYzo0Nzc4CisjOiBjb25maWcvdGMtYXJtLmM6MzYyNiBjb25maWcvdGMtYXJtLmM6NjI0OAogbXNnaWQgImJhZCBvciBtaXNzaW5nIGV4cHJlc3Npb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjMyMDUKKyM6IGNvbmZpZy90Yy1hcm0uYzozNjMyCiBtc2dpZCAiaW1tZWRpYXRlIGNvLXByb2Nlc3NvciBleHByZXNzaW9uIHRvbyBsYXJnZSIKIG1zZ3N0ciAiIgogCiAjLiBJbiB0aGUgZmV3IGNhc2VzIHdoZXJlIHdlIG1pZ2h0IGJlIGFibGUgdG8gYWNjZXB0IHNvbWV0aGluZyBlbHNlCiAjLiB0aGlzIGVycm9yIGNhbiBiZSBvdmVycmlkZGVuLgotIzogY29uZmlnL3RjLWFybS5jOjMyNTIKKyM6IGNvbmZpZy90Yy1hcm0uYzozNjc5CiBtc2dpZCAiZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIgZXhwZWN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjMyNjkgY29uZmlnL3RjLWFybS5jOjM0MTQKKyM6IGNvbmZpZy90Yy1hcm0uYzozNjk2IGNvbmZpZy90Yy1hcm0uYzozOTE1IGNvbmZpZy90Yy1hcm0uYzo1MDE1CisjOiBjb25maWcvdGMtYXJtLmM6NTEwMyBjb25maWcvdGMtYXJtLmM6NTM1OSBjb25maWcvdGMtYXJtLmM6NTQ2MworIzogY29uZmlnL3RjLWFybS5jOjU3NDgKIG1zZ2lkICJpbW1lZGlhdGUgZXhwcmVzc2lvbiBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MzI4NAorIzogY29uZmlnL3RjLWFybS5jOjM3MTEKIG1zZ2lkICJjby1wcm9jZXNzb3IgYWRkcmVzcyBtdXN0IGJlIHdvcmQgYWxpZ25lZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MzI5MCBjb25maWcvdGMtYXJtLmM6MzQyOQorIzogY29uZmlnL3RjLWFybS5jOjM3MTcgY29uZmlnL3RjLWFybS5jOjM5MzAKIG1zZ2lkICJvZmZzZXQgdG9vIGxhcmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzozMzM5IGNvbmZpZy90Yy1hcm0uYzozNDc3CisjOiBjb25maWcvdGMtYXJtLmM6Mzc3NworbXNnaWQgImNvbW1hIGV4cGVjdGVkIGFmdGVyIGNsb3Npbmcgc3F1YXJlIGJyYWNrZXQiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjM3OTIgY29uZmlnL3RjLWFybS5jOjM5NzgKIG1zZ2lkICJwYyBtYXkgbm90IGJlIHVzZWQgaW4gcG9zdC1pbmNyZW1lbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjMzNTUgY29uZmlnL3RjLWFybS5jOjM0OTMgY29uZmlnL3RjLWFybS5jOjM5MzgKLSM6IGNvbmZpZy90Yy1hcm0uYzo1MTk3IGNvbmZpZy90Yy1hcm0uYzo2MDY0IGNvbmZpZy90Yy1hcm0uYzo2Mzk4CisjOiBjb25maWcvdGMtYXJtLmM6MzgyMAorbXNnaWQgIidvcHRpb24nIGZpZWxkIHRvbyBsYXJnZSIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtYXJtLmM6MzgyOAorbXNnaWQgIid9JyBleHBlY3RlZCBhdCBlbmQgb2YgJ29wdGlvbicgZmllbGQiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjM4NDAKK21zZ2lkICJub24tY29uc3RhbnQgZXhwcmVzc2lvbnMgZm9yICdvcHRpb24nIGZpZWxkIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjM4NDYKK21zZ2lkICIjIG9yIHsgZXhwZWN0ZWQgYWZ0ZXIgY29tbWEiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjM4NTYgY29uZmlnL3RjLWFybS5jOjM5OTQgY29uZmlnL3RjLWFybS5jOjQ0MzUKKyM6IGNvbmZpZy90Yy1hcm0uYzo2NjQ0IGNvbmZpZy90Yy1hcm0uYzo3NTI5IGNvbmZpZy90Yy1hcm0uYzo3ODYxCiBtc2dpZCAicHJlLWluZGV4ZWQgZXhwcmVzc2lvbiBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MzM2OCBjb25maWcvdGMtYXJtLmM6MzUwNiBjb25maWcvdGMtYXJtLmM6Mzk1MQotIzogY29uZmlnL3RjLWFybS5jOjUyMDggY29uZmlnL3RjLWFybS5jOjYwNzYgY29uZmlnL3RjLWFybS5jOjY0MTAKLSM6IGNvbmZpZy90Yy1hcm0uYzo2Nzg0IGNvbmZpZy90Yy1hcm0uYzo5NDQ4IGNvbmZpZy90Yy1hcm0uYzo5NDYzCisjOiBjb25maWcvdGMtYXJtLmM6Mzg2OSBjb25maWcvdGMtYXJtLmM6NDAwNyBjb25maWcvdGMtYXJtLmM6NDQ0OAorIzogY29uZmlnL3RjLWFybS5jOjY2NTUgY29uZmlnL3RjLWFybS5jOjc1NDEgY29uZmlnL3RjLWFybS5jOjc4NzMKKyM6IGNvbmZpZy90Yy1hcm0uYzo4MjQzIGNvbmZpZy90Yy1hcm0uYzoxMDkwMSBjb25maWcvdGMtYXJtLmM6MTA5MTYKIG1zZ2lkICJtaXNzaW5nIF0iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjMzNzggY29uZmlnL3RjLWFybS5jOjM1MTYKKyM6IGNvbmZpZy90Yy1hcm0uYzozODc5IGNvbmZpZy90Yy1hcm0uYzo0MDE3CiBtc2dpZCAicGMgbWF5IG5vdCBiZSB1c2VkIHdpdGggd3JpdGUtYmFjayIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MzU2OAorIzogY29uZmlnL3RjLWFybS5jOjQwNjgKIG1zZ2lkICJjb21tYSBleHBlY3RlZCBhZnRlciByZWdpc3RlciBuYW1lIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzozNTg3CisjOiBjb25maWcvdGMtYXJtLmM6NDA4NwogbXNnaWQgIkNQU1Igb3IgU1BTUiBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MzYxMworIzogY29uZmlnL3RjLWFybS5jOjQxMTMKIG1zZ2lkICJjb21tYSBtaXNzaW5nIGFmdGVyIHBzciBmbGFncyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MzYyOSBjb25maWcvdGMtYXJtLmM6MzYzOQorIzogY29uZmlnL3RjLWFybS5jOjQxMjkgY29uZmlnL3RjLWFybS5jOjQxMzkKIG1zZ2lkICJvbmx5IGEgcmVnaXN0ZXIgb3IgaW1tZWRpYXRlIHZhbHVlIGNhbiBmb2xsb3cgYSBwc3IgZmxhZyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MzY1MAorIzogY29uZmlnL3RjLWFybS5jOjQxNTAKIG1zZ2lkICJpbW1lZGlhdGUgdmFsdWUgY2Fubm90IGJlIHVzZWQgdG8gc2V0IHRoaXMgZmllbGQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjM2NjggY29uZmlnL3RjLWFybS5jOjU0MjQgY29uZmlnL3RjLWFybS5jOjU3MDQKLSM6IGNvbmZpZy90Yy1hcm0uYzo1NzI0IGNvbmZpZy90Yy1pOTYwLmM6MTkzNQorIzogY29uZmlnL3RjLWFybS5jOjQxNjggY29uZmlnL3RjLWFybS5jOjU3NjkgY29uZmlnL3RjLWFybS5jOjY4NzEKKyM6IGNvbmZpZy90Yy1hcm0uYzo3MTcwIGNvbmZpZy90Yy1hcm0uYzo3MTkwIGNvbmZpZy90Yy1pOTYwLmM6MTkzNQogbXNnaWQgImludmFsaWQgY29uc3RhbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjM3MTYKKyM6IGNvbmZpZy90Yy1hcm0uYzo0MjE2CiBtc2dpZCAicmRoaSwgcmRsbyBhbmQgcm0gbXVzdCBhbGwgYmUgZGlmZmVyZW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzozNzcwCisjOiBjb25maWcvdGMtYXJtLmM6NDI2OQogbXNnaWQgInJkIGFuZCBybSBzaG91bGQgYmUgZGlmZmVyZW50IGluIG11bCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MzgyNAorIzogY29uZmlnL3RjLWFybS5jOjQzMjIKIG1zZ2lkICJyZCBhbmQgcm0gc2hvdWxkIGJlIGRpZmZlcmVudCBpbiBtbGEiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjM4NzIKKyM6IGNvbmZpZy90Yy1hcm0uYzo0MzY5CiAjLCBjLWZvcm1hdAogbXNnaWQgImFjYzAgZXhwZWN0ZWQsIG5vdCAnJS4xMDBzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6NDA1MAorIzogY29uZmlnL3RjLWFybS5jOjQ1NDcKIG1zZ2lkICJyZGhpIGFuZCByZGxvIG11c3QgYmUgZGlmZmVyZW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo0MTU4CisjOiBjb25maWcvdGMtYXJtLmM6NDY1NQogbXNnaWQgIldhcm5pbmc6IGluc3RydWN0aW9uIHVucHJlZGljdGFibGUgd2hlbiB1c2luZyByMTUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjQzNzMKKyM6IGNvbmZpZy90Yy1hcm0uYzo0ODcwCiBtc2dpZCAidXNlIG9mIHIxNSBpbiBieGogaXMgbm90IHJlYWxseSB1c2VmdWwiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjQ0MDAgY29uZmlnL3RjLWFybS5jOjQ1ODUgY29uZmlnL3RjLWFybS5jOjU0NDUgZXhwci5jOjEzMTgKLSM6IHJlYWQuYzoyMjA2CisjOiBjb25maWcvdGMtYXJtLmM6NDkzMSBjb25maWcvdGMtYXJtLmM6NDk1NAorbXNnaWQgIlJkIGVxdWFsIHRvIFJtIG9yIFJuIHlpZWxkcyB1bnByZWRpY3RhYmxlIHJlc3VsdHMiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjUwMjAgY29uZmlnL3RjLWFybS5jOjUxMDggY29uZmlnL3RjLWFybS5jOjUzNjUKKyM6IGNvbmZpZy90Yy1hcm0uYzo1NDY5IGNvbmZpZy90Yy1hcm0uYzo1NzU1IGNvbmZpZy90Yy1hcm0uYzo1ODQxCisjOiBjb25maWcvdGMtYXJtLmM6NjAyNiBjb25maWcvdGMtYXJtLmM6Njg5MiBleHByLmM6MTMxMCByZWFkLmM6MjA5NwogbXNnaWQgImJhZCBleHByZXNzaW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo0NDA5IGNvbmZpZy90Yy1hcm0uYzo0NTk0IGNvbmZpZy90Yy1hcm0uYzo0Nzg2Ci0jOiBjb25maWcvdGMtYXJtLmM6ODM4OSBjb25maWcvdGMtYXJtLmM6ODQyNCBjb25maWcvdGMtYXJtLmM6ODQzNAotIzogY29uZmlnL3RjLXo4ay5jOjExNjEgY29uZmlnL3RjLXo4ay5jOjExNzMKLW1zZ2lkICJpbW1lZGlhdGUgdmFsdWUgb3V0IG9mIHJhbmdlIgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy90Yy1hcm0uYzo0ODMzCi1tc2dpZCAib25seSByMTUgYWxsb3dlZCBoZXJlIgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy90Yy1hcm0uYzo1MTYwCi1tc2dpZCAiJ1snIGV4cGVjdGVkIGFmdGVyIFBMRCBtbmVtb25pYyIKLW1zZ3N0ciAiIgotCi0jOiBjb25maWcvdGMtYXJtLmM6NTE4MgotbXNnaWQgInBvc3QtaW5kZXhlZCBleHByZXNzaW9uIHVzZWQgaW4gcHJlbG9hZCBpbnN0cnVjdGlvbiIKLW1zZ3N0ciAiIgotCi0jOiBjb25maWcvdGMtYXJtLmM6NTE4NyBjb25maWcvdGMtYXJtLmM6NTIxNwotbXNnaWQgIndyaXRlYmFjayB1c2VkIGluIHByZWxvYWQgaW5zdHJ1Y3Rpb24iCi1tc2dzdHIgIiIKLQotIzogY29uZmlnL3RjLWFybS5jOjUyNTkKLW1zZ2lkICJkZXN0aW5hdGlvbiByZWdpc3RlciBtdXN0IGJlIGV2ZW4iCi1tc2dzdHIgIiIKLQotIzogY29uZmlnL3RjLWFybS5jOjUyNjUKLW1zZ2lkICJyMTQgbm90IGFsbG93ZWQgaGVyZSIKLW1zZ3N0ciAiIgotCi0jOiBjb25maWcvdGMtYXJtLmM6NTI3MgotbXNnaWQgInByZS9wb3N0LWluZGV4aW5nIHVzZWQgd2hlbiBtb2RpZmllZCBhZGRyZXNzIHJlZ2lzdGVyIGlzIGRlc3RpbmF0aW9uIgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy90Yy1hcm0uYzo1MjgyCi1tc2dpZCAibGRyZCBkZXN0aW5hdGlvbiByZWdpc3RlcnMgbXVzdCBub3Qgb3ZlcmxhcCBpbmRleCByZWdpc3RlciIKLW1zZ3N0ciAiIgotCi0jOiBjb25maWcvdGMtYXJtLmM6NTQwOAotbXNnaWQgImJhZF9zZWdtZW50IgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy90Yy1hcm0uYzo1NDY4IGNvbmZpZy90Yy1hcm0uYzo1NDc5Ci1tc2dpZCAic2hpZnQgZXhwcmVzc2lvbiBleHBlY3RlZCIKLW1zZ3N0ciAiIgotCi0jOiBjb25maWcvdGMtYXJtLmM6NTUwMwotbXNnaWQgInNoaWZ0IHJlcXVpcmVzIHJlZ2lzdGVyIG9yICNleHByZXNzaW9uIgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy90Yy1hcm0uYzo1NTA0Ci1tc2dpZCAic2hpZnQgcmVxdWlyZXMgI2V4cHJlc3Npb24iCi1tc2dzdHIgIiIKLQotIzogY29uZmlnL3RjLWFybS5jOjU1MzQKLW1zZ2lkICJzaGlmdCBvZiAwIGlnbm9yZWQuIgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy90Yy1hcm0uYzo1NTQwCi1tc2dpZCAiaW52YWxpZCBpbW1lZGlhdGUgc2hpZnQiCi1tc2dzdHIgIiIKLQotIzogY29uZmlnL3RjLWFybS5jOjU2OTUgY29uZmlnL3RjLWFybS5jOjYxMTIgY29uZmlnL3RjLWFybS5jOjY0NDcKLSM6IGNvbmZpZy90Yy1hcm0uYzo3MDgxIGNvbmZpZy90Yy12ODUwLmM6MTkwNyBjb25maWcvdGMtdjg1MC5jOjE5MjgKKyM6IGNvbmZpZy90Yy1hcm0uYzo1MDI1IGNvbmZpZy90Yy1hcm0uYzo1MTEzIGNvbmZpZy90Yy1hcm0uYzo1MzcxCisjOiBjb25maWcvdGMtYXJtLmM6NTQ3NSBjb25maWcvdGMtYXJtLmM6NTc2MSBjb25maWcvdGMtYXJtLmM6NzE2MQorIzogY29uZmlnL3RjLWFybS5jOjc1NzcgY29uZmlnL3RjLWFybS5jOjc5MTAgY29uZmlnL3RjLWFybS5jOjg1MzQKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTkyNCBjb25maWcvdGMtdjg1MC5jOjE5NDUKIG1zZ2lkICJjb25zdGFudCBleHByZXNzaW9uIGV4cGVjdGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo1NzM3CisjOiBjb25maWcvdGMtYXJtLmM6NTAzMSBjb25maWcvdGMtYXJtLmM6NTExOSBjb25maWcvdGMtYXJtLmM6NTg1MAorIzogY29uZmlnL3RjLWFybS5jOjYwMzUgY29uZmlnL3RjLWFybS5jOjYyNTYgY29uZmlnL3RjLWFybS5jOjk4NDIKKyM6IGNvbmZpZy90Yy1hcm0uYzo5ODc3IGNvbmZpZy90Yy1hcm0uYzo5ODg3IGNvbmZpZy90Yy16OGsuYzoxMTI5CisjOiBjb25maWcvdGMtejhrLmM6MTE0MQorbXNnaWQgImltbWVkaWF0ZSB2YWx1ZSBvdXQgb2YgcmFuZ2UiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjUyODUKK21zZ2lkICJtaXNzaW5nIGVuZGlhbiBzcGVjaWZpZXIiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjUyOTQKK21zZ2lkICJ2YWxpZCBlbmRpYW4gc3BlY2lmaWVycyBhcmUgYmUgb3IgbGUiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjUzNDkgY29uZmlnL3RjLWFybS5jOjU0NTMKK21zZ2lkICJtaXNzaW5nIHJvdGF0aW9uIGZpZWxkIGFmdGVyIGNvbW1hIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1hcm0uYzo1MzkzIGNvbmZpZy90Yy1hcm0uYzo1NDk4Cittc2dpZCAicm90YXRpb24gY2FuIGJlIDgsIDE2LCAyNCBvciAwIHdoZW4gZmllbGQgaXMgb21taXRlZCIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtYXJtLmM6NTgxMAorbXNnaWQgInVucmVjb2duaXplZCBmbGFnIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1hcm0uYzo1ODE2Cittc2dpZCAibm8gJ2EnLCAnaScsIG9yICdmJyBmbGFncyBmb3IgJ2NwcyciCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjYyODkgY29uZmlnL3RjLWFybS5jOjY0NDgKK21zZ2lkICJub24td29yZCBzaXplIG5vdCBzdXBwb3J0ZWQgd2l0aCBjb250cm9sIHJlZ2lzdGVyIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1hcm0uYzo2MzA0Cittc2dpZCAib25seSByMTUgYWxsb3dlZCBoZXJlIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1hcm0uYzo2NDQ2Cittc2dpZCAiY29uZGl0aW9uYWwgZXhlY3V0aW9uIG5vdCBzdXBwb3J0ZWQgd2l0aCBjb250cm9sIHJlZ2lzdGVyIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1hcm0uYzo2NjA3Cittc2dpZCAiJ1snIGV4cGVjdGVkIGFmdGVyIFBMRCBtbmVtb25pYyIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtYXJtLmM6NjYyOQorbXNnaWQgInBvc3QtaW5kZXhlZCBleHByZXNzaW9uIHVzZWQgaW4gcHJlbG9hZCBpbnN0cnVjdGlvbiIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtYXJtLmM6NjYzNCBjb25maWcvdGMtYXJtLmM6NjY2NAorbXNnaWQgIndyaXRlYmFjayB1c2VkIGluIHByZWxvYWQgaW5zdHJ1Y3Rpb24iCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjY3MDYKK21zZ2lkICJkZXN0aW5hdGlvbiByZWdpc3RlciBtdXN0IGJlIGV2ZW4iCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjY3MTIKK21zZ2lkICJyMTQgbm90IGFsbG93ZWQgaGVyZSIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtYXJtLmM6NjcxOQorbXNnaWQgInByZS9wb3N0LWluZGV4aW5nIHVzZWQgd2hlbiBtb2RpZmllZCBhZGRyZXNzIHJlZ2lzdGVyIGlzIGRlc3RpbmF0aW9uIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1hcm0uYzo2NzI5Cittc2dpZCAibGRyZCBkZXN0aW5hdGlvbiByZWdpc3RlcnMgbXVzdCBub3Qgb3ZlcmxhcCBpbmRleCByZWdpc3RlciIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtYXJtLmM6Njg1NQorbXNnaWQgImJhZF9zZWdtZW50IgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1hcm0uYzo2OTE0IGNvbmZpZy90Yy1hcm0uYzo2OTI1Cittc2dpZCAic2hpZnQgZXhwcmVzc2lvbiBleHBlY3RlZCIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtYXJtLmM6NjkzNQorbXNnaWQgIidMU0wnIG9yICdBU1InIHJlcXVpcmVkIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1hcm0uYzo2OTQxCittc2dpZCAiJ0xTTCcgcmVxdWlyZWQiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjY5NDcKK21zZ2lkICInQVNSJyByZXF1aXJlZCIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtYXJtLmM6Njk2OQorbXNnaWQgInNoaWZ0IHJlcXVpcmVzIHJlZ2lzdGVyIG9yICNleHByZXNzaW9uIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1hcm0uYzo2OTcwCittc2dpZCAic2hpZnQgcmVxdWlyZXMgI2V4cHJlc3Npb24iCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjcwMDAKK21zZ2lkICJzaGlmdCBvZiAwIGlnbm9yZWQuIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1hcm0uYzo3MDA2Cittc2dpZCAiaW52YWxpZCBpbW1lZGlhdGUgc2hpZnQiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjcyMDMKIG1zZ2lkICJyZWdpc3RlciBvciBzaGlmdCBleHByZXNzaW9uIGV4cGVjdGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo1NzkwCisjOiBjb25maWcvdGMtYXJtLmM6NzI1NgogbXNnaWQgImludmFsaWQgZmxvYXRpbmcgcG9pbnQgaW1tZWRpYXRlIGV4cHJlc3Npb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjU3OTQKKyM6IGNvbmZpZy90Yy1hcm0uYzo3MjYwCiBtc2dpZCAiZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIgb3IgaW1tZWRpYXRlIGV4cHJlc3Npb24gZXhwZWN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjU5NDggY29uZmlnL3RjLWFybS5jOjYyNzgKKyM6IGNvbmZpZy90Yy1hcm0uYzo3NDEzIGNvbmZpZy90Yy1hcm0uYzo3NzQxCiBtc2dpZCAiYWRkcmVzcyBvZmZzZXQgdG9vIGxhcmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo2MDA2IGNvbmZpZy90Yy1hcm0uYzo2MTk2IGNvbmZpZy90Yy1hcm0uYzo2MzM4CisjOiBjb25maWcvdGMtYXJtLmM6NzQ3MSBjb25maWcvdGMtYXJtLmM6NzY2MCBjb25maWcvdGMtYXJtLmM6NzgwMQogbXNnaWQgImFkZHJlc3MgZXhwZWN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjYwMzYgY29uZmlnL3RjLWFybS5jOjYwNDggY29uZmlnL3RjLWFybS5jOjYwODUKLSM6IGNvbmZpZy90Yy1hcm0uYzo2MjE0IGNvbmZpZy90Yy1hcm0uYzo2MzY4IGNvbmZpZy90Yy1hcm0uYzo2MzgyCi0jOiBjb25maWcvdGMtYXJtLmM6NjQxOQorIzogY29uZmlnL3RjLWFybS5jOjc1MDEgY29uZmlnL3RjLWFybS5jOjc1MTMgY29uZmlnL3RjLWFybS5jOjc1NTAKKyM6IGNvbmZpZy90Yy1hcm0uYzo3Njc4IGNvbmZpZy90Yy1hcm0uYzo3ODMxIGNvbmZpZy90Yy1hcm0uYzo3ODQ1CisjOiBjb25maWcvdGMtYXJtLmM6Nzg4MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyByZWdpc3RlciBzYW1lIGFzIHdyaXRlLWJhY2sgYmFzZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6NjAzOCBjb25maWcvdGMtYXJtLmM6NjA1MCBjb25maWcvdGMtYXJtLmM6NjA4NwotIzogY29uZmlnL3RjLWFybS5jOjYyMTYgY29uZmlnL3RjLWFybS5jOjYzNzAgY29uZmlnL3RjLWFybS5jOjYzODQKLSM6IGNvbmZpZy90Yy1hcm0uYzo2NDIxCisjOiBjb25maWcvdGMtYXJtLmM6NzUwMyBjb25maWcvdGMtYXJtLmM6NzUxNSBjb25maWcvdGMtYXJtLmM6NzU1MgorIzogY29uZmlnL3RjLWFybS5jOjc2ODAgY29uZmlnL3RjLWFybS5jOjc4MzMgY29uZmlnL3RjLWFybS5jOjc4NDcKKyM6IGNvbmZpZy90Yy1hcm0uYzo3ODg0CiBtc2dpZCAiZGVzdGluYXRpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjYwMzggY29uZmlnL3RjLWFybS5jOjYwNTAgY29uZmlnL3RjLWFybS5jOjYwODcKLSM6IGNvbmZpZy90Yy1hcm0uYzo2MjE2IGNvbmZpZy90Yy1hcm0uYzo2MzcwIGNvbmZpZy90Yy1hcm0uYzo2Mzg0Ci0jOiBjb25maWcvdGMtYXJtLmM6NjQyMQorIzogY29uZmlnL3RjLWFybS5jOjc1MDMgY29uZmlnL3RjLWFybS5jOjc1MTUgY29uZmlnL3RjLWFybS5jOjc1NTIKKyM6IGNvbmZpZy90Yy1hcm0uYzo3NjgwIGNvbmZpZy90Yy1hcm0uYzo3ODMzIGNvbmZpZy90Yy1hcm0uYzo3ODQ3CisjOiBjb25maWcvdGMtYXJtLmM6Nzg4NAogbXNnaWQgInNvdXJjZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6NjA5NyBjb25maWcvdGMtYXJtLmM6NjQzMSBjb25maWcvdGMtYXJtLmM6ODY5NQorIzogY29uZmlnL3RjLWFybS5jOjc1NjIgY29uZmlnL3RjLWFybS5jOjc4OTQgY29uZmlnL3RjLWFybS5jOjEwMTQ4CiBtc2dpZCAiaW52YWxpZCBwc2V1ZG8gb3BlcmF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo2MTQ5IGNvbmZpZy90Yy1hcm0uYzo2NDgyCisjOiBjb25maWcvdGMtYXJtLmM6NzYxNCBjb25maWcvdGMtYXJtLmM6Nzk0NQogbXNnaWQgImxpdGVyYWwgcG9vbCBpbnNlcnRpb24gZmFpbGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo2MjQ0IGNvbmZpZy90Yy1hcm0uYzo2MjUwCisjOiBjb25maWcvdGMtYXJtLmM6NzcwOCBjb25maWcvdGMtYXJtLmM6NzcxNAogbXNnaWQgInBvc3QtaW5kZXhlZCBleHByZXNzaW9uIGV4cGVjdGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo2NTQ4CisjOiBjb25maWcvdGMtYXJtLmM6ODAxMAogbXNnaWQgImJhZCByYW5nZSBpbiByZWdpc3RlciBsaXN0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo2NTU2IGNvbmZpZy90Yy1hcm0uYzo2NTY1IGNvbmZpZy90Yy1hcm0uYzo2NjA3CisjOiBjb25maWcvdGMtYXJtLmM6ODAxOCBjb25maWcvdGMtYXJtLmM6ODAyNyBjb25maWcvdGMtYXJtLmM6ODA2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nOiBkdXBsaWNhdGVkIHJlZ2lzdGVyIChyJWQpIGluIHJlZ2lzdGVyIGxpc3QiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjY1NjgKKyM6IGNvbmZpZy90Yy1hcm0uYzo4MDMwCiBtc2dpZCAiV2FybmluZzogcmVnaXN0ZXIgcmFuZ2Ugbm90IGluIGFzY2VuZGluZyBvcmRlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6NjU4MAorIzogY29uZmlnL3RjLWFybS5jOjgwNDIKIG1zZ2lkICJtaXNzaW5nIGB9JyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6NjU5NgorIzogY29uZmlnL3RjLWFybS5jOjgwNTgKIG1zZ2lkICJpbnZhbGlkIHJlZ2lzdGVyIG1hc2siCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjY2NTUKKyM6IGNvbmZpZy90Yy1hcm0uYzo4MTE3CiBtc2dpZCAicjE1IG5vdCBhbGxvd2VkIGFzIGJhc2UgcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjY2ODkgY29uZmlnL3RjLWFybS5jOjY2OTgKKyM6IGNvbmZpZy90Yy1hcm0uYzo4MTUxIGNvbmZpZy90Yy1hcm0uYzo4MTYwCiBtc2dpZCAid3JpdGViYWNrIG9mIGJhc2UgcmVnaXN0ZXIgaXMgVU5QUkVESUNUQUJMRSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6NjY5MgorIzogY29uZmlnL3RjLWFybS5jOjgxNTQKIG1zZ2lkICJ3cml0ZWJhY2sgb2YgYmFzZSByZWdpc3RlciB3aGVuIGluIHJlZ2lzdGVyIGxpc3QgaXMgVU5QUkVESUNUQUJMRSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6NjcwMgorIzogY29uZmlnL3RjLWFybS5jOjgxNjQKIG1zZ2lkICJpZiB3cml0ZWJhY2sgcmVnaXN0ZXIgaXMgaW4gbGlzdCwgaXQgbXVzdCBiZSB0aGUgbG93ZXN0IHJlZyBpbiB0aGUgbGlzdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6Njc0NCBjb25maWcvdGMtYXJtLmM6Njc1OAorIzogY29uZmlnL3RjLWFybS5jOjgyMDMgY29uZmlnL3RjLWFybS5jOjgyMTcKIG1zZ2lkICJyMTUgbm90IGFsbG93ZWQgaW4gc3dhcCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6Njg1MworIzogY29uZmlnL3RjLWFybS5jOjgzMTAKIG1zZ2lkICJ1c2Ugb2YgcjE1IGluIGJ4IGluIEFSTSBtb2RlIGlzIG5vdCByZWFsbHkgdXNlZnVsIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo3MDg3CisjOiBjb25maWcvdGMtYXJtLmM6ODU0MAogbXNnaWQgImNvbnN0YW50IHZhbHVlIHJlcXVpcmVkIGZvciBudW1iZXIgb2YgcmVnaXN0ZXJzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo3MDk1CisjOiBjb25maWcvdGMtYXJtLmM6ODU0OAogbXNnaWQgIm51bWJlciBvZiByZWdpc3RlcnMgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWzE6NF0iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjcxNTYKKyM6IGNvbmZpZy90Yy1hcm0uYzo4NjA5CiBtc2dpZCAicjE1IG5vdCBhbGxvd2VkIGFzIGJhc2UgcmVnaXN0ZXIgd2l0aCB3cml0ZS1iYWNrIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo3NTM4CisjOiBjb25maWcvdGMtYXJtLmM6ODk3OSBjb25maWcvdGMtYXJtLmM6OTAxNQogbXNnaWQgIm9ubHkgdHdvIGNvbnNlY3V0aXZlIFZGUCBTUCByZWdpc3RlcnMgYWxsb3dlZCBoZXJlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo3NzA2CisjOiBjb25maWcvdGMtYXJtLmM6OTE2NwogbXNnaWQgIlZGUCBzeXN0ZW0gcmVnaXN0ZXIgZXhwZWN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjc4NDQgY29uZmlnL3RjLWFybS5jOjc4ODMgY29uZmlnL3RjLWFybS5jOjc4OTYKLSM6IGNvbmZpZy90Yy1hcm0uYzo3OTU3IGNvbmZpZy90Yy1hcm0uYzo3OTk2IGNvbmZpZy90Yy1hcm0uYzo4MDA5Ci0jOiBjb25maWcvdGMtaDgzMDAuYzoxMDM1IGNvbmZpZy90Yy1taXBzLmM6OTcyMyBjb25maWcvdGMtbWlwcy5jOjk3NTMKKyM6IGNvbmZpZy90Yy1hcm0uYzo5MzAxIGNvbmZpZy90Yy1hcm0uYzo5MzQwIGNvbmZpZy90Yy1hcm0uYzo5MzUzCisjOiBjb25maWcvdGMtYXJtLmM6OTQxNCBjb25maWcvdGMtYXJtLmM6OTQ1MyBjb25maWcvdGMtYXJtLmM6OTQ2NgorIzogY29uZmlnL3RjLWg4MzAwLmM6MTAwOSBjb25maWcvdGMtbWlwcy5jOjk3MTEgY29uZmlnL3RjLW1pcHMuYzo5NzQxCiBtc2dpZCAiaW52YWxpZCByZWdpc3RlciBsaXN0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo3ODUwIGNvbmZpZy90Yy1hcm0uYzo3OTYzCisjOiBjb25maWcvdGMtYXJtLmM6OTMwNyBjb25maWcvdGMtYXJtLmM6OTQyMAogbXNnaWQgInJlZ2lzdGVyIGxpc3Qgbm90IGluIGFzY2VuZGluZyBvcmRlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6Nzg3NSBjb25maWcvdGMtYXJtLmM6Nzk4OAorIzogY29uZmlnL3RjLWFybS5jOjkzMzIgY29uZmlnL3RjLWFybS5jOjk0NDUKIG1zZ2lkICJyZWdpc3RlciByYW5nZSBub3QgaW4gYXNjZW5kaW5nIG9yZGVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo3OTEzIGNvbmZpZy90Yy1hcm0uYzo4MDI2CisjOiBjb25maWcvdGMtYXJtLmM6OTM3MCBjb25maWcvdGMtYXJtLmM6OTQ4MwogbXNnaWQgIm5vbi1jb250aWd1b3VzIHJlZ2lzdGVyIHJhbmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo4MDU2IGNvbmZpZy90Yy1hcm0uYzo4MDkzCisjOiBjb25maWcvdGMtYXJtLmM6OTUxMyBjb25maWcvdGMtYXJtLmM6OTU1MAogbXNnaWQgInRoaXMgYWRkcmVzc2luZyBtb2RlIHJlcXVpcmVzIGJhc2UtcmVnaXN0ZXIgd3JpdGViYWNrIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo4MjUzCisjOiBjb25maWcvdGMtYXJtLmM6OTcwNgogbXNnaWQgImxvIHJlZ2lzdGVyIHJlcXVpcmVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo4MjYxCisjOiBjb25maWcvdGMtYXJtLmM6OTcxNAogbXNnaWQgImhpIHJlZ2lzdGVyIHJlcXVpcmVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo4MzMxIGNvbmZpZy90Yy1hcm0uYzo5NTM3CisjOiBjb25maWcvdGMtYXJtLmM6OTc4NCBjb25maWcvdGMtYXJtLmM6MTA5ODgKIG1zZ2lkICJkZXN0IGFuZCBzb3VyY2UxIG11c3QgYmUgdGhlIHNhbWUgcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjgzMzgKKyM6IGNvbmZpZy90Yy1hcm0uYzo5NzkxCiBtc2dpZCAic3VidHJhY3QgdmFsaWQgb25seSBvbiBsbyByZWdzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo4MzYyCisjOiBjb25maWcvdGMtYXJtLmM6OTgxNQogbXNnaWQgImludmFsaWQgSGkgcmVnaXN0ZXIgd2l0aCBpbW1lZGlhdGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjg0MDIKKyM6IGNvbmZpZy90Yy1hcm0uYzo5ODU1CiBtc2dpZCAiaW52YWxpZCBpbW1lZGlhdGUgdmFsdWUgZm9yIHN0YWNrIGFkanVzdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6ODQxMworIzogY29uZmlnL3RjLWFybS5jOjk4NjYKIG1zZ2lkICJpbnZhbGlkIGltbWVkaWF0ZSBmb3IgYWRkcmVzcyBjYWxjdWxhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6ODUwMAorIzogY29uZmlnL3RjLWFybS5jOjk5NTMKIG1zZ2lkICJzb3VyY2UxIGFuZCBkZXN0IG11c3QgYmUgc2FtZSByZWdpc3RlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6ODUzNAorIzogY29uZmlnL3RjLWFybS5jOjk5ODcKIG1zZ2lkICJpbnZhbGlkIGltbWVkaWF0ZSBmb3Igc2hpZnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjg2MTMKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMDA2NgogbXNnaWQgIm9ubHkgbG8gcmVncyBhbGxvd2VkIHdpdGggaW1tZWRpYXRlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo4NjMyCisjOiBjb25maWcvdGMtYXJtLmM6MTAwODUKIG1zZ2lkICJpbnZhbGlkIGltbWVkaWF0ZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6ODY4NgorIzogY29uZmlnL3RjLWFybS5jOjEwMTM5CiBtc2dpZCAiZXhwZWN0ZWQgJ10nIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo4NzU5CisjOiBjb25maWcvdGMtYXJtLmM6MTAyMTIKIG1zZ2lkICJieXRlIG9yIGhhbGZ3b3JkIG5vdCB2YWxpZCBmb3IgYmFzZSByZWdpc3RlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6ODc2NAorIzogY29uZmlnL3RjLWFybS5jOjEwMjE3CiBtc2dpZCAicjE1IGJhc2VkIHN0b3JlIG5vdCBhbGxvd2VkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo4NzY5CisjOiBjb25maWcvdGMtYXJtLmM6MTAyMjIKIG1zZ2lkICJpbnZhbGlkIGJhc2UgcmVnaXN0ZXIgZm9yIHJlZ2lzdGVyIG9mZnNldCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6ODc4NyBjb25maWcvdGMtYXJtLmM6ODgyMgorIzogY29uZmlnL3RjLWFybS5jOjEwMjQwIGNvbmZpZy90Yy1hcm0uYzoxMDI3NQogbXNnaWQgImludmFsaWQgb2Zmc2V0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo4Nzk4CisjOiBjb25maWcvdGMtYXJtLmM6MTAyNTEKIG1zZ2lkICJpbnZhbGlkIGJhc2UgcmVnaXN0ZXIgaW4gbG9hZC9zdG9yZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6OTM0MQorIzogY29uZmlnL3RjLWFybS5jOjEwNzk0CiBtc2dpZCAiZXhwZWN0aW5nIGltbWVkaWF0ZSwgN2JpdCBvcGVyYW5kIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo5MzU2CisjOiBjb25maWcvdGMtYXJtLmM6MTA4MDkKIG1zZ2lkICJpbW1lZGlhdGUgb3V0IG9mIHJhbmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzo5Mzk5CisjOiBjb25maWcvdGMtYXJtLmM6MTA4NTIKIG1zZ2lkICJvZmZzZXQgZXhwZWN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjk0MDggY29uZmlnL3RjLXBqLmM6NTM3IGNvbmZpZy90Yy1zaC5jOjM1OTMKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMDg2MSBjb25maWcvdGMtcGouYzo1MzcgY29uZmlnL3RjLXNoLmM6Mzg5MgogbXNnaWQgIm9mZnNldCBvdXQgb2YgcmFuZ2UiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjk1NDUKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMDk5NgogbXNnaWQgIlJzIGFuZCBSZCBtdXN0IGJlIGRpZmZlcmVudCBpbiBNVUwiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjk2ODkKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMTE0MAogbXNnaWQgIiIKICJpbnNlcnRlZCBtaXNzaW5nICchJzogbG9hZC9zdG9yZSBtdWx0aXBsZSBhbHdheXMgd3JpdGVzIGJhY2sgYmFzZSByZWdpc3RlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6OTcxMQorIzogY29uZmlnL3RjLWFybS5jOjExMTYyCiBtc2dpZCAib25seSBsby1yZWdzIHZhbGlkIGluIGxvYWQvc3RvcmUgbXVsdGlwbGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjk3NTcKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMTIwOAogbXNnaWQgInN5bnRheDogbGRyc1tiXSBSZCwgW1JiLCBSb10iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjk4MjEKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMTI3MgogbXNnaWQgImludmFsaWQgcmVnaXN0ZXIgbGlzdCB0byBwdXNoL3BvcCBpbnN0cnVjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6OTkzMyBjb25maWcvdGMtYXJtLmM6MTAxNTkKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMTM4MyBjb25maWcvdGMtYXJtLmM6MTE2MjEKIG1zZ2lkICJ2aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjEwMDE0CisjOiBjb25maWcvdGMtYXJtLmM6MTE0MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmFpbGVkIHRvIGNyZWF0ZSBhbiBhbGlhcyBmb3IgJXMsIHJlYXNvbjogJXMiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjExNDczCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZ2lzdGVyICclcycgZG9lcyBub3QgZXhpc3RcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTAwMTgKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMTQ3NwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiaWdub3JpbmcgcmVkZWZpbml0aW9uIG9mIHJlZ2lzdGVyIGFsaWFzICclcycgdG8gbm9uLWV4aXN0YW50IHJlZ2lzdGVyICclcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjEwMDI3CisjOiBjb25maWcvdGMtYXJtLmM6MTE0ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiaWdub3JpbmcgcmVkZWZpbml0aW9uIG9mIHJlZ2lzdGVyIGFsaWFzICclcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjEwMDMzCisjOiBjb25maWcvdGMtYXJtLmM6MTE0OTIKIG1zZ2lkICJpZ25vcmluZyBpbmNvbXBsZXRlIC5yZXEgcHNldXNvIG9wIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMDE4MworIzogY29uZmlnL3RjLWFybS5jOjExNjQ1CiBtc2dpZCAidXNlIG9mIG9sZCBhbmQgbmV3LXN0eWxlIG9wdGlvbnMgdG8gc2V0IENQVSB0eXBlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMDE5MworIzogY29uZmlnL3RjLWFybS5jOjExNjU1CiBtc2dpZCAidXNlIG9mIG9sZCBhbmQgbmV3LXN0eWxlIG9wdGlvbnMgdG8gc2V0IEZQVSB0eXBlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMDQ3MworIzogY29uZmlnL3RjLWFybS5jOjExNzExCittc2dpZCAiaGFyZC1mbG9hdCBjb25mbGljdHMgd2l0aCBzcGVjaWZpZWQgZnB1IgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMTk0OQogbXNnaWQgImJhZCBjYWxsIHRvIE1EX0FUT0YoKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTA3MDMKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMjE3OQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGNvbnN0YW50ICglbHgpIGFmdGVyIGZpeHVwIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMDc0MQorIzogY29uZmlnL3RjLWFybS5jOjEyMjE3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBjb21wdXRlIEFEUkwgaW5zdHJ1Y3Rpb25zIGZvciBQQyBvZmZzZXQgb2YgMHglbHgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjEwNzcxCisjOiBjb25maWcvdGMtYXJtLmM6MTIyNDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIGltbWVkaWF0ZSB2YWx1ZSBmb3Igb2Zmc2V0ICglbGQpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMDc5MyBjb25maWcvdGMtYXJtLmM6MTA4MTUKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMjI2OSBjb25maWcvdGMtYXJtLmM6MTIyOTEKIG1zZ2lkICJpbnZhbGlkIGxpdGVyYWwgY29uc3RhbnQ6IHBvb2wgbmVlZHMgdG8gYmUgY2xvc2VyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMDc5NQorIzogY29uZmlnL3RjLWFybS5jOjEyMjcxCiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCBpbW1lZGlhdGUgdmFsdWUgZm9yIGhhbGYtd29yZCBvZmZzZXQgKCVsZCkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjEwODMyCisjOiBjb25maWcvdGMtYXJtLmM6MTIzMDgKIG1zZ2lkICJzaGlmdCBleHByZXNzaW9uIGlzIHRvbyBsYXJnZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTA4NTEgY29uZmlnL3RjLWFybS5jOjEwODYwCisjOiBjb25maWcvdGMtYXJtLmM6MTIzMjcgY29uZmlnL3RjLWFybS5jOjEyMzM2CiBtc2dpZCAiaW52YWxpZCBzd2kgZXhwcmVzc2lvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTA4NzAKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMjM0NgogbXNnaWQgImludmFsaWQgZXhwcmVzc2lvbiBpbiBsb2FkL3N0b3JlIG11bHRpcGxlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMDkyMworIzogY29uZmlnL3RjLWFybS5jOjEyMzk5CiBtc2dpZCAiR0FTIGNhbid0IGhhbmRsZSBzYW1lLXNlY3Rpb24gYnJhbmNoIGRlc3QgPj0gMHgwNDAwMDAwMCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTA5MzIKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMjQwOAogbXNnaWQgIm91dCBvZiByYW5nZSBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjEwOTY1IGNvbmZpZy90Yy1hcm0uYzoxMDk4MQorIzogY29uZmlnL3RjLWFybS5jOjEyNDQxIGNvbmZpZy90Yy1hcm0uYzoxMjQ1NwogbXNnaWQgImJyYW5jaCBvdXQgb2YgcmFuZ2UiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExMDA1CisjOiBjb25maWcvdGMtYXJtLmM6MTI0ODEKIG1zZ2lkICJicmFuY2ggd2l0aCBsaW5rIG91dCBvZiByYW5nZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTEwNzQKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMjU1MAogbXNnaWQgImlsbGVnYWwgdmFsdWUgZm9yIGNvLXByb2Nlc3NvciBvZmZzZXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExMDg2CisjOiBjb25maWcvdGMtYXJtLmM6MTI1NjIKIG1zZ2lkICJJbGxlZ2FsIHZhbHVlIGZvciBjby1wcm9jZXNzb3Igb2Zmc2V0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTExMAorIzogY29uZmlnL3RjLWFybS5jOjEyNTg2CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb2Zmc2V0LCB0YXJnZXQgbm90IHdvcmQgYWxpZ25lZCAoMHglMDhYKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTExMTYgY29uZmlnL3RjLWFybS5jOjExMTI2IGNvbmZpZy90Yy1hcm0uYzoxMTEzNAotIzogY29uZmlnL3RjLWFybS5jOjExMTQyIGNvbmZpZy90Yy1hcm0uYzoxMTE1MAorIzogY29uZmlnL3RjLWFybS5jOjEyNTkyIGNvbmZpZy90Yy1hcm0uYzoxMjYwMiBjb25maWcvdGMtYXJtLmM6MTI2MTAKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMjYxOCBjb25maWcvdGMtYXJtLmM6MTI2MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBvZmZzZXQsIHZhbHVlIHRvbyBiaWcgKDB4JTA4bFgpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTE5MAorIzogY29uZmlnL3RjLWFybS5jOjEyNjY2CiBtc2dpZCAiaW52YWxpZCBpbW1lZGlhdGUgZm9yIHN0YWNrIGFkZHJlc3MgY2FsY3VsYXRpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExMTk5CisjOiBjb25maWcvdGMtYXJtLmM6MTI2NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBpbW1lZGlhdGUgZm9yIGFkZHJlc3MgY2FsY3VsYXRpb24gKHZhbHVlID0gMHglMDhsWCkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExMjA5CisjOiBjb25maWcvdGMtYXJtLmM6MTI2ODUKIG1zZ2lkICJpbnZhbGlkIDhiaXQgaW1tZWRpYXRlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTIxNworIzogY29uZmlnL3RjLWFybS5jOjEyNjkzCiBtc2dpZCAiaW52YWxpZCAzYml0IGltbWVkaWF0ZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTEyMzMKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMjcwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGltbWVkaWF0ZTogJWxkIGlzIHRvbyBsYXJnZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTEyNDgKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMjcyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbGxlZ2FsIFRodW1iIHNoaWZ0IHZhbHVlOiAlbGQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExMjYyCisjOiBjb25maWcvdGMtYXJtLmM6MTI3MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIHJlbG9jYXRpb24gZml4dXAgdHlwZSAoJWQpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTMzMworIzogY29uZmlnL3RjLWFybS5jOjEyODA5CiBtc2dpZCAibGl0ZXJhbCByZWZlcmVuY2VkIGFjcm9zcyBzZWN0aW9uIGJvdW5kYXJ5IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTM0NgorIzogY29uZmlnL3RjLWFybS5jOjEyODIyCiBtc2dpZCAiaW50ZXJuYWwgcmVsb2NhdGlvbiAodHlwZTogSU1NRURJQVRFKSBub3QgZml4ZWQgdXAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExMzUxCisjOiBjb25maWcvdGMtYXJtLmM6MTI4MjcKIG1zZ2lkICJBRFJMIHVzZWQgZm9yIGEgc3ltYm9sIG5vdCBkZWZpbmVkIGluIHRoZSBzYW1lIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExMzU2CisjOiBjb25maWcvdGMtYXJtLmM6MTI4MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5kZWZpbmVkIGxvY2FsIGxhYmVsIGAlcyciCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWFybS5jOjEyODQyCiBtc2dpZCAiaW50ZXJuYWxfcmVsb2NhdGlvbiAodHlwZTogT0ZGU0VUX0lNTSkgbm90IGZpeGVkIHVwIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTM3NCBjb25maWcvdGMtY3Jpcy5jOjMwNjMgY29uZmlnL3RjLW1jb3JlLmM6MjA1MgotIzogY29uZmlnL3RjLW1taXguYzoyODY3IGNvbmZpZy90Yy1uczMyay5jOjIzOTYKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMjg2MCBjb25maWcvdGMtY3Jpcy5jOjMwNjMgY29uZmlnL3RjLW1jb3JlLmM6MjA1MgorIzogY29uZmlnL3RjLW1taXguYzoyOTQzIGNvbmZpZy90Yy1uczMyay5jOjIzOTYKIG1zZ2lkICI8dW5rbm93bj4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExMzc3IGNvbmZpZy90Yy1hcm0uYzoxMTM5OAorIzogY29uZmlnL3RjLWFybS5jOjEyODYzIGNvbmZpZy90Yy1hcm0uYzoxMjg4NAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVwcmVzZW50ICVzIHJlbG9jYXRpb24gaW4gdGhpcyBvYmplY3QgZmlsZSBmb3JtYXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNDk0CisjOiBjb25maWcvdGMtYXJtLmM6MTI5ODAKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gb3BlcmF0b3IgLS0gc3RhdGVtZW50IGAlcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE1MTIgY29uZmlnL3RjLWFybS5jOjExNTM3CisjOiBjb25maWcvdGMtYXJtLmM6MTI5OTggY29uZmlnL3RjLWFybS5jOjEzMDI0CiAjLCBjLWZvcm1hdAogbXNnaWQgInNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IGAlcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNTU0CisjOiBjb25maWcvdGMtYXJtLmM6MTMwNDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIGluc3RydWN0aW9uIGAlcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjU1CisjOiBjb25maWcvdGMtYXJtLmM6MTMxNDMKIG1zZ2lkICJnZW5lcmF0ZSBQSUMgY29kZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE2NTYKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzE0NAogbXNnaWQgImFzc2VtYmxlIFRodW1iIGNvZGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjU3CisjOiBjb25maWcvdGMtYXJtLmM6MTMxNDUKIG1zZ2lkICJzdXBwb3J0IEFSTS9UaHVtYiBpbnRlcndvcmtpbmciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjU5CisjOiBjb25maWcvdGMtYXJtLmM6MTMxNDcKIG1zZ2lkICJ1c2Ugb2xkIEFCSSAoRUxGIG9ubHkpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTY2MAorIzogY29uZmlnL3RjLWFybS5jOjEzMTQ4CiBtc2dpZCAiY29kZSB1c2VzIDMyLWJpdCBwcm9ncmFtIGNvdW50ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjYxCisjOiBjb25maWcvdGMtYXJtLmM6MTMxNDkKIG1zZ2lkICJjb2RlIHVzZXMgMjYtYml0IHByb2dyYW0gY291bnRlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE2NjIKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzE1MAogbXNnaWQgImZsb2F0aW5nIHBvaW50IGFyZ3MgYXJlIGluIGZwIHJlZ3MiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjY0CisjOiBjb25maWcvdGMtYXJtLmM6MTMxNTIKIG1zZ2lkICJyZS1lbnRyYW50IGNvZGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjY1CisjOiBjb25maWcvdGMtYXJtLmM6MTMxNTMKIG1zZ2lkICJjb2RlIGlzIEFUUENTIGNvbmZvcm1hbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjY2CisjOiBjb25maWcvdGMtYXJtLmM6MTMxNTQKIG1zZ2lkICJhc3NlbWJsZSBmb3IgYmlnLWVuZGlhbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE2NjcKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzE1NQogbXNnaWQgImFzc2VtYmxlIGZvciBsaXR0bGUtZW5kaWFuIgogbXNnc3RyICIiCiAKICMuIFRoZXNlIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBhc3NlbWJsZXIsIGJ1dCBoYXZlIG5vIGFmZmVjdCBvbiBjb2RlLgotIzogY29uZmlnL3RjLWFybS5jOjExNjcxCisjOiBjb25maWcvdGMtYXJtLmM6MTMxNTkKIG1zZ2lkICJ1c2UgZnJhbWUgcG9pbnRlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE2NzIKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzE2MAogbXNnaWQgInVzZSBzdGFjayBzaXplIGNoZWNraW5nIgogbXNnc3RyICIiCiAKICMuIERPTidUIGFkZCBhbnkgbmV3IHByb2Nlc3NvcnMgdG8gdGhpcyBsaXN0IC0tIHdlIHdhbnQgdGhlIHdob2xlIGxpc3QKICMuIHRvIGdvIGF3YXkuLi4gIEFkZCB0aGVtIHRvIHRoZSBwcm9jZXNzb3JzIHRhYmxlIGluc3RlYWQuCi0jOiBjb25maWcvdGMtYXJtLmM6MTE2NzYgY29uZmlnL3RjLWFybS5jOjExNjc3CisjOiBjb25maWcvdGMtYXJtLmM6MTMxNjQgY29uZmlnL3RjLWFybS5jOjEzMTY1CiBtc2dpZCAidXNlIC1tY3B1PWFybTEiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjc4IGNvbmZpZy90Yy1hcm0uYzoxMTY3OQorIzogY29uZmlnL3RjLWFybS5jOjEzMTY2IGNvbmZpZy90Yy1hcm0uYzoxMzE2NwogbXNnaWQgInVzZSAtbWNwdT1hcm0yIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTY4MCBjb25maWcvdGMtYXJtLmM6MTE2ODEKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzE2OCBjb25maWcvdGMtYXJtLmM6MTMxNjkKIG1zZ2lkICJ1c2UgLW1jcHU9YXJtMjUwIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTY4MiBjb25maWcvdGMtYXJtLmM6MTE2ODMKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzE3MCBjb25maWcvdGMtYXJtLmM6MTMxNzEKIG1zZ2lkICJ1c2UgLW1jcHU9YXJtMyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE2ODQgY29uZmlnL3RjLWFybS5jOjExNjg1CisjOiBjb25maWcvdGMtYXJtLmM6MTMxNzIgY29uZmlnL3RjLWFybS5jOjEzMTczCiBtc2dpZCAidXNlIC1tY3B1PWFybTYiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjg2IGNvbmZpZy90Yy1hcm0uYzoxMTY4NworIzogY29uZmlnL3RjLWFybS5jOjEzMTc0IGNvbmZpZy90Yy1hcm0uYzoxMzE3NQogbXNnaWQgInVzZSAtbWNwdT1hcm02MDAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjg4IGNvbmZpZy90Yy1hcm0uYzoxMTY4OQorIzogY29uZmlnL3RjLWFybS5jOjEzMTc2IGNvbmZpZy90Yy1hcm0uYzoxMzE3NwogbXNnaWQgInVzZSAtbWNwdT1hcm02MTAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjkwIGNvbmZpZy90Yy1hcm0uYzoxMTY5MQorIzogY29uZmlnL3RjLWFybS5jOjEzMTc4IGNvbmZpZy90Yy1hcm0uYzoxMzE3OQogbXNnaWQgInVzZSAtbWNwdT1hcm02MjAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjkyIGNvbmZpZy90Yy1hcm0uYzoxMTY5MworIzogY29uZmlnL3RjLWFybS5jOjEzMTgwIGNvbmZpZy90Yy1hcm0uYzoxMzE4MQogbXNnaWQgInVzZSAtbWNwdT1hcm03IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTY5NCBjb25maWcvdGMtYXJtLmM6MTE2OTUKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzE4MiBjb25maWcvdGMtYXJtLmM6MTMxODMKIG1zZ2lkICJ1c2UgLW1jcHU9YXJtNzAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjk2IGNvbmZpZy90Yy1hcm0uYzoxMTY5NworIzogY29uZmlnL3RjLWFybS5jOjEzMTg0IGNvbmZpZy90Yy1hcm0uYzoxMzE4NQogbXNnaWQgInVzZSAtbWNwdT1hcm03MDAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNjk4IGNvbmZpZy90Yy1hcm0uYzoxMTY5OQorIzogY29uZmlnL3RjLWFybS5jOjEzMTg2IGNvbmZpZy90Yy1hcm0uYzoxMzE4NwogbXNnaWQgInVzZSAtbWNwdT1hcm03MDBpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTcwMCBjb25maWcvdGMtYXJtLmM6MTE3MDEKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzE4OCBjb25maWcvdGMtYXJtLmM6MTMxODkKIG1zZ2lkICJ1c2UgLW1jcHU9YXJtNzEwIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTcwMiBjb25maWcvdGMtYXJtLmM6MTE3MDMKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzE5MCBjb25maWcvdGMtYXJtLmM6MTMxOTEKIG1zZ2lkICJ1c2UgLW1jcHU9YXJtNzEwYyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE3MDQgY29uZmlnL3RjLWFybS5jOjExNzA1CisjOiBjb25maWcvdGMtYXJtLmM6MTMxOTIgY29uZmlnL3RjLWFybS5jOjEzMTkzCiBtc2dpZCAidXNlIC1tY3B1PWFybTcyMCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE3MDYgY29uZmlnL3RjLWFybS5jOjExNzA3CisjOiBjb25maWcvdGMtYXJtLmM6MTMxOTQgY29uZmlnL3RjLWFybS5jOjEzMTk1CiBtc2dpZCAidXNlIC1tY3B1PWFybTdkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTcwOCBjb25maWcvdGMtYXJtLmM6MTE3MDkKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzE5NiBjb25maWcvdGMtYXJtLmM6MTMxOTcKIG1zZ2lkICJ1c2UgLW1jcHU9YXJtN2RpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTcxMCBjb25maWcvdGMtYXJtLmM6MTE3MTEKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzE5OCBjb25maWcvdGMtYXJtLmM6MTMxOTkKIG1zZ2lkICJ1c2UgLW1jcHU9YXJtN20iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzEyIGNvbmZpZy90Yy1hcm0uYzoxMTcxMworIzogY29uZmlnL3RjLWFybS5jOjEzMjAwIGNvbmZpZy90Yy1hcm0uYzoxMzIwMQogbXNnaWQgInVzZSAtbWNwdT1hcm03ZG0iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzE0IGNvbmZpZy90Yy1hcm0uYzoxMTcxNQorIzogY29uZmlnL3RjLWFybS5jOjEzMjAyIGNvbmZpZy90Yy1hcm0uYzoxMzIwMwogbXNnaWQgInVzZSAtbWNwdT1hcm03ZG1pIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTcxNiBjb25maWcvdGMtYXJtLmM6MTE3MTcKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzIwNCBjb25maWcvdGMtYXJtLmM6MTMyMDUKIG1zZ2lkICJ1c2UgLW1jcHU9YXJtNzEwMCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE3MTggY29uZmlnL3RjLWFybS5jOjExNzE5CisjOiBjb25maWcvdGMtYXJtLmM6MTMyMDYgY29uZmlnL3RjLWFybS5jOjEzMjA3CiBtc2dpZCAidXNlIC1tY3B1PWFybTc1MDAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzIwIGNvbmZpZy90Yy1hcm0uYzoxMTcyMQorIzogY29uZmlnL3RjLWFybS5jOjEzMjA4IGNvbmZpZy90Yy1hcm0uYzoxMzIwOQogbXNnaWQgInVzZSAtbWNwdT1hcm03NTAwZmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzIyIGNvbmZpZy90Yy1hcm0uYzoxMTcyMyBjb25maWcvdGMtYXJtLmM6MTE3MjQKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTcyNQorIzogY29uZmlnL3RjLWFybS5jOjEzMjEwIGNvbmZpZy90Yy1hcm0uYzoxMzIxMSBjb25maWcvdGMtYXJtLmM6MTMyMTIKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzIxMwogbXNnaWQgInVzZSAtbWNwdT1hcm03dGRtaSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE3MjYgY29uZmlnL3RjLWFybS5jOjExNzI3CisjOiBjb25maWcvdGMtYXJtLmM6MTMyMTQgY29uZmlnL3RjLWFybS5jOjEzMjE1CiBtc2dpZCAidXNlIC1tY3B1PWFybTcxMHQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzI4IGNvbmZpZy90Yy1hcm0uYzoxMTcyOQorIzogY29uZmlnL3RjLWFybS5jOjEzMjE2IGNvbmZpZy90Yy1hcm0uYzoxMzIxNwogbXNnaWQgInVzZSAtbWNwdT1hcm03MjB0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTczMCBjb25maWcvdGMtYXJtLmM6MTE3MzEKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzIxOCBjb25maWcvdGMtYXJtLmM6MTMyMTkKIG1zZ2lkICJ1c2UgLW1jcHU9YXJtNzQwdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE3MzIgY29uZmlnL3RjLWFybS5jOjExNzMzCisjOiBjb25maWcvdGMtYXJtLmM6MTMyMjAgY29uZmlnL3RjLWFybS5jOjEzMjIxCiBtc2dpZCAidXNlIC1tY3B1PWFybTgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzM0IGNvbmZpZy90Yy1hcm0uYzoxMTczNQorIzogY29uZmlnL3RjLWFybS5jOjEzMjIyIGNvbmZpZy90Yy1hcm0uYzoxMzIyMwogbXNnaWQgInVzZSAtbWNwdT1hcm04MTAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzM2IGNvbmZpZy90Yy1hcm0uYzoxMTczNworIzogY29uZmlnL3RjLWFybS5jOjEzMjI0IGNvbmZpZy90Yy1hcm0uYzoxMzIyNQogbXNnaWQgInVzZSAtbWNwdT1hcm05IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTczOCBjb25maWcvdGMtYXJtLmM6MTE3MzkKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzIyNiBjb25maWcvdGMtYXJtLmM6MTMyMjcKIG1zZ2lkICJ1c2UgLW1jcHU9YXJtOXRkbWkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzQwIGNvbmZpZy90Yy1hcm0uYzoxMTc0MQorIzogY29uZmlnL3RjLWFybS5jOjEzMjI4IGNvbmZpZy90Yy1hcm0uYzoxMzIyOQogbXNnaWQgInVzZSAtbWNwdT1hcm05MjAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzQyIGNvbmZpZy90Yy1hcm0uYzoxMTc0MworIzogY29uZmlnL3RjLWFybS5jOjEzMjMwIGNvbmZpZy90Yy1hcm0uYzoxMzIzMQogbXNnaWQgInVzZSAtbWNwdT1hcm05NDAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzQ0CisjOiBjb25maWcvdGMtYXJtLmM6MTMyMzIKIG1zZ2lkICJ1c2UgLW1jcHU9c3Ryb25nYXJtIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTc0NgorIzogY29uZmlnL3RjLWFybS5jOjEzMjM0CiBtc2dpZCAidXNlIC1tY3B1PXN0cm9uZ2FybTExMCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE3NDgKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzIzNgogbXNnaWQgInVzZSAtbWNwdT1zdHJvbmdhcm0xMTAwIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTc1MAorIzogY29uZmlnL3RjLWFybS5jOjEzMjM4CiBtc2dpZCAidXNlIC1tY3B1PXN0cm9uZ2FybTExMTAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzUxCisjOiBjb25maWcvdGMtYXJtLmM6MTMyMzkKIG1zZ2lkICJ1c2UgLW1jcHU9eHNjYWxlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTc1MgorIzogY29uZmlnL3RjLWFybS5jOjEzMjQwCiBtc2dpZCAidXNlIC1tY3B1PWl3bW14dCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE3NTMKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzI0MQogbXNnaWQgInVzZSAtbWNwdT1hbGwiCiBtc2dzdHIgIiIKIAogIy4gQXJjaGl0ZWN0dXJlIHZhcmlhbnRzIC0tIGRvbid0IGFkZCBhbnkgbW9yZSB0byB0aGlzIGxpc3QgZWl0aGVyLgotIzogY29uZmlnL3RjLWFybS5jOjExNzU2IGNvbmZpZy90Yy1hcm0uYzoxMTc1NworIzogY29uZmlnL3RjLWFybS5jOjEzMjQ0IGNvbmZpZy90Yy1hcm0uYzoxMzI0NQogbXNnaWQgInVzZSAtbWFyY2g9YXJtdjIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzU4IGNvbmZpZy90Yy1hcm0uYzoxMTc1OQorIzogY29uZmlnL3RjLWFybS5jOjEzMjQ2IGNvbmZpZy90Yy1hcm0uYzoxMzI0NwogbXNnaWQgInVzZSAtbWFyY2g9YXJtdjJhIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTc2MCBjb25maWcvdGMtYXJtLmM6MTE3NjEKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzI0OCBjb25maWcvdGMtYXJtLmM6MTMyNDkKIG1zZ2lkICJ1c2UgLW1hcmNoPWFybXYzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTc2MiBjb25maWcvdGMtYXJtLmM6MTE3NjMKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzI1MCBjb25maWcvdGMtYXJtLmM6MTMyNTEKIG1zZ2lkICJ1c2UgLW1hcmNoPWFybXYzbSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE3NjQgY29uZmlnL3RjLWFybS5jOjExNzY1CisjOiBjb25maWcvdGMtYXJtLmM6MTMyNTIgY29uZmlnL3RjLWFybS5jOjEzMjUzCiBtc2dpZCAidXNlIC1tYXJjaD1hcm12NCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE3NjYgY29uZmlnL3RjLWFybS5jOjExNzY3CisjOiBjb25maWcvdGMtYXJtLmM6MTMyNTQgY29uZmlnL3RjLWFybS5jOjEzMjU1CiBtc2dpZCAidXNlIC1tYXJjaD1hcm12NHQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzY4IGNvbmZpZy90Yy1hcm0uYzoxMTc2OQorIzogY29uZmlnL3RjLWFybS5jOjEzMjU2IGNvbmZpZy90Yy1hcm0uYzoxMzI1NwogbXNnaWQgInVzZSAtbWFyY2g9YXJtdjUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzcwIGNvbmZpZy90Yy1hcm0uYzoxMTc3MQorIzogY29uZmlnL3RjLWFybS5jOjEzMjU4IGNvbmZpZy90Yy1hcm0uYzoxMzI1OQogbXNnaWQgInVzZSAtbWFyY2g9YXJtdjV0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTc3MiBjb25maWcvdGMtYXJtLmM6MTE3NzMKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzI2MCBjb25maWcvdGMtYXJtLmM6MTMyNjEKIG1zZ2lkICJ1c2UgLW1hcmNoPWFybXY1dGUiCiBtc2dzdHIgIiIKIAogIy4gRmxvYXRpbmcgcG9pbnQgdmFyaWFudHMgLS0gZG9uJ3QgYWRkIGFueSBtb3JlIHRvIHRoaXMgbGlzdCBlaXRoZXIuCi0jOiBjb25maWcvdGMtYXJtLmM6MTE3NzYKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzI2NAogbXNnaWQgInVzZSAtbWZwdT1mcGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzc3CisjOiBjb25maWcvdGMtYXJtLmM6MTMyNjUKIG1zZ2lkICJ1c2UgLW1mcHU9ZnBhMTAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzc4CisjOiBjb25maWcvdGMtYXJtLmM6MTMyNjYKIG1zZ2lkICJ1c2UgLW1mcHU9ZnBhMTEiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExNzgwCisjOiBjb25maWcvdGMtYXJtLmM6MTMyNjgKIG1zZ2lkICJ1c2UgZWl0aGVyIC1tZnB1PXNvZnRmcGEgb3IgLW1mcHU9c29mdHZmcCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTE5NjMKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzQ3NAogbXNnaWQgImludmFsaWQgYXJjaGl0ZWN0dXJhbCBleHRlbnNpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjExOTc3CisjOiBjb25maWcvdGMtYXJtLmM6MTM0ODgKIG1zZ2lkICJtaXNzaW5nIGFyY2hpdGVjdHVyYWwgZXh0ZW5zaW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMTk5MAorIzogY29uZmlnL3RjLWFybS5jOjEzNTAxCiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gYXJjaGl0ZWN0dXJhbCBleHRuc2lvbiBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMjAxNQorIzogY29uZmlnL3RjLWFybS5jOjEzNTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1pc3NpbmcgY3B1IG5hbWUgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTIwMzEKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzU0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIGNwdSBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMjA1MAorIzogY29uZmlnL3RjLWFybS5jOjEzNTYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIm1pc3NpbmcgYXJjaGl0ZWN0dXJlIG5hbWUgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTIwNjcKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzU3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIGFyY2hpdGVjdHVyZSBgJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjEyMDg0CisjOiBjb25maWcvdGMtYXJtLmM6MTM1OTUKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBmbG9hdGluZyBwb2ludCBmb3JtYXQgYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMjA5MAorIzogY29uZmlnL3RjLWFybS5jOjEzNjEyCisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gZmxvYXRpbmcgcG9pbnQgYWJpIGAlcydcbiIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtYXJtLmM6MTM2MTgKIG1zZ2lkICI8Y3B1IG5hbWU+XHQgIGFzc2VtYmxlIGZvciBDUFUgPGNwdSBuYW1lPiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTIwOTIKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzYyMAogbXNnaWQgIjxhcmNoIG5hbWU+XHQgIGFzc2VtYmxlIGZvciBhcmNoaXRlY3R1cmUgPGFyY2ggbmFtZT4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjEyMDk0CisjOiBjb25maWcvdGMtYXJtLmM6MTM2MjIKIG1zZ2lkICI8ZnB1IG5hbWU+XHQgIGFzc2VtYmxlIGZvciBGUFUgYXJjaGl0ZWN0dXJlIDxmcHUgbmFtZT4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5jOjEyMTM2IGNvbmZpZy90Yy1hcm0uYzoxMjE1OAorIzogY29uZmlnL3RjLWFybS5jOjEzNjI0Cittc2dpZCAiPGFiaT5cdCAgYXNzZW1ibGUgZm9yIGZsb2F0aW5nIHBvaW50IEFCSSA8YWJpPiIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtYXJtLmM6MTM2NjYgY29uZmlnL3RjLWFybS5jOjEzNjg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9wdGlvbiBgLSVjJXMnIGlzIGRlcHJlY2F0ZWQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMjE2NworIzogY29uZmlnL3RjLWFybS5jOjEzNjk3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBvcHRpb24gYC0lYyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtYXJtLmM6MTIxODEKKyM6IGNvbmZpZy90Yy1hcm0uYzoxMzcxMQorIywgYy1mb3JtYXQKIG1zZ2lkICIgQVJNLXNwZWNpZmljIGFzc2VtYmxlciBvcHRpb25zOlxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMjE5MgorIzogY29uZmlnL3RjLWFybS5jOjEzNzIyCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLUVCICAgICAgICAgICAgICAgICAgICAgYXNzZW1ibGUgY29kZSBmb3IgYSBiaWctZW5kaWFuIGNwdVxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMjE5NworIzogY29uZmlnL3RjLWFybS5jOjEzNzI3CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLUVMICAgICAgICAgICAgICAgICAgICAgYXNzZW1ibGUgY29kZSBmb3IgYSBsaXR0bGUtZW5kaWFuIGNwdVxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMjM4MQorIzogY29uZmlnL3RjLWFybS5jOjEzOTA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB1bmV4cGVjdGVkIGZ1bmN0aW9uIHR5cGU6ICVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1hcm0uYzoxMjc1NgorIzogY29uZmlnL3RjLWFybS5jOjE0Mjg1CiBtc2dpZCAiYWxpZ25tZW50cyBncmVhdGVyIHRoYW4gMzIgYnl0ZXMgbm90IHN1cHBvcnRlZCBpbiAudGV4dCBzZWN0aW9ucy4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWFybS5oOjk4CisjOiBjb25maWcvdGMtYXJtLmg6MTAxCiBtc2dpZCAiYXJtIGNvbnZlcnRfZnJhZ1xuIgogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy1hdnIuYzoyMDMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiS25vd24gTUNVIG5hbWVzOiIKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMtYXZyLmM6MjcyCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJBVlIgb3B0aW9uczpcbiIKICIgIC1tbWN1PVthdnItbmFtZV0gc2VsZWN0IG1pY3JvY29udHJvbGxlciB2YXJpYW50XG4iCkBAIC0yNjY3LDYgKzI4MTEsNyBAQAogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy1hdnIuYzoyODIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLW1hbGwtb3Bjb2RlcyAgICBhY2NlcHQgYWxsIEFWUiBvcGNvZGVzLCBldmVuIGlmIG5vdCBzdXBwb3J0ZWQgYnkgTUNVXG4iCiAiICAtbW5vLXNraXAtYnVnICAgIGRpc2FibGUgd2FybmluZ3MgZm9yIHNraXBwaW5nIHR3by13b3JkIGluc3RydWN0aW9uc1xuIgpAQCAtMjY3NSw3ICsyODIwLDcgQEAKICIgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgZm9yIGF2cjMsIGF2cjUpXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWF2ci5jOjMzMCBjb25maWcvdGMtbXNwNDMwLmM6MjU3CisjOiBjb25maWcvdGMtYXZyLmM6MzMwIGNvbmZpZy90Yy1tc3A0MzAuYzoyNzIKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBNQ1U6ICVzXG4iCiBtc2dzdHIgIiIKQEAgLTI2ODYsOSArMjgzMSw5IEBACiBtc2dzdHIgIiIKIAogIzogY29uZmlnL3RjLWF2ci5jOjM5MCBjb25maWcvdGMtZDEwdi5jOjMxOSBjb25maWcvdGMtZDMwdi5jOjM2NQotIzogY29uZmlnL3RjLW1pcHMuYzoxMDEzNyBjb25maWcvdGMtbW1peC5jOjIyNDYgY29uZmlnL3RjLW1uMTAyMDAuYzozNjEKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzozNzggY29uZmlnL3RjLXBqLmM6Mzc0IGNvbmZpZy90Yy1wcGMuYzo1MTA1Ci0jOiBjb25maWcvdGMtc2guYzoyNTI4IGNvbmZpZy90Yy12ODUwLmM6MTI0NAorIzogY29uZmlnL3RjLW1pcHMuYzoxMDEyNSBjb25maWcvdGMtbW1peC5jOjIzMTAgY29uZmlnL3RjLW1uMTAyMDAuYzozNjEKKyM6IGNvbmZpZy90Yy1tc3A0MzAuYzozOTMgY29uZmlnL3RjLXBqLmM6Mzc0IGNvbmZpZy90Yy1wcGMuYzo1MTkxCisjOiBjb25maWcvdGMtc2guYzoyODIxIGNvbmZpZy90Yy12ODUwLmM6MTI1MwogbXNnaWQgImJhZCBjYWxsIHRvIG1kX2F0b2YiCiBtc2dzdHIgIiIKIApAQCAtMjc2MywyMCArMjkwOCwyMCBAQAogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy1hdnIuYzo4ODEgY29uZmlnL3RjLWF2ci5jOjg5NyBjb25maWcvdGMtYXZyLmM6OTk4Ci0jOiBjb25maWcvdGMtbXNwNDMwLmM6MTQzMSBjb25maWcvdGMtbXNwNDMwLmM6MTQ0OAorIzogY29uZmlnL3RjLW1zcDQzMC5jOjE0MzcgY29uZmlnL3RjLW1zcDQzMC5jOjE0NTQKICMsIGMtZm9ybWF0CiBtc2dpZCAib2RkIGFkZHJlc3Mgb3BlcmFuZDogJWxkIgogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy1hdnIuYzo4ODkgY29uZmlnL3RjLWF2ci5jOjkwOCBjb25maWcvdGMtZDEwdi5jOjU4NgotIzogY29uZmlnL3RjLWQzMHYuYzo2NTUgY29uZmlnL3RjLW1zcDQzMC5jOjE0MzkgY29uZmlnL3RjLW1zcDQzMC5jOjE0NTMKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzoxNDYzCisjOiBjb25maWcvdGMtZDMwdi5jOjY1NSBjb25maWcvdGMtbXNwNDMwLmM6MTQ0NSBjb25maWcvdGMtbXNwNDMwLmM6MTQ1OQorIzogY29uZmlnL3RjLW1zcDQzMC5jOjE0NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAib3BlcmFuZCBvdXQgb2YgcmFuZ2U6ICVsZCIKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMtYXZyLmM6MTAwNyBjb25maWcvdGMtZDEwdi5jOjE3OTMgY29uZmlnL3RjLWQzMHYuYzoxOTczCi0jOiBjb25maWcvdGMtbXNwNDMwLmM6MTQ4MQorIzogY29uZmlnL3RjLW1zcDQzMC5jOjE0ODcKICMsIGMtZm9ybWF0CiBtc2dpZCAibGluZSAlZDogdW5rbm93biByZWxvY2F0aW9uIHR5cGU6IDB4JXgiCiBtc2dzdHIgIiIKQEAgLTI3ODYsMTYgKzI5MzEsMTYgQEAKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMtYXZyLmM6MTA1NyBjb25maWcvdGMtZDEwdi5jOjE2NTkgY29uZmlnL3RjLWQzMHYuYzoxODA2Ci0jOiBjb25maWcvdGMtbW4xMDIwMC5jOjEyNTUgY29uZmlnL3RjLW1uMTAzMDAuYzoyMzAzIGNvbmZpZy90Yy1tc3A0MzAuYzoxNTIwCi0jOiBjb25maWcvdGMtb3IzMi5jOjE2MTggY29uZmlnL3RjLXBwYy5jOjU5MTkgY29uZmlnL3RjLXY4NTAuYzoyMjYzCisjOiBjb25maWcvdGMtbW4xMDIwMC5jOjEyNTUgY29uZmlnL3RjLW1uMTAzMDAuYzoyMzAzIGNvbmZpZy90Yy1tc3A0MzAuYzoxNTI1CisjOiBjb25maWcvdGMtb3IzMi5jOjE2MTggY29uZmlnL3RjLXBwYy5jOjYwMTQgY29uZmlnL3RjLXY4NTAuYzoyMjgwCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlbG9jICVkIG5vdCBzdXBwb3J0ZWQgYnkgb2JqZWN0IGZpbGUgZm9ybWF0IgogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy1hdnIuYzoxMDgxIGNvbmZpZy90Yy1kMTB2LmM6MTI0OCBjb25maWcvdGMtZDEwdi5jOjEyNjIKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjE5MTUgY29uZmlnL3RjLWg4NTAwLmM6MTEwNiBjb25maWcvdGMtbWNvcmUuYzo5MzgKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzo0MzggY29uZmlnL3RjLXBqLmM6MjgzIGNvbmZpZy90Yy1zaC5jOjIwOTYKLSM6IGNvbmZpZy90Yy16OGsuYzoxMjM4CisjOiBjb25maWcvdGMtaDgzMDAuYzoxODk1IGNvbmZpZy90Yy1oODUwMC5jOjExMDYgY29uZmlnL3RjLW1jb3JlLmM6OTM4CisjOiBjb25maWcvdGMtbXNwNDMwLmM6NDUzIGNvbmZpZy90Yy1wai5jOjI4MyBjb25maWcvdGMtc2guYzoyMjc1CisjOiBjb25maWcvdGMtejhrLmM6MTIwNAogbXNnaWQgImNhbid0IGZpbmQgb3Bjb2RlICIKIG1zZ3N0ciAiIgogCkBAIC0yODA4LDcgKzI5NTMsNyBAQAogbXNnaWQgImdhcmJhZ2UgYXQgZW5kIG9mIGxpbmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWF2ci5jOjExNzAgcmVhZC5jOjMyMjYKKyM6IGNvbmZpZy90Yy1hdnIuYzoxMTcwIHJlYWQuYzozMTAwCiBtc2dpZCAiaWxsZWdhbCBleHByZXNzaW9uIgogbXNnc3RyICIiCiAKQEAgLTI4MzAsMTcgKzI5NzUsMTcgQEAKIG1zZ2lkICJpbGxlZ2FsICVzcmVsb2NhdGlvbiBzaXplOiAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtY3Jpcy5jOjM4NiBjb25maWcvdGMtbTY4aGMxMS5jOjI4MzEKKyM6IGNvbmZpZy90Yy1jcmlzLmM6Mzg2IGNvbmZpZy90Yy1tNjhoYzExLmM6Mjc5MwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnRlcm5hbCBpbmNvbnNpc3RlbmN5IHByb2JsZW0gaW4gJXM6IGZyX3N5bWJvbCAlbHgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWNyaXMuYzozOTAgY29uZmlnL3RjLW02OGhjMTEuYzoyODM1CisjOiBjb25maWcvdGMtY3Jpcy5jOjM5MCBjb25maWcvdGMtbTY4aGMxMS5jOjI3OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW50ZXJuYWwgaW5jb25zaXN0ZW5jeSBwcm9ibGVtIGluICVzOiByZXNvbHZlZCBzeW1ib2wiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWNyaXMuYzozOTYgY29uZmlnL3RjLW02OGhjMTEuYzoyODQxCisjOiBjb25maWcvdGMtY3Jpcy5jOjM5NiBjb25maWcvdGMtbTY4aGMxMS5jOjI4MDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW50ZXJuYWwgaW5jb25zaXN0ZW5jeSBwcm9ibGVtIGluICVzOiBmcl9zdWJ0eXBlICVkIgogbXNnc3RyICIiCkBAIC0yOTY4LDYgKzMxMTMsNyBAQAogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy1jcmlzLmM6MjkyNAorIywgYy1mb3JtYXQKIG1zZ2lkICJQbGVhc2UgdXNlIC0taGVscCB0byBzZWUgdXNhZ2UgYW5kIG9wdGlvbnMgZm9yIHRoaXMgYXNzZW1ibGVyLlxuIgogbXNnc3RyICIiCiAKQEAgLTI5ODgsNiArMzEzNCw3IEBACiAKICMuIFRoZSBtZXNzYWdlcyBhcmUgZm9ybWF0dGVkIHRvIGxpbmUgdXAgd2l0aCB0aGUgZ2VuZXJpYyBvcHRpb25zLgogIzogY29uZmlnL3RjLWNyaXMuYzozMDc4CisjLCBjLWZvcm1hdAogbXNnaWQgIkNSSVMtc3BlY2lmaWMgb3B0aW9uczpcbiIKIG1zZ3N0ciAiIgogCkBAIC0zMDU4LDYgKzMyMDUsNyBAQAogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy1kMTB2LmM6MjUyCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJEMTBWIG9wdGlvbnM6XG4iCiAiLU8gICAgICAgICAgICAgICAgICAgICAgT3B0aW1pemUuICBXaWxsIGRvIHNvbWUgb3BlcmF0aW9ucyBpbiBwYXJhbGxlbC5cbiIKQEAgLTMwNjgsOCArMzIxNiw4IEBACiBtc2dzdHIgIiIKIAogIzogY29uZmlnL3RjLWQxMHYuYzo1NDMgY29uZmlnL3RjLWQzMHYuYzo1NDkgY29uZmlnL3RjLW1uMTAyMDAuYzo5MzcKLSM6IGNvbmZpZy90Yy1tbjEwMzAwLmM6MTgxMiBjb25maWcvdGMtcHBjLmM6MjMzMiBjb25maWcvdGMtczM5MC5jOjEyMzQKLSM6IGNvbmZpZy90Yy10aWM4MC5jOjI3NSBjb25maWcvdGMtdjg1MC5jOjIwMjEKKyM6IGNvbmZpZy90Yy1tbjEwMzAwLmM6MTgxMiBjb25maWcvdGMtcHBjLmM6MjM2OSBjb25maWcvdGMtczM5MC5jOjEyMzQKKyM6IGNvbmZpZy90Yy10aWM4MC5jOjI3NSBjb25maWcvdGMtdjg1MC5jOjIwMzgKIG1zZ2lkICJpbGxlZ2FsIG9wZXJhbmQiCiBtc2dzdHIgIiIKIApAQCAtMzE2OSw3ICszMzE3LDcgQEAKIG1zZ2lkICJiYWQgb3Bjb2RlIG9yIG9wZXJhbmRzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1kMTB2LmM6MTUwMyBjb25maWcvdGMtbTY4ay5jOjQzMDUKKyM6IGNvbmZpZy90Yy1kMTB2LmM6MTUwMyBjb25maWcvdGMtbTY4ay5jOjQ0NzUKIG1zZ2lkICJ2YWx1ZSBvdXQgb2YgcmFuZ2UiCiBtc2dzdHIgIiIKIApAQCAtMzIwMSw2ICszMzQ5LDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMtZDMwdi5jOjI4NworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiRDMwViBvcHRpb25zOlxuIgpAQCAtMzMzMiw3ICszNDgxLDcgQEAKIG1zZ2lkICJ2YWx1ZSB0b28gbGFyZ2UgdG8gZml0IGluICVkIGJpdHMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWQzMHYuYzoyMTk2CisjOiBjb25maWcvdGMtZDMwdi5jOjIxOTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWxpZ25tZW50IHRvbyBsYXJnZTogJWQgYXNzdW1lZCIKIG1zZ3N0ciAiIgpAQCAtMzM0NSw0OCArMzQ5NCw0OSBAQAogbXNnaWQgIi5lbmRmdW5jIG1pc3NpbmcgZm9yIHByZXZpb3VzIC5wcm9jIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1kbHguYzo0OTgKKyM6IGNvbmZpZy90Yy1kbHguYzo0OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXhwcmVzc2lvbiBFcnJvciBmb3Igb3BlcmFuZCBtb2RpZmllciAlJWhpLyUlbG9cbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZGx4LmM6NTUyCisjOiBjb25maWcvdGMtZGx4LmM6NTUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCBvcGVyYW5kIGZvciBhIGxvYWQgaW5zdHJ1Y3Rpb246IDwlcz4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWRseC5jOjY2NworIzogY29uZmlnL3RjLWRseC5jOjY2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJCYWQgb3BlcmFuZCBmb3IgYSBzdG9yZSBpbnN0cnVjdGlvbjogPCVzPiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZGx4LmM6ODY1CisjOiBjb25maWcvdGMtZGx4LmM6ODY0CiBtc2dpZCAiQ2FuIG5vdCBzZXQgZGx4X3NraXBfaGkxNl9mbGFnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1kbHguYzo4NzkKKyM6IGNvbmZpZy90Yy1kbHguYzo4NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWlzc2luZyBhcmd1bWVudHMgZm9yIG9wY29kZSA8JXM+LiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZGx4LmM6OTUwCisjOiBjb25maWcvdGMtZGx4LmM6OTQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJvdGggdGhlX2luc24uSEkgYW5kIHRoZV9pbnNuLkxPIGFyZSBzZXQgOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZGx4LmM6MTAyMgorIzogY29uZmlnL3RjLWRseC5jOjEwMjEKIG1zZ2lkICJmYWlsZWQgcmVnbnVtIHNhbml0eSBjaGVjay4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWRseC5jOjEwMzUKKyM6IGNvbmZpZy90Yy1kbHguYzoxMDM0CiBtc2dpZCAiZmFpbGVkIGdlbmVyYWwgcmVnaXN0ZXIgc2FuaXR5IGNoZWNrLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZGx4LmM6MTMyNAorIzogY29uZmlnL3RjLWRseC5jOjEzMjEKIG1zZ2lkICJJbnZhbGlkIGV4cHJlc3Npb24gYWZ0ZXIgIyBudW1iZXJcbiIKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMtZnIzMC5jOjg1CisjLCBjLWZvcm1hdAogbXNnaWQgIiBGUjMwIHNwZWNpZmljIGNvbW1hbmQgbGluZSBvcHRpb25zOlxuIgogbXNnc3RyICIiCiAKQEAgLTMzOTUsMjgyICszNTQ1LDMxNyBAQAogbXNnaWQgIkluc3RydWN0aW9uICVzIG5vdCBhbGxvd2VkIGluIGEgZGVsYXkgc2xvdC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZyMzAuYzozODMgY29uZmlnL3RjLW0zMnIuYzoxNTc2CisjOiBjb25maWcvdGMtZnIzMC5jOjM4MyBjb25maWcvdGMtbTMyci5jOjE4NTAKIG1zZ2lkICJBZGRlbmQgdG8gdW5yZXNvbHZlZCBzeW1ib2wgbm90IG9uIHdvcmQgYm91bmRhcnkuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1mcjMwLmM6NTI0IGNvbmZpZy90Yy1mcnYuYzoxMjg5IGNvbmZpZy90Yy1pOTYwLmM6Nzk4Ci0jOiBjb25maWcvdGMtaXAyay5jOjM1MSBjb25maWcvdGMtbTMyci5jOjE4ODQgY29uZmlnL3RjLW9wZW5yaXNjLmM6NDUyCisjOiBjb25maWcvdGMtZnIzMC5jOjUyNCBjb25maWcvdGMtZnJ2LmM6MTQ3OCBjb25maWcvdGMtaTk2MC5jOjc5OAorIzogY29uZmlnL3RjLWlwMmsuYzozNTAgY29uZmlnL3RjLW0zMnIuYzoyMTY2IGNvbmZpZy90Yy1vcGVucmlzYy5jOjQ1MgogIzogY29uZmlnL3RjLXhzdG9ybXkxNi5jOjYzNgogbXNnaWQgIkJhZCBjYWxsIHRvIG1kX2F0b2YoKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZnJ2LmM6NDEzCisjOiBjb25maWcvdGMtZnJ2LmM6NDQ3CisjLCBjLWZvcm1hdAogbXNnaWQgIkZSViBzcGVjaWZpYyBjb21tYW5kIGxpbmUgb3B0aW9uczpcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZnJ2LmM6NDE0CisjOiBjb25maWcvdGMtZnJ2LmM6NDQ4CisjLCBjLWZvcm1hdAogbXNnaWQgIi1HIG4gICAgICAgICBEYXRhID49IG4gYnl0ZXMgaXMgaW4gc21hbGwgZGF0YSBhcmVhXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZydi5jOjQxNQorIzogY29uZmlnL3RjLWZydi5jOjQ0OQorIywgYy1mb3JtYXQKIG1zZ2lkICItbWdwci0zMiAgICAgTm90ZSAzMiBncHJzIGFyZSB1c2VkXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZydi5jOjQxNgorIzogY29uZmlnL3RjLWZydi5jOjQ1MAorIywgYy1mb3JtYXQKIG1zZ2lkICItbWdwci02NCAgICAgTm90ZSA2NCBncHJzIGFyZSB1c2VkXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZydi5jOjQxNworIzogY29uZmlnL3RjLWZydi5jOjQ1MQorIywgYy1mb3JtYXQKIG1zZ2lkICItbWZwci0zMiAgICAgTm90ZSAzMiBmcHJzIGFyZSB1c2VkXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZydi5jOjQxOAorIzogY29uZmlnL3RjLWZydi5jOjQ1MgorIywgYy1mb3JtYXQKIG1zZ2lkICItbWZwci02NCAgICAgTm90ZSA2NCBmcHJzIGFyZSB1c2VkXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZydi5jOjQxOQorIzogY29uZmlnL3RjLWZydi5jOjQ1MworIywgYy1mb3JtYXQKIG1zZ2lkICItbXNvZnQtZmxvYXQgTm90ZSBzb2Z0d2FyZSBmcCBpcyB1c2VkXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZydi5jOjQyMAorIzogY29uZmlnL3RjLWZydi5jOjQ1NAorIywgYy1mb3JtYXQKIG1zZ2lkICItbWR3b3JkICAgICAgTm90ZSBzdGFjayBpcyBhbGlnbmVkIHRvIGEgOCBieXRlIGJvdW5kYXJ5XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZydi5jOjQyMQorIzogY29uZmlnL3RjLWZydi5jOjQ1NQorIywgYy1mb3JtYXQKIG1zZ2lkICItbW5vLWR3b3JkICAgTm90ZSBzdGFjayBpcyBhbGlnbmVkIHRvIGEgNCBieXRlIGJvdW5kYXJ5XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZydi5jOjQyMgorIzogY29uZmlnL3RjLWZydi5jOjQ1NgorIywgYy1mb3JtYXQKIG1zZ2lkICItbWRvdWJsZSAgICAgTm90ZSBmcCBkb3VibGUgaW5zbnMgYXJlIHVzZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZnJ2LmM6NDIzCisjOiBjb25maWcvdGMtZnJ2LmM6NDU3CisjLCBjLWZvcm1hdAogbXNnaWQgIi1tbWVkaWEgICAgICBOb3RlIG1lZGlhIGluc25zIGFyZSB1c2VkXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZydi5jOjQyNAorIzogY29uZmlnL3RjLWZydi5jOjQ1OAorIywgYy1mb3JtYXQKIG1zZ2lkICItbW11bGFkZCAgICAgTm90ZSBtdWx0aXBseSBhZGQvc3VidHJhY3QgaW5zbnMgYXJlIHVzZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZnJ2LmM6NDI1CisjOiBjb25maWcvdGMtZnJ2LmM6NDU5CisjLCBjLWZvcm1hdAogbXNnaWQgIi1tcGFjayAgICAgICBOb3RlIGluc3RydWN0aW9ucyBhcmUgcGFja2VkXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZydi5jOjQyNgorIzogY29uZmlnL3RjLWZydi5jOjQ2MAorIywgYy1mb3JtYXQKIG1zZ2lkICItbW5vLXBhY2sgICAgRG8gbm90IGFsbG93IGluc3RydWN0aW9ucyB0byBiZSBwYWNrZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZnJ2LmM6NDI3CisjOiBjb25maWcvdGMtZnJ2LmM6NDYxCisjLCBjLWZvcm1hdAogbXNnaWQgIi1tcGljICAgICAgICBOb3RlIHNtYWxsIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGVcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZnJ2LmM6NDI4CisjOiBjb25maWcvdGMtZnJ2LmM6NDYyCisjLCBjLWZvcm1hdAogbXNnaWQgIi1tUElDICAgICAgICBOb3RlIGxhcmdlIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGVcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZnJ2LmM6NDI5CisjOiBjb25maWcvdGMtZnJ2LmM6NDYzCisjLCBjLWZvcm1hdAogbXNnaWQgIi1tbGlicmFyeS1waWMgQ29tcGlsZSBsaWJyYXJ5IGZvciBsYXJnZSBwb3NpdGlvbiBpbmRlcGVkZW50IGNvZGVcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZnJ2LmM6NDMwCi1tc2dpZCAiLW1jcHU9e2ZyNTAwfGZyNDAwfGZyMzAwfGZydnxzaW1wbGV8dG9tY2F0fVxuIgorIzogY29uZmlnL3RjLWZydi5jOjQ2NAorIywgYy1mb3JtYXQKK21zZ2lkICItbWNwdT17ZnI1MDB8ZnI1NTB8ZnI0MDB8ZnI0MDV8ZnI0NTB8ZnIzMDB8ZnJ2fHNpbXBsZXx0b21jYXR9XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZydi5jOjQzMQorIzogY29uZmlnL3RjLWZydi5jOjQ2NQorIywgYy1mb3JtYXQKIG1zZ2lkICIgICAgICAgICAgICAgUmVjb3JkIHRoZSBjcHUgdHlwZVxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1mcnYuYzo0MzIKKyM6IGNvbmZpZy90Yy1mcnYuYzo0NjYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiLW10b21jYXQtc3RhdHMgUHJpbnQgb3V0IHN0YXRzIGZvciB0b21jYXQgd29ya2Fyb3VuZHNcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZnJ2LmM6NDMzCisjOiBjb25maWcvdGMtZnJ2LmM6NDY3CisjLCBjLWZvcm1hdAogbXNnaWQgIi1tdG9tY2F0LWRlYnVnIERlYnVnIHRvbWNhdCB3b3JrYXJvdW5kc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1mcnYuYzoxMDEyCisjOiBjb25maWcvdGMtZnJ2LmM6MTE2NQogbXNnaWQgIlZMSVcgcGFja2luZyB1c2VkIGZvciAtbW5vLXBhY2siCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWZydi5jOjEwMjUKKyM6IGNvbmZpZy90Yy1mcnYuYzoxMTc1Cittc2dpZCAiSW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGFyY2hpdGVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtZnJ2LmM6MTE4NQogbXNnaWQgIlZMSVcgcGFja2luZyBjb25zdHJhaW50IHZpb2xhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtZnJ2LmM6MTU0MAorIzogY29uZmlnL3RjLWZydi5jOjE3NDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVsb2NhdGlvbiAlcyBpcyBub3Qgc2FmZSBmb3IgJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6ODQgY29uZmlnL3RjLWg4MzAwLmM6OTYgY29uZmlnL3RjLWg4MzAwLmM6MTA5Ci0jOiBjb25maWcvdGMtaDgzMDAuYzoxMjIgY29uZmlnL3RjLWg4MzAwLmM6MTM1IGNvbmZpZy90Yy1oODMwMC5jOjE0OQotIzogY29uZmlnL3RjLWg4MzAwLmM6MjIyIGNvbmZpZy90Yy1ocHBhLmM6MTQyMyBjb25maWcvdGMtaHBwYS5jOjY5MDkKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NjkxNSBjb25maWcvdGMtaHBwYS5jOjY5MjEgY29uZmlnL3RjLWhwcGEuYzo2OTI3CisjOiBjb25maWcvdGMtaDgzMDAuYzo4MiBjb25maWcvdGMtaDgzMDAuYzo5MyBjb25maWcvdGMtaDgzMDAuYzoxMDUKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjExNyBjb25maWcvdGMtaDgzMDAuYzoxMjkgY29uZmlnL3RjLWg4MzAwLmM6MTQyCisjOiBjb25maWcvdGMtaDgzMDAuYzoyMTMgY29uZmlnL3RjLWhwcGEuYzoxNDM2IGNvbmZpZy90Yy1ocHBhLmM6NjkyMAorIzogY29uZmlnL3RjLWhwcGEuYzo2OTI2IGNvbmZpZy90Yy1ocHBhLmM6NjkzMiBjb25maWcvdGMtaHBwYS5jOjY5MzgKICM6IGNvbmZpZy90Yy1tbjEwMzAwLmM6MTIxOCBjb25maWcvdGMtbW4xMDMwMC5jOjEyMjMgY29uZmlnL3RjLW1uMTAzMDAuYzoyNzIyCiBtc2dpZCAiY291bGQgbm90IHNldCBhcmNoaXRlY3R1cmUgYW5kIG1hY2hpbmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6NDM2IGNvbmZpZy90Yy1oODMwMC5jOjQ0NAorIzogY29uZmlnL3RjLWg4MzAwLmM6NDE2IGNvbmZpZy90Yy1oODMwMC5jOjQyNAogbXNnaWQgIlJlZyBub3QgdmFsaWQgZm9yIEg4LzMwMCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaDgzMDAuYzo1MjkKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjUwNQogbXNnaWQgImludmFsaWQgb3BlcmFuZCBzaXplIHJlcXVlc3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaDgzMDAuYzo2MjYgY29uZmlnL3RjLWg4MzAwLmM6NjI5CisjOiBjb25maWcvdGMtaDgzMDAuYzo2MDQKIG1zZ2lkICJJbnZhbGlkIHJlZ2lzdGVyIGxpc3QgZm9yIGxkbS9zdG1cbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaDgzMDAuYzo2MzIKLW1zZ2lkICJJbnZhbGlkIHJlZ2lzdGVyIGxpc3QgZm9yIGxkbS9zdG0pXG4iCi1tc2dzdHIgIiIKLQotIzogY29uZmlnL3RjLWg4MzAwLmM6NjU4IGNvbmZpZy90Yy1oODMwMC5jOjY2MyBjb25maWcvdGMtaDgzMDAuYzo2NzAKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjYzMCBjb25maWcvdGMtaDgzMDAuYzo2MzUgY29uZmlnL3RjLWg4MzAwLmM6NjQyCiBtc2dpZCAibWlzbWF0Y2ggYmV0d2VlbiByZWdpc3RlciBhbmQgc3VmZml4IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjY5NworIzogY29uZmlnL3RjLWg4MzAwLmM6NjY5CiBtc2dpZCAiYWRkcmVzcyB0b28gaGlnaCBmb3IgdmVjdG9yIHRhYmxlIGptcC9qc3IiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6NzIyIGNvbmZpZy90Yy1oODMwMC5jOjgzMiBjb25maWcvdGMtaDgzMDAuYzo4NDAKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjY5NiBjb25maWcvdGMtaDgzMDAuYzo4MDggY29uZmlnL3RjLWg4MzAwLmM6ODE4CiBtc2dpZCAiV3Jvbmcgc2l6ZSBwb2ludGVyIHJlZ2lzdGVyIGZvciBhcmNoaXRlY3R1cmUuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjc4MSBjb25maWcvdGMtaDgzMDAuYzo3ODkgY29uZmlnL3RjLWg4MzAwLmM6ODE4CisjOiBjb25maWcvdGMtaDgzMDAuYzo3NTUgY29uZmlnL3RjLWg4MzAwLmM6NzYzIGNvbmZpZy90Yy1oODMwMC5jOjc5MgogbXNnaWQgImV4cGVjdGVkIEAoZXhwLCByZWcxNikiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6ODA3CisjOiBjb25maWcvdGMtaDgzMDAuYzo3ODEKIG1zZ2lkICJleHBlY3RlZCAuTCwgLlcgb3IgLkIgZm9yIHJlZ2lzdGVyIGluIGluZGV4ZWQgYWRkcmVzc2luZyBtb2RlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjEwMDAKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjk3NQogbXNnaWQgImV4cGVjdGVkIHZhbGlkIGFkZHJlc3NpbmcgbW9kZSBmb3IgbW92YTogXCJAKGRpc3AsIGVhLnN6KSxFUm5cIiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaDgzMDAuYzoxMDE4IGNvbmZpZy90Yy1oODMwMC5jOjEwMjcKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjk5MiBjb25maWcvdGMtaDgzMDAuYzoxMDAxCiBtc2dpZCAiZXhwZWN0ZWQgcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6MTA0MworIzogY29uZmlnL3RjLWg4MzAwLmM6MTAxNwogbXNnaWQgImV4cGVjdGVkIGNsb3NpbmcgcGFyZW4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6MTEwNAorIzogY29uZmlnL3RjLWg4MzAwLmM6MTA3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW4ndCB1c2UgaGlnaCBwYXJ0IG9mIHJlZ2lzdGVyIGluIG9wZXJhbmQgJWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6MTI2OAorIzogY29uZmlnL3RjLWg4MzAwLmM6MTI0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJPcGNvZGUgYCVzJyB3aXRoIHRoZXNlIG9wZXJhbmQgdHlwZXMgbm90IGF2YWlsYWJsZSBpbiAlcyBtb2RlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjEyNzcKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjEyNTEKIG1zZ2lkICJtaXNtYXRjaCBiZXR3ZWVuIG9wY29kZSBzaXplIGFuZCBvcGVyYW5kIHNpemUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6MTMxNgorIzogY29uZmlnL3RjLWg4MzAwLmM6MTI4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJvcGVyYW5kICVzMHglbHggb3V0IG9mIHJhbmdlLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaDgzMDAuYzoxNDE1CisjOiBjb25maWcvdGMtaDgzMDAuYzoxMzgzCiBtc2dpZCAiQ2FuJ3Qgd29yayBvdXQgc2l6ZSBvZiBvcGVyYW5kLlxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjE0NjYKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjE0MzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3Bjb2RlIGAlcycgd2l0aCB0aGVzZSBvcGVyYW5kIHR5cGVzIG5vdCBhdmFpbGFibGUgaW4gSDgvMzAwIG1vZGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6MTQ3MQorIzogY29uZmlnL3RjLWg4MzAwLmM6MTQzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJPcGNvZGUgYCVzJyB3aXRoIHRoZXNlIG9wZXJhbmQgdHlwZXMgbm90IGF2YWlsYWJsZSBpbiBIOC8zMDBIIG1vZGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6MTQ3NworIzogY29uZmlnL3RjLWg4MzAwLmM6MTQ0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJPcGNvZGUgYCVzJyB3aXRoIHRoZXNlIG9wZXJhbmQgdHlwZXMgbm90IGF2YWlsYWJsZSBpbiBIOC8zMDBTIG1vZGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6MTUzOCBjb25maWcvdGMtaDgzMDAuYzoxNTU4CisjOiBjb25maWcvdGMtaDgzMDAuYzoxNTA0IGNvbmZpZy90Yy1oODMwMC5jOjE1MjQKIG1zZ2lkICJOZWVkICMxIG9yICMyIGhlcmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6MTU1MworIzogY29uZmlnL3RjLWg4MzAwLmM6MTUxOQogbXNnaWQgIiM0IG5vdCB2YWxpZCBvbiBIOC8zMDAuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjE2NDUgY29uZmlnL3RjLWg4MzAwLmM6MTcyNworIzogY29uZmlnL3RjLWg4MzAwLmM6MTYyNSBjb25maWcvdGMtaDgzMDAuYzoxNzA3CiAjLCBjLWZvcm1hdAogbXNnaWQgImJyYW5jaCBvcGVyYW5kIGhhcyBvZGQgb2Zmc2V0ICglbHgpXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6MTc2NgorIzogY29uZmlnL3RjLWg4MzAwLmM6MTc0NQogbXNnaWQgImRlc3RpbmF0aW9uIG9wZXJhbmQgbXVzdCBiZSAxNiBiaXQgcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6MTc3NQorIzogY29uZmlnL3RjLWg4MzAwLmM6MTc1NAogbXNnaWQgInNvdXJjZSBvcGVyYW5kIG11c3QgYmUgOCBiaXQgcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6MTc4MworIzogY29uZmlnL3RjLWg4MzAwLmM6MTc2MgogbXNnaWQgImRlc3RpbmF0aW9uIG9wZXJhbmQgbXVzdCBiZSAxNmJpdCBhYnNvbHV0ZSBhZGRyZXNzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjE3OTAKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjE3NjkKIG1zZ2lkICJkZXN0aW5hdGlvbiBvcGVyYW5kIG11c3QgYmUgOCBiaXQgcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4MzAwLmM6MTc5OAorIzogY29uZmlnL3RjLWg4MzAwLmM6MTc3NwogbXNnaWQgInNvdXJjZSBvcGVyYW5kIG11c3QgYmUgMTZiaXQgYWJzb2x1dGUgYWRkcmVzcyIKIG1zZ3N0ciAiIgogCiAjLiBUaGlzIHNlZW1zIG1vcmUgc2FuZSB0aGFuIHNheWluZyAidG9vIG1hbnkgb3BlcmFuZHMiLiAgV2UnbGwKICMuIGdldCBoZXJlIG9ubHkgaWYgdGhlIHRyYWlsaW5nIHRyYXNoIHN0YXJ0cyB3aXRoIGEgY29tbWEuCi0jOiBjb25maWcvdGMtaDgzMDAuYzoxODA2IGNvbmZpZy90Yy1tbWl4LmM6NDU0IGNvbmZpZy90Yy1tbWl4LmM6NDY2Ci0jOiBjb25maWcvdGMtbW1peC5jOjI1MDIgY29uZmlnL3RjLW1taXguYzoyNTI2IGNvbmZpZy90Yy1tbWl4LmM6MjgwMgorIy4gVHlwZXMgb3IgdmFsdWVzIG9mIGFyZ3MgZG9uJ3QgbWF0Y2guCisjOiBjb25maWcvdGMtaDgzMDAuYzoxNzg1IGNvbmZpZy90Yy1tbWl4LmM6NDk5IGNvbmZpZy90Yy1tbWl4LmM6NTExCisjOiBjb25maWcvdGMtbW1peC5jOjI1NzcgY29uZmlnL3RjLW1taXguYzoyNjAxIGNvbmZpZy90Yy1tbWl4LmM6Mjg3OAogIzogY29uZmlnL3RjLW9yMzIuYzo2NDAgY29uZmlnL3RjLW9yMzIuYzo4NTQKIG1zZ2lkICJpbnZhbGlkIG9wZXJhbmRzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjE4MzkKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjE4MTYKIG1zZ2lkICJvcGVyYW5kL3NpemUgbWlzLW1hdGNoIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjE5MjYgY29uZmlnL3RjLWg4NTAwLmM6MTExMiBjb25maWcvdGMtbWlwcy5jOjkzMDIKLSM6IGNvbmZpZy90Yy1zaC5jOjIzNjMgY29uZmlnL3RjLXNoNjQuYzoyODM3IGNvbmZpZy90Yy13NjUuYzo2OTEKLSM6IGNvbmZpZy90Yy16OGsuYzoxMjQ4CisjOiBjb25maWcvdGMtaDgzMDAuYzoxOTEyIGNvbmZpZy90Yy1oODUwMC5jOjExMTIgY29uZmlnL3RjLW1pcHMuYzo5Mjg5CisjOiBjb25maWcvdGMtc2g2NC5jOjI3ODQgY29uZmlnL3RjLXNoLmM6MjY1NSBjb25maWcvdGMtdzY1LmM6NjkxCisjOiBjb25maWcvdGMtejhrLmM6MTIxNAogbXNnaWQgInVua25vd24gb3Bjb2RlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjIwMzEgY29uZmlnL3RjLWg4NTAwLmM6MTEzOSBjb25maWcvdGMtc2guYzoyNDgzCi0jOiBjb25maWcvdGMtejhrLmM6MTMwNAorIzogY29uZmlnL3RjLWg4MzAwLmM6MTk0NQorbXNnaWQgImludmFsaWQgb3BlcmFuZCBpbiBsZG0iCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWg4MzAwLmM6MTk1NAorbXNnaWQgImludmFsaWQgb3BlcmFuZCBpbiBzdG0iCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWg4MzAwLmM6MjAzNyBjb25maWcvdGMtaDg1MDAuYzoxMTM5IGNvbmZpZy90Yy1zaC5jOjI3ODAKKyM6IGNvbmZpZy90Yy16OGsuYzoxMjY5CisjLCBjLWZvcm1hdAogbXNnaWQgImNhbGwgdG8gdGNfY3Jhd2xfc3ltYm9sX2NoYWluIFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjIwNDcgY29uZmlnL3RjLWg4NTAwLmM6MTE1MyBjb25maWcvdGMtc2guYzoyNDkwCi0jOiBjb25maWcvdGMtejhrLmM6MTMyMAorIzogY29uZmlnL3RjLWg4MzAwLmM6MjA1MSBjb25maWcvdGMtaDg1MDAuYzoxMTUzIGNvbmZpZy90Yy1zaC5jOjI3ODYKKyM6IGNvbmZpZy90Yy16OGsuYzoxMjgzCisjLCBjLWZvcm1hdAogbXNnaWQgImNhbGwgdG8gdGNfaGVhZGVyc19ob29rIFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjIxNDAKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjIxMzgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiY2FsbCB0byB0Y19hb3V0X2ZpeF90b19jaGFycyBcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaDgzMDAuYzoyMTU0CisjOiBjb25maWcvdGMtaDgzMDAuYzoyMTUyCisjLCBjLWZvcm1hdAogbXNnaWQgImNhbGwgdG8gbWRfY29udmVydF9mcmFnIFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjIyMTYKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjIyMDYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiY2FsbCB0b21kX2VzdGltYXRlX3NpemVfYmVmb3JlX3JlbGF4IFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODMwMC5jOjIzMzcgY29uZmlnL3RjLW1jb3JlLmM6MjM1NSBjb25maWcvdGMtcGouYzo1ODEKLSM6IGNvbmZpZy90Yy1zaC5jOjM5NTYKKyM6IGNvbmZpZy90Yy1oODMwMC5jOjIzMTcgY29uZmlnL3RjLW1jb3JlLmM6MjM1NSBjb25maWcvdGMtcGouYzo1ODEKKyM6IGNvbmZpZy90Yy1zaC5jOjQyNDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHJlcHJlc2VudCByZWxvY2F0aW9uIHR5cGUgJXMiCiBtc2dzdHIgIiIKQEAgLTM3MDMsNyArMzg4OCw3IEBACiBtc2dpZCAiQFJuIG5lZWRzIHdvcmQgcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4NTAwLmM6ODM4IGNvbmZpZy90Yy1zaC5jOjE4MjcKKyM6IGNvbmZpZy90Yy1oODUwMC5jOjgzOCBjb25maWcvdGMtc2guYzoyMDEzCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuaGFuZGxlZCAlZFxuIgogbXNnc3RyICIiCkBAIC0zNzEzLDU5NyArMzg5OCw2MDEgQEAKIG1zZ2lkICJvcGVyYW5kIG11c3QgYmUgYWJzb2x1dGUgaW4gcmFuZ2UgJWQuLiVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1oODUwMC5jOjk2MyBjb25maWcvdGMtc2guYzoyMDM2CisjOiBjb25maWcvdGMtaDg1MDAuYzo5NjMgY29uZmlnL3RjLXNoLmM6MjIxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgZm9yICVkXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWg4NTAwLmM6MTEyOCBjb25maWcvdGMtc2guYzoyMTM4IGNvbmZpZy90Yy1zaC5jOjI0MTIKKyM6IGNvbmZpZy90Yy1oODUwMC5jOjExMjggY29uZmlnL3RjLXNoLmM6MjMxNiBjb25maWcvdGMtc2guYzoyNzExCiAjOiBjb25maWcvdGMtdzY1LmM6NzEwCiBtc2dpZCAiaW52YWxpZCBvcGVyYW5kcyBmb3Igb3Bjb2RlIgogbXNnc3RyICIiCiAKLSMuIFNpbXBsZSByYW5nZSBjaGVja2luZyBmb3IgRklFTEQgYWdhaW50IEhJR0ggYW5kIExPVyBib3VuZHMuCisjLiBTaW1wbGUgcmFuZ2UgY2hlY2tpbmcgZm9yIEZJRUxEIGFnYWluc3QgSElHSCBhbmQgTE9XIGJvdW5kcy4KICMuIElHTk9SRSBpcyB1c2VkIHRvIHN1cHByZXNzIHRoZSBlcnJvciBtZXNzYWdlLgotIzogY29uZmlnL3RjLWhwcGEuYzoxMTU2IGNvbmZpZy90Yy1ocHBhLmM6MTE3MAorIy4gVmFyaWFudCBvZiBDSEVDS19GSUVMRCBmb3IgdXNlIGluIG1kX2FwcGx5X2ZpeDMgYW5kIG90aGVyIHBsYWNlcyB3aGVyZQorIy4gdGhlIGN1cnJlbnQgZmlsZSBhbmQgbGluZSBudW1iZXIgYXJlIG5vdCB2YWxpZC4KKyM6IGNvbmZpZy90Yy1ocHBhLmM6MTE2OSBjb25maWcvdGMtaHBwYS5jOjExODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmllbGQgb3V0IG9mIHJhbmdlIFslZC4uJWRdICglZCkuIgogbXNnc3RyICIiCiAKLSMuIFNpbXBsZSBhbGlnbm1lbnQgY2hlY2tpbmcgZm9yIEZJRUxEIGFnYWludCBBTElHTiAoYSBwb3dlciBvZiB0d28pLgorIy4gU2ltcGxlIGFsaWdubWVudCBjaGVja2luZyBmb3IgRklFTEQgYWdhaW5zdCBBTElHTiAoYSBwb3dlciBvZiB0d28pLgogIy4gSUdOT1JFIGlzIHVzZWQgdG8gc3VwcHJlc3MgdGhlIGVycm9yIG1lc3NhZ2UuCi0jOiBjb25maWcvdGMtaHBwYS5jOjExODQKKyM6IGNvbmZpZy90Yy1ocHBhLmM6MTE5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJGaWVsZCBub3QgcHJvcGVybHkgYWxpZ25lZCBbJWRdICglZCkuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MTIxMworIzogY29uZmlnL3RjLWhwcGEuYzoxMjI2CiBtc2dpZCAiTWlzc2luZyAuZXhpdFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MTIxNgorIzogY29uZmlnL3RjLWhwcGEuYzoxMjI5CiBtc2dpZCAiTWlzc2luZyAucHJvY2VuZFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MTM5NgorIzogY29uZmlnL3RjLWhwcGEuYzoxNDA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgZmllbGQgc2VsZWN0b3IuICBBc3N1bWluZyBGJSUuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MTQyOQorIzogY29uZmlnL3RjLWhwcGEuYzoxNDQyCiBtc2dpZCAiLVIgb3B0aW9uIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MTQ0NSBjb25maWcvdGMtc3BhcmMuYzo4MDkgY29uZmlnL3RjLXNwYXJjLmM6ODQ1CisjOiBjb25maWcvdGMtaHBwYS5jOjE0NTggY29uZmlnL3RjLXNwYXJjLmM6ODE0IGNvbmZpZy90Yy1zcGFyYy5jOjg1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnRlcm5hbCBlcnJvcjogY2FuJ3QgaGFzaCBgJXMnOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MTQ1MyBjb25maWcvdGMtaTg2MC5jOjIwMQorIzogY29uZmlnL3RjLWhwcGEuYzoxNDY2IGNvbmZpZy90Yy1pODYwLmM6MjM4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludGVybmFsIGVycm9yOiBsb3Npbmcgb3Bjb2RlOiBgJXMnIFwiJXNcIlxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MTUyNCBjb25maWcvdGMtaHBwYS5jOjcwNDggY29uZmlnL3RjLWhwcGEuYzo3MTA1CisjOiBjb25maWcvdGMtaHBwYS5jOjE1MzcgY29uZmlnL3RjLWhwcGEuYzo3MDU5IGNvbmZpZy90Yy1ocHBhLmM6NzExNgogbXNnaWQgIk1pc3NpbmcgZnVuY3Rpb24gbmFtZSBmb3IgLlBST0MgKGNvcnJ1cHRlZCBsYWJlbCBjaGFpbikiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzoxNTI3IGNvbmZpZy90Yy1ocHBhLmM6NzEwOAorIzogY29uZmlnL3RjLWhwcGEuYzoxNTQwIGNvbmZpZy90Yy1ocHBhLmM6NzExOQogbXNnaWQgIk1pc3NpbmcgZnVuY3Rpb24gbmFtZSBmb3IgLlBST0MiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzoxNjM0IGNvbmZpZy90Yy1ocHBhLmM6NDkwNQorIzogY29uZmlnL3RjLWhwcGEuYzoxNjQ3IGNvbmZpZy90Yy1ocHBhLmM6NDkxNgogbXNnaWQgImNvdWxkIG5vdCB1cGRhdGUgYXJjaGl0ZWN0dXJlIGFuZCBtYWNoaW5lIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MTg0MgorIzogY29uZmlnL3RjLWhwcGEuYzoxODU1CiBtc2dpZCAiSW52YWxpZCBJbmRleGVkIExvYWQgQ29tcGxldGVyLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjE4NDcKKyM6IGNvbmZpZy90Yy1ocHBhLmM6MTg2MAogbXNnaWQgIkludmFsaWQgSW5kZXhlZCBMb2FkIENvbXBsZXRlciBTeW50YXguIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MTg4NAorIzogY29uZmlnL3RjLWhwcGEuYzoxODk3CiBtc2dpZCAiSW52YWxpZCBTaG9ydCBMb2FkL1N0b3JlIENvbXBsZXRlci4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzoxOTQ0IGNvbmZpZy90Yy1ocHBhLmM6MTk0OQorIzogY29uZmlnL3RjLWhwcGEuYzoxOTU3IGNvbmZpZy90Yy1ocHBhLmM6MTk2MgogbXNnaWQgIkludmFsaWQgU3RvcmUgQnl0ZXMgU2hvcnQgQ29tcGxldGVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MjI2MCBjb25maWcvdGMtaHBwYS5jOjIyNjYKKyM6IGNvbmZpZy90Yy1ocHBhLmM6MjI3MyBjb25maWcvdGMtaHBwYS5jOjIyNzkKIG1zZ2lkICJJbnZhbGlkIGxlZnQvcmlnaHQgY29tYmluYXRpb24gY29tcGxldGVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MjMxNSBjb25maWcvdGMtaHBwYS5jOjIzMjIKKyM6IGNvbmZpZy90Yy1ocHBhLmM6MjMyOCBjb25maWcvdGMtaHBwYS5jOjIzMzUKIG1zZ2lkICJJbnZhbGlkIHBlcm11dGF0aW9uIGNvbXBsZXRlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjI0MjMKKyM6IGNvbmZpZy90Yy1ocHBhLmM6MjQzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIEFkZCBDb25kaXRpb246ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MjQzNCBjb25maWcvdGMtaHBwYS5jOjI0NDQKKyM6IGNvbmZpZy90Yy1ocHBhLmM6MjQ0NiBjb25maWcvdGMtaHBwYS5jOjI0NTYKIG1zZ2lkICJJbnZhbGlkIEFkZCBhbmQgQnJhbmNoIENvbmRpdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjI0NjUgY29uZmlnL3RjLWhwcGEuYzoyNjAzCisjOiBjb25maWcvdGMtaHBwYS5jOjI0NzcgY29uZmlnL3RjLWhwcGEuYzoyNjE0CiBtc2dpZCAiSW52YWxpZCBDb21wYXJlL1N1YnRyYWN0IENvbmRpdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjI1MDUKKyM6IGNvbmZpZy90Yy1ocHBhLmM6MjUxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIEJpdCBCcmFuY2ggQ29uZGl0aW9uOiAlYyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjI1OTEKKyM6IGNvbmZpZy90Yy1ocHBhLmM6MjYwMgogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIENvbXBhcmUvU3VidHJhY3QgQ29uZGl0aW9uOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjI2MTgKKyM6IGNvbmZpZy90Yy1ocHBhLmM6MjYyOQogbXNnaWQgIkludmFsaWQgQ29tcGFyZSBhbmQgQnJhbmNoIENvbmRpdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjI3MTQKKyM6IGNvbmZpZy90Yy1ocHBhLmM6MjcyNQogbXNnaWQgIkludmFsaWQgTG9naWNhbCBJbnN0cnVjdGlvbiBDb25kaXRpb24uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6Mjc2OQorIzogY29uZmlnL3RjLWhwcGEuYzoyNzgwCiBtc2dpZCAiSW52YWxpZCBTaGlmdC9FeHRyYWN0L0RlcG9zaXQgQ29uZGl0aW9uLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjI4ODEKKyM6IGNvbmZpZy90Yy1ocHBhLmM6Mjg5MgogbXNnaWQgIkludmFsaWQgVW5pdCBJbnN0cnVjdGlvbiBDb25kaXRpb24uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MzI1OCBjb25maWcvdGMtaHBwYS5jOjMyOTAgY29uZmlnL3RjLWhwcGEuYzozMzIxCi0jOiBjb25maWcvdGMtaHBwYS5jOjMzNTEKKyM6IGNvbmZpZy90Yy1ocHBhLmM6MzI2OSBjb25maWcvdGMtaHBwYS5jOjMzMDEgY29uZmlnL3RjLWhwcGEuYzozMzMyCisjOiBjb25maWcvdGMtaHBwYS5jOjMzNjIKIG1zZ2lkICJCcmFuY2ggdG8gdW5hbGlnbmVkIGFkZHJlc3MiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzozNTI5CisjOiBjb25maWcvdGMtaHBwYS5jOjM1NDAKIG1zZ2lkICJJbnZhbGlkIFNGVSBpZGVudGlmaWVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6MzU3OQorIzogY29uZmlnL3RjLWhwcGEuYzozNTkwCiBtc2dpZCAiSW52YWxpZCBDT1BSIGlkZW50aWZpZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzozNzA4CisjOiBjb25maWcvdGMtaHBwYS5jOjM3MTkKIG1zZ2lkICJJbnZhbGlkIEZsb2F0aW5nIFBvaW50IE9wZXJhbmQgRm9ybWF0LiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjM4MjUgY29uZmlnL3RjLWhwcGEuYzozODQ1IGNvbmZpZy90Yy1ocHBhLmM6Mzg2NQotIzogY29uZmlnL3RjLWhwcGEuYzozODg1IGNvbmZpZy90Yy1ocHBhLmM6MzkwNQorIzogY29uZmlnL3RjLWhwcGEuYzozODM2IGNvbmZpZy90Yy1ocHBhLmM6Mzg1NiBjb25maWcvdGMtaHBwYS5jOjM4NzYKKyM6IGNvbmZpZy90Yy1ocHBhLmM6Mzg5NiBjb25maWcvdGMtaHBwYS5jOjM5MTYKIG1zZ2lkICJJbnZhbGlkIHJlZ2lzdGVyIGZvciBzaW5nbGUgcHJlY2lzaW9uIGZtcHlhZGQgb3IgZm1weXN1YiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjM5NjIKKyM6IGNvbmZpZy90Yy1ocHBhLmM6Mzk3MwogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIG9wZXJhbmRzICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NDA4MAorIzogY29uZmlnL3RjLWhwcGEuYzo0MDkxCiBtc2dpZCAiQ2Fubm90IGhhbmRsZSBmaXh1cCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjQzODEKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NDM5MgorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC1RICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjQzODUKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NDM5NgorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC1jICAgICAgICAgICAgICAgICAgICAgIHByaW50IGEgd2FybmluZyBpZiBhIGNvbW1lbnQgaXMgZm91bmRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjQ0NTYKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NDQ2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJubyBocHBhX2ZpeHVwIGVudHJ5IGZvciBmaXh1cCB0eXBlIDB4JXgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo0NjI3CisjOiBjb25maWcvdGMtaHBwYS5jOjQ2MzgKIG1zZ2lkICJVbmtub3duIHJlbG9jYXRpb24gZW5jb3VudGVyZWQgaW4gbWRfYXBwbHlfZml4LiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjQ3NjkgY29uZmlnL3RjLWhwcGEuYzo0Nzk0CisjOiBjb25maWcvdGMtaHBwYS5jOjQ3ODAgY29uZmlnL3RjLWhwcGEuYzo0ODA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuZGVmaW5lZCByZWdpc3RlcjogJyVzJy4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo0ODI4CisjOiBjb25maWcvdGMtaHBwYS5jOjQ4MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm9uLWFic29sdXRlIHN5bWJvbDogJyVzJy4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo0ODQzCisjOiBjb25maWcvdGMtaHBwYS5jOjQ4NTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5kZWZpbmVkIGFic29sdXRlIGNvbnN0YW50OiAnJXMnLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjQ5NDQKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NDk1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIEZQIENvbXBhcmUgQ29uZGl0aW9uOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjUwMDAKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NTAxMQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIEZURVNUIGNvbXBsZXRlcjogJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo1MDY3IGNvbmZpZy90Yy1ocHBhLmM6NTEwNQorIzogY29uZmlnL3RjLWhwcGEuYzo1MDc4IGNvbmZpZy90Yy1ocHBhLmM6NTExNgogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIEZQIE9wZXJhbmQgRm9ybWF0OiAlM3MiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo1MTg0CisjOiBjb25maWcvdGMtaHBwYS5jOjUxOTUKIG1zZ2lkICJCYWQgc2VnbWVudCBpbiBleHByZXNzaW9uLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjUyNDMKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NTI1NAogbXNnaWQgIkJhZCBzZWdtZW50IChzaG91bGQgYmUgYWJzb2x1dGUpLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjUyODYKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NTI5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IGxvY2F0aW9uOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NTMxNworIzogY29uZmlnL3RjLWhwcGEuYzo1MzI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgYXJndW1lbnQgZGVzY3JpcHRpb246ICVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NTM0MAorIzogY29uZmlnL3RjLWhwcGEuYzo1MzUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgTnVsbGlmaWNhdGlvbjogKCVjKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjYwNjAKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NjA3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIC5DQUxMIGFyZ3VtZW50OiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjYxODIKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NjE5MwogbXNnaWQgIi5jYWxsaW5mbyBpcyBub3Qgd2l0aGluIGEgcHJvY2VkdXJlIGRlZmluaXRpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo2MjAyCisjOiBjb25maWcvdGMtaHBwYS5jOjYyMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiRlJBTUUgcGFyYW1ldGVyIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4OiAlZFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NjIyMQorIzogY29uZmlnL3RjLWhwcGEuYzo2MjMyCiBtc2dpZCAiVmFsdWUgZm9yIEVOVFJZX0dSIG11c3QgYmUgaW4gdGhlIHJhbmdlIDMuLjE4XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo2MjMzCisjOiBjb25maWcvdGMtaHBwYS5jOjYyNDQKIG1zZ2lkICJWYWx1ZSBmb3IgRU5UUllfRlIgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgMTIuLjIxXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo2MjQzCisjOiBjb25maWcvdGMtaHBwYS5jOjYyNTQKIG1zZ2lkICJWYWx1ZSBmb3IgRU5UUllfU1IgbXVzdCBiZSAzXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo2Mjk5CisjOiBjb25maWcvdGMtaHBwYS5jOjYzMTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCAuQ0FMTElORk8gYXJndW1lbnQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NjQxMAorIzogY29uZmlnL3RjLWhwcGEuYzo2NDIxCiBtc2dpZCAiVGhlIC5FTlRFUiBwc2V1ZG8tb3AgaXMgbm90IHN1cHBvcnRlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjY0MjYKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NjQzNwogbXNnaWQgIk1pc3BsYWNlZCAuZW50cnkuIElnbm9yZWQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NjQzMAorIzogY29uZmlnL3RjLWhwcGEuYzo2NDQxCiBtc2dpZCAiTWlzc2luZyAuY2FsbGluZm8uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NjQ5NgorIzogY29uZmlnL3RjLWhwcGEuYzo2NTA3CiBtc2dpZCAiLlJFRyBleHByZXNzaW9uIG11c3QgYmUgYSByZWdpc3RlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjY1MTIKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NjUyMwogbXNnaWQgImJhZCBvciBpcnJlZHVjaWJsZSBhYnNvbHV0ZSBleHByZXNzaW9uOyB6ZXJvIGFzc3VtZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo2NTIzCisjOiBjb25maWcvdGMtaHBwYS5jOjY1MzQKIG1zZ2lkICIuUkVHIG11c3QgdXNlIGEgbGFiZWwiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo2NTI1CisjOiBjb25maWcvdGMtaHBwYS5jOjY1MzYKIG1zZ2lkICIuRVFVIG11c3QgdXNlIGEgbGFiZWwiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo2NTc4CisjOiBjb25maWcvdGMtaHBwYS5jOjY1ODkKIG1zZ2lkICIuRVhJVCBtdXN0IGFwcGVhciB3aXRoaW4gYSBwcm9jZWR1cmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo2NTgyCisjOiBjb25maWcvdGMtaHBwYS5jOjY1OTMKIG1zZ2lkICJNaXNzaW5nIC5jYWxsaW5mbyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjY1ODYKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NjU5NwogbXNnaWQgIk5vIC5FTlRSWSBmb3IgdGhpcyAuRVhJVCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjY2MTMKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NjYyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZGVmaW5lIGV4cG9ydCBzeW1ib2w6ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo2NjcxCisjOiBjb25maWcvdGMtaHBwYS5jOjY2ODIKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgRU5UUlkgcmF0aGVyIHRoYW4gQ09ERSBpbiBleHBvcnQgZGlyZWN0aXZlIGZvciAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjY3ODgKKyM6IGNvbmZpZy90Yy1ocHBhLmM6Njc5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmRlZmluZWQgLkVYUE9SVC8uSU1QT1JUIGFyZ3VtZW50IChpZ25vcmVkKTogJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo2ODcwCisjOiBjb25maWcvdGMtaHBwYS5jOjY4ODEKIG1zZ2lkICJNaXNzaW5nIGxhYmVsIG5hbWUgb24gLkxBQkVMIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6Njg3NQorIzogY29uZmlnL3RjLWhwcGEuYzo2ODg2CiBtc2dpZCAiZXh0cmEgLkxBQkVMIGFyZ3VtZW50cyBpZ25vcmVkLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjY4OTIKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NjkwMwogbXNnaWQgIlRoZSAuTEVBVkUgcHNldWRvLW9wIGlzIG5vdCBzdXBwb3J0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo2OTMxCisjOiBjb25maWcvdGMtaHBwYS5jOjY5NDIKIG1zZ2lkICJVbnJlY29nbml6ZWQgLkxFVkVMIGFyZ3VtZW50XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo2OTY3CisjOiBjb25maWcvdGMtaHBwYS5jOjY5NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGRlZmluZSBzdGF0aWMgc3ltYm9sOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NzAwMgorIzogY29uZmlnL3RjLWhwcGEuYzo3MDEzCiBtc2dpZCAiTmVzdGVkIHByb2NlZHVyZXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo3MDEyCisjOiBjb25maWcvdGMtaHBwYS5jOjcwMjMKIG1zZ2lkICJDYW5ub3QgYWxsb2NhdGUgdW53aW5kIGRlc2NyaXB0b3JcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjcxMTIKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NzEyMwogbXNnaWQgIm1pc3BsYWNlZCAucHJvY2VuZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjcxMTUKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NzEyNgogbXNnaWQgIk1pc3NpbmcgLmNhbGxpbmZvIGZvciB0aGlzIHByb2NlZHVyZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjcxMTgKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NzEyOQogbXNnaWQgIk1pc3NpbmcgLkVYSVQgZm9yIGEgLkVOVFJZIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NzE1NgorIzogY29uZmlnL3RjLWhwcGEuYzo3MTY3CiBtc2dpZCAiTm90IGluIGEgc3BhY2UuXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo3MTU5CisjOiBjb25maWcvdGMtaHBwYS5jOjcxNzAKIG1zZ2lkICJOb3QgaW4gYSBzdWJzcGFjZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjcyNTAKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NzI2MQogbXNnaWQgIkludmFsaWQgLlNQQUNFIGFyZ3VtZW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NzI5NworIzogY29uZmlnL3RjLWhwcGEuYzo3MzA4CiBtc2dpZCAiQ2FuJ3QgY2hhbmdlIHNwYWNlcyB3aXRoaW4gYSBwcm9jZWR1cmUgZGVmaW5pdGlvbi4gSWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjc0MjYKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NzQzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmRlZmluZWQgc3BhY2U6ICclcycgQXNzdW1pbmcgc3BhY2UgbnVtYmVyID0gMC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo3NDUwCisjOiBjb25maWcvdGMtaHBwYS5jOjc0NjEKIG1zZ2lkICJNdXN0IGJlIGluIGEgc3BhY2UgYmVmb3JlIGNoYW5naW5nIG9yIGRlY2xhcmluZyBzdWJzcGFjZXMuXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo3NDU0CisjOiBjb25maWcvdGMtaHBwYS5jOjc0NjUKIG1zZ2lkICJDYW4ndCBjaGFuZ2Ugc3Vic3BhY2VzIHdpdGhpbiBhIHByb2NlZHVyZSBkZWZpbml0aW9uLiBJZ25vcmVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NzQ4OQorIzogY29uZmlnL3RjLWhwcGEuYzo3NTAwCiBtc2dpZCAiUGFyYW1ldGVycyBvZiBhbiBleGlzdGluZyBzdWJzcGFjZSBjYW4ndCBiZSBtb2RpZmllZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjc1NDAKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NzU1MQogbXNnaWQgIkFsaWdubWVudCBtdXN0IGJlIGEgcG93ZXIgb2YgMiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjc1ODIKKyM6IGNvbmZpZy90Yy1ocHBhLmM6NzU5MwogbXNnaWQgIkZJUlNUIG5vdCBzdXBwb3J0ZWQgYXMgYSAuU1VCU1BBQ0UgYXJndW1lbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo3NTg0CisjOiBjb25maWcvdGMtaHBwYS5jOjc1OTUKIG1zZ2lkICJJbnZhbGlkIC5TVUJTUEFDRSBhcmd1bWVudCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjc3NjQKKyM6IGNvbmZpZy90Yy1ocHBhLmM6Nzc3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnRlcm5hbCBlcnJvcjogVW5hYmxlIHRvIGZpbmQgY29udGFpbmluZyBzcGFjZSBmb3IgJXMuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1ocHBhLmM6NzgwMworIzogY29uZmlnL3RjLWhwcGEuYzo3ODE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIk91dCBvZiBtZW1vcnk6IGNvdWxkIG5vdCBhbGxvY2F0ZSBuZXcgc3BhY2UgY2hhaW4gZW50cnk6ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo3ODg5CisjOiBjb25maWcvdGMtaHBwYS5jOjc5MDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3V0IG9mIG1lbW9yeTogY291bGQgbm90IGFsbG9jYXRlIG5ldyBzdWJzcGFjZSBjaGFpbiBlbnRyeTogJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaHBwYS5jOjg2MjIKKyM6IGNvbmZpZy90Yy1ocHBhLmM6ODYzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJTeW1ib2wgJyVzJyBjb3VsZCBub3QgYmUgY3JlYXRlZC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWhwcGEuYzo4NjI2CisjOiBjb25maWcvdGMtaHBwYS5jOjg2MzcKIG1zZ2lkICJObyBtZW1vcnkgZm9yIHN5bWJvbCBuYW1lLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjY4OQorIzogY29uZmlnL3RjLWkzODYuYzo2ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgc2hvcnRlbmVkIHRvICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6NzQ1CisjOiBjb25maWcvdGMtaTM4Ni5jOjc0MAogbXNnaWQgInNhbWUgdHlwZSBvZiBwcmVmaXggdXNlZCB0d2ljZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjc2MworIzogY29uZmlnL3RjLWkzODYuYzo3NTgKIG1zZ2lkICI2NGJpdCBtb2RlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBDUFUuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6NzY3CisjOiBjb25maWcvdGMtaTM4Ni5jOjc2MgogbXNnaWQgIjMyYml0IG1vZGUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIENQVS4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo4MDAKKyM6IGNvbmZpZy90Yy1pMzg2LmM6Nzk1CiBtc2dpZCAiYmFkIGFyZ3VtZW50IHRvIHN5bnRheCBkaXJlY3RpdmUuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6ODQ0CisjOiBjb25maWcvdGMtaTM4Ni5jOjgzMgogIywgYy1mb3JtYXQKIG1zZ2lkICJubyBzdWNoIGFyY2hpdGVjdHVyZTogYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjg0OQorIzogY29uZmlnL3RjLWkzODYuYzo4MzcKIG1zZ2lkICJtaXNzaW5nIGNwdSBhcmNoaXRlY3R1cmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo4NjMKKyM6IGNvbmZpZy90Yy1pMzg2LmM6ODUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIHN1Y2ggYXJjaGl0ZWN0dXJlIG1vZGlmaWVyOiBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6ODgwIGNvbmZpZy90Yy1pMzg2LmM6NTAyMgorIzogY29uZmlnL3RjLWkzODYuYzo4NjcgY29uZmlnL3RjLWkzODYuYzo0OTYxCiBtc2dpZCAiVW5rbm93biBhcmNoaXRlY3R1cmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo5MTUgY29uZmlnL3RjLWkzODYuYzo5MzggY29uZmlnL3RjLW02OGsuYzozODE2CisjOiBjb25maWcvdGMtaTM4Ni5jOjkwMSBjb25maWcvdGMtaTM4Ni5jOjkyNCBjb25maWcvdGMtbTY4ay5jOjM5ODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW50ZXJuYWwgRXJyb3I6ICBDYW4ndCBoYXNoICVzOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjExOTIKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MTE3NwogbXNnaWQgIlRoZXJlIGFyZSBubyB1bnNpZ25lZCBwYy1yZWxhdGl2ZSByZWxvY2F0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjExOTkgY29uZmlnL3RjLWkzODYuYzo1MjM0CisjOiBjb25maWcvdGMtaTM4Ni5jOjExODQgY29uZmlnL3RjLWkzODYuYzo1MTY4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbiBub3QgZG8gJWQgYnl0ZSBwYy1yZWxhdGl2ZSByZWxvY2F0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6MTIxNgorIzogY29uZmlnL3RjLWkzODYuYzoxMjAxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbiBub3QgZG8gJXMgJWQgYnl0ZSByZWxvY2F0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6MTQyOAorIzogY29uZmlnL3RjLWkzODYuYzoxMzkxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IHVzZSByZWdpc3RlciAnJSUlcycgYXMgb3BlcmFuZCAlZCBpbiAnJXMnLiIKIG1zZ3N0ciAiIgogCiAjLiBVbml4V2FyZSBmc3ViIG5vIGFyZ3MgaXMgYWxpYXMgZm9yIGZzdWJwLCBmYWRkIC0+IGZhZGRwLCBldGMuCi0jOiBjb25maWcvdGMtaTM4Ni5jOjE0NTcKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MTQyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJ0cmFuc2xhdGluZyB0byBgJXNwJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjE1MDIKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MTQ2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW4ndCBlbmNvZGUgcmVnaXN0ZXIgJyUlJXMnIGluIGFuIGluc3RydWN0aW9uIHJlcXVpcmluZyBSRVggcHJlZml4LlxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6MTU0MSBjb25maWcvdGMtaTM4Ni5jOjE2MzYKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MTUwNCBjb25maWcvdGMtaTM4Ni5jOjE1OTkKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gc3VjaCBpbnN0cnVjdGlvbjogYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjE1NTEgY29uZmlnL3RjLWkzODYuYzoxNjY4CisjOiBjb25maWcvdGMtaTM4Ni5jOjE1MTQgY29uZmlnL3RjLWkzODYuYzoxNjMxCiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgY2hhcmFjdGVyICVzIGluIG1uZW1vbmljIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6MTU1OAorIzogY29uZmlnL3RjLWkzODYuYzoxNTIxCiBtc2dpZCAiZXhwZWN0aW5nIHByZWZpeDsgZ290IG5vdGhpbmciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzoxNTYwCisjOiBjb25maWcvdGMtaTM4Ni5jOjE1MjMKIG1zZ2lkICJleHBlY3RpbmcgbW5lbW9uaWM7IGdvdCBub3RoaW5nIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6MTU3OQorIzogY29uZmlnL3RjLWkzODYuYzoxNTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZHVuZGFudCAlcyBwcmVmaXgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzoxNjc3CisjOiBjb25maWcvdGMtaTM4Ni5jOjE2NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiYCVzJyBpcyBub3Qgc3VwcG9ydGVkIG9uIGAlcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzoxNjgyCisjOiBjb25maWcvdGMtaTM4Ni5jOjE2NDUKIG1zZ2lkICJ1c2UgLmNvZGUxNiB0byBlbnN1cmUgY29ycmVjdCBhZGRyZXNzaW5nIG1vZGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzoxNjg5CisjOiBjb25maWcvdGMtaTM4Ni5jOjE2NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZXhwZWN0aW5nIHN0cmluZyBpbnN0cnVjdGlvbiBhZnRlciBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6MTcxNworIzogY29uZmlnL3RjLWkzODYuYzoxNjgwCiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgY2hhcmFjdGVyICVzIGJlZm9yZSBvcGVyYW5kICVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6MTczMQorIzogY29uZmlnL3RjLWkzODYuYzoxNjk0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYmFsYW5jZWQgcGFyZW50aGVzaXMgaW4gb3BlcmFuZCAlZC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzoxNzM0CisjOiBjb25maWcvdGMtaTM4Ni5jOjE2OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5iYWxhbmNlZCBicmFja2V0cyBpbiBvcGVyYW5kICVkLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjE3NDMKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MTcwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGNoYXJhY3RlciAlcyBpbiBvcGVyYW5kICVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6MTc3MAorIzogY29uZmlnL3RjLWkzODYuYzoxNzMzCiAjLCBjLWZvcm1hdAogbXNnaWQgInNwdXJpb3VzIG9wZXJhbmRzOyAoJWQgb3BlcmFuZHMvaW5zdHJ1Y3Rpb24gbWF4KSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjE3OTMKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MTc1NgogbXNnaWQgImV4cGVjdGluZyBvcGVyYW5kIGFmdGVyICcsJzsgZ290IG5vdGhpbmciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzoxNzk4CisjOiBjb25maWcvdGMtaTM4Ni5jOjE3NjEKIG1zZ2lkICJleHBlY3Rpbmcgb3BlcmFuZCBiZWZvcmUgJywnOyBnb3Qgbm90aGluZyIKIG1zZ3N0ciAiIgogCiAjLiBXZSBmb3VuZCBubyBtYXRjaC4KLSM6IGNvbmZpZy90Yy1pMzg2LmM6MjE0MAorIzogY29uZmlnL3RjLWkzODYuYzoyMTAzCiAjLCBjLWZvcm1hdAogbXNnaWQgInN1ZmZpeCBvciBvcGVyYW5kcyBpbnZhbGlkIGZvciBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6MjE1MQorIzogY29uZmlnL3RjLWkzODYuYzoyMTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgImluZGlyZWN0ICVzIHdpdGhvdXQgYConIgogbXNnc3RyICIiCiAKICMuIFdhcm4gdGhlbSB0aGF0IGEgZGF0YSBvciBhZGRyZXNzIHNpemUgcHJlZml4IGRvZXNuJ3QKICMuIGFmZmVjdCBhc3NlbWJseSBvZiB0aGUgbmV4dCBsaW5lIG9mIGNvZGUuCi0jOiBjb25maWcvdGMtaTM4Ni5jOjIxNTkKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MjEyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJzdGFuZC1hbG9uZSBgJXMnIHByZWZpeCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjIxODggY29uZmlnL3RjLWkzODYuYzoyMjAzCisjOiBjb25maWcvdGMtaTM4Ni5jOjIxNTEgY29uZmlnL3RjLWkzODYuYzoyMTY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImAlcycgb3BlcmFuZCAlZCBtdXN0IHVzZSBgJSVlcycgc2VnbWVudCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjIyODMKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MjI0NgogbXNnaWQgIiIKICJubyBpbnN0cnVjdGlvbiBtbmVtb25pYyBzdWZmaXggZ2l2ZW4gYW5kIG5vIHJlZ2lzdGVyIG9wZXJhbmRzOyBjYW4ndCBzaXplICIKICJpbnN0cnVjdGlvbiIKQEAgLTQzMTEsMTkyICs0NTAwLDE4OCBAQAogCiAjLiBQcm9oaWJpdCB0aGVzZSBjaGFuZ2VzIGluIHRoZSA2NGJpdCBtb2RlLCBzaW5jZSB0aGUKICMuIGxvd2VyaW5nIGlzIG1vcmUgY29tcGxpY2F0ZWQuCi0jOiBjb25maWcvdGMtaTM4Ni5jOjIzNjcgY29uZmlnL3RjLWkzODYuYzoyNDI2IGNvbmZpZy90Yy1pMzg2LmM6MjQ0MwotIzogY29uZmlnL3RjLWkzODYuYzoyNDc1IGNvbmZpZy90Yy1pMzg2LmM6MjUwOAorIzogY29uZmlnL3RjLWkzODYuYzoyMzMwIGNvbmZpZy90Yy1pMzg2LmM6MjM4OSBjb25maWcvdGMtaTM4Ni5jOjI0MDYKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MjQzOCBjb25maWcvdGMtaTM4Ni5jOjI0NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW5jb3JyZWN0IHJlZ2lzdGVyIGAlJSVzJyB1c2VkIHdpdGggYCVjJyBzdWZmaXgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzoyMzc1IGNvbmZpZy90Yy1pMzg2LmM6MjQzMyBjb25maWcvdGMtaTM4Ni5jOjI1MTUKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MjMzOCBjb25maWcvdGMtaTM4Ni5jOjIzOTYgY29uZmlnL3RjLWkzODYuYzoyNDc4CiAjLCBjLWZvcm1hdAogbXNnaWQgInVzaW5nIGAlJSVzJyBpbnN0ZWFkIG9mIGAlJSVzJyBkdWUgdG8gYCVjJyBzdWZmaXgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzoyMzkwIGNvbmZpZy90Yy1pMzg2LmM6MjQxMSBjb25maWcvdGMtaTM4Ni5jOjI0NjIKLSM6IGNvbmZpZy90Yy1pMzg2LmM6MjQ5MworIzogY29uZmlnL3RjLWkzODYuYzoyMzUzIGNvbmZpZy90Yy1pMzg2LmM6MjM3NCBjb25maWcvdGMtaTM4Ni5jOjI0MjUKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MjQ1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJgJSUlcycgbm90IGFsbG93ZWQgd2l0aCBgJXMlYyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzoyNTU2CisjOiBjb25maWcvdGMtaTM4Ni5jOjI1MTkKIG1zZ2lkICJubyBpbnN0cnVjdGlvbiBtbmVtb25pYyBzdWZmaXggZ2l2ZW47IGNhbid0IGRldGVybWluZSBpbW1lZGlhdGUgc2l6ZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjI1ODkKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MjU1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibm8gaW5zdHJ1Y3Rpb24gbW5lbW9uaWMgc3VmZml4IGdpdmVuOyBjYW4ndCBkZXRlcm1pbmUgaW1tZWRpYXRlIHNpemUgJXggJWMiCiBtc2dzdHIgIiIKIAogIy4gUmV2ZXJzZWQgYXJndW1lbnRzIG9uIGZhZGRwLCBmc3VicCwgZXRjLgotIzogY29uZmlnL3RjLWkzODYuYzoyNjM4CisjOiBjb25maWcvdGMtaTM4Ni5jOjI2MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAidHJhbnNsYXRpbmcgdG8gYCVzICUlJXMsJSUlcyciCiBtc2dzdHIgIiIKIAogIy4gRXh0cmFuZW91cyBgbCcgc3VmZml4IG9uIGZwIGluc24uCi0jOiBjb25maWcvdGMtaTM4Ni5jOjI2NDUKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MjYwOAogIywgYy1mb3JtYXQKIG1zZ2lkICJ0cmFuc2xhdGluZyB0byBgJXMgJSUlcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzoyNjYzCisjOiBjb25maWcvdGMtaTM4Ni5jOjI2MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAieW91IGNhbid0IGBwb3AgJSVjcyciCiBtc2dzdHIgIiIKIAogIy4gbGVhCi0jOiBjb25maWcvdGMtaTM4Ni5jOjI2ODIKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MjY0NQogbXNnaWQgInNlZ21lbnQgb3ZlcnJpZGUgb24gYGxlYScgaXMgaW5lZmZlY3R1YWwiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzoyOTkxIGNvbmZpZy90Yy1pMzg2LmM6MzA4NSBjb25maWcvdGMtaTM4Ni5jOjMxMzAKKyM6IGNvbmZpZy90Yy1pMzg2LmM6Mjk1NCBjb25maWcvdGMtaTM4Ni5jOjMwNDggY29uZmlnL3RjLWkzODYuYzozMDkzCiBtc2dpZCAic2tpcHBpbmcgcHJlZml4ZXMgb24gdGhpcyBpbnN0cnVjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjMxNTAKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MzExMwogbXNnaWQgIjE2LWJpdCBqdW1wIG91dCBvZiByYW5nZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjMxNTkKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MzEyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW4ndCBoYW5kbGUgbm9uIGFic29sdXRlIHNlZ21lbnQgaW4gYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjM2MDEKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MzU4MAogIywgYy1mb3JtYXQKIG1zZ2lkICJAJXMgcmVsb2MgaXMgbm90IHN1cHBvcnRlZCBpbiAlcyBiaXQgbW9kZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjM2NzcKKyM6IGNvbmZpZy90Yy1pMzg2LmM6MzY1NgogbXNnaWQgIm9ubHkgMSBvciAyIGltbWVkaWF0ZSBvcGVyYW5kcyBhcmUgYWxsb3dlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjM3MDAgY29uZmlnL3RjLWkzODYuYzozODkyCisjOiBjb25maWcvdGMtaTM4Ni5jOjM2NzkgY29uZmlnL3RjLWkzODYuYzozODYxCiAjLCBjLWZvcm1hdAogbXNnaWQgImp1bmsgYCVzJyBhZnRlciBleHByZXNzaW9uIgogbXNnc3RyICIiCiAKICMuIE1pc3Npbmcgb3IgYmFkIGV4cHIgYmVjb21lcyBhYnNvbHV0ZSAwLgotIzogY29uZmlnL3RjLWkzODYuYzozNzExCisjOiBjb25maWcvdGMtaTM4Ni5jOjM2OTAKICMsIGMtZm9ybWF0CiBtc2dpZCAibWlzc2luZyBvciBpbnZhbGlkIGltbWVkaWF0ZSBleHByZXNzaW9uIGAlcycgdGFrZW4gYXMgMCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjM3NDMgY29uZmlnL3RjLWkzODYuYzozOTU4CisjOiBjb25maWcvdGMtaTM4Ni5jOjM3MTUgY29uZmlnL3RjLWkzODYuYzozOTE5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuaW1wbGVtZW50ZWQgc2VnbWVudCAlcyBpbiBvcGVyYW5kIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6Mzc0NSBjb25maWcvdGMtaTM4Ni5jOjM5NjAKLSMsIGMtZm9ybWF0Ci1tc2dpZCAidW5pbXBsZW1lbnRlZCBzZWdtZW50IHR5cGUgJWQgaW4gb3BlcmFuZCIKLW1zZ3N0ciAiIgotCi0jOiBjb25maWcvdGMtaTM4Ni5jOjM3ODkgY29uZmlnL3RjLWkzODYuYzo2MDExCisjOiBjb25maWcvdGMtaTM4Ni5jOjM3NTggY29uZmlnL3RjLWkzODYuYzo1ODc5CiAjLCBjLWZvcm1hdAogbXNnaWQgImV4cGVjdGluZyBzY2FsZSBmYWN0b3Igb2YgMSwgMiwgNCwgb3IgODogZ290IGAlcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzozNzk2CisjOiBjb25maWcvdGMtaTM4Ni5jOjM3NjUKICMsIGMtZm9ybWF0CiBtc2dpZCAic2NhbGUgZmFjdG9yIG9mICVkIHdpdGhvdXQgYW4gaW5kZXggcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzozOTEyCisjOiBjb25maWcvdGMtaTM4Ni5jOjM4ODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIGV4cHJlc3Npb24gdXNlZCB3aXRoIEAlcyIKIG1zZ3N0ciAiIgogCiAjLiBNaXNzaW5nIG9yIGJhZCBleHByIGJlY29tZXMgYWJzb2x1dGUgMC4KLSM6IGNvbmZpZy90Yy1pMzg2LmM6MzkzNAorIzogY29uZmlnL3RjLWkzODYuYzozOTAxCiAjLCBjLWZvcm1hdAogbXNnaWQgIm1pc3Npbmcgb3IgaW52YWxpZCBkaXNwbGFjZW1lbnQgZXhwcmVzc2lvbiBgJXMnIHRha2VuIGFzIDAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo0MDU4CisjOiBjb25maWcvdGMtaTM4Ni5jOjQwMTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiYCVzJyBpcyBub3QgYSB2YWxpZCBiYXNlL2luZGV4IGV4cHJlc3Npb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo0MDYyCisjOiBjb25maWcvdGMtaTM4Ni5jOjQwMjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiYCVzJyBpcyBub3QgYSB2YWxpZCAlcyBiaXQgYmFzZS9pbmRleCBleHByZXNzaW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6NDEzNworIzogY29uZmlnL3RjLWkzODYuYzo0MDk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCBtZW1vcnkgb3BlcmFuZCBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6NDE1MgorIzogY29uZmlnL3RjLWkzODYuYzo0MTEwCiAjLCBjLWZvcm1hdAogbXNnaWQgImp1bmsgYCVzJyBhZnRlciByZWdpc3RlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjQxNjEgY29uZmlnL3RjLWkzODYuYzo0Mjc2IGNvbmZpZy90Yy1pMzg2LmM6NDMxNAorIzogY29uZmlnL3RjLWkzODYuYzo0MTE5IGNvbmZpZy90Yy1pMzg2LmM6NDIzNCBjb25maWcvdGMtaTM4Ni5jOjQyNzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIHJlZ2lzdGVyIG5hbWUgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjQxNjkKKyM6IGNvbmZpZy90Yy1pMzg2LmM6NDEyNwogbXNnaWQgImltbWVkaWF0ZSBvcGVyYW5kIGlsbGVnYWwgd2l0aCBhYnNvbHV0ZSBqdW1wIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6NDE5MQorIzogY29uZmlnL3RjLWkzODYuYzo0MTQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgInRvbyBtYW55IG1lbW9yeSByZWZlcmVuY2VzIGZvciBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6NDI2OQorIzogY29uZmlnL3RjLWkzODYuYzo0MjI3CiAjLCBjLWZvcm1hdAogbXNnaWQgImV4cGVjdGluZyBgLCcgb3IgYCknIGFmdGVyIGluZGV4IHJlZ2lzdGVyIGluIGAlcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo0MjkzCisjOiBjb25maWcvdGMtaTM4Ni5jOjQyNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZXhwZWN0aW5nIGApJyBhZnRlciBzY2FsZSBmYWN0b3IgaW4gYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjQzMDAKKyM6IGNvbmZpZy90Yy1pMzg2LmM6NDI1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJleHBlY3RpbmcgaW5kZXggcmVnaXN0ZXIgb3Igc2NhbGUgZmFjdG9yIGFmdGVyIGAsJzsgZ290ICclYyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo0MzA3CisjOiBjb25maWcvdGMtaTM4Ni5jOjQyNjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiZXhwZWN0aW5nIGAsJyBvciBgKScgYWZ0ZXIgYmFzZSByZWdpc3RlciBpbiBgJXMnIgogbXNnc3RyICIiCiAKICMuIEl0J3Mgbm90IGEgbWVtb3J5IG9wZXJhbmQ7IGFyZ2ghCi0jOiBjb25maWcvdGMtaTM4Ni5jOjQzNDgKKyM6IGNvbmZpZy90Yy1pMzg2LmM6NDMwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGNoYXIgJXMgYmVnaW5uaW5nIG9wZXJhbmQgJWQgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjQ1MzEKKyM6IGNvbmZpZy90Yy1pMzg2LmM6NDQ4MQogbXNnaWQgImxvbmcganVtcCByZXF1aXJlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjQ4MDUKKyM6IGNvbmZpZy90Yy1pMzg2LmM6NDc0NQogbXNnaWQgIkJhZCBjYWxsIHRvIG1kX2F0b2YgKCkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo0OTczCisjOiBjb25maWcvdGMtaTM4Ni5jOjQ5MTMKIG1zZ2lkICJObyBjb21waWxlZCBpbiBzdXBwb3J0IGZvciB4ODZfNjQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo0OTk0CisjOiBjb25maWcvdGMtaTM4Ni5jOjQ5MzQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLVEgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZFxuIgogIiAgLVYgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgYXNzZW1ibGVyIHZlcnNpb24gbnVtYmVyXG4iCkBAIC00NTA2LDE2MiArNDY5MSwxODggQEAKICIgIC1zICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjUwMDIKKyM6IGNvbmZpZy90Yy1pMzg2LmM6NDk0MgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtbiAgICAgICAgICAgICAgICAgICAgICBEbyBub3Qgb3B0aW1pemUgY29kZSBhbGlnbm1lbnRcbiIKICIgIC1xICAgICAgICAgICAgICAgICAgICAgIHF1aWV0ZW4gc29tZSB3YXJuaW5nc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6NTEwNCBjb25maWcvdGMtczM5MC5jOjE4NDEKKyM6IGNvbmZpZy90Yy1pMzg2LmM6NTA0MiBjb25maWcvdGMtczM5MC5jOjE4NDcKIG1zZ2lkICJHT1QgYWxyZWFkeSBpbiBzeW1ib2wgdGFibGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo1MjQ5CisjOiBjb25maWcvdGMtaTM4Ni5jOjUxODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FuIG5vdCBkbyAlZCBieXRlIHJlbG9jYXRpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo1MzE3IGNvbmZpZy90Yy1zMzkwLmM6MjI4NQorIzogY29uZmlnL3RjLWkzODYuYzo1MjUxIGNvbmZpZy90Yy1zMzkwLmM6MjI5MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVwcmVzZW50IHJlbG9jYXRpb24gdHlwZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjU2MTMKKyM6IGNvbmZpZy90Yy1pMzg2LmM6NTQ4MAogIywgYy1mb3JtYXQKIG1zZ2lkICJ0b28gbWFueSBtZW1vcnkgcmVmZXJlbmNlcyBmb3IgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjU3NzYKKyM6IGNvbmZpZy90Yy1pMzg2LmM6NTY0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIG9wZXJhbmQgbW9kaWZpZXIgYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pMzg2LmM6NTk4MworIzogY29uZmlnL3RjLWkzODYuYzo1ODUxCiAjLCBjLWZvcm1hdAogbXNnaWQgImAlcycgaXMgbm90IGEgdmFsaWQgc2VnbWVudCByZWdpc3RlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjU5OTMgY29uZmlnL3RjLWkzODYuYzo2MTE0CisjOiBjb25maWcvdGMtaTM4Ni5jOjU4NjEgY29uZmlnL3RjLWkzODYuYzo1OTgyCiBtc2dpZCAiUmVnaXN0ZXIgc2NhbGluZyBvbmx5IGFsbG93ZWQgaW4gbWVtb3J5IG9wZXJhbmRzLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTM4Ni5jOjYwMjQKKyM6IGNvbmZpZy90Yy1pMzg2LmM6NTg5MgogbXNnaWQgIlRvbyBtYW55IHJlZ2lzdGVyIHJlZmVyZW5jZXMgaW4gbWVtb3J5IG9wZXJhbmQuXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo2MDkzCisjOiBjb25maWcvdGMtaTM4Ni5jOjU5NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3ludGF4IGVycm9yLiBFeHBlY3RpbmcgYSBjb25zdGFudC4gR290IGAlcycuXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo2MTYzCisjOiBjb25maWcvdGMtaTM4Ni5jOjYwMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5yZWNvZ25pemVkIHRva2VuICclcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo2MTgwCisjOiBjb25maWcvdGMtaTM4Ni5jOjYwNDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5leHBlY3RlZCB0b2tlbiBgJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWkzODYuYzo2MzI0CisjOiBjb25maWcvdGMtaTM4Ni5jOjYxOTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5yZWNvZ25pemVkIHRva2VuIGAlcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTg2MC5jOjE2NSBjb25maWcvdGMtaTg2MC5jOjE2OQorIzogY29uZmlnL3RjLWk4NjAuYzoxMjQKK21zZ2lkICJEaXJlY3RpdmUgLmR1YWwgYXZhaWxhYmxlIG9ubHkgd2l0aCAtbWludGVsLXN5bnRheCBvcHRpb24iCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWk4NjAuYzoxMzQKK21zZ2lkICJEaXJlY3RpdmUgLmVuZGR1YWwgYXZhaWxhYmxlIG9ubHkgd2l0aCAtbWludGVsLXN5bnRheCBvcHRpb24iCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWk4NjAuYzoxNDcKK21zZ2lkICJEaXJlY3RpdmUgLmF0bXAgYXZhaWxhYmxlIG9ubHkgd2l0aCAtbWludGVsLXN5bnRheCBvcHRpb24iCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWk4NjAuYzoxNjkgY29uZmlnL3RjLWk4NjAuYzoxNzMKIG1zZ2lkICJVbmtub3duIHRlbXBvcmFyeSBwc2V1ZG8gcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWk4NjAuYzoxOTIgY29uZmlnL3RjLW1pcHMuYzoxMTA1CisjOiBjb25maWcvdGMtaTg2MC5jOjIyOSBjb25maWcvdGMtbWlwcy5jOjExNDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNhbid0IGhhc2ggYCVzJzogJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTg2MC5jOjIxMgorIzogY29uZmlnL3RjLWk4NjAuYzoyNDkKIG1zZ2lkICJEZWZlY3RpdmUgYXNzZW1ibGVyLiAgTm8gYXNzZW1ibHkgYXR0ZW1wdGVkLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTg2MC5jOjM2MgorIzogY29uZmlnL3RjLWk4NjAuYzo0MDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXhwYW5kZWQgb3Bjb2RlIGFmdGVyIGRlbGF5ZWQgYnJhbmNoOiBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pODYwLmM6MzY2CisjOiBjb25maWcvdGMtaTg2MC5jOjQwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJFeHBhbmRlZCBvcGNvZGUgaW4gZHVhbCBtb2RlOiBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pODYwLmM6MzcwCisjOiBjb25maWcvdGMtaTg2MC5jOjQxMAogIywgYy1mb3JtYXQKIG1zZ2lkICJBbiBpbnN0cnVjdGlvbiB3YXMgZXhwYW5kZWQgKCVzKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTg2MC5jOjY0MworIzogY29uZmlnL3RjLWk4NjAuYzo2NzYKIG1zZ2lkICJQaXBlbGluZWQgaW5zdHJ1Y3Rpb246IGZzcmMxID0gZmRlc3QiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWk4NjAuYzo4NDQgY29uZmlnL3RjLWk4NjAuYzo4NTEgY29uZmlnL3RjLWk4NjAuYzo4NTgKKyM6IGNvbmZpZy90Yy1pODYwLmM6ODc5IGNvbmZpZy90Yy1pODYwLmM6ODg2IGNvbmZpZy90Yy1pODYwLmM6ODkzCiBtc2dpZCAiQXNzZW1ibGVyIGRvZXMgbm90IHlldCBzdXBwb3J0IFBJQyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTg2MC5jOjkxOQorIzogY29uZmlnL3RjLWk4NjAuYzo5NTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiSWxsZWdhbCBvcGVyYW5kcyBmb3IgJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWk4NjAuYzo5NDcgY29uZmlnL3RjLXNwYXJjLmM6MjgzNAorIzogY29uZmlnL3RjLWk4NjAuYzo5NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJ2QuJXMnIG11c3QgYmUgOC1ieXRlIGFsaWduZWQiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLWk4NjAuYzo5ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJlZml4ICdkLicgaW52YWxpZCBmb3IgaW5zdHJ1Y3Rpb24gYCVzJyIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtaTg2MC5jOjEwMDUgY29uZmlnL3RjLXNwYXJjLmM6Mjg0NQogbXNnaWQgImJhZCBzZWdtZW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pODYwLmM6MTAzNworIzogY29uZmlnL3RjLWk4NjAuYzoxMDg4CiBtc2dpZCAiaTg2MF9lc3RpbWF0ZV9zaXplX2JlZm9yZV9yZWxheFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pODYwLmM6MTEzNAorIzogY29uZmlnL3RjLWk4NjAuYzoxMTg3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC1FTFx0XHRcdCAgZ2VuZXJhdGUgY29kZSBmb3IgbGl0dGxlIGVuZGlhbiBtb2RlIChkZWZhdWx0KVxuIgogIiAgLUVCXHRcdFx0ICBnZW5lcmF0ZSBjb2RlIGZvciBiaWcgZW5kaWFuIG1vZGVcbiIKICIgIC1td2Fybi1leHBhbmRcdFx0ICB3YXJuIGlmIHBzZXVkbyBvcGVyYXRpb25zIGFyZSBleHBhbmRlZFxuIgogIiAgLW14cFx0XHRcdCAgZW5hYmxlIGk4NjBYUCBzdXBwb3J0IChkaXNhYmxlZCBieSBkZWZhdWx0KVxuIgorIiAgLW1pbnRlbC1zeW50YXhcdCAgZW5hYmxlIEludGVsIHN5bnRheCAoZGVmYXVsdCB0byBBVCZUL1NWUjQpXG4iCiBtc2dzdHIgIiIKIAogIy4gU1ZSNCBjb21wYXRpYmlsaXR5IGZsYWdzLgotIzogY29uZmlnL3RjLWk4NjAuYzoxMTQxCisjOiBjb25maWcvdGMtaTg2MC5jOjExOTUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLVZcdFx0XHQgIHByaW50IGFzc2VtYmxlciB2ZXJzaW9uIG51bWJlclxuIgogIiAgLVF5LCAtUW5cdFx0ICBpZ25vcmVkXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWk4NjAuYzoxMjEwCisjOiBjb25maWcvdGMtaTg2MC5jOjEyNTgKIG1zZ2lkICJUaGlzIGltbWVkaWF0ZSByZXF1aXJlcyAwIE1PRCAyIGFsaWdubWVudCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTg2MC5jOjEyMTMKKyM6IGNvbmZpZy90Yy1pODYwLmM6MTI2MQogbXNnaWQgIlRoaXMgaW1tZWRpYXRlIHJlcXVpcmVzIDAgTU9EIDQgYWxpZ25tZW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pODYwLmM6MTIxNgorIzogY29uZmlnL3RjLWk4NjAuYzoxMjY0CiBtc2dpZCAiVGhpcyBpbW1lZGlhdGUgcmVxdWlyZXMgMCBNT0QgOCBhbGlnbm1lbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWk4NjAuYzoxMjE5CisjOiBjb25maWcvdGMtaTg2MC5jOjEyNjcKIG1zZ2lkICJUaGlzIGltbWVkaWF0ZSByZXF1aXJlcyAwIE1PRCAxNiBhbGlnbm1lbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWk4NjAuYzoxMzE3CisjOiBjb25maWcvdGMtaTg2MC5jOjEzNjIKIG1zZ2lkICI1LWJpdCBpbW1lZGlhdGUgdG9vIGxhcmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pODYwLmM6MTMyMAorIzogY29uZmlnL3RjLWk4NjAuYzoxMzY1CiBtc2dpZCAiNS1iaXQgZmllbGQgbXVzdCBiZSBhYnNvbHV0ZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaTg2MC5jOjEzNjUgY29uZmlnL3RjLWk4NjAuYzoxMzg4CisjOiBjb25maWcvdGMtaTg2MC5jOjE0MTAgY29uZmlnL3RjLWk4NjAuYzoxNDMzCiBtc2dpZCAiQSBicmFuY2ggb2Zmc2V0IHJlcXVpcmVzIDAgTU9EIDQgYWxpZ25tZW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pODYwLmM6MTQwOQorIzogY29uZmlnL3RjLWk4NjAuYzoxNDU0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucmVjb2duaXplZCBmaXgtdXAgKDB4JTA4bHgpIgogbXNnc3RyICIiCkBAIC00NzAxLDEwICs0OTEyLDEyIEBACiBtc2dzdHIgIiIKIAogIzogY29uZmlnL3RjLWk5NjAuYzoxMDE0CisjLCBjLWZvcm1hdAogbXNnaWQgIkk5NjAgb3B0aW9uczpcbiIKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMtaTk2MC5jOjEwMTcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlx0XHRcdHNwZWNpZnkgdmFyaWFudCBvZiA5NjAgYXJjaGl0ZWN0dXJlXG4iCkBAIC00NzE1LDcgKzQ5MjgsNyBAQAogIlx0XHRcdGxvbmcgZGlzcGxhY2VtZW50c1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pOTYwLmM6MTQxOSBjb25maWcvdGMteHRlbnNhLmM6ODYwNAorIzogY29uZmlnL3RjLWk5NjAuYzoxNDE5IGNvbmZpZy90Yy14dGVuc2EuYzo4NDY2CiBtc2dpZCAidG9vIG1hbnkgb3BlcmFuZHMiCiBtc2dzdHIgIiIKIApAQCAtNDgyNCw5OSArNTAzNyw5OSBAQAogbXNnaWQgIm9wdGlvbiAtLWxpbmstcmVsYXggaXMgb25seSBzdXBwb3J0ZWQgaW4gYi5vdXQgZm9ybWF0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pYTY0LmM6OTgyCisjOiBjb25maWcvdGMtaWE2NC5jOjk4NAogbXNnaWQgIkJhZCAuc2VjdGlvbiBkaXJlY3RpdmU6IHdhbnQgYSxvLHMsdyx4LE0sUyxHLFQgaW4gc3RyaW5nIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pYTY0LmM6MTEwNQorIzogY29uZmlnL3RjLWlhNjQuYzoxMTI3CiBtc2dpZCAiVW53aW5kIGRpcmVjdGl2ZSBub3QgZm9sbG93ZWQgYnkgYW4gaW5zdHJ1Y3Rpb24uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pYTY0LmM6NDU2MworIzogY29uZmlnL3RjLWlhNjQuYzo0NjA2CiBtc2dpZCAiUmVnaXN0ZXIgbmFtZSBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjQ1NjggY29uZmlnL3RjLWlhNjQuYzo0ODU0CisjOiBjb25maWcvdGMtaWE2NC5jOjQ2MTEgY29uZmlnL3RjLWlhNjQuYzo0ODk3CiBtc2dpZCAiQ29tbWEgZXhwZWN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWlhNjQuYzo0NTc2CisjOiBjb25maWcvdGMtaWE2NC5jOjQ2MTkKIG1zZ2lkICJSZWdpc3RlciB2YWx1ZSBhbm5vdGF0aW9uIGlnbm9yZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWlhNjQuYzo0NjAwCisjOiBjb25maWcvdGMtaWE2NC5jOjQ2NDMKIG1zZ2lkICJEaXJlY3RpdmUgaW52YWxpZCB3aXRoaW4gYSBidW5kbGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWlhNjQuYzo0NjY3CisjOiBjb25maWcvdGMtaWE2NC5jOjQ3MTAKIG1zZ2lkICJNaXNzaW5nIHByZWRpY2F0ZSByZWxhdGlvbiB0eXBlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pYTY0LmM6NDY4MworIzogY29uZmlnL3RjLWlhNjQuYzo0NzI2CiBtc2dpZCAiVW5yZWNvZ25pemVkIHByZWRpY2F0ZSByZWxhdGlvbiB0eXBlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pYTY0LmM6NDcwMyBjb25maWcvdGMtaWE2NC5jOjQ3MjgKKyM6IGNvbmZpZy90Yy1pYTY0LmM6NDc0NiBjb25maWcvdGMtaWE2NC5jOjQ3NzEKIG1zZ2lkICJQcmVkaWNhdGUgcmVnaXN0ZXIgZXhwZWN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWlhNjQuYzo0NzE1CisjOiBjb25maWcvdGMtaWE2NC5jOjQ3NTgKIG1zZ2lkICJEdXBsaWNhdGUgcHJlZGljYXRlIHJlZ2lzdGVyIGlnbm9yZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWlhNjQuYzo0NzM3CisjOiBjb25maWcvdGMtaWE2NC5jOjQ3ODAKIG1zZ2lkICJCYWQgcmVnaXN0ZXIgcmFuZ2UiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWlhNjQuYzo0NzY1CisjOiBjb25maWcvdGMtaWE2NC5jOjQ4MDgKIG1zZ2lkICJQcmVkaWNhdGUgc291cmNlIGFuZCB0YXJnZXQgcmVxdWlyZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWlhNjQuYzo0NzY3IGNvbmZpZy90Yy1pYTY0LmM6NDc3OQorIzogY29uZmlnL3RjLWlhNjQuYzo0ODEwIGNvbmZpZy90Yy1pYTY0LmM6NDgyMgogbXNnaWQgIlVzZSBvZiBwMCBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pYTY0LmM6NDc3NAorIzogY29uZmlnL3RjLWlhNjQuYzo0ODE3CiBtc2dpZCAiQXQgbGVhc3QgdHdvIFBSIGFyZ3VtZW50cyBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjQ3ODgKKyM6IGNvbmZpZy90Yy1pYTY0LmM6NDgzMQogbXNnaWQgIkF0IGxlYXN0IG9uZSBQUiBhcmd1bWVudCBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjQ4MjQKKyM6IGNvbmZpZy90Yy1pYTY0LmM6NDg2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnNlcnRpbmcgXCIlc1wiIGludG8gZW50cnkgaGludCB0YWJsZSBmYWlsZWQ6ICVzIgogbXNnc3RyICIiCiAKICMuIEZJWE1FIC0tIG5lZWQgNjItYml0IHJlbG9jYXRpb24gdHlwZQotIzogY29uZmlnL3RjLWlhNjQuYzo1MzAyCisjOiBjb25maWcvdGMtaWE2NC5jOjUzNDUKIG1zZ2lkICI2Mi1iaXQgcmVsb2NhdGlvbiBub3QgeWV0IGltcGxlbWVudGVkIgogbXNnc3RyICIiCiAKICMuIFhYWCB0ZWNobmljYWxseSwgdGhpcyBpcyB3cm9uZzogd2Ugc2hvdWxkIG5vdCBiZSBpc3N1aW5nIHdhcm5pbmcKICMuIG1lc3NhZ2VzIHVudGlsIHdlJ3JlIHN1cmUgdGhpcyBpbnN0cnVjdGlvbiBwYXR0ZXJuIGlzIGdvaW5nIHRvCiAjLiBiZSB1c2VkIQotIzogY29uZmlnL3RjLWlhNjQuYzo1Mzc1CisjOiBjb25maWcvdGMtaWE2NC5jOjU0MTgKIG1zZ2lkICJsb3dlciAxNiBiaXRzIG9mIG1hc2sgaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjU5MzkKKyM6IGNvbmZpZy90Yy1pYTY0LmM6NTk4MgogbXNnaWQgIlZhbHVlIHRydW5jYXRlZCB0byA2MiBiaXRzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pYTY0LmM6NjI5MQorIzogY29uZmlnL3RjLWlhNjQuYzo2MzU1CiBtc2dpZCAiIgogIkFkZGl0aW9uYWwgTk9QIG1heSBiZSBuZWNlc3NhcnkgdG8gd29ya2Fyb3VuZCBJdGFuaXVtIHByb2Nlc3NvciBBL0Igc3RlcCAiCiAiZXJyYXRhIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pYTY0LmM6NjQ3NAorIzogY29uZmlnL3RjLWlhNjQuYzo2NTQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucmVjb2duaXplZCBvcHRpb24gJy14JXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pYTY0LmM6NjUwMgorIzogY29uZmlnL3RjLWlhNjQuYzo2NTc0CiBtc2dpZCAiIgogIklBLTY0IG9wdGlvbnM6XG4iCiAiICAtLW1jb25zdGFudC1ncFx0ICBtYXJrIG91dHB1dCBmaWxlIGFzIHVzaW5nIHRoZSBjb25zdGFudC1HUCBtb2RlbFxuIgpAQCAtNDkzMSw4OCArNTE0NCw5NSBAQAogIiAgLXhkZWJ1Z1x0XHQgIGRlYnVnIGRlcGVuZGVuY3kgdmlvbGF0aW9uIGNoZWNrZXJcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjY1MjEKKyM6IGNvbmZpZy90Yy1pYTY0LmM6NjU5MwogbXNnaWQgIi0tZ3N0YWJzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGlhNjQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWlhNjQuYzo2ODI0IGNvbmZpZy90Yy1taXBzLmM6MTA5NAorIzogY29uZmlnL3RjLWlhNjQuYzo2ODk2IGNvbmZpZy90Yy1taXBzLmM6MTEzOAogbXNnaWQgIkNvdWxkIG5vdCBzZXQgYXJjaGl0ZWN0dXJlIGFuZCBtYWNoaW5lIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pYTY0LmM6NjkzMQorIzogY29uZmlnL3RjLWlhNjQuYzo3MDAzCiBtc2dpZCAiRXhwbGljaXQgc3RvcHMgYXJlIGlnbm9yZWQgaW4gYXV0byBtb2RlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1pYTY0LmM6Njk4MQorIzogY29uZmlnL3RjLWlhNjQuYzo3MDUzCiBtc2dpZCAiRm91bmQgJ3snIGFmdGVyIGV4cGxpY2l0IHN3aXRjaCB0byBhdXRvbWF0aWMgbW9kZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjc0MjgKKyM6IGNvbmZpZy90Yy1pYTY0LmM6NzUxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmhhbmRsZWQgZGVwZW5kZW5jeSAlcyBmb3IgJXMgKCVzKSwgbm90ZSAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjg3MDQKKyM6IGNvbmZpZy90Yy1pYTY0LmM6ODc5MwogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbml6ZWQgZGVwZW5kZW5jeSBzcGVjaWZpZXIgJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjk1MDYKKyM6IGNvbmZpZy90Yy1pYTY0LmM6OTY2OAogbXNnaWQgIk9ubHkgdGhlIGZpcnN0IHBhdGggZW5jb3VudGVyaW5nIHRoZSBjb25mbGljdCBpcyByZXBvcnRlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjk1MDkKKyM6IGNvbmZpZy90Yy1pYTY0LmM6OTY3MQogbXNnaWQgIlRoaXMgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb25mbGljdGluZyB1c2FnZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjEwNzc4IHJlYWQuYzoxMzcwIHJlYWQuYzoxOTc2IHJlYWQuYzoyMTg0IHJlYWQuYzoyNzk1CisjOiBjb25maWcvdGMtaWE2NC5jOjEwODg2Cittc2dpZCAiQ2FuJ3QgYWRkIHN0b3AgYml0IHRvIG1hcmsgZW5kIG9mIGluc3RydWN0aW9uIGdyb3VwIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1pYTY0LmM6MTA5ODMgcmVhZC5jOjEzNDQgcmVhZC5jOjIwNzUgcmVhZC5jOjI2NjkKIG1zZ2lkICJleHBlY3RlZCBzeW1ib2wgbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjEwNzg4IHJlYWQuYzoxMzgwIHJlYWQuYzoyMTk0IHJlYWQuYzoyODA1IHN0YWJzLmM6NDc4CisjOiBjb25maWcvdGMtaWE2NC5jOjEwOTkzIHJlYWQuYzoyMDg1IHJlYWQuYzoyNjc5IHN0YWJzLmM6NDcxCiAjLCBjLWZvcm1hdAogbXNnaWQgImV4cGVjdGVkIGNvbW1hIGFmdGVyIFwiJXNcIiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjEwODI5CisjOiBjb25maWcvdGMtaWE2NC5jOjExMDM0CiAjLCBjLWZvcm1hdAogbXNnaWQgImAlcycgaXMgYWxyZWFkeSB0aGUgYWxpYXMgb2YgJXMgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjEwODM5CisjOiBjb25maWcvdGMtaWE2NC5jOjExMDQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGAlcycgYWxyZWFkeSBoYXMgYW4gYWxpYXMgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtaWE2NC5jOjEwODUwCisjOiBjb25maWcvdGMtaWE2NC5jOjExMDU1CiAjLCBjLWZvcm1hdAogbXNnaWQgImluc2VydGluZyBcIiVzXCIgaW50byAlcyBhbGlhcyBoYXNoIHRhYmxlIGZhaWxlZDogJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWlhNjQuYzoxMDg1OAorIzogY29uZmlnL3RjLWlhNjQuYzoxMTA2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnNlcnRpbmcgXCIlc1wiIGludG8gJXMgbmFtZSBoYXNoIHRhYmxlIGZhaWxlZDogJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWlhNjQuYzoxMDg3NworIzogY29uZmlnL3RjLWlhNjQuYzoxMTA4MgogIywgYy1mb3JtYXQKIG1zZ2lkICJzeW1ib2wgYCVzJyBhbGlhc2VkIHRvIGAlcycgaXMgbm90IHVzZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLWlhNjQuYzoxMDg5OQorIzogY29uZmlnL3RjLWlhNjQuYzoxMTEwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJzZWN0aW9uIGAlcycgYWxpYXNlZCB0byBgJXMnIGlzIG5vdCB1c2VkIgogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy1pcDJrLmM6MTIzCisjLCBjLWZvcm1hdAogbXNnaWQgIklQMksgc3BlY2lmaWMgY29tbWFuZCBsaW5lIG9wdGlvbnM6XG4iCiBtc2dzdHIgIiIKIAogIzogY29uZmlnL3RjLWlwMmsuYzoxMjQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtbWlwMjAyMiAgICAgICAgICAgICAgIHJlc3RyaWN0IHRvIElQMjAyMiBpbnNucyBcbiIKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMtaXAyay5jOjEyNQorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC1taXAyMDIyZXh0ICAgICAgICAgICAgcGVybWl0IGV4dGVuZGVkIElQMjAyMiBpbnNuXG4iCiBtc2dzdHIgIiIKIApAQCAtNTAyMSwxNjkgKzUyNDEsMjY5IEBACiBtc2dzdHIgIiIKIAogIy4gUHJldGVuZCB0aGF0IHdlIGRvIG5vdCByZWNvZ25pc2UgdGhpcyBvcHRpb24uCi0jOiBjb25maWcvdGMtbTMyci5jOjIzMworIzogY29uZmlnL3RjLW0zMnIuYzozNDkKIG1zZ2lkICJVbnJlY29nbmlzZWQgb3B0aW9uOiAtaGlkZGVuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tMzJyLmM6MjY3CisjOiBjb25maWcvdGMtbTMyci5jOjM3NiBjb25maWcvdGMtc3BhcmMuYzo1OTYKK21zZ2lkICJVbnJlY29nbml6ZWQgb3B0aW9uIGZvbGxvd2luZyAtSyIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtbTMyci5jOjQwMgorIywgYy1mb3JtYXQKIG1zZ2lkICIgTTMyUiBzcGVjaWZpYyBjb21tYW5kIGxpbmUgb3B0aW9uczpcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTMyci5jOjI2OQorIzogY29uZmlnL3RjLW0zMnIuYzo0MDQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLW0zMnIgICAgICAgICAgICAgICAgICAgZGlzYWJsZSBzdXBwb3J0IGZvciB0aGUgbTMycnggaW5zdHJ1Y3Rpb24gc2V0XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzoyNzEKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDA2CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLW0zMnJ4ICAgICAgICAgICAgICAgICAgc3VwcG9ydCB0aGUgZXh0ZW5kZWQgbTMycnggaW5zdHJ1Y3Rpb24gc2V0XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzoyNzMKLW1zZ2lkICIgIC1PICAgICAgICAgICAgICAgICAgICAgIHRyeSB0byBjb21iaW5lIGluc3RydWN0aW9ucyBpbiBwYXJhbGxlbFxuIgorIzogY29uZmlnL3RjLW0zMnIuYzo0MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAtbTMycjIgICAgICAgICAgICAgICAgICBzdXBwb3J0IHRoZSBleHRlbmRlZCBtMzJyMiBpbnN0cnVjdGlvbiBzZXRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTMyci5jOjI3NgorIzogY29uZmlnL3RjLW0zMnIuYzo0MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAtRUwsLWxpdHRsZSAgICAgICAgICAgICBwcm9kdWNlIGxpdHRsZSBlbmRpYW4gY29kZSBhbmQgZGF0YVxuIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgLUVCLC1iaWcgICAgICAgICAgICAgICAgcHJvZHVjZSBiaWcgZW5kaWFuIGNvZGUgYW5kIGRhdGFcbiIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtbTMyci5jOjQxNAorIywgYy1mb3JtYXQKK21zZ2lkICIgIC1wYXJhbGxlbCAgICAgICAgICAgICAgIHRyeSB0byBjb21iaW5lIGluc3RydWN0aW9ucyBpbiBwYXJhbGxlbFxuIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgLW5vLXBhcmFsbGVsICAgICAgICAgICAgZGlzYWJsZSAtcGFyYWxsZWxcbiIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtbTMyci5jOjQxOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiICAtbm8tYml0aW5zdCAgICAgICAgICAgICBkaXNhbGxvdyB0aGUgTTMyUjIncyBleHRlbmRlZCBiaXQtZmllbGQgIgorImluc3RydWN0aW9uc1xuIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDIwCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgLU8gICAgICAgICAgICAgICAgICAgICAgdHJ5IHRvIG9wdGltaXplIGNvZGUuICBJbXBsaWVzIC1wYXJhbGxlbFxuIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDIzCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC13YXJuLWV4cGxpY2l0LXBhcmFsbGVsLWNvbmZsaWN0cyAgICAgd2FybiB3aGVuIHBhcmFsbGVsIGluc3RydWN0aW9uc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tMzJyLmM6Mjc4Ci1tc2dpZCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aW9sYXRlIGNvbnRyYWludHNcbiIKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDI1CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlnaHQgdmlvbGF0ZSBjb250cmFpbnRzXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzoyODAKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDI3CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLW5vLXdhcm4tZXhwbGljaXQtcGFyYWxsZWwtY29uZmxpY3RzICBkbyBub3Qgd2FybiB3aGVuIHBhcmFsbGVsXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzoyODIKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDI5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucyB2aW9sYXRlIGNvbnRyYWludHNcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucyBtaWdodCB2aW9sYXRlICIKKyJjb250cmFpbnRzXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzoyODQKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDMxCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC1XcCAgICAgICAgICAgICAgICAgICAgIHN5bm9ueW0gZm9yIC13YXJuLWV4cGxpY2l0LXBhcmFsbGVsLWNvbmZsaWN0c1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tMzJyLmM6Mjg2CisjOiBjb25maWcvdGMtbTMyci5jOjQzMworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtV25wICAgICAgICAgICAgICAgICAgICBzeW5vbnltIGZvciAtbm8td2Fybi1leHBsaWNpdC1wYXJhbGxlbC1jb25mbGljdHNcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTMyci5jOjI4OQorIzogY29uZmlnL3RjLW0zMnIuYzo0MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiAgLWlnbm9yZS1wYXJhbGxlbC1jb25mbGljdHMgICAgICAgICAgICBkbyBub3QgY2hlY2sgcGFyYWxsZWwgaW5zdHJ1Y3Rpb25zXG4iCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLW0zMnIuYzo0MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbyBjb250cmFpbnQgdmlvbGF0aW9uc1xuIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDM5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIgIC1uby1pZ25vcmUtcGFyYWxsZWwtY29uZmxpY3RzICAgICAgICAgY2hlY2sgcGFyYWxsZWwgaW5zdHJ1Y3Rpb25zIGZvclxuIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhaW50IHZpb2xhdGlvbnNcbiIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtbTMyci5jOjQ0MworIywgYy1mb3JtYXQKK21zZ2lkICIgIC1JcCAgICAgICAgICAgICAgICAgICAgIHN5bm9ueW0gZm9yIC1pZ25vcmUtcGFyYWxsZWwtY29uZmxpY3RzXG4iCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLW0zMnIuYzo0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAtbklwICAgICAgICAgICAgICAgICAgICBzeW5vbnltIGZvciAtbm8taWdub3JlLXBhcmFsbGVsLWNvbmZsaWN0c1xuIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDQ4CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC13YXJuLXVubWF0Y2hlZC1oaWdoICAgIHdhcm4gd2hlbiBhbiAocyloaWdoIHJlbG9jIGhhcyBubyBtYXRjaGluZyBsb3cgIgogInJlbG9jXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzoyOTEKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDUwCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLW5vLXdhcm4tdW5tYXRjaGVkLWhpZ2ggZG8gbm90IHdhcm4gYWJvdXQgbWlzc2luZyBsb3cgcmVsb2NzXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzoyOTMKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDUyCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLVd1aCAgICAgICAgICAgICAgICAgICAgc3lub255bSBmb3IgLXdhcm4tdW5tYXRjaGVkLWhpZ2hcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTMyci5jOjI5NQorIzogY29uZmlnL3RjLW0zMnIuYzo0NTQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtV251aCAgICAgICAgICAgICAgICAgICBzeW5vbnltIGZvciAtbm8td2Fybi11bm1hdGNoZWQtaGlnaFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tMzJyLmM6Mjk5CisjOiBjb25maWcvdGMtbTMyci5jOjQ1NworIywgYy1mb3JtYXQKK21zZ2lkICIgIC1LUElDICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIFBJQ1xuIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDYxCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLXJlbGF4ICAgICAgICAgICAgICAgICBjcmVhdGUgbGlua2VyIHJlbGF4YWJsZSBjb2RlXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzozMDEKKyM6IGNvbmZpZy90Yy1tMzJyLmM6NDYzCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLWNwdS1kZXNjICAgICAgICAgICAgICBwcm92aWRlIHJ1bnRpbWUgY3B1IGRlc2NyaXB0aW9uIGZpbGVcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTMyci5jOjcwMAotbXNnaWQgIkluc3RydWN0aW9ucyB3cml0ZSB0byB0aGUgc2FtZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4iCisjOiBjb25maWcvdGMtbTMyci5jOjg5OAorbXNnaWQgImluc3RydWN0aW9ucyB3cml0ZSB0byB0aGUgc2FtZSBkZXN0aW5hdGlvbiByZWdpc3Rlci4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzo3MDgKKyM6IGNvbmZpZy90Yy1tMzJyLmM6OTA2CiBtc2dpZCAiSW5zdHJ1Y3Rpb25zIGRvIG5vdCB1c2UgcGFyYWxsZWwgZXhlY3V0aW9uIHBpcGVsaW5lcy4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzo3MTUKKyM6IGNvbmZpZy90Yy1tMzJyLmM6OTE0CiBtc2dpZCAiSW5zdHJ1Y3Rpb25zIHNoYXJlIHRoZSBzYW1lIGV4ZWN1dGlvbiBwaXBlbGluZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTMyci5jOjc5MSBjb25maWcvdGMtbTMyci5jOjg4NworIzogY29uZmlnL3RjLW0zMnIuYzo5OTAgY29uZmlnL3RjLW0zMnIuYzoxMTA0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdCBhIDE2IGJpdCBpbnN0cnVjdGlvbiAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tMzJyLmM6Nzk4IGNvbmZpZy90Yy1tMzJyLmM6ODk0IGNvbmZpZy90Yy1tMzJyLmM6MTA1MAorIzogY29uZmlnL3RjLW0zMnIuYzoxMDAyIGNvbmZpZy90Yy1tMzJyLmM6MTExNiBjb25maWcvdGMtbTMyci5jOjEzMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW5zdHJ1Y3Rpb24gJyVzJyBpcyBmb3IgdGhlIE0zMlIyIG9ubHkiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLW0zMnIuYzoxMDE1IGNvbmZpZy90Yy1tMzJyLmM6MTEyOSBjb25maWcvdGMtbTMyci5jOjEzMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBpbnN0cnVjdGlvbiAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tMzJyLmM6ODA3IGNvbmZpZy90Yy1tMzJyLmM6OTAxIGNvbmZpZy90Yy1tMzJyLmM6MTA1NworIzogY29uZmlnL3RjLW0zMnIuYzoxMDI0IGNvbmZpZy90Yy1tMzJyLmM6MTEzNiBjb25maWcvdGMtbTMyci5jOjEzMjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5zdHJ1Y3Rpb24gJyVzJyBpcyBmb3IgdGhlIE0zMlJYIG9ubHkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzo4MTYgY29uZmlnL3RjLW0zMnIuYzo5MTAKKyM6IGNvbmZpZy90Yy1tMzJyLmM6MTAzMyBjb25maWcvdGMtbTMyci5jOjExNDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5zdHJ1Y3Rpb24gJyVzJyBjYW5ub3QgYmUgZXhlY3V0ZWQgaW4gcGFyYWxsZWwuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tMzJyLmM6ODcxIGNvbmZpZy90Yy1tMzJyLmM6OTM1IGNvbmZpZy90Yy1tMzJyLmM6MTEwNworIzogY29uZmlnL3RjLW0zMnIuYzoxMDg4IGNvbmZpZy90Yy1tMzJyLmM6MTE3MCBjb25maWcvdGMtbTMyci5jOjEzNzgKIG1zZ2lkICJpbnRlcm5hbCBlcnJvcjogbG9va3VwL2dldCBvcGVyYW5kcyBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzo5MjAKKyM6IGNvbmZpZy90Yy1tMzJyLmM6MTE1NQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiBvbmx5IHRoZSBOT1AgaW5zdHJ1Y3Rpb24gY2FuIGJlIGlzc3VlZCBpbiBwYXJhbGxlbCBvbiB0aGUgbTMyciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTMyci5jOjk0OQorIzogY29uZmlnL3RjLW0zMnIuYzoxMTg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIlczogb3V0cHV0IG9mIDFzdCBpbnN0cnVjdGlvbiBpcyB0aGUgc2FtZSBhcyBhbiBpbnB1dCB0byAybmQgaW5zdHJ1Y3Rpb24gLSAiCiAiaXMgdGhpcyBpbnRlbnRpb25hbCA/IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tMzJyLmM6OTUzCisjOiBjb25maWcvdGMtbTMyci5jOjExODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiVzOiBvdXRwdXQgb2YgMm5kIGluc3RydWN0aW9uIGlzIHRoZSBzYW1lIGFzIGFuIGlucHV0IHRvIDFzdCBpbnN0cnVjdGlvbiAtICIKICJpcyB0aGlzIGludGVudGlvbmFsID8iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW0zMnIuYzoxMjY3IGNvbmZpZy90Yy1wcGMuYzoxNzMyIGNvbmZpZy90Yy1wcGMuYzo0MjYzCisjOiBjb25maWcvdGMtbTMyci5jOjE1MzcgY29uZmlnL3RjLXBwYy5jOjE3NjggY29uZmlnL3RjLXBwYy5jOjQzNDkKIG1zZ2lkICJFeHBlY3RlZCBjb21tYSBhZnRlciBzeW1ib2wtbmFtZTogcmVzdCBvZiBsaW5lIGlnbm9yZWQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tMzJyLmM6MTI3NworIzogY29uZmlnL3RjLW0zMnIuYzoxNTQ3CiAjLCBjLWZvcm1hdAogbXNnaWQgIi5TQ09NTW9uIGxlbmd0aCAoJWxkLikgPDAhIElnbm9yZWQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tMzJyLmM6MTI5MSBjb25maWcvdGMtcHBjLmM6MTc1NCBjb25maWcvdGMtcHBjLmM6Mjg5OQotIzogY29uZmlnL3RjLXBwYy5jOjQyODcKKyM6IGNvbmZpZy90Yy1tMzJyLmM6MTU2MSBjb25maWcvdGMtcHBjLmM6MTc5MCBjb25maWcvdGMtcHBjLmM6MjkzNgorIzogY29uZmlnL3RjLXBwYy5jOjQzNzMKIG1zZ2lkICJpZ25vcmluZyBiYWQgYWxpZ25tZW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tMzJyLmM6MTMwMyBjb25maWcvdGMtcHBjLmM6MTc5MSBjb25maWcvdGMtdjg1MC5jOjMzNQorIzogY29uZmlnL3RjLW0zMnIuYzoxNTczIGNvbmZpZy90Yy1wcGMuYzoxODI3IGNvbmZpZy90Yy12ODUwLmM6MzM1CiBtc2dpZCAiQ29tbW9uIGFsaWdubWVudCBub3QgYSBwb3dlciBvZiAyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tMzJyLmM6MTMxOCBjb25maWcvdGMtcHBjLmM6MTc2NSBjb25maWcvdGMtcHBjLmM6NDI5OQorIzogY29uZmlnL3RjLW0zMnIuYzoxNTg4IGNvbmZpZy90Yy1wcGMuYzoxODAxIGNvbmZpZy90Yy1wcGMuYzo0Mzg1CiAjLCBjLWZvcm1hdAogbXNnaWQgIklnbm9yaW5nIGF0dGVtcHQgdG8gcmUtZGVmaW5lIHN5bWJvbCBgJXMnLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTMyci5jOjEzMjcKKyM6IGNvbmZpZy90Yy1tMzJyLmM6MTU5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJMZW5ndGggb2YgLnNjb21tIFwiJXNcIiBpcyBhbHJlYWR5ICVsZC4gTm90IGNoYW5nZWQgdG8gJWxkLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTMyci5jOjE4MDgKKyM6IGNvbmZpZy90Yy1tMzJyLmM6MjA5MAogbXNnaWQgIlVubWF0Y2hlZCBoaWdoL3NoaWdoIHJlbG9jIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MzcyCisjOiBjb25maWcvdGMtbTMyci5jOjIzMzIgY29uZmlnL3RjLXNwYXJjLmM6MzQ5MQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY2FuJ3QgZXhwb3J0IHJlbG9jIHR5cGUgJWQgKGAlcycpIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MzY4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJNb3Rvcm9sYSA2OEhDMTEvNjhIQzEyLzY4SENTMTIgb3B0aW9uczpcbiIKQEAgLTUyMDQsNTUgKzU1MjQsNTYgQEAKICIgICAgICAgICAgICAgICAgICAgICAgICAgICh1c2VkIGZvciB0ZXN0aW5nKVxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6NDE4CisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjQxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJEZWZhdWx0IHRhcmdldCBgJXMnIGlzIG5vdCBzdXBwb3J0ZWQuIgogbXNnc3RyICIiCiAKICMuIER1bXAgdGhlIG9wY29kZSBzdGF0aXN0aWNzIHRhYmxlLgotIzogY29uZmlnL3RjLW02OGhjMTEuYzo0MzcKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6NDMyCisjLCBjLWZvcm1hdAogbXNnaWQgIk5hbWUgICAjIE1vZGVzICBNaW4gb3BzICBNYXggb3BzICBNb2RlcyBtYXNrICAjIFVzZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjUwNQorIzogY29uZmlnL3RjLW02OGhjMTEuYzo0OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3B0aW9uIGAlcycgaXMgbm90IHJlY29nbml6ZWQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6NzM3CisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjcyMAogbXNnaWQgIiM8aW1tOD4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzo3NDYKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6NzI5CiBtc2dpZCAiIzxpbW0xNj4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzo3NTUgY29uZmlnL3RjLW02OGhjMTEuYzo3NjQKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6NzM4IGNvbmZpZy90Yy1tNjhoYzExLmM6NzQ3CiBtc2dpZCAiPGltbTg+LFgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzo3OTEKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6Nzc0CiBtc2dpZCAiKjxhYnM4PiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjgwMworIzogY29uZmlnL3RjLW02OGhjMTEuYzo3ODYKIG1zZ2lkICIjPG1hc2s+IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6ODEzCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjc5NgogIywgYy1mb3JtYXQKIG1zZ2lkICJzeW1ib2wlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjgxNQorIzogY29uZmlnL3RjLW02OGhjMTEuYzo3OTgKIG1zZ2lkICI8YWJzPiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjgzNAorIzogY29uZmlnL3RjLW02OGhjMTEuYzo4MTcKIG1zZ2lkICI8bGFiZWw+IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6ODUwCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjgzMwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiIyBFeGFtcGxlIG9mIGAlcycgaW5zdHJ1Y3Rpb25zXG4iCkBAIC01MjYwLDYxOCArNTU4MSw2NDUgQEAKICJfc3RhcnQ6XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzo4OTgKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6ODgwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkluc3RydWN0aW9uIGAlcycgaXMgbm90IHJlY29nbml6ZWQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6OTAzCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjg4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnN0cnVjdGlvbiBmb3JtYXRzIGZvciBgJXMnOiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjEwMzgKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTAxNQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbW1lZGlhdGUgb3BlcmFuZCBpcyBub3QgYWxsb3dlZCBmb3Igb3BlcmFuZCAlZC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoxMDgyCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjEwNTkKIG1zZ2lkICJJbmRpcmVjdCBpbmRleGVkIGFkZHJlc3NpbmcgaXMgbm90IHZhbGlkIGZvciA2OEhDMTEuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTEwMgorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxMDc5CiBtc2dpZCAiU3B1cmlvdXMgYCwnIG9yIGJhZCBpbmRpcmVjdCByZWdpc3RlciBhZGRyZXNzaW5nIG1vZGUuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTEyNAorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxMTAxCiBtc2dpZCAiTWlzc2luZyBzZWNvbmQgcmVnaXN0ZXIgb3Igb2Zmc2V0IGZvciBpbmRleGVkLWluZGlyZWN0IG1vZGUuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTEzNAorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxMTExCiBtc2dpZCAiTWlzc2luZyBzZWNvbmQgcmVnaXN0ZXIgZm9yIGluZGV4ZWQtaW5kaXJlY3QgbW9kZS4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoxMTUwCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjExMjcKIG1zZ2lkICJNaXNzaW5nIGBdJyB0byBjbG9zZSBpbmRleGVkLWluZGlyZWN0IG1vZGUuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTE5NQorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxMTcyCiBtc2dpZCAiSWxsZWdhbCBvcGVyYW5kLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjEyMDAKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTE3NwogbXNnaWQgIk1pc3Npbmcgb3BlcmFuZC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoxMjUzCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjEyMzAKIG1zZ2lkICJQcmUtaW5jcmVtZW50IG1vZGUgaXMgbm90IHZhbGlkIGZvciA2OEhDMTEiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoxMjY2CisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjEyNDMKIG1zZ2lkICJXcm9uZyByZWdpc3RlciBpbiByZWdpc3RlciBpbmRpcmVjdCBtb2RlLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjEyNzQKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTI1MQogbXNnaWQgIk1pc3NpbmcgYF0nIHRvIGNsb3NlIHJlZ2lzdGVyIGluZGlyZWN0IG9wZXJhbmQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTI5NAorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxMjcxCiBtc2dpZCAiUG9zdC1kZWNyZW1lbnQgbW9kZSBpcyBub3QgdmFsaWQgZm9yIDY4SEMxMS4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoxMzAyCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjEyNzkKIG1zZ2lkICJQb3N0LWluY3JlbWVudCBtb2RlIGlzIG5vdCB2YWxpZCBmb3IgNjhIQzExLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjEzMjAKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTI5NwogbXNnaWQgIkludmFsaWQgaW5kZXhlZCBpbmRpcmVjdCBtb2RlLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjE0MTcKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTM4OQogIywgYy1mb3JtYXQKIG1zZ2lkICJUcmFwIGlkIGAlbGQnIGlzIG91dCBvZiByYW5nZS4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoxNDIxCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjEzOTMKIG1zZ2lkICJUcmFwIGlkIG11c3QgYmUgd2l0aGluIFsweDMwLi4weDM5XSBvciBbMHg0MC4uMHhmZl0uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTQyOAorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxNDAwCiAjLCBjLWZvcm1hdAogbXNnaWQgIk9wZXJhbmQgb3V0IG9mIDgtYml0IHJhbmdlOiBgJWxkJy4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoxNDM1CisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjE0MDcKIG1zZ2lkICJUaGUgdHJhcCBpZCBtdXN0IGJlIGEgY29uc3RhbnQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTQ3MAorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxNDQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIk9wZXJhbmQgYCV4JyBub3QgcmVjb2duaXplZCBpbiBmaXh1cDguIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTQ5MCBjb25maWcvdGMtbTY4aGMxMS5jOjE1NDIKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTQ1OSBjb25maWcvdGMtbTY4aGMxMS5jOjE1MDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3BlcmFuZCBvdXQgb2YgMTYtYml0IHJhbmdlOiBgJWxkJy4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoxNTIyIGNvbmZpZy90Yy1tNjhoYzExLmM6MTU1OAorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxNDkxIGNvbmZpZy90Yy1tNjhoYzExLmM6MTUyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJPcGVyYW5kIGAleCcgbm90IHJlY29nbml6ZWQgaW4gZml4dXAxNi4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoxNTc2CisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjE1NDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5leHBlY3RlZCBicmFuY2ggY29udmVyc2lvbiB3aXRoIGAleCciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoxNjcxIGNvbmZpZy90Yy1tNjhoYzExLmM6MTgxMgorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxNjMyIGNvbmZpZy90Yy1tNjhoYzExLmM6MTc3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJPcGVyYW5kIG91dCBvZiByYW5nZSBmb3IgYSByZWxhdGl2ZSBicmFuY2g6IGAlbGQnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTc4MAorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxNzM4CiBtc2dpZCAiSW52YWxpZCByZWdpc3RlciBmb3IgZGJjYy90YmNjIGluc3RydWN0aW9uLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjE4NzEKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTgyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJJbmNyZW1lbnQvZGVjcmVtZW50IHZhbHVlIGlzIG91dCBvZiByYW5nZTogYCVsZCcuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTg4MgorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxODM3CiBtc2dpZCAiRXhwZWN0aW5nIGEgcmVnaXN0ZXIuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTg5NworIzogY29uZmlnL3RjLW02OGhjMTEuYzoxODUyCiBtc2dpZCAiSW52YWxpZCByZWdpc3RlciBmb3IgcG9zdC9wcmUgaW5jcmVtZW50LiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjE5MjcKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTg4MgogbXNnaWQgIkludmFsaWQgcmVnaXN0ZXIuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTkzNAorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxODg5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk9mZnNldCBvdXQgb2YgMTYtYml0IHJhbmdlOiAlbGQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MTkzOQorIzogY29uZmlnL3RjLW02OGhjMTEuYzoxODk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIk9mZnNldCBvdXQgb2YgNS1iaXQgcmFuZ2UgZm9yIG1vdncvbW92YiBpbnNuOiAlbGQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MjAyMAorIzogY29uZmlnL3RjLW02OGhjMTEuYzoyMDAwCiBtc2dpZCAiRXhwZWN0aW5nIHJlZ2lzdGVyIEQgZm9yIGluZGV4ZWQgaW5kaXJlY3QgbW9kZS4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoyMDIyCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjIwMDIKIG1zZ2lkICJJbmRleGVkIGluZGlyZWN0IG1vZGUgaXMgbm90IGFsbG93ZWQgZm9yIG1vdmIvbW92dy4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoyMDM5CisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjIwMTkKIG1zZ2lkICJJbnZhbGlkIGFjY3VtdWxhdG9yIHJlZ2lzdGVyLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjIwNjQKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MjA0NAogbXNnaWQgIkludmFsaWQgaW5kZXhlZCByZWdpc3Rlci4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoyMDcyCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjIwNTIKIG1zZ2lkICJBZGRyZXNzaW5nIG1vZGUgbm90IGltcGxlbWVudGVkIHlldC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoyMDg3CisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjIwNjUKIG1zZ2lkICJJbnZhbGlkIHNvdXJjZSByZWdpc3RlciBmb3IgdGhpcyBpbnN0cnVjdGlvbiwgdXNlICd0ZnInLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjIwODkKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MjA2NwogbXNnaWQgIkludmFsaWQgc291cmNlIHJlZ2lzdGVyLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjIwOTQKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MjA3MgogbXNnaWQgIkludmFsaWQgZGVzdGluYXRpb24gcmVnaXN0ZXIgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24sIHVzZSAndGZyJy4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoyMDk2CisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjIwNzQKIG1zZ2lkICJJbnZhbGlkIGRlc3RpbmF0aW9uIHJlZ2lzdGVyLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjIxOTQKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MjE3MAogbXNnaWQgIkludmFsaWQgaW5kZXhlZCByZWdpc3RlciwgZXhwZWN0aW5nIHJlZ2lzdGVyIFguIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MjE5NgorIzogY29uZmlnL3RjLW02OGhjMTEuYzoyMTcyCiBtc2dpZCAiSW52YWxpZCBpbmRleGVkIHJlZ2lzdGVyLCBleHBlY3RpbmcgcmVnaXN0ZXIgWS4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoyNTA4CisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjI0NzgKIG1zZ2lkICJObyBpbnN0cnVjdGlvbiBvciBtaXNzaW5nIG9wY29kZS4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoyNTczCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjI1NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3Bjb2RlIGAlcycgaXMgbm90IHJlY29nbml6ZWQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MjU5NQorIzogY29uZmlnL3RjLW02OGhjMTEuYzoyNTY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkdhcmJhZ2UgYXQgZW5kIG9mIGluc3RydWN0aW9uOiBgJXMnLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjI2MTgKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MjU4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIG9wZXJhbmQgZm9yIGAlcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoyNjcwCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjI2MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBtb2RlOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MjczMgorIzogY29uZmlnL3RjLW02OGhjMTEuYzoyNjk5CiBtc2dpZCAiYmFkIC5yZWxheCBmb3JtYXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzoyNzc5CisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjI3NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVsb2NhdGlvbiAlZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IG9iamVjdCBmaWxlIGZvcm1hdC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzozMDY1CisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjMwMjIKIG1zZ2lkICJicmEgb3IgYnNyIHdpdGggdW5kZWZpbmVkIHN5bWJvbC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzozMTY4IGNvbmZpZy90Yy1tNjhoYzExLmM6MzIyNQorIzogY29uZmlnL3RjLW02OGhjMTEuYzozMTI1IGNvbmZpZy90Yy1tNjhoYzExLmM6MzE4MgogIywgYy1mb3JtYXQKIG1zZ2lkICJTdWJ0eXBlICVkIGlzIG5vdCByZWNvZ25pemVkLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjMyODkKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MzI0MQogbXNnaWQgIkV4cHJlc3Npb24gdG9vIGNvbXBsZXguIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MzMyMgorIzogY29uZmlnL3RjLW02OGhjMTEuYzozMjc0CiBtc2dpZCAiVmFsdWUgb3V0IG9mIDE2LWJpdCByYW5nZS4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzozMzQ2CisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjMyOTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVmFsdWUgJWxkIHRvbyBsYXJnZSBmb3IgOC1iaXQgUEMtcmVsYXRpdmUgYnJhbmNoLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4aGMxMS5jOjMzNTMKKyM6IGNvbmZpZy90Yy1tNjhoYzExLmM6MzMwNQogIywgYy1mb3JtYXQKIG1zZ2lkICJBdXRvIGluY3JlbWVudC9kZWNyZW1lbnQgb2Zmc2V0ICclbGQnIGlzIG91dCBvZiByYW5nZS4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGhjMTEuYzozMzcxCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjMzMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiT2Zmc2V0IG91dCBvZiA1LWJpdCByYW5nZSBmb3IgbW92dy9tb3ZiIGluc246ICVsZCIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtbTY4aGMxMS5jOjMzMzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiTGluZSAlZDogdW5rbm93biByZWxvY2F0aW9uIHR5cGU6IDB4JXguIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6Njc4CisjOiBjb25maWcvdGMtbTY4ay5jOjY4MCBjb25maWcvdGMtbTY4ay5jOjQ1NjIgY29uZmlnL3RjLW02OGsuYzo0OTY0Cittc2dpZCAiVHJpZWQgdG8gY29udmVydCBQQyByZWxhdGl2ZSBicmFuY2ggdG8gYWJzb2x1dGUganVtcCIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtbTY4ay5jOjY4NyBjb25maWcvdGMtbTY4ay5jOjQ1NTIKK21zZ2lkICJUcmllZCB0byBjb252ZXJ0IFBDIHJlbGF0aXZlIEJTUiB0byBhYnNvbHV0ZSBKU1IiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLW02OGsuYzo2OTIKIG1zZ2lkICJVbmtub3duIFBDIHJlbGF0aXZlIGluc3RydWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6ODE3CisjOiBjb25maWcvdGMtbTY4ay5jOjgzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW4gbm90IGRvICVkIGJ5dGUgcGMtcmVsYXRpdmUgcmVsb2NhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjgxOQorIzogY29uZmlnL3RjLW02OGsuYzo4MzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2FuIG5vdCBkbyAlZCBieXRlIHBjLXJlbGF0aXZlIHBpYyByZWxvY2F0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6ODI0CisjOiBjb25maWcvdGMtbTY4ay5jOjgzOAogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW4gbm90IGRvICVkIGJ5dGUgcmVsb2NhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjgyNgorIzogY29uZmlnL3RjLW02OGsuYzo4NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2FuIG5vdCBkbyAlZCBieXRlIHBpYyByZWxvY2F0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6ODk0CisjOiBjb25maWcvdGMtbTY4ay5jOjkwOAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gcHJvZHVjZSByZWxvYyBhZ2FpbnN0IHN5bWJvbCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6OTM4IGNvbmZpZy90Yy1taXBzLmM6MTMzMjIgY29uZmlnL3RjLXZheC5jOjM0NDEKKyM6IGNvbmZpZy90Yy1tNjhrLmM6OTUyIGNvbmZpZy90Yy1taXBzLmM6MTMxNDMgY29uZmlnL3RjLXZheC5jOjM0NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG1ha2UgJXMgcmVsb2NhdGlvbiBQQyByZWxhdGl2ZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjEwMzEgY29uZmlnL3RjLXRhaG9lLmM6MTQ5NSBjb25maWcvdGMtdmF4LmM6MTg4OQorIzogY29uZmlnL3RjLW02OGsuYzoxMDQ1IGNvbmZpZy90Yy10YWhvZS5jOjE0OTUgY29uZmlnL3RjLXZheC5jOjE4ODkKIG1zZ2lkICJObyBvcGVyYXRvciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjEwNjEgY29uZmlnL3RjLXRhaG9lLmM6MTUxMiBjb25maWcvdGMtdmF4LmM6MTkwNgorIzogY29uZmlnL3RjLW02OGsuYzoxMDc1IGNvbmZpZy90Yy10YWhvZS5jOjE1MTIgY29uZmlnL3RjLXZheC5jOjE5MDYKIG1zZ2lkICJVbmtub3duIG9wZXJhdG9yIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MTgzNgorIzogY29uZmlnL3RjLW02OGsuYzoxOTA1CiBtc2dpZCAiaW52YWxpZCBpbnN0cnVjdGlvbiBmb3IgdGhpcyBhcmNoaXRlY3R1cmU7IG5lZWRzICIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjE4NDEKKyM6IGNvbmZpZy90Yy1tNjhrLmM6MTkxMAorbXNnaWQgIkNvbGRGaXJlIGZwdSAoY2Z2NGUpIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1tNjhrLmM6MTkxMwogbXNnaWQgImZwdSAoNjgwNDAsIDY4MDYwIG9yIDY4ODgxLzY4ODgyKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjE4NDQKKyM6IGNvbmZpZy90Yy1tNjhrLmM6MTkxNgogbXNnaWQgIm1tdSAoNjgwMzAgb3IgNjg4NTEpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MTg0NworIzogY29uZmlnL3RjLW02OGsuYzoxOTE5CiBtc2dpZCAiNjgwMjAgb3IgaGlnaGVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MTg1MAorIzogY29uZmlnL3RjLW02OGsuYzoxOTIyCiBtc2dpZCAiNjgwMDAgb3IgaGlnaGVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MTg1MworIzogY29uZmlnL3RjLW02OGsuYzoxOTI1CiBtc2dpZCAiNjgwMTAgb3IgaGlnaGVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MTg4MgorIzogY29uZmlnL3RjLW02OGsuYzoxOTU0CiBtc2dpZCAib3BlcmFuZHMgbWlzbWF0Y2giCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzoxOTM5IGNvbmZpZy90Yy1tNjhrLmM6MTk0NSBjb25maWcvdGMtbTY4ay5jOjE5NTEKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MjQ2NCBjb25maWcvdGMtbW1peC5jOjI0ODgKKyM6IGNvbmZpZy90Yy1tNjhrLmM6MjAxNCBjb25maWcvdGMtbTY4ay5jOjIwMjAgY29uZmlnL3RjLW02OGsuYzoyMDI2CisjOiBjb25maWcvdGMtbW1peC5jOjI1MzkgY29uZmlnL3RjLW1taXguYzoyNTYzCiBtc2dpZCAib3BlcmFuZCBvdXQgb2YgcmFuZ2UiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzoyMDA4CisjOiBjb25maWcvdGMtbTY4ay5jOjIwODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmlnbnVtIHRvbyBiaWcgZm9yICVjIGZvcm1hdDsgdHJ1bmNhdGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MjA3NgorIzogY29uZmlnL3RjLW02OGsuYzoyMTUxCiBtc2dpZCAiZGlzcGxhY2VtZW50IHRvbyBsYXJnZSBmb3IgdGhpcyBhcmNoaXRlY3R1cmU7IG5lZWRzIDY4MDIwIG9yIGhpZ2hlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjIxODYKKyM6IGNvbmZpZy90Yy1tNjhrLmM6MjI2MgogbXNnaWQgIiIKICJzY2FsZSBmYWN0b3IgaW52YWxpZCBvbiB0aGlzIGFyY2hpdGVjdHVyZTsgbmVlZHMgY3B1MzIgb3IgNjgwMjAgb3IgaGlnaGVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MjE5MQorIzogY29uZmlnL3RjLW02OGsuYzoyMjY3CiBtc2dpZCAiaW52YWxpZCBpbmRleCBzaXplIGZvciBjb2xkZmlyZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjIyNDQKKyM6IGNvbmZpZy90Yy1tNjhrLmM6MjMyMAogbXNnaWQgIkZvcmNpbmcgYnl0ZSBkaXNwbGFjZW1lbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzoyMjQ2CisjOiBjb25maWcvdGMtbTY4ay5jOjIzMjIKIG1zZ2lkICJieXRlIGRpc3BsYWNlbWVudCBvdXQgb2YgcmFuZ2UiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzoyMjkzIGNvbmZpZy90Yy1tNjhrLmM6MjMzMQorIzogY29uZmlnL3RjLW02OGsuYzoyMzY5IGNvbmZpZy90Yy1tNjhrLmM6MjQwNwogbXNnaWQgImludmFsaWQgb3BlcmFuZCBtb2RlIGZvciB0aGlzIGFyY2hpdGVjdHVyZTsgbmVlZHMgNjgwMjAgb3IgaGlnaGVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MjMxNyBjb25maWcvdGMtbTY4ay5jOjIzNTEKKyM6IGNvbmZpZy90Yy1tNjhrLmM6MjM5MyBjb25maWcvdGMtbTY4ay5jOjI0MjcKIG1zZ2lkICI6YiBub3QgcGVybWl0dGVkOyBkZWZhdWx0aW5nIHRvIDp3IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MjQyOAorIzogY29uZmlnL3RjLW02OGsuYzoyNTA0CiBtc2dpZCAidW5zdXBwb3J0ZWQgYnl0ZSB2YWx1ZTsgdXNlIGEgZGlmZmVyZW50IHN1ZmZpeCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjI0NDIKKyM6IGNvbmZpZy90Yy1tNjhrLmM6MjUxOQogbXNnaWQgInVua25vd24vaW5jb3JyZWN0IG9wZXJhbmQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzoyNDc1IGNvbmZpZy90Yy1tNjhrLmM6MjQ4MyBjb25maWcvdGMtbTY4ay5jOjI0OTAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MjQ5NworIzogY29uZmlnL3RjLW02OGsuYzoyNTUyIGNvbmZpZy90Yy1tNjhrLmM6MjU2MCBjb25maWcvdGMtbTY4ay5jOjI1NjcKKyM6IGNvbmZpZy90Yy1tNjhrLmM6MjU3NAogbXNnaWQgIm91dCBvZiByYW5nZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjI1NDMKKyM6IGNvbmZpZy90Yy1tNjhrLmM6MjYyMAogbXNnaWQgIkNhbid0IHVzZSBsb25nIGJyYW5jaGVzIG9uIDY4MDAwLzY4MDEwLzUyMDAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzoyNjUzCisjOiBjb25maWcvdGMtbTY4ay5jOjI3MzAKIG1zZ2lkICJFeHByZXNzaW9uIG91dCBvZiByYW5nZSwgdXNpbmcgMCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjI3NjUgY29uZmlnL3RjLW02OGsuYzoyNzgxCisjOiBjb25maWcvdGMtbTY4ay5jOjI4OTggY29uZmlnL3RjLW02OGsuYzoyOTE0CiBtc2dpZCAiRmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIgaW4gcmVnaXN0ZXIgbGlzdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjI3NzEKKyM6IGNvbmZpZy90Yy1tNjhrLmM6MjkwNAogbXNnaWQgIldyb25nIHJlZ2lzdGVyIGluIGZsb2F0aW5nLXBvaW50IHJlZ2xpc3QiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzoyNzg3CisjOiBjb25maWcvdGMtbTY4ay5jOjI5MjAKIG1zZ2lkICJpbmNvcnJlY3QgcmVnaXN0ZXIgaW4gcmVnbGlzdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjI3OTMKKyM6IGNvbmZpZy90Yy1tNjhrLmM6MjkyNgogbXNnaWQgIndyb25nIHJlZ2lzdGVyIGluIGZsb2F0aW5nLXBvaW50IHJlZ2xpc3QiCiBtc2dzdHIgIiIKIAotIy4gRVJST1IKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MzIzNAorIy4gRVJST1IuCisjOiBjb25maWcvdGMtbTY4ay5jOjMzNzMKIG1zZ2lkICJFeHRyYSApIgogbXNnc3RyICIiCiAKLSMuIEVSUk9SCi0jOiBjb25maWcvdGMtbTY4ay5jOjMyNDUKKyMuIEVSUk9SLgorIzogY29uZmlnL3RjLW02OGsuYzozMzg0CiBtc2dpZCAiTWlzc2luZyApIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MzI2MgorIzogY29uZmlnL3RjLW02OGsuYzozNDAxCiBtc2dpZCAiTWlzc2luZyBvcGVyYW5kIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MzU5NAorIzogY29uZmlnL3RjLW02OGsuYzozNzU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIC0tIHN0YXRlbWVudCBgJXMnIGlnbm9yZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzozNjQzCisjOiBjb25maWcvdGMtbTY4ay5jOjM4MDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRG9uJ3Qga25vdyBob3cgdG8gZmlndXJlIHdpZHRoIG9mICVjIGluIG1kX2Fzc2VtYmxlKCkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzozODI1IGNvbmZpZy90Yy1tNjhrLmM6Mzg2MworIzogY29uZmlnL3RjLW02OGsuYzozOTg5IGNvbmZpZy90Yy1tNjhrLmM6NDAyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnRlcm5hbCBFcnJvcjogQ2FuJ3QgZmluZCAlcyBpbiBoYXNoIHRhYmxlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6MzgyOCBjb25maWcvdGMtbTY4ay5jOjM4NjYKKyM6IGNvbmZpZy90Yy1tNjhrLmM6Mzk5MiBjb25maWcvdGMtbTY4ay5jOjQwMzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW50ZXJuYWwgRXJyb3I6IENhbid0IGhhc2ggJXM6ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6Mzk0OAorIzogY29uZmlnL3RjLW02OGsuYzo0MTEyCiBtc2dpZCAiYXJjaGl0ZWN0dXJlIG5vdCB5ZXQgc2VsZWN0ZWQ6IGRlZmF1bHRpbmcgdG8gNjgwMjAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzozOTk3CisjOiBjb25maWcvdGMtbTY4ay5jOjQxNjcKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGRlZmF1bHQgY3B1IGAlcycgPz8/IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NDAwOQorIzogY29uZmlnL3RjLW02OGsuYzo0MTc5CiBtc2dpZCAiNjgwNDAgYW5kIDY4ODUxIHNwZWNpZmllZDsgbW11IGluc3RydWN0aW9ucyBtYXkgYXNzZW1ibGUgaW5jb3JyZWN0bHkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzo0MDI5CisjOiBjb25maWcvdGMtbTY4ay5jOjQxOTkKIG1zZ2lkICJvcHRpb25zIGZvciA2ODg4MSBhbmQgbm8tNjg4ODEgYm90aCBnaXZlbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjQwMzEKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NDIwMQogbXNnaWQgIm9wdGlvbnMgZm9yIDY4ODUxIGFuZCBuby02ODg1MSBib3RoIGdpdmVuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NDEwMgorIzogY29uZmlnL3RjLW02OGsuYzo0MjcyCiAjLCBjLWZvcm1hdAogbXNnaWQgInRleHQgbGFiZWwgYCVzJyBhbGlnbmVkIHRvIG9kZCBib3VuZGFyeSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjQzMjEKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NDQ5MQogbXNnaWQgImludmFsaWQgYnl0ZSBicmFuY2ggb2Zmc2V0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NDM1OAorIzogY29uZmlnL3RjLW02OGsuYzo0NTI4CiBtc2dpZCAic2hvcnQgYnJhbmNoIHdpdGggemVybyBvZmZzZXQ6IHVzZSA6dyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjQ4MjcgY29uZmlnL3RjLW02OGsuYzo0ODM4CisjOiBjb25maWcvdGMtbTY4ay5jOjQ1NzggY29uZmlnL3RjLW02OGsuYzo0NjM3IGNvbmZpZy90Yy1tNjhrLmM6NDcwMQorbXNnaWQgIlRyaWVkIHRvIGNvbnZlcnQgUEMgcmVsYXRpdmUgY29uZGl0aW9uYWwgYnJhbmNoIHRvIGFic29sdXRlIGp1bXAiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLW02OGsuYzo0NjE4Cittc2dpZCAiVHJpZWQgdG8gY29udmVydCBEQmNjIHRvIGFic29sdXRlIGp1bXAiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLW02OGsuYzo1MDEwIGNvbmZpZy90Yy1tNjhrLmM6NTAyMSBjb25maWcvdGMtbTY4ay5jOjUwNjIKIG1zZ2lkICJleHByZXNzaW9uIG91dCBvZiByYW5nZTogZGVmYXVsdGluZyB0byAxIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NDg3MAorIzogY29uZmlnL3RjLW02OGsuYzo1MDUzCiBtc2dpZCAiZXhwcmVzc2lvbiBvdXQgb2YgcmFuZ2U6IGRlZmF1bHRpbmcgdG8gMCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjQ5MDMgY29uZmlnL3RjLW02OGsuYzo0OTE1CisjOiBjb25maWcvdGMtbTY4ay5jOjUwOTUgY29uZmlnL3RjLW02OGsuYzo1MTA3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbid0IGRlYWwgd2l0aCBleHByZXNzaW9uOyBkZWZhdWx0aW5nIHRvICVsZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjQ5MjkKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NTEyMQogbXNnaWQgImV4cHJlc3Npb24gZG9lc24ndCBmaXQgaW4gQllURSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjQ5MzMKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NTEyNQogbXNnaWQgImV4cHJlc3Npb24gZG9lc24ndCBmaXQgaW4gV09SRCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjUwMjYKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NTIxOAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogdW5yZWNvZ25pemVkIHByb2Nlc3NvciBuYW1lIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NTA5MQorIzogY29uZmlnL3RjLW02OGsuYzo1MjgzCiBtc2dpZCAiYmFkIGNvcHJvY2Vzc29yIGlkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NTA5NworIzogY29uZmlnL3RjLW02OGsuYzo1Mjg5CiBtc2dpZCAidW5yZWNvZ25pemVkIGZvcHQgb3B0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NTIzMQorIzogY29uZmlnL3RjLW02OGsuYzo1NDIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIm9wdGlvbiBgJXMnIG1heSBub3QgYmUgbmVnYXRlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjUyNDIKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NTQzNAogIywgYy1mb3JtYXQKIG1zZ2lkICJvcHRpb24gYCVzJyBub3QgcmVjb2duaXplZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjUyNzUKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NTQ2NwogbXNnaWQgImJhZCBmb3JtYXQgb2YgT1BUIE5FU1Q9ZGVwdGgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzo1MzM4CisjOiBjb25maWcvdGMtbTY4ay5jOjU1MzAKIG1zZ2lkICJtaXNzaW5nIGxhYmVsIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NTM2MiBjb25maWcvdGMtbTY4ay5jOjUzOTEKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NTU1NCBjb25maWcvdGMtbTY4ay5jOjU1ODMKIG1zZ2lkICJiYWQgcmVnaXN0ZXIgbGlzdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjUzNjQKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NTU1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgcmVnaXN0ZXIgbGlzdDogJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzo1NDYyCisjOiBjb25maWcvdGMtbTY4ay5jOjU2NTQKIG1zZ2lkICJyZXN0b3JlIHdpdGhvdXQgc2F2ZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjU2MzYgY29uZmlnL3RjLW02OGsuYzo2MDIzCisjOiBjb25maWcvdGMtbTY4ay5jOjU4MjggY29uZmlnL3RjLW02OGsuYzo2MjE1CiBtc2dpZCAic3ludGF4IGVycm9yIGluIHN0cnVjdHVyZWQgY29udHJvbCBkaXJlY3RpdmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzo1Njg1CisjOiBjb25maWcvdGMtbTY4ay5jOjU4NzcKIG1zZ2lkICJtaXNzaW5nIGNvbmRpdGlvbiBjb2RlIGluIHN0cnVjdHVyZWQgY29udHJvbCBkaXJlY3RpdmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzo1NzU3CisjOiBjb25maWcvdGMtbTY4ay5jOjU5NDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNvbmRpdGlvbiA8JWMlYz4gaW4gc3RydWN0dXJlZCBjb250cm9sIGRpcmVjdGl2ZSBjYW4gbm90IGJlIGVuY29kZWQgY29ycmVjdGx5IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NjA2NgorIzogY29uZmlnL3RjLW02OGsuYzo2MjU4CiBtc2dpZCAibWlzc2luZyB0aGVuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NjE0OAorIzogY29uZmlnL3RjLW02OGsuYzo2MzQwCiBtc2dpZCAiZWxzZSB3aXRob3V0IG1hdGNoaW5nIGlmIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NjE4MgorIzogY29uZmlnL3RjLW02OGsuYzo2Mzc0CiBtc2dpZCAiZW5kaSB3aXRob3V0IG1hdGNoaW5nIGlmIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NjIyMworIzogY29uZmlnL3RjLW02OGsuYzo2NDE1CiBtc2dpZCAiYnJlYWsgb3V0c2lkZSBvZiBzdHJ1Y3R1cmVkIGxvb3AiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzo2MjYyCisjOiBjb25maWcvdGMtbTY4ay5jOjY0NTQKIG1zZ2lkICJuZXh0IG91dHNpZGUgb2Ygc3RydWN0dXJlZCBsb29wIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NjMxNAorIzogY29uZmlnL3RjLW02OGsuYzo2NTA2CiBtc2dpZCAibWlzc2luZyA9IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NjM1MgorIzogY29uZmlnL3RjLW02OGsuYzo2NTQ0CiBtc2dpZCAibWlzc2luZyB0byBvciBkb3dudG8iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzo2Mzg4IGNvbmZpZy90Yy1tNjhrLmM6NjQyMiBjb25maWcvdGMtbTY4ay5jOjY2NDEKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NjU4MCBjb25maWcvdGMtbTY4ay5jOjY2MTQgY29uZmlnL3RjLW02OGsuYzo2ODMyCiBtc2dpZCAibWlzc2luZyBkbyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjY1MjUKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NjcxNgogbXNnaWQgImVuZGYgd2l0aG91dCBmb3IiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzo2NTgxCisjOiBjb25maWcvdGMtbTY4ay5jOjY3NzIKIG1zZ2lkICJ1bnRpbCB3aXRob3V0IHJlcGVhdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjY2NzcKKyM6IGNvbmZpZy90Yy1tNjhrLmM6Njg2OAogbXNnaWQgImVuZHcgd2l0aG91dCB3aGlsZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjY4MDEKKyM6IGNvbmZpZy90Yy1tNjhrLmM6Njk5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgb3B0aW9uIGAlcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzo2ODQ2CisjOiBjb25maWcvdGMtbTY4ay5jOjcwMzcKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGFyY2hpdGVjdHVyZSBzcGVjaWZpY2F0aW9uIGAlcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzo2OTQwCisjOiBjb25maWcvdGMtbTY4ay5jOjcxMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIjY4MFgwIG9wdGlvbnM6XG4iCiAiLWxcdFx0XHR1c2UgMSB3b3JkIGZvciByZWZzIHRvIHVuZGVmaW5lZCBzeW1ib2xzIFtkZWZhdWx0IDJdXG4iCiAiLW02ODAwMCB8IC1tNjgwMDggfCAtbTY4MDEwIHwgLW02ODAyMCB8IC1tNjgwMzAgfCAtbTY4MDQwIHwgLW02ODA2MCB8XG4iCiAiLW02ODMwMiB8IC1tNjgzMzEgfCAtbTY4MzMyIHwgLW02ODMzMyB8IC1tNjgzNDAgfCAtbTY4MzYwIHwgLW1jcHUzMiB8XG4iCi0iLW01MjAwICB8IC1tNTIwMiAgfCAtbTUyMDQgIHwgLW01MjA2ICB8IC1tNTIwNmUgfCAtbTUzMDcgIHwgLW01NDA3XG4iCisiLW01MjAwICB8IC1tNTIwMiAgfCAtbTUyMDQgIHwgLW01MjA2ICB8IC1tNTIwNmUgfCAtbTUyOHggIHwgLW01MzA3ICB8XG4iCisiLW01NDA3ICB8IC1tY2Z2NCAgfCAtbWNmdjRlXG4iCiAiXHRcdFx0c3BlY2lmeSB2YXJpYW50IG9mIDY4MFgwIGFyY2hpdGVjdHVyZSBbZGVmYXVsdCAlc11cbiIKICItbTY4ODgxIHwgLW02ODg4MiB8IC1tbm8tNjg4ODEgfCAtbW5vLTY4ODgyXG4iCiAiXHRcdFx0dGFyZ2V0IGhhcy9sYWNrcyBmbG9hdGluZy1wb2ludCBjb3Byb2Nlc3NvclxuIgogIlx0XHRcdFtkZWZhdWx0IHllcyBmb3IgNjgwMjAsIDY4MDMwLCBhbmQgY3B1MzJdXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW02OGsuYzo2OTUxCisjOiBjb25maWcvdGMtbTY4ay5jOjcxNDMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIi1tNjg4NTEgfCAtbW5vLTY4ODUxXG4iCiAiXHRcdFx0dGFyZ2V0IGhhcy9sYWNrcyBtZW1vcnktbWFuYWdlbWVudCB1bml0IGNvcHJvY2Vzc29yXG4iCkBAIC01ODg0LDcgKzYyMzIsOCBAQAogIi0tYml0d2lzZS1vclx0XHRkbyBub3QgdHJlYXQgYHwnIGFzIGEgY29tbWVudCBjaGFyYWN0ZXJcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjY5NjEKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NzE1MworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiLS1iYXNlLXNpemUtZGVmYXVsdC0xNlx0YmFzZSByZWcgd2l0aG91dCBzaXplIGlzIDE2IGJpdHNcbiIKICItLWJhc2Utc2l6ZS1kZWZhdWx0LTMyXHRiYXNlIHJlZyB3aXRob3V0IHNpemUgaXMgMzIgYml0cyAoZGVmYXVsdClcbiIKQEAgLTU4OTIsMTIgKzYyNDEsMTIgQEAKICItLWRpc3Atc2l6ZS1kZWZhdWx0LTMyXHRkaXNwbGFjZW1lbnQgd2l0aCB1bmtub3duIHNpemUgaXMgMzIgYml0cyAoZGVmYXVsdClcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbTY4ay5jOjY5OTYKKyM6IGNvbmZpZy90Yy1tNjhrLmM6NzE4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciAlcyBpbiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tNjhrLmM6NzAwMAorIzogY29uZmlnL3RjLW02OGsuYzo3MTkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIk9wY29kZSglZC4lcyk6ICIKIG1zZ3N0ciAiIgpAQCAtNjEwOCw2ICs2NDU3LDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMtbWNvcmUuYzoxODA3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJNQ09SRSBzcGVjaWZpYyBvcHRpb25zOlxuIgogIiAgLXtuby19anNyaTJic3JcdCAge2Rpc31hYmxlIGpzcmkgdG8gYnNyIHRyYW5zZm9ybWF0aW9uIChkZWY6IGRpcylcbiIKQEAgLTYxNjQsNjMwICs2NTE0LDYzMiBAQAogbXNnc3RyICIiCiAKICMuIFByb3RvdHlwZXMgZm9yIHN0YXRpYyBmdW5jdGlvbnMuCi0jOiBjb25maWcvdGMtbWlwcy5jOjgxOAorIzogY29uZmlnL3RjLW1pcHMuYzo4NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW50ZXJuYWwgRXJyb3IsIGxpbmUgJWQsICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTEzMQorIzogY29uZmlnL3RjLW1pcHMuYzoxMTc1CiAjLCBjLWZvcm1hdAogbXNnaWQgImludGVybmFsOiBjYW4ndCBoYXNoIGAlcyc6ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTEzOQorIzogY29uZmlnL3RjLW1pcHMuYzoxMTgzCiAjLCBjLWZvcm1hdAogbXNnaWQgImludGVybmFsIGVycm9yOiBiYWQgbWlwczE2IG9wY29kZTogJXMgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEzMzIKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTM3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZXR1cm5lZCBmcm9tIG1pcHNfaXAoJXMpIGluc25fb3Bjb2RlID0gMHgleFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTk3NiBjb25maWcvdGMtbWlwcy5jOjEzNjY2CisjOiBjb25maWcvdGMtbWlwcy5jOjIwNjMgY29uZmlnL3RjLW1pcHMuYzoxMzQ4NAogbXNnaWQgImV4dGVuZGVkIGluc3RydWN0aW9uIGluIGRlbGF5IHNsb3QiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoyMDIyIGNvbmZpZy90Yy1taXBzLmM6MjAzMgorIzogY29uZmlnL3RjLW1pcHMuYzoyMTI0IGNvbmZpZy90Yy1taXBzLmM6MjEzNAogIywgYy1mb3JtYXQKIG1zZ2lkICJqdW1wIHRvIG1pc2FsaWduZWQgYWRkcmVzcyAoMHglbHgpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MjAyNSBjb25maWcvdGMtbWlwcy5jOjIwMzUKKyM6IGNvbmZpZy90Yy1taXBzLmM6MjEyNyBjb25maWcvdGMtbWlwcy5jOjIxMzcKICMsIGMtZm9ybWF0CiBtc2dpZCAianVtcCBhZGRyZXNzIHJhbmdlIG92ZXJmbG93ICgweCVseCkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoyODA1IGNvbmZpZy90Yy1taXBzLmM6MzE5NAotbXNnaWQgIk1hY3JvIGluc3RydWN0aW9uIGV4cGFuZGVkIGludG8gbXVsdGlwbGUgaW5zdHJ1Y3Rpb25zIgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy90Yy1taXBzLmM6MjgxNworIzogY29uZmlnL3RjLW1pcHMuYzoyOTI3CiBtc2dpZCAiIgogIk1hY3JvIGluc3RydWN0aW9uIGV4cGFuZGVkIGludG8gbXVsdGlwbGUgaW5zdHJ1Y3Rpb25zIGluIGEgYnJhbmNoIGRlbGF5IHNsb3QiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzozMjI1IGNvbmZpZy90Yy1taXBzLmM6NzU0OSBjb25maWcvdGMtbWlwcy5jOjc1NzUKLSM6IGNvbmZpZy90Yy1taXBzLmM6NzY1MyBjb25maWcvdGMtbWlwcy5jOjc2NzgKKyM6IGNvbmZpZy90Yy1taXBzLmM6MjkzMAorbXNnaWQgIk1hY3JvIGluc3RydWN0aW9uIGV4cGFuZGVkIGludG8gbXVsdGlwbGUgaW5zdHJ1Y3Rpb25zIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1taXBzLmM6MzQwOCBjb25maWcvdGMtbWlwcy5jOjM1NzQgY29uZmlnL3RjLW1pcHMuYzo1ODk3Cittc2dpZCAiY29uc3RhbnQgdG9vIGxhcmdlIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1taXBzLmM6MzQxNiBjb25maWcvdGMtbWlwcy5jOjc1MTQgY29uZmlnL3RjLW1pcHMuYzo3NTM4CisjOiBjb25maWcvdGMtbWlwcy5jOjc2MDggY29uZmlnL3RjLW1pcHMuYzo3NjMxCiBtc2dpZCAib3BlcmFuZCBvdmVyZmxvdyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjMyNTEgY29uZmlnL3RjLW1pcHMuYzo2OTAyIGNvbmZpZy90Yy1taXBzLmM6Nzc1NAorIzogY29uZmlnL3RjLW1pcHMuYzozNDM1IGNvbmZpZy90Yy1taXBzLmM6NjkwNyBjb25maWcvdGMtbWlwcy5jOjc2OTgKIG1zZ2lkICJNYWNybyB1c2VkICRhdCBhZnRlciBcIi5zZXQgbm9hdFwiIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MzI4MQorIzogY29uZmlnL3RjLW1pcHMuYzozNDcyCiBtc2dpZCAidW5zdXBwb3J0ZWQgbGFyZ2UgY29uc3RhbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzozMjgzCisjOiBjb25maWcvdGMtbWlwcy5jOjM0NzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW5zdHJ1Y3Rpb24gJXMgcmVxdWlyZXMgYWJzb2x1dGUgZXhwcmVzc2lvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjM0MjIKKyM6IGNvbmZpZy90Yy1taXBzLmM6MzYwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJOdW1iZXIgKDB4JWx4KSBsYXJnZXIgdGhhbiAzMiBiaXRzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MzQ0NAorIzogY29uZmlnL3RjLW1pcHMuYzozNjMwCiBtc2dpZCAiTnVtYmVyIGxhcmdlciB0aGFuIDY0IGJpdHMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzozNzQ3IGNvbmZpZy90Yy1taXBzLmM6Mzc4NyBjb25maWcvdGMtbWlwcy5jOjM4MjkKLSM6IGNvbmZpZy90Yy1taXBzLmM6Mzg4NiBjb25maWcvdGMtbWlwcy5jOjYwNjkgY29uZmlnL3RjLW1pcHMuYzo2MTExCi0jOiBjb25maWcvdGMtbWlwcy5jOjYxNjMgY29uZmlnL3RjLW1pcHMuYzo2NjYxIGNvbmZpZy90Yy1taXBzLmM6NjcxNgorIzogY29uZmlnL3RjLW1pcHMuYzozOTA3IGNvbmZpZy90Yy1taXBzLmM6MzkzNSBjb25maWcvdGMtbWlwcy5jOjM5NzMKKyM6IGNvbmZpZy90Yy1taXBzLmM6NDAxOCBjb25maWcvdGMtbWlwcy5jOjYxNjYgY29uZmlnL3RjLW1pcHMuYzo2MjA1CisjOiBjb25maWcvdGMtbWlwcy5jOjYyNDQgY29uZmlnL3RjLW1pcHMuYzo2NjkyIGNvbmZpZy90Yy1taXBzLmM6Njc0NAogbXNnaWQgIlBJQyBjb2RlIG9mZnNldCBvdmVyZmxvdyAobWF4IDE2IHNpZ25lZCBiaXRzKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjQxNDYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiQnJhbmNoICVzIGlzIGFsd2F5cyBmYWxzZSAobm9wKSIKLW1zZ3N0ciAiIgotCi0jOiBjb25maWcvdGMtbWlwcy5jOjQxNTMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiQnJhbmNoIGxpa2VseSAlcyBpcyBhbHdheXMgZmFsc2UiCi1tc2dzdHIgIiIKLQotIzogY29uZmlnL3RjLW1pcHMuYzo0MTYwIGNvbmZpZy90Yy1taXBzLmM6NDIyOCBjb25maWcvdGMtbWlwcy5jOjQzMjAKLSM6IGNvbmZpZy90Yy1taXBzLmM6NDM2OSBjb25maWcvdGMtbWlwcy5jOjc4NTcgY29uZmlnL3RjLW1pcHMuYzo3ODY1Ci0jOiBjb25maWcvdGMtbWlwcy5jOjc4NzIgY29uZmlnL3RjLW1pcHMuYzo3OTc5CisjOiBjb25maWcvdGMtbWlwcy5jOjQzMjcgY29uZmlnL3RjLW1pcHMuYzo0MzkxIGNvbmZpZy90Yy1taXBzLmM6NDQ3NQorIzogY29uZmlnL3RjLW1pcHMuYzo0NTIwIGNvbmZpZy90Yy1taXBzLmM6NDU3OCBjb25maWcvdGMtbWlwcy5jOjQ2MjYKKyM6IGNvbmZpZy90Yy1taXBzLmM6Nzc5NiBjb25maWcvdGMtbWlwcy5jOjc4MDMgY29uZmlnL3RjLW1pcHMuYzo3ODEwCisjOiBjb25maWcvdGMtbWlwcy5jOjc5MTcKIG1zZ2lkICJVbnN1cHBvcnRlZCBsYXJnZSBjb25zdGFudCIKIG1zZ3N0ciAiIgogCiAjLiByZXN1bHQgaXMgYWx3YXlzIHRydWUKLSM6IGNvbmZpZy90Yy1taXBzLmM6NDE5NAorIzogY29uZmlnL3RjLW1pcHMuYzo0MzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJyYW5jaCAlcyBpcyBhbHdheXMgdHJ1ZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjQ0MzcgY29uZmlnL3RjLW1pcHMuYzo0NTQwCisjOiBjb25maWcvdGMtbWlwcy5jOjQ1ODkgY29uZmlnL3RjLW1pcHMuYzo0NjM3IGNvbmZpZy90Yy1taXBzLmM6ODI0MgorIywgYy1mb3JtYXQKK21zZ2lkICJJbXByb3BlciBwb3NpdGlvbiAoJWx1KSIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtbWlwcy5jOjQ1OTUgY29uZmlnL3RjLW1pcHMuYzo4MzEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkltcHJvcGVyIGV4dHJhY3Qgc2l6ZSAoJWx1LCBwb3NpdGlvbiAlbHUpIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1taXBzLmM6NDY0MyBjb25maWcvdGMtbWlwcy5jOjgyNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW1wcm9wZXIgaW5zZXJ0IHNpemUgKCVsdSwgcG9zaXRpb24gJWx1KSIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtbWlwcy5jOjQ2ODAgY29uZmlnL3RjLW1pcHMuYzo0Nzc4CiBtc2dpZCAiRGl2aWRlIGJ5IHplcm8uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6NDYyMgorIzogY29uZmlnL3RjLW1pcHMuYzo0ODY1CiBtc2dpZCAiZGxhIHVzZWQgdG8gbG9hZCAzMi1iaXQgcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo0NjI1CisjOiBjb25maWcvdGMtbWlwcy5jOjQ4NjgKIG1zZ2lkICJsYSB1c2VkIHRvIGxvYWQgNjQtYml0IGFkZHJlc3MiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo1MDAwIGNvbmZpZy90Yy1taXBzLmM6NTM1MworIzogY29uZmlnL3RjLW1pcHMuYzo1MTg5IGNvbmZpZy90Yy1taXBzLmM6NTQ2NwogbXNnaWQgIlBJQyBjb2RlIG9mZnNldCBvdmVyZmxvdyAobWF4IDMyIHNpZ25lZCBiaXRzKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjU0MTkKKyM6IGNvbmZpZy90Yy1taXBzLmM6NTUzNQogbXNnaWQgIk1JUFMgUElDIGNhbGwgdG8gcmVnaXN0ZXIgb3RoZXIgdGhhbiAkMjUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo1NDI1IGNvbmZpZy90Yy1taXBzLmM6NTQzNiBjb25maWcvdGMtbWlwcy5jOjU1NzQKLSM6IGNvbmZpZy90Yy1taXBzLmM6NTU4NQorIzogY29uZmlnL3RjLW1pcHMuYzo1NTQxIGNvbmZpZy90Yy1taXBzLmM6NTU1MiBjb25maWcvdGMtbWlwcy5jOjU2NzYKKyM6IGNvbmZpZy90Yy1taXBzLmM6NTY4NwogbXNnaWQgIk5vIC5jcHJlc3RvcmUgcHNldWRvLW9wIHVzZWQgaW4gUElDIGNvZGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo1NDMwIGNvbmZpZy90Yy1taXBzLmM6NTU3OQorIzogY29uZmlnL3RjLW1pcHMuYzo1NTQ2IGNvbmZpZy90Yy1taXBzLmM6NTY4MQogbXNnaWQgIk5vIC5mcmFtZSBwc2V1ZG8tb3AgdXNlZCBpbiBQSUMgY29kZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjU2NTcgY29uZmlnL3RjLW1pcHMuYzo1NzQ2IGNvbmZpZy90Yy1taXBzLmM6NjQxNAotIzogY29uZmlnL3RjLW1pcHMuYzo2NDUzIGNvbmZpZy90Yy1taXBzLmM6NjQ3MSBjb25maWcvdGMtbWlwcy5jOjcyMjEKKyM6IGNvbmZpZy90Yy1taXBzLmM6NTc1OSBjb25maWcvdGMtbWlwcy5jOjU4NDggY29uZmlnL3RjLW1pcHMuYzo2NDc3CisjOiBjb25maWcvdGMtbWlwcy5jOjY1MTEgY29uZmlnL3RjLW1pcHMuYzo2NTI5IGNvbmZpZy90Yy1taXBzLmM6NzIwOQogbXNnaWQgIm9wY29kZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcHJvY2Vzc29yIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6NTk3MAorIzogY29uZmlnL3RjLW1pcHMuYzo2MDgyCiBtc2dpZCAibG9hZC9zdG9yZSBhZGRyZXNzIG92ZXJmbG93IChtYXggMzIgYml0cykiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo3MDg0IGNvbmZpZy90Yy1taXBzLmM6NzExNyBjb25maWcvdGMtbWlwcy5jOjcxNjcKLSM6IGNvbmZpZy90Yy1taXBzLmM6NzE5OQorIzogY29uZmlnL3RjLW1pcHMuYzo3MDgxIGNvbmZpZy90Yy1taXBzLmM6NzExMSBjb25maWcvdGMtbWlwcy5jOjcxNTkKKyM6IGNvbmZpZy90Yy1taXBzLmM6NzE4OAogbXNnaWQgIkltcHJvcGVyIHJvdGF0ZSBjb3VudCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjcyNjAKKyM6IGNvbmZpZy90Yy1taXBzLmM6NzI0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnN0cnVjdGlvbiAlczogcmVzdWx0IGlzIGFsd2F5cyBmYWxzZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjc0MTgKKyM6IGNvbmZpZy90Yy1taXBzLmM6NzM5MQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnN0cnVjdGlvbiAlczogcmVzdWx0IGlzIGFsd2F5cyB0cnVlIgogbXNnc3RyICIiCiAKICMuIEZJWE1FOiBDaGVjayBpZiB0aGlzIGlzIG9uZSBvZiB0aGUgaXRibCBtYWNyb3MsIHNpbmNlIHRoZXkKICMuIGFyZSBhZGRlZCBkeW5hbWljYWxseS4KLSM6IGNvbmZpZy90Yy1taXBzLmM6Nzc1MAorIzogY29uZmlnL3RjLW1pcHMuYzo3Njk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1hY3JvICVzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo4MDEwCisjOiBjb25maWcvdGMtbWlwcy5jOjc5NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW50ZXJuYWw6IGJhZCBtaXBzIG9wY29kZSAobWFzayBlcnJvcik6ICVzICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6ODAzMCBjb25maWcvdGMtbWlwcy5jOjgzNjEKKyM6IGNvbmZpZy90Yy1taXBzLmM6Nzk3MyBjb25maWcvdGMtbWlwcy5jOjgzMzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW50ZXJuYWw6IGJhZCBtaXBzIG9wY29kZSAodW5rbm93biBleHRlbnNpb24gb3BlcmFuZCB0eXBlIGArJWMnKTogJXMgJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo4MDkxCisjOiBjb25maWcvdGMtbWlwcy5jOjgwMzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW50ZXJuYWw6IGJhZCBtaXBzIG9wY29kZSAodW5rbm93biBvcGVyYW5kIHR5cGUgYCVjJyk6ICVzICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6ODA5OAorIzogY29uZmlnL3RjLW1pcHMuYzo4MDQxCiAjLCBjLWZvcm1hdAogbXNnaWQgImludGVybmFsOiBiYWQgbWlwcyBvcGNvZGUgKGJpdHMgMHglbHggdW5kZWZpbmVkKTogJXMgJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo4MjEyCisjOiBjb25maWcvdGMtbWlwcy5jOjgxNTUKICMsIGMtZm9ybWF0CiBtc2dpZCAib3Bjb2RlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwcm9jZXNzb3I6ICVzICglcykiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo4MjkzCi0jLCBjLWZvcm1hdAotbXNnaWQgIkltcHJvcGVyIHBvc2l0aW9uICglbHUpIgorIzogY29uZmlnL3RjLW1pcHMuYzo4MzMwIGNvbmZpZy90Yy1taXBzLmM6ODgxOQorbXNnaWQgImFic29sdXRlIGV4cHJlc3Npb24gcmVxdWlyZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo4MzE5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIkltcHJvcGVyIGluc2VydCBzaXplICglbHUsIHBvc2l0aW9uICVsdSkiCi1tc2dzdHIgIiIKLQotIzogY29uZmlnL3RjLW1pcHMuYzo4MzQ1Ci0jLCBjLWZvcm1hdAotbXNnaWQgIkltcHJvcGVyIGV4dHJhY3Qgc2l6ZSAoJWx1LCBwb3NpdGlvbiAlbHUpIgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy90Yy1taXBzLmM6ODM3OQorIzogY29uZmlnL3RjLW1pcHMuYzo4MzU0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkltcHJvcGVyIHNoaWZ0IGFtb3VudCAoJWx1KSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjg0MDUgY29uZmlnL3RjLW1pcHMuYzo5NjU1IGNvbmZpZy90Yy1taXBzLmM6OTc3MAorIzogY29uZmlnL3RjLW1pcHMuYzo4MzgwIGNvbmZpZy90Yy1taXBzLmM6OTY0MyBjb25maWcvdGMtbWlwcy5jOjk3NTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCB2YWx1ZSBmb3IgYCVzJyAoJWx1KSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjg0MjMKKyM6IGNvbmZpZy90Yy1taXBzLmM6ODM5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbGxlZ2FsIGJyZWFrIGNvZGUgKCVsdSkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo4NDM3CisjOiBjb25maWcvdGMtbWlwcy5jOjg0MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiSWxsZWdhbCBsb3dlciBicmVhayBjb2RlICglbHUpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6ODQ1MAorIzogY29uZmlnL3RjLW1pcHMuYzo4NDI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIklsbGVnYWwgMjAtYml0IGNvZGUgKCVsdSkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo4NDYyCisjOiBjb25maWcvdGMtbWlwcy5jOjg0MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29wcm9jY2Vzb3IgY29kZSA+IDI1IGJpdHMgKCVsdSkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo4NDc1CisjOiBjb25maWcvdGMtbWlwcy5jOjg0NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiSWxsZWdhbCAxOS1iaXQgY29kZSAoJWx1KSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjg0ODcKKyM6IGNvbmZpZy90Yy1taXBzLmM6ODQ2MgogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIHBlcmZvcm1hbmNlIHJlZ2lzdGVyICglbHUpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6ODUyNQorIzogY29uZmlnL3RjLW1pcHMuYzo4NTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgcmVnaXN0ZXIgbnVtYmVyICglZCkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo4NzAzCisjOiBjb25maWcvdGMtbWlwcy5jOjg2NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBNRE1YIEltbWVkaWF0ZSAoJWxkKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjg3NDYKKyM6IGNvbmZpZy90Yy1taXBzLmM6ODcyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGZsb2F0IHJlZ2lzdGVyIG51bWJlciAoJWQpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6ODc1NgorIzogY29uZmlnL3RjLW1pcHMuYzo4NzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZsb2F0IHJlZ2lzdGVyIHNob3VsZCBiZSBldmVuLCB3YXMgJWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo4Nzk1CisjOiBjb25maWcvdGMtbWlwcy5jOjg3NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIGVsZW1lbnQgc2VsZWN0b3IgJWxkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6ODgwMgorIzogY29uZmlnL3RjLW1pcHMuYzo4Nzc3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkV4cGVjdGluZyAnXScgZm91bmQgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjg4NDQKLW1zZ2lkICJhYnNvbHV0ZSBleHByZXNzaW9uIHJlcXVpcmVkIgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy90Yy1taXBzLmM6ODkxMgorIzogY29uZmlnL3RjLW1pcHMuYzo4ODg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCBmbG9hdGluZyBwb2ludCBjb25zdGFudDogJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo5MDQwCisjOiBjb25maWcvdGMtbWlwcy5jOjkwMTYKIG1zZ2lkICJDYW4ndCB1c2UgZmxvYXRpbmcgcG9pbnQgaW5zbiBpbiB0aGlzIHNlY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo5MTAxCisjOiBjb25maWcvdGMtbWlwcy5jOjkwNzcKIG1zZ2lkICJleHByZXNzaW9uIG91dCBvZiByYW5nZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjkxNDEKKyM6IGNvbmZpZy90Yy1taXBzLmM6OTExNwogbXNnaWQgImx1aSBleHByZXNzaW9uIG5vdCBpbiByYW5nZSAwLi42NTUzNSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjkxNjUKKyM6IGNvbmZpZy90Yy1taXBzLmM6OTE0MQogIywgYy1mb3JtYXQKLW1zZ2lkICJpbnZhbGlkIGNvbmRpdGlvbiBjb2RlIHJlZ2lzdGVyICRmY2MlZCIKK21zZ2lkICJJbnZhbGlkIGNvbmRpdGlvbiBjb2RlIHJlZ2lzdGVyICRmY2MlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjkxOTAKKyM6IGNvbmZpZy90Yy1taXBzLmM6OTE0NgorIywgYy1mb3JtYXQKK21zZ2lkICJDb25kaXRpb24gY29kZSByZWdpc3RlciBzaG91bGQgYmUgZXZlbiBmb3IgJXMsIHdhcyAlZCIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtbWlwcy5jOjkxNTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29uZGl0aW9uIGNvZGUgcmVnaXN0ZXIgc2hvdWxkIGJlIDAgb3IgNCBmb3IgJXMsIHdhcyAlZCIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtbWlwcy5jOjkxNzcKIG1zZ2lkICJpbnZhbGlkIGNvcHJvY2Vzc29yIHN1Yi1zZWxlY3Rpb24gdmFsdWUgKDAtNykiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo5MjAyIGNvbmZpZy90Yy1taXBzLmM6OTIxOQorIzogY29uZmlnL3RjLW1pcHMuYzo5MTg5IGNvbmZpZy90Yy1taXBzLmM6OTIwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgYnl0ZSB2ZWN0b3IgaW5kZXggKCVsZCkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo5MjMwCisjOiBjb25maWcvdGMtbWlwcy5jOjkyMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIGNoYXIgPSAnJWMnXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo5MjQxIGNvbmZpZy90Yy1taXBzLmM6OTI0NiBjb25maWcvdGMtbWlwcy5jOjk3OTUKKyM6IGNvbmZpZy90Yy1taXBzLmM6OTIyOCBjb25maWcvdGMtbWlwcy5jOjkyMzMgY29uZmlnL3RjLW1pcHMuYzo5NzgzCiBtc2dpZCAiaWxsZWdhbCBvcGVyYW5kcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjkzMTEKKyM6IGNvbmZpZy90Yy1taXBzLmM6OTI5OAogbXNnaWQgInVucmVjb2duaXplZCBvcGNvZGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo5NDIzCisjOiBjb25maWcvdGMtbWlwcy5jOjk0MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCByZWdpc3RlciBudW1iZXIgKCVkKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjk1MTQKKyM6IGNvbmZpZy90Yy1taXBzLmM6OTUwMgogbXNnaWQgInVzZWQgJGF0IHdpdGhvdXQgXCIuc2V0IG5vYXRcIiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjk2ODkKKyM6IGNvbmZpZy90Yy1taXBzLmM6OTY3NwogbXNnaWQgImNhbid0IHBhcnNlIHJlZ2lzdGVyIGxpc3QiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo5OTEzCisjOiBjb25maWcvdGMtbWlwcy5jOjk5MDEKIG1zZ2lkICJleHRlbmRlZCBvcGVyYW5kIHJlcXVlc3RlZCBidXQgbm90IHJlcXVpcmVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6OTkxNQorIzogY29uZmlnL3RjLW1pcHMuYzo5OTAzCiBtc2dpZCAiaW52YWxpZCB1bmV4dGVuZGVkIG9wZXJhbmQgdmFsdWUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzo5OTQzCisjOiBjb25maWcvdGMtbWlwcy5jOjk5MzEKIG1zZ2lkICJvcGVyYW5kIHZhbHVlIG91dCBvZiByYW5nZSBmb3IgaW5zdHJ1Y3Rpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMDM0MQorIzogY29uZmlnL3RjLW1pcHMuYzoxMDMzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJBIGRpZmZlcmVudCAlcyB3YXMgYWxyZWFkeSBzcGVjaWZpZWQsIGlzIG5vdyAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEwNTAyCisjOiBjb25maWcvdGMtbWlwcy5jOjEwNDk2CiBtc2dpZCAiLUcgbWF5IG5vdCBiZSB1c2VkIHdpdGggZW1iZWRkZWQgUElDIGNvZGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMDUzMQorIzogY29uZmlnL3RjLW1pcHMuYzoxMDUyNQogbXNnaWQgIi1jYWxsX3NoYXJlZCBpcyBzdXBwb3J0ZWQgb25seSBmb3IgRUxGIGZvcm1hdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEwNTM4IGNvbmZpZy90Yy1taXBzLmM6MTE4NDkgY29uZmlnL3RjLW1pcHMuYzoxMjA4NworIzogY29uZmlnL3RjLW1pcHMuYzoxMDUzMiBjb25maWcvdGMtbWlwcy5jOjExNzg3IGNvbmZpZy90Yy1taXBzLmM6MTIwMjgKIG1zZ2lkICItRyBtYXkgbm90IGJlIHVzZWQgd2l0aCBTVlI0IFBJQyBjb2RlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTA1NDcKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTA1NDEKIG1zZ2lkICItbm9uX3NoYXJlZCBpcyBzdXBwb3J0ZWQgb25seSBmb3IgRUxGIGZvcm1hdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEwNTY1CisjOiBjb25maWcvdGMtbWlwcy5jOjEwNTU5CiBtc2dpZCAiLUcgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTA1NzAKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTA1NjQKIG1zZ2lkICItRyBtYXkgbm90IGJlIHVzZWQgd2l0aCBTVlI0IG9yIGVtYmVkZGVkIFBJQyBjb2RlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTA1ODQKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTA1NzgKIG1zZ2lkICItMzIgaXMgc3VwcG9ydGVkIGZvciBFTEYgZm9ybWF0IG9ubHkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMDU5MworIzogY29uZmlnL3RjLW1pcHMuYzoxMDU4NwogbXNnaWQgIi1uMzIgaXMgc3VwcG9ydGVkIGZvciBFTEYgZm9ybWF0IG9ubHkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMDYwMgorIzogY29uZmlnL3RjLW1pcHMuYzoxMDU5NgogbXNnaWQgIi02NCBpcyBzdXBwb3J0ZWQgZm9yIEVMRiBmb3JtYXQgb25seSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEwNjA3IGNvbmZpZy90Yy1taXBzLmM6MTA2NDQKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTA2MDEgY29uZmlnL3RjLW1pcHMuYzoxMDYzOAogbXNnaWQgIk5vIGNvbXBpbGVkIGluIHN1cHBvcnQgZm9yIDY0IGJpdCBvYmplY3QgZmlsZSBmb3JtYXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMDYzMQorIzogY29uZmlnL3RjLW1pcHMuYzoxMDYyNQogbXNnaWQgIi1tYWJpIGlzIHN1cHBvcnRlZCBmb3IgRUxGIGZvcm1hdCBvbmx5IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTA2NTEKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTA2NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBhYmkgLW1hYmk9JXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMDcxOAorIzogY29uZmlnL3RjLW1pcHMuYzoxMDcyMAogbXNnaWQgIi1HIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb25maWd1cmF0aW9uLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEwNzQ0CisjOiBjb25maWcvdGMtbWlwcy5jOjEwNzQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgIi0lcyBjb25mbGljdHMgd2l0aCB0aGUgb3RoZXIgYXJjaGl0ZWN0dXJlIG9wdGlvbnMsIHdoaWNoIGltcGx5IC0lcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEwNzc1CisjOiBjb25maWcvdGMtbWlwcy5jOjEwNzc3CiBtc2dpZCAiLW1ncDY0IHVzZWQgd2l0aCBhIDMyLWJpdCBwcm9jZXNzb3IiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMDc3NworIzogY29uZmlnL3RjLW1pcHMuYzoxMDc3OQogbXNnaWQgIi1tZ3AzMiB1c2VkIHdpdGggYSA2NC1iaXQgQUJJIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTA3NzkKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTA3ODEKIG1zZ2lkICItbWdwNjQgdXNlZCB3aXRoIGEgMzItYml0IEFCSSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEwODA5CisjOiBjb25maWcvdGMtbWlwcy5jOjEwODExCiBtc2dpZCAidHJhcCBleGNlcHRpb24gbm90IHN1cHBvcnRlZCBhdCBJU0EgMSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEwOTU3CisjOiBjb25maWcvdGMtbWlwcy5jOjEwOTU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVubWF0Y2hlZCAlJWhpIHJlbG9jIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTEwNDkKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTEwNTEKIG1zZ2lkICJDYW5ub3QgYnJhbmNoIHRvIHVuZGVmaW5lZCBzeW1ib2wuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTEwNTYKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTEwNTgKIG1zZ2lkICJDYW5ub3QgYnJhbmNoIHRvIHN5bWJvbCBpbiBhbm90aGVyIHNlY3Rpb24uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTEwNjUKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTEwNjcKIG1zZ2lkICJQcmV0ZW5kaW5nIGdsb2JhbCBzeW1ib2wgdXNlZCBhcyBicmFuY2ggdGFyZ2V0IGlzIGxvY2FsLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjExMjMwCisjOiBjb25maWcvdGMtbWlwcy5jOjExMTUyCiBtc2dpZCAiSW52YWxpZCBQQyByZWxhdGl2ZSByZWxvYyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjExMzI1IGNvbmZpZy90Yy1zcGFyYy5jOjMxODUgY29uZmlnL3RjLXNwYXJjLmM6MzE5MgotIzogY29uZmlnL3RjLXNwYXJjLmM6MzE5OSBjb25maWcvdGMtc3BhcmMuYzozMjA2IGNvbmZpZy90Yy1zcGFyYy5jOjMyMTMKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjMyMjIgY29uZmlnL3RjLXNwYXJjLmM6MzIzMyBjb25maWcvdGMtc3BhcmMuYzozMjU1Ci0jOiBjb25maWcvdGMtc3BhcmMuYzozMjc5IHdyaXRlLmM6OTk4IHdyaXRlLmM6MTA3MAorIzogY29uZmlnL3RjLW1pcHMuYzoxMTI0NyBjb25maWcvdGMtc3BhcmMuYzozMTk2IGNvbmZpZy90Yy1zcGFyYy5jOjMyMDMKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjMyMTAgY29uZmlnL3RjLXNwYXJjLmM6MzIxNyBjb25maWcvdGMtc3BhcmMuYzozMjI0CisjOiBjb25maWcvdGMtc3BhcmMuYzozMjMzIGNvbmZpZy90Yy1zcGFyYy5jOjMyNDQgY29uZmlnL3RjLXNwYXJjLmM6MzI2NgorIzogY29uZmlnL3RjLXNwYXJjLmM6MzI5MCB3cml0ZS5jOjk2NCB3cml0ZS5jOjEwMzYKIG1zZ2lkICJyZWxvY2F0aW9uIG92ZXJmbG93IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTEzMzUKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTEyNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQnJhbmNoIHRvIG9kZCBhZGRyZXNzICglbHgpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTEzODQKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTEzMDYKIG1zZ2lkICJCcmFuY2ggb3V0IG9mIHJhbmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTE0OTEKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTE0MTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJTA4bHggIFVOREVGSU5FRFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTE1NTAKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTE0NzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWxpZ25tZW50IHRvbyBsYXJnZTogJWQuIGFzc3VtZWQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTE1NTMKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTE0NzUKIG1zZ2lkICJBbGlnbm1lbnQgbmVnYXRpdmU6IDAgYXNzdW1lZC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMTY0MAorIzogY29uZmlnL3RjLW1pcHMuYzoxMTU2MgogbXNnaWQgIk5vIHJlYWQgb25seSBkYXRhIHNlY3Rpb24gaW4gdGhpcyBvYmplY3QgZmlsZSBmb3JtYXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMTY2MworIzogY29uZmlnL3RjLW1pcHMuYzoxMTU4NQogbXNnaWQgIkdsb2JhbCBwb2ludGVycyBub3Qgc3VwcG9ydGVkOyByZWNvbXBpbGUgLUcgMCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjExODA1CisjOiBjb25maWcvdGMtbWlwcy5jOjExNzQzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBubyBzdWNoIHNlY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMTg0NAorIzogY29uZmlnL3RjLW1pcHMuYzoxMTc4MgogIywgYy1mb3JtYXQKIG1zZ2lkICIub3B0aW9uIHBpYyVkIG5vdCBzdXBwb3J0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMTg1NQorIzogY29uZmlnL3RjLW1pcHMuYzoxMTc5MwogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbml6ZWQgb3B0aW9uIFwiJXNcIiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjExOTE3CisjOiBjb25maWcvdGMtbWlwcy5jOjExODU1CiBtc2dpZCAiYG5vcmVvcmRlcicgbXVzdCBiZSBzZXQgYmVmb3JlIGBub21hY3JvJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjExOTg5CisjOiBjb25maWcvdGMtbWlwcy5jOjExOTI5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gYXJjaGl0ZWN0dXJlICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTE5OTcgY29uZmlnL3RjLW1pcHMuYzoxMjAxOAorIzogY29uZmlnL3RjLW1pcHMuYzoxMTkzNyBjb25maWcvdGMtbWlwcy5jOjExOTU5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gSVNBIGxldmVsICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTIwNDYKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTE5ODcKIG1zZ2lkICIuc2V0IHBvcCB3aXRoIG5vIC5zZXQgcHVzaCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEyMDcwCisjOiBjb25maWcvdGMtbWlwcy5jOjEyMDExCiAjLCBjLWZvcm1hdAogbXNnaWQgIlRyaWVkIHRvIHNldCB1bnJlY29nbml6ZWQgc3ltYm9sOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTIxMjAKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTIwNjAKIG1zZ2lkICIuY3Bsb2FkIG5vdCBpbiBub3Jlb3JkZXIgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEyMTc2IGNvbmZpZy90Yy1taXBzLmM6MTIxOTUKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTIxMTYgY29uZmlnL3RjLW1pcHMuYzoxMjEzNQogbXNnaWQgIm1pc3NpbmcgYXJndW1lbnQgc2VwYXJhdG9yICcsJyBmb3IgLmNwc2V0dXAiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMjM3MworIzogY29uZmlnL3RjLW1pcHMuYzoxMjMxNQogbXNnaWQgIlVuc3VwcG9ydGVkIHVzZSBvZiAuZ3B3b3JkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTI0MDkKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTIzNTEKIG1zZ2lkICJVbnN1cHBvcnRlZCB1c2Ugb2YgLmdwZHdvcmQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMjU0NAorIzogY29uZmlnL3RjLW1pcHMuYzoxMjQ4NgogbXNnaWQgImV4cGVjdGVkIGAkJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEyNTUyCisjOiBjb25maWcvdGMtbWlwcy5jOjEyNDk0CiBtc2dpZCAiQmFkIHJlZ2lzdGVyIG51bWJlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEyNjAwCisjOiBjb25maWcvdGMtbWlwcy5jOjEyNTQyCiBtc2dpZCAiVW5yZWNvZ25pemVkIHJlZ2lzdGVyIG5hbWUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMjgzNQorIzogY29uZmlnL3RjLW1pcHMuYzoxMjc3NwogbXNnaWQgInVuc3VwcG9ydGVkIFBDIHJlbGF0aXZlIHJlZmVyZW5jZSB0byBkaWZmZXJlbnQgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEyOTQ4CisjOiBjb25maWcvdGMtbWlwcy5jOjEyODkwCiBtc2dpZCAidW5zdXBwb3J0ZWQgcmVsb2NhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEzMDYzCi1tc2dpZCAiQVQgdXNlZCBhZnRlciBcIi5zZXQgbm9hdFwiIG9yIG1hY3JvIHVzZWQgYWZ0ZXIgXCIuc2V0IG5vbWFjcm9cIiIKLW1zZ3N0ciAiIgotCi0jOiBjb25maWcvdGMtbWlwcy5jOjEzMTI2CisjOiBjb25maWcvdGMtbWlwcy5jOjEzMDU3CiBtc2dpZCAiRG91YmxlIGNoZWNrIGZ4X3JfdHlwZSBpbiB0Yy1taXBzLmM6dGNfZ2VuX3JlbG9jIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTMzNDEgY29uZmlnL3RjLXNoLmM6MzgwMAorIzogY29uZmlnL3RjLW1pcHMuYzoxMzE2MiBjb25maWcvdGMtc2guYzo0MDg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbiBub3QgcmVwcmVzZW50ICVzIHJlbG9jYXRpb24gaW4gdGhpcyBvYmplY3QgZmlsZSBmb3JtYXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMzQzMAorIzogY29uZmlnL3RjLW1pcHMuYzoxMzI0OAogbXNnaWQgInJlbGF4ZWQgb3V0LW9mLXJhbmdlIGJyYW5jaCBpbnRvIGEganVtcCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEzOTAzCisjOiBjb25maWcvdGMtbWlwcy5jOjEzNzYxCiBtc2dpZCAibWlzc2luZyAuZW5kIGF0IGVuZCBvZiBhc3NlbWJseSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEzOTE4CisjOiBjb25maWcvdGMtbWlwcy5jOjEzNzc2CiBtc2dpZCAiZXhwZWN0ZWQgc2ltcGxlIG51bWJlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjEzOTQ0CisjOiBjb25maWcvdGMtbWlwcy5jOjEzODAyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAqaW5wdXRfbGluZV9wb2ludGVyID09ICclYycgMHglMDJ4XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxMzk0NgorIzogY29uZmlnL3RjLW1pcHMuYzoxMzgwNAogbXNnaWQgImludmFsaWQgbnVtYmVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTQwMTkKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTM4NzcKIG1zZ2lkICIuZW5kIG5vdCBpbiB0ZXh0IHNlY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxNDAyMworIzogY29uZmlnL3RjLW1pcHMuYzoxMzg4MQogbXNnaWQgIi5lbmQgZGlyZWN0aXZlIHdpdGhvdXQgYSBwcmVjZWRpbmcgLmVudCBkaXJlY3RpdmUuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTQwMzIKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTM4OTAKIG1zZ2lkICIuZW5kIHN5bWJvbCBkb2VzIG5vdCBtYXRjaCAuZW50IHN5bWJvbC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxNDAzOQorIzogY29uZmlnL3RjLW1pcHMuYzoxMzg5NwogbXNnaWQgIi5lbmQgZGlyZWN0aXZlIG1pc3Npbmcgb3IgdW5rbm93biBzeW1ib2wiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxNDA5OQorIzogY29uZmlnL3RjLW1pcHMuYzoxMzk1OAogbXNnaWQgIi5lbnQgb3IgLmFlbnQgbm90IGluIHRleHQgc2VjdGlvbi4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxNDEwMgorIzogY29uZmlnL3RjLW1pcHMuYzoxMzk2MQogbXNnaWQgIm1pc3NpbmcgLmVuZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjE0MTU0CisjOiBjb25maWcvdGMtbWlwcy5jOjE0MDEzCiBtc2dpZCAiQmFkIC5mcmFtZSBkaXJlY3RpdmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxNDE4NgorIzogY29uZmlnL3RjLW1pcHMuYzoxNDA0NQogbXNnaWQgIi5tYXNrLy5mbWFzayBvdXRzaWRlIG9mIC5lbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxNDE5MworIzogY29uZmlnL3RjLW1pcHMuYzoxNDA1MgogbXNnaWQgIkJhZCAubWFzay8uZm1hc2sgZGlyZWN0aXZlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTQ0NzIKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTQzMzIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk1JUFMgb3B0aW9uczpcbiIKICItbWVtYmVkZGVkLXBpY1x0XHRnZW5lcmF0ZSBlbWJlZGRlZCBwb3NpdGlvbiBpbmRlcGVuZGVudCBjb2RlXG4iCkBAIC02Nzk4LDcgKzcxNTAsOCBAQAogIlx0XHRcdGltcGxpY2l0bHkgd2l0aCB0aGUgZ3AgcmVnaXN0ZXIgW2RlZmF1bHQgOF1cbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbWlwcy5jOjE0NDgwCisjOiBjb25maWcvdGMtbWlwcy5jOjE0MzQwCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICItbWlwczFcdFx0XHRnZW5lcmF0ZSBNSVBTIElTQSBJIGluc3RydWN0aW9uc1xuIgogIi1taXBzMlx0XHRcdGdlbmVyYXRlIE1JUFMgSVNBIElJIGluc3RydWN0aW9uc1xuIgpAQCAtNjgwOCw5NiArNzE2MSwxMTIgQEAKICItbWlwczMyICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBNSVBTMzIgSVNBIGluc3RydWN0aW9uc1xuIgogIi1taXBzMzJyMiAgICAgICAgICAgICAgIGdlbmVyYXRlIE1JUFMzMiByZWxlYXNlIDIgSVNBIGluc3RydWN0aW9uc1xuIgogIi1taXBzNjQgICAgICAgICAgICAgICAgIGdlbmVyYXRlIE1JUFM2NCBJU0EgaW5zdHJ1Y3Rpb25zXG4iCisiLW1pcHM2NHIyICAgICAgICAgICAgICAgZ2VuZXJhdGUgTUlQUzY0IHJlbGVhc2UgMiBJU0EgaW5zdHJ1Y3Rpb25zXG4iCiAiLW1hcmNoPUNQVS8tbXR1bmU9Q1BVXHRnZW5lcmF0ZSBjb2RlL3NjaGVkdWxlIGZvciBDUFUsIHdoZXJlIENQVSBpcyBvbmUgb2Y6XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxNDQ5OAorIzogY29uZmlnL3RjLW1pcHMuYzoxNDM1OQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiLW1DUFVcdFx0XHRlcXVpdmFsZW50IHRvIC1tYXJjaD1DUFUgLW10dW5lPUNQVS4gRGVwcmVjYXRlZC5cbiIKICItbm8tbUNQVVx0XHRkb24ndCBnZW5lcmF0ZSBjb2RlIHNwZWNpZmljIHRvIENQVS5cbiIKICJcdFx0XHRGb3IgLW1DUFUgYW5kIC1uby1tQ1BVLCBDUFUgbXVzdCBiZSBvbmUgb2Y6XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxNDUxMQorIzogY29uZmlnL3RjLW1pcHMuYzoxNDM3MgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiLW1pcHMxNlx0XHRcdGdlbmVyYXRlIG1pcHMxNiBpbnN0cnVjdGlvbnNcbiIKICItbm8tbWlwczE2XHRcdGRvIG5vdCBnZW5lcmF0ZSBtaXBzMTYgaW5zdHJ1Y3Rpb25zXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxNDUxNAorIzogY29uZmlnL3RjLW1pcHMuYzoxNDM3NQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiLW1ncDMyXHRcdFx0dXNlIDMyLWJpdCBHUFJzLCByZWdhcmRsZXNzIG9mIHRoZSBjaG9zZW4gSVNBXG4iCiAiLW1mcDMyXHRcdFx0dXNlIDMyLWJpdCBGUFJzLCByZWdhcmRsZXNzIG9mIHRoZSBjaG9zZW4gSVNBXG4iCiAiLU8wXHRcdFx0cmVtb3ZlIHVubmVlZGVkIE5PUHMsIGRvIG5vdCBzd2FwIGJyYW5jaGVzXG4iCiAiLU9cdFx0XHRyZW1vdmUgdW5uZWVkZWQgTk9QcyBhbmQgc3dhcCBicmFuY2hlc1xuIgotIi1uXHRcdFx0d2FybiBhYm91dCBOT1BzIGdlbmVyYXRlZCBmcm9tIG1hY3Jvc1xuIgogIi0tW25vLV1jb25zdHJ1Y3QtZmxvYXRzIFtkaXNdYWxsb3cgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIHRvIGJlIGNvbnN0cnVjdGVkXG4iCiAiLS10cmFwLCAtLW5vLWJyZWFrXHR0cmFwIGV4Y2VwdGlvbiBvbiBkaXYgYnkgMCBhbmQgbXVsdCBvdmVyZmxvd1xuIgogIi0tYnJlYWssIC0tbm8tdHJhcFx0YnJlYWsgZXhjZXB0aW9uIG9uIGRpdiBieSAwIGFuZCBtdWx0IG92ZXJmbG93XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1pcHMuYzoxNDUyNAorIzogY29uZmlnL3RjLW1pcHMuYzoxNDM4NAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiLUtQSUMsIC1jYWxsX3NoYXJlZFx0Z2VuZXJhdGUgU1ZSNCBwb3NpdGlvbiBpbmRlcGVuZGVudCBjb2RlXG4iCiAiLW5vbl9zaGFyZWRcdFx0ZG8gbm90IGdlbmVyYXRlIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGVcbiIKICIteGdvdFx0XHRcdGFzc3VtZSBhIDMyIGJpdCBHT1RcbiIKKyItbXBkciwgLW1uby1wZHJcdFx0ZW5hYmxlL2Rpc2FibGUgY3JlYXRpb24gb2YgLnBkciBzZWN0aW9uc1xuIgogIi1tYWJpPUFCSVx0XHRjcmVhdGUgQUJJIGNvbmZvcm1hbnQgb2JqZWN0IGZpbGUgZm9yOlxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1taXBzLmM6MTQ1NDAKKyM6IGNvbmZpZy90Yy1taXBzLmM6MTQ0MDEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIi0zMlx0XHRcdGNyZWF0ZSBvMzIgQUJJIG9iamVjdCBmaWxlIChkZWZhdWx0KVxuIgogIi1uMzJcdFx0XHRjcmVhdGUgbjMyIEFCSSBvYmplY3QgZmlsZVxuIgogIi02NFx0XHRcdGNyZWF0ZSA2NCBBQkkgb2JqZWN0IGZpbGVcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjY3NworIzogY29uZmlnL3RjLW1taXguYzo3MjYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIE1NSVgtc3BlY2lmaWMgY29tbWFuZCBsaW5lIG9wdGlvbnM6XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzo2NzgKKyM6IGNvbmZpZy90Yy1tbWl4LmM6NzI3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC1maXhlZC1zcGVjaWFsLXJlZ2lzdGVyLW5hbWVzXG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvdyBvbmx5IHRoZSBvcmlnaW5hbCBzcGVjaWFsIHJlZ2lzdGVyIG5hbWVzLlxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6NjgxCisjOiBjb25maWcvdGMtbW1peC5jOjczMAorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC1nbG9iYWxpemUtc3ltYm9scyAgICAgIE1ha2UgYWxsIHN5bWJvbHMgZ2xvYmFsLlxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6NjgzCisjOiBjb25maWcvdGMtbW1peC5jOjczMgorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC1nbnUtc3ludGF4ICAgICAgICAgICAgIFR1cm4gb2ZmIG1taXhhbCBzeW50YXggY29tcGF0aWJpbGl0eS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjY4NQorIzogY29uZmlnL3RjLW1taXguYzo3MzQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtcmVsYXggICAgICAgICAgICAgICAgICBDcmVhdGUgbGlua2VyIHJlbGF4YWJsZSBjb2RlLlxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6Njg3CisjOiBjb25maWcvdGMtbW1peC5jOjczNgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtbm8tcHJlZGVmaW5lZC1zeW1zICAgICBEbyBub3QgcHJvdmlkZSBtbWl4YWwgYnVpbHQtaW4gY29uc3RhbnRzLlxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgSW1wbGllcyAtZml4ZWQtc3BlY2lhbC1yZWdpc3Rlci1uYW1lcy5cbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjY5MAorIzogY29uZmlnL3RjLW1taXguYzo3MzkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLW5vLWV4cGFuZCAgICAgICAgICAgICAgRG8gbm90IGV4cGFuZCBHRVRBLCBicmFuY2hlcywgUFVTSEogb3IgSlVNUFxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50byBtdWx0aXBsZSBpbnN0cnVjdGlvbnMuXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzo2OTMKKyM6IGNvbmZpZy90Yy1tbWl4LmM6NzQyCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC1uby1tZXJnZS1ncmVncyAgICAgICAgIERvIG5vdCBtZXJnZSBHUkVHIGRlZmluaXRpb25zIHdpdGggbmVhcmJ5IHZhbHVlcy5cbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjY5NQorIzogY29uZmlnL3RjLW1taXguYzo3NDQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLWxpbmtlci1hbGxvY2F0ZWQtZ3JlZ3MgSWYgdGhlcmUncyBubyBzdWl0YWJsZSBHUkVHIGRlZmluaXRpb24gZm9yICIKICJ0aGUgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzIG9mIGFuIGluc3RydWN0aW9uLCBsZXQgdGhlIGxpbmtlciAiCiAicmVzb2x2ZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjY5OAorIzogY29uZmlnL3RjLW1taXguYzo3NDcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLXggICAgICAgICAgICAgICAgICAgICAgRG8gbm90IHdhcm4gd2hlbiBhbiBvcGVyYW5kIHRvIEdFVEEsIGEgYnJhbmNoLFxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgUFVTSEogb3IgSlVNUCBpcyBub3Qga25vd24gdG8gYmUgd2l0aGluIHJhbmdlLlxuIgpAQCAtNjkwNSwxODUgKzcyNzQsMTg1IEBACiAiICAgICAgICAgICAgICAgICAgICAgICAgICAtbGlua2VyLWFsbG9jYXRlZC1ncmVncy4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzo4MjUKKyM6IGNvbmZpZy90Yy1tbWl4LmM6ODc0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gb3Bjb2RlOiBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6OTQ3IGNvbmZpZy90Yy1tbWl4LmM6OTYyCisjOiBjb25maWcvdGMtbW1peC5jOjk5NiBjb25maWcvdGMtbW1peC5jOjEwMTEKIG1zZ2lkICJzcGVjaWZpZWQgbG9jYXRpb24gd2Fzbid0IFRFVFJBLWFsaWduZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzo5NDkgY29uZmlnL3RjLW1taXguYzo5NjQgY29uZmlnL3RjLW1taXguYzo0MDE1Ci0jOiBjb25maWcvdGMtbW1peC5jOjQwMzEKKyM6IGNvbmZpZy90Yy1tbWl4LmM6OTk4IGNvbmZpZy90Yy1tbWl4LmM6MTAxMyBjb25maWcvdGMtbW1peC5jOjQxOTkKKyM6IGNvbmZpZy90Yy1tbWl4LmM6NDIxNQogbXNnaWQgInVuYWxpZ25lZCBkYXRhIGF0IGFuIGFic29sdXRlIGxvY2F0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzoxMDc0CisjOiBjb25maWcvdGMtbW1peC5jOjExMjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBvcGVyYW5kIHRvIG9wY29kZSAlczogYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjEwOTYgY29uZmlnL3RjLW1taXguYzoxMTIzIGNvbmZpZy90Yy1tbWl4LmM6MTE1NgotIzogY29uZmlnL3RjLW1taXguYzoxMTY0IGNvbmZpZy90Yy1tbWl4LmM6MTE4MSBjb25maWcvdGMtbW1peC5jOjEyMDkKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MTIzMCBjb25maWcvdGMtbW1peC5jOjEyNTUgY29uZmlnL3RjLW1taXguYzoxMzAzCi0jOiBjb25maWcvdGMtbW1peC5jOjE0MDEgY29uZmlnL3RjLW1taXguYzoxNDI2IGNvbmZpZy90Yy1tbWl4LmM6MTQ1OAotIzogY29uZmlnL3RjLW1taXguYzoxNDkwIGNvbmZpZy90Yy1tbWl4LmM6MTUyMCBjb25maWcvdGMtbW1peC5jOjE1NzMKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MTU5MCBjb25maWcvdGMtbW1peC5jOjE2MTcgY29uZmlnL3RjLW1taXguYzoxNjQ1Ci0jOiBjb25maWcvdGMtbW1peC5jOjE2NzIgY29uZmlnL3RjLW1taXguYzoxNjk4IGNvbmZpZy90Yy1tbWl4LmM6MTcxNAotIzogY29uZmlnL3RjLW1taXguYzoxNzQwIGNvbmZpZy90Yy1tbWl4LmM6MTc1NiBjb25maWcvdGMtbW1peC5jOjE3NzIKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MTgzNSBjb25maWcvdGMtbW1peC5jOjE4NTEKKyM6IGNvbmZpZy90Yy1tbWl4LmM6MTE0NSBjb25maWcvdGMtbW1peC5jOjExNzIgY29uZmlnL3RjLW1taXguYzoxMjA1CisjOiBjb25maWcvdGMtbW1peC5jOjEyMTMgY29uZmlnL3RjLW1taXguYzoxMjMwIGNvbmZpZy90Yy1tbWl4LmM6MTI1OAorIzogY29uZmlnL3RjLW1taXguYzoxMjc5IGNvbmZpZy90Yy1tbWl4LmM6MTMwNCBjb25maWcvdGMtbW1peC5jOjEzNTIKKyM6IGNvbmZpZy90Yy1tbWl4LmM6MTQ1MCBjb25maWcvdGMtbW1peC5jOjE0NzUgY29uZmlnL3RjLW1taXguYzoxNTA3CisjOiBjb25maWcvdGMtbW1peC5jOjE1MzkgY29uZmlnL3RjLW1taXguYzoxNTY5IGNvbmZpZy90Yy1tbWl4LmM6MTYyMgorIzogY29uZmlnL3RjLW1taXguYzoxNjM5IGNvbmZpZy90Yy1tbWl4LmM6MTY2NiBjb25maWcvdGMtbW1peC5jOjE2OTQKKyM6IGNvbmZpZy90Yy1tbWl4LmM6MTcyMSBjb25maWcvdGMtbW1peC5jOjE3NDcgY29uZmlnL3RjLW1taXguYzoxNzYzCisjOiBjb25maWcvdGMtbW1peC5jOjE3ODkgY29uZmlnL3RjLW1taXguYzoxODA1IGNvbmZpZy90Yy1tbWl4LmM6MTgyMQorIzogY29uZmlnL3RjLW1taXguYzoxODg0IGNvbmZpZy90Yy1tbWl4LmM6MTkwMAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9wZXJhbmRzIHRvIG9wY29kZSAlczogYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjE4MjgKKyM6IGNvbmZpZy90Yy1tbWl4LmM6MTg3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnN1cHBvcnRlZCBvcGVyYW5kcyB0byAlczogYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjE5NTYKKyM6IGNvbmZpZy90Yy1tbWl4LmM6MjAwNQogbXNnaWQgImludGVybmFsOiBtbWl4X3ByZWZpeF9uYW1lIGJ1dCBlbXB0eSBwcmVmaXgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzoyMDAxCisjOiBjb25maWcvdGMtbW1peC5jOjIwNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAidG9vIG1hbnkgR1JFRyByZWdpc3RlcnMgYWxsb2NhdGVkIChtYXggJWQpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MjA2MQorIzogY29uZmlnL3RjLW1taXguYzoyMTEwCiBtc2dpZCAiQlNQRUMgYWxyZWFkeSBhY3RpdmUuICBOZXN0aW5nIGlzIG5vdCBzdXBwb3J0ZWQuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MjA3MAorIzogY29uZmlnL3RjLW1taXguYzoyMTE5CiBtc2dpZCAiaW52YWxpZCBCU1BFQyBleHByZXNzaW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MjA4NgorIzogY29uZmlnL3RjLW1taXguYzoyMTM1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IGNyZWF0ZSBzZWN0aW9uICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MjA5MQorIzogY29uZmlnL3RjLW1taXguYzoyMTQwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IHNldCBzZWN0aW9uIGZsYWdzIGZvciBzZWN0aW9uICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MjExMworIzogY29uZmlnL3RjLW1taXguYzoyMTYyCiBtc2dpZCAiRVNQRUMgd2l0aG91dCBwcmVjZWRpbmcgQlNQRUMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzoyMTQzCisjOiBjb25maWcvdGMtbW1peC5jOjIxOTIKIG1zZ2lkICJtaXNzaW5nIGxvY2FsIGV4cHJlc3Npb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzoyMzYzCisjOiBjb25maWcvdGMtbW1peC5jOjI0MzcKIG1zZ2lkICJvcGVyYW5kIG91dCBvZiByYW5nZSwgaW5zdHJ1Y3Rpb24gZXhwYW5kZWQiCiBtc2dzdHIgIiIKIAogIy4gVGhlIEJGRF9SRUxPQ19NTUlYX0xPQ0FMLXNwZWNpZmljIG1lc3NhZ2UgaXMgc3VwcG9zZWQgdG8gYmUKICMuIHVzZXItZnJpZW5kbHksIHRob3VnaCBhIGxpdHRsZSBiaXQgbm9uLXN1YnN0YW50aWFsLgotIzogY29uZmlnL3RjLW1taXguYzoyNjIwCisjOiBjb25maWcvdGMtbW1peC5jOjI2OTUKIG1zZ2lkICJkaXJlY3RpdmUgTE9DQUwgbXVzdCBiZSBwbGFjZWQgaW4gY29kZSBvciBkYXRhIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MjYyMQorIzogY29uZmlnL3RjLW1taXguYzoyNjk2CiBtc2dpZCAiaW50ZXJuYWwgY29uZnVzaW9uOiByZWxvY2F0aW9uIGluIGEgc2VjdGlvbiB3aXRob3V0IGNvbnRlbnRzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MjczNAorIzogY29uZmlnL3RjLW1taXguYzoyODEwCiBtc2dpZCAiaW50ZXJuYWw6IEJGRF9SRUxPQ19NTUlYX0JBU0VfUExVU19PRkZTRVQgbm90IHJlc29sdmVkIHRvIHNlY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzoyNzgyCisjOiBjb25maWcvdGMtbW1peC5jOjI4NTgKIG1zZ2lkICJubyBzdWl0YWJsZSBHUkVHIGRlZmluaXRpb24gZm9yIG9wZXJhbmRzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6Mjg0MQorIzogY29uZmlnL3RjLW1taXguYzoyOTE3CiBtc2dpZCAib3BlcmFuZHMgd2VyZSBub3QgcmVkdWNpYmxlIGF0IGFzc2VtYmx5LXRpbWUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzoyODY4CisjOiBjb25maWcvdGMtbW1peC5jOjI5NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGdlbmVyYXRlIHJlbG9jYXRpb24gdHlwZSBmb3Igc3ltYm9sICVzLCBjb2RlICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6Mjg4OAorIzogY29uZmlnL3RjLW1taXguYzoyOTY0CiAjLCBjLWZvcm1hdAogbXNnaWQgImludGVybmFsOiB1bmhhbmRsZWQgbGFiZWwgJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzoyOTQyCisjOiBjb25maWcvdGMtbW1peC5jOjMwMTgKIG1zZ2lkICJbMC05XUggbGFiZWxzIG1heSBub3QgYXBwZWFyIGFsb25lIG9uIGEgbGluZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjI5NTEKKyM6IGNvbmZpZy90Yy1tbWl4LmM6MzAyNwogbXNnaWQgIlswLTldSCBsYWJlbHMgZG8gbm90IG1peCB3aXRoIGRvdC1wc2V1ZG9zIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MzAxNQorIzogY29uZmlnL3RjLW1taXguYzozMDkxCiBtc2dpZCAiaW52YWxpZCBjaGFyYWN0ZXJzIGluIGlucHV0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MzExOQorIzogY29uZmlnL3RjLW1taXguYzozMTk1CiBtc2dpZCAiZW1wdHkgbGFiZWwgZmllbGQgZm9yIElTIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MzM0NAorIzogY29uZmlnL3RjLW1taXguYzozNTI4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludGVybmFsOiB1bmV4cGVjdGVkIHJlbGF4IHR5cGUgJWQ6JWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzozMzY2CisjOiBjb25maWcvdGMtbW1peC5jOjM1NTAKIG1zZ2lkICJCU1BFQyB3aXRob3V0IEVTUEVDLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjM1NjgKKyM6IGNvbmZpZy90Yy1tbWl4LmM6Mzc1MgogbXNnaWQgIkdSRUcgZXhwcmVzc2lvbiB0b28gY29tcGxpY2F0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzozNTgzCisjOiBjb25maWcvdGMtbW1peC5jOjM3NjcKIG1zZ2lkICJpbnRlcm5hbDogR1JFRyBleHByZXNzaW9uIG5vdCByZXNvbHZlZCB0byBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6MzYzNAorIzogY29uZmlnL3RjLW1taXguYzozODE4CiBtc2dpZCAicmVnaXN0ZXIgc2VjdGlvbiBoYXMgY29udGVudHNcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjM3NjgKKyM6IGNvbmZpZy90Yy1tbWl4LmM6Mzk1MgogbXNnaWQgInNlY3Rpb24gY2hhbmdlIGZyb20gd2l0aGluIGEgQlNQRUMvRVNQRUMgcGFpciBpcyBub3Qgc3VwcG9ydGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6Mzc5MAorIzogY29uZmlnL3RjLW1taXguYzozOTc0CiBtc2dpZCAiZGlyZWN0aXZlIExPQyBmcm9tIHdpdGhpbiBhIEJTUEVDL0VTUEVDIHBhaXIgaXMgbm90IHN1cHBvcnRlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjM4MDEKKyM6IGNvbmZpZy90Yy1tbWl4LmM6Mzk4NQogbXNnaWQgImludmFsaWQgTE9DIGV4cHJlc3Npb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1taXguYzozODI2IGNvbmZpZy90Yy1tbWl4LmM6Mzg1MgorIzogY29uZmlnL3RjLW1taXguYzo0MDEwIGNvbmZpZy90Yy1tbWl4LmM6NDAzNgogbXNnaWQgIkxPQyBleHByZXNzaW9uIHN0ZXBwaW5nIGJhY2t3YXJkcyBpcyBub3Qgc3VwcG9ydGVkIgogbXNnc3RyICIiCiAKICMuIFdlIHdpbGwgb25seSBnZXQgaGVyZSBpbiByYXJlIGNhc2VzIGludm9sdmluZyAjTk9fQVBQLAogIy4gd2hlcmUgdGhlIHVudGVybWluYXRlZCBzdHJpbmcgaXMgbm90IHJlY29nbml6ZWQgYnkgdGhlCiAjLiBwcmVmb3JtYXR0aW5nIHBhc3MuCi0jOiBjb25maWcvdGMtbW1peC5jOjM5MzYgY29uZmlnL3RjLW1taXguYzo0MDk3CisjOiBjb25maWcvdGMtbW1peC5jOjQxMjAgY29uZmlnL3RjLW1taXguYzo0MjgxCiBtc2dpZCAidW50ZXJtaW5hdGVkIHN0cmluZyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW1peC5jOjM5NTMKKyM6IGNvbmZpZy90Yy1tbWl4LmM6NDEzNwogbXNnaWQgIkJZVEUgZXhwcmVzc2lvbiBub3QgYSBwdXJlIG51bWJlciIKIG1zZ3N0ciAiIgogCiAjLiBOb3RlIHRoYXQgbW1peGFsIGRvZXMgbm90IGFsbG93IG5lZ2F0aXZlIG51bWJlcnMgaW4KICMuIEJZVEUgc2VxdWVuY2VzLCBzbyBuZWl0aGVyIHNob3VsZCB3ZS4KLSM6IGNvbmZpZy90Yy1tbWl4LmM6Mzk2MgorIzogY29uZmlnL3RjLW1taXguYzo0MTQ2CiBtc2dpZCAiQllURSBleHByZXNzaW9uIG5vdCBpbiB0aGUgcmFuZ2UgMC4uMjU1IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbWl4LmM6NDAxMyBjb25maWcvdGMtbW1peC5jOjQwMjkKKyM6IGNvbmZpZy90Yy1tbWl4LmM6NDE5NyBjb25maWcvdGMtbW1peC5jOjQyMTMKIG1zZ2lkICJkYXRhIGl0ZW0gd2l0aCBhbGlnbm1lbnQgbGFyZ2VyIHRoYW4gbG9jYXRpb24iCiBtc2dzdHIgIiIKIApAQCAtNzA5NCw0MiArNzQ2Myw0NCBAQAogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy1tbjEwMjAwLmM6MzE5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJNTjEwMjAwIG9wdGlvbnM6XG4iCiAibm9uZSB5ZXRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW4xMDIwMC5jOjc5MyBjb25maWcvdGMtbW4xMDMwMC5jOjEzODcgY29uZmlnL3RjLXBwYy5jOjIwODgKLSM6IGNvbmZpZy90Yy1zMzkwLmM6MTU0MCBjb25maWcvdGMtdjg1MC5jOjE2NzcKKyM6IGNvbmZpZy90Yy1tbjEwMjAwLmM6NzkzIGNvbmZpZy90Yy1tbjEwMzAwLmM6MTM4NyBjb25maWcvdGMtcHBjLmM6MjEyNAorIzogY29uZmlnL3RjLXMzOTAuYzoxNTQwIGNvbmZpZy90Yy12ODUwLmM6MTY5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbml6ZWQgb3Bjb2RlOiBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tbjEwMjAwLmM6MTAzNiBjb25maWcvdGMtbW4xMDMwMC5jOjE5NjAgY29uZmlnL3RjLXBwYy5jOjI1NjYKLSM6IGNvbmZpZy90Yy1zMzkwLmM6MTQ1NSBjb25maWcvdGMtdjg1MC5jOjIxMDAKKyM6IGNvbmZpZy90Yy1tbjEwMjAwLmM6MTAzNiBjb25maWcvdGMtbW4xMDMwMC5jOjE5NjAgY29uZmlnL3RjLXBwYy5jOjI2MDMKKyM6IGNvbmZpZy90Yy1zMzkwLmM6MTQ1NSBjb25maWcvdGMtdjg1MC5jOjIxMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAianVuayBhdCBlbmQgb2YgbGluZTogYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW4xMDIwMC5jOjEyNDIgd3JpdGUuYzoyNjkxCisjOiBjb25maWcvdGMtbW4xMDIwMC5jOjEyNDIgd3JpdGUuYzoyNjQyCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IHJlc29sdmUgYCVzJyB7JXMgc2VjdGlvbn0gLSBgJXMnIHslcyBzZWN0aW9ufSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW4xMDIwMC5jOjEzNDcgY29uZmlnL3RjLW1uMTAzMDAuYzoyNTg5IGNvbmZpZy90Yy1wcGMuYzoxNDI2Ci0jOiBjb25maWcvdGMtdjg1MC5jOjE2MDYKKyM6IGNvbmZpZy90Yy1tbjEwMjAwLmM6MTM0NyBjb25maWcvdGMtbW4xMDMwMC5jOjI1ODkgY29uZmlnL3RjLXBwYy5jOjE0NjIKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTYyMwogIywgYy1mb3JtYXQKIG1zZ2lkICJvcGVyYW5kIG91dCBvZiByYW5nZSAoJXMgbm90IGJldHdlZW4gJWxkIGFuZCAlbGQpIgogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy1tbjEwMzAwLmM6NjkwCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJNTjEwMzAwIG9wdGlvbnM6XG4iCiAibm9uZSB5ZXRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbW4xMDMwMC5jOjEzNTYgY29uZmlnL3RjLXNoLmM6ODA1IGNvbmZpZy90Yy14dGVuc2EuYzo1MTc3Ci0jOiByZWFkLmM6Mzc2NAorIzogY29uZmlnL3RjLW1uMTAzMDAuYzoxMzU2IGNvbmZpZy90Yy1zaC5jOjc3MiBjb25maWcvdGMteHRlbnNhLmM6NTA2MgorIzogcmVhZC5jOjM2MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5zdXBwb3J0ZWQgQkZEIHJlbG9jYXRpb24gc2l6ZSAldSIKIG1zZ3N0ciAiIgpAQCAtNzE0NywxNiArNzUxOCwxOCBAQAogbXNnaWQgIkJhZCByZWxvY2F0aW9uIGZpeHVwIHR5cGUgKCVkKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbXNwNDMwLmM6MTcwCisjOiBjb25maWcvdGMtbXNwNDMwLmM6MTgzCisjLCBjLWZvcm1hdAogbXNnaWQgIktub3duIE1DVSBuYW1lczpcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbXNwNDMwLmM6MTczCisjOiBjb25maWcvdGMtbXNwNDMwLmM6MTg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlx0ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1zcDQzMC5jOjE4MworIzogY29uZmlnL3RjLW1zcDQzMC5jOjE5NgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiTVNQNDMwIG9wdGlvbnM6XG4iCiAiICAtbW1jdT1bbXNwNDMwLW5hbWVdIHNlbGVjdCBtaWNyb2NvbnRyb2xsZXIgdHlwZVxuIgpAQCAtNzE3NSwxMjAgKzc1NDgsMTIyIEBACiAiICAgICAgICAgICAgICAgICAgbXNwNDMweDMyMyAgbXNwNDMweDMyNVxuIgogIiAgICAgICAgICAgICAgICAgIG1zcDQzMHgzMzYgIG1zcDQzMHgzMzdcbiIKICIgICAgICAgICAgICAgICAgICBtc3A0MzB4NDEyICBtc3A0MzB4NDEzXG4iCisiICAgICAgICAgICAgICAgICAgbXNwNDMweEU0MjMgbXNwNDMweEU0MjUgbXNwNDMwRTQyN1xuIgorIiAgICAgICAgICAgICAgICAgIG1zcDQzMHhXNDIzIG1zcDQzMHhXNDI1IG1zcDQzMFc0MjdcbiIKICIgICAgICAgICAgICAgICAgICBtc3A0MzB4NDM1ICBtc3A0MzB4NDM2ICBtc3A0MzB4NDM3XG4iCiAiICAgICAgICAgICAgICAgICAgbXNwNDMweDQ0NyAgbXNwNDMweDQ0OCAgbXNwNDMweDQ0OVxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzoyNjMKKyM6IGNvbmZpZy90Yy1tc3A0MzAuYzoyNzgKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVkZWZpbml0aW9uIG9mIG1jdSB0eXBlICVzJyB0byAlcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1zcDQzMC5jOjQ5NgorIzogY29uZmlnL3RjLW1zcDQzMC5jOjUxMQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnN0cnVjdGlvbiAlcyByZXF1aXJlcyAlZCBvcGVyYW5kKHMpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzo3NDMKKyM6IGNvbmZpZy90Yy1tc3A0MzAuYzo3NTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXZlbiBudW1iZXIgcmVxdWlyZWQuIFJvdW5kZWQgdG8gJWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1zcDQzMC5jOjc1NAorIzogY29uZmlnL3RjLW1zcDQzMC5jOjc2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJXcm9uZyBkaXNwbGFjZW1lbnQgICVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzo3NzEKKyM6IGNvbmZpZy90Yy1tc3A0MzAuYzo3ODUKIG1zZ2lkICJpbnN0cnVjdGlvbiByZXF1aXJlcyBsYWJlbCBzYW5zICckJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbXNwNDMwLmM6Nzc3CisjOiBjb25maWcvdGMtbXNwNDMwLmM6NzkxCiBtc2dpZCAiaW5zdHJ1Y3Rpb24gcmVxdWlyZXMgbGFiZWwgb3IgdmFsdWUgaW4gcmFuZ2UgLTUxMTo1MTIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1zcDQzMC5jOjc4MworIzogY29uZmlnL3RjLW1zcDQzMC5jOjc5NwogbXNnaWQgImluc3RydWN0aW9uIHJlcXVpcmVzIGxhYmVsIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzo3ODkKKyM6IGNvbmZpZy90Yy1tc3A0MzAuYzo4MDMKIG1zZ2lkICJJbGVnYWwgaW5zdHJ1Y3Rpb24gb3Igbm90IGltcGxtZW50ZWQgb3Bjb2RlLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbXNwNDMwLmM6ODE3CisjOiBjb25maWcvdGMtbXNwNDMwLmM6ODMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludGVybmFsIGJ1Zy4gVHJ5IHRvIHVzZSAwKHIlZCkgaW5zdGVhZCBvZiBAciVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzo4MjcKKyM6IGNvbmZpZy90Yy1tc3A0MzAuYzo4NDEKIG1zZ2lkICJ0aGlzIGFkZHJlc3NpbmcgbW9kZSBpcyBub3QgYXBwbGljYWJsZSBmb3IgZGVzdGluYXRpb24gb3BlcmFuZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbXNwNDMwLmM6OTQ0CisjOiBjb25maWcvdGMtbXNwNDMwLmM6OTU4CiAjLCBjLWZvcm1hdAogbXNnaWQgInZhbHVlICVsZCBvdXQgb2YgcmFuZ2UuIFVzZSAjbG8oKSBvciAjaGkoKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbXNwNDMwLmM6MTA0MAorIzogY29uZmlnL3RjLW1zcDQzMC5jOjEwNDYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBleHByZXNzaW9uIGluIG9wZXJhbmQgJXMuIHVzZSAjbGxvKCkgI2xoaSgpICNobG8oKSAjaGhpKCkgIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzoxMDkwIGNvbmZpZy90Yy1tc3A0MzAuYzoxMzA0CisjOiBjb25maWcvdGMtbXNwNDMwLmM6MTA5NiBjb25maWcvdGMtbXNwNDMwLmM6MTMxMAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIG9wZXJhbmQgJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1zcDQzMC5jOjExMTEgY29uZmlnL3RjLW1zcDQzMC5jOjEyNDIKKyM6IGNvbmZpZy90Yy1tc3A0MzAuYzoxMTE3IGNvbmZpZy90Yy1tc3A0MzAuYzoxMjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgInZhbHVlIG91dCBvZiByYW5nZTogJWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1zcDQzMC5jOjExMjAgY29uZmlnL3RjLW1zcDQzMC5jOjEyNTkKKyM6IGNvbmZpZy90Yy1tc3A0MzAuYzoxMTI2IGNvbmZpZy90Yy1tc3A0MzAuYzoxMjY1CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gZXhwcmVzc2lvbiBpbiBvcGVyYW5kICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzoxMTM0IGNvbmZpZy90Yy1tc3A0MzAuYzoxMTQxCisjOiBjb25maWcvdGMtbXNwNDMwLmM6MTE0MCBjb25maWcvdGMtbXNwNDMwLmM6MTE0NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIGFkZHJlc3NpbmcgbW9kZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbXNwNDMwLmM6MTE0OQorIzogY29uZmlnL3RjLW1zcDQzMC5jOjExNTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIHJlZ2lzdGVyIG5hbWUgciVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzoxMTYxCisjOiBjb25maWcvdGMtbXNwNDMwLmM6MTE2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJNU1A0MzAgZG9lcyBub3QgaGF2ZSAlZCByZWdpc3RlcnMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLW1zcDQzMC5jOjExODEKKyM6IGNvbmZpZy90Yy1tc3A0MzAuYzoxMTg3CiBtc2dpZCAiJyknIHJlcXVpcmVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1tc3A0MzAuYzoxMTk0CisjOiBjb25maWcvdGMtbXNwNDMwLmM6MTIwMAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIG9wZXJhdG9yICVzLiBEaWQgeW91IG1lYW4gWChSbikgb3IgI1tobF1baGxdW29pXShDT05TVCkgPyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbXNwNDMwLmM6MTIwMworIzogY29uZmlnL3RjLW1zcDQzMC5jOjEyMDkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBvcGVyYXRvciAociVzIHN1YnN0aXR1ZGVkIGFzIGEgcmVnaXN0ZXIgbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbXNwNDMwLmM6MTIxNSBjb25maWcvdGMtbXNwNDMwLmM6MTIyNgorIzogY29uZmlnL3RjLW1zcDQzMC5jOjEyMjEgY29uZmlnL3RjLW1zcDQzMC5jOjEyMzIKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBvcGVyYXRvciAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtbXNwNDMwLmM6MTIyMAorIzogY29uZmlnL3RjLW1zcDQzMC5jOjEyMjYKIG1zZ2lkICJyMiBzaG91bGQgbm90IGJlIHVzZWQgaW4gaW5kZXhlZCBhZGRyZXNzaW5nIG1vZGUiCiBtc2dzdHIgIiIKIAogIy4gVW5yZWFjaGFibGUuCi0jOiBjb25maWcvdGMtbXNwNDMwLmM6MTMyMQorIzogY29uZmlnL3RjLW1zcDQzMC5jOjEzMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBhZGRyZXNzaW5nIG1vZGUgZm9yIG9wZXJhbmQgJXMiCiBtc2dzdHIgIiIKQEAgLTc0NTksNiArNzgzNCw3IEBACiBtc2dzdHIgIiIKIAogIzogY29uZmlnL3RjLW5zMzJrLmM6MjIxMworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiTlMzMksgb3B0aW9uczpcbiIKICItbTMyMDMyIHwgLW0zMjUzMlx0c2VsZWN0IHZhcmlhbnQgb2YgTlMzMksgYXJjaGl0ZWN0dXJlXG4iCkBAIC03NTI3LDIwICs3OTAzLDIxIEBACiBtc2dpZCAiY2FuJ3QgaGF2ZSByZWxvY2F0aW9uIGZvciBpcHVzaCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcGouYzoyOTAgY29uZmlnL3RjLXh0ZW5zYS5jOjQ5NzYKKyM6IGNvbmZpZy90Yy1wai5jOjI5MCBjb25maWcvdGMteHRlbnNhLmM6NDg2NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIG9wY29kZSAlcyIKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMtcGouYzo0MzkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBKIG9wdGlvbnM6XG4iCiAiLWxpdHRsZVx0XHRcdGdlbmVyYXRlIGxpdHRsZSBlbmRpYW4gY29kZVxuIgogIi1iaWdcdFx0XHRnZW5lcmF0ZSBiaWcgZW5kaWFuIGNvZGVcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcGouYzo0NjkgY29uZmlnL3RjLXNoLmM6MzQ2NCBjb25maWcvdGMtc2guYzozNDcxCi0jOiBjb25maWcvdGMtc2guYzozNDc4IGNvbmZpZy90Yy1zaC5jOjM0ODUKKyM6IGNvbmZpZy90Yy1wai5jOjQ2OSBjb25maWcvdGMtc2guYzozNzYzIGNvbmZpZy90Yy1zaC5jOjM3NzAKKyM6IGNvbmZpZy90Yy1zaC5jOjM3NzcgY29uZmlnL3RjLXNoLmM6Mzc4NAogbXNnaWQgInBjcmVsIHRvbyBmYXIiCiBtc2dzdHIgIiIKIApAQCAtNzU1MiwxNyArNzkyOSwxOCBAQAogbXNnaWQgImVzdGltYXRlIHNpemVcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6ODc5CisjOiBjb25maWcvdGMtcHBjLmM6OTgwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIHVuc3VwcG9ydGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzoxMDI5IGNvbmZpZy90Yy1zMzkwLmM6NDE0IGNvbmZpZy90Yy1zMzkwLmM6NDIxCisjOiBjb25maWcvdGMtcHBjLmM6MTA0NiBjb25maWcvdGMtczM5MC5jOjQxNCBjb25maWcvdGMtczM5MC5jOjQyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHN3aXRjaCAtbSVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzoxMDY2CisjOiBjb25maWcvdGMtcHBjLmM6MTA4MworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUG93ZXJQQyBvcHRpb25zOlxuIgogIi1hMzJcdFx0XHRnZW5lcmF0ZSBFTEYzMi9YQ09GRjMyXG4iCkBAIC03NTc0LDExICs3OTUyLDEzIEBACiAiLW1wcGMsIC1tcHBjMzIsIC1tNjAzLCAtbTYwNFxuIgogIlx0XHRcdGdlbmVyYXRlIGNvZGUgZm9yIFBvd2VyUEMgNjAzLzYwNFxuIgogIi1tNDAzLCAtbTQwNVx0XHRnZW5lcmF0ZSBjb2RlIGZvciBQb3dlclBDIDQwMy80MDVcbiIKKyItbTQ0MFx0XHRcdGdlbmVyYXRlIGNvZGUgZm9yIFBvd2VyUEMgNDQwXG4iCiAiLW03NDAwLCAtbTc0MTAsIC1tNzQ1MCwgLW03NDU1XG4iCiAiXHRcdFx0Z2VuZXJhdGUgY29kZSBGb3IgUG93ZXJQQyA3NDAwLzc0MTAvNzQ1MC83NDU1XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjEwNzkKKyM6IGNvbmZpZy90Yy1wcGMuYzoxMDk3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICItbXBwYzY0LCAtbTYyMFx0XHRnZW5lcmF0ZSBjb2RlIGZvciBQb3dlclBDIDYyMC82MjUvNjMwXG4iCiAiLW1wcGM2NGJyaWRnZVx0XHRnZW5lcmF0ZSBjb2RlIGZvciBQb3dlclBDIDY0LCBpbmNsdWRpbmcgYnJpZGdlIGluc25zXG4iCkBAIC03NTg5LDcgKzc5NjksOCBAQAogIi1tYW55XHRcdFx0Z2VuZXJhdGUgY29kZSBmb3IgYW55IGFyY2hpdGVjdHVyZSAoUFdSL1BXUlgvUFBDKVxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzoxMDg3CisjOiBjb25maWcvdGMtcHBjLmM6MTEwNQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiLW1hbHRpdmVjXHRcdGdlbmVyYXRlIGNvZGUgZm9yIEFsdGlWZWNcbiIKICItbWU1MDAsIC1tZTUwMHgyXHRnZW5lcmF0ZSBjb2RlIGZvciBNb3Rvcm9sYSBlNTAwIGNvcmUgY29tcGxleFxuIgpAQCAtNzU5OCw3ICs3OTc5LDggQEAKICItbW5vLXJlZ25hbWVzXHRcdERvIG5vdCBhbGxvdyBzeW1ib2xpYyBuYW1lcyBmb3IgcmVnaXN0ZXJzXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjEwOTQKKyM6IGNvbmZpZy90Yy1wcGMuYzoxMTEyCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICItbXJlbG9jYXRhYmxlXHRcdHN1cHBvcnQgZm9yIEdDQydzIC1tcmVsb2NhdGJsZSBvcHRpb25cbiIKICItbXJlbG9jYXRhYmxlLWxpYlx0c3VwcG9ydCBmb3IgR0NDJ3MgLW1yZWxvY2F0YmxlLWxpYiBvcHRpb25cbiIKQEAgLTc2MTMsMjIxICs3OTk1LDI0NCBAQAogIi1ReSwgLVFuXHRcdGlnbm9yZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MTEzNgorIzogY29uZmlnL3RjLXBwYy5jOjExNTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBkZWZhdWx0IGNwdSA9ICVzLCBvcyA9ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzoxMTYxCisjOiBjb25maWcvdGMtcHBjLmM6MTE3OQogbXNnaWQgIk5laXRoZXIgUG93ZXIgbm9yIFBvd2VyUEMgb3Bjb2RlcyB3ZXJlIHNlbGVjdGVkLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MTI1NyBjb25maWcvdGMtczM5MC5jOjUxNgorIzogY29uZmlnL3RjLXBwYy5jOjEyNjkgY29uZmlnL3RjLXMzOTAuYzo1MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW50ZXJuYWwgYXNzZW1ibGVyIGVycm9yIGZvciBpbnN0cnVjdGlvbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MTI3NworIzogY29uZmlnL3RjLXBwYy5jOjEyOTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW50ZXJuYWwgYXNzZW1ibGVyIGVycm9yIGZvciBtYWNybyAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MTU5OQorIzogY29uZmlnL3RjLXBwYy5jOjE2MzUKIG1zZ2lkICJpZGVudGlmaWVyK2NvbnN0YW50QGdvdCBtZWFucyBpZGVudGlmaWVyQGdvdCtjb25zdGFudCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MTY2NgorIzogY29uZmlnL3RjLXBwYy5jOjE3MDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgcmVsb2NhdGlvbnMgZG8gbm90IGZpdCBpbiAlZCBieXRlc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzoxNzczCisjOiBjb25maWcvdGMtcHBjLmM6MTgwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJMZW5ndGggb2YgLmxjb21tIFwiJXNcIiBpcyBhbHJlYWR5ICVsZC4gTm90IGNoYW5nZWQgdG8gJWxkLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MTg1NQorIzogY29uZmlnL3RjLXBwYy5jOjE4OTEKIG1zZ2lkICJSZWxvY2F0aW9uIGNhbm5vdCBiZSBkb25lIHdoZW4gdXNpbmcgLW1yZWxvY2F0YWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MTk4MQorIzogY29uZmlnL3RjLXBwYy5jOjIwMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAic3ludGF4IGVycm9yOiBpbnZhbGlkIHRvYyBzcGVjaWZpZXIgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MTk5NQorIzogY29uZmlnL3RjLXBwYy5jOjIwMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAic3ludGF4IGVycm9yOiBleHBlY3RlZCBgXScsIGZvdW5kICBgJWMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzoyMjcyCisjOiBjb25maWcvdGMtcHBjLmM6MjMwOQogbXNnaWQgIlt0b2N2XSBzeW1ib2wgaXMgbm90IGEgdG9jIHN5bWJvbCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MjI4MworIzogY29uZmlnL3RjLXBwYy5jOjIzMjAKIG1zZ2lkICJVbmltcGxlbWVudGVkIHRvYzMyIGV4cHJlc3Npb24gbW9kaWZpZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjIyODgKKyM6IGNvbmZpZy90Yy1wcGMuYzoyMzI1CiBtc2dpZCAiVW5pbXBsZW1lbnRlZCB0b2M2NCBleHByZXNzaW9uIG1vZGlmaWVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzoyMjkyCisjOiBjb25maWcvdGMtcHBjLmM6MjMyOQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmV4cGVjdGVkIHJldHVybiB2YWx1ZSBbJWRdIGZyb20gcGFyc2VfdG9jX2VudHJ5IVxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzoyNTEwCisjOiBjb25maWcvdGMtcHBjLmM6MjU0NwogbXNnaWQgInVuc3VwcG9ydGVkIHJlbG9jYXRpb24gZm9yIERTIG9mZnNldCBmaWVsZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MjU1NAorIzogY29uZmlnL3RjLXBwYy5jOjI1OTEKICMsIGMtZm9ybWF0CiBtc2dpZCAic3ludGF4IGVycm9yOyBmb3VuZCBgJWMnIGJ1dCBleHBlY3RlZCBgJWMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzoyNzAzCisjOiBjb25maWcvdGMtcHBjLmM6Mjc0MAogbXNnaWQgIndyb25nIG51bWJlciBvZiBvcGVyYW5kcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6Mjc1OQorIzogY29uZmlnL3RjLXBwYy5jOjI3OTYKIG1zZ2lkICJCYWQgLnNlY3Rpb24gZGlyZWN0aXZlOiB3YW50IGEsZSx3LHgsTSxTLEcsVCBpbiBzdHJpbmciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjI4NzQKKyM6IGNvbmZpZy90Yy1wcGMuYzoyOTExCiBtc2dpZCAibWlzc2luZyBzaXplIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzoyODgzCisjOiBjb25maWcvdGMtcHBjLmM6MjkyMAogbXNnaWQgIm5lZ2F0aXZlIHNpemUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjI5MjAKKyM6IGNvbmZpZy90Yy1wcGMuYzoyOTU3CiBtc2dpZCAibWlzc2luZyByZWFsIHN5bWJvbCBuYW1lIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzoyOTQxCisjOiBjb25maWcvdGMtcHBjLmM6Mjk3OAogbXNnaWQgImF0dGVtcHQgdG8gcmVkZWZpbmUgc3ltYm9sIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzozMTg4CisjOiBjb25maWcvdGMtcHBjLmM6MzIyNQogbXNnaWQgIlRoZSBYQ09GRiBmaWxlIGZvcm1hdCBkb2VzIG5vdCBzdXBwb3J0IGFyYml0cmFyeSBzZWN0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MzI2NQorIzogY29uZmlnL3RjLXBwYy5jOjMzMDIKIG1zZ2lkICJtaXNzaW5nIHJlbmFtZSBzdHJpbmciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjMyOTYgY29uZmlnL3RjLXBwYy5jOjM4NTEgcmVhZC5jOjMwNjAKKyM6IGNvbmZpZy90Yy1wcGMuYzozMzMzIGNvbmZpZy90Yy1wcGMuYzozODg4IHJlYWQuYzoyOTMyCiBtc2dpZCAibWlzc2luZyB2YWx1ZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MzMxNAorIzogY29uZmlnL3RjLXBwYy5jOjMzNTEKIG1zZ2lkICJpbGxlZ2FsIC5zdGFieCBleHByZXNzaW9uOyB6ZXJvIGFzc3VtZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjMzNDYKKyM6IGNvbmZpZy90Yy1wcGMuYzozMzgzCiBtc2dpZCAibWlzc2luZyBjbGFzcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MzM1NQorIzogY29uZmlnL3RjLXBwYy5jOjMzOTIKIG1zZ2lkICJtaXNzaW5nIHR5cGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjM0MzYKKyM6IGNvbmZpZy90Yy1wcGMuYzozNDczCiBtc2dpZCAibWlzc2luZyBzeW1ib2wgbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MzYzMAorIzogY29uZmlnL3RjLXBwYy5jOjM2NjcKIG1zZ2lkICJuZXN0ZWQgLmJzIGJsb2NrcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6MzY2MworIzogY29uZmlnL3RjLXBwYy5jOjM3MDAKIG1zZ2lkICIuZXMgd2l0aG91dCBwcmVjZWRpbmcgLmJzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzozODQzCisjOiBjb25maWcvdGMtcHBjLmM6Mzg4MAogbXNnaWQgIm5vbi1jb25zdGFudCBieXRlIGNvdW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzozODkxCisjOiBjb25maWcvdGMtcHBjLmM6MzkyOAogbXNnaWQgIi50YyBub3QgaW4gLnRvYyBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzozOTEwCisjOiBjb25maWcvdGMtcHBjLmM6Mzk0NwogbXNnaWQgIi50YyB3aXRoIG5vIGxhYmVsIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzo0MDIxCisjOiBjb25maWcvdGMtcHBjLmM6NDAzOQorbXNnaWQgIi5tYWNoaW5lIHN0YWNrIG92ZXJmbG93IgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1wcGMuYzo0MDQ2Cittc2dpZCAiLm1hY2hpbmUgc3RhY2sgdW5kZXJmbG93IgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1wcGMuYzo0MDUzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgbWFjaGluZSBgJXMnIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1wcGMuYzo0MTA3CiBtc2dpZCAiTm8gcHJldmlvdXMgc2VjdGlvbiB0byByZXR1cm4gdG8uIERpcmVjdGl2ZSBpZ25vcmVkLiIKIG1zZ3N0ciAiIgogCiAjLiBTZWN0aW9uIENvbnRlbnRzCiAjLiB1bmtub3duCi0jOiBjb25maWcvdGMtcHBjLmM6NDQzOAorIzogY29uZmlnL3RjLXBwYy5jOjQ1MjQKIG1zZ2lkICJVbnN1cHBvcnRlZCBzZWN0aW9uIGF0dHJpYnV0ZSAtLSAnYSciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjQ2MjcKKyM6IGNvbmZpZy90Yy1wcGMuYzo0NzEzCiBtc2dpZCAiYmFkIHN5bWJvbCBzdWZmaXgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjQ3MjAKKyM6IGNvbmZpZy90Yy1wcGMuYzo0ODA2CiBtc2dpZCAiVW5yZWNvZ25pemVkIHN5bWJvbCBzdWZmaXgiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjQ4MDYKKyM6IGNvbmZpZy90Yy1wcGMuYzo0ODkyCiBtc2dpZCAidHdvIC5mdW5jdGlvbiBwc2V1ZG8tb3BzIHdpdGggbm8gaW50ZXJ2ZW5pbmcgLmVmIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzo0ODE5CisjOiBjb25maWcvdGMtcHBjLmM6NDkwNQogbXNnaWQgIi5lZiB3aXRoIG5vIHByZWNlZGluZyAuZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjQ5NDcKKyM6IGNvbmZpZy90Yy1wcGMuYzo1MDMzCiAjLCBjLWZvcm1hdAogbXNnaWQgIndhcm5pbmc6IHN5bWJvbCAlcyBoYXMgbm8gY3NlY3QiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjUyNTEKKyM6IGNvbmZpZy90Yy1wcGMuYzo1MzM3CiBtc2dpZCAic3ltYm9sIGluIC50b2MgZG9lcyBub3QgbWF0Y2ggYW55IC50YyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6NTU4NCBjb25maWcvdGMtczM5MC5jOjIwNzIgY29uZmlnL3RjLXY4NTAuYzoyNDAxCisjOiBjb25maWcvdGMtcHBjLmM6NTY3MCBjb25maWcvdGMtczM5MC5jOjIwNzggY29uZmlnL3RjLXY4NTAuYzoyNDE4CiAjOiBjb25maWcvdGMteHN0b3JteTE2LmM6NTM3CiBtc2dpZCAidW5yZXNvbHZlZCBleHByZXNzaW9uIHRoYXQgbXVzdCBiZSByZXNvbHZlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6NTU4NworIzogY29uZmlnL3RjLXBwYy5jOjU2NzMKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5zdXBwb3J0ZWQgcmVsb2NhdGlvbiBhZ2FpbnN0ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzo1NjYyCisjOiBjb25maWcvdGMtcHBjLmM6NTc0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgZW1pdCBQQyByZWxhdGl2ZSAlcyByZWxvY2F0aW9uIGFnYWluc3QgJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjU2NjcKKyM6IGNvbmZpZy90Yy1wcGMuYzo1NzUzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBlbWl0IFBDIHJlbGF0aXZlICVzIHJlbG9jYXRpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXBwYy5jOjU4NDEKKyM6IGNvbmZpZy90Yy1wcGMuYzo1OTA2CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byBoYW5kbGUgcmVmZXJlbmNlIHRvIHN5bWJvbCAlcyIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtcHBjLmM6NTkwOQorbXNnaWQgIlVuYWJsZSB0byByZXNvbHZlIGV4cHJlc3Npb24iCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLXBwYy5jOjU5MzYKIG1zZ2lkICJtdXN0IGJyYW5jaCB0byBhbiBhZGRyZXNzIGEgbXVsdGlwbGUgb2YgNCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtcHBjLmM6NTg0NQorIzogY29uZmlnL3RjLXBwYy5jOjU5NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQGxvY2FsIG9yIEBwbHQgYnJhbmNoIGRlc3RpbmF0aW9uIGlzIHRvbyBmYXIgYXdheSwgJWxkIGJ5dGVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1wcGMuYzo1ODc2CisjOiBjb25maWcvdGMtcHBjLmM6NTk3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJHYXMgZmFpbHVyZSwgcmVsb2MgdmFsdWUgJWRcbiIKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMtczM5MC5jOjQ1NworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAgICAgICBTMzkwIG9wdGlvbnM6XG4iCiAiICAgICAgICAtbXJlZ25hbWVzICAgICAgICBBbGxvdyBzeW1ib2xpYyBuYW1lcyBmb3IgcmVnaXN0ZXJzXG4iCkBAIC03ODM4LDYgKzgyNDMsNyBAQAogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy1zMzkwLmM6NDY0CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgICAgICAgIC1WICAgICAgICAgICAgICAgIHByaW50IGFzc2VtYmxlciB2ZXJzaW9uIG51bWJlclxuIgogIiAgICAgICAgLVF5LCAtUW4gICAgICAgICAgaWdub3JlZFxuIgpAQCAtNzg2NSw3ICs4MjcxLDcgQEAKIG1zZ2lkICJCaWcgbnVtYmVyIGlzIHRvbyBiaWciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXMzOTAuYzoxMTQ0IGNvbmZpZy90Yy1zMzkwLmM6MTcyMgorIzogY29uZmlnL3RjLXMzOTAuYzoxMTQ0IGNvbmZpZy90Yy1zMzkwLmM6MTcyOAogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyByZWxvY2F0aW9ucyBkbyBub3QgZml0IGluICVkIGJ5dGVzIgogbXNnc3RyICIiCkBAIC03ODk0LDcgKzgzMDAsNyBAQAogbXNnaWQgInN5bnRheCBlcnJvcjsgJyknIG5vdCBhbGxvd2VkIGhlcmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXMzOTAuYzoxNjAyIGNvbmZpZy90Yy1zMzkwLmM6MTYyMiBjb25maWcvdGMtczM5MC5jOjE2MzUKKyM6IGNvbmZpZy90Yy1zMzkwLmM6MTYwMiBjb25maWcvdGMtczM5MC5jOjE2MjggY29uZmlnL3RjLXMzOTAuYzoxNjQxCiBtc2dpZCAiSW52YWxpZCAuaW5zbiBmb3JtYXRcbiIKIG1zZ3N0ciAiIgogCkBAIC03OTAzLDM2NiArODMwOSw0MDcgQEAKIG1zZ2lkICJVbnJlY29nbml6ZWQgb3Bjb2RlIGZvcm1hdDogYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtczM5MC5jOjE2MzgKKyM6IGNvbmZpZy90Yy1zMzkwLmM6MTY0NAogbXNnaWQgInNlY29uZCBvcGVyYW5kIG9mIC5pbnNuIG5vdCBhIGNvbnN0YW50XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXMzOTAuYzoxNjQxCisjOiBjb25maWcvdGMtczM5MC5jOjE2NDcKIG1zZ2lkICJtaXNzaW5nIGNvbW1hIGFmdGVyIGluc24gY29uc3RhbnRcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtczM5MC5jOjIwNzUKKyM6IGNvbmZpZy90Yy1zMzkwLmM6MjA4MQogbXNnaWQgInVuc3VwcG9ydGVkIHJlbG9jYXRpb24gdHlwZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2g2NC5jOjU5NgorIzogY29uZmlnL3RjLXNoNjQuYzo1NjgKIG1zZ2lkICJUaGlzIG9wZXJhbmQgbXVzdCBiZSBjb25zdGFudCBhdCBhc3NlbWJseSB0aW1lIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaDY0LmM6NzExCisjOiBjb25maWcvdGMtc2g2NC5jOjY4MQogbXNnaWQgIkludmFsaWQgb3BlcmFuZCBleHByZXNzaW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaDY0LmM6Nzk4IGNvbmZpZy90Yy1zaDY0LmM6OTA0CisjOiBjb25maWcvdGMtc2g2NC5jOjc2OCBjb25maWcvdGMtc2g2NC5jOjg3MgogbXNnaWQgIlBUQiBvcGVyYW5kIGlzIGEgU0htZWRpYSBzeW1ib2wiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzo4MDEgY29uZmlnL3RjLXNoNjQuYzo5MDEKKyM6IGNvbmZpZy90Yy1zaDY0LmM6NzcxIGNvbmZpZy90Yy1zaDY0LmM6ODY5CiBtc2dpZCAiUFRBIG9wZXJhbmQgaXMgYSBTSGNvbXBhY3Qgc3ltYm9sIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaDY0LmM6ODE3CisjOiBjb25maWcvdGMtc2g2NC5jOjc4NwogbXNnaWQgImludmFsaWQgZXhwcmVzc2lvbiBpbiBvcGVyYW5kIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaDY0LmM6MTUxNAorIzogY29uZmlnL3RjLXNoNjQuYzoxNDc4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb3BlcmFuZCwgbm90IGEgNS1iaXQgdW5zaWduZWQgdmFsdWU6ICVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaDY0LmM6MTUxOQorIzogY29uZmlnL3RjLXNoNjQuYzoxNDgzCiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb3BlcmFuZCwgbm90IGEgNi1iaXQgc2lnbmVkIHZhbHVlOiAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2g2NC5jOjE1MjQKKyM6IGNvbmZpZy90Yy1zaDY0LmM6MTQ4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9wZXJhbmQsIG5vdCBhIDYtYml0IHVuc2lnbmVkIHZhbHVlOiAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2g2NC5jOjE1MjkgY29uZmlnL3RjLXNoNjQuYzoxNTQxCisjOiBjb25maWcvdGMtc2g2NC5jOjE0OTMgY29uZmlnL3RjLXNoNjQuYzoxNTA1CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb3BlcmFuZCwgbm90IGEgMTEtYml0IHNpZ25lZCB2YWx1ZTogJWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzoxNTMxCisjOiBjb25maWcvdGMtc2g2NC5jOjE0OTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBvcGVyYW5kLCBub3QgYSBtdWx0aXBsZSBvZiAzMjogJWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzoxNTM2CisjOiBjb25maWcvdGMtc2g2NC5jOjE1MDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBvcGVyYW5kLCBub3QgYSAxMC1iaXQgc2lnbmVkIHZhbHVlOiAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2g2NC5jOjE1NDMKKyM6IGNvbmZpZy90Yy1zaDY0LmM6MTUwNwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9wZXJhbmQsIG5vdCBhbiBldmVuIHZhbHVlOiAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2g2NC5jOjE1NDgKKyM6IGNvbmZpZy90Yy1zaDY0LmM6MTUxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9wZXJhbmQsIG5vdCBhIDEyLWJpdCBzaWduZWQgdmFsdWU6ICVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaDY0LmM6MTU1MAorIzogY29uZmlnL3RjLXNoNjQuYzoxNTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb3BlcmFuZCwgbm90IGEgbXVsdGlwbGUgb2YgNDogJWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzoxNTU1CisjOiBjb25maWcvdGMtc2g2NC5jOjE1MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBvcGVyYW5kLCBub3QgYSAxMy1iaXQgc2lnbmVkIHZhbHVlOiAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2g2NC5jOjE1NTcKKyM6IGNvbmZpZy90Yy1zaDY0LmM6MTUyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9wZXJhbmQsIG5vdCBhIG11bHRpcGxlIG9mIDg6ICVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaDY0LmM6MTU2MgorIzogY29uZmlnL3RjLXNoNjQuYzoxNTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb3BlcmFuZCwgbm90IGEgMTYtYml0IHNpZ25lZCB2YWx1ZTogJWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzoxNTY3CisjOiBjb25maWcvdGMtc2g2NC5jOjE1MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBvcGVyYW5kLCBub3QgYW4gMTYtYml0IHVuc2lnbmVkIHZhbHVlOiAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2g2NC5jOjE1NzMKKyM6IGNvbmZpZy90Yy1zaDY0LmM6MTUzNwogbXNnaWQgIm9wZXJhbmQgb3V0IG9mIHJhbmdlIGZvciBQVCwgUFRBIGFuZCBQVEIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzoxNTc1CisjOiBjb25maWcvdGMtc2g2NC5jOjE1MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAib3BlcmFuZCBub3QgYSBtdWx0aXBsZSBvZiA0IGZvciBQVCwgUFRBIG9yIFBUQjogJWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzoyMTAzCisjOiBjb25maWcvdGMtc2g2NC5jOjIwNTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTU9WSSBvcGVyYW5kIGlzIG5vdCBhIDMyLWJpdCBzaWduZWQgdmFsdWU6IDB4JTh4JTA4eCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2g2NC5jOjI0NjYgY29uZmlnL3RjLXNoNjQuYzoyNjMxIGNvbmZpZy90Yy1zaDY0LmM6MjY0NgorIzogY29uZmlnL3RjLXNoNjQuYzoyNDE2IGNvbmZpZy90Yy1zaDY0LmM6MjU3OSBjb25maWcvdGMtc2g2NC5jOjI1OTQKIG1zZ2lkICJpbnZhbGlkIFBJQyByZWZlcmVuY2UiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzoyNTI0CisjOiBjb25maWcvdGMtc2g2NC5jOjI0NzMKIG1zZ2lkICJjYW4ndCBmaW5kIG9wY29kZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2g2NC5jOjI4NTQKKyM6IGNvbmZpZy90Yy1zaDY0LmM6MjgwMQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9wZXJhbmRzIHRvICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaDY0LmM6Mjg2MAorIzogY29uZmlnL3RjLXNoNjQuYzoyODA3CiAjLCBjLWZvcm1hdAogbXNnaWQgImV4Y2VzcyBvcGVyYW5kcyB0byAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2g2NC5jOjI5MDYKKyM6IGNvbmZpZy90Yy1zaDY0LmM6Mjg1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGUgYC5tb2RlICVzJyBkaXJlY3RpdmUgaXMgbm90IHZhbGlkIHdpdGggdGhpcyBhcmNoaXRlY3R1cmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzoyOTE0CisjOiBjb25maWcvdGMtc2g2NC5jOjI4NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBhcmd1bWVudCB0byAubW9kZTogJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzoyOTQ1CisjOiBjb25maWcvdGMtc2g2NC5jOjI4OTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiVGhlIGAuYWJpICVzJyBkaXJlY3RpdmUgaXMgbm90IHZhbGlkIHdpdGggdGhpcyBhcmNoaXRlY3R1cmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzoyOTUxCisjOiBjb25maWcvdGMtc2g2NC5jOjI4OTYKIG1zZ2lkICJgLmFiaSA2NCcgYnV0IGNvbW1hbmQtbGluZSBvcHRpb25zIGRvIG5vdCBzcGVjaWZ5IDY0LWJpdCBBQkkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzoyOTU2CisjOiBjb25maWcvdGMtc2g2NC5jOjI5MDEKIG1zZ2lkICJgLmFiaSAzMicgYnV0IGNvbW1hbmQtbGluZSBvcHRpb25zIGRvIG5vdCBzcGVjaWZ5IDMyLWJpdCBBQkkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzoyOTU5CisjOiBjb25maWcvdGMtc2g2NC5jOjI5MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBhcmd1bWVudCB0byAuYWJpOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2g2NC5jOjMwMTQKKyM6IGNvbmZpZy90Yy1zaDY0LmM6Mjk1OQogbXNnaWQgIi1uby1taXggaXMgaW52YWxpZCB3aXRob3V0IHNwZWNpZnlpbmcgU0hjb21wYWN0IG9yIFNIbWVkaWEiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzozMDE5CisjOiBjb25maWcvdGMtc2g2NC5jOjI5NjQKIG1zZ2lkICItc2hjb21wYWN0LWNvbnN0LWNyYW5nZSBpcyBpbnZhbGlkIHdpdGhvdXQgU0hjb21wYWN0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaDY0LmM6MzAyMgorIzogY29uZmlnL3RjLXNoNjQuYzoyOTY3CiBtc2dpZCAiLWV4cGFuZC1wdDMyIG9ubHkgdmFsaWQgd2l0aCAtYWJpPTY0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaDY0LmM6MzAyNQorIzogY29uZmlnL3RjLXNoNjQuYzoyOTcwCiBtc2dpZCAiLW5vLWV4cGFuZCBvbmx5IHZhbGlkIHdpdGggU0hjb21wYWN0IG9yIFNIbWVkaWEiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzozMDI4CisjOiBjb25maWcvdGMtc2g2NC5jOjI5NzMKIG1zZ2lkICItZXhwYW5kLXB0MzIgaW52YWxpZCB0b2dldGhlciB3aXRoIC1uby1leHBhbmQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzozMjUwCisjOiBjb25maWcvdGMtc2g2NC5jOjMxOTAKIG1zZ2lkICIiCiAiU0htZWRpYSBjb2RlIG5vdCBhbGxvd2VkIGluIHNhbWUgc2VjdGlvbiBhcyBjb25zdGFudHMgYW5kIFNIY29tcGFjdCBjb2RlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaDY0LmM6MzI2OAorIzogY29uZmlnL3RjLXNoNjQuYzozMjA4CiBtc2dpZCAiTm8gc2VnbWVudCBpbmZvIGZvciBjdXJyZW50IHNlY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzozMzEwCisjOiBjb25maWcvdGMtc2g2NC5jOjMyNDYKIG1zZ2lkICJkdXBsaWNhdGUgZGF0YWxhYmVsIG9wZXJhdG9yIGlnbm9yZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoNjQuYzozMzgwCisjOiBjb25maWcvdGMtc2g2NC5jOjMzMTYKIG1zZ2lkICJJbnZhbGlkIERhdGFMYWJlbCBleHByZXNzaW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjkxCisjOiBjb25maWcvdGMtc2guYzo2NQogbXNnaWQgImRpcmVjdGl2ZSAuYmlnIGVuY291bnRlcmVkIHdoZW4gb3B0aW9uIC1iaWcgcmVxdWlyZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MTAyCisjOiBjb25maWcvdGMtc2guYzo3NQogbXNnaWQgImRpcmVjdGl2ZSAubGl0dGxlIGVuY291bnRlcmVkIHdoZW4gb3B0aW9uIC1saXR0bGUgcmVxdWlyZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6Nzc2CisjOiBjb25maWcvdGMtc2guYzo3NDMKIG1zZ2lkICJJbnZhbGlkIFBJQyBleHByZXNzaW9uLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2guYzoxMjY5CisjOiBjb25maWcvdGMtc2guYzoxMjM1CiBtc2dpZCAibWlzcGxhY2VkIFBJQyBvcGVyYW5kIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjEzMTAKKyM6IGNvbmZpZy90Yy1zaC5jOjEyNzQKIG1zZ2lkICJpbGxlZ2FsIHJlZ2lzdGVyIGFmdGVyIEAtIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjEzMjYKKyM6IGNvbmZpZy90Yy1zaC5jOjEyOTAKIG1zZ2lkICJtdXN0IGJlIEAocjAsLi4uKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2guYzoxMzUwCisjOiBjb25maWcvdGMtc2guYzoxMzE0CiBtc2dpZCAic3ludGF4IGVycm9yIGluIEAocjAsLi4uKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2guYzoxMzU1CisjOiBjb25maWcvdGMtc2guYzoxMzE5CiBtc2dpZCAic3ludGF4IGVycm9yIGluIEAocjAuLi4pIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjEzOTYKKyM6IGNvbmZpZy90Yy1zaC5jOjEzNjAKIG1zZ2lkICJEZXByZWNhdGVkIHN5bnRheC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MTQwOCBjb25maWcvdGMtc2guYzoxNDEzCisjOiBjb25maWcvdGMtc2guYzoxMzcyIGNvbmZpZy90Yy1zaC5jOjEzNzcKIG1zZ2lkICJzeW50YXggZXJyb3IgaW4gQChkaXNwLFtSbiwgZ2JyLCBwY10pIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjE0MTgKKyM6IGNvbmZpZy90Yy1zaC5jOjEzODIKIG1zZ2lkICJleHBlY3RpbmcgKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2guYzoxNDI2CisjOiBjb25maWcvdGMtc2guYzoxMzkwCiBtc2dpZCAiaWxsZWdhbCByZWdpc3RlciBhZnRlciBAIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjE5NzcKKyM6IGNvbmZpZy90Yy1zaC5jOjIxNTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCByZWdpc3RlcjogJ3IlZCciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjE0MworIzogY29uZmlnL3RjLXNoLmM6MjMyMQogbXNnaWQgImluc24gY2FuJ3QgYmUgY29tYmluZWQgd2l0aCBwYXJhbGxlbCBwcm9jZXNzaW5nIGluc24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjE1MCBjb25maWcvdGMtc2guYzoyMTYxCisjOiBjb25maWcvdGMtc2guYzoyMzI4IGNvbmZpZy90Yy1zaC5jOjIzMzkgY29uZmlnL3RjLXNoLmM6MjM3MQogbXNnaWQgIm11bHRpcGxlIG1vdnggc3BlY2lmaWNhdGlvbnMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjE1NSBjb25maWcvdGMtc2guYzoyMTgyCisjOiBjb25maWcvdGMtc2guYzoyMzMzIGNvbmZpZy90Yy1zaC5jOjIzNTUgY29uZmlnL3RjLXNoLmM6MjM5NAogbXNnaWQgIm11bHRpcGxlIG1vdnkgc3BlY2lmaWNhdGlvbnMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjE2MworIzogY29uZmlnL3RjLXNoLmM6MjM0MiBjb25maWcvdGMtc2guYzoyMzc1CiBtc2dpZCAiaW52YWxpZCBtb3Z4IGFkZHJlc3MgcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjE2OSBjb25maWcvdGMtc2guYzoyMTc0Ci1tc2dpZCAiaW52YWxpZCBtb3Z4IGRzcCByZWdpc3RlciIKKyM6IGNvbmZpZy90Yy1zaC5jOjIzNDQKK21zZ2lkICJpbnNuIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG5vbi1ub3B5IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjIxOTEgY29uZmlnL3RjLXNoLmM6MjE5NgotbXNnaWQgImludmFsaWQgbW92eSBkc3AgcmVnaXN0ZXIiCi1tc2dzdHIgIiIKLQotIzogY29uZmlnL3RjLXNoLmM6MjIwMAorIzogY29uZmlnL3RjLXNoLmM6MjM1OCBjb25maWcvdGMtc2guYzoyNDE0CiBtc2dpZCAiaW52YWxpZCBtb3Z5IGFkZHJlc3MgcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjIwNgorIzogY29uZmlnL3RjLXNoLmM6MjM2MAorbXNnaWQgImluc24gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggbm9uLW5vcHgiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLXNoLmM6MjM3MworbXNnaWQgInByZXZpb3VzIG1vdnkgcmVxdWlyZXMgbm9weCIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtc2guYzoyMzgxIGNvbmZpZy90Yy1zaC5jOjIzODYKK21zZ2lkICJpbnZhbGlkIG1vdnggZHNwIHJlZ2lzdGVyIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1zaC5jOjIzOTYKK21zZ2lkICJwcmV2aW91cyBtb3Z4IHJlcXVpcmVzIG5vcHkiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLXNoLmM6MjQwNSBjb25maWcvdGMtc2guYzoyNDEwCittc2dpZCAiaW52YWxpZCBtb3Z5IGRzcCByZWdpc3RlciIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtc2guYzoyNDIwCiBtc2dpZCAiZHNwIGltbWVkaWF0ZSBzaGlmdCB2YWx1ZSBub3QgY29uc3RhbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjIxMyBjb25maWcvdGMtc2guYzoyMjI2CisjOiBjb25maWcvdGMtc2guYzoyNDM0IGNvbmZpZy90Yy1zaC5jOjI0NjAKIG1zZ2lkICJtdWx0aXBsZSBwYXJhbGxlbCBwcm9jZXNzaW5nIHNwZWNpZmljYXRpb25zIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjIyMTkKKyM6IGNvbmZpZy90Yy1zaC5jOjI0NTMKIG1zZ2lkICJtdWx0aXBsZSBjb25kaXRpb24gc3BlY2lmaWNhdGlvbnMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjIzNQorIzogY29uZmlnL3RjLXNoLmM6MjQ5MQogbXNnaWQgImluc24gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggcG11bHMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjI1MgotbXNnaWQgImJhZCBwYWRkIC8gcHN1YiBwbXVscyBvdXRwdXQgb3BlcmFuZCIKKyM6IGNvbmZpZy90Yy1zaC5jOjI1MDcKK21zZ2lkICJiYWQgY29tYmluZWQgcG11bHMgb3V0cHV0IG9wZXJhbmQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjI2MgorIzogY29uZmlnL3RjLXNoLmM6MjUxNwogbXNnaWQgImRlc3RpbmF0aW9uIHJlZ2lzdGVyIGlzIHNhbWUgZm9yIHBhcmFsbGVsIGluc25zIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjIyNzEKKyM6IGNvbmZpZy90Yy1zaC5jOjI1MjYKIG1zZ2lkICJjb25kaXRpb24gbm90IGZvbGxvd2VkIGJ5IGNvbmRpdGlvbmFsaXphYmxlIGluc24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjI4MQorIzogY29uZmlnL3RjLXNoLmM6MjUzNgogbXNnaWQgInVucmVjb2duaXplZCBjaGFyYWN0ZXJzIGF0IGVuZCBvZiBwYXJhbGxlbCBwcm9jZXNzaW5nIGluc24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjQxNworIzogY29uZmlnL3RjLXNoLmM6MjY1MQorbXNnaWQgIm9wY29kZSBub3QgdmFsaWQgZm9yIHRoaXMgY3B1IHZhcmlhbnQiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLXNoLmM6MjY4NAorbXNnaWQgIkRlbGF5ZWQgYnJhbmNoZXMgbm90IGF2YWlsYWJsZSBvbiBTSDEiCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLXNoLmM6MjcxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJleGNlc3Mgb3BlcmFuZHM6ICclcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjU2OQorIzogY29uZmlnL3RjLXNoLmM6Mjg2MQogbXNnaWQgIi51c2VzIHBzZXVkby1vcCBzZWVuIHdoZW4gbm90IHJlbGF4aW5nIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjI1NzUKKyM6IGNvbmZpZy90Yy1zaC5jOjI4NjcKIG1zZ2lkICJiYWQgLnVzZXMgZm9ybWF0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjI2NTQKKyM6IGNvbmZpZy90Yy1zaC5jOjI5NTQKIG1zZ2lkICJJbnZhbGlkIGNvbWJpbmF0aW9uOiAtLWlzYT1TSGNvbXBhY3Qgd2l0aCAtLWlzYT1TSG1lZGlhIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjI2NjAKKyM6IGNvbmZpZy90Yy1zaC5jOjI5NjAKIG1zZ2lkICJJbnZhbGlkIGNvbWJpbmF0aW9uOiAtLWlzYT1TSG1lZGlhIHdpdGggLS1pc2E9U0hjb21wYWN0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjI2NjIKKyM6IGNvbmZpZy90Yy1zaC5jOjI5NjIKIG1zZ2lkICJJbnZhbGlkIGNvbWJpbmF0aW9uOiAtLWFiaT02NCB3aXRoIC0taXNhPVNIY29tcGFjdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2guYzoyNjc1CisjOiBjb25maWcvdGMtc2guYzoyOTc1CiBtc2dpZCAiSW52YWxpZCBjb21iaW5hdGlvbjogLS1hYmk9MzIgd2l0aCAtLWFiaT02NCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2guYzoyNjgxCisjOiBjb25maWcvdGMtc2guYzoyOTgxCiBtc2dpZCAiSW52YWxpZCBjb21iaW5hdGlvbjogLS1hYmk9NjQgd2l0aCAtLWFiaT0zMiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2guYzoyNjgzCisjOiBjb25maWcvdGMtc2guYzoyOTgzCiBtc2dpZCAiSW52YWxpZCBjb21iaW5hdGlvbjogLS1pc2E9U0hjb21wYWN0IHdpdGggLS1hYmk9NjQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MjcxOAorIzogY29uZmlnL3RjLXNoLmM6MzAxNworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiU0ggb3B0aW9uczpcbiIKICItbGl0dGxlXHRcdFx0Z2VuZXJhdGUgbGl0dGxlIGVuZGlhbiBjb2RlXG4iCiAiLWJpZ1x0XHRcdGdlbmVyYXRlIGJpZyBlbmRpYW4gY29kZVxuIgogIi1yZWxheFx0XHRcdGFsdGVyIGp1bXAgaW5zdHJ1Y3Rpb25zIGZvciBsb25nIGRpc3BsYWNlbWVudHNcbiIKICItc21hbGxcdFx0XHRhbGlnbiBzZWN0aW9ucyB0byA0IGJ5dGUgYm91bmRhcmllcywgbm90IDE2XG4iCi0iLWRzcFx0XHRcdGVuYWJsZSBzaC1kc3AgaW5zbnMsIGFuZCBkaXNhYmxlIHNoMmUvc2gzZS9zaDQgaW5zbnMuXG4iCisiLWRzcFx0XHRcdGVuYWJsZSBzaC1kc3AgaW5zbnMsIGFuZCBkaXNhYmxlIGZsb2F0aW5nLXBvaW50IElTQXMuXG4iCisiLWlzYT1bc2g0XG4iCisiICAgIHwgc2g0LW5vZnB1XHRcdHNoNCB3aXRoIGZwdSBkaXNhYmxlZFxuIgorIiAgICB8IHNoNC1ub21tdS1ub2ZwdSAgIHNoNCB3aXRoIG5vIE1NVSBvciBGUFVcbiIKKyIgICAgfCBzaDRhXG4iCisiXFwgIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjI3MjYKKyM6IGNvbmZpZy90Yy1zaC5jOjMwMzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiKSk7IgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1zaC5jOjMwMzIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgotIi1pc2E9W3NobWVkaWFcdFx0c2V0IGRlZmF1bHQgaW5zdHJ1Y3Rpb24gc2V0IGZvciBTSDY0XG4iCi0iICAgICAgfCBTSG1lZGlhXG4iCi0iICAgICAgfCBzaGNvbXBhY3RcbiIKLSIgICAgICB8IFNIY29tcGFjdF1cbiIKKyItaXNhPVtzaG1lZGlhXHRcdHNldCBhcyB0aGUgZGVmYXVsdCBpbnN0cnVjdGlvbiBzZXQgZm9yIFNINjRcbiIKKyIgICAgfCBTSG1lZGlhXG4iCisiICAgIHwgc2hjb21wYWN0XG4iCisiICAgIHwgU0hjb21wYWN0XVxuIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1zaC5jOjMwMzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgogIi1hYmk9WzMyfDY0XVx0XHRzZXQgc2l6ZSBvZiBleHBhbmRlZCBTSG1lZGlhIG9wZXJhbmRzIGFuZCBvYmplY3RcbiIKICJcdFx0XHRmaWxlIHR5cGVcbiIKICItc2hjb21wYWN0LWNvbnN0LWNyYW5nZVx0ZW1pdCBjb2RlLXJhbmdlIGRlc2NyaXB0b3JzIGZvciBjb25zdGFudHMgaW5cbiIKQEAgLTgyNzEsOTUgKzg3MTgsOTMgQEAKICJcdFx0XHRjb25zdGFudHMgYW5kIFNIY29tcGFjdCBjb2RlXG4iCiAiLW5vLWV4cGFuZFx0XHRkbyBub3QgZXhwYW5kIE1PVkksIFBULCBQVEEgb3IgUFRCIGluc3RydWN0aW9uc1xuIgogIi1leHBhbmQtcHQzMlx0XHR3aXRoIC1hYmk9NjQsIGV4cGFuZCBQVCwgUFRBIGFuZCBQVEIgaW5zdHJ1Y3Rpb25zXG4iCi0iXHRcdFx0dG8gMzIgYml0cyBvbmx5IgorIlx0XHRcdHRvIDMyIGJpdHMgb25seVxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjI4MjMKKyM6IGNvbmZpZy90Yy1zaC5jOjMxMjUKIG1zZ2lkICIudXNlcyBkb2VzIG5vdCByZWZlciB0byBhIGxvY2FsIHN5bWJvbCBpbiB0aGUgc2FtZSBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjI4NDIKKyM6IGNvbmZpZy90Yy1zaC5jOjMxNDQKIG1zZ2lkICJjYW4ndCBmaW5kIGZpeHVwIHBvaW50ZWQgdG8gYnkgLnVzZXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6Mjg2NQorIzogY29uZmlnL3RjLXNoLmM6MzE2NwogbXNnaWQgIi51c2VzIHRhcmdldCBkb2VzIG5vdCByZWZlciB0byBhIGxvY2FsIHN5bWJvbCBpbiB0aGUgc2FtZSBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjI5NjcKKyM6IGNvbmZpZy90Yy1zaC5jOjMyNjcKIG1zZ2lkICJkaXNwbGFjZW1lbnQgb3ZlcmZsb3dzIDEyLWJpdCBmaWVsZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2guYzoyOTcwCisjOiBjb25maWcvdGMtc2guYzozMjcwCiAjLCBjLWZvcm1hdAogbXNnaWQgImRpc3BsYWNlbWVudCB0byBkZWZpbmVkIHN5bWJvbCAlcyBvdmVyZmxvd3MgMTItYml0IGZpZWxkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjI5NzQKKyM6IGNvbmZpZy90Yy1zaC5jOjMyNzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiZGlzcGxhY2VtZW50IHRvIHVuZGVmaW5lZCBzeW1ib2wgJXMgb3ZlcmZsb3dzIDEyLWJpdCBmaWVsZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2guYzozMDUyCisjOiBjb25maWcvdGMtc2guYzozMzUyCiBtc2dpZCAiZGlzcGxhY2VtZW50IG92ZXJmbG93cyA4LWJpdCBmaWVsZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc2guYzozMDU1CisjOiBjb25maWcvdGMtc2guYzozMzU1CiAjLCBjLWZvcm1hdAogbXNnaWQgImRpc3BsYWNlbWVudCB0byBkZWZpbmVkIHN5bWJvbCAlcyBvdmVyZmxvd3MgOC1iaXQgZmllbGQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MzA1OQorIzogY29uZmlnL3RjLXNoLmM6MzM1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJkaXNwbGFjZW1lbnQgdG8gdW5kZWZpbmVkIHN5bWJvbCAlcyBvdmVyZmxvd3MgOC1iaXQgZmllbGQgIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjMwNzYKKyM6IGNvbmZpZy90Yy1zaC5jOjMzNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAib3ZlcmZsb3cgaW4gYnJhbmNoIHRvICVzOyBjb252ZXJ0ZWQgaW50byBsb25nZXIgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNoLmM6MzE1MSBjb25maWcvdGMtc2guYzozMTk5IGNvbmZpZy90Yy1zcGFyYy5jOjQxOTIKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjQyMTcKKyM6IGNvbmZpZy90Yy1zaC5jOjM0NDcgY29uZmlnL3RjLXNoLmM6MzQ5NCBjb25maWcvdGMtc3BhcmMuYzo0MjAzCisjOiBjb25maWcvdGMtc3BhcmMuYzo0MjI4CiBtc2dpZCAibWlzYWxpZ25lZCBkYXRhIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zaC5jOjM1ODUKKyM6IGNvbmZpZy90Yy1zaC5jOjM4ODQKIG1zZ2lkICJtaXNhbGlnbmVkIG9mZnNldCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoyODcKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjI5MQogbXNnaWQgIkludmFsaWQgZGVmYXVsdCBhcmNoaXRlY3R1cmUsIGJyb2tlbiBhc3NlbWJsZXIuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjI5MSBjb25maWcvdGMtc3BhcmMuYzo0OTQKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjI5NSBjb25maWcvdGMtc3BhcmMuYzo0OTgKIG1zZ2lkICJCYWQgb3Bjb2RlIHRhYmxlLCBicm9rZW4gYXNzZW1ibGVyLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzo0ODYKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjQ5MAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGFyY2hpdGVjdHVyZSAteGFyY2g9JXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6NDg4CisjOiBjb25maWcvdGMtc3BhcmMuYzo0OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBhcmNoaXRlY3R1cmUgLUElcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzo1NTUKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjU1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBjb21waWxlZCBpbiBzdXBwb3J0IGZvciAlZCBiaXQgb2JqZWN0IGZpbGUgZm9ybWF0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjU5MgotbXNnaWQgIlVucmVjb2duaXplZCBvcHRpb24gZm9sbG93aW5nIC1LIgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjYzMworIzogY29uZmlnL3RjLXNwYXJjLmM6NjM3CisjLCBjLWZvcm1hdAogbXNnaWQgIlNQQVJDIG9wdGlvbnM6XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6NjYyCisjOiBjb25maWcvdGMtc3BhcmMuYzo2NjYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlx0XHRcdHNwZWNpZnkgdmFyaWFudCBvZiBTUEFSQyBhcmNoaXRlY3R1cmVcbiIKQEAgLTgzNzAsMzQgKzg4MTUsMzggQEAKICItbm8tcmVsYXhcdFx0YXZvaWQgY2hhbmdpbmcgYW55IGp1bXBzIGFuZCBicmFuY2hlc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjY3MAorIzogY29uZmlnL3RjLXNwYXJjLmM6Njc0CisjLCBjLWZvcm1hdAogbXNnaWQgIi1rXHRcdFx0Z2VuZXJhdGUgUElDXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6Njc0CisjOiBjb25maWcvdGMtc3BhcmMuYzo2NzgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIi0zMlx0XHRcdGNyZWF0ZSAzMiBiaXQgb2JqZWN0IGZpbGVcbiIKICItNjRcdFx0XHRjcmVhdGUgNjQgYml0IG9iamVjdCBmaWxlXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6Njc3CisjOiBjb25maWcvdGMtc3BhcmMuYzo2ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiXHRcdFx0W2RlZmF1bHQgaXMgJWRdXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6Njc5CisjOiBjb25maWcvdGMtc3BhcmMuYzo2ODMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIi1UU09cdFx0XHR1c2UgVG90YWwgU3RvcmUgT3JkZXJpbmdcbiIKICItUFNPXHRcdFx0dXNlIFBhcnRpYWwgU3RvcmUgT3JkZXJpbmdcbiIKICItUk1PXHRcdFx0dXNlIFJlbGF4ZWQgTWVtb3J5IE9yZGVyaW5nXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6NjgzCisjOiBjb25maWcvdGMtc3BhcmMuYzo2ODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiXHRcdFx0W2RlZmF1bHQgaXMgJXNdXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6Njg1CisjOiBjb25maWcvdGMtc3BhcmMuYzo2ODkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIi1LUElDXHRcdFx0Z2VuZXJhdGUgUElDXG4iCiAiLVZcdFx0XHRwcmludCBhc3NlbWJsZXIgdmVyc2lvbiBudW1iZXJcbiIKQEAgLTg0MTAsNyArODg1OSw4IEBACiAiLXNcdFx0XHRpZ25vcmVkXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6Njk3CisjOiBjb25maWcvdGMtc3BhcmMuYzo3MDEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIi1FTFx0XHRcdGdlbmVyYXRlIGNvZGUgZm9yIGEgbGl0dGxlIGVuZGlhbiBtYWNoaW5lXG4iCiAiLUVCXHRcdFx0Z2VuZXJhdGUgY29kZSBmb3IgYSBiaWcgZW5kaWFuIG1hY2hpbmVcbiIKQEAgLTg0MTgsMzAyICs4ODY4LDI5NyBAQAogIiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucyBhbmQgbGl0dGxlIGVuZGlhbiBkYXRhLlxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjgxNworIzogY29uZmlnL3RjLXNwYXJjLmM6ODIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludGVybmFsIGVycm9yOiBsb3Npbmcgb3Bjb2RlOiBgJXMnIFwiJXNcIlxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjgzNgorIzogY29uZmlnL3RjLXNwYXJjLmM6ODQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludGVybmFsIGVycm9yOiBjYW4ndCBmaW5kIG9wY29kZSBgJXMnIGZvciBgJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6OTgyCisjOiBjb25maWcvdGMtc3BhcmMuYzo5ODcKIG1zZ2lkICJTdXBwb3J0IGZvciA2NC1iaXQgYXJpdGhtZXRpYyBub3QgY29tcGlsZWQgaW4uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjEwMjkKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjEwMzQKIG1zZ2lkICJzZXQ6IG51bWJlciBub3QgaW4gMC4uNDI5NDk2NzI5NSByYW5nZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoxMDM2CisjOiBjb25maWcvdGMtc3BhcmMuYzoxMDQxCiBtc2dpZCAic2V0OiBudW1iZXIgbm90IGluIC0yMTQ3NDgzNjQ4Li40Mjk0OTY3Mjk1IHJhbmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjEwOTYKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjExMDEKIG1zZ2lkICJzZXRzdzogbnVtYmVyIG5vdCBpbiAtMjE0NzQ4MzY0OC4uNDI5NDk2NzI5NSByYW5nZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoxMTQ1CisjOiBjb25maWcvdGMtc3BhcmMuYzoxMTUwCiBtc2dpZCAic2V0eDogdGVtcG9yYXJ5IHJlZ2lzdGVyIHNhbWUgYXMgZGVzdGluYXRpb24gcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MTIxNgorIzogY29uZmlnL3RjLXNwYXJjLmM6MTIyMQogbXNnaWQgInNldHg6IGlsbGVnYWwgdGVtcG9yYXJ5IHJlZ2lzdGVyIGcwIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjEzMTMKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjEzMTgKIG1zZ2lkICJGUCBicmFuY2ggaW4gZGVsYXkgc2xvdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoxMzI5CisjOiBjb25maWcvdGMtc3BhcmMuYzoxMzM0CiBtc2dpZCAiRlAgYnJhbmNoIHByZWNlZGVkIGJ5IEZQIGluc3RydWN0aW9uOyBOT1AgaW5zZXJ0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MTM2OQorIzogY29uZmlnL3RjLXNwYXJjLmM6MTM3NAogbXNnaWQgImZhaWxlZCBzcGVjaWFsIGNhc2UgaW5zbiBzYW5pdHkgY2hlY2siCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MTQ1NworIzogY29uZmlnL3RjLXNwYXJjLmM6MTQ2MgogbXNnaWQgIjogaW52YWxpZCBtZW1iYXIgbWFzayBuYW1lIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjE0NzMKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjE0NzgKIG1zZ2lkICI6IGludmFsaWQgbWVtYmFyIG1hc2sgZXhwcmVzc2lvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoxNDc4CisjOiBjb25maWcvdGMtc3BhcmMuYzoxNDgzCiBtc2dpZCAiOiBpbnZhbGlkIG1lbWJhciBtYXNrIG51bWJlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoxNDkzCisjOiBjb25maWcvdGMtc3BhcmMuYzoxNDk4CiBtc2dpZCAiOiBpbnZhbGlkIHNpYW0gbW9kZSBleHByZXNzaW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjE0OTgKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjE1MDMKIG1zZ2lkICI6IGludmFsaWQgc2lhbSBtb2RlIG51bWJlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoxNTE0CisjOiBjb25maWcvdGMtc3BhcmMuYzoxNTE5CiBtc2dpZCAiOiBpbnZhbGlkIHByZWZldGNoIGZ1bmN0aW9uIG5hbWUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MTUyMgorIzogY29uZmlnL3RjLXNwYXJjLmM6MTUyNwogbXNnaWQgIjogaW52YWxpZCBwcmVmZXRjaCBmdW5jdGlvbiBleHByZXNzaW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjE1MjcKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjE1MzIKIG1zZ2lkICI6IGludmFsaWQgcHJlZmV0Y2ggZnVuY3Rpb24gbnVtYmVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjE1NTUgY29uZmlnL3RjLXNwYXJjLmM6MTU2NworIzogY29uZmlnL3RjLXNwYXJjLmM6MTU2MCBjb25maWcvdGMtc3BhcmMuYzoxNTcyCiBtc2dpZCAiOiB1bnJlY29nbml6YWJsZSBwcml2aWxlZ2VkIHJlZ2lzdGVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjE1OTEgY29uZmlnL3RjLXNwYXJjLmM6MTYxNgorIzogY29uZmlnL3RjLXNwYXJjLmM6MTU5NiBjb25maWcvdGMtc3BhcmMuYzoxNjIxCiBtc2dpZCAiOiB1bnJlY29nbml6YWJsZSB2OWEgb3IgdjliIGFuY2lsbGFyeSBzdGF0ZSByZWdpc3RlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoxNTk2CisjOiBjb25maWcvdGMtc3BhcmMuYzoxNjAxCiBtc2dpZCAiOiByZCBvbiB3cml0ZSBvbmx5IGFuY2lsbGFyeSBzdGF0ZSByZWdpc3RlciIKIG1zZ3N0ciAiIgogCiAjLiAlc3lzX3RpY2sgYW5kICVzeXNfdGlja19jbXByIGFyZSB2OWJub3R2OWEKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjE2MDQKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjE2MDkKIG1zZ2lkICI6IHVucmVjb2duaXphYmxlIHY5YSBhbmNpbGxhcnkgc3RhdGUgcmVnaXN0ZXIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MTY0MAorIzogY29uZmlnL3RjLXNwYXJjLmM6MTY0NQogbXNnaWQgIjogYXNyIG51bWJlciBtdXN0IGJlIGJldHdlZW4gMTYgYW5kIDMxIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjE2NDgKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjE2NTMKIG1zZ2lkICI6IGFzciBudW1iZXIgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDMxIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjE2NTgKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjE2NjMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiOiBleHBlY3RpbmcgJWFzck4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MTg0MCBjb25maWcvdGMtc3BhcmMuYzoxODc4IGNvbmZpZy90Yy1zcGFyYy5jOjIyNzkKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjIzMTUKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjE4NDUgY29uZmlnL3RjLXNwYXJjLmM6MTg4MyBjb25maWcvdGMtc3BhcmMuYzoyMjkwCisjOiBjb25maWcvdGMtc3BhcmMuYzoyMzI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIklsbGVnYWwgb3BlcmFuZHM6ICUlJXMgcmVxdWlyZXMgYXJndW1lbnRzIGluICgpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjE4NDYKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjE4NTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIklsbGVnYWwgb3BlcmFuZHM6ICUlJXMgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBvdGhlciByZWxvY3MgaW4gdGhlIGluc24gIgogIigpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjE4NTcKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjE4NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiSWxsZWdhbCBvcGVyYW5kczogJSUlcyBjYW4gYmUgb25seSB1c2VkIHdpdGggY2FsbCBfX3Rsc19nZXRfYWRkciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoyMDY0CisjOiBjb25maWcvdGMtc3BhcmMuYzoyMDY5CiBtc2dpZCAiZGV0ZWN0ZWQgZ2xvYmFsIHJlZ2lzdGVyIHVzZSBub3QgY292ZXJlZCBieSAucmVnaXN0ZXIgcHNldWRvLW9wIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjIxMzUKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjIxNDAKIG1zZ2lkICI6IFRoZXJlIGFyZSBvbmx5IDY0IGYgcmVnaXN0ZXJzOyBbMC02M10iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MjEzNyBjb25maWcvdGMtc3BhcmMuYzoyMTQ5CisjOiBjb25maWcvdGMtc3BhcmMuYzoyMTQyIGNvbmZpZy90Yy1zcGFyYy5jOjIxNjAKIG1zZ2lkICI6IFRoZXJlIGFyZSBvbmx5IDMyIGYgcmVnaXN0ZXJzOyBbMC0zMV0iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MjMyNworIzogY29uZmlnL3RjLXNwYXJjLmM6MjE1MgorbXNnaWQgIjogVGhlcmUgYXJlIG9ubHkgMzIgc2luZ2xlIHByZWNpc2lvbiBmIHJlZ2lzdGVyczsgWzAtMzFdIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjIzMzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIklsbGVnYWwgb3BlcmFuZHM6IENhbid0IGRvIGFyaXRobWV0aWNzIG90aGVyIHRoYW4gKyBhbmQgLSBpbnZvbHZpbmcgJSUlcygpIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjI0MzcKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjI0NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiSWxsZWdhbCBvcGVyYW5kczogQ2FuJ3QgYWRkIG5vbi1jb25zdGFudCBleHByZXNzaW9uIHRvICUlJXMoKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoyNDQ3CisjOiBjb25maWcvdGMtc3BhcmMuYzoyNDU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJJbGxlZ2FsIG9wZXJhbmRzOiBDYW4ndCBkbyBhcml0aG1ldGljcyBpbnZvbHZpbmcgJSUlcygpIG9mIGEgcmVsb2NhdGFibGUgIgogInN5bWJvbCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoyNDY1CisjOiBjb25maWcvdGMtc3BhcmMuYzoyNDc2CiBtc2dpZCAiOiBQQy1yZWxhdGl2ZSBvcGVyYW5kIGNhbid0IGJlIGEgY29uc3RhbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MjQ3MgorIzogY29uZmlnL3RjLXNwYXJjLmM6MjQ4MwogbXNnaWQgIjogVExTIG9wZXJhbmQgY2FuJ3QgYmUgYSBjb25zdGFudCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoyNTA1CisjOiBjb25maWcvdGMtc3BhcmMuYzoyNTE2CiBtc2dpZCAiOiBpbnZhbGlkIEFTSSBuYW1lIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjI1MTMKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjI1MjQKIG1zZ2lkICI6IGludmFsaWQgQVNJIGV4cHJlc3Npb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MjUxOAorIzogY29uZmlnL3RjLXNwYXJjLmM6MjUyOQogbXNnaWQgIjogaW52YWxpZCBBU0kgbnVtYmVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjI2MTUKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjI2MjYKIG1zZ2lkICJPUEYgaW1tZWRpYXRlIG9wZXJhbmQgb3V0IG9mIHJhbmdlICgwLTB4MWZmKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoyNjIwCisjOiBjb25maWcvdGMtc3BhcmMuYzoyNjMxCiBtc2dpZCAibm9uLWltbWVkaWF0ZSBPUEYgb3BlcmFuZCwgaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoyNjM5CisjOiBjb25maWcvdGMtc3BhcmMuYzoyNjUwCiBtc2dpZCAiOiBpbnZhbGlkIGNwcmVnIG5hbWUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MjY2OAorIzogY29uZmlnL3RjLXNwYXJjLmM6MjY3OQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbGxlZ2FsIG9wZXJhbmRzJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MjcwMgorIzogY29uZmlnL3RjLXNwYXJjLmM6MjcxMwogIywgYy1mb3JtYXQKIG1zZ2lkICJhcmNoaXRlY3R1cmUgYnVtcGVkIGZyb20gXCIlc1wiIHRvIFwiJXNcIiBvbiBcIiVzXCIiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MjczOAorIzogY29uZmlnL3RjLXNwYXJjLmM6Mjc0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJBcmNoaXRlY3R1cmUgbWlzbWF0Y2ggb24gXCIlc1wiLiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzoyNzM5CisjOiBjb25maWcvdGMtc3BhcmMuYzoyNzUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAoUmVxdWlyZXMgJXM7IHJlcXVlc3RlZCBhcmNoaXRlY3R1cmUgaXMgJXMuKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzozMzI1CisjOiBjb25maWcvdGMtc3BhcmMuYzozMzM2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCBvciB1bmhhbmRsZWQgcmVsb2NhdGlvbiB0eXBlOiAweCUwMngiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MzQ4MAotIywgYy1mb3JtYXQKLW1zZ2lkICJpbnRlcm5hbCBlcnJvcjogY2FuJ3QgZXhwb3J0IHJlbG9jIHR5cGUgJWQgKGAlcycpIgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjM2NDQKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjM2NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQlNTIGxlbmd0aCAoJWQuKSA8MCEgSWdub3JlZC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6MzY1NgorIzogY29uZmlnL3RjLXNwYXJjLmM6MzY2NwogbXNnaWQgImJhZCAucmVzZXJ2ZSBzZWdtZW50IC0tIGV4cGVjdGVkIEJTUyBzZWdtZW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjM2NzMgcmVhZC5jOjIwNDgKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjM2ODQKIG1zZ2lkICJtaXNzaW5nIGFsaWdubWVudCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzozNjg0IGNvbmZpZy90Yy1zcGFyYy5jOjM4MzUKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjM2OTUgY29uZmlnL3RjLXNwYXJjLmM6Mzg0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJhbGlnbm1lbnQgdG9vIGxhcmdlOyBhc3N1bWluZyAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzozNjkwIGNvbmZpZy90Yy1zcGFyYy5jOjM4NDEKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjM3MDEgY29uZmlnL3RjLXNwYXJjLmM6Mzg1MgogbXNnaWQgIm5lZ2F0aXZlIGFsaWdubWVudCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzozNzAwIGNvbmZpZy90Yy1zcGFyYy5jOjM4NjQgcmVhZC5jOjEyNTEgcmVhZC5jOjIwNjQKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjM3MTEgY29uZmlnL3RjLXNwYXJjLmM6Mzg3NSByZWFkLmM6MTIyNiByZWFkLmM6MjAxMgogbXNnaWQgImFsaWdubWVudCBub3QgYSBwb3dlciBvZiAyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjM3NzggY29uZmlnL3RjLXY4NTAuYzoyMzMKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjM3ODkgY29uZmlnL3RjLXY4NTAuYzoyMzMKIG1zZ2lkICJFeHBlY3RlZCBjb21tYSBhZnRlciBzeW1ib2wtbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzozNzg4IHJlYWQuYzoxMzkyCisjOiBjb25maWcvdGMtc3BhcmMuYzozNzk5CiAjLCBjLWZvcm1hdAogbXNnaWQgIi5DT01Nb24gbGVuZ3RoICglbHUpIG91dCBvZiByYW5nZSBpZ25vcmVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjM4MDcgY29uZmlnL3RjLXY4NTAuYzoyNjYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiTGVuZ3RoIG9mIC5jb21tIFwiJXNcIiBpcyBhbHJlYWR5ICVsZC4gTm90IGNoYW5nZWQgdG8gJWQuIgotbXNnc3RyICIiCi0KLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjM4MjEKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjM4MzIKIG1zZ2lkICJFeHBlY3RlZCBjb21tYSBhZnRlciBjb21tb24gbGVuZ3RoIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjQwNjIgY29uZmlnL3RjLXNwYXJjLmM6NDA3MgorIzogY29uZmlnL3RjLXNwYXJjLmM6NDA3MyBjb25maWcvdGMtc3BhcmMuYzo0MDgzCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZ2lzdGVyIHN5bnRheCBpcyAucmVnaXN0ZXIgJSVnWzIzNjddLHsjc2NyYXRjaHxzeW1ib2xuYW1lfCNpZ25vcmV9IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjQwOTAKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjQxMDEKIG1zZ2lkICJyZWRlZmluaXRpb24gb2YgZ2xvYmFsIHJlZ2lzdGVyIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjQxMDEKKyM6IGNvbmZpZy90Yy1zcGFyYy5jOjQxMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVnaXN0ZXIgc3ltYm9sICVzIGFscmVhZHkgZGVmaW5lZC4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6NDMxMAorIzogY29uZmlnL3RjLXNwYXJjLmM6NDMyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbGxlZ2FsIG9wZXJhbmRzOiAlJXJfcGx0IGluICVkLWJ5dGUgZGF0YSBmaWVsZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzo0MzIwCisjOiBjb25maWcvdGMtc3BhcmMuYzo0MzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIklsbGVnYWwgb3BlcmFuZHM6ICUlcl90bHNfZHRwb2ZmIGluICVkLWJ5dGUgZGF0YSBmaWVsZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtc3BhcmMuYzo0MzU3CisjOiBjb25maWcvdGMtc3BhcmMuYzo0MzY4CiAjLCBjLWZvcm1hdAogbXNnaWQgIklsbGVnYWwgb3BlcmFuZHM6IE9ubHkgJSVyXyVzJWQgYWxsb3dlZCBpbiAlZC1ieXRlIGRhdGEgZmllbGRzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy1zcGFyYy5jOjQzNjUgY29uZmlnL3RjLXNwYXJjLmM6NDM5NiBjb25maWcvdGMtc3BhcmMuYzo0NDA1CisjOiBjb25maWcvdGMtc3BhcmMuYzo0Mzc2IGNvbmZpZy90Yy1zcGFyYy5jOjQ0MDcgY29uZmlnL3RjLXNwYXJjLmM6NDQxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJJbGxlZ2FsIG9wZXJhbmRzOiAlJXJfJXMlZCByZXF1aXJlcyBhcmd1bWVudHMgaW4gKCkiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXNwYXJjLmM6NDQxNAorIzogY29uZmlnL3RjLXNwYXJjLmM6NDQyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbGxlZ2FsIG9wZXJhbmRzOiBnYXJiYWdlIGFmdGVyICUlcl8lcyVkKCkiCiBtc2dzdHIgIiIKQEAgLTg3MzAsMjkgKzkxNzUsMzAgQEAKIG1zZ2lkICJUaGUgLWEgb3B0aW9uIGRvZXNuJ3QgZXhpc3QuIChEZXNwaXRlIHdoYXQgdGhlIG1hbiBwYWdlIHNheXMhIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy10YWhvZS5jOjQwNyBjb25maWcvdGMtdmF4LmM6MzI4NQorIzogY29uZmlnL3RjLXRhaG9lLmM6NDA3IGNvbmZpZy90Yy12YXguYzozMjg5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRpc3BsYWNlbWVudCBsZW5ndGggJXMgaWdub3JlZCEiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXRhaG9lLmM6NDExIGNvbmZpZy90Yy12YXguYzozMjc3CisjOiBjb25maWcvdGMtdGFob2UuYzo0MTEgY29uZmlnL3RjLXZheC5jOjMyODEKIG1zZ2lkICJTWU1CT0wgVEFCTEUgbm90IGltcGxlbWVudGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy10YWhvZS5jOjQxNSBjb25maWcvdGMtdmF4LmM6MzI4MQorIzogY29uZmlnL3RjLXRhaG9lLmM6NDE1IGNvbmZpZy90Yy12YXguYzozMjg1CiBtc2dpZCAiVE9LRU4gVFJBQ0Ugbm90IGltcGxlbWVudGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy10YWhvZS5jOjQxOSBjb25maWcvdGMtdmF4LmM6MzI4OQorIzogY29uZmlnL3RjLXRhaG9lLmM6NDE5IGNvbmZpZy90Yy12YXguYzozMjkzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkkgZG9uJ3QgbmVlZCBvciB1c2UgdGVtcC4gZmlsZSBcIiVzXCIuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy10YWhvZS5jOjQyMyBjb25maWcvdGMtdmF4LmM6MzI5MworIzogY29uZmlnL3RjLXRhaG9lLmM6NDIzIGNvbmZpZy90Yy12YXguYzozMjk3CiBtc2dpZCAiSSBkb24ndCB1c2UgYW4gaW50ZXJwYXNzIGZpbGUhIC1WIGlnbm9yZWQiCiBtc2dzdHIgIiIKIAogIzogY29uZmlnL3RjLXRhaG9lLmM6NDM3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUYWhvZSBvcHRpb25zOlxuIgogIi1hXHRcdFx0aWdub3JlZFxuIgpAQCAtODk1NSwyNiArOTQwMSwzMiBAQAogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy10aWM1NHguYzozNDkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiQzU0eC1zcGVjaWZpYyBjb21tYW5kIGxpbmUgIG9wdGlvbnM6XG4iCiBtc2dzdHIgIiIKIAogIzogY29uZmlnL3RjLXRpYzU0eC5jOjM1MAorIywgYy1mb3JtYXQKIG1zZ2lkICItbWZhci1tb2RlIHwgLW1mICAgICAgICAgIFVzZSBleHRlbmRlZCBhZGRyZXNzaW5nXG4iCiBtc2dzdHIgIiIKIAogIzogY29uZmlnL3RjLXRpYzU0eC5jOjM1MQorIywgYy1mb3JtYXQKIG1zZ2lkICItbWNwdT08Q1BVIHZlcnNpb24+ICAgICAgIFNwZWNpZnkgdGhlIENQVSB2ZXJzaW9uXG4iCiBtc2dzdHIgIiIKIAogIzogY29uZmlnL3RjLXRpYzU0eC5jOjM1MworIywgYy1mb3JtYXQKIG1zZ2lkICItbWNvZmYtdmVyc2lvbj17MHwxfDJ9ICAgIFNlbGVjdCBDT0ZGIHZlcnNpb25cbiIKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMtdGljNTR4LmM6MzU1CisjLCBjLWZvcm1hdAogbXNnaWQgIi1tZXJyb3JzLXRvLWZpbGUgPGZpbGVuYW1lPlxuIgogbXNnc3RyICIiCiAKICM6IGNvbmZpZy90Yy10aWM1NHguYzozNTYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiLW1lIDxmaWxlbmFtZT4gICAgICAgICAgICBSZWRpcmVjdCBlcnJvcnMgdG8gYSBmaWxlXG4iCiBtc2dzdHIgIiIKIApAQCAtOTQ4NywxNTcgKzk5MzksMTc0IEBACiBtc2dpZCAiLkNPTU1vbiBsZW5ndGggKCVkLikgPCAwISBJZ25vcmVkLiIKIG1zZ3N0ciAiIgogCisjOiBjb25maWcvdGMtdjg1MC5jOjI2NgorIywgYy1mb3JtYXQKK21zZ2lkICJMZW5ndGggb2YgLmNvbW0gXCIlc1wiIGlzIGFscmVhZHkgJWxkLiBOb3QgY2hhbmdlZCB0byAlZC4iCittc2dzdHIgIiIKKwogIzogY29uZmlnL3RjLXY4NTAuYzoyOTMKIG1zZ2lkICJDb21tb24gYWxpZ25tZW50IG5lZ2F0aXZlOyAwIGFzc3VtZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXY4NTAuYzo5NzQKKyM6IGNvbmZpZy90Yy12ODUwLmM6OTc2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gb3BlcmFuZCBzaGlmdDogJXhcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjk3NQorIzogY29uZmlnL3RjLXY4NTAuYzo5NzcKIG1zZ2lkICJpbnRlcm5hbCBmYWlsdXJlIGluIHBhcnNlX3JlZ2lzdGVyX2xpc3QiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXY4NTAuYzo5OTEKKyM6IGNvbmZpZy90Yy12ODUwLmM6OTkzCiBtc2dpZCAiY29uc3RhbnQgZXhwcmVzc2lvbiBvciByZWdpc3RlciBsaXN0IGV4cGVjdGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12ODUwLmM6OTk2IGNvbmZpZy90Yy12ODUwLmM6MTAwOSBjb25maWcvdGMtdjg1MC5jOjEwMjgKKyM6IGNvbmZpZy90Yy12ODUwLmM6OTk4IGNvbmZpZy90Yy12ODUwLmM6MTAxMSBjb25maWcvdGMtdjg1MC5jOjEwMzAKIG1zZ2lkICJoaWdoIGJpdHMgc2V0IGluIHJlZ2lzdGVyIGxpc3QgZXhwcmVzc2lvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjEwNjcgY29uZmlnL3RjLXY4NTAuYzoxMTMwCisjOiBjb25maWcvdGMtdjg1MC5jOjEwNjkgY29uZmlnL3RjLXY4NTAuYzoxMTMyCiBtc2dpZCAiaWxsZWdhbCByZWdpc3RlciBpbmNsdWRlZCBpbiBsaXN0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12ODUwLmM6MTA3MworIzogY29uZmlnL3RjLXY4NTAuYzoxMDc1CiBtc2dpZCAic3lzdGVtIHJlZ2lzdGVycyBjYW5ub3QgYmUgaW5jbHVkZWQgaW4gbGlzdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjEwNzgKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTA4MAogbXNnaWQgIlBTVyBjYW5ub3QgYmUgaW5jbHVkZWQgaW4gbGlzdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjEwODUKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTA4NwogbXNnaWQgIkhpZ2ggdmFsdWUgc3lzdGVtIHJlZ2lzdGVycyBjYW5ub3QgYmUgaW5jbHVkZWQgaW4gbGlzdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjExMDkKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTExMQogbXNnaWQgInNlY29uZCByZWdpc3RlciBzaG91bGQgZm9sbG93IGRhc2ggaW4gcmVnaXN0ZXIgbGlzdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjExNTQKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTE1NgorIywgYy1mb3JtYXQKIG1zZ2lkICIgVjg1MCBvcHRpb25zOlxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12ODUwLmM6MTE1NQorIzogY29uZmlnL3RjLXY4NTAuYzoxMTU3CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLW13YXJuLXNpZ25lZC1vdmVyZmxvdyAgICBXYXJuIGlmIHNpZ25lZCBpbW1lZGlhdGUgdmFsdWVzIG92ZXJmbG93XG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXY4NTAuYzoxMTU2CisjOiBjb25maWcvdGMtdjg1MC5jOjExNTgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLW13YXJuLXVuc2lnbmVkLW92ZXJmbG93ICBXYXJuIGlmIHVuc2lnbmVkIGltbWVkaWF0ZSB2YWx1ZXMgb3ZlcmZsb3dcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjExNTcKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTE1OQorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC1tdjg1MCAgICAgICAgICAgICAgICAgICAgVGhlIGNvZGUgaXMgdGFyZ2V0ZWQgYXQgdGhlIHY4NTBcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjExNTgKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTE2MAorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC1tdjg1MGUgICAgICAgICAgICAgICAgICAgVGhlIGNvZGUgaXMgdGFyZ2V0ZWQgYXQgdGhlIHY4NTBlXG4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXY4NTAuYzoxMTU5CisjOiBjb25maWcvdGMtdjg1MC5jOjExNjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAtbXY4NTBlMSAgICAgICAgICAgICAgICAgIFRoZSBjb2RlIGlzIHRhcmdldGVkIGF0IHRoZSB2ODUwZTFcbiIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMtdjg1MC5jOjExNjIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLW12ODUwYW55ICAgICAgICAgICAgICAgICBUaGUgY29kZSBpcyBnZW5lcmljLCBkZXNwaXRlIGFueSBwcm9jZXNzb3IgIgogInNwZWNpZmljIGluc3RydWN0aW9uc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12ODUwLmM6MTE2MAorIzogY29uZmlnL3RjLXY4NTAuYzoxMTYzCisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLW1yZWxheCAgICAgICAgICAgICAgICAgICBFbmFibGUgcmVsYXhhdGlvblxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12ODUwLmM6MTE3MiBjb25maWcvdGMtdjg1MC5jOjEyMDcKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTE3NSBjb25maWcvdGMtdjg1MC5jOjEyMTYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBjb21tYW5kIGxpbmUgb3B0aW9uOiAtJWMlc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12ODUwLmM6MTM0OAorIzogY29uZmlnL3RjLXY4NTAuYzoxMzY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBkZXRlcm1pbmUgZGVmYXVsdCB0YXJnZXQgcHJvY2Vzc29yIGZyb20gc3RyaW5nOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjEzODUKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTQwMgogbXNnaWQgImN0b2ZmKCkgcmVsb2NhdGlvbiB1c2VkIG9uIGFuIGluc3RydWN0aW9uIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgaXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXY4NTAuYzoxNDExCisjOiBjb25maWcvdGMtdjg1MC5jOjE0MjgKIG1zZ2lkICJzZGFvZmYoKSByZWxvY2F0aW9uIHVzZWQgb24gYW4gaW5zdHJ1Y3Rpb24gd2hpY2ggZG9lcyBub3Qgc3VwcG9ydCBpdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjE0MzcKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTQ1NAogbXNnaWQgInpkYW9mZigpIHJlbG9jYXRpb24gdXNlZCBvbiBhbiBpbnN0cnVjdGlvbiB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IGl0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12ODUwLmM6MTQ3NAorIzogY29uZmlnL3RjLXY4NTAuYzoxNDkxCiBtc2dpZCAidGRhb2ZmKCkgcmVsb2NhdGlvbiB1c2VkIG9uIGFuIGluc3RydWN0aW9uIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgaXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXY4NTAuYzoxNjk4CisjOiBjb25maWcvdGMtdjg1MC5jOjE3MTUKIG1zZ2lkICJUYXJnZXQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBpbnN0cnVjdGlvbi4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXY4NTAuYzoxNzg4IGNvbmZpZy90Yy12ODUwLmM6MTgxNyBjb25maWcvdGMtdjg1MC5jOjIwMDUKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTgwNSBjb25maWcvdGMtdjg1MC5jOjE4MzQgY29uZmlnL3RjLXY4NTAuYzoyMDIyCiBtc2dpZCAiaW1tZWRpYXRlIG9wZXJhbmQgaXMgdG9vIGxhcmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12ODUwLmM6MTc5OQorIzogY29uZmlnL3RjLXY4NTAuYzoxODE2CiBtc2dpZCAiQUFBUkcgLT4gdW5oYW5kbGVkIGNvbnN0YW50IHJlbG9jIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12ODUwLmM6MTg0MworIzogY29uZmlnL3RjLXY4NTAuYzoxODYwCiBtc2dpZCAiaW52YWxpZCByZWdpc3RlciBuYW1lIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12ODUwLmM6MTg0OAorIzogY29uZmlnL3RjLXY4NTAuYzoxODY1CiBtc2dpZCAicmVnaXN0ZXIgcjAgY2Fubm90IGJlIHVzZWQgaGVyZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjE4NjAKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTg3NwogbXNnaWQgImludmFsaWQgc3lzdGVtIHJlZ2lzdGVyIG5hbWUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXY4NTAuYzoxODczCisjOiBjb25maWcvdGMtdjg1MC5jOjE4OTAKIG1zZ2lkICJleHBlY3RlZCBFUCByZWdpc3RlciIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjE4OTAKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTkwNwogbXNnaWQgImludmFsaWQgY29uZGl0aW9uIGNvZGUgbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjE5MTEgY29uZmlnL3RjLXY4NTAuYzoxOTE1CisjOiBjb25maWcvdGMtdjg1MC5jOjE5MjggY29uZmlnL3RjLXY4NTAuYzoxOTMyCiBtc2dpZCAiY29uc3RhbnQgdG9vIGJpZyB0byBmaXQgaW50byBpbnN0cnVjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjE5NjgKKyM6IGNvbmZpZy90Yy12ODUwLmM6MTk4NQogbXNnaWQgInN5bnRheCBlcnJvcjogdmFsdWUgaXMgbWlzc2luZyBiZWZvcmUgdGhlIHJlZ2lzdGVyIG5hbWUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXY4NTAuYzoxOTcwCisjOiBjb25maWcvdGMtdjg1MC5jOjE5ODcKIG1zZ2lkICJzeW50YXggZXJyb3I6IHJlZ2lzdGVyIG5vdCBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjE5ODQKKyM6IGNvbmZpZy90Yy12ODUwLmM6MjAwMQogbXNnaWQgInN5bnRheCBlcnJvcjogc3lzdGVtIHJlZ2lzdGVyIG5vdCBleHBlY3RlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtdjg1MC5jOjE5ODkKKyM6IGNvbmZpZy90Yy12ODUwLmM6MjAwNgogbXNnaWQgInN5bnRheCBlcnJvcjogY29uZGl0aW9uIGNvZGUgbm90IGV4cGVjdGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12ODUwLmM6MjAzMAorIzogY29uZmlnL3RjLXY4NTAuYzoyMDQ3CiBtc2dpZCAiaW52YWxpZCBvcGVyYW5kIgogbXNnc3RyICIiCiAKQEAgLTk4MTgsNyArMTAyODcsOCBAQAogbXNnaWQgIlBDIHBhcnQgb2Ygb3BlcmFuZCB1bnByZWRpY3RhYmxlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12YXguYzozMzQ1CisjOiBjb25maWcvdGMtdmF4LmM6MzM1NAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVkFYIG9wdGlvbnM6XG4iCiAiLWQgTEVOR1RIXHRcdGlnbm9yZWRcbiIKQEAgLTk4MjksNyArMTAyOTksOCBAQAogIi1WXHRcdFx0aWdub3JlZFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy12YXguYzozMzU0CisjOiBjb25maWcvdGMtdmF4LmM6MzM2MworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVk1TIG9wdGlvbnM6XG4iCiAiLStcdFx0XHRoYXNoIGVuY29kZSBuYW1lcyBsb25nZXIgdGhhbiAzMSBjaGFyYWN0ZXJzXG4iCkBAIC05ODQ5LDYgKzEwMzIwLDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBjb25maWcvdGMteHN0b3JteTE2LmM6ODAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIFhTVE9STVkxNiBzcGVjaWZpYyBjb21tYW5kIGxpbmUgb3B0aW9uczpcbiIKIG1zZ3N0ciAiIgogCkBAIC05ODU3LDUyMCArMTAzMjksNTM5IEBACiBtc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNhbid0IGluc3RhbGwgZml4IGZvciByZWxvYyB0eXBlICVkIChgJXMnKSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6OTI5CisjOiBjb25maWcvdGMteHRlbnNhLmM6OTI4CiBtc2dpZCAiJy0tZGVuc2l0eScgb3B0aW9uIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBYdGVuc2EgY29uZmlndXJhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MTAzMAorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjEwMjkKIG1zZ2lkICIiCiAiJy0tbGl0ZXJhbC1zZWN0aW9uLW5hbWUnIGlzIGRlcHJlY2F0ZWQ7IHVzZSAnLS1yZW5hbWUtc2VjdGlvbiAuIgogImxpdGVyYWw9TkVXTkFNRSciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjEwMzYKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzoxMDM1CiBtc2dpZCAiIgogIictLXRleHQtc2VjdGlvbi1uYW1lJyBpcyBkZXByZWNhdGVkOyB1c2UgJy0tcmVuYW1lLXNlY3Rpb24gLnRleHQ9TkVXTkFNRSciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjEwNDIKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzoxMDQxCiBtc2dpZCAiIgogIictLWRhdGEtc2VjdGlvbi1uYW1lJyBpcyBkZXByZWNhdGVkOyB1c2UgJy0tcmVuYW1lLXNlY3Rpb24gLmRhdGE9TkVXTkFNRSciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjEwNDgKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzoxMDQ3CiBtc2dpZCAiJy0tYnNzLXNlY3Rpb24tbmFtZScgaXMgZGVwcmVjYXRlZDsgdXNlICctLXJlbmFtZS1zZWN0aW9uIC5ic3M9TkVXTkFNRSciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjExODYKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzoxMTg1CiBtc2dpZCAidW5tYXRjaGVkIGVuZCBkaXJlY3RpdmUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjEyMTUKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzoxMjE0CiBtc2dpZCAiLmJlZ2luIGRpcmVjdGl2ZSB3aXRoIG5vIG1hdGNoaW5nIC5lbmQgZGlyZWN0aXZlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzoxMjU5CisjOiBjb25maWcvdGMteHRlbnNhLmM6MTI1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJkaXJlY3RpdmUgJXMgY2FuJ3QgYmUgbmVnYXRlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MTI2NQorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjEyNjQKIG1zZ2lkICJ1bmtub3duIGRpcmVjdGl2ZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MTMwMAorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjEzMDgKIG1zZ2lkICJjYW5ub3Qgc2V0IGxpdGVyYWxfcHJlZml4IGluc2lkZSBsaXRlcmFsIGZyYWdtZW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzoxMzM3IGNvbmZpZy90Yy14dGVuc2EuYzoxMzcxCisjOiBjb25maWcvdGMteHRlbnNhLmM6MTM0NSBjb25maWcvdGMteHRlbnNhLmM6MTM4MQogbXNnaWQgIlh0ZW5zYSBkZW5zaXR5IG9wdGlvbiBub3Qgc3VwcG9ydGVkOyBpZ25vcmVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzoxMzgzCisjOiBjb25maWcvdGMteHRlbnNhLmM6MTM5MwogIywgYy1mb3JtYXQKIG1zZ2lkICJkb2VzIG5vdCBtYXRjaCBiZWdpbiAlcyVzIGF0ICVzOiVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzoxNDI5CisjOiBjb25maWcvdGMteHRlbnNhLmM6MTQ0NQogbXNnaWQgIi5saXRlcmFsX3Bvc2l0aW9uIGluc2lkZSBsaXRlcmFsIGRpcmVjdGl2ZTsgaWdub3JpbmciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjE0ODAKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzoxNDY4Cittc2dpZCAiLmxpdGVyYWwgbm90IGFsbG93ZWQgaW5zaWRlIC5iZWdpbiBsaXRlcmFsIHJlZ2lvbiIKK21zZ3N0ciAiIgorCisjOiBjb25maWcvdGMteHRlbnNhLmM6MTUwMgogbXNnaWQgImV4cGVjdGVkIGNvbW1hIG9yIGNvbG9uIGFmdGVyIHN5bWJvbCBuYW1lOyByZXN0IG9mIGxpbmUgaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MTY1NSBjb25maWcvdGMteHRlbnNhLmM6MTY3MgorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjE2MzggY29uZmlnL3RjLXh0ZW5zYS5jOjE2NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIHJlZ2lzdGVyIG5hbWU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzoxNjYxCisjOiBjb25maWcvdGMteHRlbnNhLmM6MTY0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgcmVnaXN0ZXIgbnVtYmVyOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MTcyNAorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjE3MDQKIG1zZ2lkICJyZWdpc3RlciBudW1iZXIgb3V0IG9mIHJhbmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzoxODM2CisjOiBjb25maWcvdGMteHRlbnNhLmM6MTgxNgogbXNnaWQgInRvbyBtYW55IGFyZ3VtZW50cyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MTkyMgorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjE5MDIKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90IGVub3VnaCBvcGVyYW5kcyAoJWQpIGZvciAnJXMnOyBleHBlY3RlZCAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MTkyOQorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjE5MDkKICMsIGMtZm9ybWF0CiBtc2dpZCAidG9vIG1hbnkgb3BlcmFuZHMgKCVkKSBmb3IgJyVzJzsgZXhwZWN0ZWQgJWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjE5NzMKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzoxOTUzCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZ2lzdGVyIG51bWJlciBmb3IgYCVzJyBpcyBub3QgYSBjb25zdGFudCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MTk3OAorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjE5NTgKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVnaXN0ZXIgbnVtYmVyICglbGQpIGZvciBgJXMnIGlzIG91dCBvZiByYW5nZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MjQ2NAorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjI0NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAib3BlcmFuZCAlZCBub3QgcHJvcGVybHkgYWxpZ25lZCBmb3IgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MjQ2OQorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjI0NDkKICMsIGMtZm9ybWF0CiBtc2dpZCAib3BlcmFuZCAlZCBub3QgaW4gaW1tZWRpYXRlIHRhYmxlIGZvciAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzoyNDc0CisjOiBjb25maWcvdGMteHRlbnNhLmM6MjQ1NAogIywgYy1mb3JtYXQKIG1zZ2lkICJvcGVyYW5kICVkIHRvbyBsYXJnZSBmb3IgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MjQ3OQorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjI0NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAib3BlcmFuZCAlZCB0b28gc21hbGwgZm9yICclcyciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjI0ODQKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzoyNDY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9wZXJhbmQgJWQgaXMgaW52YWxpZCBmb3IgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MzcxNgorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjM1NDAKIG1zZ2lkICJJTlNUUl9MQUJFTF9ERUYgbm90IHN1cHBvcnRlZCB5ZXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjM3NDUKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzozNTY5CiBtc2dpZCAiY2FuJ3QgaGFuZGxlIGdlbmVyYXRpb24gb2YgbGl0ZXJhbC9sYWJlbHMgeWV0IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzozNzQ5CisjOiBjb25maWcvdGMteHRlbnNhLmM6MzU3MwogbXNnaWQgImNhbid0IGhhbmRsZSB1bmRlZmluZWQgT1AgVFlQRSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MzgxMAorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjM2MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiZm91bmQgJWQgb3BlcmFuZHMgZm9yICclcyc6ICBFeHBlY3RlZCAlZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6MzgxNworIzogY29uZmlnL3RjLXh0ZW5zYS5jOjM2NDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZm91bmQgdG9vIG1hbnkgKCVkKSBvcGVyYW5kcyBmb3IgJyVzJzogIEV4cGVjdGVkICVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo0MDcyCisjOiBjb25maWcvdGMteHRlbnNhLmM6MzkyNwogbXNnaWQgImluc3RydWN0aW9uIGZyYWdtZW50IG1heSBjb250YWluIGRhdGEiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjQxMDUKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzozOTYyCiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb3BlcmFuZCAlZCBvbiAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo0MTE2CisjOiBjb25maWcvdGMteHRlbnNhLmM6Mzk3MwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGV4cHJlc3Npb24gZm9yIG9wZXJhbmQgJWQgb24gJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NDE3NworIzogY29uZmlnL3RjLXh0ZW5zYS5jOjQwMzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCByZWxvY2F0aW9uIG9wZXJhbmQgJWkgb24gJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NDE4NgorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjQwNDMKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5kZWZpbmVkIHN5bWJvbCBmb3Igb3Bjb2RlIFwiJXNcIi4iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjQyODAKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo0MTM3CiBtc2dpZCAiaW5zdHJ1Y3Rpb24gd2l0aCBjb25zdGFudCBvcGVyYW5kcyBkb2VzIG5vdCBmaXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjQyODkKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo0MTQ2CiBtc2dpZCAiaW5zdHJ1Y3Rpb24gd2l0aCBjb25zdGFudCBvcGVyYW5kcyBkb2VzIG5vdCBmaXQgd2l0aG91dCB3aWRlbmluZyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NDM3OQorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjQyMzYKIG1zZ2lkICJpbnN0cnVjdGlvbidzIGNvbnN0YW50IG9wZXJhbmRzIGRvIG5vdCBmaXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjQ3MTgKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo0NTk0CiBtc2dpZCAib3Bjb2RlICdOT1AuTicgdW5hdmFpbGFibGUgaW4gdGhpcyBjb25maWd1cmF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo0NzI3CisjOiBjb25maWcvdGMteHRlbnNhLmM6NDYwMwogbXNnaWQgIm9wY29kZSAnT1InIHVuYXZhaWxhYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NDczNworIzogY29uZmlnL3RjLXh0ZW5zYS5jOjQ2MTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCAlZC1ieXRlIE5PUCByZXF1ZXN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjQ3NTcKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo0NjMzCiBtc2dpZCAiZ2V0X2V4cGFuZGVkX2xvb3Bfb2Zmc2V0OiB1bmRlZmluZWQgb3Bjb2RlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo0NzY0CisjOiBjb25maWcvdGMteHRlbnNhLmM6NDY0MAogbXNnaWQgImdldF9leHBhbmRlZF9sb29wX29mZnNldDogaW52YWxpZCBvcGNvZGUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjQ4ODAKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo0NzYwCiBtc2dpZCAiaW52YWxpZCBsYXN0IGluc3RydWN0aW9uIGZvciBhIHplcm8tb3ZlcmhlYWQgbG9vcCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NDkzNQorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjQ4MjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGFzc2VtYmxlICclcycgaW50byBhIGxpdGVyYWwgZnJhZ21lbnQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjQ5MzcKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo0ODI1CiBtc2dpZCAiLi4uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo1MDcxCisjOiBjb25maWcvdGMteHRlbnNhLmM6NDk1MQogbXNnaWQgImVudHJ5IGluc3RydWN0aW9uIHdpdGggc3RhY2sgZGVjcmVtZW50IDwgMTYiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjUwNzUKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo0OTU1CiBtc2dpZCAiZW50cnkgaW5zdHJ1Y3Rpb24gd2l0aCBub24tY29uc3RhbnQgZGVjcmVtZW50IgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo1MTUyCisjOiBjb25maWcvdGMteHRlbnNhLmM6NTAzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmRlZmluZWQgQCBzdWZmaXggJyVzJywgZXhwZWN0ZWQgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NTI0MgorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjUxMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBvcGVyYW5kIHJlbG9jYXRpb24gZm9yICclcycgaW5zdHJ1Y3Rpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjUyNDUKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo1MTMwCiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgcmVsb2NhdGlvbiBmb3Igb3BlcmFuZCAlZCBpbiAnJXMnIGluc3RydWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo1MjUyCisjOiBjb25maWcvdGMteHRlbnNhLmM6NTEzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHJlbG9jYXRpb24gdHlwZSAlZCBmb3IgJXMgaW5zdHJ1Y3Rpb24iCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjUyNjEKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo1MTQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgcmVsb2NhdGlvbiBmb3Igb3BlcmFuZCAlZCBvZiAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo1MjY5CisjOiBjb25maWcvdGMteHRlbnNhLmM6NTE1NAogIywgYy1mb3JtYXQKIG1zZ2lkICJub24tUENSRUwgcmVsb2NhdGlvbiBvcGVyYW5kICVkIGZvciAnJXMnOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NTMyOCBjb25maWcvdGMteHRlbnNhLmM6NTM2NgorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjUyMTMgY29uZmlnL3RjLXh0ZW5zYS5jOjUyNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5oYW5kbGVkIGxvY2FsIHJlbG9jYXRpb24gZml4ICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo1MzUwCisjOiBjb25maWcvdGMteHRlbnNhLmM6NTIzNQogbXNnaWQgInVuZGVjb2RhYmxlIEZJWCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NTQ3OAorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjUzNjMKIG1zZ2lkICJlbWl0dGluZyBzaW1wbGlmaWNhdGlvbiByZWxvY2F0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo1NDgyCisjOiBjb25maWcvdGMteHRlbnNhLmM6NTM2NwogbXNnaWQgImVtaXR0aW5nIHVua25vd24gcmVsb2NhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NTgxNAorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjU2OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZnJfdmFyICVsdSA8IGxlbmd0aCAlZDsgaWdub3JpbmciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjYwMDAgY29uZmlnL3RjLXh0ZW5zYS5jOjYwNDQKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo1ODg0IGNvbmZpZy90Yy14dGVuc2EuYzo1OTI4CiBtc2dpZCAidW5kZWNvZGFibGUgaW5zdHJ1Y3Rpb24gaW4gaW5zdHJ1Y3Rpb24gZnJhZyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NjA5MgorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjU5NzYKIG1zZ2lkICJpbnZhbGlkIGVtcHR5IGxvb3AiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjYwOTcKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo1OTgxCiBtc2dpZCAibG9vcCB0YXJnZXQgZG9lcyBub3QgZm9sbG93IGxvb3AgaW5zdHJ1Y3Rpb24gaW4gc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NjIxNQorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjYwOTkKIG1zZ2lkICJnZXRfdGV4dF9hbGlnbl9wb3dlcjogYXJndW1lbnQgdG9vIGxhcmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo2NDIwIGNvbmZpZy90Yy14dGVuc2EuYzo2NTY2CisjOiBjb25maWcvdGMteHRlbnNhLmM6NjMwNCBjb25maWcvdGMteHRlbnNhLmM6NjQ1MAogbXNnaWQgImludmFsaWQgb3Bjb2RlIGZvciBSRUxBWF9BTElHTl9ORVhUX09QQ09ERSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NjQyMSBjb25maWcvdGMteHRlbnNhLmM6NjU2NworIzogY29uZmlnL3RjLXh0ZW5zYS5jOjYzMDUgY29uZmlnL3RjLXh0ZW5zYS5jOjY0NTEKIG1zZ2lkICJjYW5ub3QgY29udGludWUiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjY0NTgKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo2MzQyCiBtc2dpZCAiZXhwZWN0ZWQgbG9vcCBvcGNvZGUgaW4gcmVsYXggYWxpZ24gbmV4dCB0YXJnZXQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjY0NzUKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo2MzU5CiBtc2dpZCAiZXhwZWN0ZWQgYWxpZ25fY29kZSBvciBSRUxBWF9BTElHTl9ORVhUX09QQ09ERSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NjU0OSBjb25maWcvdGMteHRlbnNhLmM6NjU4NyBjb25maWcvdGMteHRlbnNhLmM6NjU5MQotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjY1OTUKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo2NDMzIGNvbmZpZy90Yy14dGVuc2EuYzo2NDcxIGNvbmZpZy90Yy14dGVuc2EuYzo2NDc1CisjOiBjb25maWcvdGMteHRlbnNhLmM6NjQ3OQogbXNnaWQgImludGVybmFsIGVycm9yIGFsaWduaW5nIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo2Njc2CisjOiBjb25maWcvdGMteHRlbnNhLmM6NjU2MAogbXNnaWQgImJhZCByZWxheGF0aW9uIHN0YXRlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo2NzUyCisjOiBjb25maWcvdGMteHRlbnNhLmM6NjYzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJmcl92YXIgKCVsZCkgPCBsZW5ndGggKCVkKTsgaWdub3JpbmciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjY5MjgKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo2ODEyCiBtc2dpZCAiaW50ZXJuYWwgZXJyb3I6IHJlbGF4YXRpb24gZmFpbGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo2OTM0CisjOiBjb25maWcvdGMteHRlbnNhLmM6NjgxOAogbXNnaWQgImludGVybmFsIGVycm9yOiByZWxheGF0aW9uIHJlcXVpcmVzIHRvbyBtYW55IHN0ZXBzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo3MDU1CisjOiBjb25maWcvdGMteHRlbnNhLmM6NjkzOQogbXNnaWQgImludmFsaWQgcmVsYXhhdGlvbiBmcmFnbWVudCByZXN1bHQiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjcxMjgKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo3MDEyCiBtc2dpZCAidW5hYmxlIHRvIHdpZGVuIGluc3RydWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo3MjE1CisjOiBjb25maWcvdGMteHRlbnNhLmM6NzA5OQogbXNnaWQgIm11bHRpcGxlIGxpdGVyYWxzIGluIGV4cGFuc2lvbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NzIxOQorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjcxMDMKIG1zZ2lkICJubyByZWdpc3RlcmVkIGZyYWdtZW50IGZvciBsaXRlcmFsIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo3MjIxCisjOiBjb25maWcvdGMteHRlbnNhLmM6NzEwNQogbXNnaWQgIm51bWJlciBvZiBsaXRlcmFsIHRva2VucyAhPSAxIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo3Mjk4IGNvbmZpZy90Yy14dGVuc2EuYzo3MzA0CisjOiBjb25maWcvdGMteHRlbnNhLmM6NzE4MiBjb25maWcvdGMteHRlbnNhLmM6NzE4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlc29sdmVkIGxvb3AgdGFyZ2V0IHN5bWJvbDogJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjc0MDEKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo3Mjg1CiBtc2dpZCAibG9vcCByZWxheGF0aW9uIHNwZWNpZmljYXRpb24gZG9lcyBub3QgY29ycmVzcG9uZCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6NzQyOAorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjczMTIKIG1zZ2lkICJsb29wIHRvbyBsb25nIGZvciBMT09QIGluc3RydWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo3NDY1CisjOiBjb25maWcvdGMteHRlbnNhLmM6NzM0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGV4cHJlc3Npb24gZXZhbHVhdGlvbiB0eXBlICVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo3NzAyCisjOiBjb25maWcvdGMteHRlbnNhLmM6NzU4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJmaXhlcyBub3QgYWxsIG1vdmVkIGZyb20gJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjc4MzUKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo3Njk4CiBtc2dpZCAiaW5saW5pbmcgbGl0ZXJhbCBwb29sOyBzcGVjaWZ5IGxvY2F0aW9uIHdpdGggLmxpdGVyYWxfcG9zaXRpb24uIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo4MjMwCisjOiBjb25maWcvdGMteHRlbnNhLmM6ODA5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIHNlY3Rpb24gJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjgyMzIKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo4MDk0CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgZmxhZyBjb21iaW5hdGlvbiBvbiBzZWN0aW9uICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo4NDgxCisjOiBjb25maWcvdGMteHRlbnNhLmM6ODM0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHN5bWJvbGljIG9wZXJhbmQgJWQgb24gJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6ODU0NQorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjg0MDcKIG1zZ2lkICJvcGVyYW5kIG51bWJlciBtaXNtYXRjaCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6ODU5MgorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjg0NTQKIG1zZ2lkICJpbnZhbGlkIG9wY29kZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6ODU5OAorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjg0NjAKIG1zZ2lkICJ0b28gZmV3IG9wZXJhbmRzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo4ODE3CisjOiBjb25maWcvdGMteHRlbnNhLmM6ODY3OQogbXNnaWQgImlnbm9yaW5nIGV4dHJhICctcmVuYW1lLXNlY3Rpb24nIGRlbGltaXRlciAnOiciCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXh0ZW5zYS5jOjg4MjIKKyM6IGNvbmZpZy90Yy14dGVuc2EuYzo4Njg0CiAjLCBjLWZvcm1hdAogbXNnaWQgImlnbm9yaW5nIGludmFsaWQgJy1yZW5hbWUtc2VjdGlvbicgc3BlY2lmaWNhdGlvbjogJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMteHRlbnNhLmM6ODg0NQorIzogY29uZmlnL3RjLXh0ZW5zYS5jOjg3MDcKICMsIGMtZm9ybWF0CiBtc2dpZCAic2VjdGlvbiAlcyByZW5hbWVkIG11bHRpcGxlIHRpbWVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy14dGVuc2EuYzo4ODQ3CisjOiBjb25maWcvdGMteHRlbnNhLmM6ODcwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJtdWx0aXBsZSBzZWN0aW9ucyByZW1hcHBlZCB0byBvdXRwdXQgc2VjdGlvbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtejhrLmM6MzE0CisjOiBjb25maWcvdGMtejhrLmM6MjcxCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZ2lzdGVyIHJyJWQgb3V0IG9mIHJhbmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy16OGsuYzozMTYKKyM6IGNvbmZpZy90Yy16OGsuYzoyNzMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVnaXN0ZXIgcnIlZCBkb2VzIG5vdCBleGlzdCIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtejhrLmM6MzI2CisjOiBjb25maWcvdGMtejhrLmM6MjgzCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZ2lzdGVyIHJoJWQgb3V0IG9mIHJhbmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy16OGsuYzozMzYKKyM6IGNvbmZpZy90Yy16OGsuYzoyOTMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVnaXN0ZXIgcmwlZCBvdXQgb2YgcmFuZ2UiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXo4ay5jOjM0NworIzogY29uZmlnL3RjLXo4ay5jOjMwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWdpc3RlciBycSVkIG91dCBvZiByYW5nZSIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtejhrLmM6MzQ5CisjOiBjb25maWcvdGMtejhrLmM6MzA2CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZ2lzdGVyIHJxJWQgZG9lcyBub3QgZXhpc3QiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXo4ay5jOjM1OQorIzogY29uZmlnL3RjLXo4ay5jOjMxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWdpc3RlciByJWQgb3V0IG9mIHJhbmdlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy16OGsuYzo0MDQKKyM6IGNvbmZpZy90Yy16OGsuYzozNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZXhwZWN0ZWQgJWMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXo4ay5jOjQyMQorIzogY29uZmlnL3RjLXo4ay5jOjM3MgogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWdpc3RlciBpcyB3cm9uZyBzaXplIGZvciBhIHdvcmQgJXMiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXo4ay5jOjQzNworIzogY29uZmlnL3RjLXo4ay5jOjM4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWdpc3RlciBpcyB3cm9uZyBzaXplIGZvciBhZGRyZXNzICVzIgogbXNnc3RyICIiCiAKKyM6IGNvbmZpZy90Yy16OGsuYzo1MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBpbnRlcnJ1cHQgJXMiCittc2dzdHIgIiIKKwogIy4gTm8gaW50ZXJydXB0IHR5cGUgc3BlY2lmaWVkLCBvcGNvZGUgd29uJ3QgZG8gYW55dGhpbmcuCi0jOiBjb25maWcvdGMtejhrLmM6NTg1CisjOiBjb25maWcvdGMtejhrLmM6NTQzCiBtc2dpZCAib3Bjb2RlIGhhcyBubyBlZmZlY3QiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXo4ay5jOjY5NworIzogY29uZmlnL3RjLXo4ay5jOjY1MwogbXNnaWQgIk1pc3NpbmcgKSBpbiByYShyYikiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXo4ay5jOjkxOSBjb25maWcvdGMtejhrLmM6OTI1CisjOiBjb25maWcvdGMtejhrLmM6NzM2IGNvbmZpZy90Yy16OGsuYzo3NzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBjb25kaXRpb24gY29kZSAnJXMnIgorbXNnc3RyICIiCisKKyM6IGNvbmZpZy90Yy16OGsuYzo3NDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBmbGFnICclcyciCittc2dzdHIgIiIKKworIzogY29uZmlnL3RjLXo4ay5jOjkwMiBjb25maWcvdGMtejhrLmM6OTA4CiBtc2dpZCAiaW52YWxpZCBpbmRpcmVjdCByZWdpc3RlciBzaXplIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy16OGsuYzo5NzEKLSMsIGMtZm9ybWF0Ci1tc2dpZCAib3BlcmFuZCAlczB4JXggb3V0IG9mIHJhbmdlIgorIzogY29uZmlnL3RjLXo4ay5jOjkyNSBjb25maWcvdGMtejhrLmM6MTA3NCBjb25maWcvdGMtejhrLmM6MTA3OQorbXNnaWQgImludmFsaWQgY29udHJvbCByZWdpc3RlciBuYW1lIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy16OGsuYzoxMDk5CisjOiBjb25maWcvdGMtejhrLmM6MTA2MwogbXNnaWQgImltbWVkaWF0ZSBtdXN0IGJlIDEgb3IgMiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtejhrLmM6MTEwMgorIzogY29uZmlnL3RjLXo4ay5jOjEwNjYKIG1zZ2lkICJpbW1lZGlhdGUgMSBvciAyIGV4cGVjdGVkIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy16OGsuYzoxMTI5CisjOiBjb25maWcvdGMtejhrLmM6MTA5NwogbXNnaWQgImNhbid0IHVzZSBSMCBoZXJlIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy16OGsuYzoxMjkyCisjOiBjb25maWcvdGMtejhrLmM6MTI1OAogbXNnaWQgIkNhbid0IGZpbmQgb3Bjb2RlIHRvIG1hdGNoIG9wZXJhbmRzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy16OGsuYzoxNDExCisjOiBjb25maWcvdGMtejhrLmM6MTM2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGFyY2hpdGVjdHVyZSAteiVzIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy16OGsuYzoxNDMyCisjOiBjb25maWcvdGMtejhrLmM6MTM4OQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiIFo4SyBvcHRpb25zOlxuIgogIiAgLXo4MDAxICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgc2VnbWVudGVkIGNvZGVcbiIKQEAgLTEwMzc4LDQ2ICsxMDg2OSw0OCBAQAogIiAgLWxpbmtyZWxheCAgICAgICAgICAgICAgY3JlYXRlIGxpbmtlciByZWxheGFibGUgY29kZVxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy16OGsuYzoxNDQ1CisjOiBjb25maWcvdGMtejhrLmM6MTQwMQorIywgYy1mb3JtYXQKIG1zZ2lkICJjYWxsIHRvIG1kX2NvbnZlcnRfZnJhZ1xuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy16OGsuYzoxNDc2IGNvbmZpZy90Yy16OGsuYzoxNDg3CisjOiBjb25maWcvdGMtejhrLmM6MTQzNiBjb25maWcvdGMtejhrLmM6MTQ1NSBjb25maWcvdGMtejhrLmM6MTQ3NAogbXNnaWQgImNhbm5vdCBicmFuY2ggdG8gb2RkIGFkZHJlc3MiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXo4ay5jOjE0NzkgY29uZmlnL3RjLXo4ay5jOjE0OTAKKyM6IGNvbmZpZy90Yy16OGsuYzoxNDM5IGNvbmZpZy90Yy16OGsuYzoxNDU4CiBtc2dpZCAicmVsYXRpdmUganVtcCBvdXQgb2YgcmFuZ2UiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXo4ay5jOjE0OTcKKyM6IGNvbmZpZy90Yy16OGsuYzoxNDc2CiBtc2dpZCAicmVsYXRpdmUgY2FsbCBvdXQgb2YgcmFuZ2UiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXo4ay5jOjE1MjMKKyM6IGNvbmZpZy90Yy16OGsuYzoxNTA1CiBtc2dpZCAicmVsYXRpdmUgYWRkcmVzcyBvdXQgb2YgcmFuZ2UiCiBtc2dzdHIgIiIKIAotIzogY29uZmlnL3RjLXo4ay5jOjE1NDMKKyM6IGNvbmZpZy90Yy16OGsuYzoxNTI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1kX2FwcGx5X2ZpeDM6IHVua25vd24gcl90eXBlIDB4JXhcbiIKIG1zZ3N0ciAiIgogCi0jOiBjb25maWcvdGMtejhrLmM6MTU1NgorIzogY29uZmlnL3RjLXo4ay5jOjE1MzcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiY2FsbCB0byBtZF9lc3RpbWF0ZV9zaXplX2JlZm9yZV9yZWxheFxuIgogbXNnc3RyICIiCiAKLSM6IGNvbmZpZy90Yy16OGsuYzoxNjAwCisjOiBjb25maWcvdGMtejhrLmM6MTU3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW4ndCBzdWJ0cmFjdCBzeW1ib2xzIGluIGRpZmZlcmVudCBzZWN0aW9ucyAlcyAlcyIKIG1zZ3N0ciAiIgogCi0jOiBkZXBlbmQuYzoyMDAKKyM6IGRlcGVuZC5jOjE5MwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW4ndCBvcGVuIGAlcycgZm9yIHdyaXRpbmciCiBtc2dzdHIgIiIKIAotIzogZGVwZW5kLmM6MjEyCisjOiBkZXBlbmQuYzoyMDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FuJ3QgY2xvc2UgYCVzJyIKIG1zZ3N0ciAiIgpAQCAtMTA0MjcsMzI4ICsxMDkyMCwzMzQgQEAKIG1zZ2lkICJyZWdpc3RlciBzYXZlIG9mZnNldCBub3QgYSBtdWx0aXBsZSBvZiAldSIKIG1zZ3N0ciAiIgogCi0jOiBkdzJnZW5jZmkuYzozODgKKyM6IGR3MmdlbmNmaS5jOjM4OQogbXNnaWQgIm1pc3Npbmcgc2VwYXJhdG9yIgogbXNnc3RyICIiCiAKLSM6IGR3MmdlbmNmaS5jOjQxMCBkdzJnZW5jZmkuYzo0MjgKKyM6IGR3MmdlbmNmaS5jOjQxMSBkdzJnZW5jZmkuYzo0MjkKIG1zZ2lkICJiYWQgcmVnaXN0ZXIgZXhwcmVzc2lvbiIKIG1zZ3N0ciAiIgogCi0jOiBkdzJnZW5jZmkuYzo0NTAgZHcyZ2VuY2ZpLmM6NTQ3CisjOiBkdzJnZW5jZmkuYzo0NTEgZHcyZ2VuY2ZpLmM6NTUyCiBtc2dpZCAiQ0ZJIGluc3RydWN0aW9uIHVzZWQgd2l0aG91dCBwcmV2aW91cyAuY2ZpX3N0YXJ0cHJvYyIKIG1zZ3N0ciAiIgogCi0jOiBkdzJnZW5jZmkuYzo1NzkKKyM6IGR3MmdlbmNmaS5jOjU4NAogbXNnaWQgInByZXZpb3VzIENGSSBlbnRyeSBub3QgY2xvc2VkIChtaXNzaW5nIC5jZmlfZW5kcHJvYykiCiBtc2dzdHIgIiIKIAotIzogZHcyZ2VuY2ZpLmM6NjEyCisjOiBkdzJnZW5jZmkuYzo2MTcKIG1zZ2lkICIuY2ZpX2VuZHByb2Mgd2l0aG91dCBjb3JyZXNwb25kaW5nIC5jZmlfc3RhcnRwcm9jIgogbXNnc3RyICIiCiAKLSM6IGR3MmdlbmNmaS5jOjk4NworIzogZHcyZ2VuY2ZpLmM6MTAxMgogbXNnaWQgIm9wZW4gQ0ZJIGF0IHRoZSBlbmQgb2YgZmlsZTsgbWlzc2luZyAuY2ZpX2VuZHByb2MgZGlyZWN0aXZlIgogbXNnc3RyICIiCiAKLSM6IGR3YXJmMmRiZy5jOjQ2OCBkd2FyZjJkYmcuYzo0OTgKKyM6IGR3YXJmMmRiZy5jOjQ1NyBkd2FyZjJkYmcuYzo0ODYKIG1zZ2lkICJmaWxlIG51bWJlciBsZXNzIHRoYW4gb25lIgogbXNnc3RyICIiCiAKLSM6IGR3YXJmMmRiZy5jOjQ3NAorIzogZHdhcmYyZGJnLmM6NDYzCiAjLCBjLWZvcm1hdAogbXNnaWQgImZpbGUgbnVtYmVyICVsZCBhbHJlYWR5IGFsbG9jYXRlZCIKIG1zZ3N0ciAiIgogCi0jOiBkd2FyZjJkYmcuYzo1MDMgZHdhcmYyZGJnLmM6MTA2NAorIzogZHdhcmYyZGJnLmM6NDkxIGR3YXJmMmRiZy5jOjEwMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hc3NpZ25lZCBmaWxlIG51bWJlciAlbGQiCiBtc2dzdHIgIiIKIAotIzogZHdhcmYyZGJnLmM6MTEzMCBkd2FyZjJkYmcuYzoxMzI3CisjOiBkd2FyZjJkYmcuYzoxMDg5IGR3YXJmMmRiZy5jOjEyODAKIG1zZ2lkICJpbnRlcm5hbCBlcnJvcjogdW5rbm93biBkd2FyZjIgZm9ybWF0IgogbXNnc3RyICIiCiAKLSM6IGR3YXJmMmRiZy5jOjE0NzIgZHdhcmYyZGJnLmM6MTQ4MCBkd2FyZjJkYmcuYzoxNDg4IGR3YXJmMmRiZy5jOjE1MDkKKyM6IGR3YXJmMmRiZy5jOjE0MjUgZHdhcmYyZGJnLmM6MTQzMyBkd2FyZjJkYmcuYzoxNDQxIGR3YXJmMmRiZy5jOjE0NjIKIG1zZ2lkICJkd2FyZjIgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBvYmplY3QgZmlsZSBmb3JtYXQiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoxNTU2CisjOiBlY29mZi5jOjE1NTEKICMsIGMtZm9ybWF0CiBtc2dpZCAic3RyaW5nIHRvbyBiaWcgKCVsdSBieXRlcykiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoxNTgyCisjOiBlY29mZi5jOjE1NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5zZXJ0aW5nIFwiJXNcIiBpbnRvIHN0cmluZyBoYXNoIHRhYmxlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjE2MTQgZWNvZmYuYzoxODA4IGVjb2ZmLmM6MTgzMyBlY29mZi5jOjE4NjUgZWNvZmYuYzoyMDE5Ci0jOiBlY29mZi5jOjIxMzIKKyM6IGVjb2ZmLmM6MTYwOCBlY29mZi5jOjE4MDEgZWNvZmYuYzoxODI0IGVjb2ZmLmM6MTg1NSBlY29mZi5jOjIwMDgKKyM6IGVjb2ZmLmM6MjExOQogbXNnaWQgIm5vIGN1cnJlbnQgZmlsZSBwb2ludGVyIgogbXNnc3RyICIiCiAKLSM6IGVjb2ZmLmM6MTcwMQorIzogZWNvZmYuYzoxNjk1CiBtc2dpZCAidG9vIG1hbnkgc3RfRW5kJ3MiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoyMDQ0CisjOiBlY29mZi5jOjIwMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5zZXJ0aW5nIFwiJXNcIiBpbnRvIHRhZyBoYXNoIHRhYmxlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjIyMTAKKyM6IGVjb2ZmLmM6MjE5NAogbXNnaWQgImZha2UgLmZpbGUgYWZ0ZXIgcmVhbCBvbmUiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoyMzAwCisjOiBlY29mZi5jOjIyODQKIG1zZ2lkICJmaWxlbmFtZSBnb2VzIG92ZXIgb25lIHBhZ2UgYm91bmRhcnkiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoyNDM1CisjOiBlY29mZi5jOjI0MTcKIG1zZ2lkICIuYmVnaW4gZGlyZWN0aXZlIHdpdGhvdXQgYSBwcmVjZWRpbmcgLmZpbGUgZGlyZWN0aXZlIgogbXNnc3RyICIiCiAKLSM6IGVjb2ZmLmM6MjQ0MgorIzogZWNvZmYuYzoyNDI0CiBtc2dpZCAiLmJlZ2luIGRpcmVjdGl2ZSB3aXRob3V0IGEgcHJlY2VkaW5nIC5lbnQgZGlyZWN0aXZlIgogbXNnc3RyICIiCiAKLSM6IGVjb2ZmLmM6MjQ3NAorIzogZWNvZmYuYzoyNDU1CiBtc2dpZCAiLmJlbmQgZGlyZWN0aXZlIHdpdGhvdXQgYSBwcmVjZWRpbmcgLmZpbGUgZGlyZWN0aXZlIgogbXNnc3RyICIiCiAKLSM6IGVjb2ZmLmM6MjQ4MQorIzogZWNvZmYuYzoyNDYyCiBtc2dpZCAiLmJlbmQgZGlyZWN0aXZlIHdpdGhvdXQgYSBwcmVjZWRpbmcgLmVudCBkaXJlY3RpdmUiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoyNDk0CisjOiBlY29mZi5jOjI0NzUKIG1zZ2lkICIuYmVuZCBkaXJlY3RpdmUgbmFtZXMgdW5rbm93biBzeW1ib2wiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoyNTM4CisjOiBlY29mZi5jOjI1MTgKIG1zZ2lkICIuZGVmIHBzZXVkby1vcCB1c2VkIGluc2lkZSBvZiAuZGVmLy5lbmRlZjsgaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjI1NDAKKyM6IGVjb2ZmLmM6MjUyMAogbXNnaWQgImVtcHR5IHN5bWJvbCBuYW1lIGluIC5kZWY7IGlnbm9yZWQiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoyNTc4CisjOiBlY29mZi5jOjI1NTcKIG1zZ2lkICIuZGltIHBzZXVkby1vcCB1c2VkIG91dHNpZGUgb2YgLmRlZi8uZW5kZWY7IGlnbm9yZWQiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoyNTkzCisjOiBlY29mZi5jOjI1NzIKIG1zZ2lkICJiYWRseSBmb3JtZWQgLmRpbSBkaXJlY3RpdmUiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoyNjA2CisjOiBlY29mZi5jOjI1ODUKIG1zZ2lkICJ0b28gbWFueSAuZGltIGVudHJpZXMiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoyNjI3CisjOiBlY29mZi5jOjI2MDUKIG1zZ2lkICIuc2NsIHBzZXVkby1vcCB1c2VkIG91dHNpZGUgb2YgLmRlZi8uZW5kZWY7IGlnbm9yZWQiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoyNjUzCisjOiBlY29mZi5jOjI2MzAKIG1zZ2lkICIuc2l6ZSBwc2V1ZG8tb3AgdXNlZCBvdXRzaWRlIG9mIC5kZWYvLmVuZGVmOyBpZ25vcmVkIgogbXNnc3RyICIiCiAKLSM6IGVjb2ZmLmM6MjY2OAorIzogZWNvZmYuYzoyNjQ1CiBtc2dpZCAiYmFkbHkgZm9ybWVkIC5zaXplIGRpcmVjdGl2ZSIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjI2ODEKKyM6IGVjb2ZmLmM6MjY1OAogbXNnaWQgInRvbyBtYW55IC5zaXplIGVudHJpZXMiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzoyNzA0CisjOiBlY29mZi5jOjI2ODAKIG1zZ2lkICIudHlwZSBwc2V1ZG8tb3AgdXNlZCBvdXRzaWRlIG9mIC5kZWYvLmVuZGVmOyBpZ25vcmVkIgogbXNnc3RyICIiCiAKICMuIEZJWE1FOiBXZSBjb3VsZCBoYW5kbGUgdGhpcyBieSBzZXR0aW5nIHRoZSBjb250aW51ZWQgYml0LgogIy4gVGhlcmUgd291bGQgc3RpbGwgYmUgYSBsaW1pdDogdGhlIC50eXBlIGFyZ3VtZW50IGNhbiBub3QKICMuIGJlIGluZmluaXRlLgotIzogZWNvZmYuYzoyNzIyCisjOiBlY29mZi5jOjI2OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAidGhlIHR5cGUgb2YgJXMgaXMgdG9vIGNvbXBsZXg7IGl0IHdpbGwgYmUgc2ltcGxpZmllZCIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjI3MzMKKyM6IGVjb2ZmLmM6MjcwOQogbXNnaWQgIlVucmVjb2duaXplZCAudHlwZSBhcmd1bWVudCIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjI3NzIKKyM6IGVjb2ZmLmM6Mjc0NwogbXNnaWQgIi50YWcgcHNldWRvLW9wIHVzZWQgb3V0c2lkZSBvZiAuZGVmLy5lbmRlZjsgaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjI3OTgKKyM6IGVjb2ZmLmM6Mjc3MgogbXNnaWQgIi52YWwgcHNldWRvLW9wIHVzZWQgb3V0c2lkZSBvZiAuZGVmLy5lbmRlZjsgaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjI4MDYKKyM6IGVjb2ZmLmM6Mjc4MAogbXNnaWQgIi52YWwgZXhwcmVzc2lvbiBpcyB0b28gY29wbWxleCIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjI4MzcKKyM6IGVjb2ZmLmM6MjgxMAogbXNnaWQgIi5lbmRlZiBwc2V1ZG8tb3AgdXNlZCBiZWZvcmUgLmRlZjsgaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjI4NjMgZWNvZmYuYzoyOTQ0CisjOiBlY29mZi5jOjI4MzYgZWNvZmYuYzoyOTE3CiBtc2dpZCAiYmFkIENPRkYgZGVidWdnaW5nIGluZm9ybWF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGVjb2ZmLmM6MjkxMgorIzogZWNvZmYuYzoyODg1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIHRhZyBzcGVjaWZpZWQgZm9yICVzIgogbXNnc3RyICIiCiAKLSM6IGVjb2ZmLmM6MzAxNQorIzogZWNvZmYuYzoyOTg3CiBtc2dpZCAiLmVuZCBkaXJlY3RpdmUgd2l0aG91dCBhIHByZWNlZGluZyAuZmlsZSBkaXJlY3RpdmUiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzozMDIyCisjOiBlY29mZi5jOjI5OTQKIG1zZ2lkICIuZW5kIGRpcmVjdGl2ZSB3aXRob3V0IGEgcHJlY2VkaW5nIC5lbnQgZGlyZWN0aXZlIgogbXNnc3RyICIiCiAKLSM6IGVjb2ZmLmM6MzA0NAorIzogZWNvZmYuYzozMDE2CiBtc2dpZCAiLmVuZCBkaXJlY3RpdmUgbmFtZXMgdW5rbm93biBzeW1ib2wiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzozMDcyCisjOiBlY29mZi5jOjMwNDMKIG1zZ2lkICJzZWNvbmQgLmVudCBkaXJlY3RpdmUgZm91bmQgYmVmb3JlIC5lbmQgZGlyZWN0aXZlIgogbXNnc3RyICIiCiAKLSM6IGVjb2ZmLmM6MzE0NgorIzogZWNvZmYuYzozMTE1CiBtc2dpZCAibm8gd2F5IHRvIGhhbmRsZSAuZmlsZSB3aXRoaW4gLmVudC8uZW5kIHNlY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzozMjcxCisjOiBlY29mZi5jOjMyMzYKIG1zZ2lkICIubG9jIGJlZm9yZSAuZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjM0MTAKKyM6IGVjb2ZmLmM6MzM1OCByZWFkLmM6MTM4MSByZWFkLmM6MTQ4OCByZWFkLmM6MjEyNSByZWFkLmM6MjczNyByZWFkLmM6NDgwOAorIzogc3ltYm9scy5jOjM1NiBzeW1ib2xzLmM6NDU1CisjLCBjLWZvcm1hdAorbXNnaWQgInN5bWJvbCBgJXMnIGlzIGFscmVhZHkgZGVmaW5lZCIKK21zZ3N0ciAiIgorCisjOiBlY29mZi5jOjMzNzEKIG1zZ2lkICJiYWQgLndlYWtleHQgZGlyZWN0aXZlIgogbXNnc3RyICIiCiAKLSM6IGVjb2ZmLmM6MzQ3OQorIzogZWNvZmYuYzozNDM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIi5zdGFiJWMgaXMgbm90IHN1cHBvcnRlZCIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjM0ODkKKyM6IGVjb2ZmLmM6MzQ0OQogIywgYy1mb3JtYXQKIG1zZ2lkICIuc3RhYiVjOiBpZ25vcmluZyBub24temVybyBvdGhlciBmaWVsZCIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjM1MjMKKyM6IGVjb2ZmLmM6MzQ4MwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibGluZSBudW1iZXIgKCVkKSBmb3IgLnN0YWIlYyBkaXJlY3RpdmUgY2Fubm90IGZpdCBpbiBpbmRleCBmaWVsZCAoMjAgYml0cykiCiBtc2dzdHIgIiIKIAotIzogZWNvZmYuYzozNTU5CisjOiBlY29mZi5jOjM1MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiaWxsZWdhbCAuc3RhYiVjIGRpcmVjdGl2ZSwgYmFkIGNoYXJhY3RlciIKIG1zZ3N0ciAiIgogCi0jOiBlY29mZi5jOjQwMjEgZWNvZmYuYzo0MjEwIGVjb2ZmLmM6NDIzNQorIzogZWNvZmYuYzozOTc2IGVjb2ZmLmM6NDE2NSBlY29mZi5jOjQxOTAKIG1zZ2lkICIuYmVnaW4vLmJlbmQgaW4gZGlmZmVyZW50IHNlZ21lbnRzIgogbXNnc3RyICIiCiAKLSM6IGVjb2ZmLmM6NDczNworIzogZWNvZmYuYzo0Njg2CiBtc2dpZCAibWlzc2luZyAuZW5kIG9yIC5iZW5kIGF0IGVuZCBvZiBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGVjb2ZmLmM6NTIyNworIzogZWNvZmYuYzo1MTcxCiBtc2dpZCAiR1AgcHJvbG9ndWUgc2l6ZSBleGNlZWRzIGZpZWxkIHNpemUsIHVzaW5nIDAgaW5zdGVhZCIKIG1zZ3N0ciAiIgogCi0jOiBleHByLmM6ODMgcmVhZC5jOjMyMzIKKyM6IGV4cHIuYzo4MiByZWFkLmM6MzEwNgogbXNnaWQgImJpZ251bSBpbnZhbGlkIgogbXNnc3RyICIiCiAKLSM6IGV4cHIuYzo4NSByZWFkLmM6MzIzNCByZWFkLmM6MzU3NCByZWFkLmM6NDQ3NAorIzogZXhwci5jOjg0IHJlYWQuYzozMTA4IHJlYWQuYzozNDQ0IHJlYWQuYzo0MzE5CiBtc2dpZCAiZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGludmFsaWQiCiBtc2dzdHIgIiIKIAotIzogZXhwci5jOjI0MworIzogZXhwci5jOjIzMgogbXNnaWQgImJhZCBmbG9hdGluZy1wb2ludCBjb25zdGFudDogZXhwb25lbnQgb3ZlcmZsb3ciCiBtc2dzdHIgIiIKIAotIzogZXhwci5jOjI0NworIzogZXhwci5jOjIzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgZmxvYXRpbmctcG9pbnQgY29uc3RhbnQ6IHVua25vd24gZXJyb3IgY29kZT0lZCIKIG1zZ3N0ciAiIgogCi0jOiBleHByLmM6NDI1CisjOiBleHByLmM6NDEyCiBtc2dpZCAiIgogImEgYmlnbnVtIHdpdGggdW5kZXJzY29yZXMgbWF5IG5vdCBoYXZlIG1vcmUgdGhhbiA4IGhleCBkaWdpdHMgaW4gYW55IHdvcmQiCiBtc2dzdHIgIiIKIAotIzogZXhwci5jOjQ0OAorIzogZXhwci5jOjQzNQogbXNnaWQgImEgYmlnbnVtIHdpdGggdW5kZXJzY29yZXMgbXVzdCBoYXZlIGV4YWN0bHkgNCB3b3JkcyIKIG1zZ3N0ciAiIgogCiAjLiBFaXRoZXIgbm90IHNlZW4gb3Igbm90IGRlZmluZWQuCiAjLiBAQCBTaG91bGQgcHJpbnQgb3V0IHRoZSBvcmlnaW5hbCBzdHJpbmcgaW5zdGVhZCBvZgogIy4gdGhlIHBhcnNlZCBudW1iZXIuCi0jOiBleHByLmM6NTcxCisjOiBleHByLmM6NTU4CiAjLCBjLWZvcm1hdAogbXNnaWQgImJhY2t3YXJkIHJlZiB0byB1bmtub3duIGxhYmVsIFwiJWQ6XCIiCiBtc2dzdHIgIiIKIAotIzogZXhwci5jOjY5NAorIzogZXhwci5jOjY4MAogbXNnaWQgImNoYXJhY3RlciBjb25zdGFudCB0b28gbGFyZ2UiCiBtc2dzdHIgIiIKIAotIzogZXhwci5jOjk0MgorIzogZXhwci5jOjkyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJleHByLmMob3BlcmFuZCk6IGJhZCBhdG9mX2dlbmVyaWMgcmV0dXJuIHZhbCAlZCIKIG1zZ3N0ciAiIgogCi0jOiBleHByLmM6MTAwNAorIzogZXhwci5jOjk4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJtaXNzaW5nICclYyciCiBtc2dzdHIgIiIKIAotIzogZXhwci5jOjEwMTYgcmVhZC5jOjM5NDUKKyM6IGV4cHIuYzoxMDAwIHJlYWQuYzozODE1CiBtc2dpZCAiRUJDRElDIGNvbnN0YW50cyBhcmUgbm90IHN1cHBvcnRlZCIKIG1zZ3N0ciAiIgogCi0jOiBleHByLmM6MTA5OQorIzogZXhwci5jOjEwOTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5hcnkgb3BlcmF0b3IgJWMgaWdub3JlZCBiZWNhdXNlIGJhZCBvcGVyYW5kIGZvbGxvd3MiCiBtc2dzdHIgIiIKIAotIzogZXhwci5jOjExNDUgZXhwci5jOjExNzAKKyM6IGV4cHIuYzoxMTM2IGV4cHIuYzoxMTYxCiBtc2dpZCAic3ludGF4IGVycm9yIGluIC5zdGFydG9mLiBvciAuc2l6ZW9mLiIKIG1zZ3N0ciAiIgogCi0jOiBleHByLmM6MTY2NgorIzogZXhwci5jOjE2NjIKIG1zZ2lkICJtaXNzaW5nIG9wZXJhbmQ7IHplcm8gYXNzdW1lZCIKIG1zZ3N0ciAiIgogCi0jOiBleHByLmM6MTcwMQorIzogZXhwci5jOjE2OTcKIG1zZ2lkICJsZWZ0IG9wZXJhbmQgaXMgYSBiaWdudW07IGludGVnZXIgMCBhc3N1bWVkIgogbXNnc3RyICIiCiAKLSM6IGV4cHIuYzoxNzAzCisjOiBleHByLmM6MTY5OQogbXNnaWQgImxlZnQgb3BlcmFuZCBpcyBhIGZsb2F0OyBpbnRlZ2VyIDAgYXNzdW1lZCIKIG1zZ3N0ciAiIgogCi0jOiBleHByLmM6MTcxMgorIzogZXhwci5jOjE3MDgKIG1zZ2lkICJyaWdodCBvcGVyYW5kIGlzIGEgYmlnbnVtOyBpbnRlZ2VyIDAgYXNzdW1lZCIKIG1zZ3N0ciAiIgogCi0jOiBleHByLmM6MTcxNAorIzogZXhwci5jOjE3MTAKIG1zZ2lkICJyaWdodCBvcGVyYW5kIGlzIGEgZmxvYXQ7IGludGVnZXIgMCBhc3N1bWVkIgogbXNnc3RyICIiCiAKLSM6IGV4cHIuYzoxNzcwIHN5bWJvbHMuYzoxMTkxCisjOiBleHByLmM6MTc2NiBzeW1ib2xzLmM6MTE1NAogbXNnaWQgImRpdmlzaW9uIGJ5IHplcm8iCiBtc2dzdHIgIiIKIAotIzogZXhwci5jOjE4NjgKKyM6IGV4cHIuYzoxODY0CiBtc2dpZCAib3BlcmF0aW9uIGNvbWJpbmVzIHN5bWJvbHMgaW4gZGlmZmVyZW50IHNlZ21lbnRzIgogbXNnc3RyICIiCiAKQEAgLTEwNzYwLDExICsxMTI1OSwxMiBAQAogbXNnaWQgImF0dGVtcHQgdG8gYWxsb2NhdGUgZGF0YSBpbiBjb21tb24gc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBmcmFncy5jOjEwNworIzogZnJhZ3MuYzoxMDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FuJ3QgZXh0ZW5kIGZyYWcgJXUgY2hhcnMiCiBtc2dzdHIgIiIKIAorIy4gRm9yIGVycm9yIG1lc3NhZ2VzLgogIy4gRGV0ZWN0IGlmIHdlIGFyZSByZWFkaW5nIGZyb20gc3RkaW4gYnkgZXhhbWluaW5nIHRoZSBmaWxlCiAjLiBuYW1lIHJldHVybmVkIGJ5IGFzX3doZXJlKCkuCiAjLgpAQCAtMTA3NzYsMTY1ICsxMTI3NiwxNzIgQEAKICMuIGxpbmUgaGVyZSAoYXNzdW1pbmcgb2YgY291cnNlIHRoYXQgd2UgYWN0dWFsbHkgaGF2ZSBhIGxpbmUgb2YKICMuIGlucHV0IHRvIHJlYWQpLCBzbyB0aGF0IGl0IGNhbiBiZSBkaXNwbGF5ZWQgaW4gdGhlIGxpc3RpbmcKICMuIHRoYXQgaXMgcHJvZHVjZWQgYXQgdGhlIGVuZCBvZiB0aGUgYXNzZW1ibHkuCi0jOiBpbnB1dC1maWxlLmM6MTQ1IGlucHV0LXNjcnViLmM6MjQyIGxpc3RpbmcuYzozNDMKKyM6IGlucHV0LWZpbGUuYzoxNDYgaW5wdXQtc2NydWIuYzoyMzkgbGlzdGluZy5jOjMzMgogbXNnaWQgIntzdGFuZGFyZCBpbnB1dH0iCiBtc2dzdHIgIiIKIAotIzogaW5wdXQtZmlsZS5jOjE0OQorIzogaW5wdXQtZmlsZS5jOjE1NwogIywgYy1mb3JtYXQKLW1zZ2lkICJjYW4ndCBvcGVuICVzIGZvciByZWFkaW5nIgorbXNnaWQgIkNhbid0IG9wZW4gJXMgZm9yIHJlYWRpbmciCiBtc2dzdHIgIiIKIAotIzogaW5wdXQtZmlsZS5jOjIxMiBpbnB1dC1maWxlLmM6MjM5CisjOiBpbnB1dC1maWxlLmM6MjI1IGlucHV0LWZpbGUuYzoyNTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2FuJ3QgcmVhZCBmcm9tICVzIgogbXNnc3RyICIiCiAKLSM6IGlucHV0LWZpbGUuYzoyNDcKKyM6IGlucHV0LWZpbGUuYzoyNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2FuJ3QgY2xvc2UgJXMiCiBtc2dzdHIgIiIKIAotIzogaW5wdXQtc2NydWIuYzoyNzIKKyM6IGlucHV0LXNjcnViLmM6MjY0CiBtc2dpZCAibWFjcm9zIG5lc3RlZCB0b28gZGVlcGx5IgogbXNnc3RyICIiCiAKLSM6IGlucHV0LXNjcnViLmM6Mzc1IGlucHV0LXNjcnViLmM6Mzk3CisjOiBpbnB1dC1zY3J1Yi5jOjM2NiBpbnB1dC1zY3J1Yi5jOjM4OAogbXNnaWQgInBhcnRpYWwgbGluZSBhdCBlbmQgb2YgZmlsZSBpZ25vcmVkIgogbXNnc3RyICIiCiAKLSM6IGl0Ymwtb3BzLmM6MzUxCisjOiBpdGJsLW9wcy5jOjM0OQorIywgYy1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBuZXcgaW5zdHJ1Y3Rpb25zXG4iCiBtc2dzdHIgIiIKIAotIzogbGlzdGluZy5jOjI0MworIzogbGlzdGluZy5jOjIzOAogbXNnaWQgIldhcm5pbmc6IgogbXNnc3RyICIiCiAKLSM6IGxpc3RpbmcuYzoyNTAKKyM6IGxpc3RpbmcuYzoyNDQKIG1zZ2lkICJFcnJvcjoiCiBtc2dzdHIgIiIKIAotIzogbGlzdGluZy5jOjExMzAKKyM6IGxpc3RpbmcuYzoxMDk2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IG9wZW4gbGlzdCBmaWxlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBsaXN0aW5nLmM6MTE1NAorIzogbGlzdGluZy5jOjExMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZXJyb3IgY2xvc2luZyBsaXN0IGZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGxpc3RpbmcuYzoxMjMzCisjOiBsaXN0aW5nLmM6MTE5MQogbXNnaWQgInN0cmFuZ2UgcGFwZXIgaGVpZ2h0LCBzZXQgdG8gbm8gZm9ybSIKIG1zZ3N0ciAiIgogCi0jOiBsaXN0aW5nLmM6MTI5OQorIzogbGlzdGluZy5jOjEyNTUKIG1zZ2lkICJuZXcgbGluZSBpbiB0aXRsZSIKIG1zZ3N0ciAiIgogCiAjLiBUdXJucyB0aGUgbmV4dCBleHByZXNzaW9uIGludG8gYSBzdHJpbmcuCi0jOiBtYWNyby5jOjM4MgorIzogbWFjcm8uYzozNjMKICMsIG5vLWMtZm9ybWF0CiBtc2dpZCAiJSBvcGVyYXRvciBuZWVkcyBhYnNvbHV0ZSBleHByZXNzaW9uIgogbXNnc3RyICIiCiAKLSM6IG1hY3JvLmM6NTQ1CisjOiBtYWNyby5jOjUxOQogbXNnaWQgInVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUgaW4gbWFjcm8gZGVmaW5pdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBtYWNyby5jOjU1NAorIzogbWFjcm8uYzo1MjgKIG1zZ2lkICJtaXNzaW5nICkgYWZ0ZXIgZm9ybWFscyIKIG1zZ3N0ciAiIgogCi0jOiBtYWNyby5jOjcwMworIzogbWFjcm8uYzo2NjMKIG1zZ2lkICJtaXNzcGxhY2VkICkiCiBtc2dzdHIgIiIKIAotIzogbWFjcm8uYzo5NjAKKyM6IG1hY3JvLmM6OTE2CiBtc2dpZCAiY29uZnVzaW9uIGluIGZvcm1hbCBwYXJhbWV0ZXJzIgogbXNnc3RyICIiCiAKLSM6IG1hY3JvLmM6OTY1CisjOiBtYWNyby5jOjkyMQogbXNnaWQgIm1hY3JvIGZvcm1hbCBhcmd1bWVudCBkb2VzIG5vdCBleGlzdCIKIG1zZ3N0ciAiIgogCi0jOiBtYWNyby5jOjk4MAorIzogbWFjcm8uYzo5MzYKIG1zZ2lkICJjYW4ndCBtaXggcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMiCiBtc2dzdHIgIiIKIAotIzogbWFjcm8uYzo5ODgKKyM6IG1hY3JvLmM6OTQ0CiBtc2dpZCAidG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMiCiBtc2dzdHIgIiIKIAotIzogbWFjcm8uYzoxMTYzCisjOiBtYWNyby5jOjExMTAKIG1zZ2lkICJ1bmV4cGVjdGVkIGVuZCBvZiBmaWxlIGluIGlycCBvciBpcnBjIgogbXNnc3RyICIiCiAKLSM6IG1hY3JvLmM6MTE3MQorIzogbWFjcm8uYzoxMTE4CiBtc2dpZCAibWlzc2luZyBtb2RlbCBwYXJhbWV0ZXIiCiBtc2dzdHIgIiIKIAotIzogbWVzc2FnZXMuYzoxMDQKKyM6IG1lc3NhZ2VzLmM6MTAzCisjLCBjLWZvcm1hdAogbXNnaWQgIkFzc2VtYmxlciBtZXNzYWdlczpcbiIKIG1zZ3N0ciAiIgogCi0jOiBtZXNzYWdlcy5jOjIxNAorIzogbWVzc2FnZXMuYzoyMTEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiV2FybmluZzogIgogbXNnc3RyICIiCiAKLSM6IG1lc3NhZ2VzLmM6MzE4CisjOiBtZXNzYWdlcy5jOjMxMgorIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvcjogIgogbXNnc3RyICIiCiAKLSM6IG1lc3NhZ2VzLmM6NDEzIG1lc3NhZ2VzLmM6NDMzCisjOiBtZXNzYWdlcy5jOjQwNyBtZXNzYWdlcy5jOjQyNworIywgYy1mb3JtYXQKIG1zZ2lkICJGYXRhbCBlcnJvcjogIgogbXNnc3RyICIiCiAKLSM6IG1lc3NhZ2VzLmM6NDUwCisjOiBtZXNzYWdlcy5jOjQ0MgorIywgYy1mb3JtYXQKIG1zZ2lkICJJbnRlcm5hbCBlcnJvciFcbiIKIG1zZ3N0ciAiIgogCi0jOiBtZXNzYWdlcy5jOjQ1MgorIzogbWVzc2FnZXMuYzo0NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXNzZXJ0aW9uIGZhaWx1cmUgaW4gJXMgYXQgJXMgbGluZSAlZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBtZXNzYWdlcy5jOjQ1NQorIzogbWVzc2FnZXMuYzo0NDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXNzZXJ0aW9uIGZhaWx1cmUgYXQgJXMgbGluZSAlZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBtZXNzYWdlcy5jOjQ1NiBtZXNzYWdlcy5jOjQ3NQorIzogbWVzc2FnZXMuYzo0NDggbWVzc2FnZXMuYzo0NjUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiUGxlYXNlIHJlcG9ydCB0aGlzIGJ1Zy5cbiIKIG1zZ3N0ciAiIgogCi0jOiBtZXNzYWdlcy5jOjQ3MAorIzogbWVzc2FnZXMuYzo0NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW50ZXJuYWwgZXJyb3IsIGFib3J0aW5nIGF0ICVzIGxpbmUgJWQgaW4gJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBtZXNzYWdlcy5jOjQ3MworIzogbWVzc2FnZXMuYzo0NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW50ZXJuYWwgZXJyb3IsIGFib3J0aW5nIGF0ICVzIGxpbmUgJWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBvdXRwdXQtZmlsZS5jOjQ4CisjOiBvdXRwdXQtZmlsZS5jOjQ3CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IG9wZW4gYSBiZmQgb24gc3Rkb3V0ICVzIgogbXNnc3RyICIiCiAKLSM6IG91dHB1dC1maWxlLmM6NTIgb3V0cHV0LWZpbGUuYzoxMTUKKyM6IG91dHB1dC1maWxlLmM6NTEgb3V0cHV0LWZpbGUuYzoxMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRkFUQUw6IGNhbid0IGNyZWF0ZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBvdXRwdXQtZmlsZS5jOjczIG91dHB1dC1maWxlLmM6ODAKKyM6IG91dHB1dC1maWxlLmM6NzEgb3V0cHV0LWZpbGUuYzo3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJGQVRBTDogY2FuJ3QgY2xvc2UgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBvdXRwdXQtZmlsZS5jOjEyNgorIzogb3V0cHV0LWZpbGUuYzoxMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRkFUQUw6IGNhbid0IGNsb3NlICVzIgogbXNnc3RyICIiCkBAIC0xMDk0NywzMzcgKzExNDU0LDMzMiBAQAogbXNnaWQgImNhbid0IGNvbnRpbnVlIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzo0NDIKKyM6IHJlYWQuYzo0MjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZXJyb3IgY29uc3RydWN0aW5nICVzIHBzZXVkby1vcCB0YWJsZTogJXMiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjgwOQorIzogcmVhZC5jOjc5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIHBzZXVkby1vcDogYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6OTQwCisjOiByZWFkLmM6OTI1CiAjLCBjLWZvcm1hdAogbXNnaWQgImxhYmVsIFwiJWQkXCIgcmVkZWZpbmVkIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoxMTUyCisjOiByZWFkLmM6MTEzMwogbXNnaWQgIi5hYm9ydCBkZXRlY3RlZC4gIEFiYW5kb25pbmcgc2hpcC4iCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjExNzQgcmVhZC5jOjI0MTMKKyM6IHJlYWQuYzoxMTUxIHJlYWQuYzoyMjk3CiBtc2dpZCAiaWdub3JpbmcgZmlsbCB2YWx1ZSBpbiBhYnNvbHV0ZSBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoxMjYwCisjOiByZWFkLmM6MTIzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJhbGlnbm1lbnQgdG9vIGxhcmdlOiAldSBhc3N1bWVkIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoxMjkyCisjOiByZWFkLmM6MTI2NwogbXNnaWQgImV4cGVjdGVkIGZpbGwgcGF0dGVybiBtaXNzaW5nIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoxNDE3CisjOiByZWFkLmM6MTM2NAorbXNnaWQgIm1pc3Npbmcgc2l6ZSBleHByZXNzaW9uIgorbXNnc3RyICIiCisKKyM6IHJlYWQuYzoxMzcxCiAjLCBjLWZvcm1hdAotbXNnaWQgImxlbmd0aCBvZiAuY29tbSBcIiVzXCIgaXMgYWxyZWFkeSAlbGQ7IG5vdCBjaGFuZ2luZyB0byAlbGQiCittc2dpZCAic2l6ZSAoJWxkKSBvdXQgb2YgcmFuZ2UsIGlnbm9yZWQiCittc2dzdHIgIiIKKworIzogcmVhZC5jOjEzOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAic2l6ZSBvZiBcIiVzXCIgaXMgYWxyZWFkeSAlbGQ7IG5vdCBjaGFuZ2luZyB0byAlbGQiCiBtc2dzdHIgIiIKIAogIy4gU29tZSBvZiB0aGUgYmFjayBlbmRzIGNhbid0IGRlYWwgd2l0aCBub24tcG9zaXRpdmUgbGluZSBudW1iZXJzLgogIy4gQmVzaWRlcywgaXQncyBzaWxseS4KLSM6IHJlYWQuYzoxNjM2CisjOiByZWFkLmM6MTYxMwogIywgYy1mb3JtYXQKIG1zZ2lkICJsaW5lIG51bWJlcnMgbXVzdCBiZSBwb3NpdGl2ZTsgbGluZSBudW1iZXIgJWQgcmVqZWN0ZWQiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjE2NjQKKyM6IHJlYWQuYzoxNjQwCiBtc2dpZCAic3RhcnQgYWRkcmVzcyBub3Qgc3VwcG9ydGVkIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoxNjc0CisjOiByZWFkLmM6MTY0OQogbXNnaWQgIi5lcnIgZW5jb3VudGVyZWQiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjE2OTMgcmVhZC5jOjE2OTUKKyM6IHJlYWQuYzoxNjY3IHJlYWQuYzoxNjY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIi5mYWlsICVsZCBlbmNvdW50ZXJlZCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6MTczMgorIzogcmVhZC5jOjE3MDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiLmZpbGwgc2l6ZSBjbGFtcGVkIHRvICVkIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoxNzM3CisjOiByZWFkLmM6MTcxMAogbXNnaWQgInNpemUgbmVnYXRpdmU7IC5maWxsIGlnbm9yZWQiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjE3NDMKKyM6IHJlYWQuYzoxNzE2CiBtc2dpZCAicmVwZWF0IDwgMDsgLmZpbGwgaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6MTkwMworIzogcmVhZC5jOjE4NzMKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIC5saW5rb25jZSB0eXBlIGAlcyciCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjE5MTYgcmVhZC5jOjE5NDIKKyM6IHJlYWQuYzoxODg2IHJlYWQuYzoxOTEyCiBtc2dpZCAiLmxpbmtvbmNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgb2JqZWN0IGZpbGUgZm9ybWF0IgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoxOTM4CisjOiByZWFkLmM6MTkwOAogIywgYy1mb3JtYXQKIG1zZ2lkICJiZmRfc2V0X3NlY3Rpb25fZmxhZ3M6ICVzIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoxOTkzCi1tc2dpZCAibWlzc2luZyBzaXplIGV4cHJlc3Npb24iCi1tc2dzdHIgIiIKLQotIzogcmVhZC5jOjE5OTkKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiQlNTIGxlbmd0aCAoJWQpIDwgMCBpZ25vcmVkIgotbXNnc3RyICIiCi0KLSM6IHJlYWQuYzoyMDE1CisjOiByZWFkLmM6MTkzOAogIywgYy1mb3JtYXQKIG1zZ2lkICJlcnJvciBzZXR0aW5nIGZsYWdzIGZvciBcIi5zYnNzXCI6ICVzIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoyMDM4Ci1tc2dpZCAiZXhwZWN0ZWQgY29tbWEgYWZ0ZXIgc2l6ZSIKKyM6IHJlYWQuYzoxOTg2Cittc2dpZCAiZXhwZWN0ZWQgYWxpZ25tZW50IGFmdGVyIHNpemUiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjIwNzIKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiYWxpZ25tZW50IHRvbyBsYXJnZTsgJWQgYXNzdW1lZCIKLW1zZ3N0ciAiIgotCi0jOiByZWFkLmM6MjA3NworIzogcmVhZC5jOjIwMDAKIG1zZ2lkICJhbGlnbm1lbnQgbmVnYXRpdmU7IDAgYXNzdW1lZCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6MjM0MgorIzogcmVhZC5jOjIyMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYXR0ZW1wdCB0byByZWRlZmluZSBwc2V1ZG8tb3AgYCVzJyBpZ25vcmVkIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoyNDA4CisjOiByZWFkLmM6MjI5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHNlZ21lbnQgXCIlc1wiIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoyNDE2CisjOiByZWFkLmM6MjMwMAogbXNnaWQgIm9ubHkgY29uc3RhbnQgb2Zmc2V0cyBzdXBwb3J0ZWQgaW4gYWJzb2x1dGUgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6MjQ1NgorIzogcmVhZC5jOjIzMzkKIG1zZ2lkICJNUkkgc3R5bGUgT1JHIHBzZXVkby1vcCBub3Qgc3VwcG9ydGVkIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoyNjEzCisjOiByZWFkLmM6MjQ5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgc2VjdGlvbiB0eXBlIGAlcyciCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjI2MjcKKyM6IHJlYWQuYzoyNTA5CiBtc2dpZCAiYWJzb2x1dGUgc2VjdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjI2NDIKKyM6IHJlYWQuYzoyNTI0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBzZWN0aW9uIGNvbW1hbmQgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6MjcwOAorIzogcmVhZC5jOjI1ODgKIG1zZ2lkICIuZW5kciBlbmNvdW50ZXJlZCB3aXRob3V0IHByZWNlZWRpbmcgLnJlcHQsIC5pcmMsIG9yIC5pcnAiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjI3NDAKKyM6IHJlYWQuYzoyNjE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIHdpdGhvdXQgJXMiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjI5NDkKKyM6IHJlYWQuYzoyODIyCiBtc2dpZCAidW5zdXBwb3J0ZWQgdmFyaWFibGUgc2l6ZSBvciBmaWxsIHZhbHVlIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzoyOTc0CisjOiByZWFkLmM6Mjg0NwogbXNnaWQgIi5zcGFjZSByZXBlYXQgY291bnQgaXMgemVybywgaWdub3JlZCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6Mjk3NgorIzogcmVhZC5jOjI4NDkKIG1zZ2lkICIuc3BhY2UgcmVwZWF0IGNvdW50IGlzIG5lZ2F0aXZlLCBpZ25vcmVkIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzozMDA1CisjOiByZWFkLmM6Mjg3OAogbXNnaWQgInNwYWNlIGFsbG9jYXRpb24gdG9vIGNvbXBsZXggaW4gYWJzb2x1dGUgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6MzAxMQorIzogcmVhZC5jOjI4ODQKIG1zZ2lkICJzcGFjZSBhbGxvY2F0aW9uIHRvbyBjb21wbGV4IGluIGNvbW1vbiBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzozMDk5IHJlYWQuYzo0MTkwCisjOiByZWFkLmM6Mjk3MSByZWFkLmM6NDA1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgZmxvYXRpbmcgbGl0ZXJhbDogJXMiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjMxNzIKKyM6IHJlYWQuYzozMDM2CiAjLCBjLWZvcm1hdAotbXNnaWQgInJlc3Qgb2YgbGluZSBpZ25vcmVkOyBmaXJzdCBpZ25vcmVkIGNoYXJhY3RlciBpcyBgJWMnIgorbXNnaWQgImp1bmsgYXQgZW5kIG9mIGxpbmUsIGZpcnN0IHVucmVjb2duaXplZCBjaGFyYWN0ZXIgaXMgYCVjJyIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6MzE3NQorIzogcmVhZC5jOjMwMzkKICMsIGMtZm9ybWF0Ci1tc2dpZCAicmVzdCBvZiBsaW5lIGlnbm9yZWQ7IGZpcnN0IGlnbm9yZWQgY2hhcmFjdGVyIHZhbHVlZCAweCV4IgorbXNnaWQgImp1bmsgYXQgZW5kIG9mIGxpbmUsIGZpcnN0IHVucmVjb2duaXplZCBjaGFyYWN0ZXIgdmFsdWVkIDB4JXgiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjMyMjgKKyM6IHJlYWQuYzozMTAyCiBtc2dpZCAibWlzc2luZyBleHByZXNzaW9uIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzozNDA0CisjOiByZWFkLmM6MzI3OAogbXNnaWQgInJ2YSB3aXRob3V0IHN5bWJvbCIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6MzUzMAorIzogcmVhZC5jOjM0MDAKIG1zZ2lkICJhdHRlbXB0IHRvIHN0b3JlIHZhbHVlIGluIGFic29sdXRlIHNlY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjM1NjggcmVhZC5jOjQ0NjgKKyM6IHJlYWQuYzozNDM4IHJlYWQuYzo0MzEzCiBtc2dpZCAiemVybyBhc3N1bWVkIGZvciBtaXNzaW5nIGV4cHJlc3Npb24iCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjM1ODAgcmVhZC5jOjQ0ODAgd3JpdGUuYzozMjIKKyM6IHJlYWQuYzozNDUwIHJlYWQuYzo0MzI1IHdyaXRlLmM6MzE4CiBtc2dpZCAicmVnaXN0ZXIgdmFsdWUgdXNlZCBhcyBleHByZXNzaW9uIgogbXNnc3RyICIiCiAKICMuIExlYWRpbmcgYml0cyBjb250YWluIGJvdGggMHMgJiAxcy4KLSM6IHJlYWQuYzozNjcxCisjOiByZWFkLmM6MzU0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJ2YWx1ZSAweCVseCB0cnVuY2F0ZWQgdG8gMHglbHgiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjM2ODcKKyM6IHJlYWQuYzozNTU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImJpZ251bSB0cnVuY2F0ZWQgdG8gJWQgYnl0ZXMiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjM4NTQKKyM6IHJlYWQuYzozNzI0CiBtc2dpZCAidXNpbmcgYSBiaXQgZmllbGQgd2lkdGggb2YgemVybyIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6Mzg2MgorIzogcmVhZC5jOjM3MzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmllbGQgd2lkdGggXCIlc1wiIHRvbyBjb21wbGV4IGZvciBhIGJpdGZpZWxkIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzozODcwCisjOiByZWFkLmM6Mzc0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJmaWVsZCB3aWR0aCAlbHUgdG9vIGJpZyB0byBmaXQgaW4gJWQgYnl0ZXM6IHRydW5jYXRlZCB0byAlZCBiaXRzIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzozODkyCisjOiByZWFkLmM6Mzc2MgogIywgYy1mb3JtYXQKIG1zZ2lkICJmaWVsZCB2YWx1ZSBcIiVzXCIgdG9vIGNvbXBsZXggZm9yIGEgYml0ZmllbGQiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjQwMTggcmVhZC5jOjQyMTIKKyM6IHJlYWQuYzozODg4IHJlYWQuYzo0MDc5CiBtc2dpZCAidW5yZXNvbHZhYmxlIG9yIG5vbnBvc2l0aXZlIHJlcGVhdCBjb3VudDsgdXNpbmcgMSIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6NDA2OQorIzogcmVhZC5jOjM5MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBmbG9hdGluZyB0eXBlIHR5cGUgJyVjJyIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6NDA5MQorIzogcmVhZC5jOjM5NTkKIG1zZ2lkICJmbG9hdGluZyBwb2ludCBjb25zdGFudCB0b28gbGFyZ2UiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjQ1ODEKKyM6IHJlYWQuYzo0NDI5CiBtc2dpZCAic3RyaW5ncyBtdXN0IGJlIHBsYWNlZCBpbnRvIGEgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6NDYzMQorIzogcmVhZC5jOjQ0NzkKIG1zZ2lkICJleHBlY3RlZCA8bm4+IgogbXNnc3RyICIiCiAKICMuIFRvIGJlIGNvbXBhdGlibGUgd2l0aCBCU0QgNC4yIGFzOiBnaXZlIHRoZSBsdXNlciBhIGxpbmVmZWVkISEKLSM6IHJlYWQuYzo0NjY0IHJlYWQuYzo0NzUwCisjOiByZWFkLmM6NDUxMiByZWFkLmM6NDU5OAogbXNnaWQgInVudGVybWluYXRlZCBzdHJpbmc7IG5ld2xpbmUgaW5zZXJ0ZWQiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjQ3NTgKKyM6IHJlYWQuYzo0NjA2CiBtc2dpZCAiYmFkIGVzY2FwZWQgY2hhcmFjdGVyIGluIHN0cmluZyIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6NDc4NAorIzogcmVhZC5jOjQ2MzEKIG1zZ2lkICJleHBlY3RlZCBhZGRyZXNzIGV4cHJlc3Npb24iCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjQ4MDQKKyM6IHJlYWQuYzo0NjUwCiAjLCBjLWZvcm1hdAogbXNnaWQgInN5bWJvbCBcIiVzXCIgdW5kZWZpbmVkOyB6ZXJvIGFzc3VtZWQiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjQ4MDcKKyM6IHJlYWQuYzo0NjUzCiBtc2dpZCAic29tZSBzeW1ib2wgdW5kZWZpbmVkOyB6ZXJvIGFzc3VtZWQiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjQ4MjQKKyM6IHJlYWQuYzo0NjY5CiBtc2dpZCAiYmFkIG9yIGlycmVkdWNpYmxlIGFic29sdXRlIGV4cHJlc3Npb24iCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjQ4NjcKKyM6IHJlYWQuYzo0NzEwCiBtc2dpZCAidGhpcyBzdHJpbmcgbWF5IG5vdCBjb250YWluICdcXDAnIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzo0OTA0CisjOiByZWFkLmM6NDc0NgogbXNnaWQgIm1pc3Npbmcgc3RyaW5nIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzo1MDI3CisjOiByZWFkLmM6NDg2NgogIywgYy1mb3JtYXQKIG1zZ2lkICIuaW5jYmluIGNvdW50IHplcm8sIGlnbm9yaW5nIGAlcyciCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjUwNTMKKyM6IHJlYWQuYzo0ODkyCiAjLCBjLWZvcm1hdAogbXNnaWQgImZpbGUgbm90IGZvdW5kOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6NTA2NworIzogcmVhZC5jOjQ5MDYKICMsIGMtZm9ybWF0CiBtc2dpZCAic2VlayB0byBlbmQgb2YgLmluY2JpbiBmaWxlIGZhaWxlZCBgJXMnIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzo1MDc4CisjOiByZWFkLmM6NDkxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJza2lwICglbGQpICsgY291bnQgKCVsZCkgbGFyZ2VyIHRoYW4gZmlsZSBzaXplICglbGQpIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzo1MDg1CisjOiByZWFkLmM6NDkyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgc2tpcCB0byAlbGQgaW4gZmlsZSBgJXMnIgogbXNnc3RyICIiCiAKLSM6IHJlYWQuYzo1MDk0CisjOiByZWFkLmM6NDkzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJ0cnVuY2F0ZWQgZmlsZSBgJXMnLCAlbGQgb2YgJWxkIGJ5dGVzIHJlYWQiCiBtc2dzdHIgIiIKIAotIzogcmVhZC5jOjUyNTcKKyM6IHJlYWQuYzo1MDkxCiBtc2dpZCAibWlzc2luZyAuZnVuYyIKIG1zZ3N0ciAiIgogCi0jOiByZWFkLmM6NTI3NAorIzogcmVhZC5jOjUxMDgKIG1zZ2lkICIuZW5kZnVuYyBtaXNzaW5nIGZvciBwcmV2aW91cyAuZnVuYyIKIG1zZ3N0ciAiIgogCi0jOiBzdGFicy5jOjIyMCBzdGFicy5jOjIyOCBzdGFicy5jOjIzNiBzdGFicy5jOjI1NQorIzogc3RhYnMuYzoyMTUgc3RhYnMuYzoyMjMgc3RhYnMuYzoyMzEgc3RhYnMuYzoyNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiLnN0YWIlYzogbWlzc2luZyBjb21tYSIKIG1zZ3N0ciAiIgpAQCAtMTEyODUsMTgzICsxMTc4NywxODMgQEAKICMuIFRoaXMgY291bGQgaGFwcGVuIGZvciBleGFtcGxlIHdpdGggYSBzb3VyY2UgZmlsZSB3aXRoIGEgaHVnZQogIy4gbnVtYmVyIG9mIGxpbmVzLiAgVGhlIG9ubHkgY3VyZSBpcyB0byB1c2UgYSBkaWZmZXJlbnQgZGVidWcKICMuIGZvcm1hdCwgcHJvYmFibHkgRFdBUkYuCi0jOiBzdGFicy5jOjI0OAorIzogc3RhYnMuYzoyNDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiLnN0YWIlYzogZGVzY3JpcHRpb24gZmllbGQgJyV4JyB0b28gYmlnLCB0cnkgYSBkaWZmZXJlbnQgZGVidWcgZm9ybWF0IgogbXNnc3RyICIiCiAKLSM6IHN0YWJzLmM6NDMzCisjOiBzdGFicy5jOjQyNgogbXNnaWQgImNvbW1hIG1pc3NpbmcgaW4gLnhzdGFicyIKIG1zZ3N0ciAiIgogCi0jOiBzdWJzZWdzLmM6Mzc3CisjOiBzdWJzZWdzLmM6MzczCiAjLCBjLWZvcm1hdAogbXNnaWQgImF0dGVtcHQgdG8gc3dpdGNoIHRvIG5vbmV4aXN0ZW50IHNlZ21lbnQgXCIlc1wiIgogbXNnc3RyICIiCiAKLSM6IHN5bWJvbHMuYzozMTgKKyM6IHN5bWJvbHMuYzozMDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGRlZmluZSBzeW1ib2wgYCVzJyBpbiBhYnNvbHV0ZSBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IHN5bWJvbHMuYzo0NTIKKyM6IHN5bWJvbHMuYzo0NDEKICMsIGMtZm9ybWF0CiBtc2dpZCAic3ltYm9sIGAlcycgaXMgYWxyZWFkeSBkZWZpbmVkIGFzIFwiJXNcIi8lcyVsZCIKIG1zZ3N0ciAiIgogCi0jOiBzeW1ib2xzLmM6NTI5IHN5bWJvbHMuYzo1MzYKKyM6IHN5bWJvbHMuYzo1MTcgc3ltYm9scy5jOjUyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnNlcnRpbmcgXCIlc1wiIGludG8gc3ltYm9sIHRhYmxlIGZhaWxlZDogJXMiCiBtc2dzdHIgIiIKIAotIzogc3ltYm9scy5jOjg3NCBzeW1ib2xzLmM6ODc4CisjOiBzeW1ib2xzLmM6ODM4IHN5bWJvbHMuYzo4NDIKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5kZWZpbmVkIHN5bWJvbCBgJXMnIGluIG9wZXJhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBzeW1ib2xzLmM6ODg1CisjOiBzeW1ib2xzLmM6ODQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgc2VjdGlvbnMgZm9yIG9wZXJhdGlvbiBvbiBgJXMnIGFuZCBgJXMnIgogbXNnc3RyICIiCiAKLSM6IHN5bWJvbHMuYzo4ODkKKyM6IHN5bWJvbHMuYzo4NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBzZWN0aW9uIGZvciBvcGVyYXRpb24gb24gYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBzeW1ib2xzLmM6ODk3IHN5bWJvbHMuYzo5MDAKKyM6IHN5bWJvbHMuYzo4NjEgc3ltYm9scy5jOjg2NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmRlZmluZWQgc3ltYm9sIGAlcycgaW4gb3BlcmF0aW9uIHNldHRpbmcgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBzeW1ib2xzLmM6OTA3CisjOiBzeW1ib2xzLmM6ODcxCiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgc2VjdGlvbnMgZm9yIG9wZXJhdGlvbiBvbiBgJXMnIGFuZCBgJXMnIHNldHRpbmcgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBzeW1ib2xzLmM6OTExCisjOiBzeW1ib2xzLmM6ODc1CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgc2VjdGlvbiBmb3Igb3BlcmF0aW9uIG9uIGAlcycgc2V0dGluZyBgJXMnIgogbXNnc3RyICIiCiAKLSM6IHN5bWJvbHMuYzo5NjQKKyM6IHN5bWJvbHMuYzo5MjcKICMsIGMtZm9ybWF0CiBtc2dpZCAic3ltYm9sIGRlZmluaXRpb24gbG9vcCBlbmNvdW50ZXJlZCBhdCBgJXMnIgogbXNnc3RyICIiCiAKLSM6IHN5bWJvbHMuYzoxMTkzCisjOiBzeW1ib2xzLmM6MTE1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJkaXZpc2lvbiBieSB6ZXJvIHdoZW4gc2V0dGluZyBgJXMnIgogbXNnc3RyICIiCiAKLSM6IHN5bWJvbHMuYzoxMjgwIHdyaXRlLmM6MjAwOAorIzogc3ltYm9scy5jOjEyNDMgd3JpdGUuYzoxOTczCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IHJlc29sdmUgdmFsdWUgZm9yIHN5bWJvbCBgJXMnIgogbXNnc3RyICIiCiAKLSM6IHN5bWJvbHMuYzoxNjc0CisjOiBzeW1ib2xzLmM6MTYyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJcIiVkXCIgKGluc3RhbmNlIG51bWJlciAlZCBvZiBhICVzIGxhYmVsKSIKIG1zZ3N0ciAiIgogCi0jOiBzeW1ib2xzLmM6MTcxMQorIzogc3ltYm9scy5jOjE2NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgdW5yZXNvbHZlZCBzeW1ib2wgYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBzeW1ib2xzLmM6MTk3MQorIzogc3ltYm9scy5jOjE5MDQKIG1zZ2lkICJzZWN0aW9uIHN5bWJvbHMgYXJlIGFscmVhZHkgZ2xvYmFsIgogbXNnc3RyICIiCiAKLSM6IHN5bWJvbHMuYzoyMDE0CisjOiBzeW1ib2xzLmM6MTk0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJBY2Nlc3NpbmcgZnVuY3Rpb24gYCVzJyBhcyB0aHJlYWQtbG9jYWwgb2JqZWN0IgogbXNnc3RyICIiCiAKLSM6IHN5bWJvbHMuYzoyMDE4CisjOiBzeW1ib2xzLmM6MTk0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJBY2Nlc3NpbmcgYCVzJyBhcyB0aHJlYWQtbG9jYWwgb2JqZWN0IgogbXNnc3RyICIiCiAKLSM6IHdyaXRlLmM6MjE1CisjOiB3cml0ZS5jOjIxMwogIywgYy1mb3JtYXQKIG1zZ2lkICJmaWVsZCBmeF9zaXplIHRvbyBzbWFsbCB0byBob2xkICVkIgogbXNnc3RyICIiCiAKLSM6IHdyaXRlLmM6MzQ5CisjOiB3cml0ZS5jOjM0NQogbXNnaWQgInJ2YSBub3Qgc3VwcG9ydGVkIgogbXNnc3RyICIiCiAKLSM6IHdyaXRlLmM6NTcwCisjOiB3cml0ZS5jOjU0NQogIywgYy1mb3JtYXQKIG1zZ2lkICJhdHRlbXB0IHRvIC5vcmcvLnNwYWNlIGJhY2t3YXJkcz8gKCVsZCkiCiBtc2dzdHIgIiIKIAotIzogd3JpdGUuYzoxMDAyIHdyaXRlLmM6MTA3NAorIzogd3JpdGUuYzo5Njggd3JpdGUuYzoxMDQwCiBtc2dpZCAicmVsb2NhdGlvbiBvdXQgb2YgcmFuZ2UiCiBtc2dzdHIgIiIKIAotIzogd3JpdGUuYzoxMDA1IHdyaXRlLmM6MTA3NworIzogd3JpdGUuYzo5NzEgd3JpdGUuYzoxMDQzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiV1OiBiYWQgcmV0dXJuIGZyb20gYmZkX2luc3RhbGxfcmVsb2NhdGlvbjogJXgiCiBtc2dzdHIgIiIKIAotIzogd3JpdGUuYzoxMDU3CisjOiB3cml0ZS5jOjEwMjMKIG1zZ2lkICJpbnRlcm5hbCBlcnJvcjogZml4dXAgbm90IGNvbnRhaW5lZCB3aXRoaW4gZnJhZyIKIG1zZ3N0ciAiIgogCi0jOiB3cml0ZS5jOjExNjQgd3JpdGUuYzoxMTg4CisjOiB3cml0ZS5jOjExMjkgd3JpdGUuYzoxMTUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZBVEFMOiBDYW4ndCB3cml0ZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiB3cml0ZS5jOjEyMjAKKyM6IHdyaXRlLmM6MTE4NQogbXNnaWQgImNhbm5vdCB3cml0ZSB0byBvdXRwdXQgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiB3cml0ZS5jOjE0NzcKKyM6IHdyaXRlLmM6MTQ0MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlZCBlcnJvciVzLCAlZCB3YXJuaW5nJXMsIGdlbmVyYXRpbmcgYmFkIG9iamVjdCBmaWxlIgogbXNnc3RyICIiCiAKLSM6IHdyaXRlLmM6MTQ4NAorIzogd3JpdGUuYzoxNDQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVkIGVycm9yJXMsICVkIHdhcm5pbmclcywgbm8gb2JqZWN0IGZpbGUgZ2VuZXJhdGVkIgogbXNnc3RyICIiCiAKLSM6IHdyaXRlLmM6MTk0NQorIzogd3JpdGUuYzoxOTEwCiAjLCBjLWZvcm1hdAogbXNnaWQgImxvY2FsIGxhYmVsIGAlcycgaXMgbm90IGRlZmluZWQiCiBtc2dzdHIgIiIKIAotIzogd3JpdGUuYzoyMjQ0CisjOiB3cml0ZS5jOjIyMDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiYWxpZ25tZW50IHBhZGRpbmcgKCVsdSBieXRlcykgbm90IGEgbXVsdGlwbGUgb2YgJWxkIgogbXNnc3RyICIiCiAKLSM6IHdyaXRlLmM6MjM2MQorIzogd3JpdGUuYzoyMzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIi53b3JkICVzLSVzKyVzIGRpZG4ndCBmaXQiCiBtc2dzdHIgIiIKIAotIzogd3JpdGUuYzoyNDQ2CisjOiB3cml0ZS5jOjI0MDUKIG1zZ2lkICJhdHRlbXB0IHRvIG1vdmUgLm9yZyBiYWNrd2FyZHMiCiBtc2dzdHIgIiIKIAotIzogd3JpdGUuYzoyNDc0CisjOiB3cml0ZS5jOjI0MzMKIG1zZ2lkICIuc3BhY2Ugc3BlY2lmaWVzIG5vbi1hYnNvbHV0ZSB2YWx1ZSIKIG1zZ3N0ciAiIgogCi0jOiB3cml0ZS5jOjI0ODEKKyM6IHdyaXRlLmM6MjQ0MAogbXNnaWQgIi5zcGFjZSBvciAuZmlsbCB3aXRoIG5lZ2F0aXZlIHZhbHVlLCBpZ25vcmVkIgogbXNnc3RyICIiCiAKLSM6IHdyaXRlLmM6Mjc3MworIzogd3JpdGUuYzoyNzI0CiAjLCBjLWZvcm1hdAogbXNnaWQgInZhbHVlIG9mICVzIHRvbyBsYXJnZSBmb3IgZmllbGQgb2YgJWQgYnl0ZXMgYXQgJXMiCiBtc2dzdHIgIiIKIAotIzogd3JpdGUuYzoyNzg1CisjOiB3cml0ZS5jOjI3MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAic2lnbmVkIC53b3JkIG92ZXJmbG93OyBzd2l0Y2ggbWF5IGJlIHRvbyBsYXJnZTsgJWxkIGF0IDB4JWx4IgogbXNnc3RyICIiCmRpZmYgLS1naXQgYS9nYXMvcmVhZC5jIGIvZ2FzL3JlYWQuYwppbmRleCBmNTA0MDljLi40MzBhNjdlIDEwMDY0NAotLS0gYS9nYXMvcmVhZC5jCisrKyBiL2dhcy9yZWFkLmMKQEAgLTEwNTMsNyArMTA1Myw3IEBACiAjZW5kaWYKIAkgIGlucHV0X2xpbmVfcG9pbnRlci0tOwogCSAgLyogUmVwb3J0IHVua25vd24gY2hhciBhcyBpZ25vcmVkLiAgKi8KLQkgIGlnbm9yZV9yZXN0X29mX2xpbmUgKCk7CisJICBkZW1hbmRfZW1wdHlfcmVzdF9vZl9saW5lICgpOwogCX0KIAogI2lmZGVmIG1kX2FmdGVyX3Bhc3NfaG9vawpAQCAtMzAyMCw2ICszMDIwLDEwIEBACiAjZW5kaWYKIH0KIAwKKworLyogVmVyaWZ5IHRoYXQgd2UgYXJlIGF0IHRoZSBlbmQgb2YgYSBsaW5lLiAgSWYgbm90LCBpc3N1ZSBhbiBlcnJvciBhbmQKKyAgIHNraXAgdG8gRU9MLiAgKi8KKwogdm9pZAogZGVtYW5kX2VtcHR5X3Jlc3Rfb2ZfbGluZSAodm9pZCkKIHsKQEAgLTMwMjcsMjggKzMwMzEsMjkgQEAKICAgaWYgKGlzX2VuZF9vZl9saW5lWyh1bnNpZ25lZCBjaGFyKSAqaW5wdXRfbGluZV9wb2ludGVyXSkKICAgICBpbnB1dF9saW5lX3BvaW50ZXIrKzsKICAgZWxzZQotICAgIGlnbm9yZV9yZXN0X29mX2xpbmUgKCk7Ci0KLSAgLyogUmV0dXJuIGhhdmluZyBhbHJlYWR5IHN3YWxsb3dlZCBlbmQtb2YtbGluZS4gICovCisgICAgeworICAgICAgaWYgKElTUFJJTlQgKCppbnB1dF9saW5lX3BvaW50ZXIpKQorCWFzX2JhZCAoXygianVuayBhdCBlbmQgb2YgbGluZSwgZmlyc3QgdW5yZWNvZ25pemVkIGNoYXJhY3RlciBpcyBgJWMnIiksCisJCSAqaW5wdXRfbGluZV9wb2ludGVyKTsKKyAgICAgIGVsc2UKKwlhc19iYWQgKF8oImp1bmsgYXQgZW5kIG9mIGxpbmUsIGZpcnN0IHVucmVjb2duaXplZCBjaGFyYWN0ZXIgdmFsdWVkIDB4JXgiKSwKKwkJICppbnB1dF9saW5lX3BvaW50ZXIpOworICAgICAgaWdub3JlX3Jlc3Rfb2ZfbGluZSAoKTsKKyAgICB9CisgIAorICAvKiBSZXR1cm4gcG9pbnRpbmcganVzdCBhZnRlciBlbmQtb2YtbGluZS4gICovCisgIGtub3cgKGlzX2VuZF9vZl9saW5lWyh1bnNpZ25lZCBjaGFyKSBpbnB1dF9saW5lX3BvaW50ZXJbLTFdXSk7CiB9CiAKKy8qIFNpbGVudGx5IGFkdmFuY2UgdG8gdGhlIGVuZCBvZiBsaW5lLiAgVXNlIHRoaXMgYWZ0ZXIgYWxyZWFkeSBoYXZpbmcKKyAgIGlzc3VlZCBhbiBlcnJvciBhYm91dCBzb21ldGhpbmcgYmFkLiAgKi8KKwogdm9pZAogaWdub3JlX3Jlc3Rfb2ZfbGluZSAodm9pZCkKIHsKLSAgLyogRm9yIHN1c3BlY3QgbGluZXM6IGdpdmVzIHdhcm5pbmcuICAqLwotICBpZiAoIWlzX2VuZF9vZl9saW5lWyh1bnNpZ25lZCBjaGFyKSAqaW5wdXRfbGluZV9wb2ludGVyXSkKLSAgICB7Ci0gICAgICBpZiAoSVNQUklOVCAoKmlucHV0X2xpbmVfcG9pbnRlcikpCi0JYXNfd2FybiAoXygicmVzdCBvZiBsaW5lIGlnbm9yZWQ7IGZpcnN0IGlnbm9yZWQgY2hhcmFjdGVyIGlzIGAlYyciKSwKLQkJICppbnB1dF9saW5lX3BvaW50ZXIpOwotICAgICAgZWxzZQotCWFzX3dhcm4gKF8oInJlc3Qgb2YgbGluZSBpZ25vcmVkOyBmaXJzdCBpZ25vcmVkIGNoYXJhY3RlciB2YWx1ZWQgMHgleCIpLAotCQkgKmlucHV0X2xpbmVfcG9pbnRlcik7Ci0KLSAgICAgIHdoaWxlIChpbnB1dF9saW5lX3BvaW50ZXIgPCBidWZmZXJfbGltaXQKLQkgICAgICYmICFpc19lbmRfb2ZfbGluZVsodW5zaWduZWQgY2hhcikgKmlucHV0X2xpbmVfcG9pbnRlcl0pCi0JaW5wdXRfbGluZV9wb2ludGVyKys7Ci0gICAgfQorICB3aGlsZSAoaW5wdXRfbGluZV9wb2ludGVyIDwgYnVmZmVyX2xpbWl0CisJICYmICFpc19lbmRfb2ZfbGluZVsodW5zaWduZWQgY2hhcikgKmlucHV0X2xpbmVfcG9pbnRlcl0pCisgICAgaW5wdXRfbGluZV9wb2ludGVyKys7CiAKICAgaW5wdXRfbGluZV9wb2ludGVyKys7CiAKQEAgLTQ3MzgsNyArNDc0Myw3IEBACiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgYXNfd2FybiAoXygibWlzc2luZyBzdHJpbmciKSk7CisgICAgICBhc19iYWQgKF8oIm1pc3Npbmcgc3RyaW5nIikpOwogICAgICAgcmV0dmFsID0gTlVMTDsKICAgICAgIGlnbm9yZV9yZXN0X29mX2xpbmUgKCk7CiAgICAgfQpAQCAtNDgxNCw3ICs0ODE5LDcgQEAKICAgaWYgKGZsYWdfbXJpKQogICAgIHsKICAgICAgIC8qIENoZWNrIGdhcmJhZ2UgYWZ0ZXIgdGhlIGV4cHJlc3Npb24uICAqLwotICAgICAgaWdub3JlX3Jlc3Rfb2ZfbGluZSAoKTsKKyAgICAgIGRlbWFuZF9lbXB0eV9yZXN0X29mX2xpbmUgKCk7CiAgICAgICBtcmlfY29tbWVudF9lbmQgKHN0b3AsIHN0b3BjKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9nYXMvc3RhYnMuYyBiL2dhcy9zdGFicy5jCmluZGV4IDNkMzI3MjkuLmY4YWNkYzggMTAwNjQ0Ci0tLSBhL2dhcy9zdGFicy5jCisrKyBiL2dhcy9zdGFicy5jCkBAIC01MjAsNyArNTIwLDcgQEAKICAgY2hhciAqYnVmOwogICBjaGFyICp0bXAgPSBmaWxlOwogICBjaGFyICplbmRwID0gZmlsZSArIHN0cmxlbiAoZmlsZSk7Ci0gIGNoYXIgKmJ1ZnAgPSBidWY7CisgIGNoYXIgKmJ1ZnA7CiAKICAgaWYgKGxhc3RfZmlsZSAhPSBOVUxMCiAgICAgICAmJiBzdHJjbXAgKGxhc3RfZmlsZSwgZmlsZSkgPT0gMCkKZGlmZiAtLWdpdCBhL2dhcy90ZXN0c3VpdGUvQ2hhbmdlTG9nIGIvZ2FzL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKaW5kZXggOTc4M2FkMi4uZmViYmNlOCAxMDA2NDQKLS0tIGEvZ2FzL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAwNC0wNC0wMSAgQXNnYXJpIEppbmlhICA8YXNnYXJpakBrcGl0Y3VtbWlucy5jb20+CisKKwkqIGdhcy9zaC9yZW5lc2FzLTEucywgZ2FzL3NoL3JlbmVzYXMtMS5kOiBOZXcgdGVzdCBmb3IgLXJlbmVzYXMKKwlvcHRpb24uCisJKiBnYXMvc2gvYmFzaWMuZXhwOiBSdW4gdGhlIG5ldyB0ZXN0LgorCisyMDA0LTA0LTAxICBEYXZlIEtvcm4gIDxka0BhcnRpbWkuY29tPgorCisJKiBnYXMvZGx4L2FsbHRlc3RzLmV4cDogRXhlY3V0ZSBuZXcgbG9oaSB0ZXN0LgorCSogZ2FzL2RseC9sb2hpLnM6IE5ldyB0ZXN0IGZvciBzcHVyaW91cyBsbzE2L2hpMTYKKwkgIHJlbG9jIG92ZXJmbG93IGNoZWNraW5nLgorCSogZ2FzL2RseC9sb2hpLmQ6IE5ldyBmaWxlOiBleHBlY3RlZCBvdXRwdXQuCisJKiBnYXMvZGx4L2xoaS5kOiBVcGRhdGVkIHRvIHByb3Blcmx5IGV4cGVjdCBsbzE2CisJICByZWxvY2F0aW9ucyB3aGVyZSBhc2tlZCBmb3IuCisJKiBnYXMvZGx4L2l0eXBlLmQ6IExpa2V3aXNlLgorCSogZ2FzL2RseC9saGkuZDogQ29ycmVjdGVkIGN1dCtwYXN0ZSBlcnJvciBpbiB0ZXN0IG5hbWUuCisKKzIwMDQtMDMtMzAgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CisKKwkqIGdhcy9tYWNyb3MvbWFjcm9zLmV4cDogUmVtb3ZlIG1lbnRpb24gb2YgTVBXIGNvbmZpZy4KKworMjAwNC0wMy0yNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKworCSogZ2FzL2k4NjAvZGlyLWludGVsMDMtZXJyLmw6IFVwZGF0ZSBmb3IganVuayBhdCBlbmQgbGluZSBiZWNvbWluZworCWFuIGVycm9yLgorCSogZ2FzL202OGhjMTEvbTY4aGMxMS5leHA6IExpa2V3aXNlLgorCisyMDA0LTAzLTIzICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgorCisJKiBnYXMvY2ZpL2NmaS1tNjhrLmQ6IEFkanVzdCBvZmZzZXRzLgorCiAyMDA0LTAzLTIyICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KIAogCSogZ2FzL2NyaXMvcmVncmVnLmQ6IEFzc2VtYmxlIHdpdGggLS1uby1tdWwtYnVnLWFib3J0LgpAQCAtMzgsNiArNjksNTEgQEAKIAlWSUEgUGFkTG9jayBpbnN0cnVjdGlvbnMuCiAJKiBnYXMvaTM4Ni9pMzg2LmV4cDogUnVuIHBhZGxvY2sgdGVzdHMuCiAKKzIwMDQtMDMtMTIgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKKwkqIGdhcy9pMzg2L2thdG1haS5kOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCisKKwkqIGdhcy9pMzg2L2thdG1haS5kOiBBZGp1c3QgZm9yIGNsZmx1c2ggY2hhbmdlLgorCisyMDA0LTAzLTA4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CisKKwkqIGdhcy9jZmkvY2ZpLXMzOTB4LTEuZDogQWRqdXN0IG9mZnNldHMuCisKKzIwMDQtMDMtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CisKKwkqIGdhcy9jZmkvY2ZpLWNvbW1vbi0yLmQsIGdhcy9jZmkvY2ZpLWkzODYuZDogQWRqdXN0IG9mZnNldHMuCisKKzIwMDQtMDMtMDcgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KKworCSogZ2FzL2NmaS9jZmkteDg2XzY0LmQ6IEFkanVzdCBvZmZzZXRzLgorCisyMDA0LTAzLTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgorCisJKiBnYXMvYWxwaGEvZWxmLXJlbG9jLTguZCwgZ2FzL2NmaS9jZmktYWxwaGEtMS5kLAorCWdhcy9jZmkvY2ZpLWFscGhhLTIuZCwgZ2FzL2NmaS9jZmktYWxwaGEtMy5kLCBnYXMvY2ZpL2NmaS1jb21tb24tMS5kLAorCWdhcy9jZmkvY2ZpLWNvbW1vbi0yLmQsIGdhcy9jZmkvY2ZpLWNvbW1vbi0zLmQ6IEFkanVzdCBvZmZzZXRzLgorCisyMDA0LTAzLTAzICBLYXogS29qaW1hICA8a2tvamltYUByci5paWo0dS5vci5qcD4KKworCSogZ2FzL3NoL3NoNjQvZXJyLWRzcC5zOiBGaXggZXhwZWN0ZWQgZXJyb3IgbWVzc2FnZS4KKworMjAwNC0wMy0wMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgorCisJKiBnYXMvZnJ2L2ZyNDA1LWluc24uW3NkbF06IE5ldyB0ZXN0LgorCSogZ2FzL2Zydi9mcjQ1MC1zcHIuW3NkXTogTmV3IHRlc3QuCisJKiBnYXMvZnJ2L2ZyNDUwLWluc24uW3NkbF06IE5ldyB0ZXN0LgorCSogZ2FzL2Zydi9mcjQ1MC1tZWRpYS1pc3N1ZS5bc2xdOiBOZXcgdGVzdC4KKwkqIGdhcy9mcnYvYWxsaW5zbi5leHA6IFJ1biBuZXcgdGVzdHMuICBFbnN1cmUgZnI0MDUgaW5zdHJ1Y3Rpb25zCisJYXJlbid0IGFjY2VwdGVkIGZvciAtbWNwdT1mcjQwMCBvciAtbWNwdT1mcjUwMC4gIEVuc3VyZSBmcjQ1MAorCWluc3RydWN0aW9ucyBhcmVuJ3QgYWNjZXB0ZWQgZm9yIC1tY3B1PWZyNDAwLCAtbWNwdT1mcjQwNSBvcgorCS1tY3B1PWZyNTAwLgorCisyMDA0LTAzLTAxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CisKKwkqIGdhcy9mcnYvYWxsaW5zbi5zIChyc3RiLCByc3RoLCByc3QsIHJzdGQsIHJzdHEpOiBSZXBsYWNlIHdpdGggbm9wcy4KKwkocnN0YmYsIHJzdGhmLCByc3RmLCByc3RkZiwgcnN0cWYpOiBMaWtld2lzZS4KKwkqIGdhcy9mcnYvYWxsaW5zbi5kOiBVcGRhdGUgYWNjb3JkaW5nbHkuCisKIDIwMDQtMDItMTcgIFBldGtvIE1hbm9sb3YgIDxwZXRrYW5AbnVjbGV1c3lzLmNvbT4KIAogCSogZ2FzL2FybS9tYXZlcmljay5jOiBEU1BTQyB0by9mcm9tIG9wY29kZSBmaXhlcy4KZGlmZiAtLWdpdCBhL2dhcy90ZXN0c3VpdGUvZ2FzL2FscGhhL2VsZi1yZWxvYy04LmQgYi9nYXMvdGVzdHN1aXRlL2dhcy9hbHBoYS9lbGYtcmVsb2MtOC5kCmluZGV4IDMyZWJmOTcuLjhiYTc4YzMgMTAwNjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL2FscGhhL2VsZi1yZWxvYy04LmQKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvYWxwaGEvZWxmLXJlbG9jLTguZApAQCAtMzExLDIwICszMTEsMjAgQEAKIAogUkVMT0NBVElPTiBSRUNPUkRTIEZPUiBcW1wuZWhfZnJhbWVcXToKIE9GRlNFVCAqVFlQRSAqVkFMVUUgCi0wKjAwMDAwMWIgU1JFTDMyICAgICAgICAgICAgXC5pbml0XC50ZXh0Ci0wKjAwMDAwMzEgU1JFTDMyICAgICAgICAgICAgXC5pbml0XC50ZXh0XCsweDAqMDAwMDA1MAotMCowMDAwMDQyIFNSRUwzMiAgICAgICAgICAgIFwuaW5pdFwudGV4dFwrMHgwKjAwMDAwODAKLTAqMDAwMDA1MyBTUkVMMzIgICAgICAgICAgICBcLmluaXRcLnRleHRcKzB4MCowMDAwMGIwCi0wKjAwMDAwNzQgU1JFTDMyICAgICAgICAgICAgXC5pbml0XC50ZXh0XCsweDAqMDAwMDJjMAotMCowMDAwMDkyIFNSRUwzMiAgICAgICAgICAgIFwuaW5pdFwudGV4dFwrMHgwKjAwMDA1YTAKLTAqMDAwMDBhYSBTUkVMMzIgICAgICAgICAgICBcLmluaXRcLnRleHRcKzB4MCowMDAwNWYwCi0wKjAwMDAwYmIgU1JFTDMyICAgICAgICAgICAgXC5pbml0XC50ZXh0XCsweDAqMDAwMDYxMAotMCowMDAwMGNjIFNSRUwzMiAgICAgICAgICAgIFwuaW5pdFwudGV4dFwrMHgwKjAwMDA2MzAKLTAqMDAwMDBlNiBTUkVMMzIgICAgICAgICAgICBcLmluaXRcLnRleHRcKzB4MCowMDAwNzUwCi0wKjAwMDAxMGEgU1JFTDMyICAgICAgICAgICAgXC5pbml0XC50ZXh0XCsweDAqMDAwMDk5MAotMCowMDAwMTI0IFNSRUwzMiAgICAgICAgICAgIFwuaW5pdFwudGV4dFwrMHgwKjAwMDBhMTAKLTAqMDAwMDEzNSBTUkVMMzIgICAgICAgICAgICBcLmluaXRcLnRleHRcKzB4MCowMDAwYTIwCi0wKjAwMDAxNDYgU1JFTDMyICAgICAgICAgICAgXC5pbml0XC50ZXh0XCsweDAqMDAwMGE0MAotMCowMDAwMTVlIFNSRUwzMiAgICAgICAgICAgIFwuaW5pdFwudGV4dFwrMHgwKjAwMDBhOTAKLTAqMDAwMDE2ZiBTUkVMMzIgICAgICAgICAgICBcLmluaXRcLnRleHRcKzB4MCowMDAwYWEwCi0wKjAwMDAxODAgU1JFTDMyICAgICAgICAgICAgXC50ZXh0CiswKjAwMDAwMWMgU1JFTDMyICAgICAgICAgICAgXC5pbml0XC50ZXh0CiswKjAwMDAwMzQgU1JFTDMyICAgICAgICAgICAgXC5pbml0XC50ZXh0XCsweDAqMDAwMDA1MAorMCowMDAwMDQ4IFNSRUwzMiAgICAgICAgICAgIFwuaW5pdFwudGV4dFwrMHgwKjAwMDAwODAKKzAqMDAwMDA1YyBTUkVMMzIgICAgICAgICAgICBcLmluaXRcLnRleHRcKzB4MCowMDAwMGIwCiswKjAwMDAwODAgU1JFTDMyICAgICAgICAgICAgXC5pbml0XC50ZXh0XCsweDAqMDAwMDJjMAorMCowMDAwMGEwIFNSRUwzMiAgICAgICAgICAgIFwuaW5pdFwudGV4dFwrMHgwKjAwMDA1YTAKKzAqMDAwMDBiOCBTUkVMMzIgICAgICAgICAgICBcLmluaXRcLnRleHRcKzB4MCowMDAwNWYwCiswKjAwMDAwY2MgU1JFTDMyICAgICAgICAgICAgXC5pbml0XC50ZXh0XCsweDAqMDAwMDYxMAorMCowMDAwMGUwIFNSRUwzMiAgICAgICAgICAgIFwuaW5pdFwudGV4dFwrMHgwKjAwMDA2MzAKKzAqMDAwMDBmYyBTUkVMMzIgICAgICAgICAgICBcLmluaXRcLnRleHRcKzB4MCowMDAwNzUwCiswKjAwMDAxMjAgU1JFTDMyICAgICAgICAgICAgXC5pbml0XC50ZXh0XCsweDAqMDAwMDk5MAorMCowMDAwMTNjIFNSRUwzMiAgICAgICAgICAgIFwuaW5pdFwudGV4dFwrMHgwKjAwMDBhMTAKKzAqMDAwMDE1MCBTUkVMMzIgICAgICAgICAgICBcLmluaXRcLnRleHRcKzB4MCowMDAwYTIwCiswKjAwMDAxNjQgU1JFTDMyICAgICAgICAgICAgXC5pbml0XC50ZXh0XCsweDAqMDAwMGE0MAorMCowMDAwMTdjIFNSRUwzMiAgICAgICAgICAgIFwuaW5pdFwudGV4dFwrMHgwKjAwMDBhOTAKKzAqMDAwMDE5MCBTUkVMMzIgICAgICAgICAgICBcLmluaXRcLnRleHRcKzB4MCowMDAwYWEwCiswKjAwMDAxYTQgU1JFTDMyICAgICAgICAgICAgXC50ZXh0CmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWFscGhhLTEuZCBiL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktYWxwaGEtMS5kCmluZGV4IDczNzgzZTkuLjk1NjhkM2IgMTAwNjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktYWxwaGEtMS5kCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktYWxwaGEtMS5kCkBAIC0yLDcgKzIsNyBAQAogI25hbWU6IENGSSBvbiBhbHBoYQogVGhlIHNlY3Rpb24gLmVoX2ZyYW1lIGNvbnRhaW5zOgogCi0wMDAwMDAwMCAwMDAwMDAwZiAwMDAwMDAwMCBDSUUKKzAwMDAwMDAwIDAwMDAwMDEwIDAwMDAwMDAwIENJRQogICBWZXJzaW9uOiAgICAgICAgICAgICAgIDEKICAgQXVnbWVudGF0aW9uOiAgICAgICAgICAielIiCiAgIENvZGUgYWxpZ25tZW50IGZhY3RvcjogNApAQCAtMTEsMTIgKzExLDE5IEBACiAgIEF1Z21lbnRhdGlvbiBkYXRhOiAgICAgMWIKIAogICBEV19DRkFfZGVmX2NmYV9yZWc6IHIzMAorICBEV19DRkFfbm9wCiAKLTAwMDAwMDEzIDAwMDAwMDE5IDAwMDAwMDE3IEZERSBjaWU9MDAwMDAwMDAgcGM9MDAwMDAwMWIuLjAwMDAwMDRmCi0gIERXX0NGQV9hZHZhbmNlX2xvYzogMjQgdG8gMDAwMDAwMzMKKzAwMDAwMDE0IDAwMDAwMDIwIDAwMDAwMDE4IEZERSBjaWU9MDAwMDAwMDAgcGM9MDAwMDAwMWMuLjAwMDAwMDUwCisgIERXX0NGQV9hZHZhbmNlX2xvYzogMjQgdG8gMDAwMDAwMzQKICAgRFdfQ0ZBX2RlZl9jZmE6IHIxNSBvZnMgMzIKICAgRFdfQ0ZBX29mZnNldDogcjI2IGF0IGNmYS0zMgogICBEV19DRkFfb2Zmc2V0OiByOSBhdCBjZmEtMjQKICAgRFdfQ0ZBX29mZnNldDogcjE1IGF0IGNmYS0xNgogICBEV19DRkFfb2Zmc2V0OiByMzQgYXQgY2ZhLTgKLQorICBEV19DRkFfbm9wCisgIERXX0NGQV9ub3AKKyAgRFdfQ0ZBX25vcAorICBEV19DRkFfbm9wCisgIERXX0NGQV9ub3AKKyAgRFdfQ0ZBX25vcAorICBEV19DRkFfbm9wCmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWFscGhhLTIuZCBiL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktYWxwaGEtMi5kCmluZGV4IDQ5ZjhjY2UuLjRhODdkYTIgMTAwNjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktYWxwaGEtMi5kCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktYWxwaGEtMi5kCkBAIC01LDUgKzUsNSBAQAogCiBSRUxPQ0FUSU9OIFJFQ09SRFMgRk9SIFxbXC5laF9mcmFtZVxdOgogT0ZGU0VUICAgICAgICAgICBUWVBFICAgICAgICAgICAgICBWQUxVRSAKLTAqMDAwMDAxYiBTUkVMMzIgICAgICAgICAgICBcLnRleHQKLTAqMDAwMDAyYyBTUkVMMzIgICAgICAgICAgICBcLnRleHRcKzB4MCowMDAwMDA0CiswKjAwMDAwMWMgU1JFTDMyICAgICAgICAgICAgXC50ZXh0CiswKjAwMDAwMzAgU1JFTDMyICAgICAgICAgICAgXC50ZXh0XCsweDAqMDAwMDAwNApkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1hbHBoYS0zLmQgYi9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWFscGhhLTMuZAppbmRleCA0ZDhiZDg4Li5mM2FkMDg0IDEwMDY0NAotLS0gYS9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWFscGhhLTMuZAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWFscGhhLTMuZApAQCAtMiw3ICsyLDcgQEAKICNuYW1lOiBDRkkgb24gYWxwaGEsIDMKIFRoZSBzZWN0aW9uIC5laF9mcmFtZSBjb250YWluczoKIAotMDAwMDAwMDAgMDAwMDAwMGYgMDAwMDAwMDAgQ0lFCiswMDAwMDAwMCAwMDAwMDAxMCAwMDAwMDAwMCBDSUUKICAgVmVyc2lvbjogICAgICAgICAgICAgICAxCiAgIEF1Z21lbnRhdGlvbjogICAgICAgICAgInpSIgogICBDb2RlIGFsaWdubWVudCBmYWN0b3I6IDQKQEAgLTExLDIzICsxMSwyMyBAQAogICBBdWdtZW50YXRpb24gZGF0YTogICAgIDFiCiAKICAgRFdfQ0ZBX2RlZl9jZmFfcmVnOiByMzAKLQotMDAwMDAwMTMgMDAwMDAwMjkgMDAwMDAwMTcgRkRFIGNpZT0wMDAwMDAwMCBwYz0wMDAwMDAxYi4uMDAwMDAwNWIKLSAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA0IHRvIDAwMDAwMDFmCi0gIERXX0NGQV9kZWZfY2ZhX29mZnNldDogMzIKLSAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA0IHRvIDAwMDAwMDIzCi0gIERXX0NGQV9vZmZzZXQ6IHIyNiBhdCBjZmEtMzIKLSAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA0IHRvIDAwMDAwMDI3Ci0gIERXX0NGQV9vZmZzZXQ6IHI5IGF0IGNmYS0yNAotICBEV19DRkFfYWR2YW5jZV9sb2M6IDQgdG8gMDAwMDAwMmIKLSAgRFdfQ0ZBX29mZnNldDogcjE1IGF0IGNmYS0xNgotICBEV19DRkFfYWR2YW5jZV9sb2M6IDQgdG8gMDAwMDAwMmYKLSAgRFdfQ0ZBX29mZnNldDogcjM0IGF0IGNmYS04Ci0gIERXX0NGQV9hZHZhbmNlX2xvYzogNCB0byAwMDAwMDAzMwotICBEV19DRkFfZGVmX2NmYV9yZWc6IHIxNQotICBEV19DRkFfYWR2YW5jZV9sb2M6IDM2IHRvIDAwMDAwMDU3Ci0gIERXX0NGQV9kZWZfY2ZhOiByMzAgb2ZzIDAKICAgRFdfQ0ZBX25vcAorCiswMDAwMDAxNCAwMDAwMDAyOCAwMDAwMDAxOCBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMDFjLi4wMDAwMDA1YworICBEV19DRkFfYWR2YW5jZV9sb2M6IDQgdG8gMDAwMDAwMjAKKyAgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0OiAzMgorICBEV19DRkFfYWR2YW5jZV9sb2M6IDQgdG8gMDAwMDAwMjQKKyAgRFdfQ0ZBX29mZnNldDogcjI2IGF0IGNmYS0zMgorICBEV19DRkFfYWR2YW5jZV9sb2M6IDQgdG8gMDAwMDAwMjgKKyAgRFdfQ0ZBX29mZnNldDogcjkgYXQgY2ZhLTI0CisgIERXX0NGQV9hZHZhbmNlX2xvYzogNCB0byAwMDAwMDAyYworICBEV19DRkFfb2Zmc2V0OiByMTUgYXQgY2ZhLTE2CisgIERXX0NGQV9hZHZhbmNlX2xvYzogNCB0byAwMDAwMDAzMAorICBEV19DRkFfb2Zmc2V0OiByMzQgYXQgY2ZhLTgKKyAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA0IHRvIDAwMDAwMDM0CisgIERXX0NGQV9kZWZfY2ZhX3JlZzogcjE1CisgIERXX0NGQV9hZHZhbmNlX2xvYzogMzYgdG8gMDAwMDAwNTgKKyAgRFdfQ0ZBX2RlZl9jZmE6IHIzMCBvZnMgMAogICBEV19DRkFfbm9wCiAgIERXX0NGQV9ub3AKICAgRFdfQ0ZBX25vcApkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1jb21tb24tMS5kIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1jb21tb24tMS5kCmluZGV4IDA2MzRiNzAuLjMzMmM0NzcgMTAwNjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktY29tbW9uLTEuZAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWNvbW1vbi0xLmQKQEAgLTIsNyArMiw3IEBACiAjbmFtZTogQ0ZJIGNvbW1vbiAxCiBUaGUgc2VjdGlvbiAuZWhfZnJhbWUgY29udGFpbnM6CiAKLTAwMDAwMDAwIDAwMDAwMDBkIDAwMDAwMDAwIENJRQorMDAwMDAwMDAgMDAwMDAwMTAgMDAwMDAwMDAgQ0lFCiAgIFZlcnNpb246ICAgICAgICAgICAgICAgMQogICBBdWdtZW50YXRpb246ICAgICAgICAgICJ6UiIKICAgQ29kZSBhbGlnbm1lbnQgZmFjdG9yOiAuKgpAQCAtMTAsMTQgKzEwLDE0IEBACiAgIFJldHVybiBhZGRyZXNzIGNvbHVtbjogLioKICAgQXVnbWVudGF0aW9uIGRhdGE6ICAgICAxYgogCisgIERXX0NGQV9ub3AKKyAgRFdfQ0ZBX25vcAorICBEV19DRkFfbm9wCiAKLTAwMDAwMDExIDAwMDAwMDFiIDAwMDAwMDE1IEZERSBjaWU9MDAwMDAwMDAgcGM9LioKKzAwMDAwMDE0IDAwMDAwMDE4IDAwMDAwMDE4IEZERSBjaWU9MDAwMDAwMDAgcGM9LioKICAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA0IHRvIC4qCiAgIERXX0NGQV9kZWZfY2ZhOiByMCBvZnMgMTYKICAgRFdfQ0ZBX29mZnNldDogcjEgYXQgY2ZhLTgKICAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA0IHRvIC4qCiAgIERXX0NGQV9kZWZfY2ZhX29mZnNldDogMzIKICAgRFdfQ0ZBX29mZnNldDogcjIgYXQgY2ZhLTI0Ci0gIERXX0NGQV9ub3AKLSAgRFdfQ0ZBX25vcAotICBEV19DRkFfbm9wCmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWNvbW1vbi0yLmQgYi9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWNvbW1vbi0yLmQKaW5kZXggNGM1MGNkYi4uYTFmMWQwNiAxMDA2NDQKLS0tIGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1jb21tb24tMi5kCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktY29tbW9uLTIuZApAQCAtMiwxNiArMiwxNSBAQAogI25hbWU6IENGSSBjb21tb24gMgogVGhlIHNlY3Rpb24gLmVoX2ZyYW1lIGNvbnRhaW5zOgogCi0wMDAwMDAwMCAwMDAwMDAwZCAwMDAwMDAwMCBDSUUKKzAwMDAwMDAwIDAwMDAwMDEwIDAwMDAwMDAwIENJRQogICBWZXJzaW9uOiAgICAgICAgICAgICAgIDEKICAgQXVnbWVudGF0aW9uOiAgICAgICAgICAielIiCiAgIENvZGUgYWxpZ25tZW50IGZhY3RvcjogLioKICAgRGF0YSBhbGlnbm1lbnQgZmFjdG9yOiAuKgogICBSZXR1cm4gYWRkcmVzcyBjb2x1bW46IC4qCiAgIEF1Z21lbnRhdGlvbiBkYXRhOiAgICAgMWIKLQotCi0wMDAwMDAxMSAwMDAwMDAxW2JmXSAwMDAwMDAxNSBGREUgY2llPTAwMDAwMDAwIHBjPS4qCisjLi4uCiswMDAwMDAxNCAwMDAwMDBbMTJdW2MwXSAwMDAwMDAxOCBGREUgY2llPTAwMDAwMDAwIHBjPS4qCiAgIERXX0NGQV9hZHZhbmNlX2xvYzogNCB0byAuKgogICBEV19DRkFfZGVmX2NmYTogcjAgb2ZzIDE2CiAgIERXX0NGQV9hZHZhbmNlX2xvYzogNCB0byAuKgpAQCAtMjIsNSArMjEsNCBAQAogICBEV19DRkFfcmVzdG9yZV9zdGF0ZQogICBEV19DRkFfYWR2YW5jZV9sb2M6IDQgdG8gLioKICAgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0OiAwCi0jIDY0LWJpdCBhcmNoZXMgd2lsbCBoYXZlIGhlcmUgNCB0aW1lcyBEV19DRkFfbm9wCi0jLi4uCisjcGFzcwpkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1jb21tb24tMy5kIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1jb21tb24tMy5kCmluZGV4IDlkZGJjNDUuLjgyYTQxOTMgMTAwNjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktY29tbW9uLTMuZAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWNvbW1vbi0zLmQKQEAgLTIsMTkgKzIsMTYgQEAKICNuYW1lOiBDRkkgY29tbW9uIDMKIFRoZSBzZWN0aW9uIC5laF9mcmFtZSBjb250YWluczoKIAotMDAwMDAwMDAgMDAwMDAwMGQgMDAwMDAwMDAgQ0lFCiswMDAwMDAwMCAwMDAwMDAxMCAwMDAwMDAwMCBDSUUKICAgVmVyc2lvbjogICAgICAgICAgICAgICAxCiAgIEF1Z21lbnRhdGlvbjogICAgICAgICAgInpSIgogICBDb2RlIGFsaWdubWVudCBmYWN0b3I6IC4qCiAgIERhdGEgYWxpZ25tZW50IGZhY3RvcjogLioKICAgUmV0dXJuIGFkZHJlc3MgY29sdW1uOiAuKgogICBBdWdtZW50YXRpb24gZGF0YTogICAgIDFiCi0KLQotMDAwMDAwMTEgMDAwMDAwMTMgMDAwMDAwMTUgRkRFIGNpZT0wMDAwMDAwMCBwYz0uKgorIy4uLgorMDAwMDAwMTQgMDAwMDAwMTAgMDAwMDAwMTggRkRFIGNpZT0wMDAwMDAwMCBwYz0uKgogICBEV19DRkFfYWR2YW5jZV9sb2M6IDQgdG8gLioKICAgRFdfQ0ZBX3JlbWVtYmVyX3N0YXRlCiAgIERXX0NGQV9yZXN0b3JlX3N0YXRlCi0gIERXX0NGQV9ub3AKLSAgRFdfQ0ZBX25vcAotICBEV19DRkFfbm9wCisjcGFzcwpkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1pMzg2LmQgYi9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWkzODYuZAppbmRleCAyNzIzNzI3Li40NzFmNWUxIDEwMDY0NAotLS0gYS9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWkzODYuZAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWkzODYuZApAQCAtMiw3ICsyLDcgQEAKICNuYW1lOiBDRkkgb24gaTM4NgogVGhlIHNlY3Rpb24gLmVoX2ZyYW1lIGNvbnRhaW5zOgogCi0wMDAwMDAwMCAwMDAwMDAxMiAwMDAwMDAwMCBDSUUKKzAwMDAwMDAwIDAwMDAwMDE0IDAwMDAwMDAwIENJRQogICBWZXJzaW9uOiAgICAgICAgICAgICAgIDEKICAgQXVnbWVudGF0aW9uOiAgICAgICAgICAielIiCiAgIENvZGUgYWxpZ25tZW50IGZhY3RvcjogMQpAQCAtMTIsMjkgKzEyLDM3IEBACiAKICAgRFdfQ0ZBX2RlZl9jZmE6IHI0IG9mcyA0CiAgIERXX0NGQV9vZmZzZXQ6IHI4IGF0IGNmYS00CisgIERXX0NGQV9ub3AKKyAgRFdfQ0ZBX25vcAogCi0wMDAwMDAxNiAwMDAwMDAxNCAwMDAwMDAxYSBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMDFlLi4wMDAwMDAzMAotICBEV19DRkFfYWR2YW5jZV9sb2M6IDYgdG8gMDAwMDAwMjQKKzAwMDAwMDE4IDAwMDAwMDE0IDAwMDAwMDFjIEZERSBjaWU9MDAwMDAwMDAgcGM9MDAwMDAwMjAuLjAwMDAwMDMyCisgIERXX0NGQV9hZHZhbmNlX2xvYzogNiB0byAwMDAwMDAyNgogICBEV19DRkFfZGVmX2NmYV9vZmZzZXQ6IDQ2NjQKLSAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiAxMSB0byAwMDAwMDAyZgorICBEV19DRkFfYWR2YW5jZV9sb2M6IDExIHRvIDAwMDAwMDMxCiAgIERXX0NGQV9kZWZfY2ZhX29mZnNldDogNAogCi0wMDAwMDAyZSAwMDAwMDAxOCAwMDAwMDAzMiBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMDQ4Li4wMDAwMDA1NQotICBEV19DRkFfYWR2YW5jZV9sb2M6IDEgdG8gMDAwMDAwNDkKKzAwMDAwMDMwIDAwMDAwMDE4IDAwMDAwMDM0IEZERSBjaWU9MDAwMDAwMDAgcGM9MDAwMDAwNGEuLjAwMDAwMDU3CisgIERXX0NGQV9hZHZhbmNlX2xvYzogMSB0byAwMDAwMDA0YgogICBEV19DRkFfZGVmX2NmYV9vZmZzZXQ6IDgKICAgRFdfQ0ZBX29mZnNldDogcjUgYXQgY2ZhLTgKLSAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiAyIHRvIDAwMDAwMDRiCisgIERXX0NGQV9hZHZhbmNlX2xvYzogMiB0byAwMDAwMDA0ZAogICBEV19DRkFfZGVmX2NmYV9yZWc6IHI1Ci0gIERXX0NGQV9hZHZhbmNlX2xvYzogOSB0byAwMDAwMDA1NAorICBEV19DRkFfYWR2YW5jZV9sb2M6IDkgdG8gMDAwMDAwNTYKICAgRFdfQ0ZBX2RlZl9jZmFfcmVnOiByNAogCi0wMDAwMDA0YSAwMDAwMDAxNCAwMDAwMDA0ZSBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMDcxLi4wMDAwMDA4MQotICBEV19DRkFfYWR2YW5jZV9sb2M6IDIgdG8gMDAwMDAwNzMKKzAwMDAwMDRjIDAwMDAwMDE0IDAwMDAwMDUwIEZERSBjaWU9MDAwMDAwMDAgcGM9MDAwMDAwNzMuLjAwMDAwMDgzCisgIERXX0NGQV9hZHZhbmNlX2xvYzogMiB0byAwMDAwMDA3NQogICBEV19DRkFfZGVmX2NmYV9yZWc6IHIzCi0gIERXX0NGQV9hZHZhbmNlX2xvYzogMTMgdG8gMDAwMDAwODAKKyAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiAxMyB0byAwMDAwMDA4MgogICBEV19DRkFfZGVmX2NmYTogcjQgb2ZzIDQKIAotMDAwMDAwNjIgMDAwMDAwMGQgMDAwMDAwNjYgRkRFIGNpZT0wMDAwMDAwMCBwYz0wMDAwMDA5OS4uMDAwMDAwOWYKKzAwMDAwMDY0IDAwMDAwMDEwIDAwMDAwMDY4IEZERSBjaWU9MDAwMDAwMDAgcGM9MDAwMDAwOWIuLjAwMDAwMGExCisgIERXX0NGQV9ub3AKKyAgRFdfQ0ZBX25vcAorICBEV19DRkFfbm9wCiAKLTAwMDAwMDczIDAwMDAwMDBkIDAwMDAwMDc3IEZERSBjaWU9MDAwMDAwMDAgcGM9MDAwMDAwYjAuLjAwMDAwMGJmCiswMDAwMDA3OCAwMDAwMDAxMCAwMDAwMDA3YyBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMGI1Li4wMDAwMDBjNAorICBEV19DRkFfbm9wCisgIERXX0NGQV9ub3AKKyAgRFdfQ0ZBX25vcAogCmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLW02OGsuZCBiL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktbTY4ay5kCmluZGV4IGE3Mjg3NTkuLmZmMjM5ZjMgMTAwNjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktbTY4ay5kCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktbTY4ay5kCkBAIC0yLDcgKzIsNyBAQAogI25hbWU6IENGSSBvbiBtNjhrCiBUaGUgc2VjdGlvbiAuZWhfZnJhbWUgY29udGFpbnM6CiAKLTAwMDAwMDAwIDAwMDAwMDEyIDAwMDAwMDAwIENJRQorMDAwMDAwMDAgMDAwMDAwMTQgMDAwMDAwMDAgQ0lFCiAgIFZlcnNpb246ICAgICAgICAgICAgICAgMQogICBBdWdtZW50YXRpb246ICAgICAgICAgICJ6UiIKICAgQ29kZSBhbGlnbm1lbnQgZmFjdG9yOiAyCkBAIC0xMiwyMiArMTIsMjcgQEAKIAogICBEV19DRkFfZGVmX2NmYTogcjE1IG9mcyA0CiAgIERXX0NGQV9vZmZzZXQ6IHIyNCBhdCBjZmEtNAorICBEV19DRkFfbm9wCisgIERXX0NGQV9ub3AKIAotMDAwMDAwMTYgMDAwMDAwMTQgMDAwMDAwMWEgRkRFIGNpZT0wMDAwMDAwMCBwYz0wMDAwMDAxZS4uMDAwMDAwMmEKLSAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA0IHRvIDAwMDAwMDIyCiswMDAwMDAxOCAwMDAwMDAxNCAwMDAwMDAxYyBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMDIwLi4wMDAwMDAyYworICBEV19DRkFfYWR2YW5jZV9sb2M6IDQgdG8gMDAwMDAwMjQKICAgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0OiA0NjY0Ci0gIERXX0NGQV9hZHZhbmNlX2xvYzogNiB0byAwMDAwMDAyOAorICBEV19DRkFfYWR2YW5jZV9sb2M6IDYgdG8gMDAwMDAwMmEKICAgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0OiA0CiAKLTAwMDAwMDJlIDAwMDAwMDE3IDAwMDAwMDMyIEZERSBjaWU9MDAwMDAwMDAgcGM9MDAwMDAwMzYuLjAwMDAwMDQyCi0gIERXX0NGQV9hZHZhbmNlX2xvYzogNCB0byAwMDAwMDAzYQorMDAwMDAwMzAgMDAwMDAwMTggMDAwMDAwMzQgRkRFIGNpZT0wMDAwMDAwMCBwYz0wMDAwMDAzOC4uMDAwMDAwNDQKKyAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA0IHRvIDAwMDAwMDNjCiAgIERXX0NGQV9kZWZfY2ZhX29mZnNldDogOAogICBEV19DRkFfb2Zmc2V0OiByMTQgYXQgY2ZhLTgKICAgRFdfQ0ZBX2RlZl9jZmFfcmVnOiByMTQKLSAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA2IHRvIDAwMDAwMDQwCisgIERXX0NGQV9hZHZhbmNlX2xvYzogNiB0byAwMDAwMDA0MgogICBEV19DRkFfZGVmX2NmYV9yZWc6IHIxNQorICBEV19DRkFfbm9wCiAKLTAwMDAwMDQ5IDAwMDAwMDBmIDAwMDAwMDRkIEZERSBjaWU9MDAwMDAwMDAgcGM9MDAwMDAwNTEuLjAwMDAwMDU1CiswMDAwMDA0YyAwMDAwMDAxMCAwMDAwMDA1MCBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMDU0Li4wMDAwMDA1OAogCiAgIERXX0NGQV9ub3AKICAgRFdfQ0ZBX25vcAorICBEV19DRkFfbm9wCisKZGlmZiAtLWdpdCBhL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktczM5MHgtMS5kIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1zMzkweC0xLmQKaW5kZXggODg0MzhmMi4uYWQ2N2FkZCAxMDA2NDQKLS0tIGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1zMzkweC0xLmQKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1zMzkweC0xLmQKQEAgLTQsNyArNCw3IEBACiAKIFRoZSBzZWN0aW9uIC5laF9mcmFtZSBjb250YWluczoKIAotMDAwMDAwMDAgMDAwMDAwMTEgMDAwMDAwMDAgQ0lFCiswMDAwMDAwMCAwMDAwMDAxNCAwMDAwMDAwMCBDSUUKICAgVmVyc2lvbjogICAgICAgICAgICAgICAxCiAgIEF1Z21lbnRhdGlvbjogICAgICAgICAgInpSIgogICBDb2RlIGFsaWdubWVudCBmYWN0b3I6IDEKQEAgLTEzLDkgKzEzLDEyIEBACiAgIEF1Z21lbnRhdGlvbiBkYXRhOiAgICAgMWIKIAogICBEV19DRkFfZGVmX2NmYTogcjE1IG9mcyAxNjAKKyAgRFdfQ0ZBX25vcAorICBEV19DRkFfbm9wCisgIERXX0NGQV9ub3AKIAotMDAwMDAwMTUgMDAwMDAwMjcgMDAwMDAwMTkgRkRFIGNpZT0wMDAwMDAwMCBwYz0wMDAwMDAxZC4uMDAwMDAwOGQKLSAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA2IHRvIDAwMDAwMDIzCiswMDAwMDAxOCAwMDAwMDAyNCAwMDAwMDAxYyBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMDIwLi4wMDAwMDA5MAorICBEV19DRkFfYWR2YW5jZV9sb2M6IDYgdG8gMDAwMDAwMjYKICAgRFdfQ0ZBX29mZnNldDogcjE1IGF0IGNmYS00MAogICBEV19DRkFfb2Zmc2V0OiByMTQgYXQgY2ZhLTQ4CiAgIERXX0NGQV9vZmZzZXQ6IHIxMyBhdCBjZmEtNTYKQEAgLTI0LDExICsyNyw4IEBACiAgIERXX0NGQV9vZmZzZXQ6IHIxMCBhdCBjZmEtODAKICAgRFdfQ0ZBX29mZnNldDogcjkgYXQgY2ZhLTg4CiAgIERXX0NGQV9vZmZzZXQ6IHI4IGF0IGNmYS05NgotICBEV19DRkFfYWR2YW5jZV9sb2M6IDggdG8gMDAwMDAwMmIKKyAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA4IHRvIDAwMDAwMDJlCiAgIERXX0NGQV9kZWZfY2ZhX29mZnNldDogMzIwCiAgIERXX0NGQV9ub3AKICAgRFdfQ0ZBX25vcAotICBEV19DRkFfbm9wCi0gIERXX0NGQV9ub3AKLSAgRFdfQ0ZBX25vcAogCmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLXg4Nl82NC5kIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS14ODZfNjQuZAppbmRleCAxNzQ1NmFlLi4yYjE5NjQxIDEwMDY0NAotLS0gYS9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLXg4Nl82NC5kCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmkteDg2XzY0LmQKQEAgLTIsNyArMiw3IEBACiAjbmFtZTogQ0ZJIG9uIHg4Ni02NAogVGhlIHNlY3Rpb24gLmVoX2ZyYW1lIGNvbnRhaW5zOgogCi0wMDAwMDAwMCAwMDAwMDAxMiAwMDAwMDAwMCBDSUUKKzAwMDAwMDAwIDAwMDAwMDE0IDAwMDAwMDAwIENJRQogICBWZXJzaW9uOiAgICAgICAgICAgICAgIDEKICAgQXVnbWVudGF0aW9uOiAgICAgICAgICAielIiCiAgIENvZGUgYWxpZ25tZW50IGZhY3RvcjogMQpAQCAtMTIsMzMgKzEyLDQxIEBACiAKICAgRFdfQ0ZBX2RlZl9jZmE6IHI3IG9mcyA4CiAgIERXX0NGQV9vZmZzZXQ6IHIxNiBhdCBjZmEtOAorICBEV19DRkFfbm9wCisgIERXX0NGQV9ub3AKIAotMDAwMDAwMTYgMDAwMDAwMTQgMDAwMDAwMWEgRkRFIGNpZT0wMDAwMDAwMCBwYz0wMDAwMDAxZS4uMDAwMDAwMzIKLSAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiA3IHRvIDAwMDAwMDI1CiswMDAwMDAxOCAwMDAwMDAxNCAwMDAwMDAxYyBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMDIwLi4wMDAwMDAzNAorICBEV19DRkFfYWR2YW5jZV9sb2M6IDcgdG8gMDAwMDAwMjcKICAgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0OiA0NjY4Ci0gIERXX0NGQV9hZHZhbmNlX2xvYzogMTIgdG8gMDAwMDAwMzEKKyAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiAxMiB0byAwMDAwMDAzMwogICBEV19DRkFfZGVmX2NmYV9vZmZzZXQ6IDgKIAotMDAwMDAwMmUgMDAwMDAwMTkgMDAwMDAwMzIgRkRFIGNpZT0wMDAwMDAwMCBwYz0wMDAwMDAzNi4uMDAwMDAwNDUKLSAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiAxIHRvIDAwMDAwMDM3CiswMDAwMDAzMCAwMDAwMDAxYyAwMDAwMDAzNCBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMDM4Li4wMDAwMDA0NworICBEV19DRkFfYWR2YW5jZV9sb2M6IDEgdG8gMDAwMDAwMzkKICAgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0OiAxNgogICBEV19DRkFfb2Zmc2V0OiByNiBhdCBjZmEtMTYKLSAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiAzIHRvIDAwMDAwMDNhCisgIERXX0NGQV9hZHZhbmNlX2xvYzogMyB0byAwMDAwMDAzYwogICBEV19DRkFfZGVmX2NmYV9yZWc6IHI2Ci0gIERXX0NGQV9hZHZhbmNlX2xvYzogMTAgdG8gMDAwMDAwNDQKKyAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiAxMCB0byAwMDAwMDA0NgogICBEV19DRkFfZGVmX2NmYTogcjcgb2ZzIDgKLQotMDAwMDAwNGIgMDAwMDAwMTMgMDAwMDAwNGYgRkRFIGNpZT0wMDAwMDAwMCBwYz0wMDAwMDA1My4uMDAwMDAwNjYKLSAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiAzIHRvIDAwMDAwMDU2Ci0gIERXX0NGQV9kZWZfY2ZhX3JlZzogcjEyCi0gIERXX0NGQV9hZHZhbmNlX2xvYzogMTUgdG8gMDAwMDAwNjUKLSAgRFdfQ0ZBX2RlZl9jZmFfcmVnOiByNwotCi0wMDAwMDA2MiAwMDAwMDAwZCAwMDAwMDA2NiBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMDZhLi4wMDAwMDA3MAotCi0wMDAwMDA3MyAwMDAwMDAxMSAwMDAwMDA3NyBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMDdiLi4wMDAwMDA4ZAogICBEV19DRkFfbm9wCiAgIERXX0NGQV9ub3AKICAgRFdfQ0ZBX25vcAorCiswMDAwMDA1MCAwMDAwMDAxNCAwMDAwMDA1NCBGREUgY2llPTAwMDAwMDAwIHBjPTAwMDAwMDU4Li4wMDAwMDA2YgorICBEV19DRkFfYWR2YW5jZV9sb2M6IDMgdG8gMDAwMDAwNWIKKyAgRFdfQ0ZBX2RlZl9jZmFfcmVnOiByMTIKKyAgRFdfQ0ZBX2FkdmFuY2VfbG9jOiAxNSB0byAwMDAwMDA2YQorICBEV19DRkFfZGVmX2NmYV9yZWc6IHI3CisgIERXX0NGQV9ub3AKKworMDAwMDAwNjggMDAwMDAwMTAgMDAwMDAwNmMgRkRFIGNpZT0wMDAwMDAwMCBwYz0wMDAwMDA3MC4uMDAwMDAwNzYKKyAgRFdfQ0ZBX25vcAorICBEV19DRkFfbm9wCisgIERXX0NGQV9ub3AKKworMDAwMDAwN2MgMDAwMDAwMTAgMDAwMDAwODAgRkRFIGNpZT0wMDAwMDAwMCBwYz0wMDAwMDA4NC4uMDAwMDAwOTYKKyAgRFdfQ0ZBX25vcAorICBEV19DRkFfbm9wCiAgIERXX0NGQV9ub3AKIApkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvZGx4L2FsbHRlc3RzLmV4cCBiL2dhcy90ZXN0c3VpdGUvZ2FzL2RseC9hbGx0ZXN0cy5leHAKaW5kZXggMDAzNDQ4Yi4uY2VlN2YzNSAxMDA2NDQKLS0tIGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvZGx4L2FsbHRlc3RzLmV4cAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9kbHgvYWxsdGVzdHMuZXhwCkBAIC01LDYgKzUsNyBAQAogICAgIHJ1bl9kdW1wX3Rlc3QgIml0eXBlIgogICAgIHJ1bl9kdW1wX3Rlc3QgImxoaSIKICAgICBydW5fZHVtcF90ZXN0ICJsb2FkIgorICAgIHJ1bl9kdW1wX3Rlc3QgImxvaGkiCiAgICAgcnVuX2R1bXBfdGVzdCAicnR5cGUiCiAgICAgcnVuX2R1bXBfdGVzdCAic3RvcmUiCiB9CmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9kbHgvaXR5cGUuZCBiL2dhcy90ZXN0c3VpdGUvZ2FzL2RseC9pdHlwZS5kCmluZGV4IDg0NWFlNDEuLjFiOGU5MmIgMTAwNjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL2RseC9pdHlwZS5kCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2RseC9pdHlwZS5kCkBAIC0xNiw3ICsxNiw3IEBACiAJCQkxMjogUl9ETFhfUkVMT0NfMTYJLnRleHQKICAgMTQ6CTM1IDRjIDAwIDc4IAlvcmkgICAgIHIxMixyMTAsMHgwMDc4CiAgIDE4OgkzOSBhZiAwMCAwMCAJeG9yaSAgICByMTUscjEzLDB4MDAwMAotCQkJMWE6IFJfRExYX1JFTE9DXzE2CS50ZXh0CisJCQkxYTogUl9ETFhfUkVMT0NfMTZfTE8JLnRleHQKICAgMWM6CWRhIDMwIDAwIDFjIAlzbGxpICAgIHIxNixyMTcsMHgwMDFjCiAJCQkxZTogUl9ETFhfUkVMT0NfMTYJLnRleHQKICAgMjA6CWUyIDkzIDAwIDBmIAlzcmFpICAgIHIxOSxyMjAsMHgwMDBmCmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9kbHgvbGhpLmQgYi9nYXMvdGVzdHN1aXRlL2dhcy9kbHgvbGhpLmQKaW5kZXggZGIzYjM1ZC4uZTg1NTEyOSAxMDA2NDQKLS0tIGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvZGx4L2xoaS5kCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2RseC9saGkuZApAQCAtMSw2ICsxLDYgQEAKICNhczoKICNvYmpkdW1wOiAtZHIKLSNuYW1lOiBpdHlwZQorI25hbWU6IGxoaQogCiAuKjogK2ZpbGUgZm9ybWF0IC4qCiAKQEAgLTExLDcgKzExLDcgQEAKICAgIDQ6CTNjIDAzIDAwIDAwIAlsaGkgICAgIHIzLDB4MDAwMAogCQkJNjogUl9ETFhfUkVMT0NfMTZfSEkJLnRleHQKICAgIDg6CTNjIDA0IDAwIDAwIAlsaGkgICAgIHI0LDB4MDAwMAotCQkJYTogUl9ETFhfUkVMT0NfMTYJLnRleHQKKwkJCWE6IFJfRExYX1JFTE9DXzE2X0xPCS50ZXh0CiAgICBjOgkzYyAwNCBmZiBmYiAJbGhpICAgICByNCwweGZmZmIKIAkJCWU6IFJfRExYX1JFTE9DXzE2CS50ZXh0CiAgIDEwOgkzYyAwNCAwMCAwYyAJbGhpICAgICByNCwweDAwMGMKQEAgLTE5LDUgKzE5LDUgQEAKICAgMTg6CTIwIDA0IDAwIDAwIAlhZGRpICAgIHI0LHIwLDB4MDAwMAogCQkJMWE6IFJfRExYX1JFTE9DXzE2X0hJCS50ZXh0CiAgIDFjOgkzNCA4NCAwMCAxOCAJb3JpICAgICByNCxyNCwweDAwMTgKLQkJCTFlOiBSX0RMWF9SRUxPQ18xNgkudGV4dAorCQkJMWU6IFJfRExYX1JFTE9DXzE2X0xPCS50ZXh0CiAgIDIwOgkyMCA2NCAwMCAwMCAJYWRkaSAgICByNCxyMywweDAwMDAKZGlmZiAtLWdpdCBhL2dhcy90ZXN0c3VpdGUvZ2FzL2RseC9sb2hpLmQgYi9nYXMvdGVzdHN1aXRlL2dhcy9kbHgvbG9oaS5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5N2VmMzUKLS0tIC9kZXYvbnVsbAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9kbHgvbG9oaS5kCkBAIC0wLDAgKzEsMTggQEAKKyNhczoKKyNvYmpkdW1wOiAtZHIKKyNuYW1lOiBsb2hpCisKKy4qOiArZmlsZSBmb3JtYXQgLioKKworRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiAudGV4dDoKKworMDAwMDAwMDAgPC50ZXh0PjoKKyAgIDA6CTAwIDAwIDAwIDAwIAlub3AKKyAgIDQ6CTNjIDAxIDAwIDAzIAlsaGkgICAgIHIxLDB4MDAwMworCQkJNjogUl9ETFhfUkVMT0NfMTZfSEkJLnRleHQKKyAgIDg6CTM0IDAxIDBkIDQ0IAlvcmkgICAgIHIxLHIwLDB4MGQ0NAorCQkJYTogUl9ETFhfUkVMT0NfMTZfTE8JLnRleHQKKyAgIGM6CTNjIDAxIDBiIGViIAlsaGkgICAgIHIxLDB4MGJlYgorCQkJZTogUl9ETFhfUkVMT0NfMTZfSEkJLnRleHQKKyAgMTA6CTM0IDAxIGMyIDA0IAlvcmkgICAgIHIxLHIwLDB4YzIwNAorCQkJMTI6IFJfRExYX1JFTE9DXzE2X0xPCS50ZXh0CmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9kbHgvbG9oaS5zIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZGx4L2xvaGkucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODhhZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZGx4L2xvaGkucwpAQCAtMCwwICsxLDkgQEAKKyAgICAudGV4dAorICAgIC5hbGlnbiAgMgorICAgIG5vcAorLkwxOgorICAgIGxoaSAgICAgcjEsJWhpKC5MMSArIDIwMDAwMCkKKyAgICBvcmkgICAgIHIxLHIwLCVsbyguTDEgKyAyMDAwMDApCisgICAgbGhpICAgICByMSwlaGkoLkwxICsgMjAwMDAwMDAwKQorICAgIG9yaSAgICAgcjEscjAsJWxvKC5MMSArIDIwMDAwMDAwMCkKKyAgICAuZW5kCmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9mcnYvYWxsaW5zbi5kIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2FsbGluc24uZAppbmRleCA1ZmY5NmFmLi43Yjk2ODA2IDEwMDY0NAotLS0gYS9nYXMvdGVzdHN1aXRlL2dhcy9mcnYvYWxsaW5zbi5kCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2Zydi9hbGxpbnNuLmQKQEAgLTUxNCwyMiArNTE0LDIyIEBACiAgMmEwOgk4MCAwYyAxOSA0MSAJc3RjIGNwcjAsQFwoc3Asc3BcKQogCiAwMDAwMDJhNCA8cnN0Yj46Ci0gMmE0Ogk4MiAwYyAxOCAwMSAJcnN0YiBzcCxAXChzcCxzcFwpCisgMmE0Ogk4MCA4OCAwMCAwMCAJbm9wCiAKIDAwMDAwMmE4IDxyc3RoPjoKLSAyYTg6CTgyIDBjIDE4IDQxIAlyc3RoIHNwLEBcKHNwLHNwXCkKKyAyYTg6CTgwIDg4IDAwIDAwIAlub3AKIAogMDAwMDAyYWMgPHJzdD46Ci0gMmFjOgk4MiAwYyAxOCA4MSAJcnN0IHNwLEBcKHNwLHNwXCkKKyAyYWM6CTgwIDg4IDAwIDAwIAlub3AKIAogMDAwMDAyYjAgPHJzdGJmPjoKLSAyYjA6CTgwIDBjIDFhIDAxIAlyc3RiZiBmcjAsQFwoc3Asc3BcKQorIDJiMDoJODAgODggMDAgMDAgCW5vcAogCiAwMDAwMDJiNCA8cnN0aGY+OgotIDJiNDoJODAgMGMgMWEgNDEgCXJzdGhmIGZyMCxAXChzcCxzcFwpCisgMmI0Ogk4MCA4OCAwMCAwMCAJbm9wCiAKIDAwMDAwMmI4IDxyc3RmPjoKLSAyYjg6CTgwIDBjIDFhIDgxIAlyc3RmIGZyMCxAXChzcCxzcFwpCisgMmI4Ogk4MCA4OCAwMCAwMCAJbm9wCiAKIDAwMDAwMmJjIDxzdGQ+OgogIDJiYzoJODQgMGMgMTAgYzEgCXN0ZCBmcCxAXChzcCxzcFwpCkBAIC01NDEsMTAgKzU0MSwxMCBAQAogIDJjNDoJODAgMGMgMTkgODEgCXN0ZGMgY3ByMCxAXChzcCxzcFwpCiAKIDAwMDAwMmM4IDxyc3RkPjoKLSAyYzg6CTg0IDBjIDE4IGMxIAlyc3RkIGZwLEBcKHNwLHNwXCkKKyAyYzg6CTgwIDg4IDAwIDAwIAlub3AKIAogMDAwMDAyY2MgPHJzdGRmPjoKLSAyY2M6CTgwIDBjIDFhIGMxIAlyc3RkZiBmcjAsQFwoc3Asc3BcKQorIDJjYzoJODAgODggMDAgMDAgCW5vcAogCiAwMDAwMDJkMCA8c3RxPjoKICAyZDA6CTgyIDBjIDExIDAxIAlzdHEgc3AsQFwoc3Asc3BcKQpAQCAtNTU2LDEwICs1NTYsMTAgQEAKICAyZDg6CTgwIDBjIDE5IGMxIAlzdHFjIGNwcjAsQFwoc3Asc3BcKQogCiAwMDAwMDJkYyA8cnN0cT46Ci0gMmRjOgk4MiAwYyAxOSAwMSAJcnN0cSBzcCxAXChzcCxzcFwpCisgMmRjOgk4MCA4OCAwMCAwMCAJbm9wCiAKIDAwMDAwMmUwIDxyc3RxZj46Ci0gMmUwOgk4MCAwYyAxYiAwMSAJcnN0cWYgZnIwLEBcKHNwLHNwXCkKKyAyZTA6CTgwIDg4IDAwIDAwIAlub3AKIAogMDAwMDAyZTQgPHN0YnU+OgogIDJlNDoJODIgMGMgMTQgMDEgCXN0YnUgc3AsQFwoc3Asc3BcKQpkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2FsbGluc24uZXhwIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2FsbGluc24uZXhwCmluZGV4IGE5ZmM5NjUuLjg2ODRlNGMgMTAwNjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL2Zydi9hbGxpbnNuLmV4cAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9mcnYvYWxsaW5zbi5leHAKQEAgLTEsOCArMSwzMCBAQAogIyBGUlYgYXNzZW1ibGVyIHRlc3RzdWl0ZS4KIAorcHJvYyBydW5fbGlzdF90ZXN0IHsgbmFtZSBvcHRzIH0geworICAgIGdsb2JhbCBzcmNkaXIgc3ViZGlyCisgICAgc2V0IHRlc3RuYW1lICIkbmFtZSBlcnJvciB0ZXN0ICgkb3B0cykiCisgICAgZ2FzX3J1biAkbmFtZS5zICRvcHRzID4mZHVtcC5vdXQKKyAgICBpZiB7W3JlZ2V4cF9kaWZmIGR1bXAub3V0ICRzcmNkaXIvJHN1YmRpci8kbmFtZS5sXX0geworCWZhaWwgJHRlc3RuYW1lCisJdmVyYm9zZSAib3V0cHV0IGlzIFtmaWxlX2NvbnRlbnRzIGR1bXAub3V0XSIgMgorCXJldHVybgorICAgIH0KKyAgICBwYXNzICR0ZXN0bmFtZQorfQorCiBpZiBbaXN0YXJnZXQgZnJ2Ki0qLSpdIHsKICAgICBydW5fZHVtcF90ZXN0ICJhbGxpbnNuIgogCiAgICAgcnVuX2R1bXBfdGVzdCAiZmRwaWMiCiAgICAgcnVuX2R1bXBfdGVzdCAicmVsb2MxIgorICAgIHJ1bl9kdW1wX3Rlc3QgImZyNDA1LWluc24iCisgICAgcnVuX2xpc3RfdGVzdCAiZnI0MDUtaW5zbiIgIi1tY3B1PWZyNDAwIgorICAgIHJ1bl9saXN0X3Rlc3QgImZyNDA1LWluc24iICItbWNwdT1mcjUwMCIKKworICAgIHJ1bl9kdW1wX3Rlc3QgImZyNDUwLXNwciIKKyAgICBydW5fZHVtcF90ZXN0ICJmcjQ1MC1pbnNuIgorICAgIHJ1bl9saXN0X3Rlc3QgImZyNDUwLWluc24iICItbWNwdT1mcjQwNSIKKyAgICBydW5fbGlzdF90ZXN0ICJmcjQ1MC1pbnNuIiAiLW1jcHU9ZnI0MDAiCisgICAgcnVuX2xpc3RfdGVzdCAiZnI0NTAtaW5zbiIgIi1tY3B1PWZyNTAwIgorICAgIHJ1bl9saXN0X3Rlc3QgImZyNDUwLW1lZGlhLWlzc3VlIiAiLW1jcHU9ZnI0NTAiCiB9CmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9mcnYvYWxsaW5zbi5zIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2FsbGluc24ucwppbmRleCA2NmFlZDJiLi4yNjU3ZjAzIDEwMDY0NAotLS0gYS9nYXMvdGVzdHN1aXRlL2dhcy9mcnYvYWxsaW5zbi5zCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2Zydi9hbGxpbnNuLnMKQEAgLTY4MSwyNyArNjgxLDI3IEBACiAJLnRleHQKIAkuZ2xvYmFsIHJzdGIKIHJzdGI6Ci0JcnN0YiBzcCxAKHNwLHNwKQorCW5vcAogCS50ZXh0CiAJLmdsb2JhbCByc3RoCiByc3RoOgotCXJzdGggc3AsQChzcCxzcCkKKwlub3AKIAkudGV4dAogCS5nbG9iYWwgcnN0CiByc3Q6Ci0JcnN0IHNwLEAoc3Asc3ApCisJbm9wCiAJLnRleHQKIAkuZ2xvYmFsIHJzdGJmCiByc3RiZjoKLQlyc3RiZiBmcjAsQChzcCxzcCkKKwlub3AKIAkudGV4dAogCS5nbG9iYWwgcnN0aGYKIHJzdGhmOgotCXJzdGhmIGZyMCxAKHNwLHNwKQorCW5vcAogCS50ZXh0CiAJLmdsb2JhbCByc3RmCiByc3RmOgotCXJzdGYgZnIwLEAoc3Asc3ApCisJbm9wCiAJLnRleHQKIAkuZ2xvYmFsIHN0ZAogc3RkOgpAQCAtNzE3LDExICs3MTcsMTEgQEAKIAkudGV4dAogCS5nbG9iYWwgcnN0ZAogcnN0ZDoKLQlyc3RkIGZwLEAoc3Asc3ApCisJbm9wCiAJLnRleHQKIAkuZ2xvYmFsIHJzdGRmCiByc3RkZjoKLQlyc3RkZiBmcjAsQChzcCxzcCkKKwlub3AKIAkudGV4dAogCS5nbG9iYWwgc3RxCiBzdHE6CkBAIC03MzcsMTEgKzczNywxMSBAQAogCS50ZXh0CiAJLmdsb2JhbCByc3RxCiByc3RxOgotCXJzdHEgc3AsQChzcCxzcCkKKwlub3AKIAkudGV4dAogCS5nbG9iYWwgcnN0cWYKIHJzdHFmOgotCXJzdHFmIGZyMCxAKHNwLHNwKQorCW5vcAogCS50ZXh0CiAJLmdsb2JhbCBzdGJ1CiBzdGJ1OgpkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDA1LWluc24uZCBiL2dhcy90ZXN0c3VpdGUvZ2FzL2Zydi9mcjQwNS1pbnNuLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNjODQ4YgotLS0gL2Rldi9udWxsCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2Zydi9mcjQwNS1pbnNuLmQKQEAgLTAsMCArMSwxNSBAQAorI2FzOiAtbWNwdT1mcjQwNQorI29iamR1bXA6IC1kcgorCisuKjogICAgIGZpbGUgZm9ybWF0IGVsZjMyLWZydgorCitEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwudGV4dDoKKworMDAwMDAwMDAgPC4qPjoKKy4qOgk4MSAxOCA0MSA0NSAJc211IGdyNCxncjUKKy4qOgk4MSAxOCA0MSA4NSAJc21hc3MgZ3I0LGdyNQorLio6CTgxIDE4IDQxIGM1IAlzbXNzcyBncjQsZ3I1CisuKjoJOGQgMTggNDAgODUgCXNsYXNzIGdyNCxncjUsZ3I2CisuKjoJOGIgMTggMDEgMDQgCXNjdXRzcyBncjQsZ3I1CisuKjoJOGQgMTggNDAgMDUgCWFkZHNzIGdyNCxncjUsZ3I2CisuKjoJOGQgMTggNDAgNDUgCXN1YnNzIGdyNCxncjUsZ3I2CmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9mcnYvZnI0MDUtaW5zbi5sIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDA1LWluc24ubApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzg0ZjgwCi0tLSAvZGV2L251bGwKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDA1LWluc24ubApAQCAtMCwwICsxLDggQEAKKy4qOiBBc3NlbWJsZXIgbWVzc2FnZXM6CisuKjoxOiBFcnJvcjogSW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGFyY2hpdGVjdHVyZQorLio6MjogRXJyb3I6IEluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhcmNoaXRlY3R1cmUKKy4qOjM6IEVycm9yOiBJbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYXJjaGl0ZWN0dXJlCisuKjo0OiBFcnJvcjogSW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGFyY2hpdGVjdHVyZQorLio6NTogRXJyb3I6IEluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhcmNoaXRlY3R1cmUKKy4qOjY6IEVycm9yOiBJbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYXJjaGl0ZWN0dXJlCisuKjo3OiBFcnJvcjogSW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGFyY2hpdGVjdHVyZQpkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDA1LWluc24ucyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2Zydi9mcjQwNS1pbnNuLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNkNWVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2Zydi9mcjQwNS1pbnNuLnMKQEAgLTAsMCArMSw3IEBACisJc211CWdyNCxncjUKKwlzbWFzcwlncjQsZ3I1CisJc21zc3MJZ3I0LGdyNQorCXNsYXNzCWdyNCxncjUsZ3I2CisJc2N1dHNzCWdyNCxncjUKKwlhZGRzcwlncjQsZ3I1LGdyNgorCXN1YnNzCWdyNCxncjUsZ3I2CmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9mcnYvZnI0NTAtaW5zbi5kIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLWluc24uZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzM5Yzg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLWluc24uZApAQCAtMCwwICsxLDQxIEBACisjYXM6IC1tY3B1PWZyNDUwCisjb2JqZHVtcDogLWRyCisKKy4qOiAgICAgZmlsZSBmb3JtYXQgZWxmMzItZnJ2CisKK0Rpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC50ZXh0OgorCiswMDAwMDAwMCA8Lio+OgorIworLio6CTgwIDBkIGY4IDAwIAlscmFpIGdyMzEsZ3IwLDB4MCwweDAsMHgwCisuKjoJYmUgMGMgMDggMDAgCWxyYWkgZ3IwLGdyMzEsMHgwLDB4MCwweDAKKy4qOgk4MCAwYyAwOCAyMCAJbHJhaSBncjAsZ3IwLDB4MSwweDAsMHgwCisuKjoJODAgMGMgMDggMTAgCWxyYWkgZ3IwLGdyMCwweDAsMHgxLDB4MAorLio6CTgwIDBjIDA4IDA4IAlscmFpIGdyMCxncjAsMHgwLDB4MCwweDEKKyMKKy4qOgk4MCAwZCBmOCA0MCAJbHJhZCBncjMxLGdyMCwweDAsMHgwLDB4MAorLio6CWJlIDBjIDA4IDQwIAlscmFkIGdyMCxncjMxLDB4MCwweDAsMHgwCisuKjoJODAgMGMgMDggNjAgCWxyYWQgZ3IwLGdyMCwweDEsMHgwLDB4MAorLio6CTgwIDBjIDA4IDUwIAlscmFkIGdyMCxncjAsMHgwLDB4MSwweDAKKy4qOgk4MCAwYyAwOCA0OCAJbHJhZCBncjAsZ3IwLDB4MCwweDAsMHgxCisjCisuKjoJODAgMGQgZjkgMDAgCXRsYnByIGdyMzEsZ3IwLDB4MCwweDAKKy4qOgk4MCAwYyAwOSAxZiAJdGxicHIgZ3IwLGdyMzEsMHgwLDB4MAorLio6CTljIDBjIDA5IDAwIAl0bGJwciBncjAsZ3IwLDB4NywweDAKKy4qOgk4MiAwYyAwOSAwMCAJdGxicHIgZ3IwLGdyMCwweDAsMHgxCisjCisuKjoJODEgZTEgZTQgMDAgCW1xbGNscmhzIGZyMzAsZnIwLGZyMAorLio6CTgxIGUwIDA0IDFlIAltcWxjbHJocyBmcjAsZnIzMCxmcjAKKy4qOgliZCBlMCAwNCAwMCAJbXFsY2xyaHMgZnIwLGZyMCxmcjMwCisjCisuKjoJODEgZTEgZTUgMDAgCW1xbG10aHMgZnIzMCxmcjAsZnIwCisuKjoJODEgZTAgMDUgMWUgCW1xbG10aHMgZnIwLGZyMzAsZnIwCisuKjoJYmQgZTAgMDUgMDAgCW1xbG10aHMgZnIwLGZyMCxmcjMwCisjCisuKjoJODEgZTEgZTQgNDAgCW1xc2xsaGkgZnIzMCwweDAsZnIwCisuKjoJODEgZTAgMDQgN2YgCW1xc2xsaGkgZnIwLDB4M2YsZnIwCisuKjoJYmQgZTAgMDQgNDAgCW1xc2xsaGkgZnIwLDB4MCxmcjMwCisjCisuKjoJODEgZTEgZTQgYzAgCW1xc3JhaGkgZnIzMCwweDAsZnIwCisuKjoJODEgZTAgMDQgZmYgCW1xc3JhaGkgZnIwLDB4M2YsZnIwCisuKjoJYmQgZTAgMDQgYzAgCW1xc3JhaGkgZnIwLDB4MCxmcjMwCmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9mcnYvZnI0NTAtaW5zbi5sIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLWluc24ubApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDZhOGY3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLWluc24ubApAQCAtMCwwICsxLDMzIEBACisuKjogQXNzZW1ibGVyIG1lc3NhZ2VzOgorLio6MTogRXJyb3I6IEluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhcmNoaXRlY3R1cmUKKy4qOjI6IEVycm9yOiBJbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYXJjaGl0ZWN0dXJlCisuKjozOiBFcnJvcjogSW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGFyY2hpdGVjdHVyZQorLio6NDogRXJyb3I6IEluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhcmNoaXRlY3R1cmUKKy4qOjU6IEVycm9yOiBJbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYXJjaGl0ZWN0dXJlCisjCisuKjo3OiBFcnJvcjogSW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGFyY2hpdGVjdHVyZQorLio6ODogRXJyb3I6IEluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhcmNoaXRlY3R1cmUKKy4qOjk6IEVycm9yOiBJbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYXJjaGl0ZWN0dXJlCisuKjoxMDogRXJyb3I6IEluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhcmNoaXRlY3R1cmUKKy4qOjExOiBFcnJvcjogSW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGFyY2hpdGVjdHVyZQorIworLio6MTM6IEVycm9yOiBJbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYXJjaGl0ZWN0dXJlCisuKjoxNDogRXJyb3I6IEluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhcmNoaXRlY3R1cmUKKy4qOjE1OiBFcnJvcjogSW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGFyY2hpdGVjdHVyZQorLio6MTY6IEVycm9yOiBJbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYXJjaGl0ZWN0dXJlCisjCisuKjoxODogRXJyb3I6IEluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhcmNoaXRlY3R1cmUKKy4qOjE5OiBFcnJvcjogSW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGFyY2hpdGVjdHVyZQorLio6MjA6IEVycm9yOiBJbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYXJjaGl0ZWN0dXJlCisjCisuKjoyMjogRXJyb3I6IEluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhcmNoaXRlY3R1cmUKKy4qOjIzOiBFcnJvcjogSW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGFyY2hpdGVjdHVyZQorLio6MjQ6IEVycm9yOiBJbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYXJjaGl0ZWN0dXJlCisjCisuKjoyNjogRXJyb3I6IEluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhcmNoaXRlY3R1cmUKKy4qOjI3OiBFcnJvcjogSW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGFyY2hpdGVjdHVyZQorLio6Mjg6IEVycm9yOiBJbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYXJjaGl0ZWN0dXJlCisjCisuKjozMDogRXJyb3I6IEluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhcmNoaXRlY3R1cmUKKy4qOjMxOiBFcnJvcjogSW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGFyY2hpdGVjdHVyZQorLio6MzI6IEVycm9yOiBJbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYXJjaGl0ZWN0dXJlCmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9mcnYvZnI0NTAtaW5zbi5zIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLWluc24ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjI0YzMwCi0tLSAvZGV2L251bGwKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLWluc24ucwpAQCAtMCwwICsxLDMyIEBACisJbHJhaQlncjMxLGdyMCwjMCwjMCwjMAorCWxyYWkJZ3IwLGdyMzEsIzAsIzAsIzAKKwlscmFpCWdyMCxncjAsIzEsIzAsIzAKKwlscmFpCWdyMCxncjAsIzAsIzEsIzAKKwlscmFpCWdyMCxncjAsIzAsIzAsIzEKKworCWxyYWQJZ3IzMSxncjAsIzAsIzAsIzAKKwlscmFkCWdyMCxncjMxLCMwLCMwLCMwCisJbHJhZAlncjAsZ3IwLCMxLCMwLCMwCisJbHJhZAlncjAsZ3IwLCMwLCMxLCMwCisJbHJhZAlncjAsZ3IwLCMwLCMwLCMxCisKKwl0bGJwcglncjMxLGdyMCwjMCwjMAorCXRsYnByCWdyMCxncjMxLCMwLCMwCisJdGxicHIJZ3IwLGdyMCwjNywjMAorCXRsYnByCWdyMCxncjAsIzAsIzEKKworCW1xbGNscmhzIGZyMzAsZnIwLGZyMAorCW1xbGNscmhzIGZyMCxmcjMwLGZyMAorCW1xbGNscmhzIGZyMCxmcjAsZnIzMAorCisJbXFsbXRocwlmcjMwLGZyMCxmcjAKKwltcWxtdGhzCWZyMCxmcjMwLGZyMAorCW1xbG10aHMJZnIwLGZyMCxmcjMwCisKKwltcXNsbGhpCWZyMzAsIzAsZnIwCisJbXFzbGxoaQlmcjAsIzYzLGZyMAorCW1xc2xsaGkJZnIwLCMwLGZyMzAKKworCW1xc3JhaGkJZnIzMCwjMCxmcjAKKwltcXNyYWhpCWZyMCwjNjMsZnIwCisJbXFzcmFoaQlmcjAsIzAsZnIzMApkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLW1lZGlhLWlzc3VlLmwgYi9nYXMvdGVzdHN1aXRlL2dhcy9mcnYvZnI0NTAtbWVkaWEtaXNzdWUubApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Nzk3MDIxCi0tLSAvZGV2L251bGwKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLW1lZGlhLWlzc3VlLmwKQEAgLTAsMCArMSwzMSBAQAorLio6IEFzc2VtYmxlciBtZXNzYWdlczoKKy4qOjU6IEVycm9yOiBWTElXIHBhY2tpbmcgY29uc3RyYWludCB2aW9sYXRpb24KKy4qOjk6IEVycm9yOiBWTElXIHBhY2tpbmcgY29uc3RyYWludCB2aW9sYXRpb24KKy4qOjEzOiBFcnJvcjogVkxJVyBwYWNraW5nIGNvbnN0cmFpbnQgdmlvbGF0aW9uCisjCisuKjoxNzogRXJyb3I6IFZMSVcgcGFja2luZyBjb25zdHJhaW50IHZpb2xhdGlvbgorLio6MTk6IEVycm9yOiBWTElXIHBhY2tpbmcgY29uc3RyYWludCB2aW9sYXRpb24KKy4qOjIxOiBFcnJvcjogVkxJVyBwYWNraW5nIGNvbnN0cmFpbnQgdmlvbGF0aW9uCisuKjoyMzogRXJyb3I6IFZMSVcgcGFja2luZyBjb25zdHJhaW50IHZpb2xhdGlvbgorLio6MjU6IEVycm9yOiBWTElXIHBhY2tpbmcgY29uc3RyYWludCB2aW9sYXRpb24KKy4qOjI3OiBFcnJvcjogVkxJVyBwYWNraW5nIGNvbnN0cmFpbnQgdmlvbGF0aW9uCisjCisuKjozMzogRXJyb3I6IFZMSVcgcGFja2luZyBjb25zdHJhaW50IHZpb2xhdGlvbgorLio6Mzc6IEVycm9yOiBWTElXIHBhY2tpbmcgY29uc3RyYWludCB2aW9sYXRpb24KKy4qOjQxOiBFcnJvcjogVkxJVyBwYWNraW5nIGNvbnN0cmFpbnQgdmlvbGF0aW9uCisjCisuKjo0NTogRXJyb3I6IFZMSVcgcGFja2luZyBjb25zdHJhaW50IHZpb2xhdGlvbgorLio6NDc6IEVycm9yOiBWTElXIHBhY2tpbmcgY29uc3RyYWludCB2aW9sYXRpb24KKy4qOjQ5OiBFcnJvcjogVkxJVyBwYWNraW5nIGNvbnN0cmFpbnQgdmlvbGF0aW9uCisuKjo1MTogRXJyb3I6IFZMSVcgcGFja2luZyBjb25zdHJhaW50IHZpb2xhdGlvbgorIworLio6NjE6IEVycm9yOiBWTElXIHBhY2tpbmcgY29uc3RyYWludCB2aW9sYXRpb24KKy4qOjY1OiBFcnJvcjogVkxJVyBwYWNraW5nIGNvbnN0cmFpbnQgdmlvbGF0aW9uCisuKjo2OTogRXJyb3I6IFZMSVcgcGFja2luZyBjb25zdHJhaW50IHZpb2xhdGlvbgorIworLio6NzM6IEVycm9yOiBWTElXIHBhY2tpbmcgY29uc3RyYWludCB2aW9sYXRpb24KKy4qOjc1OiBFcnJvcjogVkxJVyBwYWNraW5nIGNvbnN0cmFpbnQgdmlvbGF0aW9uCisuKjo3NzogRXJyb3I6IFZMSVcgcGFja2luZyBjb25zdHJhaW50IHZpb2xhdGlvbgorLio6Nzk6IEVycm9yOiBWTElXIHBhY2tpbmcgY29uc3RyYWludCB2aW9sYXRpb24KKy4qOjgxOiBFcnJvcjogVkxJVyBwYWNraW5nIGNvbnN0cmFpbnQgdmlvbGF0aW9uCisuKjo4MzogRXJyb3I6IFZMSVcgcGFja2luZyBjb25zdHJhaW50IHZpb2xhdGlvbgpkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLW1lZGlhLWlzc3VlLnMgYi9nYXMvdGVzdHN1aXRlL2dhcy9mcnYvZnI0NTAtbWVkaWEtaXNzdWUucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzNmYzk4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLW1lZGlhLWlzc3VlLnMKQEAgLTAsMCArMSw4MyBAQAorCTsgTS0xIGZpcnN0CisJbWFuZC5wICAgICBmcjAsZnIxLGZyMgk7IE0xCisJbXBhY2toICAgICBmcjQsZnI1LGZyNiAgOyBNMSAtLSBvaworCW1hbmQucCAgICAgZnIwLGZyMSxmcjIJOyBNMQorCW1jcGxpICAgICAgZnI0LCMxLGZyNgk7IE0yIC0tIGVycm9yCisJbWFuZC5wICAgICBmcjAsZnIxLGZyMgk7IE0xCisJbW11bGh1ICAgICBmcjQsZnI2LGFjYzggOyBNMyAtLSBvaworCW1hbmQucCAgICAgZnIwLGZyMSxmcjIJOyBNMQorCW1xbXVsaHUgICAgZnI0LGZyNixhY2M4IDsgTTQgLS0gZXJyb3IKKwltYW5kLnAgICAgIGZyMCxmcjEsZnIyCTsgTTEKKwltY3V0aSAgICAgIGFjYzgsIzIsZnI4CTsgTTUgLS0gb2sKKwltYW5kLnAgICAgIGZyMCxmcjEsZnIyCTsgTTEKKwltZGN1dHNzaSAgIGFjYzgsIzIsZnI4CTsgTTYgLS0gZXJyb3IKKworCTsgTS0yIGZpcnN0CisJbXFhZGRoc3MucCBmcjAsZnIyLGZyMgk7IE0yCisJbXBhY2toICAgICBmcjQsZnI1LGZyNiAgOyBNMSAtLSBlcnJvcgorCW1xYWRkaHNzLnAgZnIwLGZyMixmcjIJOyBNMgorCW1jcGxpICAgICAgZnI0LCMxLGZyNgk7IE0yIC0tIGVycm9yCisJbXFhZGRoc3MucCBmcjAsZnIyLGZyMgk7IE0yCisJbW11bGh1ICAgICBmcjQsZnI2LGFjYzggOyBNMyAtLSBlcnJvcgorCW1xYWRkaHNzLnAgZnIwLGZyMixmcjIJOyBNMgorCW1xbXVsaHUgICAgZnI0LGZyNixhY2M4IDsgTTQgLS0gZXJyb3IKKwltcWFkZGhzcy5wIGZyMCxmcjIsZnIyCTsgTTIKKwltY3V0aSAgICAgIGFjYzgsIzIsZnI4CTsgTTUgLS0gZXJyb3IKKwltcWFkZGhzcy5wIGZyMCxmcjIsZnIyCTsgTTIKKwltZGN1dHNzaSAgIGFjYzgsIzIsZnI4CTsgTTYgLS0gZXJyb3IKKworCTsgTS0zIGZpcnN0CisJbXd0YWNjLnAgICBmcjAsYWNjMAk7IE0zCisJbXBhY2toICAgICBmcjQsZnI1LGZyNiAgOyBNMSAtLSBvaworCW13dGFjYy5wICAgZnIwLGFjYzAJOyBNMworCW1jcGxpICAgICAgZnI0LCMxLGZyNgk7IE0yIC0tIGVycm9yCisJbXd0YWNjLnAgICBmcjAsYWNjMAk7IE0zCisJbW11bGh1ICAgICBmcjQsZnI2LGFjYzggOyBNMyAtLSBvaworCW13dGFjYy5wICAgZnIwLGFjYzAJOyBNMworCW1xbXVsaHUgICAgZnI0LGZyNixhY2M4IDsgTTQgLS0gZXJyb3IKKwltd3RhY2MucCAgIGZyMCxhY2MwCTsgTTMKKwltY3V0aSAgICAgIGFjYzgsIzIsZnI4CTsgTTUgLS0gb2sKKwltd3RhY2MucCAgIGZyMCxhY2MwCTsgTTMKKwltZGN1dHNzaSAgIGFjYzgsIzIsZnI4CTsgTTYgLS0gZXJyb3IKKworCTsgTS00IGZpcnN0CisJbXFjcHhycy5wICBmcjAsZnIyLGFjYzAJOyBNNAorCW1wYWNraCAgICAgZnI0LGZyNSxmcjYgIDsgTTEgLS0gZXJyb3IKKwltcWNweHJzLnAgIGZyMCxmcjIsYWNjMAk7IE00CisJbWNwbGkgICAgICBmcjQsIzEsZnI2CTsgTTIgLS0gZXJyb3IKKwltcWNweHJzLnAgIGZyMCxmcjIsYWNjMAk7IE00CisJbW11bGh1ICAgICBmcjQsZnI2LGFjYzggOyBNMyAtLSBlcnJvcgorCW1xY3B4cnMucCAgZnIwLGZyMixhY2MwCTsgTTQKKwltcW11bGh1ICAgIGZyNCxmcjYsYWNjOCA7IE00IC0tIGVycm9yCisJbXFjcHhycy5wICBmcjAsZnIyLGFjYzAJOyBNNAorCW1jdXRpICAgICAgYWNjOCwjMixmcjgJOyBNNSAtLSBvaworCW1xY3B4cnMucCAgZnIwLGZyMixhY2MwCTsgTTQKKwltZGN1dHNzaSAgIGFjYzgsIzIsZnI4CTsgTTYgLS0gb2sKKworCTsgTS01IGZpcnN0CisJbXJkYWNjLnAgICBhY2MwLGZyMAk7IE01CisJbXBhY2toICAgICBmcjQsZnI1LGZyNiAgOyBNMSAtLSBvaworCW1yZGFjYy5wICAgYWNjMCxmcjAJOyBNNQorCW1jcGxpICAgICAgZnI0LCMxLGZyNgk7IE0yIC0tIGVycm9yCisJbXJkYWNjLnAgICBhY2MwLGZyMAk7IE01CisJbW11bGh1ICAgICBmcjQsZnI2LGFjYzggOyBNMyAtLSBvaworCW1yZGFjYy5wICAgYWNjMCxmcjAJOyBNNQorCW1xbXVsaHUgICAgZnI0LGZyNixhY2M4IDsgTTQgLS0gZXJyb3IKKwltcmRhY2MucCAgIGFjYzAsZnIwCTsgTTUKKwltY3V0aSAgICAgIGFjYzgsIzIsZnI4CTsgTTUgLS0gb2sKKwltcmRhY2MucCAgIGFjYzAsZnIwCTsgTTUKKwltZGN1dHNzaSAgIGFjYzgsIzIsZnI4CTsgTTYgLS0gZXJyb3IKKworCTsgTS02IGZpcnN0CisJbWRjdXRzc2kucCBhY2MwLCMzLGZyMAk7IE02CisJbXBhY2toICAgICBmcjQsZnI1LGZyNiAgOyBNMSAtLSBlcnJvcgorCW1kY3V0c3NpLnAgYWNjMCwjMyxmcjAJOyBNNgorCW1jcGxpICAgICAgZnI0LCMxLGZyNgk7IE0yIC0tIGVycm9yCisJbWRjdXRzc2kucCBhY2MwLCMzLGZyMAk7IE02CisJbW11bGh1ICAgICBmcjQsZnI2LGFjYzggOyBNMyAtLSBlcnJvcgorCW1kY3V0c3NpLnAgYWNjMCwjMyxmcjAJOyBNNgorCW1xbXVsaHUgICAgZnI0LGZyNixhY2M4IDsgTTQgLS0gZXJyb3IKKwltZGN1dHNzaS5wIGFjYzAsIzMsZnIwCTsgTTYKKwltY3V0aSAgICAgIGFjYzgsIzIsZnI4CTsgTTUgLS0gZXJyb3IKKwltZGN1dHNzaS5wIGFjYzAsIzMsZnIwCTsgTTYKKwltZGN1dHNzaSAgIGFjYzgsIzIsZnI4CTsgTTYgLS0gZXJyb3IKZGlmZiAtLWdpdCBhL2dhcy90ZXN0c3VpdGUvZ2FzL2Zydi9mcjQ1MC1zcHIuZCBiL2dhcy90ZXN0c3VpdGUvZ2FzL2Zydi9mcjQ1MC1zcHIuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWIxZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLXNwci5kCkBAIC0wLDAgKzEsMTA3IEBACisjYXM6IC1tY3B1PWZyNDUwCisjb2JqZHVtcDogLWRyCisKKy4qOiAgICAgZmlsZSBmb3JtYXQgLioKKworRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLnRleHQ6CisKKy4qIDxcLnRleHQ+OgorLio6CTgwIDBjIDAxIDg0IAltb3ZncyBncjQscHNyCisuKjoJODAgMGMgMTEgODQgCW1vdmdzIGdyNCxwY3NyCisuKjoJODAgMGMgMjEgODQgCW1vdmdzIGdyNCxicGNzcgorLio6CTgwIDBjIDMxIDg0IAltb3ZncyBncjQsdGJyCisuKjoJODAgMGMgNDEgODQgCW1vdmdzIGdyNCxicHNyCisuKjoJODAgMGQgMDEgODQgCW1vdmdzIGdyNCxoc3IwCisuKjoJODggMGMgMDEgODQgCW1vdmdzIGdyNCxjY3IKKy4qOgk4OCAwYyA3MSA4NCAJbW92Z3MgZ3I0LGNjY3IKKy4qOgk4OCAwZCAwMSA4NCAJbW92Z3MgZ3I0LGxyCisuKjoJODggMGQgMTEgODQgCW1vdmdzIGdyNCxsY3IKKy4qOgk4OCAwZCA4MSA4NCAJbW92Z3MgZ3I0LGlhY2MwaAorLio6CTg4IDBkIDkxIDg0IAltb3ZncyBncjQsaWFjYzBsCisuKjoJODggMGUgMDEgODQgCW1vdmdzIGdyNCxpc3IKKy4qOgk5MCAwYyAwMSA4NCAJbW92Z3MgZ3I0LGVwY3IwCisuKjoJOTIgMGMgMDEgODQgCW1vdmdzIGdyNCxlc3IwCisuKjoJOTIgMGMgZTEgODQgCW1vdmdzIGdyNCxlc3IxNAorLio6CTkyIDBjIGYxIDg0IAltb3ZncyBncjQsZXNyMTUKKy4qOgk5NCAwZSAxMSA4NCAJbW92Z3MgZ3I0LGVzZnIxCisuKjoJOWEgMGMgMDEgODQgCW1vdmdzIGdyNCxzY3IwCisuKjoJOWEgMGMgMTEgODQgCW1vdmdzIGdyNCxzY3IxCisuKjoJOWEgMGMgMjEgODQgCW1vdmdzIGdyNCxzY3IyCisuKjoJOWEgMGMgMzEgODQgCW1vdmdzIGdyNCxzY3IzCisuKjoJYTggMGMgMDEgODQgCW1vdmdzIGdyNCxtc3IwCisuKjoJYTggMGMgMTEgODQgCW1vdmdzIGdyNCxtc3IxCisuKjoJYjAgMGMgMDEgODQgCW1vdmdzIGdyNCxlYXIwCisuKjoJYjAgMGMgZjEgODQgCW1vdmdzIGdyNCxlYXIxNQorLio6CWI0IDBjIDAxIDg0IAltb3ZncyBncjQsaWFtbHIwCisuKjoJYjQgMGMgMTEgODQgCW1vdmdzIGdyNCxpYW1scjEKKy4qOgliNCAwYyAyMSA4NCAJbW92Z3MgZ3I0LGlhbWxyMgorLio6CWI0IDBjIDMxIDg0IAltb3ZncyBncjQsaWFtbHIzCisuKjoJYjQgMGMgNDEgODQgCW1vdmdzIGdyNCxpYW1scjQKKy4qOgliNCAwYyA1MSA4NCAJbW92Z3MgZ3I0LGlhbWxyNQorLio6CWI0IDBjIDYxIDg0IAltb3ZncyBncjQsaWFtbHI2CisuKjoJYjQgMGMgNzEgODQgCW1vdmdzIGdyNCxpYW1scjcKKy4qOgliNiAwYyAwMSA4NCAJbW92Z3MgZ3I0LGlhbXByMAorLio6CWI2IDBjIDExIDg0IAltb3ZncyBncjQsaWFtcHIxCisuKjoJYjYgMGMgMjEgODQgCW1vdmdzIGdyNCxpYW1wcjIKKy4qOgliNiAwYyAzMSA4NCAJbW92Z3MgZ3I0LGlhbXByMworLio6CWI2IDBjIDQxIDg0IAltb3ZncyBncjQsaWFtcHI0CisuKjoJYjYgMGMgNTEgODQgCW1vdmdzIGdyNCxpYW1wcjUKKy4qOgliNiAwYyA2MSA4NCAJbW92Z3MgZ3I0LGlhbXByNgorLio6CWI2IDBjIDcxIDg0IAltb3ZncyBncjQsaWFtcHI3CisuKjoJYjggMGMgMDEgODQgCW1vdmdzIGdyNCxkYW1scjAKKy4qOgliOCAwYyAxMSA4NCAJbW92Z3MgZ3I0LGRhbWxyMQorLio6CWI4IDBjIDIxIDg0IAltb3ZncyBncjQsZGFtbHIyCisuKjoJYjggMGMgMzEgODQgCW1vdmdzIGdyNCxkYW1scjMKKy4qOgliOCAwYyA0MSA4NCAJbW92Z3MgZ3I0LGRhbWxyNAorLio6CWI4IDBjIDUxIDg0IAltb3ZncyBncjQsZGFtbHI1CisuKjoJYjggMGMgNjEgODQgCW1vdmdzIGdyNCxkYW1scjYKKy4qOgliOCAwYyA3MSA4NCAJbW92Z3MgZ3I0LGRhbWxyNworLio6CWI4IDBjIDgxIDg0IAltb3ZncyBncjQsZGFtbHI4CisuKjoJYjggMGMgOTEgODQgCW1vdmdzIGdyNCxkYW1scjkKKy4qOgliOCAwYyBhMSA4NCAJbW92Z3MgZ3I0LGRhbWxyMTAKKy4qOgliOCAwYyBiMSA4NCAJbW92Z3MgZ3I0LGRhbWxyMTEKKy4qOgliYSAwYyAwMSA4NCAJbW92Z3MgZ3I0LGRhbXByMAorLio6CWJhIDBjIDExIDg0IAltb3ZncyBncjQsZGFtcHIxCisuKjoJYmEgMGMgMjEgODQgCW1vdmdzIGdyNCxkYW1wcjIKKy4qOgliYSAwYyAzMSA4NCAJbW92Z3MgZ3I0LGRhbXByMworLio6CWJhIDBjIDQxIDg0IAltb3ZncyBncjQsZGFtcHI0CisuKjoJYmEgMGMgNTEgODQgCW1vdmdzIGdyNCxkYW1wcjUKKy4qOgliYSAwYyA2MSA4NCAJbW92Z3MgZ3I0LGRhbXByNgorLio6CWJhIDBjIDcxIDg0IAltb3ZncyBncjQsZGFtcHI3CisuKjoJYmEgMGMgODEgODQgCW1vdmdzIGdyNCxkYW1wcjgKKy4qOgliYSAwYyA5MSA4NCAJbW92Z3MgZ3I0LGRhbXByOQorLio6CWJhIDBjIGExIDg0IAltb3ZncyBncjQsZGFtcHIxMAorLio6CWJhIDBjIGIxIDg0IAltb3ZncyBncjQsZGFtcHIxMQorLio6CWJjIDBjIDAxIDg0IAltb3ZncyBncjQsYW1jcgorLio6CWJjIDBjIDUxIDg0IAltb3ZncyBncjQsaWFtdnIxCisuKjoJYmMgMGMgNzEgODQgCW1vdmdzIGdyNCxkYW12cjEKKy4qOgliYyAwZCAwMSA4NCAJbW92Z3MgZ3I0LGN4bnIKKy4qOgliYyAwZCAxMSA4NCAJbW92Z3MgZ3I0LHR0YnIKKy4qOgliYyAwZCAyMSA4NCAJbW92Z3MgZ3I0LHRwbHIKKy4qOgliYyAwZCAzMSA4NCAJbW92Z3MgZ3I0LHRwcHIKKy4qOgliYyAwZCA0MSA4NCAJbW92Z3MgZ3I0LHRweHIKKy4qOgliYyAwZSAwMSA4NCAJbW92Z3MgZ3I0LHRpbWVyaAorLio6CWJjIDBlIDExIDg0IAltb3ZncyBncjQsdGltZXJsCisuKjoJYmMgMGUgMjEgODQgCW1vdmdzIGdyNCx0aW1lcmQKKy4qOgljMCAwYyAwMSA4NCAJbW92Z3MgZ3I0LGRjcgorLio6CWMwIDBjIDExIDg0IAltb3ZncyBncjQsYnJyCisuKjoJYzAgMGMgMjEgODQgCW1vdmdzIGdyNCxubWFyCisuKjoJYzAgMGMgMzEgODQgCW1vdmdzIGdyNCxidGJyCisuKjoJYzAgMGMgNDEgODQgCW1vdmdzIGdyNCxpYmFyMAorLio6CWMwIDBjIDUxIDg0IAltb3ZncyBncjQsaWJhcjEKKy4qOgljMCAwYyA2MSA4NCAJbW92Z3MgZ3I0LGliYXIyCisuKjoJYzAgMGMgNzEgODQgCW1vdmdzIGdyNCxpYmFyMworLio6CWMwIDBjIDgxIDg0IAltb3ZncyBncjQsZGJhcjAKKy4qOgljMCAwYyA5MSA4NCAJbW92Z3MgZ3I0LGRiYXIxCisuKjoJYzAgMGMgYTEgODQgCW1vdmdzIGdyNCxkYmFyMgorLio6CWMwIDBjIGIxIDg0IAltb3ZncyBncjQsZGJhcjMKKy4qOgljMCAwYyBjMSA4NCAJbW92Z3MgZ3I0LGRiZHIwMAorLio6CWMwIDBjIGQxIDg0IAltb3ZncyBncjQsZGJkcjAxCisuKjoJYzAgMGMgZTEgODQgCW1vdmdzIGdyNCxkYmRyMDIKKy4qOgljMCAwYyBmMSA4NCAJbW92Z3MgZ3I0LGRiZHIwMworLio6CWMwIDBkIDAxIDg0IAltb3ZncyBncjQsZGJkcjEwCisuKjoJYzAgMGQgMTEgODQgCW1vdmdzIGdyNCxkYmRyMTEKKy4qOgljMCAwZCBjMSA4NCAJbW92Z3MgZ3I0LGRibXIwMAorLio6CWMwIDBkIGQxIDg0IAltb3ZncyBncjQsZGJtcjAxCisuKjoJYzAgMGUgMDEgODQgCW1vdmdzIGdyNCxkYm1yMTAKKy4qOgljMCAwZSAxMSA4NCAJbW92Z3MgZ3I0LGRibXIxMQpkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLXNwci5zIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvZnJ2L2ZyNDUwLXNwci5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZTNiYTYKLS0tIC9kZXYvbnVsbAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9mcnYvZnI0NTAtc3ByLnMKQEAgLTAsMCArMSw5OSBAQAorCW1vdmdzCWdyNCwgcHNyCTsgMHgwMDAgMDAwMDAKKwltb3ZncwlncjQsIHBjc3IJOyAweDAwMSAwMDAwMQorCW1vdmdzCWdyNCwgYnBjc3IJOyAweDAwMiAwMDAwMgorCW1vdmdzCWdyNCwgdGJyCTsgMHgwMDMgMDAwMDMKKwltb3ZncwlncjQsIGJwc3IJOyAweDAwNCAwMDAwNAorCW1vdmdzCWdyNCwgaHNyMAk7IDB4MDEwIDAwMDIwCisJbW92Z3MJZ3I0LCBjY3IJOyAweDEwMCAwMDQwMAorCW1vdmdzCWdyNCwgY2Njcgk7IDB4MTA3IDAwNDA3CisJbW92Z3MJZ3I0LCBscgkJOyAweDExMCAwMDQyMAorCW1vdmdzCWdyNCwgbGNyCTsgMHgxMTEgMDA0MjEKKwltb3ZncwlncjQsIGlhY2MwaAk7IDB4MTE4IDAwNDMwCisJbW92Z3MJZ3I0LCBpYWNjMGwJOyAweDExOSAwMDQzMQorCW1vdmdzCWdyNCwgaXNyCTsgMHgxMjAgMDA0NDAKKwltb3ZncwlncjQsIGVwY3IwCTsgMHgyMDAgMDEwMDAKKwltb3ZncwlncjQsIGVzcjAJOyAweDI0MCAwMTEwMAorCW1vdmdzCWdyNCwgZXNyMTQJOyAweDI0ZSAwMTExNgorCW1vdmdzCWdyNCwgZXNyMTUJOyAweDI0ZiAwMTExNworCW1vdmdzCWdyNCwgZXNmcjEJOyAweDJhMSAwMTI0MQorCW1vdmdzCWdyNCwgc2NyMAk7IDB4MzQwIDAxNTAwCisJbW92Z3MJZ3I0LCBzY3IxCTsgMHgzNDEgMDE1MDEKKwltb3ZncwlncjQsIHNjcjIJOyAweDM0MiAwMTUwMgorCW1vdmdzCWdyNCwgc2NyMwk7IDB4MzQzIDAxNTAzCisJbW92Z3MJZ3I0LCBtc3IwCTsgMHg1MDAgMDI0MDAKKwltb3ZncwlncjQsIG1zcjEJOyAweDUwMSAwMjQwMQorCW1vdmdzCWdyNCwgZWFyMAk7IDB4NjAwIDAzMDAwCisJbW92Z3MJZ3I0LCBlYXIxNQk7IDB4NjBmIDAzMDE3CisJbW92Z3MJZ3I0LCBpYW1scjAJOyAweDY4MCAwMzIwMAorCW1vdmdzCWdyNCwgaWFtbHIxCTsgMHg2ODEgMDMyMDEKKwltb3ZncwlncjQsIGlhbWxyMgk7IDB4NjgyIDAzMjAyCisJbW92Z3MJZ3I0LCBpYW1scjMJOyAweDY4MyAwMzIwMworCW1vdmdzCWdyNCwgaWFtbHI0CTsgMHg2ODQgMDMyMDQKKwltb3ZncwlncjQsIGlhbWxyNQk7IDB4Njg1IDAzMjA1CisJbW92Z3MJZ3I0LCBpYW1scjYJOyAweDY4NiAwMzIwNgorCW1vdmdzCWdyNCwgaWFtbHI3CTsgMHg2ODcgMDMyMDcKKwltb3ZncwlncjQsIGlhbXByMAk7IDB4NmMwIDAzMzAwCisJbW92Z3MJZ3I0LCBpYW1wcjEJOyAweDZjMSAwMzMwMQorCW1vdmdzCWdyNCwgaWFtcHIyCTsgMHg2YzIgMDMzMDIKKwltb3ZncwlncjQsIGlhbXByMwk7IDB4NmMzIDAzMzAzCisJbW92Z3MJZ3I0LCBpYW1wcjQJOyAweDZjNCAwMzMwNAorCW1vdmdzCWdyNCwgaWFtcHI1CTsgMHg2YzUgMDMzMDUKKwltb3ZncwlncjQsIGlhbXByNgk7IDB4NmM2IDAzMzA2CisJbW92Z3MJZ3I0LCBpYW1wcjcJOyAweDZjNyAwMzMwNworCW1vdmdzCWdyNCwgZGFtbHIwCTsgMHg3MDAgMDM0MDAKKwltb3ZncwlncjQsIGRhbWxyMQk7IDB4NzAxIDAzNDAxCisJbW92Z3MJZ3I0LCBkYW1scjIJOyAweDcwMiAwMzQwMgorCW1vdmdzCWdyNCwgZGFtbHIzCTsgMHg3MDMgMDM0MDMKKwltb3ZncwlncjQsIGRhbWxyNAk7IDB4NzA0IDAzNDA0CisJbW92Z3MJZ3I0LCBkYW1scjUJOyAweDcwNSAwMzQwNQorCW1vdmdzCWdyNCwgZGFtbHI2CTsgMHg3MDYgMDM0MDYKKwltb3ZncwlncjQsIGRhbWxyNwk7IDB4NzA3IDAzNDA3CisJbW92Z3MJZ3I0LCBkYW1scjgJOyAweDcwOCAwMzQxMAorCW1vdmdzCWdyNCwgZGFtbHI5CTsgMHg3MDkgMDM0MTEKKwltb3ZncwlncjQsIGRhbWxyMTAJOyAweDcwYSAwMzQxMgorCW1vdmdzCWdyNCwgZGFtbHIxMQk7IDB4NzBiIDAzNDEzCisJbW92Z3MJZ3I0LCBkYW1wcjAJOyAweDc0MCAwMzUwMAorCW1vdmdzCWdyNCwgZGFtcHIxCTsgMHg3NDEgMDM1MDEKKwltb3ZncwlncjQsIGRhbXByMgk7IDB4NzQyIDAzNTAyCisJbW92Z3MJZ3I0LCBkYW1wcjMJOyAweDc0MyAwMzUwMworCW1vdmdzCWdyNCwgZGFtcHI0CTsgMHg3NDQgMDM1MDQKKwltb3ZncwlncjQsIGRhbXByNQk7IDB4NzQ1IDAzNTA1CisJbW92Z3MJZ3I0LCBkYW1wcjYJOyAweDc0NiAwMzUwNgorCW1vdmdzCWdyNCwgZGFtcHI3CTsgMHg3NDcgMDM1MDcKKwltb3ZncwlncjQsIGRhbXByOAk7IDB4NzQ4IDAzNTEwCisJbW92Z3MJZ3I0LCBkYW1wcjkJOyAweDc0OSAwMzUxMQorCW1vdmdzCWdyNCwgZGFtcHIxMAk7IDB4NzRhIDAzNTEyCisJbW92Z3MJZ3I0LCBkYW1wcjExCTsgMHg3NGIgMDM1MTMKKwltb3ZncwlncjQsIGFtY3IJOyAweDc4MCAwMzYwMAorCW1vdmdzCWdyNCwgaWFtdnIxCTsgMHg3ODUgMDM2MDUKKwltb3ZncwlncjQsIGRhbXZyMQk7IDB4Nzg3IDAzNjA3CisJbW92Z3MJZ3I0LCBjeG5yCTsgMHg3OTAgMDM2MjAKKwltb3ZncwlncjQsIHR0YnIJOyAweDc5MSAwMzYyMQorCW1vdmdzCWdyNCwgdHBscgk7IDB4NzkyIDAzNjIyCisJbW92Z3MJZ3I0LCB0cHByCTsgMHg3OTMgMDM2MjMKKwltb3ZncwlncjQsIHRweHIJOyAweDc5NCAwMzYyNAorCW1vdmdzCWdyNCwgdGltZXJoCTsgMHg3YTAgMDM2NDAKKwltb3ZncwlncjQsIHRpbWVybAk7IDB4N2ExIDAzNjQxCisJbW92Z3MJZ3I0LCB0aW1lcmQJOyAweDdhMiAwMzY0MgorCW1vdmdzCWdyNCwgZGNyCTsgMHg4MDAgMDQwMDAKKwltb3ZncwlncjQsIGJycgk7IDB4ODAxIDA0MDAxCisJbW92Z3MJZ3I0LCBubWFyCTsgMHg4MDIgMDQwMDIKKwltb3ZncwlncjQsIGJ0YnIJOyAweDgwMyAwNDAwMworCW1vdmdzCWdyNCwgaWJhcjAJOyAweDgwNCAwNDAwNAorCW1vdmdzCWdyNCwgaWJhcjEJOyAweDgwNSAwNDAwNQorCW1vdmdzCWdyNCwgaWJhcjIJOyAweDgwNiAwNDAwNgorCW1vdmdzCWdyNCwgaWJhcjMJOyAweDgwNyAwNDAwNworCW1vdmdzCWdyNCwgZGJhcjAJOyAweDgwOCAwNDAxMAorCW1vdmdzCWdyNCwgZGJhcjEJOyAweDgwOSAwNDAxMQorCW1vdmdzCWdyNCwgZGJhcjIJOyAweDgwQSAwNDAxMgorCW1vdmdzCWdyNCwgZGJhcjMJOyAweDgwQiAwNDAxMworCW1vdmdzCWdyNCwgZGJkcjAwCTsgMHg4MEMgMDQwMTQKKwltb3ZncwlncjQsIGRiZHIwMQk7IDB4ODBEIDA0MDE1CisJbW92Z3MJZ3I0LCBkYmRyMDIJOyAweDgwRSAwNDAxNgorCW1vdmdzCWdyNCwgZGJkcjAzCTsgMHg4MEYgMDQwMTcKKwltb3ZncwlncjQsIGRiZHIxMAk7IDB4ODEwIDA0MDIwCisJbW92Z3MJZ3I0LCBkYmRyMTEJOyAweDgxMSAwNDAyMQorCW1vdmdzCWdyNCwgZGJtcjAwCTsgMHg4MUMgMDQwMzQKKwltb3ZncwlncjQsIGRibXIwMQk7IDB4ODFEIDA0MDM1CisJbW92Z3MJZ3I0LCBkYm1yMTAJOyAweDgyMCAwNDA0MAorCW1vdmdzCWdyNCwgZGJtcjExCTsgMHg4MjEgMDQwNDEKZGlmZiAtLWdpdCBhL2dhcy90ZXN0c3VpdGUvZ2FzL2k4NjAvZGlyLWludGVsMDMtZXJyLmwgYi9nYXMvdGVzdHN1aXRlL2dhcy9pODYwL2Rpci1pbnRlbDAzLWVyci5sCmluZGV4IDQ4MGUxYWUuLmI4MjYxMjggMTAwNjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL2k4NjAvZGlyLWludGVsMDMtZXJyLmwKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvaTg2MC9kaXItaW50ZWwwMy1lcnIubApAQCAtMSw1ICsxLDUgQEAKIC4qOiBBc3NlbWJsZXIgbWVzc2FnZXM6CiAuKjo4OiBFcnJvcjogRGlyZWN0aXZlIC5hdG1wIGF2YWlsYWJsZSBvbmx5IHdpdGggLW1pbnRlbC1zeW50YXggb3B0aW9uCi0uKjo4OiBXYXJuaW5nOiByZXN0IG9mIGxpbmUgaWdub3JlZDsgZmlyc3QgaWdub3JlZCBjaGFyYWN0ZXIgaXMgYHInCisuKjo4OiBFcnJvcjoganVuayBhdCBlbmQgb2YgbGluZSwgZmlyc3QgdW5yZWNvZ25pemVkIGNoYXJhY3RlciBpcyBgcicKIC4qOjEwOiBFcnJvcjogRGlyZWN0aXZlIC5kdWFsIGF2YWlsYWJsZSBvbmx5IHdpdGggLW1pbnRlbC1zeW50YXggb3B0aW9uCiAuKjoxMzogRXJyb3I6IERpcmVjdGl2ZSAuZW5kZHVhbCBhdmFpbGFibGUgb25seSB3aXRoIC1taW50ZWwtc3ludGF4IG9wdGlvbgpkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvbTY4aGMxMS9tNjhoYzExLmV4cCBiL2dhcy90ZXN0c3VpdGUvZ2FzL202OGhjMTEvbTY4aGMxMS5leHAKaW5kZXggMmJmYTg4MC4uODY4MjQxYSAxMDA2NDQKLS0tIGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvbTY4aGMxMS9tNjhoYzExLmV4cAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9tNjhoYzExL202OGhjMTEuZXhwCkBAIC0xNjEsNyArMTYxLDcgQEAKIGdhc19tNjhoYzExX3dhcm5pbmcgIiIgIi5tb2RlIFwiYmFyXCJcbiIgIkludmFsaWQgbW9kZTogLmJhci4iCiBnYXNfbTY4aGMxMV9lcnJvciAiIiAiLnJlbGF4IDIzXG4iICJiYWQgLnJlbGF4IGZvcm1hdCIKIGdhc19tNjhoYzExX2Vycm9yICIiICIucmVsYXggYmFyLTIzXG4iICJiYWQgLnJlbGF4IGZvcm1hdCIKLWdhc19tNjhoYzExX3dhcm5pbmcgIiIgIi5mYXIgYmFyIGJhclxuIiAicmVzdCBvZiBsaW5lIGlnbm9yZWQiCitnYXNfbTY4aGMxMV9lcnJvciAiIiAiLmZhciBiYXIgYmFyXG4iICJqdW5rIGF0IGVuZCBvZiBsaW5lIgogCiAKIHJ1bl9kdW1wX3Rlc3QgaW5zbnMKZGlmZiAtLWdpdCBhL2dhcy90ZXN0c3VpdGUvZ2FzL21hY3Jvcy9tYWNyb3MuZXhwIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvbWFjcm9zL21hY3Jvcy5leHAKaW5kZXggMTk1NjhkOS4uODNkYzRjZiAxMDA2NDQKLS0tIGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvbWFjcm9zL21hY3Jvcy5leHAKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvbWFjcm9zL21hY3Jvcy5leHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogICAgICMgVGhlc2UgZmFpbCBkdWUgdG8gTk9fU1RSSU5HX0VTQ0FQRVMKICAgICBzZXR1cF94ZmFpbCAicG93ZXJwYyotKi1haXgqIiAicG93ZXJwYyotKi1iZW9zKiIgInBvd2VycGMqLSotbWFjb3MqIgotICAgIHNldHVwX3hmYWlsICJwb3dlcnBjKi0qLW1wdyoiICJwb3dlcnBjKi0qLXBlIiAicG93ZXJwYyotKi0qd2luKiIKKyAgICBzZXR1cF94ZmFpbCAicG93ZXJwYyotKi1wZSIgInBvd2VycGMqLSotKndpbioiCiAgICAgc2V0dXBfeGZhaWwgInJzNjAwMC0qLSoiCiAKICAgICAjIEZJWE1FOiBEdWUgdG8gZGlmZmVyZW5jZSBpbiB3aGF0ICJjb25zZWN1dGl2ZSBvY3RldHMiIG1lYW5zLgpkaWZmIC0tZ2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvc2gvYmFzaWMuZXhwIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvc2gvYmFzaWMuZXhwCmluZGV4IDlkMTZlMGUuLjFlNzJmZjEgMTAwNjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL3NoL2Jhc2ljLmV4cAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9zaC9iYXNpYy5leHAKQEAgLTE1Nyw2ICsxNTcsOSBAQAogCXJ1bl9kdW1wX3Rlc3QgInRsc3BpYyIKIAogCXJ1bl9kdW1wX3Rlc3QgInRsc25vcGljIgorCisJIyBUZXN0IC1yZW5lc2FzLgorCXJ1bl9kdW1wX3Rlc3QgInJlbmVzYXMtMSIKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2dhcy90ZXN0c3VpdGUvZ2FzL3NoL3JlbmVzYXMtMS5kIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvc2gvcmVuZXNhcy0xLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFjOTI0NwotLS0gL2Rldi9udWxsCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL3NoL3JlbmVzYXMtMS5kCkBAIC0wLDAgKzEsMTEgQEAKKyNvYmpkdW1wOiAtZHIKKyNhczogLXJlbmVzYXMKKworLio6ICtmaWxlIGZvcm1hdCAuKgorCitEaXNhc3NlbWJseSBvZiBzZWN0aW9uIC50ZXh0OgorCiswMDAwMDAwMCA8Zm9vLTB4ND46CisgICAwOgkwMCAwMCBbIAldKlwud29yZCAweDAwMDAKK1sgCV0rMDogUl9TSF9ESVIzMglmb28KKwlcLlwuXC4KZGlmZiAtLWdpdCBhL2dhcy90ZXN0c3VpdGUvZ2FzL3NoL3JlbmVzYXMtMS5zIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvc2gvcmVuZXNhcy0xLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc0YjU4NgotLS0gL2Rldi9udWxsCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL3NoL3JlbmVzYXMtMS5zCkBAIC0wLDAgKzEsMyBAQAorCS50ZXh0CisJLmxvbmcJZm9vCitmb286CmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9zaC9zaDY0L2Vyci1kc3AucyBiL2dhcy90ZXN0c3VpdGUvZ2FzL3NoL3NoNjQvZXJyLWRzcC5zCmluZGV4IDUyMTczYTcuLjNjZWUwMDkgMTAwNjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL3NoL3NoNjQvZXJyLWRzcC5zCisrKyBiL2dhcy90ZXN0c3VpdGUvZ2FzL3NoL3NoNjQvZXJyLWRzcC5zCkBAIC0xMSw1ICsxMSw1IEBACiAJLnRleHQKIHN0YXJ0OgogCWxkYyByMyxtb2QJCSEgeyBkZy1lcnJvciAiaW52YWxpZCBvcGVyYW5kcyIgfQotCWxkcmUgQCgxNixwYykJCSEgeyBkZy1lcnJvciAidW5rbm93biBvcGNvZGUiIH0KKwlsZHJlIEAoMTYscGMpCQkhIHsgZGctZXJyb3IgIm9wY29kZSBub3QgdmFsaWQgZm9yIHRoaXMgY3B1IHZhcmlhbnQiIH0KIAlsZHMgcjQsYTAJCSEgeyBkZy1lcnJvciAiaW52YWxpZCBvcGVyYW5kcyIgfQpkaWZmIC0tZ2l0IGEvZ3Byb2YvQ2hhbmdlTG9nIGIvZ3Byb2YvQ2hhbmdlTG9nCmluZGV4IDc1NDMxYzIuLjNlYzM1MmQgMTAwNjQ0Ci0tLSBhL2dwcm9mL0NoYW5nZUxvZworKysgYi9ncHJvZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMSBAQAorMjAwNC0wMy0xOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKworCSogcG8vc3YucG86IFVwZGF0ZWQuCisKKwkqIE1ha2VmaWxlLmFtOiBSdW4gIm1ha2UgZGVwLWFtIi4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCSogZ2NvbmZpZy5pbjogUmVnZW5lcmF0ZS4KKwkqIHBvL2dwcm9mLnBvdDogUmVnZW5lcmF0ZS4KIAogRm9yIG9sZGVyIGNoYW5nZXMgc2VlIENoYW5nZUxvZy05MjAzCiAMCmRpZmYgLS1naXQgYS9ncHJvZi9NYWtlZmlsZS5hbSBiL2dwcm9mL01ha2VmaWxlLmFtCmluZGV4IDE4YTBiNTIuLjUzNTZjZTIgMTAwNjQ0Ci0tLSBhL2dwcm9mL01ha2VmaWxlLmFtCisrKyBiL2dwcm9mL01ha2VmaWxlLmFtCkBAIC0xOTYsMTEgKzE5NiwxMSBAQAogICAkKElOQ0RJUikvZm9wZW4tc2FtZS5oICQoSU5DRElSKS9maWxlbmFtZXMuaCAuLi9iZmQvYmZkLmggXAogICAkKElOQ0RJUikvc3ltY2F0LmggZ2NvbmZpZy5oICQoSU5DRElSKS9iaW4tYnVncy5oIHNlYXJjaF9saXN0LmggXAogICBzb3VyY2UuaCBzeW10YWIuaCBjZ19hcmNzLmggc3ltX2lkcy5oCi11dGlscy5vOiB1dGlscy5jICQoSU5DRElSKS9kZW1hbmdsZS5oICQoSU5DRElSKS9hbnNpZGVjbC5oIFwKLSAgZ3Byb2YuaCAkKEJGRERJUikvc3lzZGVwLmggLi4vYmZkL2NvbmZpZy5oICQoSU5DRElSKS9mb3Blbi1zYW1lLmggXAotICAkKElOQ0RJUikvZmlsZW5hbWVzLmggLi4vYmZkL2JmZC5oICQoSU5DRElSKS9zeW1jYXQuaCBcCi0gIGdjb25maWcuaCAkKElOQ0RJUikvYmluLWJ1Z3MuaCBzZWFyY2hfbGlzdC5oIHNvdXJjZS5oIFwKLSAgc3ltdGFiLmggY2dfYXJjcy5oIHV0aWxzLmgKK3V0aWxzLm86IHV0aWxzLmMgJChJTkNESVIpL2RlbWFuZ2xlLmggJChJTkNESVIpL2xpYmliZXJ0eS5oIFwKKyAgJChJTkNESVIpL2Fuc2lkZWNsLmggZ3Byb2YuaCAkKEJGRERJUikvc3lzZGVwLmggLi4vYmZkL2NvbmZpZy5oIFwKKyAgJChJTkNESVIpL2ZvcGVuLXNhbWUuaCAkKElOQ0RJUikvZmlsZW5hbWVzLmggLi4vYmZkL2JmZC5oIFwKKyAgJChJTkNESVIpL3N5bWNhdC5oIGdjb25maWcuaCAkKElOQ0RJUikvYmluLWJ1Z3MuaCBzZWFyY2hfbGlzdC5oIFwKKyAgc291cmNlLmggc3ltdGFiLmggY2dfYXJjcy5oIHV0aWxzLmgKIGkzODYubzogaTM4Ni5jIGdwcm9mLmggJChCRkRESVIpL3N5c2RlcC5oICQoSU5DRElSKS9hbnNpZGVjbC5oIFwKICAgLi4vYmZkL2NvbmZpZy5oICQoSU5DRElSKS9mb3Blbi1zYW1lLmggJChJTkNESVIpL2ZpbGVuYW1lcy5oIFwKICAgLi4vYmZkL2JmZC5oICQoSU5DRElSKS9zeW1jYXQuaCBnY29uZmlnLmggJChJTkNESVIpL2Jpbi1idWdzLmggXApkaWZmIC0tZ2l0IGEvZ3Byb2YvTWFrZWZpbGUuaW4gYi9ncHJvZi9NYWtlZmlsZS5pbgppbmRleCA4ZDVkYzBmLi4xNThkOWM0IDEwMDY0NAotLS0gYS9ncHJvZi9NYWtlZmlsZS5pbgorKysgYi9ncHJvZi9NYWtlZmlsZS5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYXV0b21ha2UgMS40LXA1IGZyb20gTWFrZWZpbGUuYW0KKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYXV0b21ha2UgMS40LXA2IGZyb20gTWFrZWZpbGUuYW0KIAogIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUtOCwgMTk5OSwgMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBNYWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCkBAIC0xOTIsNyArMTkyLDcgQEAKIAogRElTVEZJTEVTID0gJChESVNUX0NPTU1PTikgJChTT1VSQ0VTKSAkKEhFQURFUlMpICQoVEVYSU5GT1MpICQoRVhUUkFfRElTVCkKIAotVEFSID0gZ3RhcgorVEFSID0gdGFyCiBHWklQX0VOViA9IC0tYmVzdAogU09VUkNFUyA9ICQoZ3Byb2ZfU09VUkNFUykKIE9CSkVDVFMgPSAkKGdwcm9mX09CSkVDVFMpCkBAIC04NTgsMTEgKzg1OCwxMSBAQAogICAkKElOQ0RJUikvZm9wZW4tc2FtZS5oICQoSU5DRElSKS9maWxlbmFtZXMuaCAuLi9iZmQvYmZkLmggXAogICAkKElOQ0RJUikvc3ltY2F0LmggZ2NvbmZpZy5oICQoSU5DRElSKS9iaW4tYnVncy5oIHNlYXJjaF9saXN0LmggXAogICBzb3VyY2UuaCBzeW10YWIuaCBjZ19hcmNzLmggc3ltX2lkcy5oCi11dGlscy5vOiB1dGlscy5jICQoSU5DRElSKS9kZW1hbmdsZS5oICQoSU5DRElSKS9hbnNpZGVjbC5oIFwKLSAgZ3Byb2YuaCAkKEJGRERJUikvc3lzZGVwLmggLi4vYmZkL2NvbmZpZy5oICQoSU5DRElSKS9mb3Blbi1zYW1lLmggXAotICAkKElOQ0RJUikvZmlsZW5hbWVzLmggLi4vYmZkL2JmZC5oICQoSU5DRElSKS9zeW1jYXQuaCBcCi0gIGdjb25maWcuaCAkKElOQ0RJUikvYmluLWJ1Z3MuaCBzZWFyY2hfbGlzdC5oIHNvdXJjZS5oIFwKLSAgc3ltdGFiLmggY2dfYXJjcy5oIHV0aWxzLmgKK3V0aWxzLm86IHV0aWxzLmMgJChJTkNESVIpL2RlbWFuZ2xlLmggJChJTkNESVIpL2xpYmliZXJ0eS5oIFwKKyAgJChJTkNESVIpL2Fuc2lkZWNsLmggZ3Byb2YuaCAkKEJGRERJUikvc3lzZGVwLmggLi4vYmZkL2NvbmZpZy5oIFwKKyAgJChJTkNESVIpL2ZvcGVuLXNhbWUuaCAkKElOQ0RJUikvZmlsZW5hbWVzLmggLi4vYmZkL2JmZC5oIFwKKyAgJChJTkNESVIpL3N5bWNhdC5oIGdjb25maWcuaCAkKElOQ0RJUikvYmluLWJ1Z3MuaCBzZWFyY2hfbGlzdC5oIFwKKyAgc291cmNlLmggc3ltdGFiLmggY2dfYXJjcy5oIHV0aWxzLmgKIGkzODYubzogaTM4Ni5jIGdwcm9mLmggJChCRkRESVIpL3N5c2RlcC5oICQoSU5DRElSKS9hbnNpZGVjbC5oIFwKICAgLi4vYmZkL2NvbmZpZy5oICQoSU5DRElSKS9mb3Blbi1zYW1lLmggJChJTkNESVIpL2ZpbGVuYW1lcy5oIFwKICAgLi4vYmZkL2JmZC5oICQoSU5DRElSKS9zeW1jYXQuaCBnY29uZmlnLmggJChJTkNESVIpL2Jpbi1idWdzLmggXApkaWZmIC0tZ2l0IGEvZ3Byb2YvZ2NvbmZpZy5pbiBiL2dwcm9mL2djb25maWcuaW4KaW5kZXggZDFjMmViZC4uZDU3YjI1OCAxMDA2NDQKLS0tIGEvZ3Byb2YvZ2NvbmZpZy5pbgorKysgYi9ncHJvZi9nY29uZmlnLmluCkBAIC05Nyw2ICs5Nyw5IEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxubF90eXBlcy5oPiBoZWFkZXIgZmlsZS4gICovCiAjdW5kZWYgSEFWRV9OTF9UWVBFU19ICiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gICovCisjdW5kZWYgSEFWRV9TVERMSUJfSAorCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfU1RSSU5HX0gKIApAQCAtMTA2LDYgKzEwOSwxMiBAQAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3BhcmFtLmg+IGhlYWRlciBmaWxlLiAgKi8KICN1bmRlZiBIQVZFX1NZU19QQVJBTV9ICiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAgKi8KKyN1bmRlZiBIQVZFX1NZU19TVEFUX0gKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAgKi8KKyN1bmRlZiBIQVZFX1NZU19UWVBFU19ICisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gICovCiAjdW5kZWYgSEFWRV9VTklTVERfSAogCmRpZmYgLS1naXQgYS9ncHJvZi9wby9ncHJvZi5wb3QgYi9ncHJvZi9wby9ncHJvZi5wb3QKaW5kZXggYjFjMzE5YS4uMjQyNmMxZCAxMDA2NDQKLS0tIGEvZ3Byb2YvcG8vZ3Byb2YucG90CisrKyBiL2dwcm9mL3BvL2dwcm9mLnBvdApAQCAtNyw3ICs3LDggQEAKIG1zZ2lkICIiCiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTlxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDAzLTA3LTExIDEzOjU4KzA5MzBcbiIKKyJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDQtMDMtMTkgMTU6MDArMTAzMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IFlFQVItTU8tREEgSE86TUkrWk9ORVxuIgogIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDxFTUFJTEBBRERSRVNTPlxuIgogIkxhbmd1YWdlLVRlYW06IExBTkdVQUdFIDxMTEBsaS5vcmc+XG4iCkBAIC02Niw2ICs2Nyw3IEBACiBtc2dzdHIgIiIKIAogIzogYmFzaWNfYmxvY2tzLmM6NTc3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJFeGVjdXRpb24gU3VtbWFyeTpcbiIKQEAgLTEwNSwxMiArMTA3LDE0IEBACiBtc2dzdHIgIiIKIAogIzogY2dfcHJpbnQuYzo3MworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXHRcdCAgICAgQ2FsbCBncmFwaCAoZXhwbGFuYXRpb24gZm9sbG93cylcbiIKICJcbiIKIG1zZ3N0ciAiIgogCiAjOiBjZ19wcmludC5jOjc1CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcdFx0XHRDYWxsIGdyYXBoXG4iCiAiXG4iCkBAIC0xMzEsNiArMTM1LDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBjZ19wcmludC5jOjg2CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgbm8gdGltZSBwcm9wYWdhdGVkXG4iCiAiXG4iCkBAIC0xOTQsNiArMTk5LDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBjZ19wcmludC5jOjYwNAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiSW5kZXggYnkgZnVuY3Rpb24gbmFtZVxuIgogIlxuIgpAQCAtMjQ0LDcgKzI1MCw3IEBACiBtc2dpZCAiJXM6IGZpbGUgYCVzJyBoYXMgbm8gc3ltYm9sc1xuIgogbXNnc3RyICIiCiAKLSM6IGNvcmVmaWxlLmM6NzU4CisjOiBjb3JlZmlsZS5jOjc2NAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogc29tZWJvZHkgbWlzY291bnRlZDogbHRhYi5sZW49JWQgaW5zdGVhZCBvZiAlbGRcbiIKIG1zZ3N0ciAiIgpAQCAtMjk1LDYgKzMwMSw3IEBACiBtc2dzdHIgIiIKIAogIzogZ21vbl9pby5jOjU5MgorIywgYy1mb3JtYXQKIG1zZ2lkICJ0aW1lIGlzIGluIHRpY2tzLCBub3Qgc2Vjb25kc1xuIgogbXNnc3RyICIiCiAKQEAgLTM3OCwxMSArMzg1LDEzIEBACiBtc2dzdHIgIiIKIAogIzogZ3Byb2YuYzo0MTgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkJhc2VkIG9uIEJTRCBncHJvZiwgY29weXJpZ2h0IDE5ODMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLlxuIgogbXNnc3RyICIiCiAKICM6IGdwcm9mLmM6NDE5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZS4gIFRoaXMgcHJvZ3JhbSBoYXMgYWJzb2x1dGVseSBubyB3YXJyYW50eS5cbiIKIG1zZ3N0ciAiIgpAQCAtNDQzLDYgKzQ1Miw3IEBACiBtc2dzdHIgIiIKIAogIzogaGlzdC5jOjM3OAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiIG5vIHRpbWUgYWNjdW11bGF0ZWRcbiIKICJcbiIKQEAgLTQ2OSw2ICs0NzksNyBAQAogbXNnc3RyICIiCiAKICM6IGhpc3QuYzo0ODEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIlxuIgpAQCAtNDc3LDYgKzQ4OCw3IEBACiBtc2dzdHIgIiIKIAogIzogaGlzdC5jOjQ4NworIywgYy1mb3JtYXQKIG1zZ2lkICJGbGF0IHByb2ZpbGU6XG4iCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvZ3Byb2YvcG8vc3YucG8gYi9ncHJvZi9wby9zdi5wbwppbmRleCBlOTZmODkzLi5jMWI0OWMzIDEwMDY0NAotLS0gYS9ncHJvZi9wby9zdi5wbworKysgYi9ncHJvZi9wby9zdi5wbwpAQCAtMSw1OCArMSw1OCBAQAogIyBTd2VkaXNoIG1lc3NhZ2VzIGZvciBncHJvZi4KLSMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIyBDaHJpc3RpYW4gUm9zZSA8bWVudGhvc0BtZW50aG9zLmNvbT4sIDIwMDEsIDIwMDIuCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ2hyaXN0aWFuIFJvc2UgPG1lbnRob3NAbWVudGhvcy5jb20+LCAyMDAxLCAyMDAyLCAyMDA0LgogIwogbXNnaWQgIiIKIG1zZ3N0ciAiIgotIlByb2plY3QtSWQtVmVyc2lvbjogZ3Byb2YgMi4xMi4xXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMDItMDEtMzEgMTg6MzIrMDAwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMDItMDctMjMgMTQ6MDErMDIwMFxuIgorIlByb2plY3QtSWQtVmVyc2lvbjogZ3Byb2YgMi4xNHJlbDAzMDcxMlxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDAzLTA3LTExIDEzOjU4KzA5MzBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDA0LTAzLTE4IDIzOjUyKzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IENocmlzdGlhbiBSb3NlIDxtZW50aG9zQG1lbnRob3MuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IFN3ZWRpc2ggPHN2QGxpLm9yZz5cbiIKICJNSU1FLVZlcnNpb246IDEuMFxuIgogIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1pc28tODg1OS0xXG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogCi0jOiBhbHBoYS5jOjkzIG1pcHMuYzo0NworIzogYWxwaGEuYzoxMDMgbWlwcy5jOjU3CiBtc2dpZCAiPGluZGlyZWN0IGNoaWxkPiIKIG1zZ3N0ciAiPGluZGlyZWt0IGJhcm4+IgogCi0jOiBhbHBoYS5jOjExMCBtaXBzLmM6NjQKKyM6IGFscGhhLmM6MTIwIG1pcHMuYzo3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJbZmluZF9jYWxsXSAlczogMHglbHggdG8gMHglbHhcbiIKIG1zZ3N0ciAiW2ZpbmRfY2FsbF0gJXM6IDB4JWx4IHRpbGwgMHglbHhcbiIKIAotIzogYWxwaGEuYzoxMzIKKyM6IGFscGhhLmM6MTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIltmaW5kX2NhbGxdIDB4JWx4OiBqc3IlcyA8aW5kaXJlY3RfY2hpbGQ+XG4iCiBtc2dzdHIgIltmaW5kX2NhbGxdIDB4JWx4OiBqc3IlcyA8aW5kaXJla3RfYmFybj5cbiIKIAotIzogYWxwaGEuYzoxNDIKKyM6IGFscGhhLmM6MTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIltmaW5kX2NhbGxdIDB4JWx4OiBic3IiCiBtc2dzdHIgIltmaW5kX2NhbGxdIDB4JWx4OiBic3IiCiAKLSM6IGJhc2ljX2Jsb2Nrcy5jOjEyMiBjYWxsX2dyYXBoLmM6OTAgaGlzdC5jOjkzCisjOiBiYXNpY19ibG9ja3MuYzoxMzQgY2FsbF9ncmFwaC5jOjk0IGhpc3QuYzo5OAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogJXM6IHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGVcbiIKIG1zZ3N0ciAiJXM6ICVzOiBvduRudGF0IGZpbHNsdXRcbiIKIAotIzogYmFzaWNfYmxvY2tzLmM6MTkwCisjOiBiYXNpY19ibG9ja3MuYzoyMDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHdhcm5pbmc6IGlnbm9yaW5nIGJhc2ljLWJsb2NrIGV4ZWMgY291bnRzICh1c2UgLWwgb3IgLS1saW5lKVxuIgogbXNnc3RyICIlczogdmFybmluZzogaWdub3JlcmFyIGV4ZWt2ZXJpbmdzcuRrbmluZyBm9nIgZ3J1bmRibG9jayAoYW525G5kIC1sIGVsbGVyIC0tbGluZSlcbiIKIAogIy4gRklYTUU6IFRoaXMgb25seSB3b3JrcyBpZiBiZmRfdm1hIGlzIHVuc2lnbmVkIGxvbmcuCi0jOiBiYXNpY19ibG9ja3MuYzoyODEgYmFzaWNfYmxvY2tzLmM6MjkxCisjOiBiYXNpY19ibG9ja3MuYzoyOTUgYmFzaWNfYmxvY2tzLmM6MzA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiVkOiAoJXM6MHglbHgpICVsdSBleGVjdXRpb25zXG4iCiBtc2dzdHIgIiVzOiVkOiAoJXM6MHglbHgpICVsdSBleGVrdmVyaW5nYXJcbiIKIAotIzogYmFzaWNfYmxvY2tzLmM6MjgyIGJhc2ljX2Jsb2Nrcy5jOjI5MgorIzogYmFzaWNfYmxvY2tzLmM6Mjk2IGJhc2ljX2Jsb2Nrcy5jOjMwNgogbXNnaWQgIjx1bmtub3duPiIKIG1zZ3N0ciAiPG9r5G5kPiIKIAotIzogYmFzaWNfYmxvY2tzLmM6NTM2CisjOiBiYXNpY19ibG9ja3MuYzo1NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtNjksNyArNjksNyBAQAogIiAgICAgUmFkICAgICAgIEFudGFsXG4iCiAiXG4iCiAKLSM6IGJhc2ljX2Jsb2Nrcy5jOjU2MAorIzogYmFzaWNfYmxvY2tzLmM6NTc3CiBtc2dpZCAiIgogIlxuIgogIkV4ZWN1dGlvbiBTdW1tYXJ5OlxuIgpAQCAtNzksMjIgKzc5LDIyIEBACiAiRXhla3ZlcmluZ3NzYW1tYW5mYXR0bmluZzpcbiIKICJcbiIKIAotIzogYmFzaWNfYmxvY2tzLmM6NTYxCisjOiBiYXNpY19ibG9ja3MuYzo1NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJTlsZCAgIEV4ZWN1dGFibGUgbGluZXMgaW4gdGhpcyBmaWxlXG4iCiBtc2dzdHIgIiU5bGQgICBFeGVrdmVyYmFyYSByYWRlciBpIGRlbm5hIGZpbFxuIgogCi0jOiBiYXNpY19ibG9ja3MuYzo1NjMKKyM6IGJhc2ljX2Jsb2Nrcy5jOjU4MAogIywgYy1mb3JtYXQKIG1zZ2lkICIlOWxkICAgTGluZXMgZXhlY3V0ZWRcbiIKIG1zZ3N0ciAiJTlsZCAgIEV4ZWt2ZXJhZGUgcmFkZXJcbiIKIAotIzogYmFzaWNfYmxvY2tzLmM6NTY0CisjOiBiYXNpY19ibG9ja3MuYzo1ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJTkuMmYgICBQZXJjZW50IG9mIHRoZSBmaWxlIGV4ZWN1dGVkXG4iCiBtc2dzdHIgIiU5LjJmICAgUHJvY2VudCBhdiBmaWxlbiBzb20gZXhla3ZlcmF0c1xuIgogCi0jOiBiYXNpY19ibG9ja3MuYzo1NjgKKyM6IGJhc2ljX2Jsb2Nrcy5jOjU4NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC0xMDMsMTcgKzEwMywxNyBAQAogIlxuIgogIiU5bHUgICBUb3RhbGEgYW50YWxldCByYWRleGVrdmVyaW5nYXJcbiIKIAotIzogYmFzaWNfYmxvY2tzLmM6NTcwCisjOiBiYXNpY19ibG9ja3MuYzo1ODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJTkuMmYgICBBdmVyYWdlIGV4ZWN1dGlvbnMgcGVyIGxpbmVcbiIKIG1zZ3N0ciAiJTkuMmYgICBNZWRlbGV4ZWt2ZXJpbmdhciBwZXIgcmFkXG4iCiAKLSM6IGNhbGxfZ3JhcGguYzo2OQorIzogY2FsbF9ncmFwaC5jOjcxCiAjLCBjLWZvcm1hdAogbXNnaWQgIltjZ190YWxseV0gYXJjIGZyb20gJXMgdG8gJXMgdHJhdmVyc2VkICVsdSB0aW1lc1xuIgogbXNnc3RyICJbY2dfdGFsbHldIGLlZ2UgZnLlbiAlcyB0aWxsICVzIHRyYXZlcnNlcmFkICVsdSBn5W5nZXJcbiIKIAotIzogY2dfcHJpbnQuYzo1OAorIzogY2dfcHJpbnQuYzo3MwogbXNnaWQgIiIKICJcdFx0ICAgICBDYWxsIGdyYXBoIChleHBsYW5hdGlvbiBmb2xsb3dzKVxuIgogIlxuIgpAQCAtMTIxLDcgKzEyMSw3IEBACiAiXHRcdCAgICAgQW5ncm9wc2dyYWYgKGb2cmtsYXJpbmcgZvZsamVyKVxuIgogIlxuIgogCi0jOiBjZ19wcmludC5jOjYwCisjOiBjZ19wcmludC5jOjc1CiBtc2dpZCAiIgogIlx0XHRcdENhbGwgZ3JhcGhcbiIKICJcbiIKQEAgLTEyOSw3ICsxMjksNyBAQAogIlx0XHRcdEFucm9wc2dyYWZcbiIKICJcbiIKIAotIzogY2dfcHJpbnQuYzo2MyBoaXN0LmM6MzU1CisjOiBjZ19wcmludC5jOjc4IGhpc3QuYzozNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMTM4LDcgKzEzOCw3IEBACiAiXG4iCiAidXBwbPZzbmluZzogdmFyamUgc3RpY2twcm92IHTkY2tlciAlbGQgYnl0ZSIKIAotIzogY2dfcHJpbnQuYzo2NworIzogY2dfcHJpbnQuYzo4MgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiIGZvciAlLjJmJSUgb2YgJS4yZiBzZWNvbmRzXG4iCkBAIC0xNDcsNyArMTQ3LDcgQEAKICIgZvZyICUuMmYlJSBw5SAlLjJmIHNla3VuZGVyXG4iCiAiXG4iCiAKLSM6IGNnX3ByaW50LmM6NzEKKyM6IGNnX3ByaW50LmM6ODYKIG1zZ2lkICIiCiAiIG5vIHRpbWUgcHJvcGFnYXRlZFxuIgogIlxuIgpAQCAtMTU1LDYzICsxNTUsNjQgQEAKICIgaW5nZW4gdGlkIHByb3BhZ2VyYWRcbiIKICJcbiIKIAotIzogY2dfcHJpbnQuYzo4MCBjZ19wcmludC5jOjgzIGNnX3ByaW50LmM6ODUKKyM6IGNnX3ByaW50LmM6OTUgY2dfcHJpbnQuYzo5OCBjZ19wcmludC5jOjEwMAogbXNnaWQgImNhbGxlZCIKIG1zZ3N0ciAiYW5yb3BhZCIKIAotIzogY2dfcHJpbnQuYzo4MCBjZ19wcmludC5jOjg1CisjOiBjZ19wcmludC5jOjk1IGNnX3ByaW50LmM6MTAwCiBtc2dpZCAidG90YWwiCiBtc2dzdHIgInRvdGFsdCIKIAotIzogY2dfcHJpbnQuYzo4MAorIzogY2dfcHJpbnQuYzo5NQogbXNnaWQgInBhcmVudHMiCiBtc2dzdHIgImb2cuRsZHJhciIKIAotIzogY2dfcHJpbnQuYzo4MiBjZ19wcmludC5jOjgzCisjOiBjZ19wcmludC5jOjk3IGNnX3ByaW50LmM6OTgKIG1zZ2lkICJpbmRleCIKIG1zZ3N0ciAiaW5kZXgiCiAKLSM6IGNnX3ByaW50LmM6ODIKKyM6IGNnX3ByaW50LmM6OTcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiJXRpbWUiCiBtc2dzdHIgIiV0aWQiCiAKLSM6IGNnX3ByaW50LmM6ODIgY2dfcHJpbnQuYzo4MworIzogY2dfcHJpbnQuYzo5NyBjZ19wcmludC5jOjk4CiBtc2dpZCAic2VsZiIKIG1zZ3N0ciAic2rkbHYiCiAKLSM6IGNnX3ByaW50LmM6ODIKKyM6IGNnX3ByaW50LmM6OTcKIG1zZ2lkICJkZXNjZW5kYW50cyIKIG1zZ3N0ciAi5HR0bGluZ2FyIgogCi0jOiBjZ19wcmludC5jOjgzIGhpc3QuYzozODEKKyM6IGNnX3ByaW50LmM6OTggaGlzdC5jOjM4OQogbXNnaWQgIm5hbWUiCiBtc2dzdHIgIm5hbW4iCiAKLSM6IGNnX3ByaW50LmM6ODUKKyM6IGNnX3ByaW50LmM6MTAwCiBtc2dpZCAiY2hpbGRyZW4iCiBtc2dzdHIgImJhcm4iCiAKLSM6IGNnX3ByaW50LmM6OTAKKyM6IGNnX3ByaW50LmM6MTA1CiAjLCBjLWZvcm1hdAogbXNnaWQgImluZGV4ICUlIHRpbWUgICAgc2VsZiAgY2hpbGRyZW4gICAgY2FsbGVkICAgICBuYW1lXG4iCiBtc2dzdHIgImluZGV4ICUlIHRpZCAgICAgc2rkbHYgYmFybiAgICAgICAgYW5yb3BhZCAgICBuYW1uXG4iCiAKLSM6IGNnX3ByaW50LmM6MTEzCisjOiBjZ19wcmludC5jOjEyOQogIywgYy1mb3JtYXQKIG1zZ2lkICIgPGN5Y2xlICVkIGFzIGEgd2hvbGU+IFslZF1cbiIKIG1zZ3N0ciAiIDxoZWxhIGN5a2VsICVkPiBbJWRdXG4iCiAKLSM6IGNnX3ByaW50LmM6MzM5CisjOiBjZ19wcmludC5jOjM2MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlNi42cyAlNS41cyAlNy43cyAlMTEuMTFzICU3LjdzICU3LjdzICAgICA8c3BvbnRhbmVvdXM+XG4iCiBtc2dzdHIgIiU2LjZzICU1LjVzICU3LjdzICUxMS4xMXMgJTcuN3MgJTcuN3MgICAgIDxzcG9udGFudD5cbiIKIAotIzogY2dfcHJpbnQuYzozNDAKKyM6IGNnX3ByaW50LmM6MzY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiU2LjZzICU1LjVzICU3LjdzICU3LjdzICU3LjdzICU3LjdzICAgICA8c3BvbnRhbmVvdXM+XG4iCiBtc2dzdHIgIiU2LjZzICU1LjVzICU3LjdzICU3LjdzICU3LjdzICU3LjdzICAgICA8c3BvbnRhbnQ+XG4iCiAKLSM6IGNnX3ByaW50LmM6NTc0CisjOiBjZ19wcmludC5jOjYwNAogbXNnaWQgIiIKICJJbmRleCBieSBmdW5jdGlvbiBuYW1lXG4iCiAiXG4iCkBAIC0yMTksNyArMjIwLDcgQEAKICJJbmRleCBlZnRlciBmdW5rdGlvbnNuYW1uXG4iCiAiXG4iCiAKLSM6IGNnX3ByaW50LmM6NjMxIGNnX3ByaW50LmM6NjQwCisjOiBjZ19wcmludC5jOjY2MSBjZ19wcmludC5jOjY3MAogIywgYy1mb3JtYXQKIG1zZ2lkICI8Y3ljbGUgJWQ+IgogbXNnc3RyICI8Y3lrZWwgJWQ+IgpAQCAtMjM0LDEzMyArMjM1LDEzMyBAQAogbXNnaWQgIiVzOiB1bmFibGUgdG8gcGFyc2UgbWFwcGluZyBmaWxlICVzLlxuIgogbXNnc3RyICIlczoga2FuIGludGUgdG9sa2EgbWFwcGZpbGVuICVzLlxuIgogCi0jOiBjb3JlZmlsZS5jOjE1NAorIzogY29yZWZpbGUuYzoxNTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzOiBub3QgaW4gYS5vdXQgZm9ybWF0XG4iCiBtc2dzdHIgIiVzOiAlczogaW50ZSBpIGEub3V0LWZvcm1hdFxuIgogCi0jOiBjb3JlZmlsZS5jOjE2NQorIzogY29yZWZpbGUuYzoxNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbid0IGZpbmQgLnRleHQgc2VjdGlvbiBpbiAlc1xuIgogbXNnc3RyICIlczoga2FuIGludGUgaGl0dGEgLnRleHQtc2VrdGlvbiBpICVzXG4iCiAKLSM6IGNvcmVmaWxlLmM6MjIzCisjOiBjb3JlZmlsZS5jOjIyNQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogcmFuIG91dCByb29tIGZvciAlbHUgYnl0ZXMgb2YgdGV4dCBzcGFjZVxuIgogbXNnc3RyICIlczogc2x1dCBw5SB1dHJ5bW1lIGb2ciAlbHUgYnl0ZSB0ZXh0dXRyeW1tZVxuIgogCi0jOiBjb3JlZmlsZS5jOjIzNworIzogY29yZWZpbGUuYzoyMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbid0IGRvIC1jXG4iCiBtc2dzdHIgIiVzOiBrYW4gaW50ZSBn9nJhIC1jXG4iCiAKLSM6IGNvcmVmaWxlLmM6MjcyCisjOiBjb3JlZmlsZS5jOjI3NgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogLWMgbm90IHN1cHBvcnRlZCBvbiBhcmNoaXRlY3R1cmUgJXNcbiIKIG1zZ3N0ciAiJXM6IC1jIHN09mRzIGludGUgcOUgYXJraXRla3R1cmVuICVzXG4iCiAKLSM6IGNvcmVmaWxlLmM6NDM5CisjOiBjb3JlZmlsZS5jOjQ0NwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZmlsZSBgJXMnIGhhcyBubyBzeW1ib2xzXG4iCiBtc2dzdHIgIiVzOiBmaWxlbiBcIiVzXCIgaGFyIGluZ2Egc3ltYm9sZXJcbiIKIAotIzogY29yZWZpbGUuYzo3MzkKKyM6IGNvcmVmaWxlLmM6NzU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBzb21lYm9keSBtaXNjb3VudGVkOiBsdGFiLmxlbj0lZCBpbnN0ZWFkIG9mICVsZFxuIgogbXNnc3RyICIlczogbuVnb24gcuRrbmFkZSBmZWw6IGx0YWIubGVuPSVkIGlzdORsbGV0IGb2ciAlbGRcbiIKIAotIzogZ21vbl9pby5jOjgzIGdtb25faW8uYzoxMzcgZ21vbl9pby5jOjE4OCBnbW9uX2lvLmM6MjE2IGdtb25faW8uYzozODYgZ21vbl9pby5jOjQxMyBnbW9uX2lvLmM6NjA5IGdtb25faW8uYzo2MzQKKyM6IGdtb25faW8uYzo4MgogIywgYy1mb3JtYXQKLW1zZ2lkICIlczogYml0cyBwZXIgYWRkcmVzcyBoYXMgdW5leHBlY3RlZCB2YWx1ZSBvZiAldVxuIgotbXNnc3RyICIlczogYml0YXIgcGVyIGFkcmVzcyBoYXIgZXR0IG925G50YXQgduRyZGUgcOUgJXVcbiIKK21zZ2lkICIlczogYWRkcmVzcyBzaXplIGhhcyB1bmV4cGVjdGVkIHZhbHVlIG9mICV1XG4iCittc2dzdHIgIiVzOiBhZHJlc3N0b3JsZWtlbiBoYXIgZXR0IG925G50YXQgduRyZGUgcOUgJXVcbiIKIAotIzogZ21vbl9pby5jOjI1MiBnbW9uX2lvLmM6MzQ3CisjOiBnbW9uX2lvLmM6MzQ1IGdtb25faW8uYzo0NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGZpbGUgdG9vIHNob3J0IHRvIGJlIGEgZ21vbiBmaWxlXG4iCiBtc2dzdHIgIiVzOiBmaWxlbiDkciBm9nIga29ydCBm9nIgYXR0IHZhcmEgZW4gZ21vbi1maWxcbiIKIAotIzogZ21vbl9pby5jOjI2MiBnbW9uX2lvLmM6Mzk2CisjOiBnbW9uX2lvLmM6MzU1IGdtb25faW8uYzo0ODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGZpbGUgYCVzJyBoYXMgYmFkIG1hZ2ljIGNvb2tpZVxuIgogbXNnc3RyICIlczogZmlsZW4gXCIlc1wiIGhhciBmZWxha3RpZ3QgbWFnaXNrdCB0YWxcbiIKIAotIzogZ21vbl9pby5jOjI3MworIzogZ21vbl9pby5jOjM2NgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZmlsZSBgJXMnIGhhcyB1bnN1cHBvcnRlZCB2ZXJzaW9uICVkXG4iCiBtc2dzdHIgIiVzOiBmaWxlbiBcIiVzXCIgaGFyIHZlcnNpb24gJWQgc29tIGludGUgc3T2ZHNcbiIKIAotIzogZ21vbl9pby5jOjMwMworIzogZ21vbl9pby5jOjM5NgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogJXM6IGZvdW5kIGJhZCB0YWcgJWQgKGZpbGUgY29ycnVwdGVkPylcbiIKIG1zZ3N0ciAiJXM6ICVzOiBoaXR0YWRlIGZlbGFrdGlnIHRhZ2cgJWQgKORyIGZpbGVuIHNrYWRhZD8pXG4iCiAKLSM6IGdtb25faW8uYzozNjkKKyM6IGdtb25faW8uYzo0NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHByb2ZpbGluZyByYXRlIGluY29tcGF0aWJsZSB3aXRoIGZpcnN0IGdtb24gZmlsZVxuIgogbXNnc3RyICIlczogcHJvZmlsZXJpbmdzaGFzdGlnaGV0IORyIGlua29tcGF0aWJlbCBtZWQgZvZyc3RhIGdtb24tZmlsZW5cbiIKIAotIzogZ21vbl9pby5jOjQyOQorIzogZ21vbl9pby5jOjUxMAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogaW5jb21wYXRpYmxlIHdpdGggZmlyc3QgZ21vbiBmaWxlXG4iCiBtc2dzdHIgIiVzOiBpbmtvbXBhdGliZWwgbWVkIGb2cnN0YSBnbW9uLWZpbGVuXG4iCiAKLSM6IGdtb25faW8uYzo0NTcKKyM6IGdtb25faW8uYzo1MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGZpbGUgJyVzJyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgaW4gZ21vbi5vdXQgZm9ybWF0XG4iCiBtc2dzdHIgIiVzOiBmaWxlbiBcIiVzXCIgdmVya2FyIGludGUgdmFyYSBpIGdtb24ub3V0LWZvcm1hdFxuIgogCiAjIE1hbiBicnVrYXIgdGFsYSBvbSAiYmlucyIgaSBoYXNodGFiZWxsZXIKICMKLSM6IGdtb25faW8uYzo0NzgKKyM6IGdtb25faW8uYzo1NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHVuZXhwZWN0ZWQgRU9GIGFmdGVyIHJlYWRpbmcgJWQvJWQgYmluc1xuIgogbXNnc3RyICIlczogb3bkbnRhdCBmaWxzbHV0IGVmdGVyIGzkc25pbmcgYXYgJWQvJWQgcG9zdGVyXG4iCiAKLSM6IGdtb25faW8uYzo1MTEKKyM6IGdtb25faW8uYzo1OTIKIG1zZ2lkICJ0aW1lIGlzIGluIHRpY2tzLCBub3Qgc2Vjb25kc1xuIgogbXNnc3RyICJ0aWRlbiDkciBpIHRpY2ssIGludGUgc2VrdW5kZXJcbiIKIAotIzogZ21vbl9pby5jOjUxNyBnbW9uX2lvLmM6NzA0CisjOiBnbW9uX2lvLmM6NTk4IGdtb25faW8uYzo3NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGRvbid0IGtub3cgaG93IHRvIGRlYWwgd2l0aCBmaWxlIGZvcm1hdCAlZFxuIgogbXNnc3RyICIlczogdmV0IGludGUgaHVyIGZpbGVmb3JtYXQgJWQgc2thIGhhbnRlcmFzXG4iCiAKLSM6IGdtb25faW8uYzo1MjQKKyM6IGdtb25faW8uYzo2MDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmlsZSBgJXMnICh2ZXJzaW9uICVkKSBjb250YWluczpcbiIKIG1zZ3N0ciAiRmlsZW4gXCIlc1wiICh2ZXJzaW9uICVkKSBpbm5laOVsbGVyOlxuIgogCi0jOiBnbW9uX2lvLmM6NTI3CisjOiBnbW9uX2lvLmM6NjA4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlx0JWQgaGlzdG9ncmFtIHJlY29yZFxuIgogbXNnc3RyICJcdCVkIGhpc3RvZ3JhbXBvc3RcbiIKIAotIzogZ21vbl9pby5jOjUyOAorIzogZ21vbl9pby5jOjYwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJcdCVkIGhpc3RvZ3JhbSByZWNvcmRzXG4iCiBtc2dzdHIgIlx0JWQgaGlzdG9ncmFtcG9zdGVyXG4iCiAKLSM6IGdtb25faW8uYzo1MzAKKyM6IGdtb25faW8uYzo2MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiXHQlZCBjYWxsLWdyYXBoIHJlY29yZFxuIgogbXNnc3RyICJcdCVkIGFucm9wc2dyYWZwb3N0XG4iCiAKLSM6IGdtb25faW8uYzo1MzEKKyM6IGdtb25faW8uYzo2MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiXHQlZCBjYWxsLWdyYXBoIHJlY29yZHNcbiIKIG1zZ3N0ciAiXHQlZCBhbnJvcHNncmFmcG9zdGVyXG4iCiAKLSM6IGdtb25faW8uYzo1MzMKKyM6IGdtb25faW8uYzo2MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiXHQlZCBiYXNpYy1ibG9jayBjb3VudCByZWNvcmRcbiIKIG1zZ3N0ciAiXHQlZCBncnVuZGJsb2Nrc3Lka25pbmdzcG9zdFxuIgogCi0jOiBnbW9uX2lvLmM6NTM0CisjOiBnbW9uX2lvLmM6NjE1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlx0JWQgYmFzaWMtYmxvY2sgY291bnQgcmVjb3Jkc1xuIgogbXNnc3RyICJcdCVkIGdydW5kYmxvY2tzcuRrbmluZ3Nwb3N0ZXJcbiIKIAotIzogZ3Byb2YuYzoxNDcKKyM6IGdwcm9mLmM6MTYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJVc2FnZTogJXMgWy1bYWJjRGhpbExzVHZ3eHl6XV0gWy1bQUNlRWZGSm5OT3BQcVFaXVtuYW1lXV0gWy1JIGRpcnNdXG4iCkBAIC0zOTEsNzggKzM5Miw3OCBAQAogIlx0Wy0tZGVtYW5nbGVbPVNUSUxdXSBbLS1uby1kZW1hbmdsZV1cbiIKICJcdFtiaWxkZmlsXSBbcHJvZmlsZmlsLi4uXVxuIgogCi0jOiBncHJvZi5jOjE2MworIzogZ3Byb2YuYzoxNzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVwb3J0IGJ1Z3MgdG8gJXNcbiIKIG1zZ3N0ciAiIgogIlJhcHBvcnRlcmEgZmVsIHRpbGwgJXMsXG4iCiAib2NoIHN5bnB1bmt0ZXIgcOUg9nZlcnPkdHRuaW5nZW4gdGlsbCBzdkBsaS5vcmdcbiIKIAotIzogZ3Byb2YuYzoyMzUKKyM6IGdwcm9mLmM6MjUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBkZWJ1Z2dpbmcgbm90IHN1cHBvcnRlZDsgLWQgaWdub3JlZFxuIgogbXNnc3RyICIlczogZmVsc/ZrbmluZyBzdPZkcyBpbnRlOyAtZCBpZ25vcmVyYWRlc1xuIgogCi0jOiBncHJvZi5jOjMxNQorIzogZ3Byb2YuYzozMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHVua25vd24gZmlsZSBmb3JtYXQgJXNcbiIKIG1zZ3N0ciAiJXM6IG9r5G50IGZpbGZvcm1hdCAlc1xuIgogCiAjLiBUaGlzIG91dHB1dCBpcyBpbnRlbmRlZCB0byBmb2xsb3cgdGhlIEdOVSBzdGFuZGFyZHMgZG9jdW1lbnQuCi0jOiBncHJvZi5jOjM5OQorIzogZ3Byb2YuYzo0MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiR05VIGdwcm9mICVzXG4iCiBtc2dzdHIgIkdOVSBncHJvZiAlc1xuIgogCi0jOiBncHJvZi5jOjQwMAorIzogZ3Byb2YuYzo0MTgKIG1zZ2lkICJCYXNlZCBvbiBCU0QgZ3Byb2YsIGNvcHlyaWdodCAxOTgzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS5cbiIKIG1zZ3N0ciAiQmFzZXJhdCBw5SBCU0QgZ3Byb2YsIGNvcHlyaWdodCAxOTgzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS5cbiIKIAotIzogZ3Byb2YuYzo0MDEKKyM6IGdwcm9mLmM6NDE5CiBtc2dpZCAiVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmUuICBUaGlzIHByb2dyYW0gaGFzIGFic29sdXRlbHkgbm8gd2FycmFudHkuXG4iCiBtc2dzdHIgIkRldHRhIHByb2dyYW0g5HIgZnJpIHByb2dyYW12YXJhLiBEZXR0YSBwcm9ncmFtIGhhciBpbmdlbiBzb20gaGVsc3QgZ2FyYW50aS5cbiIKIAotIzogZ3Byb2YuYzo0NDIKKyM6IGdwcm9mLmM6NDYwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB1bmtub3duIGRlbWFuZ2xpbmcgc3R5bGUgYCVzJ1xuIgogbXNnc3RyICIlczogb2vkbmQgYXZtYW5nbGluZ3NzdGlsIFwiJXNcIlxuIgogCi0jOiBncHJvZi5jOjQ2MgorIzogZ3Byb2YuYzo0ODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IE9ubHkgb25lIG9mIC0tZnVuY3Rpb24tb3JkZXJpbmcgYW5kIC0tZmlsZS1vcmRlcmluZyBtYXkgYmUgc3BlY2lmaWVkLlxuIgogbXNnc3RyICIlczogRW5kYXN0IGVuIGF2IC0tZnVuY3Rpb24tb3JkZXJpbmcgb2NoIC0tZmlsZS1vcmRlcmluZyBrYW4gYW5nZXMuXG4iCiAKLSM6IGdwcm9mLmM6NTYyCisjOiBncHJvZi5jOjU3OAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogc29ycnksIGZpbGUgZm9ybWF0IGBwcm9mJyBpcyBub3QgeWV0IHN1cHBvcnRlZFxuIgogbXNnc3RyICIlczogdHl25HJyLCBmaWxmb3JtYXRldCBcInByb2ZcIiBzdPZkcyBpbnRlIORuXG4iCiAKLSM6IGdwcm9mLmM6NjIzCisjOiBncHJvZi5jOjYzOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZ21vbi5vdXQgZmlsZSBpcyBtaXNzaW5nIGhpc3RvZ3JhbVxuIgogbXNnc3RyICIlczogZ21vbi5vdXQtZmlsZW4gc2FrbmFyIGhpc3RvZ3JhbVxuIgogCi0jOiBncHJvZi5jOjYzMAorIzogZ3Byb2YuYzo2NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGdtb24ub3V0IGZpbGUgaXMgbWlzc2luZyBjYWxsLWdyYXBoIGRhdGFcbiIKIG1zZ3N0ciAiJXM6IGdtb24ub3V0LWZpbGVuIHNha25hciBhbnJvcHNncmFmZGF0YVxuIgogCi0jOiBoaXN0LmM6MTIyCisjOiBoaXN0LmM6MTI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBgJXMnIGlzIGluY29tcGF0aWJsZSB3aXRoIGZpcnN0IGdtb24gZmlsZVxuIgogbXNnc3RyICIlczogXCIlc1wiIORyIGlua29tcGF0aWJlbCBtZWQgZvZyc3RhIGdtb24tZmlsZW5cbiIKIAotIzogaGlzdC5jOjEzOAorIzogaGlzdC5jOjE0MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogJXM6IHVuZXhwZWN0ZWQgRU9GIGFmdGVyIHJlYWRpbmcgJWQgb2YgJWQgc2FtcGxlc1xuIgogbXNnc3RyICIlczogJXM6IG925G50YXQgZmlsc2x1dCBlZnRlciBs5HNuaW5nIGF2ICVkIGF2ICVkIHN0aWNrcHJvdlxuIgogCi0jOiBoaXN0LmM6MzUxCisjOiBoaXN0LmM6MzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVjJWMvY2FsbCIKIG1zZ3N0ciAiJWMlYy9hbnJvcCIKIAotIzogaGlzdC5jOjM1OQorIzogaGlzdC5jOjM2NwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiIGZvciAlLjJmJSUgb2YgJS4yZiAlc1xuIgpAQCAtNDcxLDcgKzQ3Miw3IEBACiAiIGb2ciAlLjJmJSUgYXYgJS4yZiAlc1xuIgogIlxuIgogCi0jOiBoaXN0LmM6MzY1CisjOiBoaXN0LmM6MzczCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTQ4MCw3ICs0ODEsNyBAQAogIlxuIgogIlZhcmplIHN0aWNrcHJvdiBy5GtuYXMgc29tICVnICVzLlxuIgogCi0jOiBoaXN0LmM6MzcwCisjOiBoaXN0LmM6Mzc4CiBtc2dpZCAiIgogIiBubyB0aW1lIGFjY3VtdWxhdGVkXG4iCiAiXG4iCkBAIC00ODgsMjcgKzQ4OSwyNyBAQAogIiBpbmdlbiBhY2t1bXVsZXJhZCB0aWRcbiIKICJcbiIKIAotIzogaGlzdC5jOjM3NworIzogaGlzdC5jOjM4NQogbXNnaWQgImN1bXVsYXRpdmUiCiBtc2dzdHIgImt1bXVsYXRpdiIKIAotIzogaGlzdC5jOjM3NworIzogaGlzdC5jOjM4NQogbXNnaWQgInNlbGYgICIKIG1zZ3N0ciAic2rkbHYiCiAKLSM6IGhpc3QuYzozNzcKKyM6IGhpc3QuYzozODUKIG1zZ2lkICJ0b3RhbCAiCiBtc2dzdHIgInRvdGFsdCIKIAotIzogaGlzdC5jOjM4MAorIzogaGlzdC5jOjM4OAogbXNnaWQgInRpbWUiCiBtc2dzdHIgInRpZCIKIAotIzogaGlzdC5jOjM4MAorIzogaGlzdC5jOjM4OAogbXNnaWQgImNhbGxzIgogbXNnc3RyICJhbnJvcCIKIAotIzogaGlzdC5jOjQ2OQorIzogaGlzdC5jOjQ4MQogbXNnaWQgIiIKICJcbiIKICJcbiIKQEAgLTUyMCwzMSArNTIxLDMxIEBACiAiXG4iCiAicGxhdHQgcHJvZmlsOlxuIgogCi0jOiBoaXN0LmM6NDc1CisjOiBoaXN0LmM6NDg3CiBtc2dpZCAiRmxhdCBwcm9maWxlOlxuIgogbXNnc3RyICJQbGF0dCBwcm9maWw6XG4iCiAKLSM6IG1pcHMuYzo3NQorIzogbWlwcy5jOjg1CiAjLCBjLWZvcm1hdAogbXNnaWQgIltmaW5kX2NhbGxdIDB4JWx4OiBqYWwiCiBtc2dzdHIgIltmaW5kX2NhbGxdIDB4JWx4OiBqYWwiCiAKLSM6IG1pcHMuYzoxMDAKKyM6IG1pcHMuYzoxMTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiW2ZpbmRfY2FsbF0gMHglbHg6IGphbHJcbiIKIG1zZ3N0ciAiW2ZpbmRfY2FsbF0gMHglbHg6IGphbHJcbiIKIAotIzogc291cmNlLmM6MTYzCisjOiBzb3VyY2UuYzoxNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNvdWxkIG5vdCBsb2NhdGUgYCVzJ1xuIgogbXNnc3RyICIlczoga3VuZGUgaW50ZSBoaXR0YSBcIiVzXCJcbiIKIAotIzogc291cmNlLmM6MjM4CisjOiBzb3VyY2UuYzoyNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiKioqIEZpbGUgJXM6XG4iCiBtc2dzdHIgIioqKiBGaWwgJXM6XG4iCiAKLSM6IHV0aWxzLmM6OTYKKyM6IHV0aWxzLmM6MTA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiA8Y3ljbGUgJWQ+IgogbXNnc3RyICIgPGN5a2VsICVkPiIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvQ2hhbmdlTG9nIGIvaW5jbHVkZS9DaGFuZ2VMb2cKaW5kZXggZTJmYTY4Zi4uODgzMDg4ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9DaGFuZ2VMb2cKKysrIGIvaW5jbHVkZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAwNC0wMy0zMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KKworCSogaGFzaHRhYi5oLCBzcGxheS10cmVlLmg6IFVzZSBuZXcgc2hvcnRlciBmb3JtIG9mIEdUWSBtYXJrZXJzLgorCisyMDA0LTAzLTI1ICBTdGFuIFNoZWJzICA8c2hlYnNAYXBwbGUuY29tPgorCisJKiBtcHcvOiBSZW1vdmUgc3ViZGlyZWN0b3J5IGFuZCBldmVyeXRoaW5nIGluIGl0LgorCisyMDA0LTAzLTIzICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgorCisJUFIgNTEuCisJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIHdyYXBfY2hhci4KKworMjAwNC0wMy0yMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgorCisJKiBiZmRsaW5rLmggKGJmZF9saW5rX2luZm8pOiBDb3JyZWN0IGNvbW1lbnRzIGZvciB0aGUKKwl1bnJlc29sdmVkX3N5bXNfaW5fb2JqZWN0cyBmaWVsZC4KKworMjAwNC0wMi0yNCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KKworCSogZHluLXN0cmluZy5oOiBVcGRhdGUgY29weXJpZ2h0IGRhdGUuCisKKzIwMDQtMDItMjMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CisKKwkqIGR5bi1zdHJpbmcuaDogUmVtb3ZlIHRlc3Qgb2YgSU5fTElCR0NDMiBhbmQgSU5fR0xJQkNQUF9WMyBhbmQKKwl0aGUgYXNzb2NpYXRlZCAjZGVmaW5lcy4KKwogMjAwNC0wMS0xMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KIAogCSogZGVtYW5nbGUuaDogSW5zdGVhZCBvZiBjaGVja2luZyBBTlNJX1BST1RPVFlQRVMsIGp1c3QgaW5jbHVkZQpAQCAtNTI4LDggKzU1NSw4IEBACiAKIDIwMDAtMDUtMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KIAotIAkqIGFuc2lkZWNsLmg6ICNkZWZpbmUgX19leHRlbnNpb25fXyB0byBub3RoaW5nIGlmCi0gCUdDQ19WRVJTSU9OIDwgMjAwOC4KKwkqIGFuc2lkZWNsLmg6ICNkZWZpbmUgX19leHRlbnNpb25fXyB0byBub3RoaW5nIGlmCisJR0NDX1ZFUlNJT04gPCAyMDA4LgogCiAyMDAwLTA1LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CiAKQEAgLTc3NCw4ICs4MDEsOCBAQAogVHVlIEZlYiAxNyAxMjozMjoxOCAxOTk4ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CiAKIAkqIHJlbW90ZS1zaW0uaCAoc2ltX2ZldGNoX3JlZ2lzdGVyLCBzaW1fc3RvcmVfcmVnaXN0ZXIpOiBBZGQKLSAJcmVnaXN0ZXIgbGVuZ3RoIHBhcmFtZXRlci4gIEZ1bmN0aW9ucyByZXR1cm4gYWN0dWFsIGxlbmd0aCBvZgotIAlyZWdpc3Rlci4KKwlyZWdpc3RlciBsZW5ndGggcGFyYW1ldGVyLiAgRnVuY3Rpb25zIHJldHVybiBhY3R1YWwgbGVuZ3RoIG9mCisJcmVnaXN0ZXIuCiAKIFRodSBGZWIgMTIgMTY6Mjk6MDEgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgogCkBAIC04MzMsNyArODYwLDcgQEAKIFNhdCBOb3YgMjIgMjM6MzQ6MTUgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgogCiAJKiByZW1vdGUtc2ltLmggKHNpbV9zdG9wX3JlYXNvbik6IENsYXJpZnkgc2ltX3NpZ25hbGxlZCBTSUdSQwotIAlhcmd1bWVudC4KKwlhcmd1bWVudC4KIAogTW9uIE5vdiAxNyAxNDowMDo1MSAxOTk3ICBEb3VnIEV2YW5zICA8ZGV2YW5zQHNlYmEuY3lnbnVzLmNvbT4KIApAQCAtOTA0LDcgKzkzMSw3IEBACiAKIEZyaSBKdW4gIDYgMTM6MDI6MzMgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgogCi0JKiByZW1vdGUtc2ltLmggKHNpbV9raWxsKTogTWFyayBhcyBkZXByZWNpYXRlZC4KKwkqIHJlbW90ZS1zaW0uaCAoc2ltX2tpbGwpOiBNYXJrIGFzIGRlcHJlY2F0ZWQuCiAKIEZyaSBNYXkgMjMgMTM6NDM6NDEgMTk5NyAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CiAKQEAgLTkxMywxMiArOTQwLDEyIEBACiBUaHUgTWF5IDIyIDExOjMyOjQ5IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KIAogCSogcmVtb3RlLXNpbS5oOiBSZXZpZXcgZG9jdW1lbnRhdGlvbi4gIENsYXJpZnkgcmVzdHJpY3Rpb25zIG9uCi0gCXdoZW4gZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQuCisJd2hlbiBmdW5jdGlvbnMgY2FuIGJlIGNhbGxlZC4KIAogV2VkIE1heSAyMSAxNjo0Nzo1MyAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CiAKIAkqIHJlbW90ZS1zaW0uaCAoc2ltX3NldF9wcm9maWxlX3NpemUpOiBBZGQgcHJvdG90eXBlLCBkb2N1bWVudCBhcwotIAlkZXByZWNpYXRlZC4KKwlkZXByZWNhdGVkLgogCiBUdWUgTWF5IDIwIDA5OjMyOjIyIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KIApAQCAtOTUyLDE2ICs5NzksMTYgQEAKIEZyaSBBcHIgMTggMTM6MDQ6NDkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgogCiAJKiByZW1vdGUtc2ltLmggKHNpbV9zdG9wKTogTmV3IGludGVyZmFjZSAtIGFzeW5jaHJvbm91cwotIAlub3RpZmljYXRpb24gb2YgYSByZXF1ZXN0IHRvIHN0b3AgLyBzdXNwZW5kIHRoZSBydW5uaW5nCi0gCXNpbXVsYXRpb24uCisJbm90aWZpY2F0aW9uIG9mIGEgcmVxdWVzdCB0byBzdG9wIC8gc3VzcGVuZCB0aGUgcnVubmluZworCXNpbXVsYXRpb24uCiAKIAkqIHJlbW90ZS1zaW0uaCAoZW51bSBzaW1fc3RvcCk6IEFkZCBzaW1fcnVubmluZyBhbmQgc2ltX3BvbGxpbmcgYXMKLSAJc3RhdGVzIGZvciB1c2UgaW50ZXJuYWwgdG8gc2ltdWxhdG9ycy4KKwlzdGF0ZXMgZm9yIHVzZSBpbnRlcm5hbCB0byBzaW11bGF0b3JzLgogCiAJKiBjYWxsYmFjay5oIChzdHJ1Y3QgaG9zdF9jYWxsYmFja19zdHJ1dCk6IFB1dCBhIG1hZ2ljIG51bWJlciBhdAotIAl0aGUgZW5kIG9mIHRoZSBzdHJ1Y3QgdG8gYWxsb3cgYmFzaWMgY2hlY2tpbmcuCisJdGhlIGVuZCBvZiB0aGUgc3RydWN0IHRvIGFsbG93IGJhc2ljIGNoZWNraW5nLgogCShzdHJ1Y3QgaG9zdF9jYWxsYmFja19zdHJ1Y3QgKTogQWRkIHBvbGxfcXVpdCAtIHNvCi0gCXRoYXQgdGhlIGNvbnNvbGUgZXRjIGNhbiBiZSBwb2xsZWQgYXQgcmVndWxhciBpbnRlcnZhbHMuCisJdGhhdCB0aGUgY29uc29sZSBldGMgY2FuIGJlIHBvbGxlZCBhdCByZWd1bGFyIGludGVydmFscy4KIAogVGh1IEFwciAxNyAwMjoxNzoxMiAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgogCkBAIC05NzIsNyArOTk5LDcgQEAKIFdlZCBBcHIgIDIgMTc6MDk6MTIgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBrcmVtdmF4LmN5Z251cy5jb20+CiAKIAkqIHJlbW90ZS1zaW0uaCAoc2ltX3RyYWNlLCBzaW1fc2l6ZSk6IE1ha2UgdGhlc2UgZ2xvYmFsLiAgVGhleQotIAl3aWxsIGdvIGF3YXkgc2hvcnRseS4KKwl3aWxsIGdvIGF3YXkgc2hvcnRseS4KIAogV2VkIEFwciAgMiAxNToyMzo0OSAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgogCkBAIC0xMDAyLDcgKzEwMjksNyBAQAogTW9uIE1hciAxNyAxNDo1Nzo1NSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGtyZW12YXguY3lnbnVzLmNvbT4KIAogCSogcmVtb3RlLXNpbS5oOiBOZXcgZmlsZSwgY29waWVkIGluIGZyb20gZ2RiL3JlbW90ZS1zaW0uaC4gIE9uZQotIAlkYXkgdGhpcyB3aWxsIGJlIHBsYWNlZCBpbiBhIGRpcmVjdG9yeSBvZiBpdHMgb3duLgorCWRheSB0aGlzIHdpbGwgYmUgcGxhY2VkIGluIGEgZGlyZWN0b3J5IG9mIGl0cyBvd24uCiAKIFNhdCBNYXIgMTUgMTk6MDA6MTQgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgogCkBAIC0xMDExLDggKzEwMzgsOCBAQAogVGh1IE1hciAgNiAxNTo0Njo1OSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGtyZW12YXguY3lnbnVzLmNvbT4KIAogCSogY2FsbGJhY2suaCAoc3RydWN0IGhvc3RfY2FsbGJhY2tfc3RydWN0KTogQWRkIGNhbGxiYWNrcyAtCi0gCWZsdXNoX3N0ZG91dCwgd3JpdGVfc3RkZXJyLCBmbHVzaF9zdGRlcnIsIHZwcmludGZfZmlsdGVyZWQsCi0gCWV2cHJpbnRmX2ZpbHRlcmVkLiAgRGVsZXRlIHJlZHVuZGFudCBjYWxsYmFja3MgLSBwcmludGZfZmlsdGVyZWQuCisJZmx1c2hfc3Rkb3V0LCB3cml0ZV9zdGRlcnIsIGZsdXNoX3N0ZGVyciwgdnByaW50Zl9maWx0ZXJlZCwKKwlldnByaW50Zl9maWx0ZXJlZC4gIERlbGV0ZSByZWR1bmRhbnQgY2FsbGJhY2tzIC0gcHJpbnRmX2ZpbHRlcmVkLgogCiBUaHUgRmViIDI3IDIzOjE4OjI3IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KIApAQCAtMTEyNCw3ICsxMTUxLDcgQEAKIAljYW4gZGVmaW5lIFBSSVZBVEVfWE1BTExPQyBhbmQgdGhlbiBkZWZpbmUgeG1hbGxvYyBhbmQKIAl4cmVhbGxvYyBhbnl3YXkgdGhleSB3YW50LgogCShiYXNlbmFtZSk6IERvY3VtZW50IGluIHNvdXJjZSB0aGF0IHdlIGNhbid0IGRlY2xhcmUgdGhlCi0gCXBhcmFtZXRlciB0eXBlIGJlY2F1c2UgaXQgaXMgZGVjbGFyZWQgaW5jb25zaXN0ZW50bHkgYWNyb3NzCisJcGFyYW1ldGVyIHR5cGUgYmVjYXVzZSBpdCBpcyBkZWNsYXJlZCBpbmNvbnNpc3RlbnRseSBhY3Jvc3MKIAlkaWZmZXJlbnQgc3lzdGVtcy4KIAogTW9uIEp1bCAyMiAxMzoxNjoxMyAxOTk2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEB0YW11LmVkdT4KQEAgLTE5MTksOCArMTk0Niw4IEBACiBXZWQgTm92IDI3IDEwOjM4OjMxIDE5OTEgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IHJ0bC5jeWdudXMuY29tKQogCiAJKiBpbnRlcm5hbGNvZmYuaDogKGludGVybmFsX3NjbmhkcikgdG9vayBvdXQgI2RlZiBkZXBlbmRlbmN5LCBub3cKLQlzX25yZWxvYyBhbmQgc19ubG5ubyBhcmUgYWx3YXlzIGxvbmcuIAkoaW50ZXJuYWxfcmVsb2MpOiBhbGx3YXlzCi0JaGFzIGFuIG9mZnNldCBmaWVsZCBub3cuCisJc19ucmVsb2MgYW5kIHNfbmxubm8gYXJlIGFsd2F5cyBsb25nLgorCShpbnRlcm5hbF9yZWxvYyk6IEFsd2F5cyBoYXMgYW4gb2Zmc2V0IGZpZWxkIG5vdy4KIAogRnJpIE5vdiAyMiAwODoxMjo1OCAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9iZmRsaW5rLmggYi9pbmNsdWRlL2JmZGxpbmsuaAppbmRleCBhOTg5ZjY0Li5jYzIwNDNlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2JmZGxpbmsuaAorKysgYi9pbmNsdWRlL2JmZGxpbmsuaApAQCAtMSw2ICsxLDYgQEAKIC8qIGJmZGxpbmsuaCAtLSBoZWFkZXIgZmlsZSBmb3IgQkZEIGxpbmsgcm91dGluZXMKLSAgIENvcHlyaWdodCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAyLCAyMDAzCi0gICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAyLCAyMDAzLAorICAgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgIFdyaXR0ZW4gYnkgU3RldmUgQ2hhbWJlcmxhaW4gYW5kIElhbiBMYW5jZSBUYXlsb3IsIEN5Z251cyBTdXBwb3J0LgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCkBAIC0zMDMsOSArMzAzLDkgQEAKICAgdW5zaWduZWQgaW50IG5vZXhlY3N0YWNrOiAxOwogCiAgIC8qIFdoYXQgdG8gZG8gd2l0aCB1bnJlc29sdmVkIHN5bWJvbHMgaW4gYW4gb2JqZWN0IGZpbGUuCi0gICAgIFdoZW4gcHJvZHVjaW5nIHN0YXRpYyBiaW5hcmllcyB0aGUgZGVmYXVsdCBpcyBHRU5FUkFURV9FUlJPUi4KLSAgICAgV2hlbiBwcm9kdWNpbmcgZHluYW1pYyBiaW5hcmllcyB0aGUgZGVmYXVsdCBpcyBJR05PUkUuICBUaGUKLSAgICAgYXNzdW1wdGlvbiB3aXRoIGR5bmFtaWMgYmluYXJpZXMgaXMgdGhhdCB0aGUgcmVmZXJlbmNlIHdpbGwgYmUKKyAgICAgV2hlbiBwcm9kdWNpbmcgZXhlY3V0YWJsZXMgdGhlIGRlZmF1bHQgaXMgR0VORVJBVEVfRVJST1IuCisgICAgIFdoZW4gcHJvZHVjaW5nIHNoYXJlZCBsaWJyYXJpZXMgdGhlIGRlZmF1bHQgaXMgSUdOT1JFLiAgVGhlCisgICAgIGFzc3VtcHRpb24gd2l0aCBzaGFyZWQgbGlicmFyaWVzIGlzIHRoYXQgdGhlIHJlZmVyZW5jZSB3aWxsIGJlCiAgICAgIHJlc29sdmVkIGF0IGxvYWQvZXhlY3V0aW9uIHRpbWUuICAqLwogICBlbnVtIHJlcG9ydF9tZXRob2QgdW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHM7CiAKQEAgLTMyMyw2ICszMjMsMTEgQEAKICAgICAgd2hldGhlciB0byBpbmNsdWRlIGFuIG9iamVjdCBmcm9tIGFuIGFyY2hpdmUuICovCiAgIGVudW0gYmZkX2xpbmtfY29tbW9uX3NraXBfYXJfYXltYm9scyBjb21tb25fc2tpcF9hcl9heW1ib2xzOwogCisgIC8qIENoYXIgdGhhdCBtYXkgYXBwZWFyIGFzIHRoZSBmaXJzdCBjaGFyIG9mIGEgc3ltYm9sLCBidXQgc2hvdWxkIGJlCisgICAgIHNraXBwZWQgKGxpa2Ugc3ltYm9sX2xlYWRpbmdfY2hhcikgd2hlbiBsb29raW5nIHVwIHN5bWJvbHMgaW4KKyAgICAgd3JhcF9oYXNoLiAgVXNlZCBieSBQb3dlclBDIExpbnV4IGZvciAnZG90JyBzeW1ib2xzLiAgKi8KKyAgY2hhciB3cmFwX2NoYXI7CisKICAgLyogRnVuY3Rpb24gY2FsbGJhY2tzLiAgKi8KICAgY29uc3Qgc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyAqY2FsbGJhY2tzOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2R5bi1zdHJpbmcuaCBiL2luY2x1ZGUvZHluLXN0cmluZy5oCmluZGV4IDJhNzcxYzcuLjg1Zjg4YjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHluLXN0cmluZy5oCisrKyBiL2luY2x1ZGUvZHluLXN0cmluZy5oCkBAIC0xLDUgKzEsNSBAQAogLyogQW4gYWJzdHJhY3Qgc3RyaW5nIGRhdGF0eXBlLgotICAgQ29weXJpZ2h0IChDKSAxOTk4LCAxOTk5LCAyMDAwLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IChDKSAxOTk4LCAxOTk5LCAyMDAwLCAyMDAyLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgQ29udHJpYnV0ZWQgYnkgTWFyayBNaXRjaGVsbCAobWFya0BtYXJrbWl0Y2hlbGwuY29tKS4KIAogVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgpAQCAtNDAsMzUgKzQwLDYgQEAKICAgKHN0cmNtcCAoKERTMSktPnMsIChEUzIpLT5zKSkKIAogCi0vKiBkeW5fc3RyaW5nIGZ1bmN0aW9ucyBhcmUgdXNlZCBpbiB0aGUgZGVtYW5nbGluZyBpbXBsZW1lbnRhdGlvbgotICAgaW5jbHVkZWQgaW4gdGhlIEcrKyBydW50aW1lIGxpYnJhcnkuICBUbyBwcmV2ZW50IGNvbGxpc2lvbnMgd2l0aAotICAgbmFtZXMgaW4gdXNlciBwcm9ncmFtcywgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSB1c2VkIGluIHRoZQotICAgZGVtYW5nbGVyIGFyZSBnaXZlbiBpbXBsZW1lbnRhdGlvbi1yZXNlcnZlZCBuYW1lcy4gICovCi0KLSNpZiBkZWZpbmVkKElOX0xJQkdDQzIpIHx8IGRlZmluZWQoSU5fR0xJQkNQUF9WMykKLQotI2RlZmluZSBkeW5fc3RyaW5nX2luaXQgICAgICAgICAgICAgICAgIF9fY3hhX2R5bl9zdHJpbmdfaW5pdAotI2RlZmluZSBkeW5fc3RyaW5nX25ldyAgICAgICAgICAgICAgICAgIF9fY3hhX2R5bl9zdHJpbmdfbmV3Ci0jZGVmaW5lIGR5bl9zdHJpbmdfZGVsZXRlICAgICAgICAgICAgICAgX19jeGFfZHluX3N0cmluZ19kZWxldGUKLSNkZWZpbmUgZHluX3N0cmluZ19yZWxlYXNlICAgICAgICAgICAgICBfX2N4YV9keW5fc3RyaW5nX3JlbGVhc2UKLSNkZWZpbmUgZHluX3N0cmluZ19yZXNpemUgICAgICAgICAgICAgICBfX2N4YV9keW5fc3RyaW5nX3Jlc2l6ZQotI2RlZmluZSBkeW5fc3RyaW5nX2NsZWFyICAgICAgICAgICAgICAgIF9fY3hhX2R5bl9zdHJpbmdfY2xlYXIKLSNkZWZpbmUgZHluX3N0cmluZ19jb3B5ICAgICAgICAgICAgICAgICBfX2N4YV9keW5fc3RyaW5nX2NvcHkKLSNkZWZpbmUgZHluX3N0cmluZ19jb3B5X2NzdHIgICAgICAgICAgICBfX2N4YV9keW5fc3RyaW5nX2NvcHlfY3N0cgotI2RlZmluZSBkeW5fc3RyaW5nX3ByZXBlbmQgICAgICAgICAgICAgIF9fY3hhX2R5bl9zdHJpbmdfcHJlcGVuZAotI2RlZmluZSBkeW5fc3RyaW5nX3ByZXBlbmRfY3N0ciAgICAgICAgIF9fY3hhX2R5bl9zdHJpbmdfcHJlcGVuZF9jc3RyCi0jZGVmaW5lIGR5bl9zdHJpbmdfaW5zZXJ0ICAgICAgICAgICAgICAgX19jeGFfZHluX3N0cmluZ19pbnNlcnQKLSNkZWZpbmUgZHluX3N0cmluZ19pbnNlcnRfY3N0ciAgICAgICAgICBfX2N4YV9keW5fc3RyaW5nX2luc2VydF9jc3RyCi0jZGVmaW5lIGR5bl9zdHJpbmdfaW5zZXJ0X2NoYXIgICAgICAgICAgX19jeGFfZHluX3N0cmluZ19pbnNlcnRfY2hhcgotI2RlZmluZSBkeW5fc3RyaW5nX2FwcGVuZCAgICAgICAgICAgICAgIF9fY3hhX2R5bl9zdHJpbmdfYXBwZW5kCi0jZGVmaW5lIGR5bl9zdHJpbmdfYXBwZW5kX2NzdHIgICAgICAgICAgX19jeGFfZHluX3N0cmluZ19hcHBlbmRfY3N0cgotI2RlZmluZSBkeW5fc3RyaW5nX2FwcGVuZF9jaGFyICAgICAgICAgIF9fY3hhX2R5bl9zdHJpbmdfYXBwZW5kX2NoYXIKLSNkZWZpbmUgZHluX3N0cmluZ19zdWJzdHJpbmcgICAgICAgICAgICBfX2N4YV9keW5fc3RyaW5nX3N1YnN0cmluZwotI2RlZmluZSBkeW5fc3RyaW5nX2VxICAgICAgICAgICAgICAgICAgIF9fY3hhX2R5bl9zdHJpbmdfZXEKLQotI2VuZGlmIC8qIElOX0xJQkdDQzIgfHwgSU5fR0xJQkNQUF9WMyAqLwotCi0KIGV4dGVybiBpbnQgZHluX3N0cmluZ19pbml0ICAgICAgICAgICAgICBQQVJBTVMgKChzdHJ1Y3QgZHluX3N0cmluZyAqLCBpbnQpKTsKIGV4dGVybiBkeW5fc3RyaW5nX3QgZHluX3N0cmluZ19uZXcgICAgICBQQVJBTVMgKChpbnQpKTsKIGV4dGVybiB2b2lkIGR5bl9zdHJpbmdfZGVsZXRlICAgICAgICAgICBQQVJBTVMgKChkeW5fc3RyaW5nX3QpKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZWxmL0NoYW5nZUxvZyBiL2luY2x1ZGUvZWxmL0NoYW5nZUxvZwppbmRleCBlYTAwOGQ2Li4yOGVjMjA1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2VsZi9DaGFuZ2VMb2cKKysrIGIvaW5jbHVkZS9lbGYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDQtMzAtMzAgIEdhbGl0IEhlbGxlciAgPEdhbGl0LkhlbGxlckBuc2MuY29tPgorICAgICAgICAgICAgVG9tZXIgTGV2aSAgPFRvbWVyLkxldmlAbnNjLmNvbT4KKworCSogY29tbW9uLmggKEVNX0NSKTogRGVmaW5lLgorCSogY3IxNmMuaDogTmV3IGZpbGUuCisKKzIwMDQtMDMtMjMgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CisKKwkqIGFybS5oIChFRl9FUk1fQkU4LCBFRl9BUk1fTEU4LCBFRl9BUk1fRUFCSV9WRVIzKTogQWRkLgorCisyMDAzLTAzLTAzICBBbmRyZXcgU3R1YmJzICA8YW5kcmV3LnN0dWJic0BzdXBlcmguY29tPgorCisJKiBzaC5oOiBBZGQgRUZfU0g0X05PTU1VX05PRlBVLgorCisyMDA0LTAzLTAxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CisKKwkqIGZydi5oIChFRl9GUlZfQ1BVX0ZSNDA1LCBFRl9GUlZfQ1BVX0ZSNDUwKTogRGVmaW5lLgorCiAyMDA0LTAxLTI4ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgogCiAJKiBjb21tb24uaCAoQVRfU0VDVVJFKTogTmV3IG1hY3JvLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbGYvYXJtLmggYi9pbmNsdWRlL2VsZi9hcm0uaAppbmRleCAxODFhOWYwLi4xNThhNGI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2VsZi9hcm0uaAorKysgYi9pbmNsdWRlL2VsZi9hcm0uaApAQCAtNDIsMTAgKzQyLDE1IEBACiAjZGVmaW5lIEVGX0FSTV9NQVBTWU1TRklSU1QgMHgxMAkvKiBOQiBjb25mbGljdHMgd2l0aCBFRl9BUENTX0ZMT0FUICovCiAjZGVmaW5lIEVGX0FSTV9FQUJJTUFTSyAgICAgIDB4RkYwMDAwMDAKIAorLyogQ29uc3RhbnRzIGRlZmluZWQgaW4gQUFFTEYuICAqLworI2RlZmluZSBFRl9BUk1fQkU4CSAgICAweDAwODAwMDAwCisjZGVmaW5lIEVGX0FSTV9MRTgJICAgIDB4MDA0MDAwMDAKKwogI2RlZmluZSBFRl9BUk1fRUFCSV9WRVJTSU9OKGZsYWdzKSAoKGZsYWdzKSAmIEVGX0FSTV9FQUJJTUFTSykKICNkZWZpbmUgRUZfQVJNX0VBQklfVU5LTk9XTiAgMHgwMDAwMDAwMAogI2RlZmluZSBFRl9BUk1fRUFCSV9WRVIxICAgICAweDAxMDAwMDAwCiAjZGVmaW5lIEVGX0FSTV9FQUJJX1ZFUjIgICAgIDB4MDIwMDAwMDAKKyNkZWZpbmUgRUZfQVJNX0VBQklfVkVSMyAgICAgMHgwMzAwMDAwMAogCiAvKiBMb2NhbCBhbGlhc2VzIGZvciBzb21lIGZsYWdzIHRvIG1hdGNoIG5hbWVzIHVzZWQgYnkgQ09GRiBwb3J0LiAgKi8KICNkZWZpbmUgRl9JTlRFUldPUksJICAgRUZfQVJNX0lOVEVSV09SSwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbGYvY29tbW9uLmggYi9pbmNsdWRlL2VsZi9jb21tb24uaAppbmRleCBiZjIzM2Y2Li44ZWJjMmNmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2VsZi9jb21tb24uaAorKysgYi9pbmNsdWRlL2VsZi9jb21tb24uaApAQCAtMTgwLDYgKzE4MCw3IEBACiAjZGVmaW5lIEVNX0FSQ19BNQkgOTMJLyogQVJDIENvcmVzIFRhbmdlbnQtQTUgKi8KICNkZWZpbmUgRU1fWFRFTlNBCSA5NAkvKiBUZW5zaWxpY2EgWHRlbnNhIEFyY2hpdGVjdHVyZSAqLwogI2RlZmluZSBFTV9JUDJLCQkxMDEJLyogVWJpY29tIElQMjAyMiBtaWNybyBjb250cm9sbGVyICovCisjZGVmaW5lIEVNX0NSCQkxMDMJLyogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBDb21wYWN0UklTQyAqLwogI2RlZmluZSBFTV9NU1A0MzAJMTA1CS8qIFRJIG1zcDQzMCBtaWNybyBjb250cm9sbGVyICovCiAKIC8qIElmIGl0IGlzIG5lY2Vzc2FyeSB0byBhc3NpZ24gbmV3IHVub2ZmaWNpYWwgRU1fKiB2YWx1ZXMsIHBsZWFzZSBwaWNrIGxhcmdlCmRpZmYgLS1naXQgYS9pbmNsdWRlL2VsZi9jcjE2Yy5oIGIvaW5jbHVkZS9lbGYvY3IxNmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTkxYWZlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9lbGYvY3IxNmMuaApAQCAtMCwwICsxLDI1OCBAQAorLyogQ1IxNkMgRUxGIHN1cHBvcnQgZm9yIEJGRC4KKyAgIENvcHlyaWdodCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBCRkQsIHRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIGxpYnJhcnkuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCisKKyNpZm5kZWYgX0VMRl9DUjE2Q19ICisjZGVmaW5lIF9FTEZfQ1IxNkNfSAorCisjaW5jbHVkZSAiYmZkLmgiCisjaW5jbHVkZSAiZWxmL3JlbG9jLW1hY3Jvcy5oIgorCisvKiBDcmVhdGluZyBpbmRpY2VzIGZvciByZWxvY19tYXBfaW5kZXggYXJyYXkuICAqLworU1RBUlRfUkVMT0NfTlVNQkVSUyAoZWxmX2NyMTZjX3JlbG9jX3R5cGUpCisgICAgIFJFTE9DX05VTUJFUiAoUklOREVYXzE2Q19OVU0wOCwJCTApCisgICAgIFJFTE9DX05VTUJFUiAoUklOREVYXzE2Q19OVU0wOF9DLAkJMSkKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX05VTTE2LAkJMikKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX05VTTE2X0MsCQkzKQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfTlVNMzIsCQk0KQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfTlVNMzJfQywJCTUpCisgICAgIFJFTE9DX05VTUJFUiAoUklOREVYXzE2Q19ESVNQMDQsCQk2KQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfRElTUDA0X0MsCQk3KQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfRElTUDA4LAkJOCkKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX0RJU1AwOF9DLAkJOSkKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX0RJU1AxNiwJCTEwKQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfRElTUDE2X0MsCQkxMSkKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX0RJU1AyNCwJCTEyKQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfRElTUDI0X0MsCQkxMykKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX0RJU1AyNGEsCQkxNCkKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX0RJU1AyNGFfQywJMTUpCisgICAgIFJFTE9DX05VTUJFUiAoUklOREVYXzE2Q19SRUcwNCwJCTE2KQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfUkVHMDRfQywJCTE3KQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfUkVHMDRhLAkJMTgpCisgICAgIFJFTE9DX05VTUJFUiAoUklOREVYXzE2Q19SRUcwNGFfQywJCTE5KQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfUkVHMTQsCQkyMCkKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX1JFRzE0X0MsCQkyMSkKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX1JFRzE2LAkJMjIpCisgICAgIFJFTE9DX05VTUJFUiAoUklOREVYXzE2Q19SRUcxNl9DLAkJMjMpCisgICAgIFJFTE9DX05VTUJFUiAoUklOREVYXzE2Q19SRUcyMCwJCTI0KQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfUkVHMjBfQywJCTI1KQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfQUJTMjAsCQkyNikKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX0FCUzIwX0MsCQkyNykKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX0FCUzI0LAkJMjgpCisgICAgIFJFTE9DX05VTUJFUiAoUklOREVYXzE2Q19BQlMyNF9DLAkJMjkpCisgICAgIFJFTE9DX05VTUJFUiAoUklOREVYXzE2Q19JTU0wNCwJCTMwKQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfSU1NMDRfQywJCTMxKQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfSU1NMTYsCQkzMikKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX0lNTTE2X0MsCQkzMykKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX0lNTTIwLAkJMzQpCisgICAgIFJFTE9DX05VTUJFUiAoUklOREVYXzE2Q19JTU0yMF9DLAkJMzUpCisgICAgIFJFTE9DX05VTUJFUiAoUklOREVYXzE2Q19JTU0yNCwJCTM2KQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfSU1NMjRfQywJCTM3KQorICAgICBSRUxPQ19OVU1CRVIgKFJJTkRFWF8xNkNfSU1NMzIsCQkzOCkKKyAgICAgUkVMT0NfTlVNQkVSIChSSU5ERVhfMTZDX0lNTTMyX0MsCQkzOSkKK0VORF9SRUxPQ19OVU1CRVJTIChSSU5ERVhfMTZDX01BWCkKKworLyogQ1IxNkMgUmVsb2NhdGlvbiBUeXBlcyAoJ2NyX3JlbG9jX3R5cGUnIGVudHJ5IGluIHRoZSByZWxvY19tYXAgc3RydWN0dXJlKS4KKyAgIFRoZSByZWxvY2F0aW9uIGNvbnN0YW50IG5hbWUgaXMgZGV0ZXJtaW5lZCBhcyBmb2xsb3dzIDoKKworICAgUl8xNkNfPGZvcm1hdD48c2l6ZT5bX0NdCisKKyAgIFdoZXJlIDoKKworICAgICA8Zm9ybWF0PiBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKwlOVU0gIC0gUl9OVU1CRVIgbW5lbW9uaWMsCisJRElTUCAtIFJfMTZDX0RJU1BMIG1uZW1vbmljLAorCVJFRyAgLSBSXzE2Q19SRUdSRUwgbW5lbW9uaWMsCisJQUJTICAtIFJfMTZDX0FCUyBtbmVtb25pYywKKwlJTU0gIC0gUl8xNkNfSU1NRUQgbW5lbW9uaWMsCisgICAgIDxzaXplPiBzdGFuZHMgZm9yIFJfU18xNkNfPHNpemU+IAorICAgICBfQyBtZWFucyAnY29kZSBsYWJlbCcgYW5kIGlzIG9ubHkgYWRkZWQgd2hlbiBSX0FERFJUWVBFIHN1YmZpZWxkIAorICAgICBpcyBvZiB0eXBlIFJfQ09ERV9BRERSLiAgKi8KKyAgIAorLyogVGhlIHRhYmxlIGJlbG93IHNob3dzIHdoYXQgdGhlIGhleCBkaWdpdHMgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlCisgICByZWxvY2F0aW9uIHR5cGUgY29uc3RhbnRzIGNvcnJlc3BvbmQgdG8uCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlSX1NJWkVTUAlSX0ZPUk1BVAlSX1JFTFRPCSAgICAgIFJfQUREUlRZUEUKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgKi8KKy8qCVJfU18xNkNfMDgJUl9OVU1CRVIgCVJfQUJTIAkgICAgICBSX0FERFJFU1MgKi8KKyNkZWZpbmUgUl8xNkNfTlVNMDgJMFgwMDAxCisKKy8qCVJfU18xNkNfMDgJUl9OVU1CRVIgCVJfQUJTIAkgICAgICBSX0NPREVfQUREUiAqLworI2RlZmluZSBSXzE2Q19OVU0wOF9DCTBYMDAwNgorCisvKglSX1NfMTZDXzE2CVJfTlVNQkVSIAlSX0FCUyAJICAgICAgUl9BRERSRVNTICovCisjZGVmaW5lIFJfMTZDX05VTTE2CTBYMTAwMQorCisvKglSX1NfMTZDXzE2CVJfTlVNQkVSIAlSX0FCUyAJICAgICAgUl9DT0RFX0FERFIgKi8KKyNkZWZpbmUgUl8xNkNfTlVNMTZfQyAJMFgxMDA2CisKKy8qICAgICAgUl9TXzE2Q18zMiAgICAgIFJfTlVNQkVSCVJfQUJTCSAgICAgIFJfQUREUkVTUyAqLworI2RlZmluZSBSXzE2Q19OVU0zMiAgICAgMFgyMDAxCisKKy8qICAgICAgUl9TXzE2Q18zMiAgICAgIFJfTlVNQkVSCVJfQUJTCSAgICAgIFJfQ09ERV9BRERSICovCisjZGVmaW5lIFJfMTZDX05VTTMyX0MgICAwWDIwMDYKKworLyoJUl9TXzE2Q18wNAlSXzE2Q19ESVNQTCAJUl9QQ1JFTAkgICAgICBSX0FERFJFU1MgKi8KKyNkZWZpbmUgUl8xNkNfRElTUDA0CTBYNTQxMQorCisvKglSX1NfMTZDXzA0CVJfMTZDX0RJU1BMIAlSX1BDUkVMCSAgICAgIFJfQ09ERV9BRERSICovCisjZGVmaW5lIFJfMTZDX0RJU1AwNF9DCTBYNTQxNgorCisvKglSX1NfMTZDXzA4CVJfMTZDX0RJU1BMIAlSX1BDUkVMCSAgICAgIFJfQUREUkVTUyAqLworI2RlZmluZSBSXzE2Q19ESVNQMDgJMFgwNDExCisKKy8qCVJfU18xNkNfMDgJUl8xNkNfRElTUEwgCVJfUENSRUwJICAgICAgUl9DT0RFX0FERFIgKi8KKyNkZWZpbmUgUl8xNkNfRElTUDA4X0MJMFgwNDE2CisKKy8qCVJfU18xNkNfMTYJUl8xNkNfRElTUEwgCVJfUENSRUwJICAgICAgUl9BRERSRVNTICovCisjZGVmaW5lIFJfMTZDX0RJU1AxNgkwWDE0MTEKKworLyoJUl9TXzE2Q18xNglSXzE2Q19ESVNQTCAJUl9QQ1JFTAkgICAgICBSX0NPREVfQUREUiAqLworI2RlZmluZSBSXzE2Q19ESVNQMTZfQwkwWDE0MTYKKworLyoJUl9TXzE2Q18yNAlSXzE2Q19ESVNQTCAJUl9QQ1JFTAkgICAgICBSX0FERFJFU1MgKi8KKyNkZWZpbmUgUl8xNkNfRElTUDI0CTBYNzQxMQorCisvKglSX1NfMTZDXzI0CVJfMTZDX0RJU1BMIAlSX1BDUkVMCSAgICAgIFJfQ09ERV9BRERSICovCisjZGVmaW5lIFJfMTZDX0RJU1AyNF9DCTBYNzQxNgorCisvKglSX1NfMTZDXzI0YQlSXzE2Q19ESVNQTCAJUl9QQ1JFTAkgICAgICBSX0FERFJFU1MgKi8KKyNkZWZpbmUgUl8xNkNfRElTUDI0YQkwWDY0MTEKKworLyoJUl9TXzE2Q18yNGEJUl8xNkNfRElTUEwgCVJfUENSRUwJICAgICAgUl9DT0RFX0FERFIgKi8KKyNkZWZpbmUgUl8xNkNfRElTUDI0YV9DCTBYNjQxNgorCisvKglSX1NfMTZDXzA0CVJfMTZDX1JFR1JFTCAJUl9BQlMgCSAgICAgIFJfQUREUkVTUyAqLworI2RlZmluZSBSXzE2Q19SRUcwNAkwWDUyMDEKKworLyoJUl9TXzE2Q18wNAlSXzE2Q19SRUdSRUwgCVJfQUJTIAkgICAgICBSX0NPREVfQUREUiAqLworI2RlZmluZSBSXzE2Q19SRUcwNF9DCTBYNTIwNgorCisvKglSX1NfMTZDXzA0X2EJUl8xNkNfUkVHUkVMIAlSX0FCUyAJICAgICAgUl9BRERSRVNTICovCisjZGVmaW5lIFJfMTZDX1JFRzA0YQkwWDQyMDEKKworLyoJUl9TXzE2Q18wNF9hCVJfMTZDX1JFR1JFTCAJUl9BQlMgCSAgICAgIFJfQ09ERV9BRERSICovCisjZGVmaW5lIFJfMTZDX1JFRzA0YV9DCTBYNDIwNgorCisvKglSX1NfMTZDXzE0CVJfMTZDX1JFR1JFTCAJUl9BQlMgCSAgICAgIFJfQUREUkVTUyAqLworI2RlZmluZSBSXzE2Q19SRUcxNAkwWDMyMDEKKworLyoJUl9TXzE2Q18xNAlSXzE2Q19SRUdSRUwgCVJfQUJTIAkgICAgICBSX0NPREVfQUREUiAqLworI2RlZmluZSBSXzE2Q19SRUcxNF9DCTBYMzIwNgorCisvKglSX1NfMTZDXzE2CVJfMTZDX1JFR1JFTCAJUl9BQlMgCSAgICAgIFJfQUREUkVTUyAqLworI2RlZmluZSBSXzE2Q19SRUcxNgkwWDEyMDEKKworLyoJUl9TXzE2Q18xNglSXzE2Q19SRUdSRUwgCVJfQUJTIAkgICAgICBSX0NPREVfQUREUiAqLworI2RlZmluZSBSXzE2Q19SRUcxNl9DCTBYMTIwNgorCisvKglSX1NfMTZDXzIwCVJfMTZDX1JFR1JFTCAJUl9BQlMgCSAgICAgIFJfQUREUkVTUyAqLworI2RlZmluZSBSXzE2Q19SRUcyMAkwWDgyMDEKKworLyoJUl9TXzE2Q18yMAlSXzE2Q19SRUdSRUwgCVJfQUJTIAkgICAgICBSX0NPREVfQUREUiAqLworI2RlZmluZSBSXzE2Q19SRUcyMF9DCTBYODIwNgorCisvKiAgICAgIFJfU18xNkNfMjAgICAgICBSXzE2Q19BQlMJUl9BQlMJICAgICAgUl9BRERSRVNTICovCisjZGVmaW5lIFJfMTZDX0FCUzIwICAgICAwWDgxMDEKKworLyogICAgICBSX1NfMTZDXzIwICAgICAgUl8xNkNfQUJTCVJfQUJTCSAgICAgIFJfQ09ERV9BRERSICovCisjZGVmaW5lIFJfMTZDX0FCUzIwX0MgICAwWDgxMDYKKworLyogICAgICBSX1NfMTZDXzI0ICAgICAgUl8xNkNfQUJTCVJfQUJTCSAgICAgIFJfQUREUkVTUyAqLworI2RlZmluZSBSXzE2Q19BQlMyNCAgICAgMFg3MTAxCisKKy8qICAgICAgUl9TXzE2Q18yNCAgICAgIFJfMTZDX0FCUwlSX0FCUwkgICAgICBSX0NPREVfQUREUiAqLworI2RlZmluZSBSXzE2Q19BQlMyNF9DICAgMFg3MTA2CisKKy8qICAgICAgUl9TXzE2Q18wNCAgICAgIFJfMTZDX0lNTUVECVJfQUJTCSAgICAgIFJfQUREUkVTUyAqLworI2RlZmluZSBSXzE2Q19JTU0wNCAgICAgMFg1MzAxCisKKy8qICAgICAgUl9TXzE2Q18wNCAgICAgIFJfMTZDX0lNTUVECVJfQUJTCSAgICAgIFJfQ09ERV9BRERSICovCisjZGVmaW5lIFJfMTZDX0lNTTA0X0MgICAwWDUzMDYKKworLyogICAgICBSX1NfMTZDXzE2ICAgICAgUl8xNkNfSU1NRUQJUl9BQlMJICAgICAgUl9BRERSRVNTICovCisjZGVmaW5lIFJfMTZDX0lNTTE2ICAgICAwWDEzMDEKKworLyogICAgICBSX1NfMTZDXzE2ICAgICAgUl8xNkNfSU1NRUQJUl9BQlMJICAgICAgUl9DT0RFX0FERFIgKi8KKyNkZWZpbmUgUl8xNkNfSU1NMTZfQyAgIDBYMTMwNgorCisvKiAgICAgIFJfU18xNkNfMjAgICAgICBSXzE2Q19JTU1FRAlSX0FCUwkgICAgICBSX0FERFJFU1MgKi8KKyNkZWZpbmUgUl8xNkNfSU1NMjAgICAgIDBYODMwMQorCisvKiAgICAgIFJfU18xNkNfMjAgICAgICBSXzE2Q19JTU1FRAlSX0FCUwkgICAgICBSX0NPREVfQUREUiAqLworI2RlZmluZSBSXzE2Q19JTU0yMF9DICAgMFg4MzA2CisKKy8qICAgICAgUl9TXzE2Q18yNCAgICAgIFJfMTZDX0lNTUVECVJfQUJTCSAgICAgIFJfQUREUkVTUyAqLworI2RlZmluZSBSXzE2Q19JTU0yNCAgICAgMFg3MzAxCisKKy8qICAgICAgUl9TXzE2Q18yNCAgICAgIFJfMTZDX0lNTUVECVJfQUJTCSAgICAgIFJfQ09ERV9BRERSICovCisjZGVmaW5lIFJfMTZDX0lNTTI0X0MgICAwWDczMDYKKworLyogICAgICBSX1NfMTZDXzMyICAgICAgUl8xNkNfSU1NRUQJUl9BQlMJICAgICAgUl9BRERSRVNTICovCisjZGVmaW5lIFJfMTZDX0lNTTMyICAgICAwWDIzMDEKKworLyogICAgICBSX1NfMTZDXzMyICAgICAgUl8xNkNfSU1NRUQJUl9BQlMJICAgICAgUl9DT0RFX0FERFIgKi8KKyNkZWZpbmUgUl8xNkNfSU1NMzJfQyAgIDBYMjMwNgorCisKKy8qIFJlbG9jYXRpb24gaXRlbSB0eXBlLiAgKi8KKyNkZWZpbmUgICBSX0FERFJUWVBFCSAweDAwMGYKKyNkZWZpbmUgICBSX0FERFJFU1MgICAgICAweDAwMDEgICAgLyogVGFrZSBhZGRyZXNzIG9mIHN5bWJvbC4gICovCisjZGVmaW5lICAgUl9DT0RFX0FERFIgICAgMHgwMDA2ICAgIC8qIFRha2UgYWRkcmVzcyBvZiBzeW1ib2wgZGl2aWRlZCBieSAyLiAgKi8KKworLyogUmVsb2NhdGlvbiBhY3Rpb24uICAqLworI2RlZmluZSAgIFJfUkVMVE8gICAgICAgIDB4MDBmMAorI2RlZmluZSAgIFJfQUJTICAgICAgICAgIDB4MDAwMCAgICAvKiBLZWVwIHN5bWJvbCdzIGFkZHJlc3MgYXMgc3VjaC4gICovCisjZGVmaW5lICAgUl9QQ1JFTCAgICAgICAgMHgwMDEwICAgIC8qIFN1YnRyYWN0IHRoZSBwYyBhZGRyZXNzIG9mIGhvbGUuICAqLworCisvKiBSZWxvY2F0aW9uIGl0ZW0gZGF0YSBmb3JtYXQuICAqLworI2RlZmluZSAgIFJfRk9STUFUICAgICAgIDB4MGYwMAorI2RlZmluZSAgIFJfTlVNQkVSICAgICAgIDB4MDAwMCAgICAvKiBSZXRhaW4gYXMgdHdvJ3MgY29tcGxlbWVudCB2YWx1ZS4gICovCisjZGVmaW5lICAgUl8xNkNfRElTUEwgICAgMHgwNDAwICAgIC8qIENSMTZDIGRpc3BsYWNlbWVudCB0eXBlLiAgKi8KKyNkZWZpbmUgICBSXzE2Q19BQlMgICAgICAweDAxMDAgICAgLyogQ1IxNkMgYWJzb2x1dGUgdHlwZS4gICovCisjZGVmaW5lICAgUl8xNkNfUkVHUkVMICAgMHgwMjAwICAgIC8qIENSMTZDIHJlZ2lzdGVyLXJlbGF0aXZlIHR5cGUuICAqLworI2RlZmluZSAgIFJfMTZDX0lNTUVEICAgIDB4MDMwMCAgICAvKiBDUjE2QyBpbW1lZGlhdGUgdHlwZS4gICovCisKKy8qIFJlbG9jYXRpb24gaXRlbSBzaXplLiAqLworI2RlZmluZSAgIFJfU0laRVNQICAgICAgIDB4ZjAwMAorI2RlZmluZSAgIFJfU18xNkNfMDQgICAgIDB4NTAwMAorI2RlZmluZSAgIFJfU18xNkNfMDRfYSAgIDB4NDAwMAorI2RlZmluZSAgIFJfU18xNkNfMDgJIDB4MDAwMAorI2RlZmluZSAgIFJfU18xNkNfMTQgICAgIDB4MzAwMAorI2RlZmluZSAgIFJfU18xNkNfMTYJIDB4MTAwMAorI2RlZmluZSAgIFJfU18xNkNfMjAgICAgIDB4ODAwMAorI2RlZmluZSAgIFJfU18xNkNfMjRfYSAgIDB4NjAwMAorI2RlZmluZSAgIFJfU18xNkNfMjQJIDB4NzAwMAorI2RlZmluZSAgIFJfU18xNkNfMzIgICAgIDB4MjAwMAorCisKKy8qIFByb2Nlc3NvciBzcGVjaWZpYyBzZWN0aW9uIGluZGljZXMuICBUaGVzZSBzZWN0aW9ucyBkbyBub3QgYWN0dWFsbHkKKyAgIGV4aXN0LiAgU3ltYm9scyB3aXRoIGEgc3Rfc2huZHggZmllbGQgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlc2UKKyAgIHZhbHVlcyBoYXZlIGEgc3BlY2lhbCBtZWFuaW5nLiAgKi8KKworLyogRmFyIGNvbW1vbiBzeW1ib2wuICAqLworI2RlZmluZSBTSE5fQ1IxNkNfRkNPTU1PTgkweGZmMDAKKyNkZWZpbmUgU0hOX0NSMTZDX05DT01NT04JMHhmZjAxCisKK3R5cGVkZWYgc3RydWN0IHJlbG9jX21hcAoreworICB1bnNpZ25lZCBzaG9ydCAgICAgICAgICAgIGNyX3JlbG9jX3R5cGU7ICAvKiBDUiByZWxvY2F0aW9uIHR5cGUuICAqLworICBiZmRfcmVsb2NfY29kZV9yZWFsX3R5cGUgIGJmZF9yZWxvY19lbnVtOyAvKiBCRkQgcmVsb2NhdGlvbiBlbnVtLiAgKi8KK30gUkVMT0NfTUFQOworCisjZW5kaWYgLyogX0VMRl9DUjE2Q19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2VsZi9mcnYuaCBiL2luY2x1ZGUvZWxmL2Zydi5oCmluZGV4IDgyNDZhMjEuLmE2YjhhN2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZWxmL2Zydi5oCisrKyBiL2luY2x1ZGUvZWxmL2Zydi5oCkBAIC05MSw2ICs5MSw4IEBACiAjZGVmaW5lIEVGX0ZSVl9DUFVfVE9NQ0FUCTB4MDQwMDAwMDAJLyogVG9tY2F0LCBGUjUwMCBwcm90b3R5cGUgKi8KICNkZWZpbmUgRUZfRlJWX0NQVV9GUjQwMAkweDA1MDAwMDAwCS8qIEZSVjQwMCAqLwogI2RlZmluZSBFRl9GUlZfQ1BVX0ZSNTUwCTB4MDYwMDAwMDAJLyogRlJWNTUwICovCisjZGVmaW5lIEVGX0ZSVl9DUFVfRlI0MDUJMHgwNzAwMDAwMAorI2RlZmluZSBFRl9GUlZfQ1BVX0ZSNDUwCTB4MDgwMDAwMDAKIAogCQkJCQkJLyogTWFzayBvZiBQSUMgcmVsYXRlZCBiaXRzICovCiAjZGVmaW5lCUVGX0ZSVl9QSUNfRkxBR1MJKEVGX0ZSVl9QSUMgfCBFRl9GUlZfTElCUElDIHwgRUZfRlJWX0JJR1BJQyBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2VsZi9zaC5oIGIvaW5jbHVkZS9lbGYvc2guaAppbmRleCAxNWQ0NjBkLi5jNDZhNWZmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2VsZi9zaC5oCisrKyBiL2luY2x1ZGUvZWxmL3NoLmgKQEAgLTEsNSArMSw1IEBACiAvKiBTSCBFTEYgc3VwcG9ydCBmb3IgQkZELgotICAgQ29weXJpZ2h0IDE5OTgsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb3B5cmlnaHQgMTk5OCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgQkZELCB0aGUgQmluYXJ5IEZpbGUgRGVzY3JpcHRvciBsaWJyYXJ5LgogCkBAIC0zOSw2ICszOSw3IEBACiAKICNkZWZpbmUgRUZfU0g0X05PRlBVCSAgIDB4MTAKICNkZWZpbmUgRUZfU0g0QV9OT0ZQVQkgICAweDExCisjZGVmaW5lIEVGX1NINF9OT01NVV9OT0ZQVSAweDEyCiAKIC8qIFRoaXMgb25lIGNhbiBvbmx5IG1peCBpbiBvYmplY3RzIGZyb20gb3RoZXIgRUZfU0g1IG9iamVjdHMuICAqLwogI2RlZmluZSBFRl9TSDUJCSAgMTAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvaGFzaHRhYi5oIGIvaW5jbHVkZS9oYXNodGFiLmgKaW5kZXggZjdiZDRhZS4uMWFmNzM2OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9oYXNodGFiLmgKKysrIGIvaW5jbHVkZS9oYXNodGFiLmgKQEAgLTk5LDcgKzk5LDcgQEAKICAgaHRhYl9kZWwgZGVsX2Y7CiAKICAgLyogVGFibGUgaXRzZWxmLiAgKi8KLSAgUFRSICogR1RZICgodXNlX3BhcmFtICgiIiksIGxlbmd0aCAoIiVoLnNpemUiKSkpIGVudHJpZXM7CisgIFBUUiAqIEdUWSAoKHVzZV9wYXJhbSwgbGVuZ3RoICgiJWguc2l6ZSIpKSkgZW50cmllczsKIAogICAvKiBDdXJyZW50IHNpemUgKGluIGVudHJpZXMpIG9mIHRoZSBoYXNoIHRhYmxlICovCiAgIHNpemVfdCBzaXplOwpAQCAtMTIzLDcgKzEyMyw3IEBACiAgIGh0YWJfZnJlZSBmcmVlX2Y7CiAKICAgLyogQWx0ZXJuYXRlIGFsbG9jYXRlL2ZyZWUgZnVuY3Rpb25zLCB3aGljaCB0YWtlIGFuIGV4dHJhIGFyZ3VtZW50LiAgKi8KLSAgUFRSIEdUWSgoc2tpcCAoIiIpKSkgYWxsb2NfYXJnOworICBQVFIgR1RZKChza2lwKSkgYWxsb2NfYXJnOwogICBodGFiX2FsbG9jX3dpdGhfYXJnIGFsbG9jX3dpdGhfYXJnX2Y7CiAgIGh0YWJfZnJlZV93aXRoX2FyZyBmcmVlX3dpdGhfYXJnX2Y7CiB9OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tcHcvQ2hhbmdlTG9nIGIvaW5jbHVkZS9tcHcvQ2hhbmdlTG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGJhZDg3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbXB3L0NoYW5nZUxvZworKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLVR1ZSBGZWIgMjcgMTI6MjM6MDQgMTk5NiAgUmF5bW9uZCBKb3UgIDxyam91QG1leGljYW4uY3lnbnVzLmNvbT4KLQotCSogbXB3LmggKEhBVkVfVlBSSU5URik6IEFkZCBhbmQgZGVmaW5lIHRvIGhhdmUgdGhlIHZhbHVlIDEuCi0KLUZyaSBEZWMgMjkgMTQ6NDA6NDYgMTk5NSAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgotCi0JKiBtcHcuaCAoSEFWRV9TVERMSUJfSCwgZXRjKTogRGVmaW5lIHRvIGhhdmUgdGhlIHZhbHVlIDEuCi0JKEhBVkVfRkNOVExfSCk6IERlZmluZS4KLQotTW9uIERlYyAxMSAxNTozOTowNiAxOTk1ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+Ci0KLQkqIG1wdy5oIChvcGVuLCBhY2Nlc3MpOiBEZWZpbmUgYXMgbXB3X29wZW4gYW5kIG1wd19hY2Nlc3MuCi0KLVRodSBOb3YgIDkgMTU6Mzg6MzcgMTk5NSAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgotCi0JKiBtcHcuaDogSW5jbHVkZSB1bml4LmggaWYgVVNFX01XX0hFQURFUlMsIG90aGVyd2lzZSBpbmNsdWRlCi0JdmFyaW91cyBvcmlnaW5hbCBNUFcgaW5jbHVkZSBmaWxlcyAoaW9jdGwuaCwgZXRjKS4KLQkoRUlPKTogRGVmaW5lIGlmIG5vdCBkZWZpbmVkLgotCSogc3lzL2lvY3RsLmg6IFJlbW92ZSwgbm90IG5lZWRlZC4KLQotV2VkIE9jdCAyNSAxMjozMDo0NCAxOTk1ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+Ci0KLQkqIG1wdy5oOiBEb24ndCBpbmNsdWRlIGVycm5vLmggb3IgaW9jdGwuaC4KLQkoRU5PRU5ULCBFQUNDRVMsIEVOT1NZUyk6IERlZmluZSBpZiBub3QgZGVmaW5lZC4KLQkoZmRvcGVuKTogRGVjbGFyZSBpZiBfX1NURENfXy4KLQkoUl9PSywgV19PSywgWF9PSyk6IERlZmluZSBpZiBub3QgZGVmaW5lZC4KLQotVHVlIFNlcCAyNiAxNDo1NzoyMSAxOTk1ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+Ci0KLQkqIG1wdy5oOiBOZXcgZmlsZSwgdW5pdmVyc2FsbHkgdXNlZnVsIE1QVyBob3N0IGRlZmluaXRpb25zLgotCU1hbnkgb2YgdGhlc2UgdXNlZCB0byBsaXZlIGluIGJmZC9ob3N0cy9tcHcuaC4KLQkqIGdycC5oOiBSZW1vdmUgUkNTIGNvbW1lbnQuCi0JKiBzeXMvaW9jdGwuaDogQWRkIGEgY29tbWVudCBsaW5lLgotCi1XZWQgRGVjIDE0IDEzOjEyOjE0IDE5OTQgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KLQotCSogc3Bpbi5oOiBOZXcgZmlsZSwgY3Vyc29yIHNwaW5uaW5nIGZvciBwcm9ncmVzcy4KLQotVGh1IEp1biAzMCAxNTozMjowNyAxOTk0ICBTdGFuIFNoZWJzICAoc2hlYnNAYW5kcm9zLmN5Z251cy5jb20pCi0KLQkqIGZjbnRsLmggKG9wZW4pOiBBbGxvdyBvcHRpb25hbCB0aGlyZCBhcmcuCi0KLVRodSBBcHIgMTQgMTI6NTQ6NTEgMTk5NCAgU3RhbiBTaGVicyAgKHNoZWJzQGFuZHJvcy5jeWdudXMuY29tKQotCi0JKiBkaXIuaCwgZGlyZW50LmgsIGZjbnRsLmgsIGdycC5oLCBwd2QuaCwgc3RhdC5oOiBOZXcgZmlsZXMuCi0JKiBzeXMvaW9jdGwuaDogTmV3IGZpbGUuCi0KLU1vbiBGZWIgMjEgMDk6NDQ6NDUgMTk5NCAgU3RhbiBTaGVicyAgKHNoZWJzQGFuZHJvcy5jeWdudXMuY29tKQotCi0JKiBzeXMvc3RhdC5oIChzdHJ1Y3Qgc3RhdCk6IE5ldyBmaWVsZCBzdF9yc2l6ZS4KLQkoU19JRk1ULCBldGMpOiBVc2UgZGlmZmVyZW50IGJpdCBwb3NpdGlvbnMuCi0JKGZzdGF0KTogQWRkIHBhcmFtZXRlciBuYW1lcyB0byBwcm90b3R5cGUuCi0KLU1vbiBKYW4gMzEgMTk6MzA6MTYgMTk5NCAgU3RhbiBTaGVicyAgKHNoZWJzQGFuZHJvcy5jeWdudXMuY29tKQotCi0JKiBSRUFETUU6IE5ldyBmaWxlLgotCSogdXRpbWUuaCwgdmFyYXJncy5oOiBOZXcgZmlsZXMsIHNpbXVsYXRlZCBQb3NpeC4KLQkqIHN5cy97ZmlsZSxwYXJhbSxyZXNvdXJjZSxzdGF0LHRpbWUsdHlwZXN9Lmg6IE5ldyBmaWxlcywgbW9yZQotCXNpbXVsYXRlZCBQb3NpeC4KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL21wdy9SRUFETUUgYi9pbmNsdWRlL21wdy9SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwZTkyZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9tcHcvUkVBRE1FCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGhpcyBpcyBhIGNvbGxlY3Rpb24gb2YgaW5jbHVkZSBmaWxlcyB0aGF0IGhlbHAgaW1pdGF0ZSBQb3NpeCBpbiBNUFcuCmRpZmYgLS1naXQgYS9pbmNsdWRlL21wdy9kaXIuaCBiL2luY2x1ZGUvbXB3L2Rpci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmNjZDJkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbXB3L2Rpci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLyogVGhlIDxkaXIuaD4gaGVhZGVyIGdpdmVzIHRoZSBsYXlvdXQgb2YgYSBkaXJlY3RvcnkuICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWZuZGVmIF9ESVJfSAotI2RlZmluZSBfRElSX0gKLQotI2lmbmRlZiBfVFlQRVNfSAkJLyogbm90IHF1aXRlIHJpZ2h0ICovCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLQotI2RlZmluZQlESVJCTEtTSVoJNTEyCS8qIHNpemUgb2YgZGlyZWN0b3J5IGJsb2NrICovCi0KLSNpZm5kZWYgRElSU0laCi0jZGVmaW5lCURJUlNJWgkxNAotI2VuZGlmCi0KLXN0cnVjdCBkaXJlY3QgewotICBpbm9fdCBkX2lubzsKLSAgY2hhciBkX25hbWVbRElSU0laXTsKLX07Ci0KLSNlbmRpZiAvKiBfRElSX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbXB3L2RpcmVudC5oIGIvaW5jbHVkZS9tcHcvZGlyZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MDAwYjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9tcHcvZGlyZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jaWZuZGVmIF9fZGlyZW50X2gKLSNkZWZpbmUgX19kaXJlbnRfaAotCi0jaW5jbHVkZSAic3lzL2Rpci5oIgotCi1zdHJ1Y3QgZGlyZW50IHsKLSAgbG9uZyBkX2lubzsJCQkvKiBpbm9kZSBudW1iZXIgb2YgZW50cnkgKi8KLSAgb2ZmX3QJZF9vZmY7CQkJLyogb2Zmc2V0IG9mIGRpc2sgZGlyZWN0b3J5IGVudHJ5ICovCi0gIHVuc2lnbmVkIHNob3J0IGRfcmVjbGVuOwkvKiBsZW5ndGggb2YgdGhpcyByZWNvcmQgKi8KLSAgY2hhciBkX25hbWVbMV07CQkvKiBuYW1lIG9mIGZpbGUgKi8KLX07Ci0KLS8qCi0jZGVmaW5lCURJUkVOVEJBU0VTSVpFIFwKLQkoKChzdHJ1Y3QgZGlyZW50ICopIDApLT5kX25hbWUgLSAoY2hhciAqKSAwKQotI2RlZmluZQlESVJFTlRTSVpFKG5hbWVsZW4pIFwKLQkoKERJUkVOVEJBU0VTSVpFICsgKG5hbWVsZW4pICsgTkJQVykgJiB+KE5CUFcgLSAxKSkKLSovCi0KLS8qIGZyb20gTWlwcyBwb3NpeC9kaXJlbnQuaCAqLwotCi0vKgotI3VuZGVmIHJld2luZGRpcgotKi8KLQotZXh0ZXJuIERJUiAqb3BlbmRpcigpOwotZXh0ZXJuIHN0cnVjdCBkaXJlbnQgKnJlYWRkaXIoKTsKLWV4dGVybiB2b2lkCQlyZXdpbmRkaXIoKTsKLWV4dGVybiBpbnQJCWNsb3NlZGlyKCk7Ci0KLSNlbmRpZiAvKiAhIF9fZGlyZW50X2ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbXB3L2ZjbnRsLmggYi9pbmNsdWRlL21wdy9mY250bC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDk5OWI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbXB3L2ZjbnRsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotLyoKLSAqIEZDbnRsLmggLS0gZmFjY2VzcygpLCBmY250bCgpLCBhbmQgb3BlbigpIG1vZGUgZmxhZ3MKLSAqCi0gKiBQb3J0aW9ucyBjb3B5cmlnaHQgQW1lcmljYW4gVGVsZXBob25lICYgVGVsZWdyYXBoCi0gKiBVc2VkIHdpdGggcGVybWlzc2lvbiwgQXBwbGUgQ29tcHV0ZXIgSW5jLiAoMTk4NSwxOTg4LDE5OTAsMTk5MikKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKi8KLQotI2lmbmRlZiBfX0ZDTlRMX18KLSNkZWZpbmUgX19GQ05UTF9fCi0KLSNpZm5kZWYgX19UWVBFU19fCi0jaW5jbHVkZSA8VHlwZXMuaD4KLSNlbmRpZgotCi0vKgotICoJRm9yIHVzZSBieSBsc2VlaygpOgotICovCi0KLSNpZm5kZWYgX19TVERJT19fCQkJLyogdGhlc2UgZGVmbnMgZXhhY3RseSBwYXJhbGxlZCBpbiBTdGRJTy5oIGZvciBmc2VlaygpICovCi0jZGVmaW5lIFNFRUtfQ1VSCTEKLSNkZWZpbmUgU0VFS19FTkQJMgotI2RlZmluZSBTRUVLX1NFVAkwCi0jZW5kaWYKLQotLyoKLSAqIGZhY2Nlc3MoKSBjb21tYW5kczsgZm9yIGdlbmVyYWwgdXNlCi0gKi8KLSAJCQkJCS8qICdkJyA9PiAiZGlyZWN0b3J5IiBvcHMgKi8KLSNkZWZpbmUgRl9ERUxFVEUJCSgoJ2QnPDw4KXwweDAxKQotI2RlZmluZSBGX1JFTkFNRQkJKCgnZCc8PDgpfDB4MDIpCi0KLS8qCi0gKiBtb3JlIGZhY2Nlc3MoKSBjb21tYW5kczsgZm9yIHVzZSBvbmx5IGJ5IE1QVyB0b29scwotICovCi0gCi0jZGVmaW5lIEZfT1BFTiAJCQkoKCdkJzw8OCl8MHgwMCkJCS8qIHJlc2VydmVkIGZvciBvcGVyYXRpbmcgc3lzdGVtIHVzZSAqLwotCQkJCQkvKiAnZScgPT4gImVkaXRvciIgb3BzICovCi0jZGVmaW5lIEZfR1RBQklORk8gCQkoKCdlJzw8OCl8MHgwMCkJCS8qIGdldCB0YWIgb2Zmc2V0IGZvciBmaWxlICovCQotI2RlZmluZSBGX1NUQUJJTkZPIAkJKCgnZSc8PDgpfDB4MDEpCQkvKiBzZXQgCSIJIgkJIgkiICAqLwotI2RlZmluZSBGX0dGT05USU5GTwkJKCgnZSc8PDgpfDB4MDIpCQkvKiBnZXQgZm9udCBudW1iZXIgYW5kIHNpemUgZm9yIGZpbGUgKi8KLSNkZWZpbmUgRl9TRk9OVElORk8JCSgoJ2UnPDw4KXwweDAzKQkJLyogc2V0IAkiCQkiCSIJIgkiCSIgCSAqLwotI2RlZmluZSBGX0dQUklOVFJFQwkJKCgnZSc8PDgpfDB4MDQpCQkvKiBnZXQgcHJpbnQgcmVjb3JkIGZvciBmaWxlICovCi0jZGVmaW5lIEZfU1BSSU5UUkVDCQkoKCdlJzw8OCl8MHgwNSkJCS8qIHNldCAJIgkJIgkiCSIgCSAqLwotI2RlZmluZSBGX0dTRUxJTkZPIAkJKCgnZSc8PDgpfDB4MDYpCQkvKiBnZXQgc2VsZWN0aW9uIGluZm9ybWF0aW9uIGZvciBmaWxlICovCi0jZGVmaW5lIEZfU1NFTElORk8gCQkoKCdlJzw8OCl8MHgwNykJCS8qIHNldAkJIgkJIgkJIgkJIiAqLwotI2RlZmluZSBGX0dXSU5JTkZPIAkJKCgnZSc8PDgpfDB4MDgpCQkvKiBnZXQgY3VycmVudCB3aW5kb3cgcG9zaXRpb24gKi8KLSNkZWZpbmUgRl9TV0lOSU5GTyAJCSgoJ2UnPDw4KXwweDA5KQkJLyogc2V0CSIJCSIJCSIgCSAgICovCi0jZGVmaW5lIEZfR1NDUk9MTElORk8JKCgnZSc8PDgpfDB4MEEpCQkvKiBnZXQgc2Nyb2xsIGluZm9ybWF0aW9uICovCi0jZGVmaW5lIEZfU1NDUk9MTElORk8JKCgnZSc8PDgpfDB4MEIpCQkvKiBzZXQgICAgIiAgIAkJIiAgCSAgKi8KLSNkZWZpbmUgRl9HTUFSS0VSCQkoKCdlJzw8OCl8MHgwRCkJCS8qIEdldCBNYXJrZXIgKi8KLSNkZWZpbmUgRl9TTUFSS0VSCQkoKCdlJzw8OCl8MHgwQykJCS8qIFNldCAgICIgCSAgKi8KLSNkZWZpbmUgRl9HU0FWRU9OQ0xPU0UJKCgnZSc8PDgpfDB4MEYpCQkvKiBHZXQgU2F2ZSBvbiBjbG9zZSAqLwotI2RlZmluZSBGX1NTQVZFT05DTE9TRQkoKCdlJzw8OCl8MHgwRSkJCS8qIFNldCAgICIJICIJICIgCSAqLwotCi0vKgotICoJYXJndW1lbnQgc3RydWN0dXJlcyB1c2VkIGJ5IHZhcmlvdXMgZmFjY2VzcygpIGNvbW1hbmRzCi0gKi8KLSAKLXN0cnVjdCBNYXJrRWxlbWVudCB7Ci0JaW50CQkJCXN0YXJ0OwkJCS8qIHN0YXJ0IHBvc2l0aW9uIG9mIG1hcmsgKi8KLQlpbnQJCQkJZW5kOwkJCS8qIGVuZCBwb3NpdGlvbiAqLwotCXVuc2lnbmVkIGNoYXIJY2hhckNvdW50OwkJLyogbnVtYmVyIG9mIGNoYXJzIGluIG1hcmsgbmFtZSAqLwotCWNoYXIJCQluYW1lWzY0XTsJCS8qIG1hcmsgbmFtZSAqLwotfSA7CQkJCQkJCQkJLyogbm90ZTogbWFya2VyIG5hbWVzIG1heSBiZSB1cCB0byA2NCBjaGFyYWN0ZXJzIGxvbmcgKi8KLQotI2lmbmRlZiBfX2NwbHVzcGx1cwotdHlwZWRlZiBzdHJ1Y3QgTWFya0VsZW1lbnQgTWFya0VsZW1lbnQ7Ci0jZW5kaWYKLQotc3RydWN0IFNlbGVjdGlvblJlY29yZCB7Ci0JbG9uZwlzdGFydGluZ1BvczsKLQlsb25nCWVuZGluZ1BvczsKLQlsb25nCWRpc3BsYXlUb3A7Ci19OwotCi0jaWZuZGVmIF9fY3BsdXNwbHVzCi10eXBlZGVmIHN0cnVjdCBTZWxlY3Rpb25SZWNvcmQgU2VsZWN0aW9uUmVjb3JkOwotI2VuZGlmCi0KLQotLyoKLSAqIE1vZGUgdmFsdWVzIGFjY2Vzc2libGUgdG8gb3BlbigpCi0gKi8KLSNkZWZpbmUgT19SRE9OTFkJCSAwIAkJLyogQml0cyAwIGFuZCAxIGFyZSB1c2VkIGludGVybmFsbHkgKi8KLSNkZWZpbmUgT19XUk9OTFkJCSAxIAkJLyogVmFsdWVzIDAuLjIgYXJlIGhpc3RvcmljYWwgKi8KLSNkZWZpbmUgT19SRFdSIAkJCSAyCQkvKiBOT1RFOiBpdCBnb2VzIDAsIDEsIDIsICohKiA4LCAxNiwgMzIsIC4uLiAqLwotI2RlZmluZSBPX0FQUEVORAkoMTw8IDMpCQkvKiBhcHBlbmQgKHdyaXRlcyBndWFyYW50ZWVkIGF0IHRoZSBlbmQpICovCi0jZGVmaW5lIE9fUlNSQyAJCSgxPDwgNCkJCS8qIE9wZW4gdGhlIHJlc291cmNlIGZvcmsgKi8KLSNkZWZpbmUgT19BTElBUwkJKDE8PCA1KQkJLyogT3BlbiBhbGlhcyBmaWxlICovCi0jZGVmaW5lIE9fQ1JFQVQJCSgxPDwgOCkJCS8qIE9wZW4gd2l0aCBmaWxlIGNyZWF0ZSAqLwotI2RlZmluZSBPX1RSVU5DCQkoMTw8IDkpCQkvKiBPcGVuIHdpdGggdHJ1bmNhdGlvbiAqLwotI2RlZmluZSBPX0VYQ0wgCQkoMTw8MTApIAkvKiB3LyBPX0NSRUFUOiAgRXhjbHVzaXZlICJjcmVhdGUtb25seSIgKi8KLSNkZWZpbmUgT19CSU5BUlkJKDE8PDExKSAJLyogT3BlbiBhcyBhIGJpbmFyeSBzdHJlYW0gKi8KLSNkZWZpbmUgT19OUkVTT0xWRQkoMTw8MTQpCQkvKiBEb24ndCByZXNvbHZlIGFueSBhbGlhc2VzICovCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoKLSAqCQlmdW5jdGlvbiBwcm90b3R5cGVzCi0gKi8KLWludCAgY2xvc2UoaW50KTsKLWludCAgY3JlYXQoY29uc3QgY2hhciopOwotaW50CSBkdXAoaW50IGZpbGVkZXMpOwkJLyogT0JTT0xFVEU6IGZjbnRsKGZpbGVkZXMsIEZfRFVQRkQsIDApIGlzIHByZWZlcnJlZCAqLwotaW50CSBmYWNjZXNzKGNoYXIqLCB1bnNpZ25lZCBpbnQsIGxvbmcqKTsKLWludCAgZmNudGwoaW50LCB1bnNpZ25lZCBpbnQsIGludCk7Ci1sb25nIGxzZWVrKGludCwgbG9uZywgaW50KTsKLWludCAgb3Blbihjb25zdCBjaGFyKiwgaW50LCAuLi4pOwotaW50ICByZWFkKGludCwgY2hhciosIHVuc2lnbmVkKTsKLWludCAgdW5saW5rKGNoYXIqKTsKLWludCAgd3JpdGUoaW50LCBjb25zdCBjaGFyKiwgdW5zaWduZWQpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0vKgotICogZmNudGwoKSBjb21tYW5kcwotICovCi0jZGVmaW5lIEZfRFVQRkQgMAkgICAvKiBEdXBsaWNhdGUgZmlsZXMgKGZpbGUgZGVzY3JpcHRvcikgKi8KLQotI2VuZGlmIF9fRkNOVExfXwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tcHcvZ3JwLmggYi9pbmNsdWRlL21wdy9ncnAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFmMmM2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL21wdy9ncnAuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAic3lzL3R5cGVzLmgiCi0KLXN0cnVjdCBncm91cCB7Ci0gIGNoYXIgKmdyX25hbWU7Ci0gIGdpZF90IGdyX2dpZDsKLSAgY2hhciAqZ3JfcGFzc3dkOwotICBjaGFyICoqZ3JfbWVtOwotfTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbXB3L21wdy5oIGIvaW5jbHVkZS9tcHcvbXB3LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NzAyZTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9tcHcvbXB3LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotLyogTWFjIE1QVyBob3N0LXNwZWNpZmljIGRlZmluaXRpb25zLiAqLwotCi0jaWZuZGVmCV9fSU5DTFVERV9NUFdfSAotI2RlZmluZSBfX0lOQ0xVREVfTVBXX0gKLQotI2lmbmRlZiBNUFcKLSNkZWZpbmUgTVBXCi0jZW5kaWYKLQotLyogTVBXIEMgaXMgYmFzaWNhbGx5IEFOU0ksIGJ1dCBkb2Vzbid0IGFjdHVhbGx5IGVuYWJsZSBfX1NURENfXywKLSAgIG5vciBkb2VzIGl0IGFsbG93IF9fU1REQ19fIHRvIGJlICNkZWZpbmVkLiAqLwotCi0jaWZuZGVmIEFMTU9TVF9TVERDCi0jZGVmaW5lIEFMTU9TVF9TVERDCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8Y3R5cGUuaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotCi0jZGVmaW5lIEhBVkVfVElNRV9UX0lOX1RJTUVfSCAxCi0KLSNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCi0KLSNkZWZpbmUgSEFWRV9FUlJOT19IIDEKLQotI2RlZmluZSBIQVZFX1NURERFRl9IIDEKLQotI2RlZmluZSBIQVZFX1NUUklOR19IIDEKLQotI2RlZmluZSBIQVZFX1NUREFSR19IIDEKLQotI2RlZmluZSBIQVZFX1ZQUklOVEYgMQotCi0jaWZkZWYgVVNFX01XX0hFQURFUlMKLQotI2luY2x1ZGUgPHVuaXguaD4KLQotI2Vsc2UKLQotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8aW9jdGwuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotCi0jZGVmaW5lIEhBVkVfRkNOVExfSCAxCi0KLSNpZm5kZWYJT19BQ0NNT0RFCi0jZGVmaW5lIE9fQUNDTU9ERSAoT19SRE9OTFkgfCBPX1dST05MWSB8IE9fUkRXUikKLSNlbmRpZgotCi0jaWZuZGVmIGZpbGVubwotI2RlZmluZSBmaWxlbm8oZnApICgoZnApLT5fZmlsZSkKLSNlbmRpZgotCi0vKiBzdGRpby5oIGRvZXMgbm90IGRlZmluZSB0aGlzIGlmIF9fU1REQ19fLCBzbyBkZWZpbmUgaGVyZS4gKi8KLQotI2lmZGVmIF9fU1REQ19fCi1GSUxFICpmZG9wZW4oaW50IGZpbGRlcywgY29uc3QgY2hhciAqbW9kZSk7Ci0jZW5kaWYKLQotI2VuZGlmIC8qIFVTRV9NV19IRUFERVJTICovCi0KLS8qIEFkZCBlcnNhdHogZGVmaW5pdGlvbnMsIGZvciBzeXN0ZW1zIHRoYXQgbGFjayB0aGVtLiAgKi8KLQotI2lmbmRlZiBFSU8KLSNkZWZpbmUgRUlPIDk2Ci0jZW5kaWYKLSNpZm5kZWYgRU5PRU5UCi0jZGVmaW5lIEVOT0VOVCA5NwotI2VuZGlmCi0jaWZuZGVmIEVBQ0NFUwotI2RlZmluZSBFQUNDRVMgOTgKLSNlbmRpZgotI2lmbmRlZiBFTk9TWVMKLSNkZWZpbmUgRU5PU1lTIDk5Ci0jZW5kaWYKLQotI2lmbmRlZiBSX09LCi0jZGVmaW5lIFJfT0sgNAotI2RlZmluZSBXX09LIDIKLSNkZWZpbmUgWF9PSyAxCi0jZW5kaWYKLQotLyogQmluYXJ5IGZpbGVzIGhhdmUgZGlmZmVyZW50IGNoYXJhY3RlcmlzdGljczsgZm9yIGluc3RhbmNlLCBubyBjci9ubAotICAgdHJhbnNsYXRpb24uICovCi0KLSNkZWZpbmUgVVNFX0JJTkFSWV9GT1BFTgotCi0jaW5jbHVkZSA8c3Bpbi5oPgotCi0jaWZkZWYgTVBXX0MKLSN1bmRlZiAgX19QVFJfVE9fSU5UCi0jZGVmaW5lIF9fUFRSX1RPX0lOVChQKSAoKGludCkoUCkpCi0jdW5kZWYgX19JTlRfVE9fUFRSCi0jZGVmaW5lIF9fSU5UX1RPX1BUUihQKSAoKGNoYXIgKikoUCkpCi0jZW5kaWYgLyogTVBXX0MgKi8KLQotI2RlZmluZSBOT19GQ05UTAotCi1pbnQgZnN0YXQgKCk7Ci0KLUZJTEUgKm1wd19mb3BlbiAoKTsKLWludCBtcHdfZnNlZWsgKCk7Ci1pbnQgbXB3X2ZyZWFkICgpOwotaW50IG1wd19md3JpdGUgKCk7Ci1pbnQgbXB3X2FjY2VzcyAoKTsKLWludCBtcHdfb3BlbiAoKTsKLWludCBtcHdfY3JlYXQgKCk7Ci12b2lkIG1wd19hYm9ydCAodm9pZCk7Ci0KLS8qIE1hcCB0aGVzZSBzdGFuZGFyZCBmdW5jdGlvbnMgdG8gaW1wcm92ZWQgdmVyc2lvbnMgaW4gbGliaWJlcnR5LiAqLwotCi0jZGVmaW5lIGZvcGVuIG1wd19mb3BlbgotI2RlZmluZSBmc2VlayBtcHdfZnNlZWsKLSNkZWZpbmUgZnJlYWQgbXB3X2ZyZWFkCi0jZGVmaW5lIGZ3cml0ZSBtcHdfZndyaXRlCi0jZGVmaW5lIG9wZW4gbXB3X29wZW4KLSNkZWZpbmUgYWNjZXNzIG1wd19hY2Nlc3MKLSNkZWZpbmUgY3JlYXQgbXB3X2NyZWF0Ci0jZGVmaW5lIGFib3J0IG1wd19hYm9ydAotCi0jZGVmaW5lIFBPU0lYX1VUSU1FCi0KLSNkZWZpbmUgTE9TSU5HX1RPVEFMTFkKLQotLyogRGVmaW5lIHRoaXMgc28gdGhhdCBmaWxlcyB3aWxsIGJlIGNsb3NlZCBiZWZvcmUgYmVpbmcgdW5saW5rZWQuICovCi0KLSNkZWZpbmUgQ0xPU0VfQkVGT1JFX1VOTElOSwotCi0jZW5kaWYgLyogX19JTkNMVURFX01QV19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL21wdy9wd2QuaCBiL2luY2x1ZGUvbXB3L3B3ZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDRmYjcwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbXB3L3B3ZC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotI2lmbmRlZiBfX3B3ZF9oCi0jZGVmaW5lIF9fcHdkX2gKLQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCi1zdHJ1Y3QgcGFzc3dkIHsKLSAgY2hhciAqcHdfbmFtZTsKLSAgdWlkX3QgcHdfdWlkOwotICBnaWRfdCBwd19naWQ7Ci0gIGNoYXIgKnB3X2RpcjsKLSAgY2hhciAqcHdfc2hlbGw7Ci0gIGNoYXIgKnB3X3Bhc3N3ZDsKLX07Ci0KLSNlbmRpZiAvKiAhIF9fcHdkX2ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbXB3L3NwaW4uaCBiL2luY2x1ZGUvbXB3L3NwaW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc0YjAwYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL21wdy9zcGluLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKiBQcm9ncmVzcyBtYWNyb3MgdGhhdCB1c2UgU3BpbkN1cnNvciBpbiBNUFcuCi0gICBDb3B5cmlnaHQgMTk5NCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLQotVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci10aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi1idXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi1Gb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLQotI2lmbmRlZiBfU1BJTl9ICi0jZGVmaW5lIF9TUElOX0gKLQotLyogRm9yIE1QVywgcHJvZ3Jlc3MgbWFjcm9zIGp1c3QgbmVlZCB0byAic3BpbiB0aGUgY3Vyc29yIiBmcmVxdWVudGx5LAotICAgcHJlZmVyYWJseSBzZXZlcmFsIHRpbWVzIHBlciBzZWNvbmQgb24gYSA2OEsgTWFjLiAgKi8KLQotLyogSW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIHdlJ3JlIG1lZXRpbmcgdGhlIGdvYWwsIGRlZmluZSB0aGlzIG1hY3JvCi0gICBhbmQgaW5mb3JtYXRpb24gYWJvdXQgZnJlcXVlbmN5IG9mIHNwaW5uaW5nIHdpbGwgYmUgY29sbGVjdGVkIGFuZAotICAgZGlzcGxheWVkLiAgKi8KLQotI2RlZmluZSBTUElOX01FQVNVUkVNRU5UCi0KLSNpbmNsdWRlIDxDdXJzb3JDdGwuaD4KLQotLyogUHJvZ3JhbXMgdXNlIHRoaXMgbWFjcm8gdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIGEgbGVuZ3RoeQotICAgYWN0aXZpdHkuICBTVFIgaWRlbnRpZmllcyB0aGUgcGFydGljdWxhciBhY3Rpdml0eSwgd2hpbGUgTgotICAgaW5kaWNhdGVzIHRoZSBleHBlY3RlZCBkdXJhdGlvbiwgaW4gdW5zcGVjaWZpZWQgdW5pdHMuICBJZiBOIGlzCi0gICB6ZXJvLCB0aGVuIHRoZSBleHBlY3RlZCB0aW1lIHRvIGNvbXBsZXRpb24gaXMgdW5rbm93bi4gICovCi0KLSN1bmRlZiBTVEFSVF9QUk9HUkVTUwotI2RlZmluZSBTVEFSVF9QUk9HUkVTUyhTVFIsTikgbXB3X3N0YXJ0X3Byb2dyZXNzIChTVFIsIE4sIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0KLS8qIFByb2dyYW1zIHVzZSB0aGlzIG1hY3JvIHRvIGluZGljYXRlIHRoYXQgcHJvZ3Jlc3MgaGFzIGJlZW4gbWFkZSBvbiBhCi0gICBsZW5ndGh5IGFjdGl2aXR5LiAgKi8KLQotI3VuZGVmIFBST0dSRVNTCi0jaWZkZWYgU1BJTl9NRUFTVVJFTUVOVAotI2RlZmluZSBQUk9HUkVTUyhYKSBtcHdfcHJvZ3Jlc3NfbWVhc3VyZWQgKFgsIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0jZWxzZQotI2RlZmluZSBQUk9HUkVTUyhYKSBtcHdfcHJvZ3Jlc3MgKFgpOwotI2VuZGlmIAotCi0vKiBQcm9ncmFtcyB1c2UgdGhpcyBtYWNybyB0byBpbmRpY2F0ZSB0aGUgZW5kIG9mIGEgbGVuZ3RoeSBhY3Rpdml0eS4KLSAgIFNUUiBtdXN0IG1hdGNoIGEgU1RSIHBhc3NlZCB0byBTVEFSVF9QUk9HUkVTUyBwcmV2aW91c2x5LiAgKi8KLQotI3VuZGVmIEVORF9QUk9HUkVTUwotI2RlZmluZSBFTkRfUFJPR1JFU1MoU1RSKSBtcHdfZW5kX3Byb2dyZXNzIChTVFIsIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0KLWV4dGVybiB2b2lkIG1wd19zdGFydF9wcm9ncmVzcyAoY2hhciAqLCBpbnQsIGNoYXIgKiwgaW50KTsKLQotZXh0ZXJuIHZvaWQgbXB3X3Byb2dyZXNzIChpbnQpOwotCi1leHRlcm4gdm9pZCBtcHdfcHJvZ3Jlc3NfbWVhc3VyZWQgKGludCwgY2hhciAqLCBpbnQpOwotCi1leHRlcm4gdm9pZCBtcHdfZW5kX3Byb2dyZXNzIChjaGFyICosIGNoYXIgKiwgaW50KTsKLQotI2VuZGlmIC8qIF9TUElOX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbXB3L3N0YXQuaCBiL2luY2x1ZGUvbXB3L3N0YXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU3YjhkNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL21wdy9zdGF0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKiBUaGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBkZWZpbmVzIGEgc3RydWN0IHRoYXQgaXMgdXNlZCBpbiB0aGUgc3RhdCgpIGFuZAotICogZnN0YXQgZnVuY3Rpb25zLiAgVGhlIGluZm9ybWF0aW9uIGluIHRoaXMgc3RydWN0IGNvbWVzIGZyb20gdGhlIGktbm9kZSBvZgotICogc29tZSBmaWxlLiAgVGhlc2UgY2FsbHMgYXJlIHRoZSBvbmx5IGFwcHJvdmVkIHdheSB0byBpbnNwZWN0IGktbm9kZXMuCi0gKi8KLQotI2lmbmRlZiBfU1RBVF9ICi0jZGVmaW5lIF9TVEFUX0gKLQotI2lmbmRlZiBfVFlQRVNfSAkJLyogbm90IHF1aXRlIHJpZ2h0ICovCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLQotc3RydWN0IHN0YXQgewotICBkZXZfdCBzdF9kZXY7CQkJLyogbWFqb3IvbWlub3IgZGV2aWNlIG51bWJlciAqLwotICBpbm9fdCBzdF9pbm87CQkJLyogaS1ub2RlIG51bWJlciAqLwotICBtb2RlX3Qgc3RfbW9kZTsJCS8qIGZpbGUgbW9kZSwgcHJvdGVjdGlvbiBiaXRzLCBldGMuICovCi0gIHNob3J0IGludCBzdF9ubGluazsJCS8qICMgbGlua3M7IFRFTVBPUkFSWSBIQUNLOiBzaG91bGQgYmUgbmxpbmtfdCovCi0gIHVpZF90IHN0X3VpZDsJCQkvKiB1aWQgb2YgdGhlIGZpbGUncyBvd25lciAqLwotICBzaG9ydCBpbnQgc3RfZ2lkOwkJLyogZ2lkOyBURU1QT1JBUlkgSEFDSzogc2hvdWxkIGJlIGdpZF90ICovCi0gIGRldl90IHN0X3JkZXY7Ci0gIG9mZl90IHN0X3NpemU7CQkvKiBmaWxlIHNpemUgKi8KLSAgdGltZV90IHN0X2F0aW1lOwkJLyogdGltZSBvZiBsYXN0IGFjY2VzcyAqLwotICB0aW1lX3Qgc3RfbXRpbWU7CQkvKiB0aW1lIG9mIGxhc3QgZGF0YSBtb2RpZmljYXRpb24gKi8KLSAgdGltZV90IHN0X2N0aW1lOwkJLyogdGltZSBvZiBsYXN0IGZpbGUgc3RhdHVzIGNoYW5nZSAqLwotfTsKLQotLyogVHJhZGl0aW9uYWwgbWFzayBkZWZpbml0aW9ucyBmb3Igc3RfbW9kZS4gKi8KLSNkZWZpbmUgU19JRk1UICAwMTcwMDAwCQkvKiB0eXBlIG9mIGZpbGUgKi8KLSNkZWZpbmUgU19JRlJFRyAwMTAwMDAwCQkvKiByZWd1bGFyICovCi0jZGVmaW5lIFNfSUZCTEsgMDA2MDAwMAkJLyogYmxvY2sgc3BlY2lhbCAqLwotI2RlZmluZSBTX0lGRElSIDAwNDAwMDAgIAkvKiBkaXJlY3RvcnkgKi8KLSNkZWZpbmUgU19JRkNIUiAwMDIwMDAwCQkvKiBjaGFyYWN0ZXIgc3BlY2lhbCAqLwotI2RlZmluZSBTX0lGSUZPIDAwMTAwMDAJCS8qIHRoaXMgaXMgYSBGSUZPICovCi0jZGVmaW5lIFNfSVNVSUQgMDAwNDAwMAkJLyogc2V0IHVzZXIgaWQgb24gZXhlY3V0aW9uICovCi0jZGVmaW5lIFNfSVNHSUQgMDAwMjAwMAkJLyogc2V0IGdyb3VwIGlkIG9uIGV4ZWN1dGlvbiAqLwotCQkJCS8qIG5leHQgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KLSNkZWZpbmUgU19JU1ZUWCAgIDAxMDAwCQkvKiBzYXZlIHN3YXBwZWQgdGV4dCBldmVuIGFmdGVyIHVzZSAqLwotCi0vKiBQT1NJWCBtYXNrcyBmb3Igc3RfbW9kZS4gKi8KLSNkZWZpbmUgU19JUldYVSAgIDAwNzAwCQkvKiBvd25lcjogIHJ3eC0tLS0tLSAqLwotI2RlZmluZSBTX0lSVVNSICAgMDA0MDAJCS8qIG93bmVyOiAgci0tLS0tLS0tICovCi0jZGVmaW5lIFNfSVdVU1IgICAwMDIwMAkJLyogb3duZXI6ICAtdy0tLS0tLS0gKi8KLSNkZWZpbmUgU19JWFVTUiAgIDAwMTAwCQkvKiBvd25lcjogIC0teC0tLS0tLSAqLwotCi0jZGVmaW5lIFNfSVJXWEcgICAwMDA3MAkJLyogZ3JvdXA6ICAtLS1yd3gtLS0gKi8KLSNkZWZpbmUgU19JUkdSUCAgIDAwMDQwCQkvKiBncm91cDogIC0tLXItLS0tLSAqLwotI2RlZmluZSBTX0lXR1JQICAgMDAwMjAJCS8qIGdyb3VwOiAgLS0tLXctLS0tICovCi0jZGVmaW5lIFNfSVhHUlAgICAwMDAxMAkJLyogZ3JvdXA6ICAtLS0tLXgtLS0gKi8KLQotI2RlZmluZSBTX0lSV1hPICAgMDAwMDcJCS8qIG90aGVyczogLS0tLS0tcnd4ICovCi0jZGVmaW5lIFNfSVJPVEggICAwMDAwNAkJLyogb3RoZXJzOiAtLS0tLS1yLS0gKi8gCi0jZGVmaW5lIFNfSVdPVEggICAwMDAwMgkJLyogb3RoZXJzOiAtLS0tLS0tdy0gKi8KLSNkZWZpbmUgU19JWE9USCAgIDAwMDAxCQkvKiBvdGhlcnM6IC0tLS0tLS0teCAqLwotCi0vKiBUaGUgZm9sbG93aW5nIG1hY3JvcyB0ZXN0IHN0X21vZGUgKGZyb20gUE9TSVggU2VjLiA1LjYuMS4xLiAqLwotI2RlZmluZSBTX0lTUkVHKG0pCSgobSAmIFNfSUZNVCkgPT0gU19JRlJFRykJLyogaXMgYSByZWcgZmlsZSAqLwotI2RlZmluZSBTX0lTRElSKG0pCSgobSAmIFNfSUZNVCkgPT0gU19JRkRJUikJLyogaXMgYSBkaXJlY3RvcnkgKi8KLSNkZWZpbmUgU19JU0NIUihtKQkoKG0gJiBTX0lGTVQpID09IFNfSUZDSFIpCS8qIGlzIGEgY2hhciBzcGVjICovCi0jZGVmaW5lIFNfSVNCTEsobSkJKChtICYgU19JRk1UKSA9PSBTX0lGQkxLKQkvKiBpcyBhIGJsb2NrIHNwZWMgKi8KLSNkZWZpbmUgU19JU0ZJRk8obSkJKChtICYgU19JRk1UKSA9PSBTX0lGSUZPKQkvKiBpcyBhIHBpcGUvRklGTyAqLwotCi0KLS8qIEZ1bmN0aW9uIFByb3RvdHlwZXMuICovCi0jaWZuZGVmIF9BTlNJX0gKLSNpbmNsdWRlIDxhbnNpLmg+Ci0jZW5kaWYKLQotX1BST1RPVFlQRSggaW50IGNobW9kLCAoY29uc3QgY2hhciAqX3BhdGgsIGludCBfbW9kZSkJCQkpOwotX1BST1RPVFlQRSggaW50IGZzdGF0LCAoaW50IF9maWxkZXMsIHN0cnVjdCBzdGF0ICpfYnVmKQkJCSk7Ci1fUFJPVE9UWVBFKCBpbnQgbWtkaXIsIChjb25zdCBjaGFyICpfcGF0aCwgaW50IF9tb2RlKQkJCSk7Ci1fUFJPVE9UWVBFKCBpbnQgbWtmaWZvLCAoY29uc3QgY2hhciAqX3BhdGgsIGludCBfbW9kZSkJCQkpOwotX1BST1RPVFlQRSggaW50IHN0YXQgLCAoY29uc3QgY2hhciAqX3BhdGgsIHN0cnVjdCBzdGF0ICpfYnVmKQkJKTsKLV9QUk9UT1RZUEUoIG1vZGVfdCB1bWFzaywgKGludCBfY21hc2spCQkJCQkpOwotCi0jZW5kaWYgLyogX1NUQVRfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tcHcvc3lzL2ZpbGUuaCBiL2luY2x1ZGUvbXB3L3N5cy9maWxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYThjMTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9tcHcvc3lzL2ZpbGUuaAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLS8qIGVtcHR5ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL21wdy9zeXMvcGFyYW0uaCBiL2luY2x1ZGUvbXB3L3N5cy9wYXJhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGE4YzE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbXB3L3N5cy9wYXJhbS5oCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotLyogZW1wdHkgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbXB3L3N5cy9yZXNvdXJjZS5oIGIvaW5jbHVkZS9tcHcvc3lzL3Jlc291cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzOTQzOWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9tcHcvc3lzL3Jlc291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLSNpZm5kZWYgX19TWVNfUkVTT1VSQ0VfSF9fCi0jZGVmaW5lIF9fU1lTX1JFU09VUkNFX0hfXwotCi1zdHJ1Y3QgcnVzYWdlIHsKLSAgc3RydWN0IHRpbWV2YWwgcnVfdXRpbWU7Ci0gIHN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwotfTsKLQotI2VuZGlmIC8qIF9fU1lTX1JFU09VUkNFX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tcHcvc3lzL3N0YXQuaCBiL2luY2x1ZGUvbXB3L3N5cy9zdGF0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NWM3MmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9tcHcvc3lzL3N0YXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qIEltaXRhdGlvbiBzeXMvc3RhdC5oLiAqLwotCi0jaWZuZGVmIF9fU1lTX1NUQVRfSF9fCi0jZGVmaW5lIF9fU1lTX1NUQVRfSF9fCi0KLSNpbmNsdWRlICA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSAgPHRpbWUuaD4KLQotc3RydWN0IHN0YXQgewotICBkZXZfdCAgIHN0X2RldjsKLSAgaW5vX3QgICBzdF9pbm87Ci0gIG1vZGVfdCAgc3RfbW9kZTsKLSAgc2hvcnQgICBzdF9ubGluazsKLSAgdWlkX3QgICBzdF91aWQ7Ci0gIGdpZF90ICAgc3RfZ2lkOwotICBkZXZfdCAgIHN0X3JkZXY7Ci0gIG9mZl90ICAgc3Rfc2l6ZTsKLSAgb2ZmX3QgICBzdF9yc2l6ZTsKLSAgdGltZV90ICBzdF9hdGltZTsKLSAgaW50ICAgICBzdF9zcGFyZTE7Ci0gIHRpbWVfdCAgc3RfbXRpbWU7Ci0gIGludCAgICAgc3Rfc3BhcmUyOwotICB0aW1lX3QgIHN0X2N0aW1lOwotICBpbnQgICAgIHN0X3NwYXJlMzsKLSAgbG9uZyAgICBzdF9ibGtzaXplOwotICBsb25nICAgIHN0X2Jsb2NrczsKLSAgbG9uZyAgICBzdF9zcGFyZTRbMl07Ci19OwotCi0jZGVmaW5lIFNfSUZNVAkwMTcwMDAwTAotI2RlZmluZSBTX0lGRElSCTAwNDAwMDBMCi0jZGVmaW5lIFNfSUZSRUcgMDEwMDAwMEwKLSNkZWZpbmUgU19JUkVBRCAgICAwNDAwCi0jZGVmaW5lIFNfSVdSSVRFICAgMDIwMAotI2RlZmluZSBTX0lFWEVDICAgIDAxMDAKLQotI2RlZmluZSBTX0lGSUZPIDAxMDAwMCAgLyogRklGTyBzcGVjaWFsICovCi0jZGVmaW5lIFNfSUZDSFIgMDIwMDAwICAvKiBjaGFyYWN0ZXIgc3BlY2lhbCAqLwotI2RlZmluZSBTX0lGQkxLIDAzMDAwMCAgLyogYmxvY2sgc3BlY2lhbCAqLwotCi1pbnQgc3RhdCAoY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKmJ1Zik7Ci1pbnQgZnN0YXQgKGludCBmZCwgc3RydWN0IHN0YXQgKmJ1Zik7Ci0KLSNlbmRpZiAvKiBfX1NZU19TVEFUX0hfX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbXB3L3N5cy90aW1lLmggYi9pbmNsdWRlL21wdy9zeXMvdGltZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWU0ODUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbXB3L3N5cy90aW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0vKiBJbWl0YXRpb24gc3lzL3RpbWUuaC4gKi8KLQotI2lmbmRlZiBfX1NZU19USU1FX0hfXwotI2RlZmluZSBfX1NZU19USU1FX0hfXwotCi0jaW5jbHVkZSA8dGltZS5oPgotCi1zdHJ1Y3QgdGltZXZhbCB7Ci0gIGxvbmcgdHZfc2VjOwotICBsb25nIHR2X3VzZWM7Ci19OwotCi0jZW5kaWYgLyogX19TWVNfVElNRV9IX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbXB3L3N5cy90eXBlcy5oIGIvaW5jbHVkZS9tcHcvc3lzL3R5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZDljOWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9tcHcvc3lzL3R5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0vKiBJbWl0YXRpb24gc3lzL3R5cGVzLmguICovCi0KLSNpZm5kZWYgX19TWVNfVFlQRVNfSF9fCi0jZGVmaW5lIF9fU1lTX1RZUEVTX0hfXwotCi0jaW5jbHVkZSA8VHlwZXMuaD4KLQotdHlwZWRlZiBzaG9ydCBkZXZfdDsKLXR5cGVkZWYgc2hvcnQgaW5vX3Q7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IG1vZGVfdDsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWlkX3Q7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IGdpZF90OwotdHlwZWRlZiBsb25nIG9mZl90OwotCi0jZW5kaWYgLyogX19TWVNfVFlQRVNfSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL21wdy91dGltZS5oIGIvaW5jbHVkZS9tcHcvdXRpbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiZjY2ZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9tcHcvdXRpbWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi1zdHJ1Y3QgdXRpbWJ1ZiB7Ci0gIHRpbWVfdCBhY3RpbWU7Ci0gIHRpbWVfdCBtb2R0aW1lOwotfTsKLQotaW50IHV0aW1lIChjaGFyICosIHN0cnVjdCB1dGltYnVmICopOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tcHcvdmFyYXJncy5oIGIvaW5jbHVkZS9tcHcvdmFyYXJncy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2I5ZTQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbXB3L3ZhcmFyZ3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotLyogdmFyYXJncy5oLiAqLwotI2lmbmRlZiBfX3ZhX2xpc3RfXwotI2RlZmluZSBfX3ZhX2xpc3RfXwotdHlwZWRlZiBjaGFyICp2YV9saXN0OwotI2VuZGlmCi0jZGVmaW5lIHZhX2RjbCBpbnQgdmFfYWxpc3Q7Ci0jZGVmaW5lIHZhX3N0YXJ0KGxpc3QpIGxpc3QgPSAoY2hhciAqKSAmdmFfYWxpc3QKLSNkZWZpbmUgdmFfZW5kKGxpc3QpCi0jZGVmaW5lIHZhX2FyZyhsaXN0LG1vZGUpICgobW9kZSAqKShsaXN0ICs9IHNpemVvZihtb2RlKSkpWy0xXQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGNvZGUvQ2hhbmdlTG9nIGIvaW5jbHVkZS9vcGNvZGUvQ2hhbmdlTG9nCmluZGV4IGQ1YmM4YWMuLmViZGU2YjYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvb3Bjb2RlL0NoYW5nZUxvZworKysgYi9pbmNsdWRlL29wY29kZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxMCBAQAogCiAJKiBwcGMuaCAoUFBDX09QRVJBTkRfR1BSXzApOiBEZWZpbmUuICBCdW1wIG90aGVyIG9wZXJhbmQgZGVmaW5lcy4KIAorMjAwNC0wMy0xMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwkqIGkzODYuaCAoaTM4Nl9vcHRhYik6IFJlbW92ZSBDcHVObzY0IGZyb20gc3lzZW50ZXIgYW5kIHN5c2V4aXQuCisKIDIwMDQtMDMtMTIgIE1pY2hhbCBMdWR2aWcgIDxtbHVkdmlnQHN1c2UuY3o+CiAKIAkqIGkzODYuaCAoaTM4Nl9vcHRhYik6IEFkZGVkIHhzdG9yZSBhcyBhbiBhbGlhcyBmb3IgeHN0b3Jlcm5nLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGNvZGUvaTM4Ni5oIGIvaW5jbHVkZS9vcGNvZGUvaTM4Ni5oCmluZGV4IGU0M2NiMWMuLjVlMzY3M2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvb3Bjb2RlL2kzODYuaAorKysgYi9pbmNsdWRlL29wY29kZS9pMzg2LmgKQEAgLTEsNiArMSw2IEBACiAvKiBvcGNvZGUvaTM4Ni5oIC0tIEludGVsIDgwMzg2IG9wY29kZSB0YWJsZQogICAgQ29weXJpZ2h0IDE5ODksIDE5OTEsIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCi0gICAyMDAwLCAyMDAxCisgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0CiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0FTLCB0aGUgR05VIEFzc2VtYmxlciwgYW5kIEdEQiwgdGhlIEdOVSBEZWJ1Z2dlci4KQEAgLTg5Niw4ICs4OTYsOCBAQAogeyJjbXB4Y2hnOGIiLDEsMHgwZmM3LCAxLCBDcHU1ODYsIE5vU3VmfE1vZHJtLAkJeyBMTG9uZ01lbSwgMCwgMH0gfSwKIAogLyogUGVudGl1bSBJSS9QZW50aXVtIFBybyBleHRlbnNpb25zLiAgKi8KLXsic3lzZW50ZXIiLDAsIDB4MGYzNCwgWCwgQ3B1Njg2fENwdU5vNjQsIE5vU3VmLAl7IDAsIDAsIDB9IH0sCi17InN5c2V4aXQiLCAwLCAweDBmMzUsIFgsIENwdTY4NnxDcHVObzY0LCBOb1N1ZiwJeyAwLCAwLCAwfSB9LAoreyJzeXNlbnRlciIsMCwgMHgwZjM0LCBYLCBDcHU2ODYsIE5vU3VmLAkJeyAwLCAwLCAwfSB9LAoreyJzeXNleGl0IiwgMCwgMHgwZjM1LCBYLCBDcHU2ODYsIE5vU3VmLAkJeyAwLCAwLCAwfSB9LAogeyJmeHNhdmUiLCAgMSwgMHgwZmFlLCAwLCBDcHU2ODYsIEZQfE1vZHJtLAkJeyBMTG9uZ01lbSwgMCwgMH0gfSwKIHsiZnhyc3RvciIsIDEsIDB4MGZhZSwgMSwgQ3B1Njg2LCBGUHxNb2RybSwJCXsgTExvbmdNZW0sIDAsIDB9IH0sCiB7InJkcG1jIiwgICAwLCAweDBmMzMsIFgsIENwdTY4NiwgTm9TdWYsCQl7IDAsIDAsIDB9IH0sCmRpZmYgLS1naXQgYS9pbmNsdWRlL3NwbGF5LXRyZWUuaCBiL2luY2x1ZGUvc3BsYXktdHJlZS5oCmluZGV4IDg2NzA3ZmMuLmUwNWFlYjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc3BsYXktdHJlZS5oCisrKyBiL2luY2x1ZGUvc3BsYXktdHJlZS5oCkBAIC04MSwyMSArODEsMjEgQEAKIHN0cnVjdCBzcGxheV90cmVlX25vZGVfcyBHVFkoKCkpCiB7CiAgIC8qIFRoZSBrZXkuICAqLwotICBzcGxheV90cmVlX2tleSBHVFkgKCh1c2VfcGFyYW0xICgiIikpKSBrZXk7CisgIHNwbGF5X3RyZWVfa2V5IEdUWSAoKHVzZV9wYXJhbTEpKSBrZXk7CiAKICAgLyogVGhlIHZhbHVlLiAgKi8KLSAgc3BsYXlfdHJlZV92YWx1ZSBHVFkgKCh1c2VfcGFyYW0yICgiIikpKSB2YWx1ZTsKKyAgc3BsYXlfdHJlZV92YWx1ZSBHVFkgKCh1c2VfcGFyYW0yKSkgdmFsdWU7CiAKICAgLyogVGhlIGxlZnQgYW5kIHJpZ2h0IGNoaWxkcmVuLCByZXNwZWN0aXZlbHkuICAqLwotICBzcGxheV90cmVlX25vZGUgR1RZICgodXNlX3BhcmFtcyAoIiIpKSkgbGVmdDsKLSAgc3BsYXlfdHJlZV9ub2RlIEdUWSAoKHVzZV9wYXJhbXMgKCIiKSkpIHJpZ2h0OworICBzcGxheV90cmVlX25vZGUgR1RZICgodXNlX3BhcmFtcykpIGxlZnQ7CisgIHNwbGF5X3RyZWVfbm9kZSBHVFkgKCh1c2VfcGFyYW1zKSkgcmlnaHQ7CiB9OwogCiAvKiBUaGUgc3BsYXkgdHJlZSBpdHNlbGYuICAqLwogc3RydWN0IHNwbGF5X3RyZWVfcyBHVFkoKCkpCiB7CiAgIC8qIFRoZSByb290IG9mIHRoZSB0cmVlLiAgKi8KLSAgc3BsYXlfdHJlZV9ub2RlIEdUWSAoKHVzZV9wYXJhbXMgKCIiKSkpIHJvb3Q7CisgIHNwbGF5X3RyZWVfbm9kZSBHVFkgKCh1c2VfcGFyYW1zKSkgcm9vdDsKIAogICAvKiBUaGUgY29tcGFyaXNpb24gZnVuY3Rpb24uICAqLwogICBzcGxheV90cmVlX2NvbXBhcmVfZm4gY29tcDsKQEAgLTEwOSw3ICsxMDksNyBAQAogICAvKiBBbGxvY2F0ZS9mcmVlIGZ1bmN0aW9ucywgYW5kIGEgZGF0YSBwb2ludGVyIHRvIHBhc3MgdG8gdGhlbS4gICovCiAgIHNwbGF5X3RyZWVfYWxsb2NhdGVfZm4gYWxsb2NhdGU7CiAgIHNwbGF5X3RyZWVfZGVhbGxvY2F0ZV9mbiBkZWFsbG9jYXRlOwotICBQVFIgR1RZKChza2lwICgiIikpKSBhbGxvY2F0ZV9kYXRhOworICBQVFIgR1RZKChza2lwKSkgYWxsb2NhdGVfZGF0YTsKIAogfTsKIHR5cGVkZWYgc3RydWN0IHNwbGF5X3RyZWVfcyAqc3BsYXlfdHJlZTsKZGlmZiAtLWdpdCBhL2luc3RhbGwtc2ggYi9pbnN0YWxsLXNoCmluZGV4IDBlYzI3YmMuLjc3YmMzODEgMTAwNzU1Ci0tLSBhL2luc3RhbGwtc2gKKysrIGIvaW5zdGFsbC1zaApAQCAtMSw3ICsxLDggQEAKICMhL2Jpbi9zaAotIwogIyBpbnN0YWxsIC0gaW5zdGFsbCBhIHByb2dyYW0sIHNjcmlwdCwgb3IgZGF0YWZpbGUKLSMKKworc2NyaXB0dmVyc2lvbj0yMDA0LTAyLTE1LjIwCisKICMgVGhpcyBvcmlnaW5hdGVzIGZyb20gWDExUjUgKG1pdC91dGlsL3NjcmlwdHMvaW5zdGFsbC5zaCksIHdoaWNoIHdhcwogIyBsYXRlciByZWxlYXNlZCBpbiBYMTFSNiAoeGMvY29uZmlnL3V0aWwvaW5zdGFsbC5zaCkgd2l0aCB0aGUKICMgZm9sbG93aW5nIGNvcHlyaWdodCBhbmQgbGljZW5zZS4KQEAgLTQxLDEzICs0MiwxMSBAQAogIyBmcm9tIHNjcmF0Y2guICBJdCBjYW4gb25seSBpbnN0YWxsIG9uZSBmaWxlIGF0IGEgdGltZSwgYSByZXN0cmljdGlvbgogIyBzaGFyZWQgd2l0aCBtYW55IE9TJ3MgaW5zdGFsbCBwcm9ncmFtcy4KIAotCiAjIHNldCBET0lUUFJPRyB0byBlY2hvIHRvIHRlc3QgdGhpcyBzY3JpcHQKIAogIyBEb24ndCB1c2UgOi0gc2luY2UgNC4zQlNEIGFuZCBlYXJsaWVyIHNoZWxscyBkb24ndCBsaWtlIGl0LgogZG9pdD0iJHtET0lUUFJPRy19IgogCi0KICMgcHV0IGluIGFic29sdXRlIHBhdGhzIGlmIHlvdSBkb24ndCBoYXZlIHRoZW0gaW4geW91ciBwYXRoOyBvciB1c2UgZW52LiB2YXJzLgogCiBtdnByb2c9IiR7TVZQUk9HLW12fSIKQEAgLTU5LDIzNiArNTgsMjU5IEBACiBybXByb2c9IiR7Uk1QUk9HLXJtfSIKIG1rZGlycHJvZz0iJHtNS0RJUlBST0ctbWtkaXJ9IgogCi10cmFuc2Zvcm1iYXNlbmFtZT0iIgotdHJhbnNmb3JtX2FyZz0iIgordHJhbnNmb3JtYmFzZW5hbWU9Cit0cmFuc2Zvcm1fYXJnPQogaW5zdGNtZD0iJG12cHJvZyIKIGNobW9kY21kPSIkY2htb2Rwcm9nIDA3NTUiCi1jaG93bmNtZD0iIgotY2hncnBjbWQ9IiIKLXN0cmlwY21kPSIiCitjaG93bmNtZD0KK2NoZ3JwY21kPQorc3RyaXBjbWQ9CiBybWNtZD0iJHJtcHJvZyAtZiIKIG12Y21kPSIkbXZwcm9nIgotc3JjPSIiCi1kc3Q9IiIKLWRpcl9hcmc9IiIKK3NyYz0KK2RzdD0KK2Rpcl9hcmc9CiAKLXdoaWxlIFsgeCIkMSIgIT0geCBdOyBkbwotICAgIGNhc2UgJDEgaW4KLQktYykgaW5zdGNtZD0kY3Bwcm9nCi0JICAgIHNoaWZ0Ci0JICAgIGNvbnRpbnVlOzsKK3VzYWdlPSJVc2FnZTogJDAgW09QVElPTl0uLi4gU1JDRklMRSBEU1RGSUxFCisgICBvcjogJDAgW09QVElPTl0uLi4gU1JDRklMRVMuLi4gRElSRUNUT1JZCisgICBvcjogJDAgLWQgRElSRUNUT1JJRVMuLi4KIAotCS1kKSBkaXJfYXJnPXRydWUKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OworSW4gdGhlIGZpcnN0IGZvcm0sIGluc3RhbGwgU1JDRklMRSB0byBEU1RGSUxFLCByZW1vdmluZyBTUkNGSUxFIGJ5IGRlZmF1bHQuCitJbiB0aGUgc2Vjb25kLCBjcmVhdGUgdGhlIGRpcmVjdG9yeSBwYXRoIERJUi4KIAotCS1tKSBjaG1vZGNtZD0iJGNobW9kcHJvZyAkMiIKLQkgICAgc2hpZnQKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OworT3B0aW9uczoKKy1iPVRSQU5TRk9STUJBU0VOQU1FCistYyAgICAgICAgIGNvcHkgc291cmNlICh1c2luZyAkY3Bwcm9nKSBpbnN0ZWFkIG9mIG1vdmluZyAodXNpbmcgJG12cHJvZykuCistZCAgICAgICAgIGNyZWF0ZSBkaXJlY3RvcmllcyBpbnN0ZWFkIG9mIGluc3RhbGxpbmcgZmlsZXMuCistZyBHUk9VUCAgICRjaGdycCBpbnN0YWxsZWQgZmlsZXMgdG8gR1JPVVAuCistbSBNT0RFICAgICRjaG1vZCBpbnN0YWxsZWQgZmlsZXMgdG8gTU9ERS4KKy1vIFVTRVIgICAgJGNob3duIGluc3RhbGxlZCBmaWxlcyB0byBVU0VSLgorLXMgICAgICAgICBzdHJpcCBpbnN0YWxsZWQgZmlsZXMgKHVzaW5nICRzdHJpcHByb2cpLgorLXQ9VFJBTlNGT1JNCistLWhlbHAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0LgorLS12ZXJzaW9uICBkaXNwbGF5IHZlcnNpb24gaW5mbyBhbmQgZXhpdC4KIAotCS1vKSBjaG93bmNtZD0iJGNob3ducHJvZyAkMiIKLQkgICAgc2hpZnQKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OworRW52aXJvbm1lbnQgdmFyaWFibGVzIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNvbW1hbmRzOgorICBDSEdSUFBST0cgQ0hNT0RQUk9HIENIT1dOUFJPRyBDUFBST0cgTUtESVJQUk9HIE1WUFJPRyBSTVBST0cgU1RSSVBQUk9HCisiCiAKLQktZykgY2hncnBjbWQ9IiRjaGdycHByb2cgJDIiCi0JICAgIHNoaWZ0Ci0JICAgIHNoaWZ0Ci0JICAgIGNvbnRpbnVlOzsKK3doaWxlIHRlc3QgLW4gIiQxIjsgZG8KKyAgY2FzZSAkMSBpbgorICAgIC1iPSopIHRyYW5zZm9ybWJhc2VuYW1lPWBlY2hvICQxIHwgc2VkICdzLy1iPS8vJ2AKKyAgICAgICAgc2hpZnQKKyAgICAgICAgY29udGludWU7OwogCi0JLXMpIHN0cmlwY21kPSRzdHJpcHByb2cKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OworICAgIC1jKSBpbnN0Y21kPSRjcHByb2cKKyAgICAgICAgc2hpZnQKKyAgICAgICAgY29udGludWU7OwogCi0JLXQ9KikgdHJhbnNmb3JtYXJnPWBlY2hvICQxIHwgc2VkICdzLy10PS8vJ2AKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OworICAgIC1kKSBkaXJfYXJnPXRydWUKKyAgICAgICAgc2hpZnQKKyAgICAgICAgY29udGludWU7OwogCi0JLWI9KikgdHJhbnNmb3JtYmFzZW5hbWU9YGVjaG8gJDEgfCBzZWQgJ3MvLWI9Ly8nYAotCSAgICBzaGlmdAotCSAgICBjb250aW51ZTs7CisgICAgLWcpIGNoZ3JwY21kPSIkY2hncnBwcm9nICQyIgorICAgICAgICBzaGlmdAorICAgICAgICBzaGlmdAorICAgICAgICBjb250aW51ZTs7CiAKLQkqKSAgaWYgWyB4IiRzcmMiID0geCBdCi0JICAgIHRoZW4KLQkJc3JjPSQxCi0JICAgIGVsc2UKLQkJIyB0aGlzIGNvbG9uIGlzIHRvIHdvcmsgYXJvdW5kIGEgMzg2QlNEIC9iaW4vc2ggYnVnCi0JCToKLQkJZHN0PSQxCi0JICAgIGZpCi0JICAgIHNoaWZ0Ci0JICAgIGNvbnRpbnVlOzsKKyAgICAtLWhlbHApIGVjaG8gIiR1c2FnZSI7IGV4aXQgMDs7CisKKyAgICAtbSkgY2htb2RjbWQ9IiRjaG1vZHByb2cgJDIiCisgICAgICAgIHNoaWZ0CisgICAgICAgIHNoaWZ0CisgICAgICAgIGNvbnRpbnVlOzsKKworICAgIC1vKSBjaG93bmNtZD0iJGNob3ducHJvZyAkMiIKKyAgICAgICAgc2hpZnQKKyAgICAgICAgc2hpZnQKKyAgICAgICAgY29udGludWU7OworCisgICAgLXMpIHN0cmlwY21kPSRzdHJpcHByb2cKKyAgICAgICAgc2hpZnQKKyAgICAgICAgY29udGludWU7OworCisgICAgLXQ9KikgdHJhbnNmb3JtYXJnPWBlY2hvICQxIHwgc2VkICdzLy10PS8vJ2AKKyAgICAgICAgc2hpZnQKKyAgICAgICAgY29udGludWU7OworCisgICAgLS12ZXJzaW9uKSBlY2hvICIkMCAkc2NyaXB0dmVyc2lvbiI7IGV4aXQgMDs7CisKKyAgICAqKSAgIyBXaGVuIC1kIGlzIHVzZWQsIGFsbCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBkaXJlY3RvcmllcyB0byBjcmVhdGUuCisJdGVzdCAtbiAiJGRpcl9hcmciICYmIGJyZWFrCisgICAgICAgICMgT3RoZXJ3aXNlLCB0aGUgbGFzdCBhcmd1bWVudCBpcyB0aGUgZGVzdGluYXRpb24uICBSZW1vdmUgaXQgZnJvbSAkQC4KKwlmb3IgYXJnCisJZG8KKyAgICAgICAgICBpZiB0ZXN0IC1uICIkZHN0YXJnIjsgdGhlbgorCSAgICAjICRAIGlzIG5vdCBlbXB0eTogaXQgY29udGFpbnMgYXQgbGVhc3QgJGFyZy4KKwkgICAgc2V0IGZub3JkICIkQCIgIiRkc3RhcmciCisJICAgIHNoaWZ0ICMgZm5vcmQKKwkgIGZpCisJICBzaGlmdCAjIGFyZworCSAgZHN0YXJnPSRhcmcKKwlkb25lCisJYnJlYWs7OworICBlc2FjCitkb25lCisKK2lmIHRlc3QgLXogIiQxIjsgdGhlbgorICBpZiB0ZXN0IC16ICIkZGlyX2FyZyI7IHRoZW4KKyAgICBlY2hvICIkMDogbm8gaW5wdXQgZmlsZSBzcGVjaWZpZWQuIiA+JjIKKyAgICBleGl0IDEKKyAgZmkKKyAgIyBJdCdzIE9LIHRvIGNhbGwgYGluc3RhbGwtc2ggLWQnIHdpdGhvdXQgYXJndW1lbnQuCisgICMgVGhpcyBjYW4gaGFwcGVuIHdoZW4gY3JlYXRpbmcgY29uZGl0aW9uYWwgZGlyZWN0b3JpZXMuCisgIGV4aXQgMAorZmkKKworZm9yIHNyYworZG8KKyAgIyBQcm90ZWN0IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nLgorICBjYXNlICRzcmMgaW4KKyAgICAtKikgc3JjPS4vJHNyYyA7OworICBlc2FjCisKKyAgaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCisgICAgZHN0PSRzcmMKKyAgICBzcmM9CisKKyAgICBpZiB0ZXN0IC1kICIkZHN0IjsgdGhlbgorICAgICAgaW5zdGNtZD06CisgICAgICBjaG1vZGNtZD0KKyAgICBlbHNlCisgICAgICBpbnN0Y21kPSRta2RpcnByb2cKKyAgICBmaQorICBlbHNlCisgICAgIyBXYWl0aW5nIGZvciB0aGlzIHRvIGJlIGRldGVjdGVkIGJ5IHRoZSAiJGluc3RjbWQgJHNyYyAkZHN0dG1wIiBjb21tYW5kCisgICAgIyBtaWdodCBjYXVzZSBkaXJlY3RvcmllcyB0byBiZSBjcmVhdGVkLCB3aGljaCB3b3VsZCBiZSBlc3BlY2lhbGx5IGJhZAorICAgICMgaWYgJHNyYyAoYW5kIHRodXMgJGRzdHRtcCkgY29udGFpbnMgJyonLgorICAgIGlmIHRlc3QgISAtZiAiJHNyYyIgJiYgdGVzdCAhIC1kICIkc3JjIjsgdGhlbgorICAgICAgZWNobyAiJDA6ICRzcmMgZG9lcyBub3QgZXhpc3QuIiA+JjIKKyAgICAgIGV4aXQgMQorICAgIGZpCisKKyAgICBpZiB0ZXN0IC16ICIkZHN0YXJnIjsgdGhlbgorICAgICAgZWNobyAiJDA6IG5vIGRlc3RpbmF0aW9uIHNwZWNpZmllZC4iID4mMgorICAgICAgZXhpdCAxCisgICAgZmkKKworICAgIGRzdD0kZHN0YXJnCisgICAgIyBQcm90ZWN0IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nLgorICAgIGNhc2UgJGRzdCBpbgorICAgICAgLSopIGRzdD0uLyRkc3QgOzsKICAgICBlc2FjCisKKyAgICAjIElmIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5LCBhcHBlbmQgdGhlIGlucHV0IGZpbGVuYW1lOyB3b24ndCB3b3JrCisgICAgIyBpZiBkb3VibGUgc2xhc2hlcyBhcmVuJ3QgaWdub3JlZC4KKyAgICBpZiB0ZXN0IC1kICIkZHN0IjsgdGhlbgorICAgICAgZHN0PSRkc3QvYGJhc2VuYW1lICIkc3JjImAKKyAgICBmaQorICBmaQorCisgICMgVGhpcyBzZWQgY29tbWFuZCBlbXVsYXRlcyB0aGUgZGlybmFtZSBjb21tYW5kLgorICBkc3RkaXI9YGVjaG8gIiRkc3QiIHwgc2VkIC1lICdzLFteL10qJCwsO3MsLyQsLDtzLF4kLC4sJ2AKKworICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgZXhpc3RzLgorCisgICMgU2tpcCBsb3RzIG9mIHN0YXQgY2FsbHMgaW4gdGhlIHVzdWFsIGNhc2UuCisgIGlmIHRlc3QgISAtZCAiJGRzdGRpciI7IHRoZW4KKyAgICBkZWZhdWx0SUZTPScKKwkgJworICAgIElGUz0iJHtJRlMtJGRlZmF1bHRJRlN9IgorCisgICAgb0lGUz0kSUZTCisgICAgIyBTb21lIHNoJ3MgY2FuJ3QgaGFuZGxlIElGUz0vIGZvciBzb21lIHJlYXNvbi4KKyAgICBJRlM9JyUnCisgICAgc2V0IC0gYGVjaG8gIiRkc3RkaXIiIHwgc2VkIC1lICdzQC9AJUBnJyAtZSAnc0BeJUAvQCdgCisgICAgSUZTPSRvSUZTCisKKyAgICBwYXRoY29tcD0KKworICAgIHdoaWxlIHRlc3QgJCMgLW5lIDAgOyBkbworICAgICAgcGF0aGNvbXA9JHBhdGhjb21wJDEKKyAgICAgIHNoaWZ0CisgICAgICBpZiB0ZXN0ICEgLWQgIiRwYXRoY29tcCI7IHRoZW4KKyAgICAgICAgJG1rZGlycHJvZyAiJHBhdGhjb21wIiB8fCBsYXN0ZXJyPSQ/CisJIyBta2RpciBjYW4gZmFpbCB3aXRoIGEgYEZpbGUgZXhpc3QnIGVycm9yIGluIGNhc2Ugc2V2ZXJhbAorCSMgaW5zdGFsbC1zaCBhcmUgY3JlYXRpbmcgdGhlIGRpcmVjdG9yeSBjb25jdXJyZW50bHkuICBUaGlzCisJIyBpcyBPSy4KKwl0ZXN0ICEgLWQgIiRwYXRoY29tcCIgJiYgeyAoZXhpdCAke2xhc3RlcnItMX0pOyBleGl0OyB9CisgICAgICBmaQorICAgICAgcGF0aGNvbXA9JHBhdGhjb21wLworICAgIGRvbmUKKyAgZmkKKworICBpZiB0ZXN0IC1uICIkZGlyX2FyZyI7IHRoZW4KKyAgICAkZG9pdCAkaW5zdGNtZCAiJGRzdCIgXAorICAgICAgJiYgeyB0ZXN0IC16ICIkY2hvd25jbWQiIHx8ICRkb2l0ICRjaG93bmNtZCAiJGRzdCI7IH0gXAorICAgICAgJiYgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdCI7IH0gXAorICAgICAgJiYgeyB0ZXN0IC16ICIkc3RyaXBjbWQiIHx8ICRkb2l0ICRzdHJpcGNtZCAiJGRzdCI7IH0gXAorICAgICAgJiYgeyB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRjaG1vZGNtZCAiJGRzdCI7IH0KKworICBlbHNlCisgICAgIyBJZiB3ZSdyZSBnb2luZyB0byByZW5hbWUgdGhlIGZpbmFsIGV4ZWN1dGFibGUsIGRldGVybWluZSB0aGUgbmFtZSBub3cuCisgICAgaWYgdGVzdCAteiAiJHRyYW5zZm9ybWFyZyI7IHRoZW4KKyAgICAgIGRzdGZpbGU9YGJhc2VuYW1lICIkZHN0ImAKKyAgICBlbHNlCisgICAgICBkc3RmaWxlPWBiYXNlbmFtZSAiJGRzdCIgJHRyYW5zZm9ybWJhc2VuYW1lIFwKKyAgICAgICAgICAgICAgIHwgc2VkICR0cmFuc2Zvcm1hcmdgJHRyYW5zZm9ybWJhc2VuYW1lCisgICAgZmkKKworICAgICMgZG9uJ3QgYWxsb3cgdGhlIHNlZCBjb21tYW5kIHRvIGNvbXBsZXRlbHkgZWxpbWluYXRlIHRoZSBmaWxlbmFtZS4KKyAgICB0ZXN0IC16ICIkZHN0ZmlsZSIgJiYgZHN0ZmlsZT1gYmFzZW5hbWUgIiRkc3QiYAorCisgICAgIyBNYWtlIGEgY291cGxlIG9mIHRlbXAgZmlsZSBuYW1lcyBpbiB0aGUgcHJvcGVyIGRpcmVjdG9yeS4KKyAgICBkc3R0bXA9JGRzdGRpci9faW5zdC4kJF8KKyAgICBybXRtcD0kZHN0ZGlyL19ybS4kJF8KKworICAgICMgVHJhcCB0byBjbGVhbiB1cCB0aG9zZSB0ZW1wIGZpbGVzIGF0IGV4aXQuCisgICAgdHJhcCAnc3RhdHVzPSQ/OyBybSAtZiAiJGRzdHRtcCIgIiRybXRtcCIgJiYgZXhpdCAkc3RhdHVzJyAwCisgICAgdHJhcCAnKGV4aXQgJD8pOyBleGl0JyAxIDIgMTMgMTUKKworICAgICMgTW92ZSBvciBjb3B5IHRoZSBmaWxlIG5hbWUgdG8gdGhlIHRlbXAgbmFtZQorICAgICRkb2l0ICRpbnN0Y21kICIkc3JjIiAiJGRzdHRtcCIgJiYKKworICAgICMgYW5kIHNldCBhbnkgb3B0aW9uczsgZG8gY2htb2QgbGFzdCB0byBwcmVzZXJ2ZSBzZXR1aWQgYml0cy4KKyAgICAjCisgICAgIyBJZiBhbnkgb2YgdGhlc2UgZmFpbCwgd2UgYWJvcnQgdGhlIHdob2xlIHRoaW5nLiAgSWYgd2Ugd2FudCB0bworICAgICMgaWdub3JlIGVycm9ycyBmcm9tIGFueSBvZiB0aGVzZSwganVzdCBtYWtlIHN1cmUgbm90IHRvIGlnbm9yZQorICAgICMgZXJyb3JzIGZyb20gdGhlIGFib3ZlICIkZG9pdCAkaW5zdGNtZCAkc3JjICRkc3R0bXAiIGNvbW1hbmQuCisgICAgIworICAgIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3R0bXAiOyB9IFwKKyAgICAgICYmIHsgdGVzdCAteiAiJGNoZ3JwY21kIiB8fCAkZG9pdCAkY2hncnBjbWQgIiRkc3R0bXAiOyB9IFwKKyAgICAgICYmIHsgdGVzdCAteiAiJHN0cmlwY21kIiB8fCAkZG9pdCAkc3RyaXBjbWQgIiRkc3R0bXAiOyB9IFwKKyAgICAgICYmIHsgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgIiRkc3R0bXAiOyB9ICYmCisKKyAgICAjIE5vdyByZW1vdmUgb3IgbW92ZSBhc2lkZSBhbnkgb2xkIGZpbGUgYXQgZGVzdGluYXRpb24gbG9jYXRpb24uICBXZQorICAgICMgdHJ5IHRoaXMgdHdvIHdheXMgc2luY2Ugcm0gY2FuJ3QgdW5saW5rIGl0c2VsZiBvbiBzb21lIHN5c3RlbXMgYW5kCisgICAgIyB0aGUgZGVzdGluYXRpb24gZmlsZSBtaWdodCBiZSBidXN5IGZvciBvdGhlciByZWFzb25zLiAgSW4gdGhpcyBjYXNlLAorICAgICMgdGhlIGZpbmFsIGNsZWFudXAgbWlnaHQgZmFpbCBidXQgdGhlIG5ldyBmaWxlIHNob3VsZCBzdGlsbCBpbnN0YWxsCisgICAgIyBzdWNjZXNzZnVsbHkuCisgICAgeworICAgICAgaWYgdGVzdCAtZiAiJGRzdGRpci8kZHN0ZmlsZSI7IHRoZW4KKyAgICAgICAgJGRvaXQgJHJtY21kIC1mICIkZHN0ZGlyLyRkc3RmaWxlIiAyPi9kZXYvbnVsbCBcCisgICAgICAgIHx8ICRkb2l0ICRtdmNtZCAtZiAiJGRzdGRpci8kZHN0ZmlsZSIgIiRybXRtcCIgMj4vZGV2L251bGwgXAorICAgICAgICB8fCB7CisJICBlY2hvICIkMDogY2Fubm90IHVubGluayBvciByZW5hbWUgJGRzdGRpci8kZHN0ZmlsZSIgPiYyCisJICAoZXhpdCAxKTsgZXhpdAorICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIDoKKyAgICAgIGZpCisgICAgfSAmJgorCisgICAgIyBOb3cgcmVuYW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgorICAgICRkb2l0ICRtdmNtZCAiJGRzdHRtcCIgIiRkc3RkaXIvJGRzdGZpbGUiCisgIGZpIHx8IHsgKGV4aXQgMSk7IGV4aXQ7IH0KIGRvbmUKIAotaWYgWyB4IiRzcmMiID0geCBdCi10aGVuCi0JZWNobyAiJDA6IG5vIGlucHV0IGZpbGUgc3BlY2lmaWVkIiA+JjIKLQlleGl0IDEKLWVsc2UKLQk6Ci1maQotCi1pZiBbIHgiJGRpcl9hcmciICE9IHggXTsgdGhlbgotCWRzdD0kc3JjCi0Jc3JjPSIiCi0KLQlpZiBbIC1kICIkZHN0IiBdOyB0aGVuCi0JCWluc3RjbWQ9OgotCQljaG1vZGNtZD0iIgotCWVsc2UKLQkJaW5zdGNtZD0kbWtkaXJwcm9nCi0JZmkKLWVsc2UKLQotIyBXYWl0aW5nIGZvciB0aGlzIHRvIGJlIGRldGVjdGVkIGJ5IHRoZSAiJGluc3RjbWQgJHNyYyAkZHN0dG1wIiBjb21tYW5kCi0jIG1pZ2h0IGNhdXNlIGRpcmVjdG9yaWVzIHRvIGJlIGNyZWF0ZWQsIHdoaWNoIHdvdWxkIGJlIGVzcGVjaWFsbHkgYmFkCi0jIGlmICRzcmMgKGFuZCB0aHVzICRkc3R0bXApIGNvbnRhaW5zICcqJy4KLQotCWlmIFsgLWYgIiRzcmMiIF0gfHwgWyAtZCAiJHNyYyIgXQotCXRoZW4KLQkJOgotCWVsc2UKLQkJZWNobyAiJDA6ICRzcmMgZG9lcyBub3QgZXhpc3QiID4mMgotCQlleGl0IDEKLQlmaQotCi0JaWYgWyB4IiRkc3QiID0geCBdCi0JdGhlbgotCQllY2hvICIkMDogbm8gZGVzdGluYXRpb24gc3BlY2lmaWVkIiA+JjIKLQkJZXhpdCAxCi0JZWxzZQotCQk6Ci0JZmkKLQotIyBJZiBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeSwgYXBwZW5kIHRoZSBpbnB1dCBmaWxlbmFtZTsgaWYgeW91ciBzeXN0ZW0KLSMgZG9lcyBub3QgbGlrZSBkb3VibGUgc2xhc2hlcyBpbiBmaWxlbmFtZXMsIHlvdSBtYXkgbmVlZCB0byBhZGQgc29tZSBsb2dpYwotCi0JaWYgWyAtZCAiJGRzdCIgXQotCXRoZW4KLQkJZHN0PSRkc3QvYGJhc2VuYW1lICIkc3JjImAKLQllbHNlCi0JCToKLQlmaQotZmkKLQotIyMgdGhpcyBzZWQgY29tbWFuZCBlbXVsYXRlcyB0aGUgZGlybmFtZSBjb21tYW5kCi1kc3RkaXI9YGVjaG8gIiRkc3QiIHwgc2VkIC1lICdzLFteL10qJCwsO3MsLyQsLDtzLF4kLC4sJ2AKLQotIyBNYWtlIHN1cmUgdGhhdCB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGV4aXN0cy4KLSMgIHRoaXMgcGFydCBpcyB0YWtlbiBmcm9tIE5vYWggRnJpZWRtYW4ncyBta2luc3RhbGxkaXJzIHNjcmlwdAotCi0jIFNraXAgbG90cyBvZiBzdGF0IGNhbGxzIGluIHRoZSB1c3VhbCBjYXNlLgotaWYgWyAhIC1kICIkZHN0ZGlyIiBdOyB0aGVuCi1kZWZhdWx0SUZTPScKLQknCi1JRlM9IiR7SUZTLSRkZWZhdWx0SUZTfSIKLQotb0lGUz0kSUZTCi0jIFNvbWUgc2gncyBjYW4ndCBoYW5kbGUgSUZTPS8gZm9yIHNvbWUgcmVhc29uLgotSUZTPSclJwotc2V0IC0gYGVjaG8gIiRkc3RkaXIiIHwgc2VkIC1lICdzQC9AJUBnJyAtZSAnc0BeJUAvQCdgCi1JRlM9JG9JRlMKLQotcGF0aGNvbXA9JycKLQotd2hpbGUgWyAkIyAtbmUgMCBdIDsgZG8KLQlwYXRoY29tcD0kcGF0aGNvbXAkMQotCXNoaWZ0Ci0KLQlpZiBbICEgLWQgIiRwYXRoY29tcCIgXSA7Ci0gICAgICAgIHRoZW4KLQkJJG1rZGlycHJvZyAiJHBhdGhjb21wIgotCWVsc2UKLQkJOgotCWZpCi0KLQlwYXRoY29tcD0kcGF0aGNvbXAvCi1kb25lCi1maQotCi1pZiBbIHgiJGRpcl9hcmciICE9IHggXQotdGhlbgotCSRkb2l0ICRpbnN0Y21kICIkZHN0IiAmJgotCi0JaWYgWyB4IiRjaG93bmNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaG93bmNtZCAiJGRzdCI7IGVsc2UgOiA7IGZpICYmCi0JaWYgWyB4IiRjaGdycGNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaGdycGNtZCAiJGRzdCI7IGVsc2UgOiA7IGZpICYmCi0JaWYgWyB4IiRzdHJpcGNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRzdHJpcGNtZCAiJGRzdCI7IGVsc2UgOiA7IGZpICYmCi0JaWYgWyB4IiRjaG1vZGNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaG1vZGNtZCAiJGRzdCI7IGVsc2UgOiA7IGZpCi1lbHNlCi0KLSMgSWYgd2UncmUgZ29pbmcgdG8gcmVuYW1lIHRoZSBmaW5hbCBleGVjdXRhYmxlLCBkZXRlcm1pbmUgdGhlIG5hbWUgbm93LgotCi0JaWYgWyB4IiR0cmFuc2Zvcm1hcmciID0geCBdCi0JdGhlbgotCQlkc3RmaWxlPWBiYXNlbmFtZSAiJGRzdCJgCi0JZWxzZQotCQlkc3RmaWxlPWBiYXNlbmFtZSAiJGRzdCIgJHRyYW5zZm9ybWJhc2VuYW1lIHwKLQkJCXNlZCAkdHJhbnNmb3JtYXJnYCR0cmFuc2Zvcm1iYXNlbmFtZQotCWZpCi0KLSMgZG9uJ3QgYWxsb3cgdGhlIHNlZCBjb21tYW5kIHRvIGNvbXBsZXRlbHkgZWxpbWluYXRlIHRoZSBmaWxlbmFtZQotCi0JaWYgWyB4IiRkc3RmaWxlIiA9IHggXQotCXRoZW4KLQkJZHN0ZmlsZT1gYmFzZW5hbWUgIiRkc3QiYAotCWVsc2UKLQkJOgotCWZpCi0KLSMgTWFrZSBhIGNvdXBsZSBvZiB0ZW1wIGZpbGUgbmFtZXMgaW4gdGhlIHByb3BlciBkaXJlY3RvcnkuCi0KLQlkc3R0bXA9JGRzdGRpci8jaW5zdC4kJCMKLQlybXRtcD0kZHN0ZGlyLyNybS4kJCMKLQotIyBUcmFwIHRvIGNsZWFuIHVwIHRlbXAgZmlsZXMgYXQgZXhpdC4KLQotCXRyYXAgJ3N0YXR1cz0kPzsgcm0gLWYgIiRkc3R0bXAiICIkcm10bXAiICYmIGV4aXQgJHN0YXR1cycgMAotCXRyYXAgJyhleGl0ICQ/KTsgZXhpdCcgMSAyIDEzIDE1Ci0KLSMgTW92ZSBvciBjb3B5IHRoZSBmaWxlIG5hbWUgdG8gdGhlIHRlbXAgbmFtZQotCi0JJGRvaXQgJGluc3RjbWQgIiRzcmMiICIkZHN0dG1wIiAmJgotCi0jIGFuZCBzZXQgYW55IG9wdGlvbnM7IGRvIGNobW9kIGxhc3QgdG8gcHJlc2VydmUgc2V0dWlkIGJpdHMKLQotIyBJZiBhbnkgb2YgdGhlc2UgZmFpbCwgd2UgYWJvcnQgdGhlIHdob2xlIHRoaW5nLiAgSWYgd2Ugd2FudCB0bwotIyBpZ25vcmUgZXJyb3JzIGZyb20gYW55IG9mIHRoZXNlLCBqdXN0IG1ha2Ugc3VyZSBub3QgdG8gaWdub3JlCi0jIGVycm9ycyBmcm9tIHRoZSBhYm92ZSAiJGRvaXQgJGluc3RjbWQgJHNyYyAkZHN0dG1wIiBjb21tYW5kLgotCi0JaWYgWyB4IiRjaG93bmNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaG93bmNtZCAiJGRzdHRtcCI7IGVsc2UgOjtmaSAmJgotCWlmIFsgeCIkY2hncnBjbWQiICE9IHggXTsgdGhlbiAkZG9pdCAkY2hncnBjbWQgIiRkc3R0bXAiOyBlbHNlIDo7ZmkgJiYKLQlpZiBbIHgiJHN0cmlwY21kIiAhPSB4IF07IHRoZW4gJGRvaXQgJHN0cmlwY21kICIkZHN0dG1wIjsgZWxzZSA6O2ZpICYmCi0JaWYgWyB4IiRjaG1vZGNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaG1vZGNtZCAiJGRzdHRtcCI7IGVsc2UgOjtmaSAmJgotCi0jIE5vdyByZW1vdmUgb3IgbW92ZSBhc2lkZSBhbnkgb2xkIGZpbGUgYXQgZGVzdGluYXRpb24gbG9jYXRpb24uICBXZSB0cnkgdGhpcwotIyB0d28gd2F5cyBzaW5jZSBybSBjYW4ndCB1bmxpbmsgaXRzZWxmIG9uIHNvbWUgc3lzdGVtcyBhbmQgdGhlIGRlc3RpbmF0aW9uCi0jIGZpbGUgbWlnaHQgYmUgYnVzeSBmb3Igb3RoZXIgcmVhc29ucy4gIEluIHRoaXMgY2FzZSwgdGhlIGZpbmFsIGNsZWFudXAKLSMgbWlnaHQgZmFpbCBidXQgdGhlIG5ldyBmaWxlIHNob3VsZCBzdGlsbCBpbnN0YWxsIHN1Y2Nlc3NmdWxseS4KLQotewotCWlmIFsgLWYgIiRkc3RkaXIvJGRzdGZpbGUiIF0KLQl0aGVuCi0JCSRkb2l0ICRybWNtZCAtZiAiJGRzdGRpci8kZHN0ZmlsZSIgMj4vZGV2L251bGwgfHwKLQkJJGRvaXQgJG12Y21kIC1mICIkZHN0ZGlyLyRkc3RmaWxlIiAiJHJtdG1wIiAyPi9kZXYvbnVsbCB8fAotCQl7Ci0JCSAgZWNobyAiJDA6IGNhbm5vdCB1bmxpbmsgb3IgcmVuYW1lICRkc3RkaXIvJGRzdGZpbGUiID4mMgotCQkgIChleGl0IDEpOyBleGl0Ci0JCX0KLQllbHNlCi0JCToKLQlmaQotfSAmJgotCi0jIE5vdyByZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCi0KLQkkZG9pdCAkbXZjbWQgIiRkc3R0bXAiICIkZHN0ZGlyLyRkc3RmaWxlIgotCi1maSAmJgotCiAjIFRoZSBmaW5hbCBsaXR0bGUgdHJpY2sgdG8gImNvcnJlY3RseSIgcGFzcyB0aGUgZXhpdCBzdGF0dXMgdG8gdGhlIGV4aXQgdHJhcC4KLQogewotCShleGl0IDApOyBleGl0CisgIChleGl0IDApOyBleGl0CiB9CisKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCisjIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgRW5kOgpkaWZmIC0tZ2l0IGEvbGQvQ2hhbmdlTG9nIGIvbGQvQ2hhbmdlTG9nCmluZGV4IGM5YjQzZGMuLjU2NGY3MDcgMTAwNjQ0Ci0tLSBhL2xkL0NoYW5nZUxvZworKysgYi9sZC9DaGFuZ2VMb2cKQEAgLTEsNyArMSwxMDYgQEAKKzIwMDQtMDQtMDggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KKworCSogZW11bHBhcmFtcy9lbGYzMmJzbWlwLnNoIChFWFRSQV9FTV9GSUxFKTogRGVmaW5lIHRvIGlyaXguCisJKiBlbXVscGFyYW1zL2VsZjY0Ym1pcC5zaCAoRVhUUkFfRU1fRklMRSk6IExpa2V3aXNlLgorCSogZW11bHBhcmFtcy9lbGYzMmJtaXBuMzIuc2ggKEVYVFJBX0VNX0ZJTEUpOiBMaWtld2lzZS4KKwkqIGVtdWx0ZW1wbC9pcml4LmVtOiBOZXcgZmlsZS4KKwkqIE1ha2VmaWxlLmFtIChlZWxmMzJic21pcC5jLCBlZWxmMzJibWlwbjMyLmMsIGVlbGY2NGJtaXAuYyk6IFVwZGF0ZQorCWRlcGVuZGVuY2llcy4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCisyMDA0LTA0LTAxICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgorCisJKiBlbXVsdGVtcGwvYXJtZWxmLmVtIChieXRlc3dhcF9jb2RlKTogQWRkLgorCShhcm1fZWxmX2JlZm9yZV9hbGxvY2F0aW9uKTogUGFzcyBleHRyYSBwYXJhbWV0ZXIuCisJKFBBUlNFX0FORF9MSVNUX1BST0xPR1VFKTogQWRkIE9QVElPTl9CRTguCisJKFBBUlNFX0FORF9MSVNUX0xPTkdPUFRTLCBQQVJTRV9BTkRfTElTVF9PUFRJT05TKTogQWRkIGJlOC4KKwkoUEFSU0VfQU5EX0xJU1RfQVJHU19DQVNFUyk6IEhhbmRsZSBPUFRJT05fQkU4LgorCSogZW11bHRlbXBsL2FybWVsZl9vYWJpLmVtOiBQYXNzIGV4dHJhIHBhcmFtZXRlci4KKwkqIGxkLnRleGluZm86IERvY3VtZW50IC0tYmU4LgorCisyMDA0LTAzLTMwICBTdGFuIFNoZWJzICA8c2hlYnNAYXBwbGUuY29tPgorCisJUmVtb3ZlIGxvbmctb2Jzb2xldGUgTVBXIHN1cHBvcnQuCisJKiBtcHctY29uZmlnLmluLCBtcHctbWFrZS5zZWQsIG1hYy1sZC5yOiBSZW1vdmUgZmlsZXMuCisJKiBNYWtlZmlsZS5hbSAobXB3KTogUmVtb3ZlIGZpbGUtcHJlc3ludGhlc2l6aW5nIGFjdGlvbnMuCisJKiBNYWtlZmlsZS5pbjogTGlrZXdpc2UuCisJKiBsZGZpbGUuYyAoc2xhc2gpOiBSZW1vdmUgTVBXIGNhc2UuCisJKiBsZGxleC5sIFtNUFddOiBSZW1vdmUgdW51c2VkIGRlZmluaXRpb24uCisKKzIwMDQtMDMtMzAgIEdhbGl0IEhlbGxlciAgPEdhbGl0LkhlbGxlckBuc2MuY29tPgorCisJKiBNYWtlZmlsZS5hbSAoQUxMX0VNVUxBVElPTlMpOiBBZGQgZWVsZjMyY3IxNmMuby4KKwkoZWVsZjMyY3IxNmMuYyk6IE5ldyB0YXJnZXQuCisJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKwkqIGNvbmZpZ3VyZS50Z3Q6IEhhbmRsZSBjcjE2Yy0qLWVsZiouCisJKiBlbXVscGFyYW1zL2VsZjMyY3IxNmMuc2g6IE5ldyBmaWxlLgorCSogc2NyaXB0dGVtcGwvZWxmY3IxNmMuc2M6IExpa2V3aXNlCisJKiBORVdTOiBNZW50aW9uIHN1cHBvcnQgZm9yIG5ldyB0YXJnZXQuCisKKzIwMDQtMDMtMzAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CisKKwkqIHBvL3N2LnBvOiBVcGRhdGVkIFN3ZWRpc2ggdHJhbnNsYXRpb24uCisKKzIwMDQtMDMtMjcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKKwkqIGVtdWx0ZW1wbC9lbGYzMi5lbTogVXBkYXRlIG5ldyBiZmRfZWxmX2Rpc2NhcmRfaW5mbyBuYW1lLgorCSogZW11bHRlbXBsL2hwcGFlbGYuZW06IExpa2V3aXNlLgorCSogZW11bHRlbXBsL3BwYzY0ZWxmLmVtOiBMaWtld2lzZS4KKwkqIGVtdWx0ZW1wbC9zaDY0ZWxmLmVtOiBMaWtld2lzZS4KKworMjAwNC0wMy0yNSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKworCSogZW11bHRlbXBsL2VsZjMyLmVtIChnbGQke0VNVUxBVElPTl9OQU1FfV9iZWZvcmVfYWxsb2NhdGlvbik6IFVwZGF0ZQorCXNpemVfZHluYW1pY19zZWN0aW9ucyBjYWxsLgorCisyMDA0LTAzLTIzICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgorCisJUFIgNTEuCisJKiBlbXVsdGVtcGwvcHBjNjRlbGYuZW0gKHBwY19jcmVhdGVfb3V0cHV0X3NlY3Rpb25fc3RhdGVtZW50cyk6IFNldAorCWxpbmtfaW5mby53cmFwX2NoYXIuCisKKzIwMDQtMDMtMjAgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KKworCSogbGV4c3VwLmMgKHBhcnNlX2FyZ3MpOiBEb24ndCBzZXQgdW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMKKwlvciB1bnJlc29sdmVkX3N5bXNfaW5fc2hhcmVkX2xpYnMgZm9yIC1CZHluYW1pYyBhbmQgLUJzdGF0aWMuCisKKzIwMDQtMDMtMjAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgorCisJKiBlbXVscGFyYW1zL2VsZjMyZnJ2ZmQuc2ggKE1BWFBBR0VTSVpFKTogQ2hhbmdlIHRvIDE2S2IuCisKKzIwMDQtMDMtMTkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKKwkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KKwkqIHBvL2xkLnBvdDogUmVnZW5lcmF0ZS4KKworMjAwNC0wMy0xOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKworCSogbGQudGV4aW5mbzogQWRkIC0tYXMtbmVlZGVkIGRvY28uCisJKiBsZG1haW4uYyAoYXNfbmVlZGVkKTogTmV3IGdsb2JhbCB2YXIuCisJKiBsZG1haW4uaCAoYXNfbmVlZGVkKTogRGVjbGFyZS4KKwkqIGxleHN1cC5jIChvcHRpb25fdmFsdWVzKTogQWRkIE9QVElPTl9BU19ORUVERUQgYW5kCisJT1BUSU9OX05PX0FTX05FRURFRC4KKwkobGRfb3B0aW9ucyk6IExpa2V3aXNlLgorCShwYXJzZV9hcmdzKTogSGFuZGxlIHRoZW0uCisJKiBsZGxhbmcuaCAobGFuZ19pbnB1dF9zdGF0ZW1lbnRfdHlwZSk6IEFkZCBhc19uZWVkZWQgZmllbGQuCisJKiBsZGxhbmcuYyAobmV3X2FmaWxlKTogU2V0IHAtPmFzX25lZWRlZC4KKwkqIGVtdWx0ZW1wbC9lbGYzMi5lbSAoZ2xkJHtFTVVMQVRJT05fTkFNRX1fbG9hZF9zeW1ib2xzKTogTmV3IGZ1bmN0aW9uLgorCShnbGQke0VNVUxBVElPTl9OQU1FfV90cnlfbmVlZGVkKTogVXNlIGJmZF9lbGZfc2V0X2R5bl9saWJfY2xhc3MuCisJKGxkXyR7RU1VTEFUSU9OX05BTUV9X2VtdWxhdGlvbik6IFNldCBMREVNVUxfUkVDT0dOSVpFRF9GSUxFIGVudHJ5LgorCisJKiBsZGxhbmcuYyAob3Blbl9pbnB1dF9iZmRzKTogUmVtb3ZlIHVzZWxlc3MgY2FzdC4KKwkobGFuZ19kb19hc3NpZ25tZW50c18xKTogTGlrZXdpc2UuCisJKGxhbmdfZm9yX2VhY2hfaW5wdXRfc2VjdGlvbik6IERlbGV0ZS4KKwogMjAwNC0wMy0xNyAgUmFsZiBDb3JzZXBpdXMgPGNvcnNlcGl1QGZhdy51bmktdWxtLmRlPgogCiAJKiBjb25maWd1cmUudGd0OiBTd2l0Y2ggc2gtKi1ydGVtcyogdG8gRUxGLiAgQWRkIHNoLSotcnRlbXNjb2ZmKi4KIAorMjAwNC0wMy0wOCAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogcGUtZGxsLmMgKHBlX2RsbF9nZW5lcmF0ZV9pbXBsaWIpOiBTa2lwIHNlY3Rpb25zIG1hcmtlZCBhcworCXByaXZhdGUgd2hlbiBidWlsZGluZyBpbXBsaWIuCisKIDIwMDQtMDMtMDUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CiAKIAkqIGxkbGFuZy5jIChsYW5nX2FkZF9zZWN0aW9uKTogRG9uJ3QgZm9yY2UgU0VDX0xPQUQgb24KQEAgLTksNiArMTA4LDE5IEBACiAJKElHTk9SRV9TRUNUSU9OKTogSWdub3JlIC50YnNzIHNlY3Rpb25zIHRvby4KIAkobGFuZ19zaXplX3NlY3Rpb25zXzEpOiAudGJzcyBzZWN0aW9ucyBkbyBub3QgYWR2YW5jZSBkb3QuCiAKKzIwMDQtMDMtMDEgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CisKKwkqIGxkLnRleGluZm8gKE9wdGlvbnMpOiBGaXggZXhhbXBsZSBmb3IgLS13cmFwLgorCisyMDA0LTAyLTI1ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBwZS1kbGwuYyAoZmlsbF9lZGF0YSk6IENoZWNrIHRoYXQgZXhwb3J0ZWRfc3ltYm9sX3NlY3Rpb25zIGlzCisJbm90IE5VTEwuCisKKzIwMDQtMDItMjMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CisKKwkqIGxkbGFuZy5jIChsYW5nX2NoZWNrKTogVXNlICVQLCBub3QgJUUsIGluIGVycm9yIG1lc3NhZ2UuCisKIDIwMDQtMDItMjMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CiAKIAkqIGxkbGFuZy5oIChzdHJ1Y3QgbGFuZ19vdXRwdXRfc2VjdGlvbl9zdGF0ZSk6IENoYW5nZSBwcm9jZXNzZWQKQEAgLTI1LDcgKzEzNyw3IEBACiAyMDA0LTAyLTIzICBBbGFuIE1vZHJhIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CiAKIAkqIGxkZXhwLmMgKGZvbGRfdHJlZSk6IEZvbGxvdyBpbmRpcmVjdCBzeW1ib2xzLgotCQorCiAyMDA0LTAyLTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgogCiAJKiBsZGdyYW0ueSAoZXhwKTogQWRkIHR3byBvcGVyYW5kIEFMSUdOLgpkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuYW0gYi9sZC9NYWtlZmlsZS5hbQppbmRleCAyNWIxY2ZiLi44ODc0MTlmIDEwMDY0NAotLS0gYS9sZC9NYWtlZmlsZS5hbQorKysgYi9sZC9NYWtlZmlsZS5hbQpAQCAtMTQ5LDYgKzE0OSw3IEBACiAJZWVsZjMyX2k4NjAubyBcCiAJZWVsZjMyX3NwYXJjLm8gXAogCWVlbGYzMmI0MzAwLm8gXAorCWVlbGYzMmNyMTZjLm8gXAogCWVlbGYzMmJtaXAubyBcCiAJZWVsZjMyYm1pcG4zMi5vIFwKIAllZWxmMzJidHNtaXAubyBcCkBAIC02MjksMTIgKzYzMCwxNiBAQAogICAkKHNyY2RpcikvZW11bHBhcmFtcy9lbGYzMmJtaXAuc2ggJChzcmNkaXIpL2VtdWx0ZW1wbC9taXBzZWxmLmVtIFwKICAgJChzcmNkaXIpL2VtdWx0ZW1wbC9lbGYzMi5lbSAkKHNyY2Rpcikvc2NyaXB0dGVtcGwvZWxmLnNjICR7R0VOX0RFUEVORFN9CiAJJHtHRU5TQ1JJUFRTfSBlbGYzMmI0MzAwICIkKHRkaXJfZWxmMzJiNDMwMCkiCitlZWxmMzJjcjE2Yy5jOiAkKHNyY2RpcikvZW11bHBhcmFtcy9lbGYzMmNyMTZjLnNoIFwKKyAgJChzcmNkaXIpL2VtdWx0ZW1wbC9lbGYzMi5lbSBcCisgICQoc3JjZGlyKS9zY3JpcHR0ZW1wbC9lbGYzMmNyMTZjLnNjICR7R0VOX0RFUEVORFN9CisJJHtHRU5TQ1JJUFRTfSBlbGYzMmNyMTZjICIkKHRkaXJfZWxmMzJjcjE2YykiCiBlZWxmMzJibWlwLmM6ICQoc3JjZGlyKS9lbXVscGFyYW1zL2VsZjMyYm1pcC5zaCBcCiAgICQoc3JjZGlyKS9lbXVsdGVtcGwvbWlwc2VsZi5lbSBcCiAgICQoc3JjZGlyKS9lbXVsdGVtcGwvZWxmMzIuZW0gJChzcmNkaXIpL3NjcmlwdHRlbXBsL2VsZi5zYyAke0dFTl9ERVBFTkRTfQogCSR7R0VOU0NSSVBUU30gZWxmMzJibWlwICIkKHRkaXJfZWxmMzJibWlwKSIKIGVlbGYzMmJzbWlwLmM6ICQoc3JjZGlyKS9lbXVscGFyYW1zL2VsZjMyYnNtaXAuc2ggXAotICAkKHNyY2RpcikvZW11bHBhcmFtcy9lbGYzMmJtaXAuc2ggJChzcmNkaXIpL2VtdWx0ZW1wbC9taXBzZWxmLmVtIFwKKyAgJChzcmNkaXIpL2VtdWxwYXJhbXMvZWxmMzJibWlwLnNoICQoc3JjZGlyKS9lbXVsdGVtcGwvaXJpeC5lbSBcCiAgICQoc3JjZGlyKS9lbXVsdGVtcGwvZWxmMzIuZW0gJChzcmNkaXIpL3NjcmlwdHRlbXBsL2VsZi5zYyAke0dFTl9ERVBFTkRTfQogCSR7R0VOU0NSSVBUU30gZWxmMzJic21pcCAiJCh0ZGlyX2VsZjMyYnNtaXApIgogZWVsZjMyYnRzbWlwLmM6ICQoc3JjZGlyKS9lbXVscGFyYW1zL2VsZjMyYnRzbWlwLnNoIFwKQEAgLTY2NSw2ICs2NzAsNyBAQAogICAkKHNyY2RpcikvZW11bHRlbXBsL2VsZjMyLmVtICQoc3JjZGlyKS9zY3JpcHR0ZW1wbC9lbGYuc2MgJHtHRU5fREVQRU5EU30KIAkke0dFTlNDUklQVFN9IGVsZjMyZWxtaXAgIiQodGRpcl9lbGYzMmVsbWlwKSIKIGVlbGYzMmJtaXBuMzIuYzogJChzcmNkaXIpL2VtdWxwYXJhbXMvZWxmMzJibWlwbjMyLnNoIFwKKyAgJChzcmNkaXIpL2VtdWx0ZW1wbC9pcml4LmVtIFwKICAgJChzcmNkaXIpL2VtdWx0ZW1wbC9lbGYzMi5lbSAkKHNyY2Rpcikvc2NyaXB0dGVtcGwvZWxmLnNjICR7R0VOX0RFUEVORFN9CiAJJHtHRU5TQ1JJUFRTfSBlbGYzMmJtaXBuMzIgIiQodGRpcl9lbGYzMmJtaXBuMzIpIgogZWVsZjMybDQzMDAuYzogJChzcmNkaXIpL2VtdWxwYXJhbXMvZWxmMzJsNDMwMC5zaCBcCkBAIC03ODEsNyArNzg3LDcgQEAKICAgJChzcmNkaXIpL2VtdWx0ZW1wbC9lbGYzMi5lbSAkKHNyY2Rpcikvc2NyaXB0dGVtcGwvZWxmLnNjICR7R0VOX0RFUEVORFN9CiAJJHtHRU5TQ1JJUFRTfSBlbGY2NF9zcGFyY19mYnNkICIkKHRkaXJfZWxmNjRfc3BhcmNfZmJzZCkiCiBlZWxmNjRibWlwLmM6ICQoc3JjZGlyKS9lbXVscGFyYW1zL2VsZjY0Ym1pcC5zaCBcCi0gICQoc3JjZGlyKS9lbXVscGFyYW1zL2VsZjMyYm1pcG4zMi5zaCBcCisgICQoc3JjZGlyKS9lbXVscGFyYW1zL2VsZjMyYm1pcG4zMi5zaCAkKHNyY2RpcikvZW11bHRlbXBsL2lyaXguZW0gXAogICAkKHNyY2RpcikvZW11bHRlbXBsL2VsZjMyLmVtICQoc3JjZGlyKS9zY3JpcHR0ZW1wbC9lbGYuc2MgJHtHRU5fREVQRU5EU30KIAkke0dFTlNDUklQVFN9IGVsZjY0Ym1pcCAiJCh0ZGlyX2VsZjY0Ym1pcCkiCiBlZWxmNjRtbWl4LmM6ICQoc3JjZGlyKS9lbXVscGFyYW1zL2VsZjY0bW1peC5zaCBcCkBAIC0xNjU2LDI5ICsxNjYyLDYgQEAKIAogLlBIT05ZOiBkZXAgZGVwLWluIGRlcC1hbQogCi1ATUFJTlRALlBIT05ZOiBtcHcKLUBNQUlOVEBtcHc6ICQoc3JjZGlyKS9tcHctZWkzODZnbzMyLmMgJChzcmNkaXIpL21wdy1lbGZtaXBzLmMgXAotQE1BSU5UQAkkKHNyY2RpcikvbXB3LWVtNjhrY29mZi5jICQoc3JjZGlyKS9tcHctZXBwY21hYy5jIFwKLUBNQUlOVEAJJChzcmNkaXIpL21wdy1lc2guYyAkKHNyY2RpcikvbXB3LWlkdG1pcHMuYwotQE1BSU5UQAotQE1BSU5UQCQoc3JjZGlyKS9tcHctZWkzODZnbzMyLmM6IGVpMzg2Z28zMi5jCi1ATUFJTlRACSQoc3JjZGlyKS8uLi9tb3ZlLWlmLWNoYW5nZSAkPCAkQAotQE1BSU5UQAotQE1BSU5UQCQoc3JjZGlyKS9tcHctZWxmbWlwcy5jOiBlZWxmMzJlYm1pcC5jCi1ATUFJTlRACSQoc3JjZGlyKS8uLi9tb3ZlLWlmLWNoYW5nZSAkPCAkQAotQE1BSU5UQAotQE1BSU5UQCQoc3JjZGlyKS9tcHctZW02OGtjb2ZmLmM6IGVtNjhrY29mZi5jCi1ATUFJTlRACSQoc3JjZGlyKS8uLi9tb3ZlLWlmLWNoYW5nZSAkPCAkQAotQE1BSU5UQAotQE1BSU5UQCQoc3JjZGlyKS9tcHctZXBwY21hYy5jOiBlcHBjbWFjb3MuYwotQE1BSU5UQAkkKHNyY2RpcikvLi4vbW92ZS1pZi1jaGFuZ2UgJDwgJEAKLUBNQUlOVEAKLUBNQUlOVEAkKHNyY2RpcikvbXB3LWVzaC5jOiBlc2guYwotQE1BSU5UQAkkKHNyY2RpcikvLi4vbW92ZS1pZi1jaGFuZ2UgJDwgJEAKLUBNQUlOVEAKLUBNQUlOVEAkKHNyY2RpcikvbXB3LWlkdG1pcHMuYzogZW1pcHNpZHQuYwotQE1BSU5UQAkkKHNyY2RpcikvLi4vbW92ZS1pZi1jaGFuZ2UgJDwgJEAKLQogIyBXaGF0IGFwcGVhcnMgYmVsb3cgaXMgZ2VuZXJhdGVkIGJ5IGEgaGFja2VkIG1rZGVwIHVzaW5nIGdjYyAtTU0uCiAKICMgRE8gTk9UIERFTEVURSBUSElTIExJTkUgLS0gbWtkZXAgdXNlcyBpdC4KZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmluIGIvbGQvTWFrZWZpbGUuaW4KaW5kZXggNWE5MTY5MC4uNzVlMzM0YSAxMDA2NDQKLS0tIGEvbGQvTWFrZWZpbGUuaW4KKysrIGIvbGQvTWFrZWZpbGUuaW4KQEAgLTI2Myw2ICsyNjMsNyBAQAogCWVlbGYzMl9pODYwLm8gXAogCWVlbGYzMl9zcGFyYy5vIFwKIAllZWxmMzJiNDMwMC5vIFwKKwllZWxmMzJjcjE2Yy5vIFwKIAllZWxmMzJibWlwLm8gXAogCWVlbGYzMmJtaXBuMzIubyBcCiAJZWVsZjMyYnRzbWlwLm8gXApAQCAtMTM1NSwxMiArMTM1NiwxNiBAQAogICAkKHNyY2RpcikvZW11bHBhcmFtcy9lbGYzMmJtaXAuc2ggJChzcmNkaXIpL2VtdWx0ZW1wbC9taXBzZWxmLmVtIFwKICAgJChzcmNkaXIpL2VtdWx0ZW1wbC9lbGYzMi5lbSAkKHNyY2Rpcikvc2NyaXB0dGVtcGwvZWxmLnNjICR7R0VOX0RFUEVORFN9CiAJJHtHRU5TQ1JJUFRTfSBlbGYzMmI0MzAwICIkKHRkaXJfZWxmMzJiNDMwMCkiCitlZWxmMzJjcjE2Yy5jOiAkKHNyY2RpcikvZW11bHBhcmFtcy9lbGYzMmNyMTZjLnNoIFwKKyAgJChzcmNkaXIpL2VtdWx0ZW1wbC9lbGYzMi5lbSBcCisgICQoc3JjZGlyKS9zY3JpcHR0ZW1wbC9lbGYzMmNyMTZjLnNjICR7R0VOX0RFUEVORFN9CisJJHtHRU5TQ1JJUFRTfSBlbGYzMmNyMTZjICIkKHRkaXJfZWxmMzJjcjE2YykiCiBlZWxmMzJibWlwLmM6ICQoc3JjZGlyKS9lbXVscGFyYW1zL2VsZjMyYm1pcC5zaCBcCiAgICQoc3JjZGlyKS9lbXVsdGVtcGwvbWlwc2VsZi5lbSBcCiAgICQoc3JjZGlyKS9lbXVsdGVtcGwvZWxmMzIuZW0gJChzcmNkaXIpL3NjcmlwdHRlbXBsL2VsZi5zYyAke0dFTl9ERVBFTkRTfQogCSR7R0VOU0NSSVBUU30gZWxmMzJibWlwICIkKHRkaXJfZWxmMzJibWlwKSIKIGVlbGYzMmJzbWlwLmM6ICQoc3JjZGlyKS9lbXVscGFyYW1zL2VsZjMyYnNtaXAuc2ggXAotICAkKHNyY2RpcikvZW11bHBhcmFtcy9lbGYzMmJtaXAuc2ggJChzcmNkaXIpL2VtdWx0ZW1wbC9taXBzZWxmLmVtIFwKKyAgJChzcmNkaXIpL2VtdWxwYXJhbXMvZWxmMzJibWlwLnNoICQoc3JjZGlyKS9lbXVsdGVtcGwvaXJpeC5lbSBcCiAgICQoc3JjZGlyKS9lbXVsdGVtcGwvZWxmMzIuZW0gJChzcmNkaXIpL3NjcmlwdHRlbXBsL2VsZi5zYyAke0dFTl9ERVBFTkRTfQogCSR7R0VOU0NSSVBUU30gZWxmMzJic21pcCAiJCh0ZGlyX2VsZjMyYnNtaXApIgogZWVsZjMyYnRzbWlwLmM6ICQoc3JjZGlyKS9lbXVscGFyYW1zL2VsZjMyYnRzbWlwLnNoIFwKQEAgLTEzOTEsNiArMTM5Niw3IEBACiAgICQoc3JjZGlyKS9lbXVsdGVtcGwvZWxmMzIuZW0gJChzcmNkaXIpL3NjcmlwdHRlbXBsL2VsZi5zYyAke0dFTl9ERVBFTkRTfQogCSR7R0VOU0NSSVBUU30gZWxmMzJlbG1pcCAiJCh0ZGlyX2VsZjMyZWxtaXApIgogZWVsZjMyYm1pcG4zMi5jOiAkKHNyY2RpcikvZW11bHBhcmFtcy9lbGYzMmJtaXBuMzIuc2ggXAorICAkKHNyY2RpcikvZW11bHRlbXBsL2lyaXguZW0gXAogICAkKHNyY2RpcikvZW11bHRlbXBsL2VsZjMyLmVtICQoc3JjZGlyKS9zY3JpcHR0ZW1wbC9lbGYuc2MgJHtHRU5fREVQRU5EU30KIAkke0dFTlNDUklQVFN9IGVsZjMyYm1pcG4zMiAiJCh0ZGlyX2VsZjMyYm1pcG4zMikiCiBlZWxmMzJsNDMwMC5jOiAkKHNyY2RpcikvZW11bHBhcmFtcy9lbGYzMmw0MzAwLnNoIFwKQEAgLTE1MDcsNyArMTUxMyw3IEBACiAgICQoc3JjZGlyKS9lbXVsdGVtcGwvZWxmMzIuZW0gJChzcmNkaXIpL3NjcmlwdHRlbXBsL2VsZi5zYyAke0dFTl9ERVBFTkRTfQogCSR7R0VOU0NSSVBUU30gZWxmNjRfc3BhcmNfZmJzZCAiJCh0ZGlyX2VsZjY0X3NwYXJjX2Zic2QpIgogZWVsZjY0Ym1pcC5jOiAkKHNyY2RpcikvZW11bHBhcmFtcy9lbGY2NGJtaXAuc2ggXAotICAkKHNyY2RpcikvZW11bHBhcmFtcy9lbGYzMmJtaXBuMzIuc2ggXAorICAkKHNyY2RpcikvZW11bHBhcmFtcy9lbGYzMmJtaXBuMzIuc2ggJChzcmNkaXIpL2VtdWx0ZW1wbC9pcml4LmVtIFwKICAgJChzcmNkaXIpL2VtdWx0ZW1wbC9lbGYzMi5lbSAkKHNyY2Rpcikvc2NyaXB0dGVtcGwvZWxmLnNjICR7R0VOX0RFUEVORFN9CiAJJHtHRU5TQ1JJUFRTfSBlbGY2NGJtaXAgIiQodGRpcl9lbGY2NGJtaXApIgogZWVsZjY0bW1peC5jOiAkKHNyY2RpcikvZW11bHBhcmFtcy9lbGY2NG1taXguc2ggXApAQCAtMjM1NiwyOSArMjM2Miw2IEBACiAKIC5QSE9OWTogZGVwIGRlcC1pbiBkZXAtYW0KIAotQE1BSU5UQC5QSE9OWTogbXB3Ci1ATUFJTlRAbXB3OiAkKHNyY2RpcikvbXB3LWVpMzg2Z28zMi5jICQoc3JjZGlyKS9tcHctZWxmbWlwcy5jIFwKLUBNQUlOVEAJJChzcmNkaXIpL21wdy1lbTY4a2NvZmYuYyAkKHNyY2RpcikvbXB3LWVwcGNtYWMuYyBcCi1ATUFJTlRACSQoc3JjZGlyKS9tcHctZXNoLmMgJChzcmNkaXIpL21wdy1pZHRtaXBzLmMKLUBNQUlOVEAKLUBNQUlOVEAkKHNyY2RpcikvbXB3LWVpMzg2Z28zMi5jOiBlaTM4NmdvMzIuYwotQE1BSU5UQAkkKHNyY2RpcikvLi4vbW92ZS1pZi1jaGFuZ2UgJDwgJEAKLUBNQUlOVEAKLUBNQUlOVEAkKHNyY2RpcikvbXB3LWVsZm1pcHMuYzogZWVsZjMyZWJtaXAuYwotQE1BSU5UQAkkKHNyY2RpcikvLi4vbW92ZS1pZi1jaGFuZ2UgJDwgJEAKLUBNQUlOVEAKLUBNQUlOVEAkKHNyY2RpcikvbXB3LWVtNjhrY29mZi5jOiBlbTY4a2NvZmYuYwotQE1BSU5UQAkkKHNyY2RpcikvLi4vbW92ZS1pZi1jaGFuZ2UgJDwgJEAKLUBNQUlOVEAKLUBNQUlOVEAkKHNyY2RpcikvbXB3LWVwcGNtYWMuYzogZXBwY21hY29zLmMKLUBNQUlOVEAJJChzcmNkaXIpLy4uL21vdmUtaWYtY2hhbmdlICQ8ICRACi1ATUFJTlRACi1ATUFJTlRAJChzcmNkaXIpL21wdy1lc2guYzogZXNoLmMKLUBNQUlOVEAJJChzcmNkaXIpLy4uL21vdmUtaWYtY2hhbmdlICQ8ICRACi1ATUFJTlRACi1ATUFJTlRAJChzcmNkaXIpL21wdy1pZHRtaXBzLmM6IGVtaXBzaWR0LmMKLUBNQUlOVEAJJChzcmNkaXIpLy4uL21vdmUtaWYtY2hhbmdlICQ8ICRACi0KICMgV2hhdCBhcHBlYXJzIGJlbG93IGlzIGdlbmVyYXRlZCBieSBhIGhhY2tlZCBta2RlcCB1c2luZyBnY2MgLU1NLgogCiAjIERPIE5PVCBERUxFVEUgVEhJUyBMSU5FIC0tIG1rZGVwIHVzZXMgaXQuCmRpZmYgLS1naXQgYS9sZC9ORVdTIGIvbGQvTkVXUwppbmRleCAwZGIwZDE4Li44OWZmMTNmIDEwMDY0NAotLS0gYS9sZC9ORVdTCisrKyBiL2xkL05FV1MKQEAgLTEsNSArMSw3IEBACiAtKi0gdGV4dCAtKi0KIAorKiBjcjE2YyBzdXBwb3J0IGFkZGVkIGJ5IE5TQy4KKwogKiBtMzJyIExpbnV4IChFTEYpIHN1cHBvcnQgYWRkZWQgYnkgUmVuZXNhcy4KIAogKiBJbXByb3ZlZCBsaW5rZXIncyBoYW5kbGluZyBvZiB1bnJlc29sdmVkIHN5bWJvbHMuICBUaGUgc3dpdGNoCmRpZmYgLS1naXQgYS9sZC9jb25maWcuaW4gYi9sZC9jb25maWcuaW4KaW5kZXggZjc2YmI0Mi4uYWNmNDg0ZCAxMDA2NDQKLS0tIGEvbGQvY29uZmlnLmluCisrKyBiL2xkL2NvbmZpZy5pbgpAQCAtMjUsOSArMjUsNiBAQAogLyogRGVmaW5lIHRvIGBsb25nJyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAgKi8KICN1bmRlZiBvZmZfdAogCi0vKiBEZWZpbmUgaWYgeW91IG5lZWQgdG8gaW4gb3JkZXIgZm9yIHN0YXQgYW5kIG90aGVyIHRoaW5ncyB0byB3b3JrLiAgKi8KLSN1bmRlZiBfUE9TSVhfU09VUkNFCi0KIC8qIERlZmluZSB0byBgdW5zaWduZWQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICAqLwogI3VuZGVmIHNpemVfdAogCkBAIC0xMzAsNiArMTI3LDEyIEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvcGFyYW0uaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfU1lTX1BBUkFNX0gKIAorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICAqLworI3VuZGVmIEhBVkVfU1lTX1NUQVRfSAorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICAqLworI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0gKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAgKi8KICN1bmRlZiBIQVZFX1VOSVNURF9ICiAKZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0CmluZGV4IDJjODU0MzEuLjJjM2JjNDggMTAwNjQ0Ci0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKKysrIGIvbGQvY29uZmlndXJlLnRndApAQCAtMjYsNiArMjYsNyBAQAogYXJjLSotZWxmKikJCXRhcmdfZW11bD1hcmNlbGYgOzsKIGF2ci0qLSopCQl0YXJnX2VtdWw9YXZyMgogCQkJdGFyZ19leHRyYV9lbXVscz0iYXZyMSBhdnIzIGF2cjQgYXZyNSIgOzsKK2NyMTZjLSotZWxmKikgICAgICAgICAgIHRhcmdfZW11bD1lbGYzMmNyMTZjIDs7CiBjcmlzLSotKmFvdXQqKQkJdGFyZ19lbXVsPWNyaXNhb3V0CiAJCQl0YXJnX2V4dHJhX2VtdWxzPSJjcmlzZWxmIGNyaXNsaW51eCIKIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscyA7OwpkaWZmIC0tZ2l0IGEvbGQvZW11bHBhcmFtcy9lbGYzMmJtaXBuMzIuc2ggYi9sZC9lbXVscGFyYW1zL2VsZjMyYm1pcG4zMi5zaAppbmRleCAzZGU3OTFjLi5hMzIwZWIyIDEwMDc1NQotLS0gYS9sZC9lbXVscGFyYW1zL2VsZjMyYm1pcG4zMi5zaAorKysgYi9sZC9lbXVscGFyYW1zL2VsZjMyYm1pcG4zMi5zaApAQCAtMTgsMyArMTgsNSBAQAogIyBGb2xsb3dpbmcgdGhlIElSSVggbGlua2VyLCB3ZSBzaW1wbHkgcHV0IC5yb2RhdGEgaW4gdGhlIGRhdGEKICMgc2VnbWVudC4KIFdSSVRBQkxFX1JPREFUQT0KKworRVhUUkFfRU1fRklMRT1pcml4CmRpZmYgLS1naXQgYS9sZC9lbXVscGFyYW1zL2VsZjMyYnNtaXAuc2ggYi9sZC9lbXVscGFyYW1zL2VsZjMyYnNtaXAuc2gKaW5kZXggNWIyOTM5YS4uZGZlMGZlMCAxMDA2NDQKLS0tIGEvbGQvZW11bHBhcmFtcy9lbGYzMmJzbWlwLnNoCisrKyBiL2xkL2VtdWxwYXJhbXMvZWxmMzJic21pcC5zaApAQCAtMSwyICsxLDMgQEAKIC4gJHtzcmNkaXJ9L2VtdWxwYXJhbXMvZWxmMzJibWlwLnNoCiBFTlRSWT1fX3N0YXJ0CitFWFRSQV9FTV9GSUxFPWlyaXgKZGlmZiAtLWdpdCBhL2xkL2VtdWxwYXJhbXMvZWxmMzJjcjE2Yy5zaCBiL2xkL2VtdWxwYXJhbXMvZWxmMzJjcjE2Yy5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzhlNWVkCi0tLSAvZGV2L251bGwKKysrIGIvbGQvZW11bHBhcmFtcy9lbGYzMmNyMTZjLnNoCkBAIC0wLDAgKzEsNSBAQAorU0NSSVBUX05BTUU9ZWxmMzJjcjE2YworVEVNUExBVEVfTkFNRT1lbGYzMgorT1VUUFVUX0ZPUk1BVD0iZWxmMzItY3IxNmMiCitBUkNIPWNyMTZjCitFTlRSWT1fc3RhcnQKZGlmZiAtLWdpdCBhL2xkL2VtdWxwYXJhbXMvZWxmMzJmcnZmZC5zaCBiL2xkL2VtdWxwYXJhbXMvZWxmMzJmcnZmZC5zaAppbmRleCAyMjRhYmVkLi4xZTJlZjU5IDEwMDY0NAotLS0gYS9sZC9lbXVscGFyYW1zL2VsZjMyZnJ2ZmQuc2gKKysrIGIvbGQvZW11bHBhcmFtcy9lbGYzMmZydmZkLnNoCkBAIC0xLDYgKzEsNiBAQAogLiAke3NyY2Rpcn0vZW11bHBhcmFtcy9lbGYzMmZydi5zaAogdW5zZXQgU1RBQ0tfQUREUgotTUFYUEFHRVNJWkU9MHgxMDAwMAorTUFYUEFHRVNJWkU9MHg0MDAwCiBURU1QTEFURV9OQU1FPWVsZjMyCiBHRU5FUkFURV9TSExJQl9TQ1JJUFQ9eWVzCiBFTUJFRERFRD0gIyBUaGlzIGdldHMgdXMgcHJvZ3JhbSBoZWFkZXJzIG1hcHBlZCBhcyBwYXJ0IG9mIHRoZSB0ZXh0IHNlZ21lbnQuCmRpZmYgLS1naXQgYS9sZC9lbXVscGFyYW1zL2VsZjY0Ym1pcC5zaCBiL2xkL2VtdWxwYXJhbXMvZWxmNjRibWlwLnNoCmluZGV4IDQ2NzNjNTIuLmE0Y2U2ZDQgMTAwNzU1Ci0tLSBhL2xkL2VtdWxwYXJhbXMvZWxmNjRibWlwLnNoCisrKyBiL2xkL2VtdWxwYXJhbXMvZWxmNjRibWlwLnNoCkBAIC0xOSwzICsxOSw1IEBACiAjIEZvbGxvd2luZyB0aGUgSVJJWCBsaW5rZXIsIHdlIHNpbXBseSBwdXQgLnJvZGF0YSBpbiB0aGUgZGF0YQogIyBzZWdtZW50LgogV1JJVEFCTEVfUk9EQVRBPQorCitFWFRSQV9FTV9GSUxFPWlyaXgKZGlmZiAtLWdpdCBhL2xkL2VtdWx0ZW1wbC9hcm1lbGYuZW0gYi9sZC9lbXVsdGVtcGwvYXJtZWxmLmVtCmluZGV4IDBjMDUxYWQuLmJlZWI0MGMgMTAwNjQ0Ci0tLSBhL2xkL2VtdWx0ZW1wbC9hcm1lbGYuZW0KKysrIGIvbGQvZW11bHRlbXBsL2FybWVsZi5lbQpAQCAtMjcsNiArMjcsNyBAQAogc3RhdGljIGludCBub19waXBlbGluZV9rbm93bGVkZ2UgPSAwOwogc3RhdGljIGNoYXIgKnRodW1iX2VudHJ5X3N5bWJvbCA9IE5VTEw7CiBzdGF0aWMgYmZkICpiZmRfZm9yX2ludGVyd29yazsKK3N0YXRpYyBpbnQgYnl0ZXN3YXBfY29kZSA9IDA7CiAKIHN0YXRpYyB2b2lkCiBnbGQke0VNVUxBVElPTl9OQU1FfV9iZWZvcmVfcGFyc2UgKHZvaWQpCkBAIC0xMTcsNyArMTE4LDggQEAKICAgICBMQU5HX0ZPUl9FQUNIX0lOUFVUX1NUQVRFTUVOVCAoaXMpCiAgICAgICB7CiAJaWYgKCFiZmRfZWxmMzJfYXJtX3Byb2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24gKGlzLT50aGVfYmZkLCAmIGxpbmtfaW5mbywKLQkJCQkJCSAgICAgIG5vX3BpcGVsaW5lX2tub3dsZWRnZSkpCisJCQkJCQkgICAgICBub19waXBlbGluZV9rbm93bGVkZ2UsCisJCQkJCQkgICAgICBieXRlc3dhcF9jb2RlKSkKIAkgIHsKIAkgICAgLyogeGdldHRleHQ6Yy1mb3JtYXQgKi8KIAkgICAgZWluZm8gKF8oIkVycm9ycyBlbmNvdW50ZXJlZCBwcm9jZXNzaW5nIGZpbGUgJXMiKSwgaXMtPmZpbGVuYW1lKTsKQEAgLTE4NCw2ICsxODYsNyBAQAogIwogUEFSU0VfQU5EX0xJU1RfUFJPTE9HVUU9JwogI2RlZmluZSBPUFRJT05fVEhVTUJfRU5UUlkJCTMwMQorI2RlZmluZSBPUFRJT05fQkU4CQkJMzAyCiAnCiAKIFBBUlNFX0FORF9MSVNUX1NIT1JUT1BUUz1wCkBAIC0xOTEsMTEgKzE5NCwxMyBAQAogUEFSU0VfQU5EX0xJU1RfTE9OR09QVFM9JwogICB7ICJuby1waXBlbGluZS1rbm93bGVkZ2UiLCBub19hcmd1bWVudCwgTlVMTCwgJ1wncFwnJ30sCiAgIHsgInRodW1iLWVudHJ5IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVElPTl9USFVNQl9FTlRSWX0sCisgIHsgImJlOCIsIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fQkU4fSwKICcKIAogUEFSU0VfQU5EX0xJU1RfT1BUSU9OUz0nCiAgIGZwcmludGYgKGZpbGUsIF8oIiAgLXAgLS1uby1waXBlbGluZS1rbm93bGVkZ2UgIFN0b3AgdGhlIGxpbmtlciBrbm93aW5nIGFib3V0IHRoZSBwaXBlbGluZSBsZW5ndGhcbiIpKTsKICAgZnByaW50ZiAoZmlsZSwgXygiICAgICAtLXRodW1iLWVudHJ5PTxzeW0+ICAgICAgU2V0IHRoZSBlbnRyeSBwb2ludCB0byBiZSBUaHVtYiBzeW1ib2wgPHN5bT5cbiIpKTsKKyAgZnByaW50ZiAoZmlsZSwgXygiICAgICAtLWJlOCAgICAgICAgICAgICAgICAgICAgT3B1dHB1dCBCRTggZm9ybWF0IGltYWdlXG4iKSk7CiAnCiAKIFBBUlNFX0FORF9MSVNUX0FSR1NfQ0FTRVM9JwpAQCAtMjA2LDYgKzIxMSwxMCBAQAogICAgIGNhc2UgT1BUSU9OX1RIVU1CX0VOVFJZOgogICAgICAgdGh1bWJfZW50cnlfc3ltYm9sID0gb3B0YXJnOwogICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE9QVElPTl9CRTg6CisgICAgICBieXRlc3dhcF9jb2RlID0gMTsKKyAgICAgIGJyZWFrOwogJwogCiAjIFdlIGhhdmUgb3VyIG93biBhZnRlcl9vcGVuIGFuZCBiZWZvcmVfYWxsb2NhdGlvbiBmdW5jdGlvbnMsIGJ1dCB0aGV5IGNhbGwKZGlmZiAtLWdpdCBhL2xkL2VtdWx0ZW1wbC9hcm1lbGZfb2FiaS5lbSBiL2xkL2VtdWx0ZW1wbC9hcm1lbGZfb2FiaS5lbQppbmRleCBkNzVjNjU4Li44ZmYyYWQxIDEwMDY0NAotLS0gYS9sZC9lbXVsdGVtcGwvYXJtZWxmX29hYmkuZW0KKysrIGIvbGQvZW11bHRlbXBsL2FybWVsZl9vYWJpLmVtCkBAIC02OCw3ICs2OCw3IEBACiAgIHsKICAgICBMQU5HX0ZPUl9FQUNIX0lOUFVUX1NUQVRFTUVOVCAoaXMpCiAgICAgICB7Ci0JaWYgKCFiZmRfZWxmMzJfYXJtX3Byb2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24gKGlzLT50aGVfYmZkLCAmbGlua19pbmZvLCAwKSkKKwlpZiAoIWJmZF9lbGYzMl9hcm1fcHJvY2Vzc19iZWZvcmVfYWxsb2NhdGlvbiAoaXMtPnRoZV9iZmQsICZsaW5rX2luZm8sIDAsIDApKQogCSAgewogCSAgICAvKiB4Z2V0dGV4dDpjLWZvcm1hdCAqLwogCSAgICBlaW5mbyAoXygiRXJyb3JzIGVuY291bnRlcmVkIHByb2Nlc3NpbmcgZmlsZSAlcyIpLCBpcy0+ZmlsZW5hbWUpOwpkaWZmIC0tZ2l0IGEvbGQvZW11bHRlbXBsL2VsZjMyLmVtIGIvbGQvZW11bHRlbXBsL2VsZjMyLmVtCmluZGV4IDQ1NzQ5ZTcuLjkyZjUwMmQgMTAwNjQ0Ci0tLSBhL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQorKysgYi9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KQEAgLTg5LDYgKzg5LDI4IEBACiBFT0YKIGZpCiAKK2lmIHRlc3QgeCIkTERFTVVMX1JFQ09HTklaRURfRklMRSIgIT0geGdsZCIke0VNVUxBVElPTl9OQU1FfSJfbG9hZF9zeW1ib2xzOyB0aGVuCitjYXQgPj5lJHtFTVVMQVRJT05fTkFNRX0uYyA8PEVPRgorLyogSGFuZGxlIGFzX25lZWRlZCBEVF9ORUVERUQuICAqLworCitzdGF0aWMgYmZkX2Jvb2xlYW4KK2dsZCR7RU1VTEFUSU9OX05BTUV9X2xvYWRfc3ltYm9scyAobGFuZ19pbnB1dF9zdGF0ZW1lbnRfdHlwZSAqZW50cnkpCit7CisgIGlmICghZW50cnktPmFzX25lZWRlZAorICAgICAgfHwgKGJmZF9nZXRfZmlsZV9mbGFncyAoZW50cnktPnRoZV9iZmQpICYgRFlOQU1JQykgPT0gMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogVGVsbCB0aGUgRUxGIGxpbmtlciB0aGF0IHdlIGRvbid0IHdhbnQgdGhlIG91dHB1dCBmaWxlIHRvIGhhdmUgYQorICAgICBEVF9ORUVERUQgZW50cnkgZm9yIHRoaXMgZmlsZSwgdW5sZXNzIGl0IGlzIHVzZWQgdG8gcmVzb2x2ZQorICAgICByZWZlcmVuY2VzIGluIGEgcmVndWxhciBvYmplY3QuICAqLworICBiZmRfZWxmX3NldF9keW5fbGliX2NsYXNzIChlbnRyeS0+dGhlX2JmZCwgRFlOX0FTX05FRURFRCk7CisKKyAgLyogQ29udGludWUgb24gd2l0aCBub3JtYWwgbG9hZF9zeW1ib2xzIHByb2Nlc3NpbmcuICAqLworICByZXR1cm4gRkFMU0U7Cit9CitFT0YKK2ZpCisKIGNhdCA+PmUke0VNVUxBVElPTl9OQU1FfS5jIDw8RU9GCiAKIC8qIFRoZXNlIHZhcmlhYmxlcyBhcmUgcmVxdWlyZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiBiYWNrIGFuZCBmb3J0aApAQCAtMzM2LDE0ICszNTgsMTMgQEAKICAgICAgIHJldHVybiBUUlVFOwogICAgIH0KIAotICAvKiBUZWxsIHRoZSBFTEYgYmFja2VuZCB0aGF0IHdlIGRvbid0IHdhbnQgdGhlIG91dHB1dCBmaWxlIHRvIGhhdmUgYQotICAgICBEVF9ORUVERUQgZW50cnkgZm9yIHRoaXMgZmlsZS4gICovCi0gIGJmZF9lbGZfc2V0X2R0X25lZWRlZF9uYW1lIChhYmZkLCAiIik7CisgIC8qIFNwZWNpZnkgdGhlIHNvbmFtZSB0byB1c2UuICAqLworICBiZmRfZWxmX3NldF9kdF9uZWVkZWRfbmFtZSAoYWJmZCwgc29uYW1lKTsKIAotICAvKiBUZWxsIHRoZSBFTEYgYmFja2VuZCB0aGF0IHRoZSBvdXRwdXQgZmlsZSBuZWVkcyBhIERUX05FRURFRAotICAgICBlbnRyeSBmb3IgdGhpcyBmaWxlIGlmIGl0IGlzIHVzZWQgdG8gcmVzb2x2ZSB0aGUgcmVmZXJlbmNlIGluCi0gICAgIGEgcmVndWxhciBvYmplY3QuICAqLwotICBiZmRfZWxmX3NldF9kdF9uZWVkZWRfc29uYW1lIChhYmZkLCBzb25hbWUpOworICAvKiBUZWxsIHRoZSBFTEYgbGlua2VyIHRoYXQgd2UgZG9uJ3Qgd2FudCB0aGUgb3V0cHV0IGZpbGUgdG8gaGF2ZSBhCisgICAgIERUX05FRURFRCBlbnRyeSBmb3IgdGhpcyBmaWxlLCB1bmxlc3MgaXQgaXMgdXNlZCB0byByZXNvbHZlCisgICAgIHJlZmVyZW5jZXMgaW4gYSByZWd1bGFyIG9iamVjdC4gICovCisgIGJmZF9lbGZfc2V0X2R5bl9saWJfY2xhc3MgKGFiZmQsIERZTl9EVF9ORUVERUQpOwogCiAgIC8qIEFkZCB0aGlzIGZpbGUgaW50byB0aGUgc3ltYm9sIHRhYmxlLiAgKi8KICAgaWYgKCEgYmZkX2xpbmtfYWRkX3N5bWJvbHMgKGFiZmQsICZsaW5rX2luZm8pKQpAQCAtODUwLDcgKzg3MSw3IEBACiAgIHJwYXRoID0gY29tbWFuZF9saW5lLnJwYXRoOwogICBpZiAocnBhdGggPT0gTlVMTCkKICAgICBycGF0aCA9IChjb25zdCBjaGFyICopIGdldGVudiAoIkxEX1JVTl9QQVRIIik7Ci0gIGlmICghIChiZmRfZWxmJHtFTEZTSVpFfV9zaXplX2R5bmFtaWNfc2VjdGlvbnMKKyAgaWYgKCEgKGJmZF9lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zCiAJIChvdXRwdXRfYmZkLCBjb21tYW5kX2xpbmUuc29uYW1lLCBycGF0aCwKIAkgIGNvbW1hbmRfbGluZS5maWx0ZXJfc2hsaWIsCiAJICAoY29uc3QgY2hhciAqIGNvbnN0ICopIGNvbW1hbmRfbGluZS5hdXhpbGlhcnlfZmlsdGVycywKQEAgLTEzODYsNyArMTQwNyw3IEBACiBzdGF0aWMgdm9pZAogZ2xkJHtFTVVMQVRJT05fTkFNRX1fZmluaXNoICh2b2lkKQogewotICBpZiAoYmZkX2VsZiR7RUxGU0laRX1fZGlzY2FyZF9pbmZvIChvdXRwdXRfYmZkLCAmbGlua19pbmZvKSkKKyAgaWYgKGJmZF9lbGZfZGlzY2FyZF9pbmZvIChvdXRwdXRfYmZkLCAmbGlua19pbmZvKSkKICAgICB7CiAgICAgICBsYW5nX3Jlc2V0X21lbW9yeV9yZWdpb25zICgpOwogCkBAIC0xNzUyLDcgKzE3NzMsNyBAQAogICBnbGQke0VNVUxBVElPTl9OQU1FfV9oYW5kbGVfb3B0aW9uLAogICAke0xERU1VTF9VTlJFQ09HTklaRURfRklMRS1OVUxMfSwKICAgJHtMREVNVUxfTElTVF9PUFRJT05TLWdsZCR7RU1VTEFUSU9OX05BTUV9X2xpc3Rfb3B0aW9uc30sCi0gICR7TERFTVVMX1JFQ09HTklaRURfRklMRS1OVUxMfSwKKyAgJHtMREVNVUxfUkVDT0dOSVpFRF9GSUxFLWdsZCR7RU1VTEFUSU9OX05BTUV9X2xvYWRfc3ltYm9sc30sCiAgICR7TERFTVVMX0ZJTkRfUE9URU5USUFMX0xJQlJBUklFUy1OVUxMfSwKICAgJHtMREVNVUxfTkVXX1ZFUlNfUEFUVEVSTi1OVUxMfQogfTsKZGlmZiAtLWdpdCBhL2xkL2VtdWx0ZW1wbC9ocHBhZWxmLmVtIGIvbGQvZW11bHRlbXBsL2hwcGFlbGYuZW0KaW5kZXggZTk0NDVmMi4uOTNlODhhZCAxMDA2NDQKLS0tIGEvbGQvZW11bHRlbXBsL2hwcGFlbGYuZW0KKysrIGIvbGQvZW11bHRlbXBsL2hwcGFlbGYuZW0KQEAgLTI1NCwxMSArMjU0LDExIEBACiBzdGF0aWMgdm9pZAogZ2xkJHtFTVVMQVRJT05fTkFNRX1fZmluaXNoICh2b2lkKQogewotICAvKiBiZmRfZWxmMzJfZGlzY2FyZF9pbmZvIGp1c3QgcGxheXMgd2l0aCBkZWJ1Z2dpbmcgc2VjdGlvbnMsCisgIC8qIGJmZF9lbGZfZGlzY2FyZF9pbmZvIGp1c3QgcGxheXMgd2l0aCBkZWJ1Z2dpbmcgc2VjdGlvbnMsCiAgICAgIGllLiBkb2Vzbid0IGFmZmVjdCBhbnkgY29kZSwgc28gd2UgY2FuIGRlbGF5IHJlc2l6aW5nIHRoZQogICAgICBzZWN0aW9ucy4gIEl0J3MgbGlrZWx5IHdlJ2xsIHJlc2l6ZSBldmVyeXRoaW5nIGluIHRoZSBwcm9jZXNzIG9mCiAgICAgIGFkZGluZyBzdHVicy4gICovCi0gIGlmIChiZmRfZWxmJHtFTEZTSVpFfV9kaXNjYXJkX2luZm8gKG91dHB1dF9iZmQsICZsaW5rX2luZm8pKQorICBpZiAoYmZkX2VsZl9kaXNjYXJkX2luZm8gKG91dHB1dF9iZmQsICZsaW5rX2luZm8pKQogICAgIG5lZWRfbGF5aW5nX291dCA9IDE7CiAKICAgLyogSWYgZ2VuZXJhdGluZyBhIHJlbG9jYXRhYmxlIG91dHB1dCBmaWxlLCB0aGVuIHdlIGRvbid0CmRpZmYgLS1naXQgYS9sZC9lbXVsdGVtcGwvaXJpeC5lbSBiL2xkL2VtdWx0ZW1wbC9pcml4LmVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NTExZGQKLS0tIC9kZXYvbnVsbAorKysgYi9sZC9lbXVsdGVtcGwvaXJpeC5lbQpAQCAtMCwwICsxLDQxIEBACisjIFRoaXMgc2hlbGwgc2NyaXB0IGVtaXRzIGEgQyBmaWxlLiAtKi0gQyAtKi0KKyMgICBDb3B5cmlnaHQgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0xELCB0aGUgR251IExpbmtlci4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyMKKworY2F0ID4+ZSR7RU1VTEFUSU9OX05BTUV9LmMgPDxFT0YKKworI2luY2x1ZGUgImxkLmgiCisjaW5jbHVkZSAibGRtYWluLmgiCisjaW5jbHVkZSAibGliaWJlcnR5LmgiCisKKy8qIFRoZSBuYXRpdmUgSVJJWCBsaW5rZXIgd2lsbCBhbHdheXMgY3JlYXRlIGEgRFRfU09OQU1FIGZvciBzaGFyZWQgb2JqZWN0cy4KKyAgIFdoaWxlIHRoaXMgc2hvdWxkbid0IHJlYWxseSBiZSBuZWNlc3NhcnkgZm9yIEFCSSBjb25mb3JtYW5jZSwgc29tZSB2ZXJzaW9ucworICAgb2YgdGhlIG5hdGl2ZSBsaW5rZXIgd2lsbCBzZWdmYXVsdCBpZiB0aGUgdGFnIGlzIG1pc3NpbmcuICAqLworCitzdGF0aWMgdm9pZAoraXJpeF9hZnRlcl9vcGVuICh2b2lkKQoreworICBpZiAobGlua19pbmZvLnNoYXJlZCAmJiBjb21tYW5kX2xpbmUuc29uYW1lID09IDApCisgICAgY29tbWFuZF9saW5lLnNvbmFtZSA9IGJhc2VuYW1lIChiZmRfZ2V0X2ZpbGVuYW1lIChvdXRwdXRfYmZkKSk7CisKKyAgZ2xkJHtFTVVMQVRJT05fTkFNRX1fYWZ0ZXJfb3BlbiAoKTsKK30KK0VPRgorCitMREVNVUxfQUZURVJfT1BFTj1pcml4X2FmdGVyX29wZW4KZGlmZiAtLWdpdCBhL2xkL2VtdWx0ZW1wbC9wcGM2NGVsZi5lbSBiL2xkL2VtdWx0ZW1wbC9wcGM2NGVsZi5lbQppbmRleCA1NzQ2Zjc5Li40ZjQwOGE5IDEwMDY0NAotLS0gYS9sZC9lbXVsdGVtcGwvcHBjNjRlbGYuZW0KKysrIGIvbGQvZW11bHRlbXBsL3BwYzY0ZWxmLmVtCkBAIC0xLDUgKzEsNSBAQAogIyBUaGlzIHNoZWxsIHNjcmlwdCBlbWl0cyBhIEMgZmlsZS4gLSotIEMgLSotCi0jICAgQ29weXJpZ2h0IDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdMRCwgdGhlIEdudSBMaW5rZXIuCiAjCkBAIC02NSw2ICs2NSw4IEBACiAgICAgICAmJiBsaW5rX2luZm8uaGFzaC0+Y3JlYXRvciAhPSAmYmZkX2VsZjY0X3Bvd2VycGNsZV92ZWMpCiAgICAgcmV0dXJuOwogCisgIGxpbmtfaW5mby53cmFwX2NoYXIgPSAnLic7CisKICAgc3R1Yl9maWxlID0gbGFuZ19hZGRfaW5wdXRfZmlsZSAoImxpbmtlciBzdHVicyIsCiAJCQkJICAgbGFuZ19pbnB1dF9maWxlX2lzX2Zha2VfZW51bSwKIAkJCQkgICBOVUxMKTsKQEAgLTMxNiwxMSArMzE4LDExIEBACiAgICAgIGRlc2NyaXB0b3IgaW4gdGhlIC5vcGQgc2VjdGlvbi4gICovCiAgIGVudHJ5X3NlY3Rpb24gPSAiLm9wZCI7CiAKLSAgLyogYmZkX2VsZjY0X2Rpc2NhcmRfaW5mbyBqdXN0IHBsYXlzIHdpdGggZGVidWdnaW5nIHNlY3Rpb25zLAorICAvKiBiZmRfZWxmX2Rpc2NhcmRfaW5mbyBqdXN0IHBsYXlzIHdpdGggZGVidWdnaW5nIHNlY3Rpb25zLAogICAgICBpZS4gZG9lc24ndCBhZmZlY3QgYW55IGNvZGUsIHNvIHdlIGNhbiBkZWxheSByZXNpemluZyB0aGUKICAgICAgc2VjdGlvbnMuICBJdCdzIGxpa2VseSB3ZSdsbCByZXNpemUgZXZlcnl0aGluZyBpbiB0aGUgcHJvY2VzcyBvZgogICAgICBhZGRpbmcgc3R1YnMuICAqLwotICBpZiAoYmZkX2VsZiR7RUxGU0laRX1fZGlzY2FyZF9pbmZvIChvdXRwdXRfYmZkLCAmbGlua19pbmZvKSkKKyAgaWYgKGJmZF9lbGZfZGlzY2FyZF9pbmZvIChvdXRwdXRfYmZkLCAmbGlua19pbmZvKSkKICAgICBuZWVkX2xheWluZ19vdXQgPSAxOwogCiAgIC8qIElmIGdlbmVyYXRpbmcgYSByZWxvY2F0YWJsZSBvdXRwdXQgZmlsZSwgdGhlbiB3ZSBkb24ndCBoYXZlIGFueQpkaWZmIC0tZ2l0IGEvbGQvZW11bHRlbXBsL3NoNjRlbGYuZW0gYi9sZC9lbXVsdGVtcGwvc2g2NGVsZi5lbQppbmRleCA3ZjJiMDM3Li44M2JmZTY3IDEwMDY0NAotLS0gYS9sZC9lbXVsdGVtcGwvc2g2NGVsZi5lbQorKysgYi9sZC9lbXVsdGVtcGwvc2g2NGVsZi5lbQpAQCAtMzc5LDcgKzM3OSw3IEBACiAgICAgIGxhbmdfcHJvY2VzcywgYW5kIHRoZSBzZWNvbmQgdGltZSB3aGVuIGxhbmdfcHJvY2VzcyBjYWxscyBsZGVtdWxfZmluaXNoLAogICAgICB3aGljaCBjYWxscyBnbGQke0VNVUxBVElPTl9OQU1FfV9maW5pc2gsIGUuZy4gZ2xkc2hlbGYzMl9maW5pc2gsIHdoaWNoCiAgICAgIGlzIGRlZmluZWQgaW4gZW11bHRlbXBsL2VsZjMyLmVtIGFuZCBjYWxscyBsZGVtdWxfYWZ0ZXJfYWxsb2NhdGlvbiwKLSAgICAgaWYgYmZkX2VsZiR7RUxGU0laRX1fZGlzY2FyZF9pbmZvIHJldHVybmVkIHRydWUuICAqLworICAgICBpZiBiZmRfZWxmX2Rpc2NhcmRfaW5mbyByZXR1cm5lZCB0cnVlLiAgKi8KICAgaWYgKGNyYW5nZXMtPmNvbnRlbnRzICE9IE5VTEwpCiAgICAgZnJlZSAoY3Jhbmdlcy0+Y29udGVudHMpOwogCmRpZmYgLS1naXQgYS9sZC9sZC50ZXhpbmZvIGIvbGQvbGQudGV4aW5mbwppbmRleCA1NWY4NjFlLi5mNmJkOWZmIDEwMDY0NAotLS0gYS9sZC9sZC50ZXhpbmZvCisrKyBiL2xkL2xkLnRleGluZm8KQEAgLTk3Miw2ICs5NzIsMTggQEAKIHNvIHRoZSBAc2FtcHstLWFjY2VwdC11bmtub3duLWlucHV0LWFyY2h9IG9wdGlvbiBoYXMgYmVlbiBhZGRlZCB0bwogcmVzdG9yZSB0aGUgb2xkIGJlaGF2aW91ci4KIAorQGtpbmRleCAtLWFzLW5lZWRlZAorQGtpbmRleCAtLW5vLWFzLW5lZWRlZAorQGl0ZW0gLS1hcy1uZWVkZWQKK0BpdGVteCAtLW5vLWFzLW5lZWRlZAorVGhpcyBvcHRpb24gYWZmZWN0cyBFTEYgRFRfTkVFREVEIHRhZ3MgZm9yIGR5bmFtaWMgbGlicmFyaWVzIG1lbnRpb25lZAorb24gdGhlIGNvbW1hbmQgbGluZSBhZnRlciB0aGUgQG9wdGlvbnstLWFzLW5lZWRlZH0gb3B0aW9uLiAgTm9ybWFsbHksCit0aGUgbGlua2VyIHdpbGwgYWRkIGEgRFRfTkVFREVEIHRhZyBmb3IgZWFjaCBkeW5hbWljIGxpYnJhcnkgbWVudGlvbmVkCitvbiB0aGUgY29tbWFuZCBsaW5lLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGxpYnJhcnkgaXMgYWN0dWFsbHkKK25lZWRlZC4gQG9wdGlvbnstLWFzLW5lZWRlZH0gY2F1c2VzIERUX05FRURFRCB0YWdzIHRvIG9ubHkgYmUgZW1pdHRlZAorZm9yIGxpYnJhcmllcyB0aGF0IHNhdGlzZnkgc29tZSByZWZlcmVuY2UgZnJvbSByZWd1bGFyIG9iamVjdHMuCitAb3B0aW9uey0tbm8tYXMtbmVlZGVkfSByZXN0b3JlcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuCisKIEBraW5kZXggLWFzc2VydCBAdmFye2tleXdvcmR9CiBAaXRlbSAtYXNzZXJ0IEB2YXJ7a2V5d29yZH0KIFRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgZm9yIFN1bk9TIGNvbXBhdGliaWxpdHkuCkBAIC0xNzAyLDkgKzE3MTQsOSBAQAogCiBAc21hbGxleGFtcGxlCiB2b2lkICoKLV9fd3JhcF9tYWxsb2MgKGludCBjKQorX193cmFwX21hbGxvYyAoc2l6ZV90IGMpCiBAewotICBwcmludGYgKCJtYWxsb2MgY2FsbGVkIHdpdGggJWxkXG4iLCBjKTsKKyAgcHJpbnRmICgibWFsbG9jIGNhbGxlZCB3aXRoICV6dVxuIiwgYyk7CiAgIHJldHVybiBfX3JlYWxfbWFsbG9jIChjKTsKIEB9CiBAZW5kIHNtYWxsZXhhbXBsZQpAQCAtNDc1MCw2ICs0NzYyLDEyIEBACiBicmFuY2hlZCB0byB1c2luZyBhIEJYIGluc3RydWN0aW9uLCBhbmQgdGhlIHByb2dyYW0gd2lsbCBzdGFydAogZXhlY3V0aW5nIGluIFRodW1iIG1vZGUgc3RyYWlnaHQgYXdheS4KIAorQGNpbmRleCBCRTgKK0BraW5kZXggLS1iZTgKK1RoZSBAc2FtcHstLWJlOH0gc3dpdGNoIGluc3RydWN0cyBAY29tbWFuZHtsZH0gdG8gZ2VuZXJhdGUgQkU4IGZvcm1hdAorZXhlY3V0YWJsZXMuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIHdoZW4gbGlua2luZyBiaWctZW5kaWFuIG9iamVjdHMuCitUaGUgcmVzdWx0aW5nIGltYWdlIHdpbGwgY29udGFpbiBiaWctZW5kaWFuIGRhdGEgYW5kIGxpdHRsZS1lbmRpYW4gY29kZS4KKwogQGlmY2xlYXIgR0VORVJJQwogQGxvd2Vyc2VjdGlvbnMKIEBlbmQgaWZjbGVhcgpkaWZmIC0tZ2l0IGEvbGQvbGRmaWxlLmMgYi9sZC9sZGZpbGUuYwppbmRleCBhNmYwZDYwLi5lN2E3ZDhjIDEwMDY0NAotLS0gYS9sZC9sZGZpbGUuYworKysgYi9sZC9sZGZpbGUuYwpAQCAtNDQsNyArNDQsNiBAQAogZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGxkZmlsZV9vdXRwdXRfYXJjaGl0ZWN0dXJlOwogc2VhcmNoX2RpcnNfdHlwZSAqIHNlYXJjaF9oZWFkOwogCi0jaWZuZGVmIE1QVwogI2lmZGVmIFZNUwogY2hhciAqIHNsYXNoID0gIiI7CiAjZWxzZQpAQCAtNTQsMTAgKzUzLDYgQEAKIGNoYXIgKiBzbGFzaCA9ICIvIjsKICNlbmRpZgogI2VuZGlmCi0jZWxzZSAvKiBNUFcgKi8KLS8qIFRoZSBNUFcgcGF0aCBjaGFyIGlzIGEgY29sb24uICAqLwotY2hhciAqIHNsYXNoID0gIjoiOwotI2VuZGlmIC8qIE1QVyAqLwogCiB0eXBlZGVmIHN0cnVjdCBzZWFyY2hfYXJjaAogewpkaWZmIC0tZ2l0IGEvbGQvbGRsYW5nLmMgYi9sZC9sZGxhbmcuYwppbmRleCA5YTZmZWIyLi4wYzA4NjAxIDEwMDY0NAotLS0gYS9sZC9sZGxhbmcuYworKysgYi9sZC9sZGxhbmcuYwpAQCAtNDQ1LDYgKzQ0NSw3IEBACiAgIHAtPm5leHQgPSBOVUxMOwogICBwLT5zeW1ib2xfY291bnQgPSAwOwogICBwLT5keW5hbWljID0gY29uZmlnLmR5bmFtaWNfbGluazsKKyAgcC0+YXNfbmVlZGVkID0gYXNfbmVlZGVkOwogICBwLT53aG9sZV9hcmNoaXZlID0gd2hvbGVfYXJjaGl2ZTsKICAgcC0+bG9hZGVkID0gRkFMU0U7CiAgIGxhbmdfc3RhdGVtZW50X2FwcGVuZCAoJmlucHV0X2ZpbGVfY2hhaW4sCkBAIC0xODQyLDcgKzE4NDMsNyBAQAogCSAgLyogTWF5YmUgd2Ugc2hvdWxkIGxvYWQgdGhlIGZpbGUncyBzeW1ib2xzLiAgKi8KIAkgIGlmIChzLT53aWxkX3N0YXRlbWVudC5maWxlbmFtZQogCSAgICAgICYmICEgd2lsZGNhcmRwIChzLT53aWxkX3N0YXRlbWVudC5maWxlbmFtZSkpCi0JICAgICh2b2lkKSBsb29rdXBfbmFtZSAocy0+d2lsZF9zdGF0ZW1lbnQuZmlsZW5hbWUpOworCSAgICBsb29rdXBfbmFtZSAocy0+d2lsZF9zdGF0ZW1lbnQuZmlsZW5hbWUpOwogCSAgb3Blbl9pbnB1dF9iZmRzIChzLT53aWxkX3N0YXRlbWVudC5jaGlsZHJlbi5oZWFkLCBmb3JjZSk7CiAJICBicmVhazsKIAljYXNlIGxhbmdfZ3JvdXBfc3RhdGVtZW50X2VudW06CkBAIC0zMzQ4LDggKzMzNDksNyBAQAogCSAgICBpZiAob3MtPmJmZF9zZWN0aW9uICE9IE5VTEwpCiAJICAgICAgewogCQlkb3QgPSBvcy0+YmZkX3NlY3Rpb24tPnZtYTsKLQkJKHZvaWQpIGxhbmdfZG9fYXNzaWdubWVudHNfMSAob3MtPmNoaWxkcmVuLmhlYWQsIG9zLAotCQkJCQkgICAgICBvcy0+ZmlsbCwgZG90KTsKKwkJbGFuZ19kb19hc3NpZ25tZW50c18xIChvcy0+Y2hpbGRyZW4uaGVhZCwgb3MsIG9zLT5maWxsLCBkb3QpOwogCQlkb3QgPSAob3MtPmJmZF9zZWN0aW9uLT52bWEKIAkJICAgICAgICsgVE9fQUREUiAob3MtPmJmZF9zZWN0aW9uLT5fcmF3X3NpemUpKTsKIApAQCAtMzY4Nyw3ICszNjg3LDcgQEAKIAkgIGlmICghIGJmZF9tZXJnZV9wcml2YXRlX2JmZF9kYXRhIChpbnB1dF9iZmQsIG91dHB1dF9iZmQpKQogCSAgICB7CiAJICAgICAgaWYgKGNvbW1hbmRfbGluZS53YXJuX21pc21hdGNoKQotCQllaW5mbyAoXygiJUUlWDogZmFpbGVkIHRvIG1lcmdlIHRhcmdldCBzcGVjaWZpYyBkYXRhIG9mIGZpbGUgJUJcbiIpLAorCQllaW5mbyAoXygiJVAlWDogZmFpbGVkIHRvIG1lcmdlIHRhcmdldCBzcGVjaWZpYyBkYXRhIG9mIGZpbGUgJUJcbiIpLAogCQkgICAgICAgaW5wdXRfYmZkKTsKIAkgICAgfQogCSAgaWYgKCEgY29tbWFuZF9saW5lLndhcm5fbWlzbWF0Y2gpCkBAIC0zOTM4LDI0ICszOTM4LDYgQEAKICAgICB9CiB9CiAKLSNpZiAwCi0KLS8qIE5vdCB1c2VkLiAgKi8KLQotdm9pZAotbGFuZ19mb3JfZWFjaF9pbnB1dF9zZWN0aW9uICh2b2lkICgqZnVuYykgKGJmZCAqYWIsIGFzZWN0aW9uICphcykpCi17Ci0gIExBTkdfRk9SX0VBQ0hfSU5QVVRfU1RBVEVNRU5UIChmKQotICAgIHsKLSAgICAgIGFzZWN0aW9uICpzOwotCi0gICAgICBmb3IgKHMgPSBmLT50aGVfYmZkLT5zZWN0aW9uczsgcyAhPSBOVUxMOyBzID0gcy0+bmV4dCkKLQlmdW5jIChmLT50aGVfYmZkLCBzKTsKLSAgICB9Ci19Ci0KLSNlbmRpZgotCiB2b2lkCiBsZGxhbmdfYWRkX2ZpbGUgKGxhbmdfaW5wdXRfc3RhdGVtZW50X3R5cGUgKmVudHJ5KQogewpkaWZmIC0tZ2l0IGEvbGQvbGRsYW5nLmggYi9sZC9sZGxhbmcuaAppbmRleCBkNTE4Mzk4Li42NDlmZWExIDEwMDY0NAotLS0gYS9sZC9sZGxhbmcuaAorKysgYi9sZC9sZGxhbmcuaApAQCAtMjY0LDYgKzI2NCwxMCBAQAogICAvKiBXaGV0aGVyIHRvIHNlYXJjaCBmb3IgdGhpcyBlbnRyeSBhcyBhIGR5bmFtaWMgYXJjaGl2ZS4gICovCiAgIGJmZF9ib29sZWFuIGR5bmFtaWM7CiAKKyAgLyogV2hldGhlciB0aGlzIGVudHJ5IHNob3VsZCBjYXVzZSBhIERUX05FRURFRCB0YWcgb25seSB3aGVuCisgICAgIHNhdGlzZnlpbmcgcmVmZXJlbmNlcyBmcm9tIHJlZ3VsYXIgZmlsZXMsIG9yIGFsd2F5cy4gICovCisgIGJmZF9ib29sZWFuIGFzX25lZWRlZDsKKwogICAvKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGVudGlyZSBjb250ZW50cyBvZiBhbiBhcmNoaXZlLiAgKi8KICAgYmZkX2Jvb2xlYW4gd2hvbGVfYXJjaGl2ZTsKIApkaWZmIC0tZ2l0IGEvbGQvbGRsZXgubCBiL2xkL2xkbGV4LmwKaW5kZXggYWVhYzgxNy4uMGU4MTBmNSAxMDA2NDQKLS0tIGEvbGQvbGRsZXgubAorKysgYi9sZC9sZGxleC5sCkBAIC0yOCwxMSArMjgsNiBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotI2lmZGVmIE1QVwotLyogUHJldmVudCBlbnVtIHJlZGVmaW5pdGlvbiBwcm9ibGVtcy4gKi8KLSNkZWZpbmUgVFJVRV9GQUxTRV9BTFJFQURZX0RFRklORUQKLSNlbmRpZiAvKiBNUFcgKi8KLQogI2luY2x1ZGUgImJmZC5oIgogI2luY2x1ZGUgInN5c2RlcC5oIgogI2luY2x1ZGUgInNhZmUtY3R5cGUuaCIKZGlmZiAtLWdpdCBhL2xkL2xkbWFpbi5jIGIvbGQvbGRtYWluLmMKaW5kZXggODhiNWM3NS4uZDBlMGIxMiAxMDA2NDQKLS0tIGEvbGQvbGRtYWluLmMKKysrIGIvbGQvbGRtYWluLmMKQEAgLTEsNiArMSw2IEBACiAvKiBNYWluIHByb2dyYW0gb2YgR05VIGxpbmtlci4KICAgIENvcHlyaWdodCAxOTkxLCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAotICAgMjAwMiwgMjAwMworICAgMjAwMiwgMjAwMywgMjAwNAogICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBXcml0dGVuIGJ5IFN0ZXZlIENoYW1iZXJsYWluIHN0ZXZlQGN5Z251cy5jb20KIApAQCAtOTMsNiArOTMsMTAgQEAKIC8qIE5vbnplcm8gbWVhbnMgbGluayBpbiBldmVyeSBtZW1iZXIgb2YgYW4gYXJjaGl2ZS4gICovCiBiZmRfYm9vbGVhbiB3aG9sZV9hcmNoaXZlOwogCisvKiBOb256ZXJvIG1lYW5zIGNyZWF0ZSBEVF9ORUVERUQgZW50cmllcyBvbmx5IGlmIGEgZHluYW1pYyBsaWJyYXJ5CisgICBhY3R1YWxseSBzYXRpc2ZpZXMgc29tZSByZWZlcmVuY2UgaW4gYSByZWd1bGFyIG9iamVjdC4gICovCitiZmRfYm9vbGVhbiBhc19uZWVkZWQ7CisKIC8qIFRSVUUgaWYgd2Ugc2hvdWxkIGRlbWFuZ2xlIHN5bWJvbCBuYW1lcy4gICovCiBiZmRfYm9vbGVhbiBkZW1hbmdsaW5nOwogCmRpZmYgLS1naXQgYS9sZC9sZG1haW4uaCBiL2xkL2xkbWFpbi5oCmluZGV4IDEwMTY5ZGQuLjhjYWI1ZmUgMTAwNjQ0Ci0tLSBhL2xkL2xkbWFpbi5oCisrKyBiL2xkL2xkbWFpbi5oCkBAIC0xLDUgKzEsNSBAQAogLyogbGRtYWluLmggLQotICAgQ29weXJpZ2h0IDE5OTEsIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTksIDIwMDIsIDIwMDMKKyAgIENvcHlyaWdodCAxOTkxLCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk5LCAyMDAyLCAyMDAzLCAyMDA0CiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0xELCB0aGUgR251IExpbmtlci4KQEAgLTMyLDYgKzMyLDcgQEAKIGV4dGVybiBiZmRfYm9vbGVhbiB0cmFjZV9maWxlX3RyaWVzOwogZXh0ZXJuIGJmZF9ib29sZWFuIHZlcnNpb25fcHJpbnRlZDsKIGV4dGVybiBiZmRfYm9vbGVhbiB3aG9sZV9hcmNoaXZlOworZXh0ZXJuIGJmZF9ib29sZWFuIGFzX25lZWRlZDsKIGV4dGVybiBiZmRfYm9vbGVhbiBkZW1hbmdsaW5nOwogZXh0ZXJuIGludCBnX3N3aXRjaF92YWx1ZTsKIGV4dGVybiBjb25zdCBjaGFyICpvdXRwdXRfZmlsZW5hbWU7CmRpZmYgLS1naXQgYS9sZC9sZXhzdXAuYyBiL2xkL2xleHN1cC5jCmluZGV4IGU0M2UxNWUuLmIzNzdiZDQgMTAwNjQ0Ci0tLSBhL2xkL2xleHN1cC5jCisrKyBiL2xkL2xleHN1cC5jCkBAIC0xLDYgKzEsNiBAQAogLyogUGFyc2Ugb3B0aW9ucyBmb3IgdGhlIEdOVSBsaW5rZXIuCiAgICBDb3B5cmlnaHQgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKLSAgIDIwMDEsIDIwMDIsIDIwMDMKKyAgIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTEQsIHRoZSBHbnUgTGlua2VyLgpAQCAtMTEyLDYgKzExMiw4IEBACiAgIE9QVElPTl9TUExJVF9CWV9SRUxPQywKICAgT1BUSU9OX1NQTElUX0JZX0ZJTEUgLAogICBPUFRJT05fV0hPTEVfQVJDSElWRSwKKyAgT1BUSU9OX0FTX05FRURFRCwKKyAgT1BUSU9OX05PX0FTX05FRURFRCwKICAgT1BUSU9OX1dSQVAsCiAgIE9QVElPTl9GT1JDRV9FWEVfU1VGRklYLAogICBPUFRJT05fR0NfU0VDVElPTlMsCkBAIC00MzgsNiArNDQwLDEwIEBACiAgICAgIFRXT19EQVNIRVMgfSwKICAgeyB7Indob2xlLWFyY2hpdmUiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUSU9OX1dIT0xFX0FSQ0hJVkV9LAogICAgICAgJ1wwJywgTlVMTCwgTl8oIkluY2x1ZGUgYWxsIG9iamVjdHMgZnJvbSBmb2xsb3dpbmcgYXJjaGl2ZXMiKSwgVFdPX0RBU0hFUyB9LAorICB7IHsiYXMtbmVlZGVkIiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9BU19ORUVERUR9LAorICAgICAgJ1wwJywgTlVMTCwgTl8oIk9ubHkgc2V0IERUX05FRURFRCBmb3IgZm9sbG93aW5nIGR5bmFtaWMgbGlicyBpZiB1c2VkIiksIFRXT19EQVNIRVMgfSwKKyAgeyB7Im5vLWFzLW5lZWRlZCIsIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTk9fQVNfTkVFREVEfSwKKyAgICAgICdcMCcsIE5VTEwsIE5fKCJBbHdheXMgc2V0IERUX05FRURFRCBmb3IgZm9sbG93aW5nIGR5bmFtaWMgbGlicyIpLCBUV09fREFTSEVTIH0sCiAgIHsgeyJ3cmFwIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVElPTl9XUkFQfSwKICAgICAgICdcMCcsIE5fKCJTWU1CT0wiKSwgTl8oIlVzZSB3cmFwcGVyIGZ1bmN0aW9ucyBmb3IgU1lNQk9MIiksIFRXT19EQVNIRVMgfQogfTsKQEAgLTYzNCwyNyArNjQwLDkgQEAKIAkgIGJyZWFrOwogCWNhc2UgT1BUSU9OX0NBTExfU0hBUkVEOgogCSAgY29uZmlnLmR5bmFtaWNfbGluayA9IFRSVUU7Ci0JICAvKiBXaGVuIGxpbmtpbmcgYWdhaW5zdCBzaGFyZWQgbGlicmFyaWVzLCB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgaXMKLQkgICAgIHRvIHJlcG9ydCBhbnkgdW5yZXNvbHZlZCByZWZlcmVuY2VzLiAgQWx0aG91Z2ggc3RyaWN0bHkgc3BlYWtpbmcKLQkgICAgIGl0IGlzIG5vdCBhIGZhaWx1cmUgdG8gZW5jb3VudGVyIHVucmVzb2x2ZWQgc3ltYm9scyBhdCBsaW5rIHRpbWUKLQkgICAgIC0gdGhlIHN5bWJvbCAqbWlnaHQqIGJlIGF2YWlsYWJsZSBhdCBsb2FkIHRpbWUgLSBpdCBpcyBhIHN0cm9uZwotCSAgICAgaW5kaWNhdGlvbiB0aGF0IHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB3aWxsIG5vdCB3b3JrLiAgUGx1cyBpdAotCSAgICAgaXMgbmVjZXNzYXJ5IGZvciB0aGUgY29ycmVjdCBleGVjdXRpb24gb2YgdGhlIGF1dG9jb25mIHBhY2thZ2UsCi0JICAgICB3aGljaCBuZWVkcyB0byBiZSBhYmxlIHRvIGRldGVjdCBmdW5jdGlvbnMgdGhhdCBhcmUgbm90IHByb3ZpZGVkCi0JICAgICBieSB0aGUgaG9zdCBPUy4gICovCi0JICBpZiAobGlua19pbmZvLnVucmVzb2x2ZWRfc3ltc19pbl9vYmplY3RzID09IFJNX05PVF9ZRVRfU0VUKQotCSAgICBsaW5rX2luZm8udW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMgPSBob3dfdG9fcmVwb3J0X3VucmVzb2x2ZWRfc3ltYm9sczsKLQkgIGlmIChsaW5rX2luZm8udW5yZXNvbHZlZF9zeW1zX2luX3NoYXJlZF9saWJzID09IFJNX05PVF9ZRVRfU0VUKQotCSAgICBsaW5rX2luZm8udW5yZXNvbHZlZF9zeW1zX2luX3NoYXJlZF9saWJzID0gaG93X3RvX3JlcG9ydF91bnJlc29sdmVkX3N5bWJvbHM7CiAJICBicmVhazsKIAljYXNlIE9QVElPTl9OT05fU0hBUkVEOgogCSAgY29uZmlnLmR5bmFtaWNfbGluayA9IEZBTFNFOwotCSAgLyogV2hlbiBsaW5raW5nIGFnYWluc3Qgc3RhdGljIGxpYnJhcmllcywgdGhlIGRlZmF1bHQKLQkgICAgIGJlaGF2aW91ciBpcyB0byByZXBvcnQgYW55IHVucmVzb2x2ZWQgcmVmZXJlbmNlcy4gICovCi0JICBpZiAobGlua19pbmZvLnVucmVzb2x2ZWRfc3ltc19pbl9vYmplY3RzID09IFJNX05PVF9ZRVRfU0VUKQotCSAgICBsaW5rX2luZm8udW5yZXNvbHZlZF9zeW1zX2luX29iamVjdHMgPSBob3dfdG9fcmVwb3J0X3VucmVzb2x2ZWRfc3ltYm9sczsKLQkgIGlmIChsaW5rX2luZm8udW5yZXNvbHZlZF9zeW1zX2luX3NoYXJlZF9saWJzID09IFJNX05PVF9ZRVRfU0VUKQotCSAgICBsaW5rX2luZm8udW5yZXNvbHZlZF9zeW1zX2luX3NoYXJlZF9saWJzID0gaG93X3RvX3JlcG9ydF91bnJlc29sdmVkX3N5bWJvbHM7CiAJICBicmVhazsKIAljYXNlIE9QVElPTl9DUkVGOgogCSAgY29tbWFuZF9saW5lLmNyZWYgPSBUUlVFOwpAQCAtMTE1Niw2ICsxMTQ0LDEyIEBACiAJY2FzZSBPUFRJT05fV0hPTEVfQVJDSElWRToKIAkgIHdob2xlX2FyY2hpdmUgPSBUUlVFOwogCSAgYnJlYWs7CisJY2FzZSBPUFRJT05fQVNfTkVFREVEOgorCSAgYXNfbmVlZGVkID0gVFJVRTsKKwkgIGJyZWFrOworCWNhc2UgT1BUSU9OX05PX0FTX05FRURFRDoKKwkgIGFzX25lZWRlZCA9IEZBTFNFOworCSAgYnJlYWs7CiAJY2FzZSBPUFRJT05fV1JBUDoKIAkgIGFkZF93cmFwIChvcHRhcmcpOwogCSAgYnJlYWs7CmRpZmYgLS1naXQgYS9sZC9tYWMtbGQuciBiL2xkL21hYy1sZC5yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzE2ZmM1Li4wMDAwMDAwCi0tLSBhL2xkL21hYy1sZC5yCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyogUmVzb3VyY2VzIGZvciBHTlUgTEQuICovCi0KLSNpbmNsdWRlICJTeXNUeXBlcy5yIgotCi0vKiBWZXJzaW9uIHJlc291cmNlcy4gKi8KLQotcmVzb3VyY2UgJ3ZlcnMnICgxKSAgewotCTAsCi0JMCwKLQkwLAotCTAsCi0JdmVyVXMsCi0JVkVSU0lPTl9TVFJJTkcsCi0JVkVSU0lPTl9TVFJJTkcgICIgKEMpIDE5ODYtOTUgRlNGLCBJbmMuIgotfTsKLQotcmVzb3VyY2UgJ3ZlcnMnICgyLCBwdXJnZWFibGUpICB7Ci0JMCwKLQkwLAotCTAsCi0JMCwKLQl2ZXJVcywKLQlWRVJTSU9OX1NUUklORywKLQkiR0xEICIgVkVSU0lPTl9TVFJJTkcgIiBmb3IgTVBXIgotfTsKLQotI2lmZGVmIFdBTlRfQ0ZSRwotCi0jaW5jbHVkZSAiQ29kZUZyYWdtZW50VHlwZXMuciIKLQotcmVzb3VyY2UgJ2NmcmcnICgwKSB7Ci0JewotCQlrUG93ZXJQQywKLQkJa0Z1bGxMaWIsCi0JCWtOb1ZlcnNpb25OdW0sIGtOb1ZlcnNpb25OdW0sCi0JCTAsIDAsCi0JCWtJc0FwcCwga09uRGlza0ZsYXQsIGtaZXJvT2Zmc2V0LCBrV2hvbGVGb3JrLAotCQlQUk9HX05BTUUKLQl9Ci19OwotCi0jZW5kaWYgLyogV0FOVF9DRlJHICovCmRpZmYgLS1naXQgYS9sZC9tcHctY29uZmlnLmluIGIvbGQvbXB3LWNvbmZpZy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI1NDJjYy4uMDAwMDAwMAotLS0gYS9sZC9tcHctY29uZmlnLmluCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotIyBDb25maWd1cmF0aW9uIGZyYWdtZW50IGZvciBMRC4KLQotSWYgInt0YXJnZXRfY2Fub25pY2FsfSIgPX4gL202OGstYXBwbGUtbWFjb3MvCi0JU2V0IGVtdWxuYW1lIG02OGtjb2ZmCi0JZm9yd2FyZC1pbmNsdWRlICJ7c3JjZGlyfSJtcHctZW02OGtjb2ZmLmMgZW02OGtjb2ZmLmMKLQlTZXQgZW11bGF0aW9uX29maWxlcyAie299ImVtNjhrY29mZi5jLm8KLQotRWxzZSBJZiAie3RhcmdldF9jYW5vbmljYWx9IiA9fiAvcG93ZXJwYy1hcHBsZS1tYWNvcy8KLQlTZXQgZW11bG5hbWUgcHBjbWFjb3MKLQlmb3J3YXJkLWluY2x1ZGUgIntzcmNkaXJ9Im1wdy1lcHBjbWFjLmMgZXBwY21hY29zLmMKLQlTZXQgZW11bGF0aW9uX29maWxlcyAie299ImVwcGNtYWNvcy5jLm8KLQotRWxzZSBJZiAie3RhcmdldF9jYW5vbmljYWx9IiA9fiAvaTM4Ni1cT3B0aW9uLXgtZ28zMi8KLQlTZXQgZW11bG5hbWUgaTM4NmdvMzIKLQlmb3J3YXJkLWluY2x1ZGUgIntzcmNkaXJ9Im1wdy1laTM4NmdvMzIuYyBlaTM4NmdvMzIuYwotCVNldCBlbXVsYXRpb25fb2ZpbGVzICJ7b30iZWkzODZnbzMyLmMubwotCi1FbHNlIElmICJ7dGFyZ2V0X2Nhbm9uaWNhbH0iID1+IC9taXBzLVxPcHRpb24teC1lY29mZi8KLQlTZXQgZW11bG5hbWUgbWlwc2lkdAotCWZvcndhcmQtaW5jbHVkZSAie3NyY2Rpcn0ibXB3LWlkdG1pcHMuYyBlbWlwc2lkdC5jCi0JU2V0IGVtdWxhdGlvbl9vZmlsZXMgIntvfSJlbWlwc2lkdC5jLm8KLQotRWxzZSBJZiAie3RhcmdldF9jYW5vbmljYWx9IiA9fiAvbWlwcy1cT3B0aW9uLXgtXE9wdGlvbi14LwotCVNldCBlbXVsbmFtZSBlbGYzMmVibWlwCi0JZm9yd2FyZC1pbmNsdWRlICJ7c3JjZGlyfSJtcHctZWxmbWlwcy5jIGVlbGYzMmVibWlwLmMKLQlTZXQgZW11bGF0aW9uX29maWxlcyAie299ImVlbGYzMmVibWlwLmMubwotCi1FbHNlIElmICJ7dGFyZ2V0X2Nhbm9uaWNhbH0iID1+IC9zaC1cT3B0aW9uLXgtaG1zLwotCVNldCBlbXVsbmFtZSBzaAotCWZvcndhcmQtaW5jbHVkZSAie3NyY2Rpcn0ibXB3LWVzaC5jIGVzaC5jCi0JU2V0IGVtdWxhdGlvbl9vZmlsZXMgIntvfSJlc2guYy5vCi1FbmQgSWYKLQotRWNobyAnLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLiAgRE8gTk9UIEVESVQhICovJyA+ICJ7b30ibGRlbXVsLXRtcC5oCi1FY2hvICJleHRlcm4gbGRfZW11bGF0aW9uX3hmZXJfdHlwZSBsZF97ZW11bG5hbWV9X2VtdWxhdGlvbjsiID4+ICJ7b30ibGRlbXVsLXRtcC5oCi1FY2hvICcjZGVmaW5lIEVNVUxBVElPTl9MSVNUIFwnCQkJCT4+ICJ7b30ibGRlbXVsLXRtcC5oCi1FY2hvICIgICZsZF97ZW11bG5hbWV9X2VtdWxhdGlvbiwgXCIJCQk+PiAie299ImxkZW11bC10bXAuaAotRWNobyAnICAwJwkJCQkJCT4+ICJ7b30ibGRlbXVsLXRtcC5oCi0KLU1vdmVJZkNoYW5nZSAie299ImxkZW11bC10bXAuaCAie299ImxkZW11bC1saXN0LmgKLQotRWNobyAnIyBGcm9tIG1wdy1jb25maWcuaW4nCQkJCSA+ICJ7b30ibWsudG1wCi1FY2hvICJFTVVMID0gIiB7ZW11bG5hbWV9CQkJCT4+ICJ7b30ibWsudG1wCi1FY2hvICJFTVVMQVRJT05fT0ZJTEVTID0gIiB7ZW11bGF0aW9uX29maWxlc30JCT4+ICJ7b30ibWsudG1wCi1FY2hvICd2ZXJzaW9uID0gJyBgU2VhcmNoICdsZCB2ZXJzaW9uICcge3NyY2Rpcn1sZHZlci5jIHwgc2VkIC1lICdzLy4qbGQgdmVyc2lvbiBcKFteIF0qXCkuKi9cMS8nYCA+PiAie299Im1rLnRtcAotRWNobyAiVERFRklORVMgPSAiCQkJCQk+PiAie299Im1rLnRtcAotRWNobyAnIyBFbmQgZnJvbSBtcHctY29uZmlnLmluJwkJCQk+PiAie299Im1rLnRtcAotCi1FY2hvICcvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBieSBtcHctY29uZmlndXJlLiAgKi8nCSA+ICJ7b30iY29uZmlnLm5ldwotRWNobyAnI2luY2x1ZGUgIm1wdy5oIicJCQkJCT4+ICJ7b30iY29uZmlnLm5ldwotCi1Nb3ZlSWZDaGFuZ2UgIntvfSJjb25maWcubmV3ICJ7b30iY29uZmlnLmgKZGlmZiAtLWdpdCBhL2xkL21wdy1tYWtlLnNlZCBiL2xkL21wdy1tYWtlLnNlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkxOTcwOC4uMDAwMDAwMAotLS0gYS9sZC9tcHctbWFrZS5zZWQKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0jIFNlZCBjb21tYW5kcyB0byBmaW5pc2ggdHJhbnNsYXRpbmcgdGhlIGxkIE1ha2VmaWxlLmluIGludG8gTVBXIHN5bnRheC4KLQotL0hERUZJTkVTL3MvQEhERUZJTkVTQC8vCi0KLS9edGFyZ2V0X2FsaWFzID0gQHRhcmdldF9hbGlhc0Avcy9eLyMvCi0KLS9eRU1VTCA9IEBFTVVMQC9zL14vIy8KLQotL15FTVVMQVRJT05fT0ZJTEVTID0gQEVNVUxBVElPTl9PRklMRVNAL3MvXi8jLwotCi0jIEZpeGFkZCB0byB0aGUgaW5jbHVkZSBwYXRocy4KLS9eSU5DTFVERVMgPSAuKiQvcy8kLyAtaSAie0lOQ0RJUn0iOm1wdzogLWkgOjpleHRyYS1pbmNsdWRlOi8KLS9CRkRESVIvcy8taSB7QkZERElSfSAvLWkgIntCRkRESVJ9IjogLwotL0lOQ0RJUi9zLy1pIHtJTkNESVJ9IC8taSAie0lOQ0RJUn0iOiAvCi0KLSMgVXNlIGJ5YWNjIGluc3RlYWQgb2YgYmlzb24gKGZvciBub3cgYW55d2F5KS4KLS9CSVNPTi9zL15CSVNPTiA9LiokL0JJU09OID0gYnlhY2MvCi0jL0JJU09ORkxBR1Mvcy9eQklTT05GTEFHUyA9LiokL0JJU09ORkxBR1MgPSAvCi0KLSMgU3VwcHJlc3MgdGhlIHN1cHByZXNzaW9uIG9mIHNtYXJ0IG1ha2VzLgotL15cLnlcLmMvZAotCi0jIEhhY2sgdXAgbGRtYWluIGNvbXBpbGUuCi0vXiJ7b30ibGRtYWluLmMubyBcXE9wdGlvbi1mIC4qIGNvbmZpZy5zdGF0dXMkLywvXiQvY1wKLSJ7b30ibGRtYWluLmMubyBcXE9wdGlvbi1mICAie3N9ImxkbWFpbi5jXAotCXtDQ30gQERBU0hfQ19GTEFHQCAtZCBERUZBVUxUX0VNVUxBVElPTj17ZHF9e0VNVUx9e2RxfSAtZCBTQ1JJUFRESVI9e2RxfXtzY3JpcHRkaXJ9e2RxfSB7QUxMX0NGTEFHU30gIntzfSJsZG1haW4uYyAtbyAie299ImxkbWFpbi5jLm9cCi0KLQotIyBSZW1vdmUgbGRlbXVsLWxpc3QuaCBidWlsZCwgcmVseSBvbiBjb25maWd1cmUgdG8gbWFrZSBvbmUuCi0vXmxkZW11bC1saXN0LmggLywvUmVuYW1lIC15ICJ7c30ibGRlbXVsLXRtcC5oIC9kCi0KLSMgRml4IHBhdGhuYW1lcyB0byBnZW5lcmF0ZWQgZmlsZXMuCi0vY29uZmlnLmgvcy8ie3N9ImNvbmZpZ1wuaC8ie299ImNvbmZpZy5oL2cKLS9jb25maWcuaC9zL15jb25maWdcLmgvIntvfSJjb25maWcuaC8KLQotL3kudGFiLmMvcy8ie3N9InlcLnRhYlwuYy8ie299InkudGFiLmMvZwotL3kudGFiLmMvcy9eeVwudGFiXC5jLyJ7b30ieS50YWIuYy8KLS95LnRhYi5oL3MvIntzfSJ5XC50YWJcLmgvIntvfSJ5LnRhYi5oL2cKLS95LnRhYi5oL3MvXnlcLnRhYlwuaC8ie299InkudGFiLmgvCi0KLS9sZGdyYW0uYy9zLyJ7c30ibGRncmFtXC5jLyJ7b30ibGRncmFtLmMvZwotL2xkZ3JhbS5jL3MvXmxkZ3JhbVwuYy8ie299ImxkZ3JhbS5jLwotCi0vbGRncmFtLmgvcy8ie3N9ImxkZ3JhbVwuaC8ie299ImxkZ3JhbS5oL2cKLS9sZGdyYW0uaC9zL15sZGdyYW1cLmgvIntvfSJsZGdyYW0uaC8KLQotL2xkbGV4LmMvcy8ie3N9ImxkbGV4XC5jLyJ7b30ibGRsZXguYy9nCi0vbGRsZXguYy9zL15sZGxleFwuYy8ie299ImxkbGV4LmMvCi0KLS9sZGxleC5jLm5ldy9zLyJ7c30ibGRsZXhcLmNcLm5ldy8ie299ImxkbGV4LmMubmV3L2cKLQotL2xleC55eS5jL3MvIntzfSJsZXhcLnl5XC5jLyJ7b30ibGV4Lnl5LmMvZwotCi0vbGRlbXVsLWxpc3QuaC9zLyJ7c30ibGRlbXVsLWxpc3RcLmgvIntvfSJsZGVtdWwtbGlzdC5oL2cKLS9sZGVtdWwtbGlzdC5oL3MvXmxkZW11bC1saXN0XC5oLyJ7b30ibGRlbXVsLWxpc3QuaC8KLQotIyBFZGl0IHBhdGhuYW1lcyB0byBlbXVsYXRpb24gZmlsZXMuCi0vIntzfSJlLipcLmMvcy8ie3N9ImVcKFstX2EtejAtOV0qXClcLmMvIntvfSJlXDEuYy9nCi0vXmUuKlwuYy9zL15lXChbLV9hLXowLTldKlwpXC5jLyJ7b30iZVwxLmMvCi0KLSMgV2UgY2FuJ3QgcnVuIGdlbnNjcmlwdHMsIHNvIGRvbid0IHRyeS4KLS97R0VOU0NSSVBUU30vcy97R0VOU0NSSVBUU30vbnVsbC1jb21tYW5kLwotCi0jIENvbW1lbnQgb3V0IHRoZSBURElSUyBiaXRzLgotL15URElSU0Avcy9eLyMvCi0KLSMgUG9pbnQgYXQgdGhlIEJGRCBsaWJyYXJ5IGRpcmVjdGx5LgotL0BCRkRMSUJAL3MvQEJGRExJQkAvOjpiZmQ6bGliYmZkLm8vCi0KLSMgRG9uJ3QgbmVlZCB0aGlzLgotL0BITERGTEFHU0Avcy9ASExERkxBR1NALy8KLQotIy9zZWQuKmZyZWUvLC8+ICJ7b30ibGRsZXguYy5uZXcvY1wKLSMJXAlDYXRlbmF0ZSAie299ImxleC55eS5jID4ie299ImxkbGV4LmMubmV3Ci0KLSMgVGhlIHJlc291cmNlIGZpbGUgaXMgY2FsbGVkIG1hYy1sZC5yLgotL3tMRF9QUk9HfS5yL3Mve0xEX1BST0d9XC5yL21hYy1sZC5yLwotCi0vXmluc3RhbGwgXFxPcHRpb24tZiAvLC9eJC9jXAotaW5zdGFsbCBcXE9wdGlvbi1mICBhbGwgaW5zdGFsbC1vbmx5XAotXAotaW5zdGFsbC1vbmx5IFxcT3B0aW9uLWZcCi0JTmV3Rm9sZGVyUmVjdXJzaXZlICJ7YmluZGlyfSJcCi0JRHVwbGljYXRlIC15IDpsZC5uZXcgIntiaW5kaXJ9ImxkXAotCi0KLSMgUmVtb3ZlIGRlcGVuZGVuY3kgcmVidWlsZGluZyBjcnVkLgotL14uZGVwIC8sLyMgLlBIT05ZIC9kCi0KLSMgUmVtb3ZlIHRoZSBsaW50bG9nIGFjdGlvbiwgcGlwZSBzeW1ib2xzIGluIGNvbHVtbiAxIGxvc2UuCi0vXmxpbnRsb2cgXFxPcHRpb24tZi8sL14kL2QKLQotL15NYWtlZmlsZSBcXE9wdGlvbi1mLywvXiQvZAotL14ie299ImNvbmZpZy5oIFxcT3B0aW9uLWYvLC9eJC9kCi0vXmNvbmZpZy5zdGF0dXMgXFxPcHRpb24tZi8sL14kL2QKZGlmZiAtLWdpdCBhL2xkL3BlLWRsbC5jIGIvbGQvcGUtZGxsLmMKaW5kZXggY2UzZjQ0My4uMTBkNjM2ZSAxMDA2NDQKLS0tIGEvbGQvcGUtZGxsLmMKKysrIGIvbGQvcGUtZGxsLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJsaWJpYmVydHkuaCIKICNpbmNsdWRlICJzYWZlLWN0eXBlLmgiCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx0aW1lLmg+CiAKICNpbmNsdWRlICJsZC5oIgpAQCAtOTE3LDggKzkxOCw4IEBACiB7CiAgIGludCBzLCBoaW50OwogICB1bnNpZ25lZCBjaGFyICplZGlyZWN0b3J5OwotICB1bnNpZ25lZCBsb25nICplYWRkcmVzc2VzOwotICB1bnNpZ25lZCBsb25nICplbmFtZXB0cnM7CisgIHVpbnQzMl90ICplYWRkcmVzc2VzOworICB1aW50MzJfdCAqZW5hbWVwdHJzOwogICB1bnNpZ25lZCBzaG9ydCAqZW9yZGluYWxzOwogICB1bnNpZ25lZCBjaGFyICplbmFtZXN0cjsKICAgdGltZV90IG5vdzsKQEAgLTkyOSw3ICs5MzAsNyBAQAogCiAgIC8qIE5vdGUgdXNlIG9mIGFycmF5IHBvaW50ZXIgbWF0aCBoZXJlLiAgKi8KICAgZWRpcmVjdG9yeSA9IGVkYXRhX2Q7Ci0gIGVhZGRyZXNzZXMgPSAodW5zaWduZWQgbG9uZyAqKSAoZWRhdGFfZCArIDQwKTsKKyAgZWFkZHJlc3NlcyA9ICh1aW50MzJfdCAqKSAoZWRhdGFfZCArIDQwKTsKICAgZW5hbWVwdHJzID0gZWFkZHJlc3NlcyArIGV4cG9ydF90YWJsZV9zaXplOwogICBlb3JkaW5hbHMgPSAodW5zaWduZWQgc2hvcnQgKikgKGVuYW1lcHRycyArIGNvdW50X2V4cG9ydGVkX2J5bmFtZSk7CiAgIGVuYW1lc3RyID0gKGNoYXIgKikgKGVvcmRpbmFscyArIGNvdW50X2V4cG9ydGVkX2J5bmFtZSk7CkBAIC05NjYsOSArOTY3LDkgQEAKICAgaGludCA9IDA7CiAgIGZvciAocyA9IDA7IHMgPCBORTsgcysrKQogICAgIHsKLSAgICAgIGlmIChwZV9kZWZfZmlsZS0+ZXhwb3J0c1tzXS5vcmRpbmFsICE9IC0xKQorICAgICAgc3RydWN0IGJmZF9zZWN0aW9uICpzc2VjID0gZXhwb3J0ZWRfc3ltYm9sX3NlY3Rpb25zW3NdOworICAgICAgaWYgKHNzZWMgJiYgcGVfZGVmX2ZpbGUtPmV4cG9ydHNbc10ub3JkaW5hbCAhPSAtMSkKIAl7Ci0JICBzdHJ1Y3QgYmZkX3NlY3Rpb24gKnNzZWMgPSBleHBvcnRlZF9zeW1ib2xfc2VjdGlvbnNbc107CiAJICB1bnNpZ25lZCBsb25nIHNydmEgPSAoZXhwb3J0ZWRfc3ltYm9sX29mZnNldHNbc10KIAkJCQkrIHNzZWMtPm91dHB1dF9zZWN0aW9uLT52bWEKIAkJCQkrIHNzZWMtPm91dHB1dF9vZmZzZXQpOwpAQCAtMjI1Nyw2ICsyMjU4LDkgQEAKICAgICAgIGNoYXIgKmludGVybmFsID0gZGVmLT5leHBvcnRzW2ldLmludGVybmFsX25hbWU7CiAgICAgICBiZmQgKm47CiAKKyAgICAgIC8qIERvbid0IGFkZCBQUklWQVRFIGVudHJpZXMgdG8gaW1wb3J0IGxpYi4gICovIAkKKyAgICAgIGlmIChwZV9kZWZfZmlsZS0+ZXhwb3J0c1tpXS5mbGFnX3ByaXZhdGUpCisJY29udGludWU7CiAgICAgICBkZWYtPmV4cG9ydHNbaV0uaW50ZXJuYWxfbmFtZSA9IGRlZi0+ZXhwb3J0c1tpXS5uYW1lOwogICAgICAgbiA9IG1ha2Vfb25lIChkZWYtPmV4cG9ydHMgKyBpLCBvdXRhcmNoKTsKICAgICAgIG4tPm5leHQgPSBoZWFkOwpkaWZmIC0tZ2l0IGEvbGQvcG8vbGQucG90IGIvbGQvcG8vbGQucG90CmluZGV4IDM3MTQyM2MuLmE2MTc4NWEgMTAwNjQ0Ci0tLSBhL2xkL3BvL2xkLnBvdAorKysgYi9sZC9wby9sZC5wb3QKQEAgLTcsNyArNyw4IEBACiBtc2dpZCAiIgogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBQQUNLQUdFIFZFUlNJT05cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwMy0wNy0xMSAxMzo1OCswOTMwXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA0LTAzLTE5IDE1OjAwKzEwMzBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiBZRUFSLU1PLURBIEhPOk1JK1pPTkVcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEZVTEwgTkFNRSA8RU1BSUxAQUREUkVTUz5cbiIKICJMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPlxuIgpAQCAtMTYsMTAgKzE3LDEyIEBACiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogCiAjOiBlbXVsdGVtcGwvYXJtY29mZi5lbTo3MgorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC0tc3VwcG9ydC1vbGQtY29kZSAgIFN1cHBvcnQgaW50ZXJ3b3JraW5nIHdpdGggb2xkIGNvZGVcbiIKIG1zZ3N0ciAiIgogCiAjOiBlbXVsdGVtcGwvYXJtY29mZi5lbTo3MworIywgYy1mb3JtYXQKIG1zZ2lkICIgIC0tdGh1bWItZW50cnk9PHN5bT4gIFNldCB0aGUgZW50cnkgcG9pbnQgdG8gYmUgVGh1bWIgc3ltYm9sIDxzeW0+XG4iCiBtc2dzdHIgIiIKIApAQCAtMjgsMTYxICszMSwxOTEgQEAKIG1zZ2lkICJFcnJvcnMgZW5jb3VudGVyZWQgcHJvY2Vzc2luZyBmaWxlICVzIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9hcm1jb2ZmLmVtOjE4OCBlbXVsdGVtcGwvcGUuZW06MTM5NgorIzogZW11bHRlbXBsL2FybWNvZmYuZW06MTg4IGVtdWx0ZW1wbC9wZS5lbToxNDI5CiBtc2dpZCAiJVA6IHdhcm5pbmc6ICctLXRodW1iLWVudHJ5ICVzJyBpcyBvdmVycmlkaW5nICctZSAlcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvYXJtY29mZi5lbToxOTMgZW11bHRlbXBsL3BlLmVtOjE0MDEKKyM6IGVtdWx0ZW1wbC9hcm1jb2ZmLmVtOjE5MyBlbXVsdGVtcGwvcGUuZW06MTQzNAogbXNnaWQgIiVQOiB3YXJuaW5nOiBjb25ub3QgZmluZCB0aHVtYiBzdGFydCBzeW1ib2wgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzAwCisjOiBlbXVsdGVtcGwvcGUuZW06MjkyCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC0tYmFzZV9maWxlIDxiYXNlZmlsZT4gICAgICAgICAgICAgR2VuZXJhdGUgYSBiYXNlIGZpbGUgZm9yIHJlbG9jYXRhYmxlICIKICJETExzXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMwMQorIzogZW11bHRlbXBsL3BlLmVtOjI5MworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLWRsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBpbWFnZSBiYXNlIHRvIHRoZSBkZWZhdWx0IGZvciBETExzXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMwMgorIzogZW11bHRlbXBsL3BlLmVtOjI5NAorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC0tZmlsZS1hbGlnbm1lbnQgPHNpemU+ICAgICAgICAgICAgU2V0IGZpbGUgYWxpZ25tZW50XG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMwMworIzogZW11bHRlbXBsL3BlLmVtOjI5NQorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC0taGVhcCA8c2l6ZT4gICAgICAgICAgICAgICAgICAgICAgU2V0IGluaXRpYWwgc2l6ZSBvZiB0aGUgaGVhcFxuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMDQKKyM6IGVtdWx0ZW1wbC9wZS5lbToyOTYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLS1pbWFnZS1iYXNlIDxhZGRyZXNzPiAgICAgICAgICAgICBTZXQgc3RhcnQgYWRkcmVzcyBvZiB0aGUgZXhlY3V0YWJsZVxuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMDUKKyM6IGVtdWx0ZW1wbC9wZS5lbToyOTcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLS1tYWpvci1pbWFnZS12ZXJzaW9uIDxudW1iZXI+ICAgICBTZXQgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGV4ZWN1dGFibGVcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzA2CisjOiBlbXVsdGVtcGwvcGUuZW06Mjk4CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLS1tYWpvci1vcy12ZXJzaW9uIDxudW1iZXI+ICAgICAgICBTZXQgbWluaW11bSByZXF1aXJlZCBPUyB2ZXJzaW9uXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMwNworIzogZW11bHRlbXBsL3BlLmVtOjI5OQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLW1ham9yLXN1YnN5c3RlbS12ZXJzaW9uIDxudW1iZXI+IFNldCBtaW5pbXVtIHJlcXVpcmVkIE9TIHN1YnN5c3RlbSAiCiAidmVyc2lvblxuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMDgKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMDAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLS1taW5vci1pbWFnZS12ZXJzaW9uIDxudW1iZXI+ICAgICBTZXQgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBleGVjdXRhYmxlXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMwOQorIzogZW11bHRlbXBsL3BlLmVtOjMwMQorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC0tbWlub3Itb3MtdmVyc2lvbiA8bnVtYmVyPiAgICAgICAgU2V0IG1pbmltdW0gcmVxdWlyZWQgT1MgcmV2aXNpb25cbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzEwCisjOiBlbXVsdGVtcGwvcGUuZW06MzAyCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC0tbWlub3Itc3Vic3lzdGVtLXZlcnNpb24gPG51bWJlcj4gU2V0IG1pbmltdW0gcmVxdWlyZWQgT1Mgc3Vic3lzdGVtICIKICJyZXZpc2lvblxuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMTEKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMDMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtLXNlY3Rpb24tYWxpZ25tZW50IDxzaXplPiAgICAgICAgIFNldCBzZWN0aW9uIGFsaWdubWVudFxuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMTIKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMDQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtLXN0YWNrIDxzaXplPiAgICAgICAgICAgICAgICAgICAgIFNldCBzaXplIG9mIHRoZSBpbml0aWFsIHN0YWNrXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMxMworIzogZW11bHRlbXBsL3BlLmVtOjMwNQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLXN1YnN5c3RlbSA8bmFtZT5bOjx2ZXJzaW9uPl0gICAgIFNldCByZXF1aXJlZCBPUyBzdWJzeXN0ZW0gWyYgdmVyc2lvbl1cbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzE0CisjOiBlbXVsdGVtcGwvcGUuZW06MzA2CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC0tc3VwcG9ydC1vbGQtY29kZSAgICAgICAgICAgICAgICAgU3VwcG9ydCBpbnRlcndvcmtpbmcgd2l0aCBvbGQgY29kZVxuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMTUKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMDcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLS10aHVtYi1lbnRyeT08c3ltYm9sPiAgICAgICAgICAgICBTZXQgdGhlIGVudHJ5IHBvaW50IHRvIGJlIFRodW1iICIKICI8c3ltYm9sPlxuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMTcKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMDkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLS1hZGQtc3RkY2FsbC1hbGlhcyAgICAgICAgICAgICAgICBFeHBvcnQgc3ltYm9scyB3aXRoIGFuZCB3aXRob3V0IEBublxuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMTgKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMTAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtLWRpc2FibGUtc3RkY2FsbC1maXh1cCAgICAgICAgICAgIERvbid0IGxpbmsgX3N5bSB0byBfc3ltQG5uXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMxOQorIzogZW11bHRlbXBsL3BlLmVtOjMxMQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLWVuYWJsZS1zdGRjYWxsLWZpeHVwICAgICAgICAgICAgIExpbmsgX3N5bSB0byBfc3ltQG5uIHdpdGhvdXQgd2FybmluZ3NcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzIwCisjOiBlbXVsdGVtcGwvcGUuZW06MzEyCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC0tZXhjbHVkZS1zeW1ib2xzIHN5bSxzeW0sLi4uICAgICAgRXhjbHVkZSBzeW1ib2xzIGZyb20gYXV0b21hdGljIGV4cG9ydFxuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMjEKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMTMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLS1leGNsdWRlLWxpYnMgbGliLGxpYiwuLi4gICAgICAgICBFeGNsdWRlIGxpYnJhcmllcyBmcm9tIGF1dG9tYXRpYyAiCiAiZXhwb3J0XG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMyMgorIzogZW11bHRlbXBsL3BlLmVtOjMxNAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLWV4cG9ydC1hbGwtc3ltYm9scyAgICAgICAgICAgICAgIEF1dG9tYXRpY2FsbHkgZXhwb3J0IGFsbCBnbG9iYWxzIHRvICIKICJETExcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzIzCisjOiBlbXVsdGVtcGwvcGUuZW06MzE1CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgLS1raWxsLWF0ICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmUgQG5uIGZyb20gZXhwb3J0ZWQgc3ltYm9sc1xuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMjQKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMTYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICAtLW91dC1pbXBsaWIgPGZpbGU+ICAgICAgICAgICAgICAgIEdlbmVyYXRlIGltcG9ydCBsaWJyYXJ5XG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMyNQorIzogZW11bHRlbXBsL3BlLmVtOjMxNworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLW91dHB1dC1kZWYgPGZpbGU+ICAgICAgICAgICAgICAgIEdlbmVyYXRlIGEgLkRFRiBmaWxlIGZvciB0aGUgYnVpbHQgRExMXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMyNgorIzogZW11bHRlbXBsL3BlLmVtOjMxOAorIywgYy1mb3JtYXQKIG1zZ2lkICIgIC0td2Fybi1kdXBsaWNhdGUtZXhwb3J0cyAgICAgICAgICAgV2FybiBhYm91dCBkdXBsaWNhdGUgZXhwb3J0cy5cbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzI3CisjOiBlbXVsdGVtcGwvcGUuZW06MzE5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC0tY29tcGF0LWltcGxpYiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIGJhY2t3YXJkIGNvbXBhdGlibGUgaW1wb3J0ICIKICJsaWJzO1xuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBfX2ltcF88U1lNQk9MPiBhcyB3ZWxsLlxuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMjkKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMjEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGNob29zZSBpbWFnZSBiYXNlIGZvciAiCiAiRExMc1xuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyB1c2VyIHNwZWNpZmllcyBvbmVcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzMxCisjOiBlbXVsdGVtcGwvcGUuZW06MzIzCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC0tZGlzYWJsZS1hdXRvLWltYWdlLWJhc2UgICAgICAgICAgRG8gbm90IGF1dG8tY2hvb3NlIGltYWdlIGJhc2UuICIKICIoZGVmYXVsdClcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzMyCisjOiBlbXVsdGVtcGwvcGUuZW06MzI0CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC0tZGxsLXNlYXJjaC1wcmVmaXg9PHN0cmluZz4gICAgICAgV2hlbiBsaW5raW5nIGR5bmFtaWNhbGx5IHRvIGEgZGxsICIKICJ3aXRob3V0XG4iCkBAIC0xOTEsMTkgKzIyNCwyMiBAQAogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHByZWZlcmVuY2UgdG8gbGliPGJhc2VuYW1lPi5kbGwgXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMzNQorIzogZW11bHRlbXBsL3BlLmVtOjMyNworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLWVuYWJsZS1hdXRvLWltcG9ydCAgICAgICAgICAgICAgIERvIHNvcGhpc3RjYXRlZCBsaW5raW5nIG9mIF9zeW0gdG9cbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ltcF9zeW0gZm9yIERBVEEgcmVmZXJlbmNlc1xuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMzcKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMjkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiAgLS1kaXNhYmxlLWF1dG8taW1wb3J0ICAgICAgICAgICAgICBEbyBub3QgYXV0by1pbXBvcnQgREFUQSBpdGVtcyBmcm9tICIKICJETExzXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMzOAorIzogZW11bHRlbXBsL3BlLmVtOjMzMAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLWVuYWJsZS1ydW50aW1lLXBzZXVkby1yZWxvYyAgICAgIFdvcmsgYXJvdW5kIGF1dG8taW1wb3J0IGxpbWl0YXRpb25zIGJ5XG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaW5nIHBzZXVkby1yZWxvY2F0aW9ucyByZXNvbHZlZCAiCkBAIC0yMTEsMTQgKzI0NywxNiBAQAogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWUuXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjM0MQorIzogZW11bHRlbXBsL3BlLmVtOjMzMworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiICAtLWRpc2FibGUtcnVudGltZS1wc2V1ZG8tcmVsb2MgICAgIERvIG5vdCBhZGQgcnVudGltZSBwc2V1ZG8tcmVsb2NhdGlvbnMgIgogImZvclxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8taW1wb3J0ZWQgREFUQS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzQzCisjOiBlbXVsdGVtcGwvcGUuZW06MzM1CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIgIC0tZW5hYmxlLWV4dHJhLXBlLWRlYnVnICAgICAgICAgICAgRW5hYmxlIHZlcmJvc2UgZGVidWcgb3V0cHV0IHdoZW4gIgogImJ1aWxkaW5nXG4iCkBAIC0yMjYsNzAgKzI2NCw3MCBAQAogImltcG9ydClcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06NDEyCisjOiBlbXVsdGVtcGwvcGUuZW06NDA0CiBtc2dpZCAiJVA6IHdhcm5pbmc6IGJhZCB2ZXJzaW9uIG51bWJlciBpbiAtc3Vic3lzdGVtIG9wdGlvblxuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTo0NDgKKyM6IGVtdWx0ZW1wbC9wZS5lbTo0NDAKIG1zZ2lkICIlUCVGOiBpbnZhbGlkIHN1YnN5c3RlbSB0eXBlICVzXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjQ2MAorIzogZW11bHRlbXBsL3BlLmVtOjQ1MgogbXNnaWQgIiVQJUY6IGludmFsaWQgaGV4IG51bWJlciBmb3IgUEUgcGFyYW1ldGVyICclcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06NDc3CisjOiBlbXVsdGVtcGwvcGUuZW06NDY5CiBtc2dpZCAiJVAlRjogc3RyYW5nZSBoZXggaW5mbyBmb3IgUEUgcGFyYW1ldGVyICclcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06NDk0CisjOiBlbXVsdGVtcGwvcGUuZW06NDg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBDYW4ndCBvcGVuIGJhc2UgZmlsZSAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTo3MDcKKyM6IGVtdWx0ZW1wbC9wZS5lbTo2OTkKIG1zZ2lkICIlUDogd2FybmluZywgZmlsZSBhbGlnbm1lbnQgPiBzZWN0aW9uIGFsaWdubWVudC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06Nzk0IGVtdWx0ZW1wbC9wZS5lbTo4MjEKKyM6IGVtdWx0ZW1wbC9wZS5lbTo3ODYgZW11bHRlbXBsL3BlLmVtOjgxMwogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nOiByZXNvbHZpbmcgJXMgYnkgbGlua2luZyB0byAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTo3OTkgZW11bHRlbXBsL3BlLmVtOjgyNgorIzogZW11bHRlbXBsL3BlLmVtOjc5MSBlbXVsdGVtcGwvcGUuZW06ODE4CiBtc2dpZCAiVXNlIC0tZW5hYmxlLXN0ZGNhbGwtZml4dXAgdG8gZGlzYWJsZSB0aGVzZSB3YXJuaW5nc1xuIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTo4MDAgZW11bHRlbXBsL3BlLmVtOjgyNworIzogZW11bHRlbXBsL3BlLmVtOjc5MiBlbXVsdGVtcGwvcGUuZW06ODE5CiBtc2dpZCAiVXNlIC0tZGlzYWJsZS1zdGRjYWxsLWZpeHVwIHRvIGRpc2FibGUgdGhlc2UgZml4dXBzXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjg0NgorIzogZW11bHRlbXBsL3BlLmVtOjgzOAogIywgYy1mb3JtYXQKIG1zZ2lkICIlQzogQ2Fubm90IGdldCBzZWN0aW9uIGNvbnRlbnRzIC0gYXV0by1pbXBvcnQgZXhjZXB0aW9uXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjg4MworIzogZW11bHRlbXBsL3BlLmVtOjg3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbmZvOiByZXNvbHZpbmcgJXMgYnkgbGlua2luZyB0byAlcyAoYXV0by1pbXBvcnQpXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjk1NAorIzogZW11bHRlbXBsL3BlLmVtOjk0OAogbXNnaWQgIiVGJVA6IFBFIG9wZXJhdGlvbnMgb24gbm9uIFBFIGZpbGUuXG4iCiBtc2dzdHIgIiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjExODgKKyM6IGVtdWx0ZW1wbC9wZS5lbToxMjIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9ycyBlbmNvdW50ZXJlZCBwcm9jZXNzaW5nIGZpbGUgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MTIxMQorIzogZW11bHRlbXBsL3BlLmVtOjEyNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3JzIGVuY291bnRlcmVkIHByb2Nlc3NpbmcgZmlsZSAlcyBmb3IgaW50ZXJ3b3JraW5nIgogbXNnc3RyICIiCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbToxMjczIGxkbGFuZy5jOjE5MDQgbGRsYW5nLmM6NDM5NyBsZGxhbmcuYzo0NDI4Ci0jOiBsZG1haW4uYzoxMTIyCisjOiBlbXVsdGVtcGwvcGUuZW06MTMwNiBsZGV4cC5jOjUwNSBsZGxhbmcuYzoyMDQyIGxkbGFuZy5jOjQ1NTYgbGRsYW5nLmM6NDU4NworIzogbGRtYWluLmM6MTEyNAogbXNnaWQgIiVQJUY6IGJmZF9saW5rX2hhc2hfbG9va3VwIGZhaWxlZDogJUVcbiIKIG1zZ3N0ciAiIgogCkBAIC0zMDIsNiArMzQwLDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBsZGNyZWYuYzoyMjUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIkNyb3NzIFJlZmVyZW5jZSBUYWJsZVxuIgpAQCAtMzEzLDEwICszNTIsMTIgQEAKIG1zZ3N0ciAiIgogCiAjOiBsZGNyZWYuYzoyMzQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiRmlsZVxuIgogbXNnc3RyICIiCiAKICM6IGxkY3JlZi5jOjIzOAorIywgYy1mb3JtYXQKIG1zZ2lkICJObyBzeW1ib2xzXG4iCiBtc2dzdHIgIiIKIApAQCAtMzI4LDExICszNjksMTEgQEAKIG1zZ2lkICIlQiVGOiBjb3VsZCBub3QgcmVhZCBzeW1ib2xzOyAlRVxuIgogbXNnc3RyICIiCiAKLSM6IGxkY3JlZi5jOjQ1MiBsZG1haW4uYzoxMTg3IGxkbWFpbi5jOjExOTEKKyM6IGxkY3JlZi5jOjQ1MiBsZG1haW4uYzoxMTg5IGxkbWFpbi5jOjExOTMKIG1zZ2lkICIlQiVGOiBjb3VsZCBub3QgcmVhZCBzeW1ib2xzOiAlRVxuIgogbXNnc3RyICIiCiAKLSM6IGxkY3JlZi5jOjUxNyBsZGNyZWYuYzo1MjQgbGRtYWluLmM6MTIzNCBsZG1haW4uYzoxMjQxCisjOiBsZGNyZWYuYzo1MTcgbGRjcmVmLmM6NTI0IGxkbWFpbi5jOjEyMzYgbGRtYWluLmM6MTI0MwogbXNnaWQgIiVCJUY6IGNvdWxkIG5vdCByZWFkIHJlbG9jczogJUVcbiIKIG1zZ3N0ciAiIgogCkBAIC0zNjcsODUgKzQwOCw3OCBAQAogIlxuIgogbXNnc3RyICIiCiAKLSM6IGxkZW11bC5jOjI0NworIzogbGRlbXVsLmM6MjI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVTIFNZU0xJQiBpZ25vcmVkXG4iCiBtc2dzdHIgIiIKIAotIzogbGRlbXVsLmM6MjU0CisjOiBsZGVtdWwuYzoyMzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJVMgSExMIGlnbm9yZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGVtdWwuYzoyNzUKKyM6IGxkZW11bC5jOjI1MgogbXNnaWQgIiVQOiB1bnJlY29nbmlzZWQgZW11bGF0aW9uIG1vZGU6ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogbGRlbXVsLmM6Mjc2CisjOiBsZGVtdWwuYzoyNTMKIG1zZ2lkICJTdXBwb3J0ZWQgZW11bGF0aW9uczogIgogbXNnc3RyICIiCiAKLSM6IGxkZW11bC5jOjMyMAorIzogbGRlbXVsLmM6Mjk1CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgbm8gZW11bGF0aW9uIHNwZWNpZmljIG9wdGlvbnMuXG4iCiBtc2dzdHIgIiIKIAotIzogbGRleHAuYzoxNDgKLW1zZ2lkICIlRiVQOiAlcyB1c2VzIHVuZGVmaW5lZCBzZWN0aW9uICVzXG4iCi1tc2dzdHIgIiIKLQotIzogbGRleHAuYzoxNTAKLW1zZ2lkICIlRiVQOiAlcyBmb3J3YXJkIHJlZmVyZW5jZSBvZiBzZWN0aW9uICVzXG4iCi1tc2dzdHIgIiIKLQotIzogbGRleHAuYzozNTUKKyM6IGxkZXhwLmM6MzQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVGJVMgJSUgYnkgemVyb1xuIgogbXNnc3RyICIiCiAKLSM6IGxkZXhwLmM6MzYyCisjOiBsZGV4cC5jOjM1MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlRiVTIC8gYnkgemVyb1xuIgogbXNnc3RyICIiCiAKLSM6IGxkZXhwLmM6NTMzCisjOiBsZGV4cC5jOjUxOAogIywgYy1mb3JtYXQKIG1zZ2lkICIlWCVTOiB1bnJlc29sdmFibGUgc3ltYm9sIGAlcycgcmVmZXJlbmNlZCBpbiBleHByZXNzaW9uXG4iCiBtc2dzdHIgIiIKIAotIzogbGRleHAuYzo1NTMKKyM6IGxkZXhwLmM6NTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVGJVM6IHVuZGVmaW5lZCBzeW1ib2wgYCVzJyByZWZlcmVuY2VkIGluIGV4cHJlc3Npb25cbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGV4cC5jOjY3NworIzogbGRleHAuYzo2NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJUYlUyBjYW4gbm90IFBST1ZJREUgYXNzaWdubWVudCB0byBsb2NhdGlvbiBjb3VudGVyXG4iCiBtc2dzdHIgIiIKIAotIzogbGRleHAuYzo2ODcKKyM6IGxkZXhwLmM6Njc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVGJVMgaW52YWxpZCBhc3NpZ25tZW50IHRvIGxvY2F0aW9uIGNvdW50ZXJcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGV4cC5jOjY5MQorIzogbGRleHAuYzo2NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJUYlUyBhc3NpZ25tZW50IHRvIGxvY2F0aW9uIGNvdW50ZXIgaW52YWxpZCBvdXRzaWRlIG9mIFNFQ1RJT05cbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGV4cC5jOjcwMAorIzogbGRleHAuYzo2ODcKIG1zZ2lkICIlRiVTIGNhbm5vdCBtb3ZlIGxvY2F0aW9uIGNvdW50ZXIgYmFja3dhcmRzIChmcm9tICVWIHRvICVWKVxuIgogbXNnc3RyICIiCiAKLSM6IGxkZXhwLmM6NzI3CisjOiBsZGV4cC5jOjcxNAogbXNnaWQgIiVQJUY6JXM6IGhhc2ggY3JlYXRpb24gZmFpbGVkXG4iCiBtc2dzdHIgIiIKIAotIzogbGRleHAuYzoxMDAzIGxkZXhwLmM6MTAzNQorIzogbGRleHAuYzo5OTIgbGRleHAuYzoxMDI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVGJVMgbm9uY29uc3RhbnQgZXhwcmVzc2lvbiBmb3IgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGV4cC5jOjEwODkKKyM6IGxkZXhwLmM6MTA3OAogIywgYy1mb3JtYXQKIG1zZ2lkICIlRiVTIG5vbiBjb25zdGFudCBleHByZXNzaW9uIGZvciAlc1xuIgogbXNnc3RyICIiCkBAIC00NjksMTEgKzUwMywxMSBAQAogbXNnc3RyICIiCiAKICM6IGxkZmlsZS5jOjM3NwotbXNnaWQgIiVGJVA6IGNhbm5vdCBvcGVuICVzIGZvciAlczogJUVcbiIKK21zZ2lkICIlRiVQOiAlcyAoJXMpOiBObyBzdWNoIGZpbGU6ICVFXG4iCiBtc2dzdHIgIiIKIAogIzogbGRmaWxlLmM6MzgwCi1tc2dpZCAiJUYlUDogY2Fubm90IG9wZW4gJXM6ICVFXG4iCittc2dpZCAiJUYlUDogJXM6IE5vIHN1Y2ggZmlsZTogJUVcbiIKIG1zZ3N0ciAiIgogCiAjOiBsZGZpbGUuYzo0MTAKQEAgLTUwNiwyMTEgKzU0MCwyMzMgQEAKIG1zZ2lkICIlUCVGOiB0YXJnZXQgYXJjaGl0ZWN0dXJlIHJlc3BlY2lmaWVkXG4iCiBtc2dzdHIgIiIKIAotIzogbGRmaWxlLmM6NTk0CisjOiBsZGZpbGUuYzo1OTUKIG1zZ2lkICIlUCVGOiBjYW5ub3QgcmVwcmVzZW50IG1hY2hpbmUgYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjY0MAorIzogbGRsYW5nLmM6NDk1Cittc2dpZCAiJVAlRjogb3V0IG9mIG1lbW9yeSBkdXJpbmcgaW5pdGlhbGl6YXRpb24iCittc2dzdHIgIiIKKworIzogbGRsYW5nLmM6NTM0Cittc2dpZCAiJVA6JVM6IHdhcm5pbmc6IHJlZGVjbGFyYXRpb24gb2YgbWVtb3J5IHJlZ2lvbiAnJXMnXG4iCittc2dzdHIgIiIKKworIzogbGRsYW5nLmM6NTUzCittc2dpZCAiJVA6JVM6IHdhcm5pbmc6IG1lbW9yeSByZWdpb24gJXMgbm90IGRlY2xhcmVkXG4iCittc2dzdHIgIiIKKworIzogbGRsYW5nLmM6NjcwCiBtc2dpZCAiIgogIlxuIgogIk1lbW9yeSBDb25maWd1cmF0aW9uXG4iCiAiXG4iCiBtc2dzdHIgIiIKIAotIzogbGRsYW5nLmM6NjQyCisjOiBsZGxhbmcuYzo2NzIKIG1zZ2lkICJOYW1lIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjY0MgorIzogbGRsYW5nLmM6NjcyCiBtc2dpZCAiT3JpZ2luIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjY0MgorIzogbGRsYW5nLmM6NjcyCiBtc2dpZCAiTGVuZ3RoIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjY0MgorIzogbGRsYW5nLmM6NjcyCiBtc2dpZCAiQXR0cmlidXRlcyIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzo2ODIKKyM6IGxkbGFuZy5jOjcxMgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiTGlua2VyIHNjcmlwdCBhbmQgbWVtb3J5IG1hcFxuIgogIlxuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjY5OAorIzogbGRsYW5nLmM6NzI4CiBtc2dpZCAiJVAlRjogSWxsZWdhbCB1c2Ugb2YgYCVzJyBzZWN0aW9uXG4iCiBtc2dzdHIgIiIKIAotIzogbGRsYW5nLmM6NzA3CisjOiBsZGxhbmcuYzo3MzcKIG1zZ2lkICIlUCVGOiBvdXRwdXQgZm9ybWF0ICVzIGNhbm5vdCByZXByZXNlbnQgc2VjdGlvbiBjYWxsZWQgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzo4NjcKKyM6IGxkbGFuZy5jOjkwMQogbXNnaWQgIiVQOiAlQjogd2FybmluZzogaWdub3JpbmcgZHVwbGljYXRlIHNlY3Rpb24gYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjg3MAorIzogbGRsYW5nLmM6OTA0CiBtc2dpZCAiJVA6ICVCOiB3YXJuaW5nOiBpZ25vcmluZyBkdXBsaWNhdGUgYCVzJyBzZWN0aW9uIHN5bWJvbCBgJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogbGRsYW5nLmM6ODg0CisjOiBsZGxhbmcuYzo5MTgKIG1zZ2lkICIlUDogJUI6IHdhcm5pbmc6IGR1cGxpY2F0ZSBzZWN0aW9uIGAlcycgaGFzIGRpZmZlcmVudCBzaXplXG4iCiBtc2dzdHIgIiIKIAotIzogbGRsYW5nLmM6OTM2CisjOiBsZGxhbmcuYzo5NzAKIG1zZ2lkICIlUCVGOiBGYWlsZWQgdG8gY3JlYXRlIGhhc2ggdGFibGVcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzoxMzUxCisjOiBsZGxhbmcuYzoxMzg2CiBtc2dpZCAiJUI6IGZpbGUgbm90IHJlY29nbml6ZWQ6ICVFXG4iCiBtc2dzdHIgIiIKIAotIzogbGRsYW5nLmM6MTM1MgorIzogbGRsYW5nLmM6MTM4NwogbXNnaWQgIiVCOiBtYXRjaGluZyBmb3JtYXRzOiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzoxMzU5CisjOiBsZGxhbmcuYzoxMzk0CiBtc2dpZCAiJUYlQjogZmlsZSBub3QgcmVjb2duaXplZDogJUVcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzoxNDE4CisjOiBsZGxhbmcuYzoxNDUzCiBtc2dpZCAiJUYlQjogbWVtYmVyICVCIGluIGFyY2hpdmUgaXMgbm90IGFuIG9iamVjdFxuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjE0MjkgbGRsYW5nLmM6MTQ0MworIzogbGRsYW5nLmM6MTQ2NCBsZGxhbmcuYzoxNDc4CiBtc2dpZCAiJUYlQjogY291bGQgbm90IHJlYWQgc3ltYm9sczogJUVcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzoxNjk4CisjOiBsZGxhbmcuYzoxNzMzCiBtc2dpZCAiIgogIiVQOiB3YXJuaW5nOiBjb3VsZCBub3QgZmluZCBhbnkgdGFyZ2V0cyB0aGF0IG1hdGNoIGVuZGlhbm5lc3MgcmVxdWlyZW1lbnRcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzoxNzExCisjOiBsZGxhbmcuYzoxNzQ2CiBtc2dpZCAiJVAlRjogdGFyZ2V0ICVzIG5vdCBmb3VuZFxuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjE3MTMKKyM6IGxkbGFuZy5jOjE3NDgKIG1zZ2lkICIlUCVGOiBjYW5ub3Qgb3BlbiBvdXRwdXQgZmlsZSAlczogJUVcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzoxNzIzCisjOiBsZGxhbmcuYzoxNzU4CiBtc2dpZCAiJVAlRjolczogY2FuIG5vdCBtYWtlIG9iamVjdCBmaWxlOiAlRVxuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjE3MjcKKyM6IGxkbGFuZy5jOjE3NjIKIG1zZ2lkICIlUCVGOiVzOiBjYW4gbm90IHNldCBhcmNoaXRlY3R1cmU6ICVFXG4iCiBtc2dzdHIgIiIKIAotIzogbGRsYW5nLmM6MTczMQorIzogbGRsYW5nLmM6MTc2NgogbXNnaWQgIiVQJUY6IGNhbiBub3QgY3JlYXRlIGxpbmsgaGFzaCB0YWJsZTogJUVcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzoyMDY5CisjOiBsZGxhbmcuYzoxOTM1Cittc2dpZCAiJVAlRjogYmZkX2hhc2hfbG9va3VwIGZhaWxlZCBjcmVhdGluZyBzeW1ib2wgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBsZGxhbmcuYzoxOTUzCittc2dpZCAiJVAlRjogYmZkX2hhc2hfYWxsb2NhdGUgZmFpbGVkIGNyZWF0aW5nIHN5bWJvbCAlc1xuIgorbXNnc3RyICIiCisKKyM6IGxkbGFuZy5jOjIyMTEKIG1zZ2lkICIgbG9hZCBhZGRyZXNzIDB4JVYiCiBtc2dzdHIgIiIKIAotIzogbGRsYW5nLmM6MjIwNAorIzogbGRsYW5nLmM6MjM0NgogbXNnaWQgIiVXIChzaXplIGJlZm9yZSByZWxheGluZylcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzoyMjg4CisjOiBsZGxhbmcuYzoyNDI5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFkZHJlc3Mgb2Ygc2VjdGlvbiAlcyBzZXQgdG8gIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjI0NDMKKyM6IGxkbGFuZy5jOjI1ODIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbCB3aXRoICVkXG4iCiBtc2dzdHIgIiIKIAotIzogbGRsYW5nLmM6MjY4MworIzogbGRsYW5nLmM6MjgyMgogbXNnaWQgIiVYJVA6IHNlY3Rpb24gJXMgWyVWIC0+ICVWXSBvdmVybGFwcyBzZWN0aW9uICVzIFslViAtPiAlVl1cbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzoyNzExCisjOiBsZGxhbmcuYzoyODUwCiBtc2dpZCAiJVglUDogYWRkcmVzcyAweCV2IG9mICVCIHNlY3Rpb24gJXMgaXMgbm90IHdpdGhpbiByZWdpb24gJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzoyNzE5CisjOiBsZGxhbmcuYzoyODU4CiBtc2dpZCAiJVglUDogcmVnaW9uICVzIGlzIGZ1bGwgKCVCIHNlY3Rpb24gJXMpXG4iCiBtc2dzdHIgIiIKIAotIzogbGRsYW5nLmM6Mjc3MAorIzogbGRsYW5nLmM6MjkwNgogbXNnaWQgIiVQJVg6IEludGVybmFsIGVycm9yIG9uIENPRkYgc2hhcmVkIGxpYnJhcnkgc2VjdGlvbiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjI4MjYKKyM6IGxkbGFuZy5jOjI5NTkKIG1zZ2lkICIlUCVGOiBlcnJvcjogbm8gbWVtb3J5IHJlZ2lvbiBzcGVjaWZpZWQgZm9yIGxvYWRhYmxlIHNlY3Rpb24gYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjI4MzAKKyM6IGxkbGFuZy5jOjI5NjMKIG1zZ2lkICIlUDogd2FybmluZzogbm8gbWVtb3J5IHJlZ2lvbiBzcGVjaWZpZWQgZm9yIGxvYWRhYmxlIHNlY3Rpb24gYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjI4NDYKKyM6IGxkbGFuZy5jOjI5NzkKIG1zZ2lkICIlUDogd2FybmluZzogY2hhbmdpbmcgc3RhcnQgb2Ygc2VjdGlvbiAlcyBieSAldSBieXRlc1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjI4NTkKKyM6IGxkbGFuZy5jOjI5OTUKICMsIGMtZm9ybWF0Ci1tc2dpZCAiJUYlUzogbm9uIGNvbnN0YW50IGFkZHJlc3MgZXhwcmVzc2lvbiBmb3Igc2VjdGlvbiAlc1xuIgorbXNnaWQgIiIKKyIlRiVTOiBub24gY29uc3RhbnQgb3IgZm9yd2FyZCByZWZlcmVuY2UgYWRkcmVzcyBleHByZXNzaW9uIGZvciBzZWN0aW9uICVzXG4iCiBtc2dzdHIgIiIKIAotIzogbGRsYW5nLmM6MzAzNgorIzogbGRsYW5nLmM6MzE4MAogbXNnaWQgIiVQJUY6IGNhbid0IHJlbGF4IHNlY3Rpb246ICVFXG4iCiBtc2dzdHIgIiIKIAotIzogbGRsYW5nLmM6MzIzMgorIzogbGRsYW5nLmM6MzM5MwogbXNnaWQgIiVGJVA6IGludmFsaWQgZGF0YSBzdGF0ZW1lbnRcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzozMjY5CisjOiBsZGxhbmcuYzozNDMyCiBtc2dpZCAiJUYlUDogaW52YWxpZCByZWxvYyBzdGF0ZW1lbnRcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzozNDA4CisjOiBsZGxhbmcuYzozNTc4CiBtc2dpZCAiJVAlRjolczogY2FuJ3Qgc2V0IHN0YXJ0IGFkZHJlc3NcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzozNDIxIGxkbGFuZy5jOjM0MzkKKyM6IGxkbGFuZy5jOjM1OTEgbGRsYW5nLmM6MzYwOQogbXNnaWQgIiVQJUY6IGNhbid0IHNldCBzdGFydCBhZGRyZXNzXG4iCiBtc2dzdHIgIiIKIAotIzogbGRsYW5nLmM6MzQzMworIzogbGRsYW5nLmM6MzYwMwogbXNnaWQgIiVQOiB3YXJuaW5nOiBjYW5ub3QgZmluZCBlbnRyeSBzeW1ib2wgJXM7IGRlZmF1bHRpbmcgdG8gJVZcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzozNDQ0CisjOiBsZGxhbmcuYzozNjE0CiBtc2dpZCAiJVA6IHdhcm5pbmc6IGNhbm5vdCBmaW5kIGVudHJ5IHN5bWJvbCAlczsgbm90IHNldHRpbmcgc3RhcnQgYWRkcmVzc1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjM0ODgKKyM6IGxkbGFuZy5jOjM2NjAKIG1zZ2lkICIiCiAiJVAlRjogUmVsb2NhdGFibGUgbGlua2luZyB3aXRoIHJlbG9jYXRpb25zIGZyb20gZm9ybWF0ICVzICglQikgdG8gZm9ybWF0ICVzICIKICIoJUIpIGlzIG5vdCBzdXBwb3J0ZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzozNDk3CisjOiBsZGxhbmcuYzozNjY5CiBtc2dpZCAiIgogIiVQOiB3YXJuaW5nOiAlcyBhcmNoaXRlY3R1cmUgb2YgaW5wdXQgZmlsZSBgJUInIGlzIGluY29tcGF0aWJsZSB3aXRoICVzICIKICJvdXRwdXRcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzozNTE4Ci1tc2dpZCAiJUUlWDogZmFpbGVkIHRvIG1lcmdlIHRhcmdldCBzcGVjaWZpYyBkYXRhIG9mIGZpbGUgJUJcbiIKKyM6IGxkbGFuZy5jOjM2OTAKK21zZ2lkICIlUCVYOiBmYWlsZWQgdG8gbWVyZ2UgdGFyZ2V0IHNwZWNpZmljIGRhdGEgb2YgZmlsZSAlQlxuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjM2MDQKKyM6IGxkbGFuZy5jOjM3NzQKIG1zZ2lkICIiCiAiXG4iCiAiQWxsb2NhdGluZyBjb21tb24gc3ltYm9sc1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjM2MDUKKyM6IGxkbGFuZy5jOjM3NzUKIG1zZ2lkICIiCiAiQ29tbW9uIHN5bWJvbCAgICAgICBzaXplICAgICAgICAgICAgICBmaWxlXG4iCiAiXG4iCkBAIC03MTksMjcwICs3NzUsMjg0IEBACiAjLiBUaGlzIG1lc3NhZ2UgaGFwcGVucyB3aGVuIHVzaW5nIHRoZQogIy4gc3ZyMy5pZmlsZSBsaW5rZXIgc2NyaXB0LCBzbyBJIGhhdmUKICMuIGRpc2FibGVkIGl0LgotIzogbGRsYW5nLmM6MzY4MQorIzogbGRsYW5nLmM6Mzg1MQogbXNnaWQgIiVQOiBubyBbQ09NTU9OXSBjb21tYW5kLCBkZWZhdWx0aW5nIHRvIC5ic3NcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzozNzM3CisjOiBsZGxhbmcuYzozOTA3CiBtc2dpZCAiJVAlRjogaW52YWxpZCBzeW50YXggaW4gZmxhZ3NcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzo0MzI1CisjOiBsZGxhbmcuYzo0NDc5CiBtc2dpZCAiJVAlRm11bHRpcGxlIFNUQVJUVVAgZmlsZXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZGxhbmcuYzo0MzY4CisjOiBsZGxhbmcuYzo0NTI2CiBtc2dpZCAiJVglUDolUzogc2VjdGlvbiBoYXMgYm90aCBhIGxvYWQgYWRkcmVzcyBhbmQgYSBsb2FkIHJlZ2lvblxuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjQ2MDgKKyM6IGxkbGFuZy5jOjQ3NjYKIG1zZ2lkICIlRiVQOiBiZmRfcmVjb3JkX3BoZHIgZmFpbGVkOiAlRVxuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjQ2MjcKKyM6IGxkbGFuZy5jOjQ3ODUKIG1zZ2lkICIlWCVQOiBzZWN0aW9uIGAlcycgYXNzaWduZWQgdG8gbm9uLWV4aXN0ZW50IHBoZHIgYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjQ5MTkKKyM6IGxkbGFuZy5jOjUxNzEKIG1zZ2lkICIlWCVQOiB1bmtub3duIGxhbmd1YWdlIGAlcycgaW4gdmVyc2lvbiBpbmZvcm1hdGlvblxuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjQ5NjkKKyM6IGxkbGFuZy5jOjUzMTMKIG1zZ2lkICIiCiAiJVglUDogYW5vbnltb3VzIHZlcnNpb24gdGFnIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHZlcnNpb24gdGFnc1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjQ5NzcKKyM6IGxkbGFuZy5jOjUzMjEKIG1zZ2lkICIlWCVQOiBkdXBsaWNhdGUgdmVyc2lvbiB0YWcgYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjQ5OTAgbGRsYW5nLmM6NTAwMworIzogbGRsYW5nLmM6NTM0MSBsZGxhbmcuYzo1MzQ5IGxkbGFuZy5jOjUzNjYgbGRsYW5nLmM6NTM3NAogbXNnaWQgIiVYJVA6IGR1cGxpY2F0ZSBleHByZXNzaW9uIGAlcycgaW4gdmVyc2lvbiBpbmZvcm1hdGlvblxuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjUwNDMKKyM6IGxkbGFuZy5jOjU0MTQKIG1zZ2lkICIlWCVQOiB1bmFibGUgdG8gZmluZCB2ZXJzaW9uIGRlcGVuZGVuY3kgYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbGFuZy5jOjUwNjUKKyM6IGxkbGFuZy5jOjU0MzYKIG1zZ2lkICIlWCVQOiB1bmFibGUgdG8gcmVhZCAuZXhwb3J0cyBzZWN0aW9uIGNvbnRlbnRzXG4iCiBtc2dzdHIgIiIKIAotIzogbGRtYWluLmM6MjQ3CisjOiBsZG1haW4uYzoyNTEKIG1zZ2lkICIlWCVQOiBjYW4ndCBzZXQgQkZEIGRlZmF1bHQgdGFyZ2V0IHRvIGAlcyc6ICVFXG4iCiBtc2dzdHIgIiIKIAotIzogbGRtYWluLmM6MzQ5Ci1tc2dpZCAiJVAlRjogLXIgYW5kIC0tbXBjODYwYzAgbWF5IG5vdCBiZSB1c2VkIHRvZ2V0aGVyXG4iCi1tc2dzdHIgIiIKLQotIzogbGRtYWluLmM6MzUxCisjOiBsZG1haW4uYzozNTIKIG1zZ2lkICIlUCVGOiAtLXJlbGF4IGFuZCAtciBtYXkgbm90IGJlIHVzZWQgdG9nZXRoZXJcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzozNTMKKyM6IGxkbWFpbi5jOjM1NAogbXNnaWQgIiVQJUY6IC1yIGFuZCAtc2hhcmVkIG1heSBub3QgYmUgdXNlZCB0b2dldGhlclxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjM1OQorIzogbGRtYWluLmM6MzYwCiBtc2dpZCAiJVAlRjogLUYgbWF5IG5vdCBiZSB1c2VkIHdpdGhvdXQgLXNoYXJlZFxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjM2MQorIzogbGRtYWluLmM6MzYyCiBtc2dpZCAiJVAlRjogLWYgbWF5IG5vdCBiZSB1c2VkIHdpdGhvdXQgLXNoYXJlZFxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjQwMworIzogbGRtYWluLmM6NDA0CiBtc2dpZCAidXNpbmcgZXh0ZXJuYWwgbGlua2VyIHNjcmlwdDoiCiBtc2dzdHIgIiIKIAotIzogbGRtYWluLmM6NDA1CisjOiBsZG1haW4uYzo0MDYKIG1zZ2lkICJ1c2luZyBpbnRlcm5hbCBsaW5rZXIgc2NyaXB0OiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzo0MzkKKyM6IGxkbWFpbi5jOjQ0MAogbXNnaWQgIiVQJUY6IG5vIGlucHV0IGZpbGVzXG4iCiBtc2dzdHIgIiIKIAotIzogbGRtYWluLmM6NDQzCisjOiBsZG1haW4uYzo0NDQKIG1zZ2lkICIlUDogbW9kZSAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjQ1OQorIzogbGRtYWluLmM6NDYwCiBtc2dpZCAiJVAlRjogY2Fubm90IG9wZW4gbWFwIGZpbGUgJXM6ICVFXG4iCiBtc2dzdHIgIiIKIAotIzogbGRtYWluLmM6NDg5CisjOiBsZG1haW4uYzo0OTAKIG1zZ2lkICIlUDogbGluayBlcnJvcnMgZm91bmQsIGRlbGV0aW5nIGV4ZWN1dGFibGUgYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjQ5OAorIzogbGRtYWluLmM6NDk5CiBtc2dpZCAiJUYlQjogZmluYWwgY2xvc2UgZmFpbGVkOiAlRVxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjUyNAorIzogbGRtYWluLmM6NTI1CiBtc2dpZCAiJVglUDogdW5hYmxlIHRvIG9wZW4gZm9yIHNvdXJjZSBvZiBjb3B5IGAlcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzo1MjcKKyM6IGxkbWFpbi5jOjUyOAogbXNnaWQgIiVYJVA6IHVuYWJsZSB0byBvcGVuIGZvciBkZXN0aW5hdGlvbiBvZiBjb3B5IGAlcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzo1MzQKKyM6IGxkbWFpbi5jOjUzNQogbXNnaWQgIiVQOiBFcnJvciB3cml0aW5nIGZpbGUgYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjUzOSBwZS1kbGwuYzoxNDQzCisjOiBsZG1haW4uYzo1NDAgcGUtZGxsLmM6MTQ1MQogIywgYy1mb3JtYXQKIG1zZ2lkICIlUDogRXJyb3IgY2xvc2luZyBmaWxlIGAlcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzo1NTUKKyM6IGxkbWFpbi5jOjU1NgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogdG90YWwgdGltZSBpbiBsaW5rOiAlbGQuJTA2bGRcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzo1NTgKKyM6IGxkbWFpbi5jOjU1OQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZGF0YSBzaXplICVsZFxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjU5NgorIzogbGRtYWluLmM6NTk3CiBtc2dpZCAiJVAlRjogbWlzc2luZyBhcmd1bWVudCB0byAtbVxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjc0MSBsZG1haW4uYzo3NTkgbGRtYWluLmM6Nzg5CisjOiBsZG1haW4uYzo3NDMgbGRtYWluLmM6NzYxIGxkbWFpbi5jOjc5MQogbXNnaWQgIiVQJUY6IGJmZF9oYXNoX3RhYmxlX2luaXQgZmFpbGVkOiAlRVxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjc0NSBsZG1haW4uYzo3NjMKKyM6IGxkbWFpbi5jOjc0NyBsZG1haW4uYzo3NjUKIG1zZ2lkICIlUCVGOiBiZmRfaGFzaF9sb29rdXAgZmFpbGVkOiAlRVxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjc3NworIzogbGRtYWluLmM6Nzc5CiBtc2dpZCAiJVglUDogZXJyb3I6IGR1cGxpY2F0ZSByZXRhaW4tc3ltYm9scy1maWxlXG4iCiBtc2dzdHIgIiIKIAotIzogbGRtYWluLmM6ODE5CisjOiBsZG1haW4uYzo4MjEKIG1zZ2lkICIlUCVGOiBiZmRfaGFzaF9sb29rdXAgZm9yIGluc2VydGlvbiBmYWlsZWQ6ICVFXG4iCiBtc2dzdHIgIiIKIAotIzogbGRtYWluLmM6ODI0CisjOiBsZG1haW4uYzo4MjYKIG1zZ2lkICIlUDogYC1yZXRhaW4tc3ltYm9scy1maWxlJyBvdmVycmlkZXMgYC1zJyBhbmQgYC1TJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjg5OQorIzogbGRtYWluLmM6OTAxCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJBcmNoaXZlIG1lbWJlciBpbmNsdWRlZCBiZWNhdXNlIG9mIGZpbGUgKHN5bWJvbClcbiIKICJcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzo5NjkKKyM6IGxkbWFpbi5jOjk3MQogbXNnaWQgIiVYJUM6IG11bHRpcGxlIGRlZmluaXRpb24gb2YgYCVUJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjk3MgorIzogbGRtYWluLmM6OTc0CiBtc2dpZCAiJUQ6IGZpcnN0IGRlZmluZWQgaGVyZVxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjk3NgorIzogbGRtYWluLmM6OTc4CiBtc2dpZCAiJVA6IERpc2FibGluZyByZWxheGF0aW9uOiBpdCB3aWxsIG5vdCB3b3JrIHdpdGggbXVsdGlwbGUgZGVmaW5pdGlvbnNcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzoxMDA2CisjOiBsZG1haW4uYzoxMDA4CiBtc2dpZCAiJUI6IHdhcm5pbmc6IGRlZmluaXRpb24gb2YgYCVUJyBvdmVycmlkaW5nIGNvbW1vblxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjEwMDkKKyM6IGxkbWFpbi5jOjEwMTEKIG1zZ2lkICIlQjogd2FybmluZzogY29tbW9uIGlzIGhlcmVcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzoxMDE2CisjOiBsZG1haW4uYzoxMDE4CiBtc2dpZCAiJUI6IHdhcm5pbmc6IGNvbW1vbiBvZiBgJVQnIG92ZXJyaWRkZW4gYnkgZGVmaW5pdGlvblxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjEwMTkKKyM6IGxkbWFpbi5jOjEwMjEKIG1zZ2lkICIlQjogd2FybmluZzogZGVmaW5lZCBoZXJlXG4iCiBtc2dzdHIgIiIKIAotIzogbGRtYWluLmM6MTAyNgorIzogbGRtYWluLmM6MTAyOAogbXNnaWQgIiVCOiB3YXJuaW5nOiBjb21tb24gb2YgYCVUJyBvdmVycmlkZGVuIGJ5IGxhcmdlciBjb21tb25cbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzoxMDI5CisjOiBsZG1haW4uYzoxMDMxCiBtc2dpZCAiJUI6IHdhcm5pbmc6IGxhcmdlciBjb21tb24gaXMgaGVyZVxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjEwMzMKKyM6IGxkbWFpbi5jOjEwMzUKIG1zZ2lkICIlQjogd2FybmluZzogY29tbW9uIG9mIGAlVCcgb3ZlcnJpZGluZyBzbWFsbGVyIGNvbW1vblxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjEwMzYKKyM6IGxkbWFpbi5jOjEwMzgKIG1zZ2lkICIlQjogd2FybmluZzogc21hbGxlciBjb21tb24gaXMgaGVyZVxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjEwNDAKKyM6IGxkbWFpbi5jOjEwNDIKIG1zZ2lkICIlQjogd2FybmluZzogbXVsdGlwbGUgY29tbW9uIG9mIGAlVCdcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzoxMDQyCisjOiBsZG1haW4uYzoxMDQ0CiBtc2dpZCAiJUI6IHdhcm5pbmc6IHByZXZpb3VzIGNvbW1vbiBpcyBoZXJlXG4iCiBtc2dzdHIgIiIKIAotIzogbGRtYWluLmM6MTA2MiBsZG1haW4uYzoxMTAwCisjOiBsZG1haW4uYzoxMDY0IGxkbWFpbi5jOjExMDIKIG1zZ2lkICIlUDogd2FybmluZzogZ2xvYmFsIGNvbnN0cnVjdG9yICVzIHVzZWRcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzoxMTEwCisjOiBsZG1haW4uYzoxMTEyCiBtc2dpZCAiJVAlRjogQkZEIGJhY2tlbmQgZXJyb3I6IEJGRF9SRUxPQ19DVE9SIHVuc3VwcG9ydGVkXG4iCiBtc2dzdHIgIiIKIAotIzogbGRtYWluLmM6MTI4NyBsZG1pc2MuYzo1MzMKKyM6IGxkbWFpbi5jOjEyODkgbGRtaXNjLmM6NTMzCiBtc2dpZCAiJUYlUDogYmZkX2hhc2hfdGFibGVfaW5pdCBmYWlsZWQ6ICVFXG4iCiBtc2dzdHIgIiIKIAotIzogbGRtYWluLmM6MTI5NCBsZG1pc2MuYzo1NDAKKyM6IGxkbWFpbi5jOjEyOTYgbGRtaXNjLmM6NTQwCiBtc2dpZCAiJUYlUDogYmZkX2hhc2hfbG9va3VwIGZhaWxlZDogJUVcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzoxMzE0Ci1tc2dpZCAiJUM6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYCVUJ1xuIgorIzogbGRtYWluLmM6MTMxNworbXNnaWQgIiVYJUM6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYCVUJ1xuIgogbXNnc3RyICIiCiAKICM6IGxkbWFpbi5jOjEzMjAKLW1zZ2lkICIlRDogbW9yZSB1bmRlZmluZWQgcmVmZXJlbmNlcyB0byBgJVQnIGZvbGxvd1xuIgorbXNnaWQgIiVDOiB3YXJuaW5nOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGAlVCdcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzoxMzI3Ci1tc2dpZCAiJUI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYCVUJ1xuIgorIzogbGRtYWluLmM6MTMyNgorbXNnaWQgIiVYJUQ6IG1vcmUgdW5kZWZpbmVkIHJlZmVyZW5jZXMgdG8gYCVUJyBmb2xsb3dcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzoxMzMzCi1tc2dpZCAiJUI6IG1vcmUgdW5kZWZpbmVkIHJlZmVyZW5jZXMgdG8gYCVUJyBmb2xsb3dcbiIKKyM6IGxkbWFpbi5jOjEzMjkKK21zZ2lkICIlRDogd2FybmluZzogbW9yZSB1bmRlZmluZWQgcmVmZXJlbmNlcyB0byBgJVQnIGZvbGxvd1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjEzNjQgbGRtYWluLmM6MTM5MiBsZG1haW4uYzoxNDEwCisjOiBsZG1haW4uYzoxMzQwCittc2dpZCAiJVglQjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgJVQnXG4iCittc2dzdHIgIiIKKworIzogbGRtYWluLmM6MTM0MworbXNnaWQgIiVCOiB3YXJuaW5nOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGAlVCdcbiIKK21zZ3N0ciAiIgorCisjOiBsZG1haW4uYzoxMzQ5Cittc2dpZCAiJVglQjogbW9yZSB1bmRlZmluZWQgcmVmZXJlbmNlcyB0byBgJVQnIGZvbGxvd1xuIgorbXNnc3RyICIiCisKKyM6IGxkbWFpbi5jOjEzNTIKK21zZ2lkICIlQjogd2FybmluZzogbW9yZSB1bmRlZmluZWQgcmVmZXJlbmNlcyB0byBgJVQnIGZvbGxvd1xuIgorbXNnc3RyICIiCisKKyM6IGxkbWFpbi5jOjEzODYgbGRtYWluLmM6MTQxNCBsZG1haW4uYzoxNDMyCiBtc2dpZCAiJVAlWDogZ2VuZXJhdGVkIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjEzNzEKKyM6IGxkbWFpbi5jOjEzOTMKIG1zZ2lkICIgYWRkaXRpb25hbCByZWxvY2F0aW9uIG92ZXJmbG93cyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dFxuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjEzNzUKKyM6IGxkbWFpbi5jOjEzOTcKIG1zZ2lkICIgcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiAlcyAlVCIKIG1zZ3N0ciAiIgogCi0jOiBsZG1haW4uYzoxMzk1CisjOiBsZG1haW4uYzoxNDE3CiAjLCBjLWZvcm1hdAogbXNnaWQgImRhbmdlcm91cyByZWxvY2F0aW9uOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGxkbWFpbi5jOjE0MTMKKyM6IGxkbWFpbi5jOjE0MzUKIG1zZ2lkICIgcmVsb2MgcmVmZXJzIHRvIHN5bWJvbCBgJVQnIHdoaWNoIGlzIG5vdCBiZWluZyBvdXRwdXRcbiIKIG1zZ3N0ciAiIgogCiAjOiBsZG1pc2MuYzoxNDcKKyMsIGMtZm9ybWF0CiBtc2dpZCAibm8gc3ltYm9sIgogbXNnc3RyICIiCiAKQEAgLTEwMTYsNTk0ICsxMDg2LDYxOCBAQAogbXNnc3RyICIiCiAKICMuIE91dHB1dCBmb3Igbm9pc3kgPT0gMiBpcyBpbnRlbmRlZCB0byBmb2xsb3cgdGhlIEdOVSBzdGFuZGFyZHMuCi0jOiBsZHZlci5jOjM5CisjOiBsZHZlci5jOjM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkdOVSBsZCB2ZXJzaW9uICVzXG4iCiBtc2dzdHIgIiIKIAotIzogbGR2ZXIuYzo0MworIzogbGR2ZXIuYzo0MgorIywgYy1mb3JtYXQKIG1zZ2lkICJDb3B5cmlnaHQgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy5cbiIKIG1zZ3N0ciAiIgogCi0jOiBsZHZlci5jOjQ0CisjOiBsZHZlci5jOjQzCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IG1heSByZWRpc3RyaWJ1dGUgaXQgdW5kZXIgdGhlIHRlcm1zIG9mXG4iCiAidGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBwcm9ncmFtIGhhcyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5LlxuIgogbXNnc3RyICIiCiAKLSM6IGxkdmVyLmM6NTMKKyM6IGxkdmVyLmM6NTIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiICBTdXBwb3J0ZWQgZW11bGF0aW9uczpcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZHdyaXRlLmM6NTQgbGR3cml0ZS5jOjE5MAorIzogbGR3cml0ZS5jOjU1IGxkd3JpdGUuYzoxOTEKIG1zZ2lkICIlUCVGOiBiZmRfbmV3X2xpbmtfb3JkZXIgZmFpbGVkXG4iCiBtc2dzdHIgIiIKIAotIzogbGR3cml0ZS5jOjMxMAorIzogbGR3cml0ZS5jOjM0MworbXNnaWQgIiVGJVA6IGNhbm5vdCBjcmVhdGUgc3BsaXQgc2VjdGlvbiBuYW1lIGZvciAlc1xuIgorbXNnc3RyICIiCisKKyM6IGxkd3JpdGUuYzozNTUKIG1zZ2lkICIlRiVQOiBjbG9uZSBzZWN0aW9uIGZhaWxlZDogJUVcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZHdyaXRlLmM6MzQ4CisjOiBsZHdyaXRlLmM6Mzk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiU4eCBzb21ldGhpbmcgZWxzZVxuIgogbXNnc3RyICIiCiAKLSM6IGxkd3JpdGUuYzo1MjUKKyM6IGxkd3JpdGUuYzo1NzIKIG1zZ2lkICIlRiVQOiBmaW5hbCBsaW5rIGZhaWxlZDogJUVcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoxNzkgbGV4c3VwLmM6Mjg0CisjOiBsZXhzdXAuYzoxODUgbGV4c3VwLmM6MjkwCiBtc2dpZCAiS0VZV09SRCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoxNzkKKyM6IGxleHN1cC5jOjE4NQogbXNnaWQgIlNoYXJlZCBsaWJyYXJ5IGNvbnRyb2wgZm9yIEhQL1VYIGNvbXBhdGliaWxpdHkiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MTgyCisjOiBsZXhzdXAuYzoxODgKIG1zZ2lkICJBUkNIIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjE4MgorIzogbGV4c3VwLmM6MTg4CiBtc2dpZCAiU2V0IGFyY2hpdGVjdHVyZSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoxODQgbGV4c3VwLmM6MzU3CisjOiBsZXhzdXAuYzoxOTAgbGV4c3VwLmM6MzYzCiBtc2dpZCAiVEFSR0VUIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjE4NAorIzogbGV4c3VwLmM6MTkwCiBtc2dpZCAiU3BlY2lmeSB0YXJnZXQgZm9yIGZvbGxvd2luZyBpbnB1dCBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoxODYgbGV4c3VwLmM6MjI5IGxleHN1cC5jOjI0MSBsZXhzdXAuYzoyNTQgbGV4c3VwLmM6MzI5Ci0jOiBsZXhzdXAuYzozNjQgbGV4c3VwLmM6NDA4CisjOiBsZXhzdXAuYzoxOTIgbGV4c3VwLmM6MjM1IGxleHN1cC5jOjI0NyBsZXhzdXAuYzoyNjAgbGV4c3VwLmM6MzM1CisjOiBsZXhzdXAuYzozNzAgbGV4c3VwLmM6NDE3CiBtc2dpZCAiRklMRSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoxODYKKyM6IGxleHN1cC5jOjE5MgogbXNnaWQgIlJlYWQgTVJJIGZvcm1hdCBsaW5rZXIgc2NyaXB0IgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjE4OAorIzogbGV4c3VwLmM6MTk0CiBtc2dpZCAiRm9yY2UgY29tbW9uIHN5bWJvbHMgdG8gYmUgZGVmaW5lZCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoxOTIgbGV4c3VwLmM6Mzk4IGxleHN1cC5jOjQwMCBsZXhzdXAuYzo0MDIKKyM6IGxleHN1cC5jOjE5OCBsZXhzdXAuYzo0MDQgbGV4c3VwLmM6NDA2IGxleHN1cC5jOjQwOAogbXNnaWQgIkFERFJFU1MiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MTkyCisjOiBsZXhzdXAuYzoxOTgKIG1zZ2lkICJTZXQgc3RhcnQgYWRkcmVzcyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoxOTQKKyM6IGxleHN1cC5jOjIwMAogbXNnaWQgIkV4cG9ydCBhbGwgZHluYW1pYyBzeW1ib2xzIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjE5NgorIzogbGV4c3VwLmM6MjAyCiBtc2dpZCAiTGluayBiaWctZW5kaWFuIG9iamVjdHMiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MTk4CisjOiBsZXhzdXAuYzoyMDQKIG1zZ2lkICJMaW5rIGxpdHRsZS1lbmRpYW4gb2JqZWN0cyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyMDAgbGV4c3VwLmM6MjAzCisjOiBsZXhzdXAuYzoyMDYgbGV4c3VwLmM6MjA5CiBtc2dpZCAiU0hMSUIiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjAwCisjOiBsZXhzdXAuYzoyMDYKIG1zZ2lkICJBdXhpbGlhcnkgZmlsdGVyIGZvciBzaGFyZWQgb2JqZWN0IHN5bWJvbCB0YWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyMDMKKyM6IGxleHN1cC5jOjIwOQogbXNnaWQgIkZpbHRlciBmb3Igc2hhcmVkIG9iamVjdCBzeW1ib2wgdGFibGUiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjA1CisjOiBsZXhzdXAuYzoyMTEKIG1zZ2lkICJJZ25vcmVkIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjIwNworIzogbGV4c3VwLmM6MjEzCiBtc2dpZCAiU0laRSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyMDcKKyM6IGxleHN1cC5jOjIxMwogbXNnaWQgIlNtYWxsIGRhdGEgc2l6ZSAoaWYgbm8gc2l6ZSwgc2FtZSBhcyAtLXNoYXJlZCkiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjEwCisjOiBsZXhzdXAuYzoyMTYKIG1zZ2lkICJGSUxFTkFNRSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyMTAKKyM6IGxleHN1cC5jOjIxNgogbXNnaWQgIlNldCBpbnRlcm5hbCBuYW1lIG9mIHNoYXJlZCBsaWJyYXJ5IgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjIxMgorIzogbGV4c3VwLmM6MjE4CiBtc2dpZCAiUFJPR1JBTSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyMTIKKyM6IGxleHN1cC5jOjIxOAogbXNnaWQgIlNldCBQUk9HUkFNIGFzIHRoZSBkeW5hbWljIGxpbmtlciB0byB1c2UiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjE0CisjOiBsZXhzdXAuYzoyMjAKIG1zZ2lkICJMSUJOQU1FIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjIxNAorIzogbGV4c3VwLmM6MjIwCiBtc2dpZCAiU2VhcmNoIGZvciBsaWJyYXJ5IExJQk5BTUUiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjE2CisjOiBsZXhzdXAuYzoyMjIKIG1zZ2lkICJESVJFQ1RPUlkiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjE2CisjOiBsZXhzdXAuYzoyMjIKIG1zZ2lkICJBZGQgRElSRUNUT1JZIHRvIGxpYnJhcnkgc2VhcmNoIHBhdGgiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjE4CisjOiBsZXhzdXAuYzoyMjQKIG1zZ2lkICJFTVVMQVRJT04iCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjE4CisjOiBsZXhzdXAuYzoyMjQKIG1zZ2lkICJTZXQgZW11bGF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjIyMAorIzogbGV4c3VwLmM6MjI2CiBtc2dpZCAiUHJpbnQgbWFwIGZpbGUgb24gc3RhbmRhcmQgb3V0cHV0IgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjIyMgorIzogbGV4c3VwLmM6MjI4CiBtc2dpZCAiRG8gbm90IHBhZ2UgYWxpZ24gZGF0YSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyMjQKKyM6IGxleHN1cC5jOjIzMAogbXNnaWQgIkRvIG5vdCBwYWdlIGFsaWduIGRhdGEsIGRvIG5vdCBtYWtlIHRleHQgcmVhZG9ubHkiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjI3CisjOiBsZXhzdXAuYzoyMzMKIG1zZ2lkICJQYWdlIGFsaWduIGRhdGEsIG1ha2UgdGV4dCByZWFkb25seSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyMjkKKyM6IGxleHN1cC5jOjIzNQogbXNnaWQgIlNldCBvdXRwdXQgZmlsZSBuYW1lIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjIzMQorIzogbGV4c3VwLmM6MjM3CiBtc2dpZCAiT3B0aW1pemUgb3V0cHV0IGZpbGUiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjMzCisjOiBsZXhzdXAuYzoyMzkKIG1zZ2lkICJJZ25vcmVkIGZvciBTVlI0IGNvbXBhdGliaWxpdHkiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjM3CisjOiBsZXhzdXAuYzoyNDMKIG1zZ2lkICJHZW5lcmF0ZSByZWxvY2F0YWJsZSBvdXRwdXQiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjQxCisjOiBsZXhzdXAuYzoyNDcKIG1zZ2lkICJKdXN0IGxpbmsgc3ltYm9scyAoaWYgZGlyZWN0b3J5LCBzYW1lIGFzIC0tcnBhdGgpIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjI0NAorIzogbGV4c3VwLmM6MjUwCiBtc2dpZCAiU3RyaXAgYWxsIHN5bWJvbHMiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjQ2CisjOiBsZXhzdXAuYzoyNTIKIG1zZ2lkICJTdHJpcCBkZWJ1Z2dpbmcgc3ltYm9scyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyNDgKKyM6IGxleHN1cC5jOjI1NAogbXNnaWQgIlN0cmlwIHN5bWJvbHMgaW4gZGlzY2FyZGVkIHNlY3Rpb25zIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjI1MAorIzogbGV4c3VwLmM6MjU2CiBtc2dpZCAiRG8gbm90IHN0cmlwIHN5bWJvbHMgaW4gZGlzY2FyZGVkIHNlY3Rpb25zIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjI1MgorIzogbGV4c3VwLmM6MjU4CiBtc2dpZCAiVHJhY2UgZmlsZSBvcGVucyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyNTQKKyM6IGxleHN1cC5jOjI2MAogbXNnaWQgIlJlYWQgbGlua2VyIHNjcmlwdCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyNTYgbGV4c3VwLmM6MjcyIGxleHN1cC5jOjMxNSBsZXhzdXAuYzozMjcgbGV4c3VwLmM6MzkyCi0jOiBsZXhzdXAuYzo0MTEgbGV4c3VwLmM6NDMxCisjOiBsZXhzdXAuYzoyNjIgbGV4c3VwLmM6Mjc4IGxleHN1cC5jOjMyMSBsZXhzdXAuYzozMzMgbGV4c3VwLmM6Mzk4CisjOiBsZXhzdXAuYzo0MjAgbGV4c3VwLmM6NDQ4CiBtc2dpZCAiU1lNQk9MIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjI1NgorIzogbGV4c3VwLmM6MjYyCiBtc2dpZCAiU3RhcnQgd2l0aCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIFNZTUJPTCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyNTgKKyM6IGxleHN1cC5jOjI2NAogbXNnaWQgIls9U0VDVElPTl0iCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjU4CisjOiBsZXhzdXAuYzoyNjQKIG1zZ2lkICJEb24ndCBtZXJnZSBpbnB1dCBbU0VDVElPTiB8IG9ycGhhbl0gc2VjdGlvbnMiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjYwCisjOiBsZXhzdXAuYzoyNjYKIG1zZ2lkICJCdWlsZCBnbG9iYWwgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciB0YWJsZXMiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MjYyCisjOiBsZXhzdXAuYzoyNjgKIG1zZ2lkICJQcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjI2NAorIzogbGV4c3VwLmM6MjcwCiBtc2dpZCAiUHJpbnQgdmVyc2lvbiBhbmQgZW11bGF0aW9uIGluZm9ybWF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjI2NgorIzogbGV4c3VwLmM6MjcyCiBtc2dpZCAiRGlzY2FyZCBhbGwgbG9jYWwgc3ltYm9scyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyNjgKKyM6IGxleHN1cC5jOjI3NAogbXNnaWQgIkRpc2NhcmQgdGVtcG9yYXJ5IGxvY2FsIHN5bWJvbHMgKGRlZmF1bHQpIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjI3MAorIzogbGV4c3VwLmM6Mjc2CiBtc2dpZCAiRG9uJ3QgZGlzY2FyZCBhbnkgbG9jYWwgc3ltYm9scyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyNzIKKyM6IGxleHN1cC5jOjI3OAogbXNnaWQgIlRyYWNlIG1lbnRpb25zIG9mIFNZTUJPTCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyNzQgbGV4c3VwLmM6MzY2IGxleHN1cC5jOjM2OAorIzogbGV4c3VwLmM6MjgwIGxleHN1cC5jOjM3MiBsZXhzdXAuYzozNzQKIG1zZ2lkICJQQVRIIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjI3NAorIzogbGV4c3VwLmM6MjgwCiBtc2dpZCAiRGVmYXVsdCBzZWFyY2ggcGF0aCBmb3IgU29sYXJpcyBjb21wYXRpYmlsaXR5IgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjI3NgorIzogbGV4c3VwLmM6MjgyCiBtc2dpZCAiU3RhcnQgYSBncm91cCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyNzgKKyM6IGxleHN1cC5jOjI4NAogbXNnaWQgIkVuZCBhIGdyb3VwIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjI4MAorIzogbGV4c3VwLmM6Mjg2CiBtc2dpZCAiQWNjZXB0IGlucHV0IGZpbGVzIHdob3NlIGFyY2hpdGVjdHVyZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyODIKKyM6IGxleHN1cC5jOjI4OAogbXNnaWQgIlJlamVjdCBpbnB1dCBmaWxlcyB3aG9zZSBhcmNoaXRlY3R1cmUgaXMgdW5rbm93biIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyODQKKyM6IGxleHN1cC5jOjI5MAogbXNnaWQgIklnbm9yZWQgZm9yIFN1bk9TIGNvbXBhdGliaWxpdHkiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6Mjg2CisjOiBsZXhzdXAuYzoyOTIKIG1zZ2lkICJMaW5rIGFnYWluc3Qgc2hhcmVkIGxpYnJhcmllcyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoyOTIKKyM6IGxleHN1cC5jOjI5OAogbXNnaWQgIkRvIG5vdCBsaW5rIGFnYWluc3Qgc2hhcmVkIGxpYnJhcmllcyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozMDAKKyM6IGxleHN1cC5jOjMwNgogbXNnaWQgIkJpbmQgZ2xvYmFsIHJlZmVyZW5jZXMgbG9jYWxseSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozMDIKKyM6IGxleHN1cC5jOjMwOAogbXNnaWQgIkNoZWNrIHNlY3Rpb24gYWRkcmVzc2VzIGZvciBvdmVybGFwcyAoZGVmYXVsdCkiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MzA0CisjOiBsZXhzdXAuYzozMTAKIG1zZ2lkICJEbyBub3QgY2hlY2sgc2VjdGlvbiBhZGRyZXNzZXMgZm9yIG92ZXJsYXBzIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjMwNworIzogbGV4c3VwLmM6MzEzCiBtc2dpZCAiT3V0cHV0IGNyb3NzIHJlZmVyZW5jZSB0YWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozMDkKKyM6IGxleHN1cC5jOjMxNQogbXNnaWQgIlNZTUJPTD1FWFBSRVNTSU9OIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjMwOQorIzogbGV4c3VwLmM6MzE1CiBtc2dpZCAiRGVmaW5lIGEgc3ltYm9sIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjMxMQorIzogbGV4c3VwLmM6MzE3CiBtc2dpZCAiWz1TVFlMRV0iCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MzExCisjOiBsZXhzdXAuYzozMTcKIG1zZ2lkICJEZW1hbmdsZSBzeW1ib2wgbmFtZXMgW3VzaW5nIFNUWUxFXSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozMTMKKyM6IGxleHN1cC5jOjMxOQogbXNnaWQgIkdlbmVyYXRlIGVtYmVkZGVkIHJlbG9jcyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozMTUKKyM6IGxleHN1cC5jOjMyMQogbXNnaWQgIkNhbGwgU1lNQk9MIGF0IHVubG9hZC10aW1lIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjMxNworIzogbGV4c3VwLmM6MzIzCiBtc2dpZCAiRm9yY2UgZ2VuZXJhdGlvbiBvZiBmaWxlIHdpdGggLmV4ZSBzdWZmaXgiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MzE5CisjOiBsZXhzdXAuYzozMjUKIG1zZ2lkICJSZW1vdmUgdW51c2VkIHNlY3Rpb25zIChvbiBzb21lIHRhcmdldHMpIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjMyMgorIzogbGV4c3VwLmM6MzI4CiBtc2dpZCAiRG9uJ3QgcmVtb3ZlIHVudXNlZCBzZWN0aW9ucyAoZGVmYXVsdCkiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MzI1CisjOiBsZXhzdXAuYzozMzEKIG1zZ2lkICJQcmludCBvcHRpb24gaGVscCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozMjcKKyM6IGxleHN1cC5jOjMzMwogbXNnaWQgIkNhbGwgU1lNQk9MIGF0IGxvYWQtdGltZSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozMjkKKyM6IGxleHN1cC5jOjMzNQogbXNnaWQgIldyaXRlIGEgbWFwIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MzMxCisjOiBsZXhzdXAuYzozMzcKIG1zZ2lkICJEbyBub3QgZGVmaW5lIENvbW1vbiBzdG9yYWdlIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjMzMworIzogbGV4c3VwLmM6MzM5CiBtc2dpZCAiRG8gbm90IGRlbWFuZ2xlIHN5bWJvbCBuYW1lcyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozMzUKKyM6IGxleHN1cC5jOjM0MQogbXNnaWQgIlVzZSBsZXNzIG1lbW9yeSBhbmQgbW9yZSBkaXNrIEkvTyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozMzcKLW1zZ2lkICJBbGxvdyBubyB1bmRlZmluZWQgc3ltYm9scyIKLW1zZ3N0ciAiIgotCi0jOiBsZXhzdXAuYzozMzkKLW1zZ2lkICJBbGxvdyB1bmRlZmluZWQgc3ltYm9scyBpbiBzaGFyZWQgb2JqZWN0cyAodGhlIGRlZmF1bHQpIgotbXNnc3RyICIiCi0KLSM6IGxleHN1cC5jOjM0MQotbXNnaWQgIkRvIG5vdCBhbGxvdyB1bmRlZmluZWQgc3ltYm9scyBpbiBzaGFyZWQgb2JqZWN0cyIKLW1zZ3N0ciAiIgotCiAjOiBsZXhzdXAuYzozNDMKLW1zZ2lkICJBbGxvdyBtdWx0aXBsZSBkZWZpbml0aW9ucyIKK21zZ2lkICJEbyBub3QgYWxsb3cgdW5yZXNvbHZlZCByZWZlcmVuY2VzIGluIG9iamVjdCBmaWxlcyIKIG1zZ3N0ciAiIgogCiAjOiBsZXhzdXAuYzozNDUKLW1zZ2lkICJEaXNhbGxvdyB1bmRlZmluZWQgdmVyc2lvbiIKK21zZ2lkICJBbGxvdyB1bnJlc29sdmVkIHJlZmVyZW5jZXMgaW4gc2hhcmVkIGxpYmFyaWVzIgogbXNnc3RyICIiCiAKICM6IGxleHN1cC5jOjM0NwotbXNnaWQgIkRvbid0IHdhcm4gYWJvdXQgbWlzbWF0Y2hlZCBpbnB1dCBmaWxlcyIKK21zZ2lkICJEbyBub3QgYWxsb3cgdW5yZXNvbHZlZCByZWZlcmVuY2VzIGluIHNoYXJlZCBsaWJzIgogbXNnc3RyICIiCiAKICM6IGxleHN1cC5jOjM0OQotbXNnaWQgIlR1cm4gb2ZmIC0td2hvbGUtYXJjaGl2ZSIKK21zZ2lkICJBbGxvdyBtdWx0aXBsZSBkZWZpbml0aW9ucyIKIG1zZ3N0ciAiIgogCiAjOiBsZXhzdXAuYzozNTEKLW1zZ2lkICJDcmVhdGUgYW4gb3V0cHV0IGZpbGUgZXZlbiBpZiBlcnJvcnMgb2NjdXIiCittc2dpZCAiRGlzYWxsb3cgdW5kZWZpbmVkIHZlcnNpb24iCittc2dzdHIgIiIKKworIzogbGV4c3VwLmM6MzUzCittc2dpZCAiRG9uJ3Qgd2FybiBhYm91dCBtaXNtYXRjaGVkIGlucHV0IGZpbGVzIgogbXNnc3RyICIiCiAKICM6IGxleHN1cC5jOjM1NQorbXNnaWQgIlR1cm4gb2ZmIC0td2hvbGUtYXJjaGl2ZSIKK21zZ3N0ciAiIgorCisjOiBsZXhzdXAuYzozNTcKK21zZ2lkICJDcmVhdGUgYW4gb3V0cHV0IGZpbGUgZXZlbiBpZiBlcnJvcnMgb2NjdXIiCittc2dzdHIgIiIKKworIzogbGV4c3VwLmM6MzYxCiBtc2dpZCAiIgogIk9ubHkgdXNlIGxpYnJhcnkgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIG9uXG4iCiAiXHRcdFx0XHR0aGUgY29tbWFuZCBsaW5lIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjM1NworIzogbGV4c3VwLmM6MzYzCiBtc2dpZCAiU3BlY2lmeSB0YXJnZXQgb2Ygb3V0cHV0IGZpbGUiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MzU5CisjOiBsZXhzdXAuYzozNjUKIG1zZ2lkICJJZ25vcmVkIGZvciBMaW51eCBjb21wYXRpYmlsaXR5IgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjM2MQorIzogbGV4c3VwLmM6MzY3CiBtc2dpZCAiUmVsYXggYnJhbmNoZXMgb24gY2VydGFpbiB0YXJnZXRzIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjM2NAorIzogbGV4c3VwLmM6MzcwCiBtc2dpZCAiS2VlcCBvbmx5IHN5bWJvbHMgbGlzdGVkIGluIEZJTEUiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MzY2CisjOiBsZXhzdXAuYzozNzIKIG1zZ2lkICJTZXQgcnVudGltZSBzaGFyZWQgbGlicmFyeSBzZWFyY2ggcGF0aCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozNjgKKyM6IGxleHN1cC5jOjM3NAogbXNnaWQgIlNldCBsaW5rIHRpbWUgc2hhcmVkIGxpYnJhcnkgc2VhcmNoIHBhdGgiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MzcwCisjOiBsZXhzdXAuYzozNzYKIG1zZ2lkICJDcmVhdGUgYSBzaGFyZWQgbGlicmFyeSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozNzQKKyM6IGxleHN1cC5jOjM4MAogbXNnaWQgIkNyZWF0ZSBhIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6Mzc4CisjOiBsZXhzdXAuYzozODQKIG1zZ2lkICJTb3J0IGNvbW1vbiBzeW1ib2xzIGJ5IHNpemUiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MzgyCisjOiBsZXhzdXAuYzozODgKIG1zZ2lkICJDT1VOVCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozODIKKyM6IGxleHN1cC5jOjM4OAogbXNnaWQgIkhvdyBtYW55IHRhZ3MgdG8gcmVzZXJ2ZSBpbiAuZHluYW1pYyBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjM4NAorIzogbGV4c3VwLmM6MzkwCiBtc2dpZCAiWz1TSVpFXSIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozODQKKyM6IGxleHN1cC5jOjM5MAogbXNnaWQgIlNwbGl0IG91dHB1dCBzZWN0aW9ucyBldmVyeSBTSVpFIG9jdGV0cyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozODYKKyM6IGxleHN1cC5jOjM5MgogbXNnaWQgIls9Q09VTlRdIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjM4NgorIzogbGV4c3VwLmM6MzkyCiBtc2dpZCAiU3BsaXQgb3V0cHV0IHNlY3Rpb25zIGV2ZXJ5IENPVU5UIHJlbG9jcyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozODgKKyM6IGxleHN1cC5jOjM5NAogbXNnaWQgIlByaW50IG1lbW9yeSB1c2FnZSBzdGF0aXN0aWNzIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjM5MAorIzogbGV4c3VwLmM6Mzk2CiBtc2dpZCAiRGlzcGxheSB0YXJnZXQgc3BlY2lmaWMgb3B0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozOTIKKyM6IGxleHN1cC5jOjM5OAogbXNnaWQgIkRvIHRhc2sgbGV2ZWwgbGlua2luZyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozOTQKKyM6IGxleHN1cC5jOjQwMAogbXNnaWQgIlVzZSBzYW1lIGZvcm1hdCBhcyBuYXRpdmUgbGlua2VyIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjM5NgorIzogbGV4c3VwLmM6NDAyCiBtc2dpZCAiU0VDVElPTj1BRERSRVNTIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjM5NgorIzogbGV4c3VwLmM6NDAyCiBtc2dpZCAiU2V0IGFkZHJlc3Mgb2YgbmFtZWQgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzozOTgKKyM6IGxleHN1cC5jOjQwNAogbXNnaWQgIlNldCBhZGRyZXNzIG9mIC5ic3Mgc2VjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzo0MDAKKyM6IGxleHN1cC5jOjQwNgogbXNnaWQgIlNldCBhZGRyZXNzIG9mIC5kYXRhIHNlY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6NDAyCisjOiBsZXhzdXAuYzo0MDgKIG1zZ2lkICJTZXQgYWRkcmVzcyBvZiAudGV4dCBzZWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjQwNAorIzogbGV4c3VwLmM6NDEwCittc2dpZCAiIgorIkhvdyB0byBoYW5kbGUgdW5yZXNvbHZlZCBzeW1ib2xzLiAgPG1ldGhvZD4gaXM6XG4iCisiXHRcdFx0XHRpZ25vcmUtYWxsLCByZXBvcnQtYWxsLCBpZ25vcmUtaW4tb2JqZWN0LWZpbGVzLFxuIgorIlx0XHRcdFx0aWdub3JlLWluLXNoYXJlZC1saWJzIgorbXNnc3RyICIiCisKKyM6IGxleHN1cC5jOjQxMwogbXNnaWQgIk91dHB1dCBsb3RzIG9mIGluZm9ybWF0aW9uIGR1cmluZyBsaW5rIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjQwOAorIzogbGV4c3VwLmM6NDE3CiBtc2dpZCAiUmVhZCB2ZXJzaW9uIGluZm9ybWF0aW9uIHNjcmlwdCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzo0MTEKKyM6IGxleHN1cC5jOjQyMAogbXNnaWQgIiIKICJUYWtlIGV4cG9ydCBzeW1ib2xzIGxpc3QgZnJvbSAuZXhwb3J0cywgdXNpbmdcbiIKICJcdFx0XHRcdFNZTUJPTCBhcyB0aGUgdmVyc2lvbi4iCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6NDE0CisjOiBsZXhzdXAuYzo0MjMKIG1zZ2lkICJXYXJuIGFib3V0IGR1cGxpY2F0ZSBjb21tb24gc3ltYm9scyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzo0MTYKKyM6IGxleHN1cC5jOjQyNQogbXNnaWQgIldhcm4gaWYgZ2xvYmFsIGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycyBhcmUgc2VlbiIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzo0MTkKKyM6IGxleHN1cC5jOjQyOAogbXNnaWQgIldhcm4gaWYgdGhlIG11bHRpcGxlIEdQIHZhbHVlcyBhcmUgdXNlZCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzo0MjEKKyM6IGxleHN1cC5jOjQzMAogbXNnaWQgIldhcm4gb25seSBvbmNlIHBlciB1bmRlZmluZWQgc3ltYm9sIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjQyMworIzogbGV4c3VwLmM6NDMyCiBtc2dpZCAiV2FybiBpZiBzdGFydCBvZiBzZWN0aW9uIGNoYW5nZXMgZHVlIHRvIGFsaWdubWVudCIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzo0MjYKKyM6IGxleHN1cC5jOjQzNQorbXNnaWQgIlJlcG9ydCB1bnJlc29sdmVkIHN5bWJvbHMgYXMgd2FybmluZ3MiCittc2dzdHIgIiIKKworIzogbGV4c3VwLmM6NDM3Cittc2dpZCAiUmVwb3J0IHVucmVzb2x2ZWQgc3ltYm9scyBhcyBlcnJvcnMiCittc2dzdHIgIiIKKworIzogbGV4c3VwLmM6NDM5CiBtc2dpZCAiVHJlYXQgd2FybmluZ3MgYXMgZXJyb3JzIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjQyOQorIzogbGV4c3VwLmM6NDQyCiBtc2dpZCAiSW5jbHVkZSBhbGwgb2JqZWN0cyBmcm9tIGZvbGxvd2luZyBhcmNoaXZlcyIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzo0MzEKKyM6IGxleHN1cC5jOjQ0NAorbXNnaWQgIk9ubHkgc2V0IERUX05FRURFRCBmb3IgZm9sbG93aW5nIGR5bmFtaWMgbGlicyBpZiB1c2VkIgorbXNnc3RyICIiCisKKyM6IGxleHN1cC5jOjQ0NgorbXNnaWQgIkFsd2F5cyBzZXQgRFRfTkVFREVEIGZvciBmb2xsb3dpbmcgZHluYW1pYyBsaWJzIgorbXNnc3RyICIiCisKKyM6IGxleHN1cC5jOjQ0OAogbXNnaWQgIlVzZSB3cmFwcGVyIGZ1bmN0aW9ucyBmb3IgU1lNQk9MIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjQzMwotbXNnaWQgIls9V09SRFNdIgotbXNnc3RyICIiCi0KLSM6IGxleHN1cC5jOjQzMwotbXNnaWQgIiIKLSJNb2RpZnkgcHJvYmxlbWF0aWMgYnJhbmNoZXMgaW4gbGFzdCBXT1JEUyAoMS0xMCxcbiIKLSJcdFx0XHRcdGRlZmF1bHQgNSkgd29yZHMgb2YgYSBwYWdlIgotbXNnc3RyICIiCi0KLSM6IGxleHN1cC5jOjYwMgorIzogbGV4c3VwLmM6NTk1CiBtc2dpZCAiJVA6IHVucmVjb2duaXplZCBvcHRpb24gJyVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjYwNAorIzogbGV4c3VwLmM6NTk3CiBtc2dpZCAiJVAlRjogdXNlIHRoZSAtLWhlbHAgb3B0aW9uIGZvciB1c2FnZSBpbmZvcm1hdGlvblxuIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjYyMgorIzogbGV4c3VwLmM6NjE1CiBtc2dpZCAiJVAlRjogdW5yZWNvZ25pemVkIC1hIG9wdGlvbiBgJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6NjM1CisjOiBsZXhzdXAuYzo2MjgKIG1zZ2lkICIlUCVGOiB1bnJlY29nbml6ZWQgLWFzc2VydCBvcHRpb24gYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjY3OAorIzogbGV4c3VwLmM6Njg5CiBtc2dpZCAiJUYlUDogdW5rbm93biBkZW1hbmdsaW5nIHN0eWxlIGAlcyciCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6NzM3CisjOiBsZXhzdXAuYzo3NDgKIG1zZ2lkICIlUCVGOiBpbnZhbGlkIG51bWJlciBgJXMnXG4iCiBtc2dzdHIgIiIKIAorIzogbGV4c3VwLmM6ODM0Cittc2dpZCAiJVAlRjogYmFkIC0tdW5yZXNvbHZlZC1zeW1ib2xzIG9wdGlvbjogJXNcbiIKK21zZ3N0ciAiIgorCiAjLiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHVzZXIgcHV0ICItcnBhdGgsYSIgb24gdGhlIGNvbW1hbmQKICMuIGxpbmUuICAoT3Igc29tZXRoaW5nIHNpbWlsYXIuICBUaGUgY29tbWEgaXMgaW1wb3J0YW50KS4KICMuIEdldG9wdCBiZWNvbWVzIGNvbmZ1c2VkIGFuZCB0aGlua3MgdGhhdCB0aGlzIGlzIGEgLXIgb3B0aW9uCkBAIC0xNjEyLDY5ICsxNzA2LDY2IEBACiAjLiBhbiBlcnJvciBtZXNzYWdlIGhlcmUuICBXZSBjYW5ub3QganVzdCBtYWtlIHRoaXMgYSB3YXJuaW5nLAogIy4gaW5jcmVtZW50IG9wdGluZCwgYW5kIGNvbnRpbnVlIGJlY2F1c2UgZ2V0b3B0IGlzIHRvbyBjb25mdXNlZAogIy4gYW5kIHdpbGwgc2VnLWZhdWx0IHRoZSBuZXh0IHRpbWUgYXJvdW5kLgotIzogbGV4c3VwLmM6ODQ5CisjOiBsZXhzdXAuYzo4OTkKIG1zZ2lkICIlUCVGOiBiYWQgLXJwYXRoIG9wdGlvblxuIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjk1MworIzogbGV4c3VwLmM6MTAxMQogbXNnaWQgIiVQJUY6IC1zaGFyZWQgbm90IHN1cHBvcnRlZFxuIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjk2MgorIzogbGV4c3VwLmM6MTAyMAogbXNnaWQgIiVQJUY6IC1waWUgbm90IHN1cHBvcnRlZFxuIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjk5NAorIzogbGV4c3VwLmM6MTA1MgogbXNnaWQgIiVQJUY6IGludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uIFwiLS1zZWN0aW9uLXN0YXJ0XCJcbiIKIG1zZ3N0ciAiIgogCi0jOiBsZXhzdXAuYzoxMDAwCisjOiBsZXhzdXAuYzoxMDU4CiBtc2dpZCAiJVAlRjogbWlzc2luZyBhcmd1bWVudChzKSB0byBvcHRpb24gXCItLXNlY3Rpb24tc3RhcnRcIlxuIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjExNTgKKyM6IGxleHN1cC5jOjEyMjIKIG1zZ2lkICIlUCVGOiBtYXkgbm90IG5lc3QgZ3JvdXBzICgtLWhlbHAgZm9yIHVzYWdlKVxuIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjExNjUKKyM6IGxleHN1cC5jOjEyMjkKIG1zZ2lkICIlUCVGOiBncm91cCBlbmRlZCBiZWZvcmUgaXQgYmVnYW4gKC0taGVscCBmb3IgdXNhZ2UpXG4iCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MTE3OQotbXNnaWQgIiVQJUY6IGludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uIFwibXBjODYwYzBcIlxuIgotbXNnc3RyICIiCi0KLSM6IGxleHN1cC5jOjEyMzQKKyM6IGxleHN1cC5jOjEyOTAKIG1zZ2lkICIlUCVGOiBpbnZhbGlkIGhleCBudW1iZXIgYCVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjEyNDYKKyM6IGxleHN1cC5jOjEzMDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNhZ2U6ICVzIFtvcHRpb25zXSBmaWxlLi4uXG4iCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MTI0OAorIzogbGV4c3VwLmM6MTMwNAorIywgYy1mb3JtYXQKIG1zZ2lkICJPcHRpb25zOlxuIgogbXNnc3RyICIiCiAKICMuIE5vdGU6IFZhcmlvdXMgdG9vbHMgKHN1Y2ggYXMgbGlidG9vbCkgZGVwZW5kIHVwb24gdGhlCiAjLiBmb3JtYXQgb2YgdGhlIGxpc3RpbmdzIGJlbG93IC0gZG8gbm90IGNoYW5nZSB0aGVtLgotIzogbGV4c3VwLmM6MTMzMQorIzogbGV4c3VwLmM6MTM4NwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogc3VwcG9ydGVkIHRhcmdldHM6IgogbXNnc3RyICIiCiAKLSM6IGxleHN1cC5jOjEzMzkKKyM6IGxleHN1cC5jOjEzOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHN1cHBvcnRlZCBlbXVsYXRpb25zOiAiCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MTM0NAorIzogbGV4c3VwLmM6MTQwMAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZW11bGF0aW9uIHNwZWNpZmljIG9wdGlvbnM6XG4iCiBtc2dzdHIgIiIKIAotIzogbGV4c3VwLmM6MTM0OAorIzogbGV4c3VwLmM6MTQwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZXBvcnQgYnVncyB0byAlc1xuIgogbXNnc3RyICIiCkBAIC0xNjgzLDY3ICsxNzc0LDY4IEBACiBtc2dpZCAiJVAlRjogdW5rbm93biBmb3JtYXQgdHlwZSAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHBlLWRsbC5jOjMwMQorIzogcGUtZGxsLmM6MzA0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVYVW5zdXBwb3J0ZWQgUEVJIGFyY2hpdGVjdHVyZTogJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBwZS1kbGwuYzo2NTAKKyM6IHBlLWRsbC5jOjY1MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlWEVycm9yLCBkdXBsaWNhdGUgRVhQT1JUIHdpdGggb3JkaW5hbHM6ICVzICglZCB2cyAlZClcbiIKIG1zZ3N0ciAiIgogCi0jOiBwZS1kbGwuYzo2NTcKKyM6IHBlLWRsbC5jOjY2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJXYXJuaW5nLCBkdXBsaWNhdGUgRVhQT1JUOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHBlLWRsbC5jOjcyMworIzogcGUtZGxsLmM6NzI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVYQ2Fubm90IGV4cG9ydCAlczogc3ltYm9sIG5vdCBkZWZpbmVkXG4iCiBtc2dzdHIgIiIKIAotIzogcGUtZGxsLmM6NzI5CisjOiBwZS1kbGwuYzo3MzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJVhDYW5ub3QgZXhwb3J0ICVzOiBzeW1ib2wgd3JvbmcgdHlwZSAoJWQgdnMgJWQpXG4iCiBtc2dzdHIgIiIKIAotIzogcGUtZGxsLmM6NzM2CisjOiBwZS1kbGwuYzo3MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJVhDYW5ub3QgZXhwb3J0ICVzOiBzeW1ib2wgbm90IGZvdW5kXG4iCiBtc2dzdHIgIiIKIAotIzogcGUtZGxsLmM6ODQ4CisjOiBwZS1kbGwuYzo4NTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJVhFcnJvciwgb3JkaW5hbCB1c2VkIHR3aWNlOiAlZCAoJXMgdnMgJXMpXG4iCiBtc2dzdHIgIiIKIAotIzogcGUtZGxsLmM6MTE2NQorIzogcGUtZGxsLmM6MTE3MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlWEVycm9yOiAlZC1iaXQgcmVsb2MgaW4gZGxsXG4iCiBtc2dzdHIgIiIKIAotIzogcGUtZGxsLmM6MTI5NgorIzogcGUtZGxsLmM6MTMwNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogQ2FuJ3Qgb3BlbiBvdXRwdXQgZGVmIGZpbGUgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBwZS1kbGwuYzoxNDM5CisjOiBwZS1kbGwuYzoxNDQ3CisjLCBjLWZvcm1hdAogbXNnaWQgIjsgbm8gY29udGVudHMgYXZhaWxhYmxlXG4iCiBtc2dzdHIgIiIKIAotIzogcGUtZGxsLmM6MjIwMworIzogcGUtZGxsLmM6MjIxMgogbXNnaWQgIiIKICIlQzogdmFyaWFibGUgJyVUJyBjYW4ndCBiZSBhdXRvLWltcG9ydGVkLiBQbGVhc2UgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgIgogImxkJ3MgLS1lbmFibGUtYXV0by1pbXBvcnQgZm9yIGRldGFpbHMuXG4iCiBtc2dzdHIgIiIKIAotIzogcGUtZGxsLmM6MjIzMworIzogcGUtZGxsLmM6MjI0MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlWENhbid0IG9wZW4gLmxpYiBmaWxlOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHBlLWRsbC5jOjIyMzgKKyM6IHBlLWRsbC5jOjIyNDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ3JlYXRpbmcgbGlicmFyeSBmaWxlOiAlc1xuIgogbXNnc3RyICIiCmRpZmYgLS1naXQgYS9sZC9wby9zdi5wbyBiL2xkL3BvL3N2LnBvCmluZGV4IDYzMDA4YjIuLjRjMTdhMjUgMTAwNjQ0Ci0tLSBhL2xkL3BvL3N2LnBvCisrKyBiL2xkL3BvL3N2LnBvCkBAIC0xLDE2NiArMSwxNjYgQEAKICMgU3dlZGlzaCBtZXNzYWdlcyBmb3IgbGQuCi0jIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSMgQ2hyaXN0aWFuIFJvc2UgPG1lbnRob3NAbWVudGhvcy5jb20+LCAyMDAxLCAyMDAyLgorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENocmlzdGlhbiBSb3NlIDxtZW50aG9zQG1lbnRob3MuY29tPiwgMjAwMSwgMjAwMiwgMjAwNC4KICMKIG1zZ2lkICIiCiBtc2dzdHIgIiIKLSJQcm9qZWN0LUlkLVZlcnNpb246IGxkIDIuMTIuOTFcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwMi0wNy0yMyAxNTo1OC0wNDAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAwMi0wNy0yNCAxMjozMSswMjAwXG4iCisiUHJvamVjdC1JZC1WZXJzaW9uOiBsZCAyLjE0cmVsMDMwNzEyXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDMtMDctMTEgMTM6NTgrMDkzMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMDQtMDMtMjIgMTU6MzIrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogQ2hyaXN0aWFuIFJvc2UgPG1lbnRob3NAbWVudGhvcy5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogU3dlZGlzaCA8c3ZAbGkub3JnPlxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PWlzby04ODU5LTFcbiIKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAKLSM6IGVtdWx0ZW1wbC9hcm1jb2ZmLmVtOjcxCisjOiBlbXVsdGVtcGwvYXJtY29mZi5lbTo3MgogbXNnaWQgIiAgLS1zdXBwb3J0LW9sZC1jb2RlICAgU3VwcG9ydCBpbnRlcndvcmtpbmcgd2l0aCBvbGQgY29kZVxuIgogbXNnc3RyICIgIC0tc3VwcG9ydC1vbGQtY29kZSAgIFN09mQgaW50ZXJha3Rpb24gbWVkIGdhbW1hbCBrb2RcbiIKIAotIzogZW11bHRlbXBsL2FybWNvZmYuZW06NzIKKyM6IGVtdWx0ZW1wbC9hcm1jb2ZmLmVtOjczCiBtc2dpZCAiICAtLXRodW1iLWVudHJ5PTxzeW0+ICBTZXQgdGhlIGVudHJ5IHBvaW50IHRvIGJlIFRodW1iIHN5bWJvbCA8c3ltPlxuIgogbXNnc3RyICIiCiAiICAtLXRodW1iLWVudHJ5PTxzeW0+ICBTdORsbCBpbiBpbmflbmdzcHVua3RlbiB0aWxsIGF0dCB2YXJhIHR1bXN5bWJvbGVuXG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgIDxzeW0+XG4iCiAKLSM6IGVtdWx0ZW1wbC9hcm1jb2ZmLmVtOjE0MQorIzogZW11bHRlbXBsL2FybWNvZmYuZW06MTIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9ycyBlbmNvdW50ZXJlZCBwcm9jZXNzaW5nIGZpbGUgJXMiCiBtc2dzdHIgIkZlbCBpbnRy5GZmYWRlIHZpZCBiZWFyYmV0bmluZyBhdiBmaWxlbiAlcyIKIAotIzogZW11bHRlbXBsL2FybWNvZmYuZW06MjA3IGVtdWx0ZW1wbC9wZS5lbToxNDIyCisjOiBlbXVsdGVtcGwvYXJtY29mZi5lbToxODggZW11bHRlbXBsL3BlLmVtOjEzOTYKIG1zZ2lkICIlUDogd2FybmluZzogJy0tdGh1bWItZW50cnkgJXMnIGlzIG92ZXJyaWRpbmcgJy1lICVzJ1xuIgogbXNnc3RyICIlUDogdmFybmluZzogXCItLXRodW1iLWVudHJ5ICVzXCIg5XNpZG9z5HR0ZXIgXCItZSAlc1wiXG4iCiAKLSM6IGVtdWx0ZW1wbC9hcm1jb2ZmLmVtOjIxMiBlbXVsdGVtcGwvcGUuZW06MTQyNworIzogZW11bHRlbXBsL2FybWNvZmYuZW06MTkzIGVtdWx0ZW1wbC9wZS5lbToxNDAxCiBtc2dpZCAiJVA6IHdhcm5pbmc6IGNvbm5vdCBmaW5kIHRodW1iIHN0YXJ0IHN5bWJvbCAlc1xuIgogbXNnc3RyICIlUDogdmFybmluZzoga2FuIGludGUgaGl0dGEgdHVtc3RhcnRzeW1ib2wgJXNcbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMxNworIzogZW11bHRlbXBsL3BlLmVtOjMwMAogbXNnaWQgIiAgLS1iYXNlX2ZpbGUgPGJhc2VmaWxlPiAgICAgICAgICAgICBHZW5lcmF0ZSBhIGJhc2UgZmlsZSBmb3IgcmVsb2NhdGFibGUgRExMc1xuIgogbXNnc3RyICIiCiAiICAtLWJhc2VfZmlsZSA8YmFzZmlsPiAgICAgICAgICAgICAgIEdlbmVyZXJhIGVuIGJhc2ZpbCBm9nJcbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbWxva2FsaXNlcmluZ3NiYXJhIERMTDplclxuIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzE4CisjOiBlbXVsdGVtcGwvcGUuZW06MzAxCiBtc2dpZCAiICAtLWRsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBpbWFnZSBiYXNlIHRvIHRoZSBkZWZhdWx0IGZvciBETExzXG4iCiBtc2dzdHIgIiIKICIgIC0tZGxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3TkbGwgaW4gYmlsZGJhcyB0aWxsIHN0YW5kYXJkIGb2clxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERMTDplclxuIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzE5CisjOiBlbXVsdGVtcGwvcGUuZW06MzAyCiBtc2dpZCAiICAtLWZpbGUtYWxpZ25tZW50IDxzaXplPiAgICAgICAgICAgIFNldCBmaWxlIGFsaWdubWVudFxuIgogbXNnc3RyICIgIC0tZmlsZS1hbGlnbm1lbnQgPHN0b3JsZWs+ICAgICAgICAgU3TkbGwgaW4gZmlsanVzdGVyaW5nXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMjAKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMDMKIG1zZ2lkICIgIC0taGVhcCA8c2l6ZT4gICAgICAgICAgICAgICAgICAgICAgU2V0IGluaXRpYWwgc2l6ZSBvZiB0aGUgaGVhcFxuIgogbXNnc3RyICIgIC0taGVhcCA8c3Rvcmxlaz4gICAgICAgICAgICAgICAgICAgU3TkbGwgaW4gaW5pdGlhbCBzdG9ybGVrIHDlIGj2Z2VuXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMjEKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMDQKIG1zZ2lkICIgIC0taW1hZ2UtYmFzZSA8YWRkcmVzcz4gICAgICAgICAgICAgU2V0IHN0YXJ0IGFkZHJlc3Mgb2YgdGhlIGV4ZWN1dGFibGVcbiIKIG1zZ3N0ciAiICAtLWltYWdlLWJhc2UgPGFkcmVzcz4gICAgICAgICAgICAgIFN05GxsIGluIHN0YXJ0YWRyZXNzZW4gZvZyIGRldCBr9nJiYXJhXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMjIKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMDUKIG1zZ2lkICIgIC0tbWFqb3ItaW1hZ2UtdmVyc2lvbiA8bnVtYmVyPiAgICAgU2V0IHZlcnNpb24gbnVtYmVyIG9mIHRoZSBleGVjdXRhYmxlXG4iCiBtc2dzdHIgIiAgLS1tYWpvci1pbWFnZS12ZXJzaW9uIDxudW1tZXI+ICAgICBTdORsbCBpbiB2ZXJzaW9uc251bW1lciBm9nIgZGV0IGv2cmJhcmFcbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMyMworIzogZW11bHRlbXBsL3BlLmVtOjMwNgogbXNnaWQgIiAgLS1tYWpvci1vcy12ZXJzaW9uIDxudW1iZXI+ICAgICAgICBTZXQgbWluaW11bSByZXF1aXJlZCBPUyB2ZXJzaW9uXG4iCiBtc2dzdHIgIiAgLS1tYWpvci1vcy12ZXJzaW9uIDxudW1tZXI+ICAgICAgICBTdORsbCBpbiBs5GdzdGEgbvZkduRuZGlnYSBPUy12ZXJzaW9uXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMjQKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMDcKIG1zZ2lkICIgIC0tbWFqb3Itc3Vic3lzdGVtLXZlcnNpb24gPG51bWJlcj4gU2V0IG1pbmltdW0gcmVxdWlyZWQgT1Mgc3Vic3lzdGVtIHZlcnNpb25cbiIKIG1zZ3N0ciAiIgogIiAgLS1tYWpvci1zdWJzeXN0ZW0tdmVyc2lvbiA8bnVtbWVyPiBTdORsbCBpbiBs5GdzdGEgbvZkduRuZGlnYVxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9TLXVuZGVyc3lzdGVtc3ZlcnNpb25cbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMyNQorIzogZW11bHRlbXBsL3BlLmVtOjMwOAogbXNnaWQgIiAgLS1taW5vci1pbWFnZS12ZXJzaW9uIDxudW1iZXI+ICAgICBTZXQgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBleGVjdXRhYmxlXG4iCiBtc2dzdHIgIiIKICIgIC0tbWlub3ItaW1hZ2UtdmVyc2lvbiA8bnVtbWVyPiAgICAgU3TkbGwgaW4gdW5kZXJyZXZpc2lvbnNudW1tZXIgZvZyXG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0IGv2cmJhcmFcbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMyNgorIzogZW11bHRlbXBsL3BlLmVtOjMwOQogbXNnaWQgIiAgLS1taW5vci1vcy12ZXJzaW9uIDxudW1iZXI+ICAgICAgICBTZXQgbWluaW11bSByZXF1aXJlZCBPUyByZXZpc2lvblxuIgogbXNnc3RyICIgIC0tbWlub3Itb3MtdmVyc2lvbiA8bnVtbWVyPiAgICAgICAgU3TkbGwgaW4gbORnc3RhIG72ZHbkbmRpZ2EgT1MtcmV2aXNpb25cbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMyNworIzogZW11bHRlbXBsL3BlLmVtOjMxMAogbXNnaWQgIiAgLS1taW5vci1zdWJzeXN0ZW0tdmVyc2lvbiA8bnVtYmVyPiBTZXQgbWluaW11bSByZXF1aXJlZCBPUyBzdWJzeXN0ZW0gcmV2aXNpb25cbiIKIG1zZ3N0ciAiIgogIiAgLS1taW5vci1zdWJzeXN0ZW0tdmVyc2lvbiA8bnVtbWVyPiBTdORsbCBpbiBs5GdzdGEgbvZkduRuZGlnYVxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9TLXVuZGVyc3lzdGVtc3JldmlzaW9uXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMjgKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMTEKIG1zZ2lkICIgIC0tc2VjdGlvbi1hbGlnbm1lbnQgPHNpemU+ICAgICAgICAgU2V0IHNlY3Rpb24gYWxpZ25tZW50XG4iCiBtc2dzdHIgIiAgLS1zZWN0aW9uLWFsaWdubWVudCA8c3Rvcmxlaz4gICAgICBTdORsbCBpbiBzZWt0aW9uc2p1c3RlcmluZ1xuIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzI5CisjOiBlbXVsdGVtcGwvcGUuZW06MzEyCiBtc2dpZCAiICAtLXN0YWNrIDxzaXplPiAgICAgICAgICAgICAgICAgICAgIFNldCBzaXplIG9mIHRoZSBpbml0aWFsIHN0YWNrXG4iCiBtc2dzdHIgIiAgLS1zdGFjayA8c3Rvcmxlaz4gICAgICAgICAgICAgICAgICBTdORsbCBpbiBzdG9ybGVrIHDlIGluaXRpYWxhIHN0YWNrZW5cbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMzMAorIzogZW11bHRlbXBsL3BlLmVtOjMxMwogbXNnaWQgIiAgLS1zdWJzeXN0ZW0gPG5hbWU+Wzo8dmVyc2lvbj5dICAgICBTZXQgcmVxdWlyZWQgT1Mgc3Vic3lzdGVtIFsmIHZlcnNpb25dXG4iCiBtc2dzdHIgIiIKICIgIC0tc3Vic3lzdGVtIDxuYW1uPls6PHZlcnNpb24+XSAgICAgU3TkbGwgaW4gbvZkduRuZGlndCBPUy11bmRlcnN5c3RlbVxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvY2ggbvZkduRuZGlnIHZlcnNpb25dXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMzEKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMTQKIG1zZ2lkICIgIC0tc3VwcG9ydC1vbGQtY29kZSAgICAgICAgICAgICAgICAgU3VwcG9ydCBpbnRlcndvcmtpbmcgd2l0aCBvbGQgY29kZVxuIgogbXNnc3RyICIgIC0tc3VwcG9ydC1vbGQtY29kZSAgICAgICAgICAgICAgICAgU3T2ZCBpbnRlcmFrdGlvbiBtZWQgZ2FtbWFsIGtvZFxuIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzMyCisjOiBlbXVsdGVtcGwvcGUuZW06MzE1CiBtc2dpZCAiICAtLXRodW1iLWVudHJ5PTxzeW1ib2w+ICAgICAgICAgICAgIFNldCB0aGUgZW50cnkgcG9pbnQgdG8gYmUgVGh1bWIgPHN5bWJvbD5cbiIKIG1zZ3N0ciAiIgogIiAgLS10aHVtYi1lbnRyeT08c3ltYm9sPiAgICAgICAgICAgICBTdORsbCBpbiBpbmflbmdzcHVua3RlbiB0aWxsIGF0dFxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmEgdHVtbWVuIDxzeW1ib2w+XG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMzQKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMTcKIG1zZ2lkICIgIC0tYWRkLXN0ZGNhbGwtYWxpYXMgICAgICAgICAgICAgICAgRXhwb3J0IHN5bWJvbHMgd2l0aCBhbmQgd2l0aG91dCBAbm5cbiIKIG1zZ3N0ciAiICAtLWFkZC1zdGRjYWxsLWFsaWFzICAgICAgICAgICAgICAgIEV4cG9ydGVyYSBzeW1ib2xlciBtZWQgb2NoIHV0YW4gQG5uXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMzUKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMTgKIG1zZ2lkICIgIC0tZGlzYWJsZS1zdGRjYWxsLWZpeHVwICAgICAgICAgICAgRG9uJ3QgbGluayBfc3ltIHRvIF9zeW1Abm5cbiIKIG1zZ3N0ciAiICAtLWRpc2FibGUtc3RkY2FsbC1maXh1cCAgICAgICAgICAgIEzkbmthIGludGUgX3N5bSB0aWxsIF9zeW1Abm5cbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMzNgorIzogZW11bHRlbXBsL3BlLmVtOjMxOQogbXNnaWQgIiAgLS1lbmFibGUtc3RkY2FsbC1maXh1cCAgICAgICAgICAgICBMaW5rIF9zeW0gdG8gX3N5bUBubiB3aXRob3V0IHdhcm5pbmdzXG4iCiBtc2dzdHIgIiAgLS1lbmFibGUtc3RkY2FsbC1maXh1cCAgICAgICAgICAgICBM5G5rYSBfc3ltIHRpbGwgX3N5bUBubiB1dGFuIHZhcm5pbmdhclxuIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzM3CisjOiBlbXVsdGVtcGwvcGUuZW06MzIwCiBtc2dpZCAiICAtLWV4Y2x1ZGUtc3ltYm9scyBzeW0sc3ltLC4uLiAgICAgIEV4Y2x1ZGUgc3ltYm9scyBmcm9tIGF1dG9tYXRpYyBleHBvcnRcbiIKIG1zZ3N0ciAiIgogIiAgLS1leGNsdWRlLXN5bWJvbHMgc3ltLHN5bSwuLi4gICAgICBFeGtsdWRlcmEgc3ltYm9sZXIgZnLlbiBhdXRvbWF0aXNrXG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0XG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozMzgKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMjEKIG1zZ2lkICIgIC0tZXhjbHVkZS1saWJzIGxpYixsaWIsLi4uICAgICAgICAgRXhjbHVkZSBsaWJyYXJpZXMgZnJvbSBhdXRvbWF0aWMgZXhwb3J0XG4iCiBtc2dzdHIgIiIKICIgIC0tZXhjbHVkZS1saWJzIGJpYmwsYmlibCwuLi4gICAgICAgRXhrbHVkZXJhIGJpYmxpb3RlayBmcuVuIGF1dG9tYXRpc2tcbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRcbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjMzOQorIzogZW11bHRlbXBsL3BlLmVtOjMyMgogbXNnaWQgIiAgLS1leHBvcnQtYWxsLXN5bWJvbHMgICAgICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGV4cG9ydCBhbGwgZ2xvYmFscyB0byBETExcbiIKIG1zZ3N0ciAiIgogIiAgLS1leHBvcnQtYWxsLXN5bWJvbHMgICAgICAgICAgICAgICBFeHBvcnRlcmEgYXV0b21hdGlza3QgYWxsYSBzeW1ib2xlclxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGwgRExMXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozNDAKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMjMKIG1zZ2lkICIgIC0ta2lsbC1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlIEBubiBmcm9tIGV4cG9ydGVkIHN5bWJvbHNcbiIKIG1zZ3N0ciAiICAtLWtpbGwtYXQgICAgICAgICAgICAgICAgICAgICAgICAgIFRhIGJvcnQgQG5uIGZy5W4gZXhwb3J0ZXJhZGUgc3ltYm9sZXJcbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjM0MQorIzogZW11bHRlbXBsL3BlLmVtOjMyNAogbXNnaWQgIiAgLS1vdXQtaW1wbGliIDxmaWxlPiAgICAgICAgICAgICAgICBHZW5lcmF0ZSBpbXBvcnQgbGlicmFyeVxuIgogbXNnc3RyICIgIC0tb3V0LWltcGxpYiA8ZmlsPiAgICAgICAgICAgICAgICAgR2VuZXJlcmEgaW1wb3J0YmlibGlvdGVrXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozNDIKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMjUKIG1zZ2lkICIgIC0tb3V0cHV0LWRlZiA8ZmlsZT4gICAgICAgICAgICAgICAgR2VuZXJhdGUgYSAuREVGIGZpbGUgZm9yIHRoZSBidWlsdCBETExcbiIKIG1zZ3N0ciAiICAtLW91dHB1dC1kZWYgPGZpbD4gICAgICAgICAgICAgICAgIEdlbmVyZXJhIGVuIC5ERUYtZmlsIGb2ciBieWdnZCBETExcbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjM0MworIzogZW11bHRlbXBsL3BlLmVtOjMyNgogbXNnaWQgIiAgLS13YXJuLWR1cGxpY2F0ZS1leHBvcnRzICAgICAgICAgICBXYXJuIGFib3V0IGR1cGxpY2F0ZSBleHBvcnRzLlxuIgogbXNnc3RyICIgIC0td2Fybi1kdXBsaWNhdGUtZXhwb3J0cyAgICAgICAgICAgVmFybmEgZvZyIGR1YmJsYSBleHBvcnRlci5cbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjM0NAorIzogZW11bHRlbXBsL3BlLmVtOjMyNwogbXNnaWQgIiIKICIgIC0tY29tcGF0LWltcGxpYiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIGJhY2t3YXJkIGNvbXBhdGlibGUgaW1wb3J0IGxpYnM7XG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlIF9faW1wXzxTWU1CT0w+IGFzIHdlbGwuXG4iCkBAIC0xNjgsNyArMTY4LDcgQEAKICIgIC0tY29tcGF0LWltcGxpYiAgICAgICAgICAgICAgICAgICAgU2thcGEgYmFr5XRrb21wYXRpYmxhIGltcG9ydGJpYmxpb3RlaztcbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY2ggc2thcGEg5HZlbiBfX2ltcF88U1lNQk9MPi5cbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjM0NgorIzogZW11bHRlbXBsL3BlLmVtOjMyOQogbXNnaWQgIiIKICIgIC0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAgICAgICAgICAgQXV0b21hdGljYWxseSBjaG9vc2UgaW1hZ2UgYmFzZSBmb3IgRExMc1xuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyB1c2VyIHNwZWNpZmllcyBvbmVcbiIKQEAgLTE3NiwzNyArMTc2LDU3IEBACiAiICAtLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgICAgICAgICAgIFbkbGogYXV0b21hdGlza3QgYmlsZGJhcyBm9nIgRExMOmVyXG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc+V2aWRhIGludGUgYW525G5kYXJlbiBhbmdlciBlblxuIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzQ4CisjOiBlbXVsdGVtcGwvcGUuZW06MzMxCiBtc2dpZCAiICAtLWRpc2FibGUtYXV0by1pbWFnZS1iYXNlICAgICAgICAgIERvIG5vdCBhdXRvLWNob29zZSBpbWFnZSBiYXNlLiAoZGVmYXVsdClcbiIKIG1zZ3N0ciAiIgogIiAgLS1kaXNhYmxlLWF1dG8taW1hZ2UtYmFzZSAgICAgICAgICBW5GxqIGludGUgYmlsZGJhcyBhdXRvbWF0aXNrdFxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGFuZGFyZCkuXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozNDkKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMzIKIG1zZ2lkICIiCi0iICAtLWRsbC1zZWFyY2gtcHJlZml4PTxzdHJpbmc+ICAgICAgIFdoZW4gbGlua2luZyBkeW5hbWljYWxseSB0byBhIGRsbCB3aXRob3V0IGFuXG4iCi0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLCB1c2UgPHN0cmluZz48YmFzZW5hbWU+LmRsbCBcbiIKKyIgIC0tZGxsLXNlYXJjaC1wcmVmaXg9PHN0cmluZz4gICAgICAgV2hlbiBsaW5raW5nIGR5bmFtaWNhbGx5IHRvIGEgZGxsIHdpdGhvdXRcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBpbXBvcnRsaWIsIHVzZSA8c3RyaW5nPjxiYXNlbmFtZT4uZGxsXG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gcHJlZmVyZW5jZSB0byBsaWI8YmFzZW5hbWU+LmRsbCBcbiIKIG1zZ3N0ciAiIgogIiAgLS1kbGwtc2VhcmNoLXByZWZpeD08c3Ry5G5nPiAgICAgICBBbnbkbmQgPHN0cuRuZz48YmFzbmFtbj4uZGxsIGlzdORsbGV0XG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZvZyIGxpYjxiYXNuYW1uPi5kbGwgdmlkIGR5bmFtaXNrXG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbORua25pbmcgdXRhbiBldHQgaW1wb3J0YmlibGlvdGVrXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTozNTIKKyM6IGVtdWx0ZW1wbC9wZS5lbTozMzUKIG1zZ2lkICIiCi0iICAtLWVuYWJsZS1hdXRvLWltcG9ydCAgICAgICAgICAgICAgIERvIHNvcGhpc3RjYXRlZCBsaW5raW5nIG9mIF9zeW0gdG8gXG4iCisiICAtLWVuYWJsZS1hdXRvLWltcG9ydCAgICAgICAgICAgICAgIERvIHNvcGhpc3RjYXRlZCBsaW5raW5nIG9mIF9zeW0gdG9cbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ltcF9zeW0gZm9yIERBVEEgcmVmZXJlbmNlc1xuIgogbXNnc3RyICIiCiAiICAtLWVuYWJsZS1hdXRvLWltcG9ydCAgICAgICAgICAgICAgIFV0ZvZyIHNvZmlzdGlrZXJhZCBs5G5rbmluZyBhdiBfc3ltIHRpbGxcbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ltcF9zeW0gZvZyIERBVEEtcmVmZXJlbnNlclxuIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MzU0CisjOiBlbXVsdGVtcGwvcGUuZW06MzM3CiBtc2dpZCAiICAtLWRpc2FibGUtYXV0by1pbXBvcnQgICAgICAgICAgICAgIERvIG5vdCBhdXRvLWltcG9ydCBEQVRBIGl0ZW1zIGZyb20gRExMc1xuIgogbXNnc3RyICIiCiAiICAtLWRpc2FibGUtYXV0by1pbXBvcnQgICAgICAgICAgICAgIEltcG9ydGVyYSBpbnRlIERBVEEtb2JqZWt0IGZy5W4gRExMOmVyXG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGlza3RcbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjM1NQorIzogZW11bHRlbXBsL3BlLmVtOjMzOAorbXNnaWQgIiIKKyIgIC0tZW5hYmxlLXJ1bnRpbWUtcHNldWRvLXJlbG9jICAgICAgV29yayBhcm91bmQgYXV0by1pbXBvcnQgbGltaXRhdGlvbnMgYnlcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpbmcgcHNldWRvLXJlbG9jYXRpb25zIHJlc29sdmVkIGF0XG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZS5cbiIKK21zZ3N0ciAiIgorIiAgLS1lbmFibGUtcnVudGltZS1wc2V1ZG8tcmVsb2MgICAgICBLcmluZ2flIGJlZ3LkbnNuaW5nYXIgaSBhdXRvbWF0aXNrXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCBnZW5vbSBhdHQgbORnZ2EgdGlsbFxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9vbWxva2FsaXNlcmluZ2FyIHNvbSBs9nNlcyB1bmRlclxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr9nJ0aWQuXG4iCisKKyM6IGVtdWx0ZW1wbC9wZS5lbTozNDEKK21zZ2lkICIiCisiICAtLWRpc2FibGUtcnVudGltZS1wc2V1ZG8tcmVsb2MgICAgIERvIG5vdCBhZGQgcnVudGltZSBwc2V1ZG8tcmVsb2NhdGlvbnMgZm9yXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0by1pbXBvcnRlZCBEQVRBLlxuIgorbXNnc3RyICIiCisiICAtLWRpc2FibGUtcnVudGltZS1wc2V1ZG8tcmVsb2MgICAgIEzkZ2cgaW50ZSB0aWxsIHBzZXVkb29tbG9rYWxpc2VyaW5nYXJcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZvZyIGF1dG9tYXRpc2sgaW1wb3J0ZXJhZCBEQVRBIHVuZGVyXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGv2cnRpZC5cbiIKKworIzogZW11bHRlbXBsL3BlLmVtOjM0MwogbXNnaWQgIiIKICIgIC0tZW5hYmxlLWV4dHJhLXBlLWRlYnVnICAgICAgICAgICAgRW5hYmxlIHZlcmJvc2UgZGVidWcgb3V0cHV0IHdoZW4gYnVpbGRpbmdcbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBsaW5raW5nIHRvIERMTHMgKGVzcC4gYXV0by1pbXBvcnQpXG4iCkBAIC0yMTUsODUgKzIzNSw4MiBAQAogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5Z2dlIGF2IGVsbGVyIGzkbmtuaW5nIHRpbGwgRExMOmVyXG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHPkcnNraWx0IGF1dG9tYXRpc2sgaW1wb3J0KVxuIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06NDI0CisjOiBlbXVsdGVtcGwvcGUuZW06NDEyCiBtc2dpZCAiJVA6IHdhcm5pbmc6IGJhZCB2ZXJzaW9uIG51bWJlciBpbiAtc3Vic3lzdGVtIG9wdGlvblxuIgogbXNnc3RyICIlUDogdmFybmluZzogZmVsYWt0aWd0IG51bW1lciBpIGZsYWdnYW4gLXN1YnN5c3RlbVxuIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06NDYwCisjOiBlbXVsdGVtcGwvcGUuZW06NDQ4CiBtc2dpZCAiJVAlRjogaW52YWxpZCBzdWJzeXN0ZW0gdHlwZSAlc1xuIgogbXNnc3RyICIlUCVGOiBvZ2lsdGlnIHR5cCBhdiB1bmRlcnN5c3RlbSAlc1xuIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06NDc1CisjOiBlbXVsdGVtcGwvcGUuZW06NDYwCiBtc2dpZCAiJVAlRjogaW52YWxpZCBoZXggbnVtYmVyIGZvciBQRSBwYXJhbWV0ZXIgJyVzJ1xuIgogbXNnc3RyICIlUCVGOiBvZ2lsdGlndCBoZXhhZGVjaW1hbHQgdGFsIGb2ciBQRS1wYXJhbWV0ZXJuIFwiJXNcIlxuIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06NDkzCisjOiBlbXVsdGVtcGwvcGUuZW06NDc3CiBtc2dpZCAiJVAlRjogc3RyYW5nZSBoZXggaW5mbyBmb3IgUEUgcGFyYW1ldGVyICclcydcbiIKIG1zZ3N0ciAiJVAlRjoga29uc3RpZyBoZXhhZGVjaW1hbCBpbmZvcm1hdGlvbiBm9nIgUEUtcGFyYW1ldGVybiBcIiVzXCJcbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjUzMgorIzogZW11bHRlbXBsL3BlLmVtOjQ5NAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogQ2FuJ3Qgb3BlbiBiYXNlIGZpbGUgJXNcbiIKIG1zZ3N0ciAiJXM6IEthbiBpbnRlIPZwcG5hIGJhc2ZpbGVuICVzXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTo3MzgKKyM6IGVtdWx0ZW1wbC9wZS5lbTo3MDcKIG1zZ2lkICIlUDogd2FybmluZywgZmlsZSBhbGlnbm1lbnQgPiBzZWN0aW9uIGFsaWdubWVudC5cbiIKIG1zZ3N0ciAiJVA6IHZhcm5pbmcsIGZpbGp1c3RlcmluZ2VuID4gc2VrdGlvbnNqdXN0ZXJpbmdlbi5cbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjgyMiBlbXVsdGVtcGwvcGUuZW06ODQ4CisjOiBlbXVsdGVtcGwvcGUuZW06Nzk0IGVtdWx0ZW1wbC9wZS5lbTo4MjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiV2FybmluZzogcmVzb2x2aW5nICVzIGJ5IGxpbmtpbmcgdG8gJXNcbiIKIG1zZ3N0ciAiVmFybmluZzogbPZzZXIgdXBwICVzIGdlbm9tIGF0dCBs5G5rYSB0aWxsICVzXG4iCiAKLSM6IGVtdWx0ZW1wbC9wZS5lbTo4MjcgZW11bHRlbXBsL3BlLmVtOjg1MworIzogZW11bHRlbXBsL3BlLmVtOjc5OSBlbXVsdGVtcGwvcGUuZW06ODI2CiBtc2dpZCAiVXNlIC0tZW5hYmxlLXN0ZGNhbGwtZml4dXAgdG8gZGlzYWJsZSB0aGVzZSB3YXJuaW5nc1xuIgogbXNnc3RyICJBbnbkbmQgLS1lbmFibGUtc3RkY2FsbC1maXh1cCBm9nIgYXR0IHN05G5nYSBhdiBkZXNzYSB2YXJuaW5nYXJcbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjgyOCBlbXVsdGVtcGwvcGUuZW06ODU0CisjOiBlbXVsdGVtcGwvcGUuZW06ODAwIGVtdWx0ZW1wbC9wZS5lbTo4MjcKIG1zZ2lkICJVc2UgLS1kaXNhYmxlLXN0ZGNhbGwtZml4dXAgdG8gZGlzYWJsZSB0aGVzZSBmaXh1cHNcbiIKIG1zZ3N0ciAiQW525G5kIC0tZGlzYWJsZS1zdGRjYWxsLWZpeHVwIGb2ciBhdHQgc3TkbmdhIGF2IGRlc3NhIGtvcnJpZ2VyaW5nYXJcbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjg3OQorIzogZW11bHRlbXBsL3BlLmVtOjg0NgorIywgYy1mb3JtYXQKIG1zZ2lkICIlQzogQ2Fubm90IGdldCBzZWN0aW9uIGNvbnRlbnRzIC0gYXV0by1pbXBvcnQgZXhjZXB0aW9uXG4iCiBtc2dzdHIgIiVDOiBLYW4gaW50ZSBm5SB0YWcgaSBzZWt0aW9uc2lubmVo5WxsIC0gdW5kYW50YWcgaSBhdXRvbWF0aXNrIGltcG9ydFxuIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06ODg3Ci1tc2dpZCAiJUM6IHZhcmlhYmxlICclVCcgY2FuJ3QgYmUgYXV0by1pbXBvcnRlZC4gUGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIGxkJ3MgLS1lbmFibGUtYXV0by1pbXBvcnQgZm9yIGRldGFpbHMuXG4iCi1tc2dzdHIgIiVDOiB2YXJpYWJlbG4gXCIlVFwiIGthbiBpbnRlIGltcG9ydGVyYXMgYXV0b21hdGlza3QuIEzkcyBkb2t1bWVudGF0aW9uZW4gZvZyIGxkOnMgLS1lbmFibGUtYXV0by1pbXBvcnQgZvZyIGRldGFsamVyLlxuIgotCi0jOiBlbXVsdGVtcGwvcGUuZW06OTE2CisjOiBlbXVsdGVtcGwvcGUuZW06ODgzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkluZm86IHJlc29sdmluZyAlcyBieSBsaW5raW5nIHRvICVzIChhdXRvLWltcG9ydClcbiIKIG1zZ3N0ciAiSW5mbzogbPZzZXIgdXBwICVzIGdlbm9tIGF0dCBs5G5rYSB0aWxsICVzIChhdXRvbWF0aXNrIGltcG9ydClcbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjk5NworIzogZW11bHRlbXBsL3BlLmVtOjk1NAogbXNnaWQgIiVGJVA6IFBFIG9wZXJhdGlvbnMgb24gbm9uIFBFIGZpbGUuXG4iCiBtc2dzdHIgIiVGJVA6IFBFLW9wZXJhdGlvbmVyIHDlIGZpbCBzb20gaW50ZSDkciBQRS5cbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjEyMjYKKyM6IGVtdWx0ZW1wbC9wZS5lbToxMTg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9ycyBlbmNvdW50ZXJlZCBwcm9jZXNzaW5nIGZpbGUgJXNcbiIKIG1zZ3N0ciAiRmVsIHVwcHN0b2QgdmlkIGJlaGFuZGxpbmcgYXYgZmlsZW4gJXNcbiIKIAotIzogZW11bHRlbXBsL3BlLmVtOjEyNDkKKyM6IGVtdWx0ZW1wbC9wZS5lbToxMjExCiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9ycyBlbmNvdW50ZXJlZCBwcm9jZXNzaW5nIGZpbGUgJXMgZm9yIGludGVyd29ya2luZyIKIG1zZ3N0ciAiRmVsIHVwcHN0b2QgdmlkIGJlaGFuZGxpbmcgYXYgZmlsZW4gJXMgZvZyIGludGVyYWt0aW9uIgogCi0jOiBlbXVsdGVtcGwvcGUuZW06MTMwNSBsZGxhbmcuYzoyMDY1IGxkbGFuZy5jOjQ2MDggbGRsYW5nLmM6NDY0MQotIzogbGRtYWluLmM6MTA2MQorIzogZW11bHRlbXBsL3BlLmVtOjEyNzMgbGRsYW5nLmM6MTkwNCBsZGxhbmcuYzo0Mzk3IGxkbGFuZy5jOjQ0MjgKKyM6IGxkbWFpbi5jOjExMjIKIG1zZ2lkICIlUCVGOiBiZmRfbGlua19oYXNoX2xvb2t1cCBmYWlsZWQ6ICVFXG4iCiBtc2dzdHIgIiVQJUY6IGJmZF9saW5rX2hhc2hfbG9va3VwIG1pc3NseWNrYWRlczogJUVcbiIKIAotIzogbGRjcmVmLmM6MTU4CisjOiBsZGNyZWYuYzoxNTMKIG1zZ2lkICIlWCVQOiBiZmRfaGFzaF90YWJsZV9pbml0IG9mIGNyZWYgdGFibGUgZmFpbGVkOiAlRVxuIgogbXNnc3RyICIlWCVQOiBiZmRfaGFzaF90YWJsZV9pbml0IGF2IGtvcnNyZWZlcmVuc3RhYmVsbGVuIG1pc3NseWNrYWRlczogJUVcbiIKIAotIzogbGRjcmVmLmM6MTY0CisjOiBsZGNyZWYuYzoxNTkKIG1zZ2lkICIlWCVQOiBjcmVmX2hhc2hfbG9va3VwIGZhaWxlZDogJUVcbiIKIG1zZ3N0ciAiJVglUDogY3JlZl9oYXNoX2xvb2t1cCBtaXNzbHlja2FkZXM6ICVFXG4iCiAKLSM6IGxkY3JlZi5jOjIzNQorIzogbGRjcmVmLmM6MjI1CiBtc2dpZCAiIgogIlxuIgogIkNyb3NzIFJlZmVyZW5jZSBUYWJsZVxuIgpAQCAtMzAzLDMxICszMjAsMzEgQEAKICJLb3JzcmVmZXJlbnN0YWJlbGxcbiIKICJcbiIKIAotIzogbGRjcmVmLmM6MjM2CisjOiBsZGNyZWYuYzoyMjYKIG1zZ2lkICJTeW1ib2wiCiBtc2dzdHIgIlN5bWJvbCIKIAotIzogbGRjcmVmLmM6MjQ0CisjOiBsZGNyZWYuYzoyMzQKIG1zZ2lkICJGaWxlXG4iCiBtc2dzdHIgIkZpbFxuIgogCi0jOiBsZGNyZWYuYzoyNDgKKyM6IGxkY3JlZi5jOjIzOAogbXNnaWQgIk5vIHN5bWJvbHNcbiIKIG1zZ3N0ciAiSW5nYSBzeW1ib2xlclxuIgogCi0jOiBsZGNyZWYuYzo0MDAKKyM6IGxkY3JlZi5jOjM4NAogbXNnaWQgIiVQOiBzeW1ib2wgYCVUJyBtaXNzaW5nIGZyb20gbWFpbiBoYXNoIHRhYmxlXG4iCiBtc2dzdHIgIiVQOiBzeW1ib2xlbiBcIiVUXCIgc2FrbmFzIGZy5W4gaGFzdGFiZWxsZW5cbiIKIAotIzogbGRjcmVmLmM6NDY1CisjOiBsZGNyZWYuYzo0NDgKIG1zZ2lkICIlQiVGOiBjb3VsZCBub3QgcmVhZCBzeW1ib2xzOyAlRVxuIgogbXNnc3RyICIlQiVGOiBrdW5kZSBpbnRlIGzkc2Egc3ltYm9sZXI7ICVFXG4iCiAKLSM6IGxkY3JlZi5jOjQ2OSBsZG1haW4uYzoxMTI3IGxkbWFpbi5jOjExMzEKKyM6IGxkY3JlZi5jOjQ1MiBsZG1haW4uYzoxMTg3IGxkbWFpbi5jOjExOTEKIG1zZ2lkICIlQiVGOiBjb3VsZCBub3QgcmVhZCBzeW1ib2xzOiAlRVxuIgogbXNnc3RyICIlQiVGOiBrdW5kZSBpbnRlIGzkc2Egc3ltYm9sZXI6ICVFXG4iCiAKLSM6IGxkY3JlZi5jOjUzNyBsZGNyZWYuYzo1NDQgbGRtYWluLmM6MTE3NyBsZG1haW4uYzoxMTg0CisjOiBsZGNyZWYuYzo1MTcgbGRjcmVmLmM6NTI0IGxkbWFpbi5jOjEyMzQgbGRtYWluLmM6MTI0MQogbXNnaWQgIiVCJUY6IGNvdWxkIG5vdCByZWFkIHJlbG9jczogJUVcbiIKIG1zZ3N0ciAiJUIlRjoga3VuZGUgaW50ZSBs5HNhIG9tbG9rYWxpc2VyaW5nYXI6ICVFXG4iCiAKQEAgLTMzNSwyNyArMzUyLDI3IEBACiAjLiBpbiBPVVRTRUNOQU1FLiAgVGhpcyByZWxvYyBpcyBmcm9tIGEgc2VjdGlvbiB3aGljaCBpcwogIy4gbWFwcGVkIGludG8gYSBzZWN0aW9uIGZyb20gd2hpY2ggcmVmZXJlbmNlcyB0byBPVVRTRUNOQU1FCiAjLiBhcmUgcHJvaGliaXRlZC4gIFdlIG11c3QgcmVwb3J0IGFuIGVycm9yLgotIzogbGRjcmVmLmM6NTYzCisjOiBsZGNyZWYuYzo1NDMKIG1zZ2lkICIlWCVDOiBwcm9oaWJpdGVkIGNyb3NzIHJlZmVyZW5jZSBmcm9tICVzIHRvIGAlVCcgaW4gJXNcbiIKIG1zZ3N0ciAiJVglQzogZvZyYmp1ZGVuIGtvcnNyZWZlcmVucyBmcuVuICVzIHRpbGwgXCIlVFwiIGkgJXNcbiIKIAotIzogbGRjdG9yLmM6ODgKKyM6IGxkY3Rvci5jOjg0CiBtc2dpZCAiJVAlWDogRGlmZmVyZW50IHJlbG9jcyB1c2VkIGluIHNldCAlc1xuIgogbXNnc3RyICIlUCVYOiBPbGlrYSBvbWxva2FsaXNlcmluZ2FyIGFuduRuZGEgaSBncnVwcGVuICVzXG4iCiAKLSM6IGxkY3Rvci5jOjEwNgorIzogbGRjdG9yLmM6MTAyCiBtc2dpZCAiJVAlWDogRGlmZmVyZW50IG9iamVjdCBmaWxlIGZvcm1hdHMgY29tcG9zaW5nIHNldCAlc1xuIgogbXNnc3RyICIlUCVYOiBPbGlrYSBvYmpla3RmaWxmb3JtYXQgdXRn9nIgZ3J1cHBlbiAlc1xuIgogCi0jOiBsZGN0b3IuYzoyODggbGRjdG9yLmM6MzAyCisjOiBsZGN0b3IuYzoyODEgbGRjdG9yLmM6Mjk1CiBtc2dpZCAiJVAlWDogJXMgZG9lcyBub3Qgc3VwcG9ydCByZWxvYyAlcyBmb3Igc2V0ICVzXG4iCiBtc2dzdHIgIiVQJVg6ICVzIHN09mRlciBpbnRlIG9tbG9rYWxpc2VyaW5nZW4gJXMgZvZyIGdydXBwZW4gJXNcbiIKIAotIzogbGRjdG9yLmM6MzIzCisjOiBsZGN0b3IuYzozMTYKIG1zZ2lkICIlUCVYOiBVbnN1cHBvcnRlZCBzaXplICVkIGZvciBzZXQgJXNcbiIKIG1zZ3N0ciAiJVAlWDogU3Rvcmxla2VuICVkIGb2ciBncnVwcGVuICVzIHN09mRzIGludGVcbiIKIAotIzogbGRjdG9yLmM6MzQ0CisjOiBsZGN0b3IuYzozMzcKIG1zZ2lkICIiCiAiXG4iCiAiU2V0ICAgICAgICAgICAgICAgICBTeW1ib2xcbiIKQEAgLTM2NSwxMzUgKzM4MiwxNTAgQEAKICJHcnVwcCAgICAgICAgICAgICAgIFN5bWJvbFxuIgogIlxuIgogCi0jOiBsZGVtdWwuYzoyMjUKKyM6IGxkZW11bC5jOjI0NworIywgYy1mb3JtYXQKIG1zZ2lkICIlUyBTWVNMSUIgaWdub3JlZFxuIgogbXNnc3RyICIlUyBTWVNMSUIgaWdub3JlcmFkZXNcbiIKIAotIzogbGRlbXVsLmM6MjMyCisjOiBsZGVtdWwuYzoyNTQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiJVMgSExMIGlnbm9yZWRcbiIKIG1zZ3N0ciAiJVMgSExMIGlnbm9yZXJhZGVzXG4iCiAKLSM6IGxkZW11bC5jOjI1MworIzogbGRlbXVsLmM6Mjc1CiBtc2dpZCAiJVA6IHVucmVjb2duaXNlZCBlbXVsYXRpb24gbW9kZTogJXNcbiIKIG1zZ3N0ciAiJVA6IG9r5G50IGVtdWxlcmluZ3Ns5GdlOiAlc1xuIgogCi0jOiBsZGVtdWwuYzoyNTQKKyM6IGxkZW11bC5jOjI3NgogbXNnaWQgIlN1cHBvcnRlZCBlbXVsYXRpb25zOiAiCiBtc2dzdHIgIkVtdWxlcmluZ2FyIHNvbSBzdPZkczogIgogCi0jOiBsZGVtdWwuYzoyOTgKKyM6IGxkZW11bC5jOjMyMAogbXNnaWQgIiAgbm8gZW11bGF0aW9uIHNwZWNpZmljIG9wdGlvbnMuXG4iCiBtc2dzdHIgIiAgaW5nYSBlbXVsZXJpbmdzc3BlY2lmaWthIGZsYWdnb3IuXG4iCiAKLSM6IGxkZXhwLmM6MTc0CisjOiBsZGV4cC5jOjE0OAogbXNnaWQgIiVGJVA6ICVzIHVzZXMgdW5kZWZpbmVkIHNlY3Rpb24gJXNcbiIKIG1zZ3N0ciAiJUYlUDogJXMgYW525G5kZXIgb2RlZmluaWVyYWQgc2VrdGlvbiAlc1xuIgogCi0jOiBsZGV4cC5jOjE3NgorIzogbGRleHAuYzoxNTAKIG1zZ2lkICIlRiVQOiAlcyBmb3J3YXJkIHJlZmVyZW5jZSBvZiBzZWN0aW9uICVzXG4iCiBtc2dzdHIgIiVGJVA6ICVzIGZyYW3ldHJlZmVyZW5zIGF2IHNla3Rpb25lbiAlc1xuIgogCi0jOiBsZGV4cC5jOjMwNAorIzogbGRleHAuYzozNTUKKyMsIGMtZm9ybWF0CiBtc2dpZCAiJUYlUyAlJSBieSB6ZXJvXG4iCiBtc2dzdHIgIiVGJVMgJSUgbWVkIG5vbGxcbiIKIAotIzogbGRleHAuYzozMTEKKyM6IGxkZXhwLmM6MzYyCisjLCBjLWZvcm1hdAogbXNnaWQgIiVGJVMgLyBieSB6ZXJvXG4iCiBtc2dzdHIgIiVGJVMgLyBtZWQgbm9sbFxuIgogCi0jOiBsZGV4cC5jOjQ2MworIzogbGRleHAuYzo1MzMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiJVglUzogdW5yZXNvbHZhYmxlIHN5bWJvbCBgJXMnIHJlZmVyZW5jZWQgaW4gZXhwcmVzc2lvblxuIgogbXNnc3RyICIlWCVTOiBvdXBwbPZzbmluZ3NiYXJhIHN5bWJvbGVuIFwiJXNcIiByZWZlcmVyYWRlcyBpIHV0dHJ5Y2tldFxuIgogCi0jOiBsZGV4cC5jOjQ4MworIzogbGRleHAuYzo1NTMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiJUYlUzogdW5kZWZpbmVkIHN5bWJvbCBgJXMnIHJlZmVyZW5jZWQgaW4gZXhwcmVzc2lvblxuIgogbXNnc3RyICIlRiVTOiBvZGVmaW5pZXJhZGUgc3ltYm9sZW4gXCIlc1wiIHJlZmVyZXJhZGVzIGkgdXR0cnlja2V0XG4iCiAKLSM6IGxkZXhwLmM6Njg1CisjOiBsZGV4cC5jOjY3NworIywgYy1mb3JtYXQKIG1zZ2lkICIlRiVTIGNhbiBub3QgUFJPVklERSBhc3NpZ25tZW50IHRvIGxvY2F0aW9uIGNvdW50ZXJcbiIKIG1zZ3N0ciAiJUYlUyBrYW4gaW50ZSBUSUxMSEFOREFIxUxMQSB0aWxsZGVsbmluZyB0aWxsIHBsYXRzcuRrbmFyZVxuIgogCi0jOiBsZGV4cC5jOjY5NQorIzogbGRleHAuYzo2ODcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiJUYlUyBpbnZhbGlkIGFzc2lnbm1lbnQgdG8gbG9jYXRpb24gY291bnRlclxuIgogbXNnc3RyICIlRiVTIG9naWx0aWcgdGlsbGRlbG5pbmcgdGlsbCBwbGF0c3Lka25hcmVcbiIKIAotIzogbGRleHAuYzo2OTkKKyM6IGxkZXhwLmM6NjkxCisjLCBjLWZvcm1hdAogbXNnaWQgIiVGJVMgYXNzaWdubWVudCB0byBsb2NhdGlvbiBjb3VudGVyIGludmFsaWQgb3V0c2lkZSBvZiBTRUNUSU9OXG4iCiBtc2dzdHIgIiVGJVMgdGlsbGRlbG5pbmcgdGlsbCBwbGF0c3Lka25hcmUgc29tIORyIG9naWx0aWcgdXRhbmb2ciBTRUtUSU9OXG4iCiAKLSM6IGxkZXhwLmM6NzA4CisjOiBsZGV4cC5jOjcwMAogbXNnaWQgIiVGJVMgY2Fubm90IG1vdmUgbG9jYXRpb24gY291bnRlciBiYWNrd2FyZHMgKGZyb20gJVYgdG8gJVYpXG4iCiBtc2dzdHIgIiVGJVMga2FuIGludGUgZmx5dHRhIHBsYXRzcuRrbmFyZSBiYWvldCAoZnLlbiAlViB0aWxsICVWKVxuIgogCi0jOiBsZGV4cC5jOjczNQorIzogbGRleHAuYzo3MjcKIG1zZ2lkICIlUCVGOiVzOiBoYXNoIGNyZWF0aW9uIGZhaWxlZFxuIgogbXNnc3RyICIlUCVGOiVzOiBza2FwYW5kZSBhdiBoYXNoIG1pc3NseWNrYWRlc1xuIgogCi0jOiBsZGV4cC5jOjEwMzcgbGRleHAuYzoxMDcxCisjOiBsZGV4cC5jOjEwMDMgbGRleHAuYzoxMDM1CisjLCBjLWZvcm1hdAogbXNnaWQgIiVGJVMgbm9uY29uc3RhbnQgZXhwcmVzc2lvbiBmb3IgJXNcbiIKIG1zZ3N0ciAiJUYlUyBpY2tla29uc3RhbnQgdXR0cnljayBm9nIgJXNcbiIKIAotIzogbGRleHAuYzoxMTI2CisjOiBsZGV4cC5jOjEwODkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiJUYlUyBub24gY29uc3RhbnQgZXhwcmVzc2lvbiBmb3IgJXNcbiIKIG1zZ3N0ciAiJUYlUyBpY2tla29uc3RhbnQgdXR0cnljayBm9nIgJXNcbiIKIAotIzogbGRmaWxlLmM6MTA1CisjOiBsZGZpbGUuYzoxNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiYXR0ZW1wdCB0byBvcGVuICVzIGZhaWxlZFxuIgogbXNnc3RyICJm9nJz9msgYXR0IPZwcG5hICVzIG1pc3NseWNrYWRlc1xuIgogCi0jOiBsZGZpbGUuYzoxMDcKKyM6IGxkZmlsZS5jOjE0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJhdHRlbXB0IHRvIG9wZW4gJXMgc3VjY2VlZGVkXG4iCiBtc2dzdHIgImb2cnP2ayBhdHQg9nBwbmEgJXMgbHlja2FkZXNcbiIKIAotIzogbGRmaWxlLmM6MTEzCisjOiBsZGZpbGUuYzoxNTIKIG1zZ2lkICIlRiVQOiBpbnZhbGlkIEJGRCB0YXJnZXQgYCVzJ1xuIgogbXNnc3RyICIlRiVQOiBvZ2lsdGlndCBCRkQtbeVsIFwiJXNcIlxuIgogCi0jOiBsZGZpbGUuYzoxNDIKKyM6IGxkZmlsZS5jOjI1OCBsZGZpbGUuYzoyNzUKIG1zZ2lkICIlUDogc2tpcHBpbmcgaW5jb21wYXRpYmxlICVzIHdoZW4gc2VhcmNoaW5nIGZvciAlc1xuIgogbXNnc3RyICIlUDogaG9wcGFyIPZ2ZXIgaW5rb21wYXRpYmVsICVzIHZpZCBz9mtuaW5nIGF2ICVzXG4iCiAKLSM6IGxkZmlsZS5jOjIzNAorIzogbGRmaWxlLmM6Mzc3CiBtc2dpZCAiJUYlUDogY2Fubm90IG9wZW4gJXMgZm9yICVzOiAlRVxuIgogbXNnc3RyICIlRiVQOiBrYW4gaW50ZSD2cHBuYSAlcyBm9nIgJXM6ICVFXG4iCiAKLSM6IGxkZmlsZS5jOjIzNworIzogbGRmaWxlLmM6MzgwCiBtc2dpZCAiJUYlUDogY2Fubm90IG9wZW4gJXM6ICVFXG4iCiBtc2dzdHIgIiVGJVA6IGthbiBpbnRlIPZwcG5hICVzOiAlRVxuIgogCi0jOiBsZGZpbGUuYzoyNjcKKyM6IGxkZmlsZS5jOjQxMAorbXNnaWQgIiVGJVA6IGNhbm5vdCBmaW5kICVzIGluc2lkZSAlc1xuIgorbXNnc3RyICIlRiVQOiBrYW4gaW50ZSBoaXR0YSAlcyBpbnV0aSAlc1xuIgorCisjOiBsZGZpbGUuYzo0MTMKIG1zZ2lkICIlRiVQOiBjYW5ub3QgZmluZCAlc1xuIgogbXNnc3RyICIlRiVQOiBrYW4gaW50ZSBoaXR0YSAlc1xuIgogCi0jOiBsZGZpbGUuYzoyODYgbGRmaWxlLmM6MzAyCisjOiBsZGZpbGUuYzo0MzAgbGRmaWxlLmM6NDQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBmaW5kIHNjcmlwdCBmaWxlICVzXG4iCiBtc2dzdHIgImthbiBpbnRlIGhpdHRhIHNrcmlwdGZpbGVuICVzXG4iCiAKLSM6IGxkZmlsZS5jOjI4OCBsZGZpbGUuYzozMDQKKyM6IGxkZmlsZS5jOjQzMiBsZGZpbGUuYzo0NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAib3BlbmVkIHNjcmlwdCBmaWxlICVzXG4iCiBtc2dzdHIgIvZwcG5hZGUgc2tyaXB0ZmlsZW4gJXNcbiIKIAotIzogbGRmaWxlLmM6MzUzCisjOiBsZGZpbGUuYzo0OTIKIG1zZ2lkICIlUCVGOiBjYW5ub3Qgb3BlbiBsaW5rZXIgc2NyaXB0IGZpbGUgJXM6ICVFXG4iCiBtc2dzdHIgIiVQJUY6IGthbiBpbnRlIPZwcG5hIGzkbmtza3JpcHRmaWxlbiAlczogJUVcbiIKIAotIzogbGRmaWxlLmM6MzkxCisjOiBsZGZpbGUuYzo1MjkKIG1zZ2lkICIlUCVGOiB1bmtub3duIGFyY2hpdGVjdHVyZTogJXNcbiIKIG1zZ3N0ciAiJVAlRjogb2vkbmQgYXJraXRla3R1cjogJXNcbiIKIAotIzogbGRmaWxlLmM6NDA3CisjOiBsZGZpbGUuYzo1NDMKIG1zZ2lkICIlUCVGOiB0YXJnZXQgYXJjaGl0ZWN0dXJlIHJlc3BlY2lmaWVkXG4iCiBtc2dzdHIgIiVQJUY6IG3lbGFya2l0ZWt0dXJlbiBzcGVjaWZpZXJhZGVzIG9tXG4iCiAKLSM6IGxkZmlsZS5jOjQ2MQorIzogbGRmaWxlLmM6NTk0CiBtc2dpZCAiJVAlRjogY2Fubm90IHJlcHJlc2VudCBtYWNoaW5lIGAlcydcbiIKIG1zZ3N0ciAiJVAlRjoga2FuIGludGUgcmVwcmVzZW50ZXJhIG1hc2tpbmVuIFwiJXNcIlxuIgogCi0jOiBsZGxhbmcuYzo3ODQKKyM6IGxkbGFuZy5jOjY0MAogbXNnaWQgIiIKICJcbiIKICJNZW1vcnkgQ29uZmlndXJhdGlvblxuIgpAQCAtNTAzLDIzICs1MzUsMjMgQEAKICJNaW5uZXNrb25maWd1cmF0aW9uXG4iCiAiXG4iCiAKLSM6IGxkbGFuZy5jOjc4NgorIzogbGRsYW5nLmM6NjQyCiBtc2dpZCAiTmFtZSIKIG1zZ3N0ciAiTmFtbiIKIAotIzogbGRsYW5nLmM6Nzg2CisjOiBsZGxhbmcuYzo2NDIKIG1zZ2lkICJPcmlnaW4iCiBtc2dzdHIgIkL2cmphbiIKIAotIzogbGRsYW5nLmM6Nzg2CisjOiBsZGxhbmcuYzo2NDIKIG1zZ2lkICJMZW5ndGgiCiBtc2dzdHIgIkzkbmdkIgogCi0jOiBsZGxhbmcuYzo3ODYKKyM6IGxkbGFuZy5jOjY0MgogbXNnaWQgIkF0dHJpYnV0ZXMiCiBtc2dzdHIgIkF0dHJpYnV0IgogCi0jOiBsZGxhbmcuYzo4MjgKKyM6IGxkbGFuZy5jOjY4MgogbXNnaWQgIiIKICJcbiIKICJMaW5rZXIgc2NyaXB0IGFuZCBtZW1vcnkgbWFwXG4iCkBAIC01MjksMTYxICs1NjEsMTY2IEBACiAiTORua3NrcmlwdCBvY2ggbWlubmVzdGFiZWxsXG4iCiAiXG4iCiAKLSM6IGxkbGFuZy5jOjg0NQorIzogbGRsYW5nLmM6Njk4CiBtc2dpZCAiJVAlRjogSWxsZWdhbCB1c2Ugb2YgYCVzJyBzZWN0aW9uXG4iCiBtc2dzdHIgIiVQJUY6IE90aWxs5XRlbiBhbnbkbmRuaW5nIGF2IHNla3Rpb25lbiBcIiVzXCJcbiIKIAotIzogbGRsYW5nLmM6ODU1CisjOiBsZGxhbmcuYzo3MDcKIG1zZ2lkICIlUCVGOiBvdXRwdXQgZm9ybWF0ICVzIGNhbm5vdCByZXByZXNlbnQgc2VjdGlvbiBjYWxsZWQgJXNcbiIKIG1zZ3N0ciAiJVAlRjogdXRkYXRhZm9ybWF0ZXQgJXMga2FuIGludGUgcmVwcmVzZW50ZXJhIHNla3Rpb25lbiBrYWxsYWQgJXNcbiIKIAotIzogbGRsYW5nLmM6MTAxNgorIzogbGRsYW5nLmM6ODY3CiBtc2dpZCAiJVA6ICVCOiB3YXJuaW5nOiBpZ25vcmluZyBkdXBsaWNhdGUgc2VjdGlvbiBgJXMnXG4iCiBtc2dzdHIgIiVQOiAlQjogdmFybmluZzogaWdub3JlcmFyIGR1YmJlbCBzZWt0aW9uIFwiJXNcIlxuIgogCi0jOiBsZGxhbmcuYzoxMDE5CisjOiBsZGxhbmcuYzo4NzAKIG1zZ2lkICIlUDogJUI6IHdhcm5pbmc6IGlnbm9yaW5nIGR1cGxpY2F0ZSBgJXMnIHNlY3Rpb24gc3ltYm9sIGAlcydcbiIKIG1zZ3N0ciAiJVA6ICVCOiB2YXJuaW5nOiBpZ25vcmVyYXIgZHViYmxhIFwiJXNcIi1zZWt0aW9uc3N5bWJvbGVuIFwiJXNcIlxuIgogCi0jOiBsZGxhbmcuYzoxMDMzCisjOiBsZGxhbmcuYzo4ODQKIG1zZ2lkICIlUDogJUI6IHdhcm5pbmc6IGR1cGxpY2F0ZSBzZWN0aW9uIGAlcycgaGFzIGRpZmZlcmVudCBzaXplXG4iCiBtc2dzdHIgIiVQOiAlQjogdmFybmluZzogZHViYmxhIHNla3Rpb25lbiBcIiVzXCIgaGFyIGFubmFuIHN0b3JsZWtcbiIKIAotIzogbGRsYW5nLmM6MTA4NAorIzogbGRsYW5nLmM6OTM2CiBtc2dpZCAiJVAlRjogRmFpbGVkIHRvIGNyZWF0ZSBoYXNoIHRhYmxlXG4iCiBtc2dzdHIgIiVQJUY6IE1pc3NseWNrYWRlcyBtZWQgYXR0IHNrYXBhIGhhc2h0YWJlbGxcbiIKIAotIzogbGRsYW5nLmM6MTUwMworIzogbGRsYW5nLmM6MTM1MQogbXNnaWQgIiVCOiBmaWxlIG5vdCByZWNvZ25pemVkOiAlRVxuIgogbXNnc3RyICIlQjogZmlsZW4gaW50ZSBpZ2Vua+RuZDogJUVcbiIKIAotIzogbGRsYW5nLmM6MTUwNAorIzogbGRsYW5nLmM6MTM1MgogbXNnaWQgIiVCOiBtYXRjaGluZyBmb3JtYXRzOiIKIG1zZ3N0ciAiJUI6IG1hdGNoYW5kZSBmb3JtYXQ6IgogCi0jOiBsZGxhbmcuYzoxNTExCisjOiBsZGxhbmcuYzoxMzU5CiBtc2dpZCAiJUYlQjogZmlsZSBub3QgcmVjb2duaXplZDogJUVcbiIKIG1zZ3N0ciAiJUYlQjogZmlsZW4gaW50ZSBpZ2Vua+RuZDogJUVcbiIKIAotIzogbGRsYW5nLmM6MTU2NworIzogbGRsYW5nLmM6MTQxOAogbXNnaWQgIiVGJUI6IG1lbWJlciAlQiBpbiBhcmNoaXZlIGlzIG5vdCBhbiBvYmplY3RcbiIKIG1zZ3N0ciAiJUYlQjogbWVkbGVtICVCIGkgYXJraXZldCDkciBpbnRlIGV0dCBvYmpla3RcbiIKIAotIzogbGRsYW5nLmM6MTU3OCBsZGxhbmcuYzoxNTkyCisjOiBsZGxhbmcuYzoxNDI5IGxkbGFuZy5jOjE0NDMKIG1zZ2lkICIlRiVCOiBjb3VsZCBub3QgcmVhZCBzeW1ib2xzOiAlRVxuIgogbXNnc3RyICIlRiVCOiBrdW5kZSBpbnRlIGzkc2Egc3ltYm9sZXI6ICVFXG4iCiAKLSM6IGxkbGFuZy5jOjE4NTMKKyM6IGxkbGFuZy5jOjE2OTgKIG1zZ2lkICIlUDogd2FybmluZzogY291bGQgbm90IGZpbmQgYW55IHRhcmdldHMgdGhhdCBtYXRjaCBlbmRpYW5uZXNzIHJlcXVpcmVtZW50XG4iCiBtc2dzdHIgIiVQOiB2YXJuaW5nOiBrdW5kZSBpbnRlIGhpdHRhIG7lZ3JhIG3lbCBzb20gbWF0Y2hhciBrcmF2ZXQgcOUgZW5kaWFuZXNzXG4iCiAKLSM6IGxkbGFuZy5jOjE4NjYKKyM6IGxkbGFuZy5jOjE3MTEKIG1zZ2lkICIlUCVGOiB0YXJnZXQgJXMgbm90IGZvdW5kXG4iCiBtc2dzdHIgIiVQJUY6IG3lbGV0ICVzIGhpdHRhZGVzIGludGVcbiIKIAotIzogbGRsYW5nLmM6MTg2OAorIzogbGRsYW5nLmM6MTcxMwogbXNnaWQgIiVQJUY6IGNhbm5vdCBvcGVuIG91dHB1dCBmaWxlICVzOiAlRVxuIgogbXNnc3RyICIlUCVGOiBrYW4gaW50ZSD2cHBuYSB1dGRhdGFmaWxlbiAlczogJUVcbiIKIAotIzogbGRsYW5nLmM6MTg3OAorIzogbGRsYW5nLmM6MTcyMwogbXNnaWQgIiVQJUY6JXM6IGNhbiBub3QgbWFrZSBvYmplY3QgZmlsZTogJUVcbiIKIG1zZ3N0ciAiJVAlRjolczoga2FuIGludGUgc2thcGEgb2JqZWt0ZmlsZW46ICVFXG4iCiAKLSM6IGxkbGFuZy5jOjE4ODIKKyM6IGxkbGFuZy5jOjE3MjcKIG1zZ2lkICIlUCVGOiVzOiBjYW4gbm90IHNldCBhcmNoaXRlY3R1cmU6ICVFXG4iCiBtc2dzdHIgIiVQJUY6JXM6IGthbiBpbnRlIHN05GxsYSBpbiBhcmtpdGVrdHVyOiAlRVxuIgogCi0jOiBsZGxhbmcuYzoxODg2CisjOiBsZGxhbmcuYzoxNzMxCiBtc2dpZCAiJVAlRjogY2FuIG5vdCBjcmVhdGUgbGluayBoYXNoIHRhYmxlOiAlRVxuIgogbXNnc3RyICIlUCVGOiBrYW4gaW50ZSBza2FwYSBoYXNodGFiZWxsIPZ2ZXIgbORua2FyOiAlRVxuIgogCi0jOiBsZGxhbmcuYzoyMjM1CisjOiBsZGxhbmcuYzoyMDY5CiBtc2dpZCAiIGxvYWQgYWRkcmVzcyAweCVWIgogbXNnc3RyICIgaW5s5HNuaW5nc2FkcmVzcyAweCVWIgogCi0jOiBsZGxhbmcuYzoyMzc1CisjOiBsZGxhbmcuYzoyMjA0CiBtc2dpZCAiJVcgKHNpemUgYmVmb3JlIHJlbGF4aW5nKVxuIgogbXNnc3RyICIlVyAoc3RvcmxlayBpbm5hbiBhdnNsYXBwbmluZylcbiIKIAotIzogbGRsYW5nLmM6MjQ2MgorIzogbGRsYW5nLmM6MjI4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJBZGRyZXNzIG9mIHNlY3Rpb24gJXMgc2V0IHRvICIKIG1zZ3N0ciAiQWRyZXNzZW4gcOUgc2VrdGlvbmVuICVzIHN05GxsZCB0aWxsICIKIAotIzogbGRsYW5nLmM6MjYyMworIzogbGRsYW5nLmM6MjQ0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsIHdpdGggJWRcbiIKIG1zZ3N0ciAiTWlzc2x5Y2thcyBtZWQgJWRcbiIKIAotIzogbGRsYW5nLmM6Mjg2OAorIzogbGRsYW5nLmM6MjY4MwogbXNnaWQgIiVYJVA6IHNlY3Rpb24gJXMgWyVWIC0+ICVWXSBvdmVybGFwcyBzZWN0aW9uICVzIFslViAtPiAlVl1cbiIKIG1zZ3N0ciAiJVglUDogc2VrdGlvbmVuICVzIFslViAtPiAlVl0g9nZlcmxhcHBhciBtZWQgc2VrdGlvbmVuICVzIFslViAtPiAlVl1cbiIKIAotIzogbGRsYW5nLmM6Mjg5NworIzogbGRsYW5nLmM6MjcxMQogbXNnaWQgIiVYJVA6IGFkZHJlc3MgMHgldiBvZiAlQiBzZWN0aW9uICVzIGlzIG5vdCB3aXRoaW4gcmVnaW9uICVzXG4iCiBtc2dzdHIgIiVYJVA6IGFkcmVzc2VuIDB4JXYgaSAlQi1zZWt0aW9uZW4gJXMg5HIgaW50ZSBpbm9tIG9tcuVkZXQgJXNcbiIKIAotIzogbGRsYW5nLmM6MjkwNQorIzogbGRsYW5nLmM6MjcxOQogbXNnaWQgIiVYJVA6IHJlZ2lvbiAlcyBpcyBmdWxsICglQiBzZWN0aW9uICVzKVxuIgogbXNnc3RyICIlWCVQOiBvbXLlZGV0ICVzIORyIGZ1bGx0ICglQi1zZWt0aW9uICVzKVxuIgogCi0jOiBsZGxhbmcuYzoyOTU1CisjOiBsZGxhbmcuYzoyNzcwCiBtc2dpZCAiJVAlWDogSW50ZXJuYWwgZXJyb3Igb24gQ09GRiBzaGFyZWQgbGlicmFyeSBzZWN0aW9uICVzXG4iCiBtc2dzdHIgIiVQJVg6IEludGVybnQgZmVsIGkgZGVsYXQgQ09GRi1iaWJsaW90ZWsgc2VrdGlvbiAlc1xuIgogCi0jOiBsZGxhbmcuYzoyOTk5Ci1tc2dpZCAiJVA6IHdhcm5pbmc6IG5vIG1lbW9yeSByZWdpb24gc3BlY2lmaWVkIGZvciBzZWN0aW9uIGAlcydcbiIKLW1zZ3N0ciAiJVA6IHZhcm5pbmc6IGluZ2V0IG1pbm5lc29tcuVkZSBhbmdpdmV0IGb2ciBzZWt0aW9uZW4gXCIlc1wiXG4iCisjOiBsZGxhbmcuYzoyODI2Cittc2dpZCAiJVAlRjogZXJyb3I6IG5vIG1lbW9yeSByZWdpb24gc3BlY2lmaWVkIGZvciBsb2FkYWJsZSBzZWN0aW9uIGAlcydcbiIKK21zZ3N0ciAiJVAlRjogZmVsOiBpbmdldCBtaW5uZXNvbXLlZGUgYW5naXZldCBm9nIgaW5s5HNiYXJhIHNla3Rpb25lbiBcIiVzXCJcbiIKIAotIzogbGRsYW5nLmM6MzAxNAorIzogbGRsYW5nLmM6MjgzMAorbXNnaWQgIiVQOiB3YXJuaW5nOiBubyBtZW1vcnkgcmVnaW9uIHNwZWNpZmllZCBmb3IgbG9hZGFibGUgc2VjdGlvbiBgJXMnXG4iCittc2dzdHIgIiVQOiB2YXJuaW5nOiBpbmdldCBtaW5uZXNvbXLlZGUgYW5naXZldCBm9nIgaW5s5HNiYXJhIHNla3Rpb25lbiBcIiVzXCJcbiIKKworIzogbGRsYW5nLmM6Mjg0NgogbXNnaWQgIiVQOiB3YXJuaW5nOiBjaGFuZ2luZyBzdGFydCBvZiBzZWN0aW9uICVzIGJ5ICV1IGJ5dGVzXG4iCiBtc2dzdHIgIiVQOiB2YXJuaW5nOiDkbmRyYXIgc3RhcnQgcOUgc2VrdGlvbmVuICVzIG1lZCAldSBieXRlXG4iCiAKLSM6IGxkbGFuZy5jOjMwMjgKKyM6IGxkbGFuZy5jOjI4NTkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiJUYlUzogbm9uIGNvbnN0YW50IGFkZHJlc3MgZXhwcmVzc2lvbiBmb3Igc2VjdGlvbiAlc1xuIgogbXNnc3RyICIlRiVTOiBpY2tla29uc3RhbnQgYWRyZXNzdXR0cnljayBm9nIgc2VrdGlvbmVuICVzXG4iCiAKLSM6IGxkbGFuZy5jOjMyMDMKKyM6IGxkbGFuZy5jOjMwMzYKIG1zZ2lkICIlUCVGOiBjYW4ndCByZWxheCBzZWN0aW9uOiAlRVxuIgogbXNnc3RyICIlUCVGOiBrYW4gaW50ZSBzbGFwcG5hIGF2IHNla3Rpb246ICVFXG4iCiAKLSM6IGxkbGFuZy5jOjMzOTgKKyM6IGxkbGFuZy5jOjMyMzIKIG1zZ2lkICIlRiVQOiBpbnZhbGlkIGRhdGEgc3RhdGVtZW50XG4iCiBtc2dzdHIgIiVGJVA6IG9naWx0aWcgZGF0YXNhdHNcbiIKIAotIzogbGRsYW5nLmM6MzQzNQorIzogbGRsYW5nLmM6MzI2OQogbXNnaWQgIiVGJVA6IGludmFsaWQgcmVsb2Mgc3RhdGVtZW50XG4iCiBtc2dzdHIgIiVGJVA6IG9naWx0aWcgb21sb2thbGlzZXJpbmdzc2F0c1xuIgogCi0jOiBsZGxhbmcuYzozNTc0CisjOiBsZGxhbmcuYzozNDA4CiBtc2dpZCAiJVAlRjolczogY2FuJ3Qgc2V0IHN0YXJ0IGFkZHJlc3NcbiIKIG1zZ3N0ciAiJVAlRjolczoga2FuIGludGUgc3TkbGxhIGluIHN0YXJ0YWRyZXNzXG4iCiAKLSM6IGxkbGFuZy5jOjM1ODcgbGRsYW5nLmM6MzYwNQorIzogbGRsYW5nLmM6MzQyMSBsZGxhbmcuYzozNDM5CiBtc2dpZCAiJVAlRjogY2FuJ3Qgc2V0IHN0YXJ0IGFkZHJlc3NcbiIKIG1zZ3N0ciAiJVAlRjoga2FuIGludGUgc3TkbGxhIGluIHN0YXJ0YWRyZXNzXG4iCiAKLSM6IGxkbGFuZy5jOjM1OTkKKyM6IGxkbGFuZy5jOjM0MzMKIG1zZ2lkICIlUDogd2FybmluZzogY2Fubm90IGZpbmQgZW50cnkgc3ltYm9sICVzOyBkZWZhdWx0aW5nIHRvICVWXG4iCiBtc2dzdHIgIiVQOiB2YXJuaW5nOiBrYW4gaW50ZSBoaXR0YSBpbmflbmdzc3ltYm9sZW4gJXM7IGFuduRuZGVyIHNvbSBzdGFuZGFyZCAlVlxuIgogCi0jOiBsZGxhbmcuYzozNjEwCisjOiBsZGxhbmcuYzozNDQ0CiBtc2dpZCAiJVA6IHdhcm5pbmc6IGNhbm5vdCBmaW5kIGVudHJ5IHN5bWJvbCAlczsgbm90IHNldHRpbmcgc3RhcnQgYWRkcmVzc1xuIgogbXNnc3RyICIlUDogdmFybmluZzoga2FuIGludGUgaGl0dGEgaW5n5W5nc3N5bWJvbGVuICVzOyBzdORsbGVyIGludGUgaW4gc3RhcnRhZHJlc3NcbiIKIAotIzogbGRsYW5nLmM6MzY2MAorIzogbGRsYW5nLmM6MzQ4OAogbXNnaWQgIiVQJUY6IFJlbG9jYXRhYmxlIGxpbmtpbmcgd2l0aCByZWxvY2F0aW9ucyBmcm9tIGZvcm1hdCAlcyAoJUIpIHRvIGZvcm1hdCAlcyAoJUIpIGlzIG5vdCBzdXBwb3J0ZWRcbiIKIG1zZ3N0ciAiJVAlRjogT21sb2thbGlzZXJpbmdzYmFyIGzkbmtuaW5nIG1lZCBvbWzkbmtuaW5nYXIgZnLlbiBmb3JtYXRldCAlcyAoJUIpIHRpbGwgZm9ybWF0ZXQgJXMgKCVCKSBzdPZkcyBpbnRlXG4iCiAKLSM6IGxkbGFuZy5jOjM2NjkKKyM6IGxkbGFuZy5jOjM0OTcKIG1zZ2lkICIlUDogd2FybmluZzogJXMgYXJjaGl0ZWN0dXJlIG9mIGlucHV0IGZpbGUgYCVCJyBpcyBpbmNvbXBhdGlibGUgd2l0aCAlcyBvdXRwdXRcbiIKIG1zZ3N0ciAiJVA6IHZhcm5pbmc6ICVzLWFya2l0ZWt0dXJlbiBpIGluZGF0YWZpbGVuIFwiJUJcIiDkciBpbmtvbXBhdGliZWwgbWVkICVzLXV0ZGF0YVxuIgogCi0jOiBsZGxhbmcuYzozNjkwCisjOiBsZGxhbmcuYzozNTE4CiBtc2dpZCAiJUUlWDogZmFpbGVkIHRvIG1lcmdlIHRhcmdldCBzcGVjaWZpYyBkYXRhIG9mIGZpbGUgJUJcbiIKIG1zZ3N0ciAiJUUlWDogbWlzc2x5Y2thZGVzIG1lZCBhdHQgc2zlIHNhbW1hbiBt5WxzcGVjaWZpayBkYXRhIGkgZmlsZW4gJUJcbiIKIAotIzogbGRsYW5nLmM6Mzc3OQorIzogbGRsYW5nLmM6MzYwNAogbXNnaWQgIiIKICJcbiIKICJBbGxvY2F0aW5nIGNvbW1vbiBzeW1ib2xzXG4iCkBAIC02OTEsNyArNzI4LDcgQEAKICJcbiIKICJBbGxva2VyYXIgZ2VtZW5zYW1tYSBzeW1ib2xlclxuIgogCi0jOiBsZGxhbmcuYzozNzgwCisjOiBsZGxhbmcuYzozNjA1CiBtc2dpZCAiIgogIkNvbW1vbiBzeW1ib2wgICAgICAgc2l6ZSAgICAgICAgICAgICAgZmlsZVxuIgogIlxuIgpAQCAtNzAyLDE1OCArNzM5LDE1OCBAQAogIy4gVGhpcyBtZXNzYWdlIGhhcHBlbnMgd2hlbiB1c2luZyB0aGUKICMuIHN2cjMuaWZpbGUgbGlua2VyIHNjcmlwdCwgc28gSSBoYXZlCiAjLiBkaXNhYmxlZCBpdC4KLSM6IGxkbGFuZy5jOjM4NTgKKyM6IGxkbGFuZy5jOjM2ODEKIG1zZ2lkICIlUDogbm8gW0NPTU1PTl0gY29tbWFuZCwgZGVmYXVsdGluZyB0byAuYnNzXG4iCiBtc2dzdHIgIiVQOiBpbmdldCBbQ09NTU9OXS1rb21tYW5kbywgYW525G5kZXIgc3RhbmRhcmRhbHRlcm5hdGl2ZXQgLmJzc1xuIgogCi0jOiBsZGxhbmcuYzozOTE3CisjOiBsZGxhbmcuYzozNzM3CiBtc2dpZCAiJVAlRjogaW52YWxpZCBzeW50YXggaW4gZmxhZ3NcbiIKIG1zZ3N0ciAiJVAlRjogb2dpbHRpZyBzeW50YXggaSBmbGFnZ29yXG4iCiAKLSM6IGxkbGFuZy5jOjQ1MzIKKyM6IGxkbGFuZy5jOjQzMjUKIG1zZ2lkICIlUCVGbXVsdGlwbGUgU1RBUlRVUCBmaWxlc1xuIgogbXNnc3RyICIlUCVGZmxlcmEgc2FtdGlkaWdhIFNUQVJUVVAtZmlsZXJcbiIKIAotIzogbGRsYW5nLmM6NDU3NQorIzogbGRsYW5nLmM6NDM2OAogbXNnaWQgIiVYJVA6JVM6IHNlY3Rpb24gaGFzIGJvdGggYSBsb2FkIGFkZHJlc3MgYW5kIGEgbG9hZCByZWdpb25cbiIKIG1zZ3N0ciAiJVglUDolUzogc2VrdGlvbmVuIGhhciBi5WRlIGVuIGlubORzbmluZ3NhZHJlc3Mgb2NoIGV0dCBtaW5uZXNpbmzkc25pbmdzb21y5WRlXG4iCiAKLSM6IGxkbGFuZy5jOjQ4MjUKKyM6IGxkbGFuZy5jOjQ2MDgKIG1zZ2lkICIlRiVQOiBiZmRfcmVjb3JkX3BoZHIgZmFpbGVkOiAlRVxuIgogbXNnc3RyICIlRiVQOiBiZmRfcmVjb3JkX3BoZHIgbWlzc2x5Y2thZGVzOiAlRVxuIgogCi0jOiBsZGxhbmcuYzo0ODQ0CisjOiBsZGxhbmcuYzo0NjI3CiBtc2dpZCAiJVglUDogc2VjdGlvbiBgJXMnIGFzc2lnbmVkIHRvIG5vbi1leGlzdGVudCBwaGRyIGAlcydcbiIKIG1zZ3N0ciAiJVglUDogc2VrdGlvbmVuIFwiJXNcIiDkciB0aWxsZGVsYWQgdGlsbCBpY2tleGlzdGVyYW5kZSBwaHZkIFwiJXNcIlxuIgogCi0jOiBsZGxhbmcuYzo1MTQzCisjOiBsZGxhbmcuYzo0OTE5CiBtc2dpZCAiJVglUDogdW5rbm93biBsYW5ndWFnZSBgJXMnIGluIHZlcnNpb24gaW5mb3JtYXRpb25cbiIKIG1zZ3N0ciAiJVglUDogb2vkbnQgc3By5WsgaSBcIiVzXCIgaSB2ZXJzaW9uc2luZm9ybWF0aW9uXG4iCiAKLSM6IGxkbGFuZy5jOjUxOTUKKyM6IGxkbGFuZy5jOjQ5NjkKIG1zZ2lkICIlWCVQOiBhbm9ueW1vdXMgdmVyc2lvbiB0YWcgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdmVyc2lvbiB0YWdzXG4iCiBtc2dzdHIgIiVYJVA6IGFub255bSB2ZXJzaW9uc3RhZ2cga2FuIGludGUga29tYmluZXJhcyBtZWQgYW5kcmEgdmVyc2lvbnN0YWdnYXJcbiIKIAotIzogbGRsYW5nLmM6NTIwMgorIzogbGRsYW5nLmM6NDk3NwogbXNnaWQgIiVYJVA6IGR1cGxpY2F0ZSB2ZXJzaW9uIHRhZyBgJXMnXG4iCiBtc2dzdHIgIiVYJVA6IGR1YmJlbCB2ZXJzaW9uc3RhZ2cgXCIlc1wiXG4iCiAKLSM6IGxkbGFuZy5jOjUyMTUgbGRsYW5nLmM6NTIyOAorIzogbGRsYW5nLmM6NDk5MCBsZGxhbmcuYzo1MDAzCiBtc2dpZCAiJVglUDogZHVwbGljYXRlIGV4cHJlc3Npb24gYCVzJyBpbiB2ZXJzaW9uIGluZm9ybWF0aW9uXG4iCiBtc2dzdHIgIiVYJVA6IGR1YmJlbHQgdXR0cnljayBcIiVzXCIgaSB2ZXJzaW9uc2luZm9ybWF0aW9uXG4iCiAKLSM6IGxkbGFuZy5jOjUyNzAKKyM6IGxkbGFuZy5jOjUwNDMKIG1zZ2lkICIlWCVQOiB1bmFibGUgdG8gZmluZCB2ZXJzaW9uIGRlcGVuZGVuY3kgYCVzJ1xuIgogbXNnc3RyICIlWCVQOiBrYW4gaW50ZSBoaXR0YSB2ZXJzaW9uc2Jlcm9lbmRlIFwiJXNcIlxuIgogCi0jOiBsZGxhbmcuYzo1MjkyCisjOiBsZGxhbmcuYzo1MDY1CiBtc2dpZCAiJVglUDogdW5hYmxlIHRvIHJlYWQgLmV4cG9ydHMgc2VjdGlvbiBjb250ZW50c1xuIgogbXNnc3RyICIlWCVQOiBrYW4gaW50ZSBs5HNhIGlubmVo5WxsZXQgaSAuZXhwb3J0cy1zZWt0aW9uZW5cbiIKIAotIzogbGRtYWluLmM6MTk4CisjOiBsZG1haW4uYzoyNDcKIG1zZ2lkICIlWCVQOiBjYW4ndCBzZXQgQkZEIGRlZmF1bHQgdGFyZ2V0IHRvIGAlcyc6ICVFXG4iCiBtc2dzdHIgIiVYJVA6IGthbiBpbnRlIHN05GxsYSBpbiBCU0Qtc3RhbmRhcmRt5WxldCB0aWxsIFwiJXNcIjogJUVcbiIKIAotIzogbGRtYWluLmM6MjkwCisjOiBsZG1haW4uYzozNDkKIG1zZ2lkICIlUCVGOiAtciBhbmQgLS1tcGM4NjBjMCBtYXkgbm90IGJlIHVzZWQgdG9nZXRoZXJcbiIKIG1zZ3N0ciAiJVAlRjogLXIgb2NoIC0tbXBjODYwYzAga2FuIGludGUgYW525G5kYXMgdGlsbHNhbW1hbnNcbiIKIAotIzogbGRtYWluLmM6MjkyCisjOiBsZG1haW4uYzozNTEKIG1zZ2lkICIlUCVGOiAtLXJlbGF4IGFuZCAtciBtYXkgbm90IGJlIHVzZWQgdG9nZXRoZXJcbiIKIG1zZ3N0ciAiJVAlRjogLS1yZWxheCBvY2ggLXIga2FuIGludGUgYW525G5kYXMgdGlsbHNhbW1hbnNcbiIKIAotIzogbGRtYWluLmM6Mjk0CisjOiBsZG1haW4uYzozNTMKIG1zZ2lkICIlUCVGOiAtciBhbmQgLXNoYXJlZCBtYXkgbm90IGJlIHVzZWQgdG9nZXRoZXJcbiIKIG1zZ3N0ciAiJVAlRjogLXIgb2NoIC1zaGFyZWQga2FuIGludGUgYW525G5kYXMgdGlsbHNhbW1hbnNcbiIKIAotIzogbGRtYWluLmM6MzAwCisjOiBsZG1haW4uYzozNTkKIG1zZ2lkICIlUCVGOiAtRiBtYXkgbm90IGJlIHVzZWQgd2l0aG91dCAtc2hhcmVkXG4iCiBtc2dzdHIgIiVQJUY6IC1GIGthbiBpbnRlIGFuduRuZGFzIHV0YW4gLXNoYXJlZFxuIgogCi0jOiBsZG1haW4uYzozMDIKKyM6IGxkbWFpbi5jOjM2MQogbXNnaWQgIiVQJUY6IC1mIG1heSBub3QgYmUgdXNlZCB3aXRob3V0IC1zaGFyZWRcbiIKIG1zZ3N0ciAiJVAlRjogLWYga2FuIGludGUgYW525G5kYXMgdXRhbiAtc2hhcmVkXG4iCiAKLSM6IGxkbWFpbi5jOjM0MQorIzogbGRtYWluLmM6NDAzCiBtc2dpZCAidXNpbmcgZXh0ZXJuYWwgbGlua2VyIHNjcmlwdDoiCiBtc2dzdHIgImFuduRuZGVyIGV4dGVybnQgbORua3NrcmlwdDoiCiAKLSM6IGxkbWFpbi5jOjM0MworIzogbGRtYWluLmM6NDA1CiBtc2dpZCAidXNpbmcgaW50ZXJuYWwgbGlua2VyIHNjcmlwdDoiCiBtc2dzdHIgImFuduRuZGVyIGludGVybnQgbORua3NrcmlwdDoiCiAKLSM6IGxkbWFpbi5jOjM3NworIzogbGRtYWluLmM6NDM5CiBtc2dpZCAiJVAlRjogbm8gaW5wdXQgZmlsZXNcbiIKIG1zZ3N0ciAiJVAlRjogaW5nYSBpbmRhdGFmaWxlclxuIgogCi0jOiBsZG1haW4uYzozODIKKyM6IGxkbWFpbi5jOjQ0MwogbXNnaWQgIiVQOiBtb2RlICVzXG4iCiBtc2dzdHIgIiVQOiBs5GdlICVzXG4iCiAKLSM6IGxkbWFpbi5jOjM5OQorIzogbGRtYWluLmM6NDU5CiBtc2dpZCAiJVAlRjogY2Fubm90IG9wZW4gbWFwIGZpbGUgJXM6ICVFXG4iCiBtc2dzdHIgIiVQJUY6IGthbiBpbnRlIPZwcG5hIHRhYmVsbGZpbCAlczogJUVcbiIKIAotIzogbGRtYWluLmM6NDMyCisjOiBsZG1haW4uYzo0ODkKIG1zZ2lkICIlUDogbGluayBlcnJvcnMgZm91bmQsIGRlbGV0aW5nIGV4ZWN1dGFibGUgYCVzJ1xuIgogbXNnc3RyICIlUDogbORua2ZlbCBoaXR0YWRlcywgdGFyIGJvcnQgZGVuIGv2cmJhcmEgZmlsZW4gXCIlc1wiXG4iCiAKLSM6IGxkbWFpbi5jOjQ0MworIzogbGRtYWluLmM6NDk4CiBtc2dpZCAiJUYlQjogZmluYWwgY2xvc2UgZmFpbGVkOiAlRVxuIgogbXNnc3RyICIlRiVCOiBhdnNsdXRhbmRlIHN05G5nbmluZyBtaXNzbHlja2FkZXM6ICVFXG4iCiAKLSM6IGxkbWFpbi5jOjQ2NworIzogbGRtYWluLmM6NTI0CiBtc2dpZCAiJVglUDogdW5hYmxlIHRvIG9wZW4gZm9yIHNvdXJjZSBvZiBjb3B5IGAlcydcbiIKIG1zZ3N0ciAiJVglUDoga2FuIGludGUg9nBwbmEgZvZyIGvkbGxrb2RlbiB0aWxsIGtvcGlhbiBcIiVzXCJcbiIKIAotIzogbGRtYWluLmM6NDY5CisjOiBsZG1haW4uYzo1MjcKIG1zZ2lkICIlWCVQOiB1bmFibGUgdG8gb3BlbiBmb3IgZGVzdGluYXRpb24gb2YgY29weSBgJXMnXG4iCiBtc2dzdHIgIiVYJVA6IGthbiBpbnRlIPZwcG5hIGb2ciBt5WwgYXYga29waWFuIFwiJXNcIlxuIgogCi0jOiBsZG1haW4uYzo0NzUKKyM6IGxkbWFpbi5jOjUzNAogbXNnaWQgIiVQOiBFcnJvciB3cml0aW5nIGZpbGUgYCVzJ1xuIgogbXNnc3RyICIlUDogRmVsIHZpZCBza3Jpdm5pbmcgYXYgZmlsZW4gXCIlc1wiXG4iCiAKLSM6IGxkbWFpbi5jOjQ4MSBwZS1kbGwuYzoxNDYzCisjOiBsZG1haW4uYzo1MzkgcGUtZGxsLmM6MTQ0MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlUDogRXJyb3IgY2xvc2luZyBmaWxlIGAlcydcbiIKIG1zZ3N0ciAiJVA6IEZlbCB2aWQgc3TkbmduaW5nIGF2IGZpbGVuIFwiJXNcIlxuIgogCi0jOiBsZG1haW4uYzo0OTgKKyM6IGxkbWFpbi5jOjU1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogdG90YWwgdGltZSBpbiBsaW5rOiAlbGQuJTA2bGRcbiIKIG1zZ3N0ciAiJXM6IHRvdGFsIHRpZCBpIGzkbmtuaW5nOiAlbGQuJTA2bGRcbiIKIAotIzogbGRtYWluLmM6NTAxCisjOiBsZG1haW4uYzo1NTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGRhdGEgc2l6ZSAlbGRcbiIKIG1zZ3N0ciAiJXM6IGRhdGFzdG9ybGVrICVsZFxuIgogCi0jOiBsZG1haW4uYzo1NDIKKyM6IGxkbWFpbi5jOjU5NgogbXNnaWQgIiVQJUY6IG1pc3NpbmcgYXJndW1lbnQgdG8gLW1cbiIKIG1zZ3N0ciAiJVAlRjogYXJndW1lbnQgc2FrbmFzIHRpbGwgLW1cbiIKIAotIzogbGRtYWluLmM6NjcwIGxkbWFpbi5jOjY5MSBsZG1haW4uYzo3MjIKKyM6IGxkbWFpbi5jOjc0MSBsZG1haW4uYzo3NTkgbGRtYWluLmM6Nzg5CiBtc2dpZCAiJVAlRjogYmZkX2hhc2hfdGFibGVfaW5pdCBmYWlsZWQ6ICVFXG4iCiBtc2dzdHIgIiVQJUY6IGJmZF9oYXNoX3RhYmxlX2luaXQgbWlzc2x5Y2thZGVzOiAlRVxuIgogCi0jOiBsZG1haW4uYzo2NzUgbGRtYWluLmM6Njk0CisjOiBsZG1haW4uYzo3NDUgbGRtYWluLmM6NzYzCiBtc2dpZCAiJVAlRjogYmZkX2hhc2hfbG9va3VwIGZhaWxlZDogJUVcbiIKIG1zZ3N0ciAiJVAlRjogYmZkX2hhc2hfbG9va3VwIG1pc3NseWNrYWRlczogJUVcbiIKIAotIzogbGRtYWluLmM6NzA5CisjOiBsZG1haW4uYzo3NzcKIG1zZ2lkICIlWCVQOiBlcnJvcjogZHVwbGljYXRlIHJldGFpbi1zeW1ib2xzLWZpbGVcbiIKIG1zZ3N0ciAiJVglUDogZmVsOiBkdWJiZWwgcmV0YWluLXN5bWJvbHMtZmlsZVxuIgogCi0jOiBsZG1haW4uYzo3NTMKKyM6IGxkbWFpbi5jOjgxOQogbXNnaWQgIiVQJUY6IGJmZF9oYXNoX2xvb2t1cCBmb3IgaW5zZXJ0aW9uIGZhaWxlZDogJUVcbiIKIG1zZ3N0ciAiJVAlRjogYmZkX2hhc2hfbG9va3VwIGb2ciBpbmflbmcgbWlzc2x5Y2thZGVzOiAlRVxuIgogCi0jOiBsZG1haW4uYzo3NTgKKyM6IGxkbWFpbi5jOjgyNAogbXNnaWQgIiVQOiBgLXJldGFpbi1zeW1ib2xzLWZpbGUnIG92ZXJyaWRlcyBgLXMnIGFuZCBgLVMnXG4iCiBtc2dzdHIgIiVQOiBcIi1yZXRhaW4tc3ltYm9scy1maWxlXCIg5XNpZG9z5HR0ZXIgXCItc1wiIG9jaCBcIi1TXCJcbiIKIAotIzogbGRtYWluLmM6ODM0CisjOiBsZG1haW4uYzo4OTkKIG1zZ2lkICIiCiAiQXJjaGl2ZSBtZW1iZXIgaW5jbHVkZWQgYmVjYXVzZSBvZiBmaWxlIChzeW1ib2wpXG4iCiAiXG4iCkBAIC04NjEsMTU0ICs4OTgsMTU1IEBACiAiQXJraXZtZWRsZW0gaW5rbHVkZXJhZCBw5SBncnVuZCBhdiBmaWwgKHN5bWJvbClcbiIKICJcbiIKIAotIzogbGRtYWluLmM6OTA1CisjOiBsZG1haW4uYzo5NjkKIG1zZ2lkICIlWCVDOiBtdWx0aXBsZSBkZWZpbml0aW9uIG9mIGAlVCdcbiIKIG1zZ3N0ciAiJVglQzogZmxlcmEgZGVmaW50aW9uZXIgYXYgXCIlVFwiXG4iCiAKLSM6IGxkbWFpbi5jOjkwOAorIzogbGRtYWluLmM6OTcyCiBtc2dpZCAiJUQ6IGZpcnN0IGRlZmluZWQgaGVyZVxuIgogbXNnc3RyICIlRDogZvZyc3QgZGVmaW5pZXJhZCBo5HJcbiIKIAotIzogbGRtYWluLmM6OTEyCisjOiBsZG1haW4uYzo5NzYKIG1zZ2lkICIlUDogRGlzYWJsaW5nIHJlbGF4YXRpb246IGl0IHdpbGwgbm90IHdvcmsgd2l0aCBtdWx0aXBsZSBkZWZpbml0aW9uc1xuIgogbXNnc3RyICIlUDogU3TkbmdlciBhdiBhdnNsYXBwbmluZzogZGV0IGtvbW1lciBpbnRlIGF0dCBmdW5nZXJhIG1lZCBmbGVyYSBkZWZpbml0aW9uZXJcbiIKIAotIzogbGRtYWluLmM6OTQzCisjOiBsZG1haW4uYzoxMDA2CiBtc2dpZCAiJUI6IHdhcm5pbmc6IGRlZmluaXRpb24gb2YgYCVUJyBvdmVycmlkaW5nIGNvbW1vblxuIgogbXNnc3RyICIlQjogdmFybmluZzogZGVmaW5pdGlvbmVyIGF2IFwiJVRcIiDlc2lkb3PkdHRlciBnZW1lbnNhbVxuIgogCi0jOiBsZG1haW4uYzo5NDYKKyM6IGxkbWFpbi5jOjEwMDkKIG1zZ2lkICIlQjogd2FybmluZzogY29tbW9uIGlzIGhlcmVcbiIKIG1zZ3N0ciAiJUI6IHZhcm5pbmc6IGdlbWVuc2FtIORyIGjkclxuIgogCi0jOiBsZG1haW4uYzo5NTMKKyM6IGxkbWFpbi5jOjEwMTYKIG1zZ2lkICIlQjogd2FybmluZzogY29tbW9uIG9mIGAlVCcgb3ZlcnJpZGRlbiBieSBkZWZpbml0aW9uXG4iCiBtc2dzdHIgIiVCOiB2YXJuaW5nOiBnZW1lbnNhbSBpIFwiJVRcIiDlc2lkb3NhdHRlcyBhdiBkZWZpbml0aW9uXG4iCiAKLSM6IGxkbWFpbi5jOjk1NgorIzogbGRtYWluLmM6MTAxOQogbXNnaWQgIiVCOiB3YXJuaW5nOiBkZWZpbmVkIGhlcmVcbiIKIG1zZ3N0ciAiJUI6IHZhcm5pbmc6IGRlZmluaWVyYWQgaORyXG4iCiAKLSM6IGxkbWFpbi5jOjk2MworIzogbGRtYWluLmM6MTAyNgogbXNnaWQgIiVCOiB3YXJuaW5nOiBjb21tb24gb2YgYCVUJyBvdmVycmlkZGVuIGJ5IGxhcmdlciBjb21tb25cbiIKIG1zZ3N0ciAiJUI6IHZhcm5pbmc6IGdlbWVuc2FtIGkgXCIlVFwiIOVzaWRvc2F0dGVzIGF2IHN09nJyZSBnZW1lbnNhbVxuIgogCi0jOiBsZG1haW4uYzo5NjYKKyM6IGxkbWFpbi5jOjEwMjkKIG1zZ2lkICIlQjogd2FybmluZzogbGFyZ2VyIGNvbW1vbiBpcyBoZXJlXG4iCiBtc2dzdHIgIiVCOiB2YXJuaW5nOiBzdPZycmUgZ2VtZW5zYW0g5HIgaORyXG4iCiAKLSM6IGxkbWFpbi5jOjk3MAorIzogbGRtYWluLmM6MTAzMwogbXNnaWQgIiVCOiB3YXJuaW5nOiBjb21tb24gb2YgYCVUJyBvdmVycmlkaW5nIHNtYWxsZXIgY29tbW9uXG4iCiBtc2dzdHIgIiVCOiB2YXJuaW5nOiBnZW1lbnNhbSBpIFwiJVRcIiDlc2lkb3PkdHRlciBtaW5kcmUgZ2VtZW5zYW1cbiIKIAotIzogbGRtYWluLmM6OTczCisjOiBsZG1haW4uYzoxMDM2CiBtc2dpZCAiJUI6IHdhcm5pbmc6IHNtYWxsZXIgY29tbW9uIGlzIGhlcmVcbiIKIG1zZ3N0ciAiJUI6IHZhcm5pbmc6IG1pbmRyZSBnZW1lbnNhbSDkciBo5HJcbiIKIAotIzogbGRtYWluLmM6OTc3CisjOiBsZG1haW4uYzoxMDQwCiBtc2dpZCAiJUI6IHdhcm5pbmc6IG11bHRpcGxlIGNvbW1vbiBvZiBgJVQnXG4iCiBtc2dzdHIgIiVCOiB2YXJuaW5nOiBmbGVyYSBnZW1lbnNhbW1hIGkgXCIlVFwiXG4iCiAKLSM6IGxkbWFpbi5jOjk3OQorIzogbGRtYWluLmM6MTA0MgogbXNnaWQgIiVCOiB3YXJuaW5nOiBwcmV2aW91cyBjb21tb24gaXMgaGVyZVxuIgogbXNnc3RyICIlQjogdmFybmluZzogZvZyZWflZW5kZSBnZW1lbnNhbSDkciBo5HJcbiIKIAotIzogbGRtYWluLmM6MTAwMCBsZG1haW4uYzoxMDM5CisjOiBsZG1haW4uYzoxMDYyIGxkbWFpbi5jOjExMDAKIG1zZ2lkICIlUDogd2FybmluZzogZ2xvYmFsIGNvbnN0cnVjdG9yICVzIHVzZWRcbiIKIG1zZ3N0ciAiJVA6IHZhcm5pbmc6IGdsb2JhbCBrb25zdHJ1a3RvciAlcyBhbnbkbmRlc1xuIgogCi0jOiBsZG1haW4uYzoxMDQ5CisjOiBsZG1haW4uYzoxMTEwCiBtc2dpZCAiJVAlRjogQkZEIGJhY2tlbmQgZXJyb3I6IEJGRF9SRUxPQ19DVE9SIHVuc3VwcG9ydGVkXG4iCiBtc2dzdHIgIiVQJUY6IEZlbCBpIEJGRC1iYWNrZW5kOiBCRkRfUkVMT0NfQ1RPUiBzdPZkcyBpbnRlXG4iCiAKLSM6IGxkbWFpbi5jOjEyMzMKKyM6IGxkbWFpbi5jOjEyODcgbGRtaXNjLmM6NTMzCiBtc2dpZCAiJUYlUDogYmZkX2hhc2hfdGFibGVfaW5pdCBmYWlsZWQ6ICVFXG4iCiBtc2dzdHIgIiVGJVA6IGJmZF9oYXNoX3RhYmxlX2luaXQgbWlzc2x5Y2thZGVzOiAlRVxuIgogCi0jOiBsZG1haW4uYzoxMjQwCisjOiBsZG1haW4uYzoxMjk0IGxkbWlzYy5jOjU0MAogbXNnaWQgIiVGJVA6IGJmZF9oYXNoX2xvb2t1cCBmYWlsZWQ6ICVFXG4iCiBtc2dzdHIgIiVGJVA6IGJmZF9oYXNoX2xvb2t1cCBtaXNzbHlja2FkZXM6ICVFXG4iCiAKLSM6IGxkbWFpbi5jOjEyNjAKKyM6IGxkbWFpbi5jOjEzMTQKIG1zZ2lkICIlQzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgJVQnXG4iCiBtc2dzdHIgIiVDOiBvZGVmaW5pZXJhZCByZWZlcmVucyB0aWxsIFwiJVRcIlxuIgogCi0jOiBsZG1haW4uYzoxMjY2CisjOiBsZG1haW4uYzoxMzIwCiBtc2dpZCAiJUQ6IG1vcmUgdW5kZWZpbmVkIHJlZmVyZW5jZXMgdG8gYCVUJyBmb2xsb3dcbiIKIG1zZ3N0ciAiJUQ6IGZsZXJhIG9kZWZpbmllcmFkZSByZWZlcmVuc2VyIHRpbGwgXCIlVFwiIGb2bGplclxuIgogCi0jOiBsZG1haW4uYzoxMjczCisjOiBsZG1haW4uYzoxMzI3CiBtc2dpZCAiJUI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYCVUJ1xuIgogbXNnc3RyICIlQjogb2RlZmluaWVyYWQgcmVmZXJlbnMgdGlsbCBcIiVUXCJcbiIKIAotIzogbGRtYWluLmM6MTI3OQorIzogbGRtYWluLmM6MTMzMwogbXNnaWQgIiVCOiBtb3JlIHVuZGVmaW5lZCByZWZlcmVuY2VzIHRvIGAlVCcgZm9sbG93XG4iCiBtc2dzdHIgIiVCOiBmbGVyYSBvZGVmaW5pZXJhZGUgcmVmZXJlbnNlciB0aWxsIFwiJVRcIiBm9mxqZXJcbiIKIAotIzogbGRtYWluLmM6MTI5OSBsZG1haW4uYzoxMzIwIGxkbWFpbi5jOjEzMzkKKyM6IGxkbWFpbi5jOjEzNjQgbGRtYWluLmM6MTM5MiBsZG1haW4uYzoxNDEwCiBtc2dpZCAiJVAlWDogZ2VuZXJhdGVkIgogbXNnc3RyICIlUCVYOiBnZW5lcmVyYWQiCiAKLSM6IGxkbWFpbi5jOjEzMDIKKyM6IGxkbWFpbi5jOjEzNzEKK21zZ2lkICIgYWRkaXRpb25hbCByZWxvY2F0aW9uIG92ZXJmbG93cyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dFxuIgorbXNnc3RyICIgeXR0ZXJsaWdhcmUgb21sb2thbGlzZXJpbmdzc3BpbGwgdXRlbORtbmFkZSBmcuVuIHV0ZGF0YW5cbiIKKworIzogbGRtYWluLmM6MTM3NQogbXNnaWQgIiByZWxvY2F0aW9uIHRydW5jYXRlZCB0byBmaXQ6ICVzICVUIgogbXNnc3RyICIgb21sb2thbGlzZXJpbmcgdHJ1bmtlcmFkIGb2ciBhdHQgcGFzc2E6ICVzICVUIgogCi0jOiBsZG1haW4uYzoxMzIzCisjOiBsZG1haW4uYzoxMzk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImRhbmdlcm91cyByZWxvY2F0aW9uOiAlc1xuIgogbXNnc3RyICJmYXJsaWcgb21sb2thbGlzZXJpbmc6ICVzXG4iCiAKLSM6IGxkbWFpbi5jOjEzNDIKKyM6IGxkbWFpbi5jOjE0MTMKIG1zZ2lkICIgcmVsb2MgcmVmZXJzIHRvIHN5bWJvbCBgJVQnIHdoaWNoIGlzIG5vdCBiZWluZyBvdXRwdXRcbiIKIG1zZ3N0ciAiIG9tbG9rYWxpc2VyaW5nIHJlZmVyZXJhciB0aWxsIHN5bWJvbGVuIFwiJVRcIiBzb20gaW50ZSBza3JpdnMgdXRcbiIKIAotIzogbGRtaXNjLmM6MTU3CisjOiBsZG1pc2MuYzoxNDcKIG1zZ2lkICJubyBzeW1ib2wiCiBtc2dzdHIgImluZ2VuIHN5bWJvbCIKIAotIzogbGRtaXNjLmM6MjIxCisjOiBsZG1pc2MuYzoyMTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYnVpbHQgaW4gbGlua2VyIHNjcmlwdDoldSIKIG1zZ3N0ciAiaW5ieWdndCBs5G5rc2tyaXB0OiV1IgogCi0jOiBsZG1pc2MuYzoyNzEgbGRtaXNjLmM6Mjc1CisjOiBsZG1pc2MuYzoyNjAgbGRtaXNjLmM6MjY0CiBtc2dpZCAiJUIlRjogY291bGQgbm90IHJlYWQgc3ltYm9sc1xuIgogbXNnc3RyICIlQiVGOiBrdW5kZSBpbnRlIGzkc2Egc3ltYm9sZXJcbiIKIAotIy4gV2UgdXNlIGFiZmQtPmZpbGVuYW1lIGluIHRoaXMgaW5pdGlhbCBsaW5lLAotIy4gaW4gY2FzZSBmaWxlbmFtZSBpcyBhIC5oIGZpbGUgb3Igc29tZXRoaW5nCi0jLiBzaW1pbGFybHkgdW5oZWxwZnVsLgotIzogbGRtaXNjLmM6MzExCi1tc2dpZCAiJUI6IEluIGZ1bmN0aW9uIGAlVCc6XG4iCi1tc2dzdHIgIiVCOiBJIGZ1bmt0aW9uZW4gXCIlVFwiOlxuIgorIzogbGRtaXNjLmM6MjkxCittc2dpZCAiOiBJbiBmdW5jdGlvbiBgJVQnOlxuIgorbXNnc3RyICI6IEkgZnVua3Rpb25lbiBcIiVUXCI6XG4iCiAKLSM6IGxkbWlzYy5jOjQ2MworIzogbGRtaXNjLmM6NDM4CiBtc2dpZCAiJUYlUDogaW50ZXJuYWwgZXJyb3IgJXMgJWRcbiIKIG1zZ3N0ciAiJUYlUDogaW50ZXJudCBmZWwgJXMgJWRcbiIKIAotIzogbGRtaXNjLmM6NTEzCisjOiBsZG1pc2MuYzo0ODQKIG1zZ2lkICIlUDogaW50ZXJuYWwgZXJyb3I6IGFib3J0aW5nIGF0ICVzIGxpbmUgJWQgaW4gJXNcbiIKIG1zZ3N0ciAiJVA6IGludGVybnQgZmVsOiBhdmJyeXRlciB2aWQgJXMgcmFkICVkIGkgJXNcbiIKIAotIzogbGRtaXNjLmM6NTE2CisjOiBsZG1pc2MuYzo0ODcKIG1zZ2lkICIlUDogaW50ZXJuYWwgZXJyb3I6IGFib3J0aW5nIGF0ICVzIGxpbmUgJWRcbiIKIG1zZ3N0ciAiJVA6IGludGVybnQgZmVsOiBhdmJyeXRlciB2aWQgJXMgcmFkICVkXG4iCiAKLSM6IGxkbWlzYy5jOjUxOAorIzogbGRtaXNjLmM6NDg5CiBtc2dpZCAiJVAlRjogcGxlYXNlIHJlcG9ydCB0aGlzIGJ1Z1xuIgogbXNnc3RyICIlUCVGOiByYXBwb3J0ZXJhIGRldHRhIGZlbFxuIgogCiAjLiBPdXRwdXQgZm9yIG5vaXN5ID09IDIgaXMgaW50ZW5kZWQgdG8gZm9sbG93IHRoZSBHTlUgc3RhbmRhcmRzLgotIzogbGR2ZXIuYzozOAorIzogbGR2ZXIuYzozOQogIywgYy1mb3JtYXQKIG1zZ2lkICJHTlUgbGQgdmVyc2lvbiAlc1xuIgogbXNnc3RyICJHTlUgbGQgdmVyc2lvbiAlc1xuIgogCi0jOiBsZHZlci5jOjQyCisjOiBsZHZlci5jOjQzCiBtc2dpZCAiQ29weXJpZ2h0IDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuXG4iCiBtc2dzdHIgIkNvcHlyaWdodCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLlxuIgogCi0jOiBsZHZlci5jOjQzCisjOiBsZHZlci5jOjQ0CiBtc2dpZCAiIgogIlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgbWF5IHJlZGlzdHJpYnV0ZSBpdCB1bmRlciB0aGUgdGVybXMgb2ZcbiIKICJ0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIHByb2dyYW0gaGFzIGFic29sdXRlbHkgbm8gd2FycmFudHkuXG4iCkBAIC0xMDE3LDM3MSArMTA1NSwzOTggQEAKICJ2aWxsa29yZW4gaSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gRGV0dGEgcHJvZ3JhbSBoYXIgaW5nZW4gc29tXG4iCiAiaGVsc3QgZ2FyYW50aS5cbiIKIAotIzogbGR2ZXIuYzo1MgorIzogbGR2ZXIuYzo1MwogbXNnaWQgIiAgU3VwcG9ydGVkIGVtdWxhdGlvbnM6XG4iCiBtc2dzdHIgIiAgRW11bGVyaW5nYXIgc29tIHN09mRzOlxuIgogCi0jOiBsZHdyaXRlLmM6NTkgbGR3cml0ZS5jOjE5NQorIzogbGR3cml0ZS5jOjU0IGxkd3JpdGUuYzoxOTAKIG1zZ2lkICIlUCVGOiBiZmRfbmV3X2xpbmtfb3JkZXIgZmFpbGVkXG4iCiBtc2dzdHIgIiVQJUY6IGJmZF9uZXdfbGlua19vcmRlciBtaXNzbHlja2FkZXNcbiIKIAotIzogbGR3cml0ZS5jOjMyNQorIzogbGR3cml0ZS5jOjMxMAogbXNnaWQgIiVGJVA6IGNsb25lIHNlY3Rpb24gZmFpbGVkOiAlRVxuIgogbXNnc3RyICIlRiVQOiBrbG9uc2VrdGlvbiBtaXNzbHlja2FkZXM6ICVFXG4iCiAKLSM6IGxkd3JpdGUuYzozNjQKKyM6IGxkd3JpdGUuYzozNDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJTh4IHNvbWV0aGluZyBlbHNlXG4iCiBtc2dzdHIgIiU4eCBu5WdvbnRpbmcgYW5uYXRcbiIKIAotIzogbGR3cml0ZS5jOjU0NworIzogbGR3cml0ZS5jOjUyNQogbXNnaWQgIiVGJVA6IGZpbmFsIGxpbmsgZmFpbGVkOiAlRVxuIgogbXNnc3RyICIlRiVQOiBhdnNsdXRhbmRlIGzkbmtuaW5nIG1pc3NseWNrYWRlczogJUVcbiIKIAotIzogbGV4c3VwLmM6MTcyIGxleHN1cC5jOjI2NworIzogbGV4c3VwLmM6MTc5IGxleHN1cC5jOjI4NAogbXNnaWQgIktFWVdPUkQiCiBtc2dzdHIgIk5ZQ0tFTE9SRCIKIAotIzogbGV4c3VwLmM6MTcyCisjOiBsZXhzdXAuYzoxNzkKIG1zZ2lkICJTaGFyZWQgbGlicmFyeSBjb250cm9sIGZvciBIUC9VWCBjb21wYXRpYmlsaXR5IgogbXNnc3RyICJTdHlybmluZyBhdiBkZWxhZGUgYmlibGlvdGVrIGb2ciBrb21wYXRpYmlsaXRldCBtZWQgSFAvVVgiCiAKLSM6IGxleHN1cC5jOjE3NQorIzogbGV4c3VwLmM6MTgyCiBtc2dpZCAiQVJDSCIKIG1zZ3N0ciAiQVJLIgogCi0jOiBsZXhzdXAuYzoxNzUKKyM6IGxleHN1cC5jOjE4MgogbXNnaWQgIlNldCBhcmNoaXRlY3R1cmUiCiBtc2dzdHIgIlN05GxsIGluIGFya2l0ZWt0dXIiCiAKLSM6IGxleHN1cC5jOjE3NyBsZXhzdXAuYzozMzYKKyM6IGxleHN1cC5jOjE4NCBsZXhzdXAuYzozNTcKIG1zZ2lkICJUQVJHRVQiCiBtc2dzdHIgIk3FTCIKIAotIzogbGV4c3VwLmM6MTc3CisjOiBsZXhzdXAuYzoxODQKIG1zZ2lkICJTcGVjaWZ5IHRhcmdldCBmb3IgZm9sbG93aW5nIGlucHV0IGZpbGVzIgogbXNnc3RyICJBbmdlIG3lbCBm9nIgZvZsamFuZGUgaW5kYXRhZmlsZXIiCiAKLSM6IGxleHN1cC5jOjE3OSBsZXhzdXAuYzoyMjAgbGV4c3VwLmM6MjMyIGxleHN1cC5jOjI0MSBsZXhzdXAuYzozMTIKLSM6IGxleHN1cC5jOjM0MyBsZXhzdXAuYzozODMKKyM6IGxleHN1cC5jOjE4NiBsZXhzdXAuYzoyMjkgbGV4c3VwLmM6MjQxIGxleHN1cC5jOjI1NCBsZXhzdXAuYzozMjkKKyM6IGxleHN1cC5jOjM2NCBsZXhzdXAuYzo0MDgKIG1zZ2lkICJGSUxFIgogbXNnc3RyICJGSUwiCiAKLSM6IGxleHN1cC5jOjE3OQorIzogbGV4c3VwLmM6MTg2CiBtc2dpZCAiUmVhZCBNUkkgZm9ybWF0IGxpbmtlciBzY3JpcHQiCiBtc2dzdHIgIkzkcyBs5G5rc2tyaXB0IGkgTVJJLWZvcm1hdCIKIAotIzogbGV4c3VwLmM6MTgxCisjOiBsZXhzdXAuYzoxODgKIG1zZ2lkICJGb3JjZSBjb21tb24gc3ltYm9scyB0byBiZSBkZWZpbmVkIgogbXNnc3RyICJUdmluZ2EgZ2VtZW5zYW1tYSBzeW1ib2xlciBhdHQgdmFyYSBkZWZpbmllcmFkZSIKIAotIzogbGV4c3VwLmM6MTg1IGxleHN1cC5jOjM3MyBsZXhzdXAuYzozNzUgbGV4c3VwLmM6Mzc3CisjOiBsZXhzdXAuYzoxOTIgbGV4c3VwLmM6Mzk4IGxleHN1cC5jOjQwMCBsZXhzdXAuYzo0MDIKIG1zZ2lkICJBRERSRVNTIgogbXNnc3RyICJBRFJFU1MiCiAKLSM6IGxleHN1cC5jOjE4NQorIzogbGV4c3VwLmM6MTkyCiBtc2dpZCAiU2V0IHN0YXJ0IGFkZHJlc3MiCiBtc2dzdHIgIlN05GxsIGluIHN0YXJ0YWRyZXNzIgogCi0jOiBsZXhzdXAuYzoxODcKKyM6IGxleHN1cC5jOjE5NAogbXNnaWQgIkV4cG9ydCBhbGwgZHluYW1pYyBzeW1ib2xzIgogbXNnc3RyICJFeHBvcnRlcmEgYWxsYSBkeW5hbWlza2Egc3ltYm9sZXIiCiAKLSM6IGxleHN1cC5jOjE4OQorIzogbGV4c3VwLmM6MTk2CiBtc2dpZCAiTGluayBiaWctZW5kaWFuIG9iamVjdHMiCiBtc2dzdHIgIkzkbmthIG9iamVrdCBzb20g5HIgYmlnLWVuZGlhbiIKIAotIzogbGV4c3VwLmM6MTkxCisjOiBsZXhzdXAuYzoxOTgKIG1zZ2lkICJMaW5rIGxpdHRsZS1lbmRpYW4gb2JqZWN0cyIKIG1zZ3N0ciAiTORua2Egb2JqZWt0IHNvbSDkciBsaXR0bGUtZW5kaWFuIgogCi0jOiBsZXhzdXAuYzoxOTMgbGV4c3VwLmM6MTk2CisjOiBsZXhzdXAuYzoyMDAgbGV4c3VwLmM6MjAzCiBtc2dpZCAiU0hMSUIiCiBtc2dzdHIgIkRFTEJJQkwiCiAKLSM6IGxleHN1cC5jOjE5MworIzogbGV4c3VwLmM6MjAwCiBtc2dpZCAiQXV4aWxpYXJ5IGZpbHRlciBmb3Igc2hhcmVkIG9iamVjdCBzeW1ib2wgdGFibGUiCiBtc2dzdHIgIll0dHJlIGZpbHRlciBm9nIgc3ltYm9sdGFiZWxsIPZ2ZXIgZGVsYWRlIG9iamVrdCIKIAotIzogbGV4c3VwLmM6MTk2CisjOiBsZXhzdXAuYzoyMDMKIG1zZ2lkICJGaWx0ZXIgZm9yIHNoYXJlZCBvYmplY3Qgc3ltYm9sIHRhYmxlIgogbXNnc3RyICJGaWx0ZXIgZvZyIHN5bWJvbHRhYmVsbCD2dmVyIGRlbGFkZSBvYmpla3QiCiAKLSM6IGxleHN1cC5jOjE5OAorIzogbGV4c3VwLmM6MjA1CiBtc2dpZCAiSWdub3JlZCIKIG1zZ3N0ciAiSWdub3JlcmFkIgogCi0jOiBsZXhzdXAuYzoyMDAKKyM6IGxleHN1cC5jOjIwNwogbXNnaWQgIlNJWkUiCiBtc2dzdHIgIlNUT1JMRUsiCiAKLSM6IGxleHN1cC5jOjIwMAorIzogbGV4c3VwLmM6MjA3CiBtc2dpZCAiU21hbGwgZGF0YSBzaXplIChpZiBubyBzaXplLCBzYW1lIGFzIC0tc2hhcmVkKSIKIG1zZ3N0ciAiTGl0ZW4gZGF0YXN0b3JsZWsgKG9tIGluZ2VuIHN0b3JsZWssIHNhbW1hIHNvbSAtLXNoYXJlZCkiCiAKLSM6IGxleHN1cC5jOjIwMworIzogbGV4c3VwLmM6MjEwCiBtc2dpZCAiRklMRU5BTUUiCiBtc2dzdHIgIkZJTE5BTU4iCiAKLSM6IGxleHN1cC5jOjIwMworIzogbGV4c3VwLmM6MjEwCiBtc2dpZCAiU2V0IGludGVybmFsIG5hbWUgb2Ygc2hhcmVkIGxpYnJhcnkiCiBtc2dzdHIgIlN05GxsIGluIGludGVybnQgbmFtbiBw5SBkZWxhdCBiaWJsaW90ZWsiCiAKLSM6IGxleHN1cC5jOjIwNQorIzogbGV4c3VwLmM6MjEyCiBtc2dpZCAiUFJPR1JBTSIKIG1zZ3N0ciAiUFJPR1JBTSIKIAotIzogbGV4c3VwLmM6MjA1CisjOiBsZXhzdXAuYzoyMTIKIG1zZ2lkICJTZXQgUFJPR1JBTSBhcyB0aGUgZHluYW1pYyBsaW5rZXIgdG8gdXNlIgogbXNnc3RyICJTdORsbCBpbiBQUk9HUkFNIHNvbSBkZW4gZHluYW1pc2thIGzkbmthcmUgc29tIHNrYSBhbnbkbmRhcyIKIAotIzogbGV4c3VwLmM6MjA3CisjOiBsZXhzdXAuYzoyMTQKIG1zZ2lkICJMSUJOQU1FIgogbXNnc3RyICJCSUJMTkFNTiIKIAotIzogbGV4c3VwLmM6MjA3CisjOiBsZXhzdXAuYzoyMTQKIG1zZ2lkICJTZWFyY2ggZm9yIGxpYnJhcnkgTElCTkFNRSIKIG1zZ3N0ciAiU/ZrIGVmdGVyIGJpYmxpb3Rla2V0IEJJQkxOQU1OIgogCi0jOiBsZXhzdXAuYzoyMDkKKyM6IGxleHN1cC5jOjIxNgogbXNnaWQgIkRJUkVDVE9SWSIKIG1zZ3N0ciAiS0FUQUxPRyIKIAotIzogbGV4c3VwLmM6MjA5CisjOiBsZXhzdXAuYzoyMTYKIG1zZ2lkICJBZGQgRElSRUNUT1JZIHRvIGxpYnJhcnkgc2VhcmNoIHBhdGgiCiBtc2dzdHIgIkzkZ2cgdGlsbCBLQVRBTE9HIHRpbGwgYmlibGlvdGVrc3P2a3bkZ2VuIgogCi0jOiBsZXhzdXAuYzoyMTEKKyM6IGxleHN1cC5jOjIxOAogbXNnaWQgIkVNVUxBVElPTiIKIG1zZ3N0ciAiRU1VTEVSSU5HIgogCi0jOiBsZXhzdXAuYzoyMTEKKyM6IGxleHN1cC5jOjIxOAogbXNnaWQgIlNldCBlbXVsYXRpb24iCiBtc2dzdHIgIlN05GxsIGluIGVtdWxlcmluZyIKIAotIzogbGV4c3VwLmM6MjEzCisjOiBsZXhzdXAuYzoyMjAKIG1zZ2lkICJQcmludCBtYXAgZmlsZSBvbiBzdGFuZGFyZCBvdXRwdXQiCiBtc2dzdHIgIlZpc2EgdGFiZWxsZmlsIHDlIHN0YW5kYXJkIHV0IgogCi0jOiBsZXhzdXAuYzoyMTUKKyM6IGxleHN1cC5jOjIyMgogbXNnaWQgIkRvIG5vdCBwYWdlIGFsaWduIGRhdGEiCiBtc2dzdHIgIkp1c3RlcmEgaW50ZSBkYXRhIGVmdGVyIGrkbW5hIHNpZG9yIgogCi0jOiBsZXhzdXAuYzoyMTcKKyM6IGxleHN1cC5jOjIyNAogbXNnaWQgIkRvIG5vdCBwYWdlIGFsaWduIGRhdGEsIGRvIG5vdCBtYWtlIHRleHQgcmVhZG9ubHkiCiBtc2dzdHIgIkp1c3RlcmEgaW50ZSBkYXRhIGVmdGVyIGrkbW5hIHNpZG9yLCBn9nIgaW50ZSB0ZXh0ZW4gZW5kYXN0IGzkc2JhciIKIAotIzogbGV4c3VwLmM6MjIwCisjOiBsZXhzdXAuYzoyMjcKK21zZ2lkICJQYWdlIGFsaWduIGRhdGEsIG1ha2UgdGV4dCByZWFkb25seSIKK21zZ3N0ciAiU2lkanVzdGVyYSBkYXRhLCBn9nIgdGV4dGVuIGVuZGFzdCBs5HNiYXIiCisKKyM6IGxleHN1cC5jOjIyOQogbXNnaWQgIlNldCBvdXRwdXQgZmlsZSBuYW1lIgogbXNnc3RyICJTdORsbCBpbiB1dGRhdGFmaWxuYW1uZXQiCiAKLSM6IGxleHN1cC5jOjIyMgorIzogbGV4c3VwLmM6MjMxCiBtc2dpZCAiT3B0aW1pemUgb3V0cHV0IGZpbGUiCiBtc2dzdHIgIk9wdGltZXJhIHV0ZGF0YWZpbCIKIAotIzogbGV4c3VwLmM6MjI0CisjOiBsZXhzdXAuYzoyMzMKIG1zZ2lkICJJZ25vcmVkIGZvciBTVlI0IGNvbXBhdGliaWxpdHkiCiBtc2dzdHIgIklnbm9yZXJhZCBm9nIga29tcGF0aWJpbGl0ZXQgbWVkIFNWUjQiCiAKLSM6IGxleHN1cC5jOjIyOAotbXNnaWQgIkdlbmVyYXRlIHJlbG9jYXRlYWJsZSBvdXRwdXQiCisjOiBsZXhzdXAuYzoyMzcKK21zZ2lkICJHZW5lcmF0ZSByZWxvY2F0YWJsZSBvdXRwdXQiCiBtc2dzdHIgIkdlbmVyZXJhIG9tbG9rYWxpc2VyaW5nc2JhciB1dGRhdGEiCiAKLSM6IGxleHN1cC5jOjIzMgorIzogbGV4c3VwLmM6MjQxCiBtc2dpZCAiSnVzdCBsaW5rIHN5bWJvbHMgKGlmIGRpcmVjdG9yeSwgc2FtZSBhcyAtLXJwYXRoKSIKIG1zZ3N0ciAiTORua2EgYmFyYSBzeW1ib2xlciAob20ga2F0YWxvZywgc2FtbWEgc29tIC0tcnBhdGgpIgogCi0jOiBsZXhzdXAuYzoyMzUKKyM6IGxleHN1cC5jOjI0NAogbXNnaWQgIlN0cmlwIGFsbCBzeW1ib2xzIgogbXNnc3RyICJUYSBib3J0IGFsbGEgc3ltYm9sZXIiCiAKLSM6IGxleHN1cC5jOjIzNworIzogbGV4c3VwLmM6MjQ2CiBtc2dpZCAiU3RyaXAgZGVidWdnaW5nIHN5bWJvbHMiCiBtc2dzdHIgIlRhIGJvcnQgZmVsc/ZrbmluZ3NzeW1ib2xlciIKIAotIzogbGV4c3VwLmM6MjM5CisjOiBsZXhzdXAuYzoyNDgKK21zZ2lkICJTdHJpcCBzeW1ib2xzIGluIGRpc2NhcmRlZCBzZWN0aW9ucyIKK21zZ3N0ciAiVGEgYm9ydCBzeW1ib2xlciBpIGthc3RhZGUgc2VrdGlvbmVyIgorCisjOiBsZXhzdXAuYzoyNTAKK21zZ2lkICJEbyBub3Qgc3RyaXAgc3ltYm9scyBpbiBkaXNjYXJkZWQgc2VjdGlvbnMiCittc2dzdHIgIlRhIGludGUgYm9ydCBzeW1ib2xlciBpIGthc3RhZGUgc2VrdGlvbmVyIgorCisjOiBsZXhzdXAuYzoyNTIKIG1zZ2lkICJUcmFjZSBmaWxlIG9wZW5zIgogbXNnc3RyICJTcOVyYSBmaWz2cHBuaW5nYXIiCiAKLSM6IGxleHN1cC5jOjI0MQorIzogbGV4c3VwLmM6MjU0CiBtc2dpZCAiUmVhZCBsaW5rZXIgc2NyaXB0IgogbXNnc3RyICJM5HMgbORua3NrcmlwdCIKIAotIzogbGV4c3VwLmM6MjQzIGxleHN1cC5jOjI1OSBsZXhzdXAuYzoyOTggbGV4c3VwLmM6MzEwIGxleHN1cC5jOjM2NwotIzogbGV4c3VwLmM6Mzg2IGxleHN1cC5jOjQwNgorIzogbGV4c3VwLmM6MjU2IGxleHN1cC5jOjI3MiBsZXhzdXAuYzozMTUgbGV4c3VwLmM6MzI3IGxleHN1cC5jOjM5MgorIzogbGV4c3VwLmM6NDExIGxleHN1cC5jOjQzMQogbXNnaWQgIlNZTUJPTCIKIG1zZ3N0ciAiU1lNQk9MIgogCi0jOiBsZXhzdXAuYzoyNDMKKyM6IGxleHN1cC5jOjI1NgogbXNnaWQgIlN0YXJ0IHdpdGggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBTWU1CT0wiCiBtc2dzdHIgIkL2cmphIG1lZCBvZGVmaW5pZXJhZCByZWZlcmVucyB0aWxsIFNZTUJPTCIKIAotIzogbGV4c3VwLmM6MjQ1CisjOiBsZXhzdXAuYzoyNTgKIG1zZ2lkICJbPVNFQ1RJT05dIgogbXNnc3RyICJbPVNFS1RJT05dIgogCi0jOiBsZXhzdXAuYzoyNDUKKyM6IGxleHN1cC5jOjI1OAogbXNnaWQgIkRvbid0IG1lcmdlIGlucHV0IFtTRUNUSU9OIHwgb3JwaGFuXSBzZWN0aW9ucyIKIG1zZ3N0ciAiU2zlIGludGUgc2FtbWFuIFtTRUtUSU9OIHwgZvZy5GxkcmFs9nNhXSBzZWt0aW9uZXIiCiAKLSM6IGxleHN1cC5jOjI0NworIzogbGV4c3VwLmM6MjYwCiBtc2dpZCAiQnVpbGQgZ2xvYmFsIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgdGFibGVzIgogbXNnc3RyICJCeWdnIGdsb2JhbGEga29uc3RydWt0b3JzLS9kZXN0cnVrdG9yc3RhYmVsbGVyIgogCi0jOiBsZXhzdXAuYzoyNDkKKyM6IGxleHN1cC5jOjI2MgogbXNnaWQgIlByaW50IHZlcnNpb24gaW5mb3JtYXRpb24iCiBtc2dzdHIgIlZpc2EgdmVyc2lvbnNpbmZvcm1hdGlvbiIKIAotIzogbGV4c3VwLmM6MjUxCisjOiBsZXhzdXAuYzoyNjQKIG1zZ2lkICJQcmludCB2ZXJzaW9uIGFuZCBlbXVsYXRpb24gaW5mb3JtYXRpb24iCiBtc2dzdHIgIlZpc2EgdmVyc2lvbnMtIG9jaCBlbXVsZXJpbmdzaW5mb3JtYXRpb24iCiAKLSM6IGxleHN1cC5jOjI1MworIzogbGV4c3VwLmM6MjY2CiBtc2dpZCAiRGlzY2FyZCBhbGwgbG9jYWwgc3ltYm9scyIKIG1zZ3N0ciAiS2FzdGEgYWxsYSBsb2thbGEgc3ltYm9sZXIiCiAKLSM6IGxleHN1cC5jOjI1NQorIzogbGV4c3VwLmM6MjY4CiBtc2dpZCAiRGlzY2FyZCB0ZW1wb3JhcnkgbG9jYWwgc3ltYm9scyAoZGVmYXVsdCkiCiBtc2dzdHIgIkthc3RhIHRlbXBvcuRyYSBsb2thbGEgc3ltYm9sZXIgKHN0YW5kYXJkKSIKIAotIzogbGV4c3VwLmM6MjU3CisjOiBsZXhzdXAuYzoyNzAKIG1zZ2lkICJEb24ndCBkaXNjYXJkIGFueSBsb2NhbCBzeW1ib2xzIgogbXNnc3RyICJLYXN0YSBpbnRlIG7lZ3JhIGxva2FsYSBzeW1ib2xlciIKIAotIzogbGV4c3VwLmM6MjU5CisjOiBsZXhzdXAuYzoyNzIKIG1zZ2lkICJUcmFjZSBtZW50aW9ucyBvZiBTWU1CT0wiCiBtc2dzdHIgIlNw5XJhIG9tbuRtbmluZ2FyIGF2IFNZTUJPTCIKIAotIzogbGV4c3VwLmM6MjYxIGxleHN1cC5jOjM0NSBsZXhzdXAuYzozNDcKKyM6IGxleHN1cC5jOjI3NCBsZXhzdXAuYzozNjYgbGV4c3VwLmM6MzY4CiBtc2dpZCAiUEFUSCIKIG1zZ3N0ciAiU9ZLVsRHIgogCi0jOiBsZXhzdXAuYzoyNjEKKyM6IGxleHN1cC5jOjI3NAogbXNnaWQgIkRlZmF1bHQgc2VhcmNoIHBhdGggZm9yIFNvbGFyaXMgY29tcGF0aWJpbGl0eSIKIG1zZ3N0ciAiU3RhbmRhcmRz9mt25GcgZvZyIFNvbGFyaXMta29tcGF0aWJpbGl0ZXQiCiAKLSM6IGxleHN1cC5jOjI2MworIzogbGV4c3VwLmM6Mjc2CiBtc2dpZCAiU3RhcnQgYSBncm91cCIKIG1zZ3N0ciAiU3RhcnRhIGVuIGdydXBwIgogCi0jOiBsZXhzdXAuYzoyNjUKKyM6IGxleHN1cC5jOjI3OAogbXNnaWQgIkVuZCBhIGdyb3VwIgogbXNnc3RyICJTbHV0YSBlbiBncnVwcCIKIAotIzogbGV4c3VwLmM6MjY3CisjOiBsZXhzdXAuYzoyODAKK21zZ2lkICJBY2NlcHQgaW5wdXQgZmlsZXMgd2hvc2UgYXJjaGl0ZWN0dXJlIGNhbm5vdCBiZSBkZXRlcm1pbmVkIgorbXNnc3RyICJBY2NlcHRlcmEgaW5kYXRhZmlsZXIgdmFycyBhcmtpdGVrdHVyIGludGUga2FuIGF2Z/ZyYXMiCisKKyM6IGxleHN1cC5jOjI4MgorbXNnaWQgIlJlamVjdCBpbnB1dCBmaWxlcyB3aG9zZSBhcmNoaXRlY3R1cmUgaXMgdW5rbm93biIKK21zZ3N0ciAiQXZ2aXNhIGluZGF0YWZpbGVyIHZhcnMgYXJraXRla3R1ciDkciBva+RuZCIKKworIzogbGV4c3VwLmM6Mjg0CiBtc2dpZCAiSWdub3JlZCBmb3IgU3VuT1MgY29tcGF0aWJpbGl0eSIKIG1zZ3N0ciAiSWdub3JlcmFkIGb2ciBTdW5PUy1rb21wYXRpYmlsaXRldCIKIAotIzogbGV4c3VwLmM6MjY5CisjOiBsZXhzdXAuYzoyODYKIG1zZ2lkICJMaW5rIGFnYWluc3Qgc2hhcmVkIGxpYnJhcmllcyIKIG1zZ3N0ciAiTORua2EgbW90IGRlbGFkZSBiaWJsaW90ZWsiCiAKLSM6IGxleHN1cC5jOjI3NQorIzogbGV4c3VwLmM6MjkyCiBtc2dpZCAiRG8gbm90IGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyaWVzIgogbXNnc3RyICJM5G5rYSBpbnRlIG1vdCBkZWxhZGUgYmlibGlvdGVrIgogCi0jOiBsZXhzdXAuYzoyODMKKyM6IGxleHN1cC5jOjMwMAogbXNnaWQgIkJpbmQgZ2xvYmFsIHJlZmVyZW5jZXMgbG9jYWxseSIKIG1zZ3N0ciAiQmluZCBnbG9iYWxhIHJlZmVyZW5zZXIgbG9rYWx0IgogCi0jOiBsZXhzdXAuYzoyODUKKyM6IGxleHN1cC5jOjMwMgogbXNnaWQgIkNoZWNrIHNlY3Rpb24gYWRkcmVzc2VzIGZvciBvdmVybGFwcyAoZGVmYXVsdCkiCiBtc2dzdHIgIktvbnRyb2xsZXJhIHNla3Rpb25zYWRyZXNzZXIgZvZyIPZ2ZXJsYXBwbmluZ2FyIChzdGFuZGFyZCkiCiAKLSM6IGxleHN1cC5jOjI4NworIzogbGV4c3VwLmM6MzA0CiBtc2dpZCAiRG8gbm90IGNoZWNrIHNlY3Rpb24gYWRkcmVzc2VzIGZvciBvdmVybGFwcyIKIG1zZ3N0ciAiS29udHJvbGxlcmEgaW50ZSBzZWt0aW9uc2FkcmVzc2VyIGb2ciD2dmVybGFwcG5pbmdhciIKIAotIzogbGV4c3VwLmM6MjkwCisjOiBsZXhzdXAuYzozMDcKIG1zZ2lkICJPdXRwdXQgY3Jvc3MgcmVmZXJlbmNlIHRhYmxlIgogbXNnc3RyICJTa2FwYSBrb3JzcmVmZXJlbnN0YWJlbGwiCiAKLSM6IGxleHN1cC5jOjI5MgorIzogbGV4c3VwLmM6MzA5CiBtc2dpZCAiU1lNQk9MPUVYUFJFU1NJT04iCiBtc2dzdHIgIlNZTUJPTD1VVFRSWUNLIgogCi0jOiBsZXhzdXAuYzoyOTIKKyM6IGxleHN1cC5jOjMwOQogbXNnaWQgIkRlZmluZSBhIHN5bWJvbCIKIG1zZ3N0ciAiRGVmaW5pZXJhIGVuIHN5bWJvbCIKIAotIzogbGV4c3VwLmM6Mjk0CisjOiBsZXhzdXAuYzozMTEKIG1zZ2lkICJbPVNUWUxFXSIKIG1zZ3N0ciAiWz1TVElMXSIKIAotIzogbGV4c3VwLmM6Mjk0CisjOiBsZXhzdXAuYzozMTEKIG1zZ2lkICJEZW1hbmdsZSBzeW1ib2wgbmFtZXMgW3VzaW5nIFNUWUxFXSIKIG1zZ3N0ciAiQXZrb2RhIHN5bWJvbG5hbW4gW2FuduRuZCBTVElMXSIKIAotIzogbGV4c3VwLmM6Mjk2CisjOiBsZXhzdXAuYzozMTMKIG1zZ2lkICJHZW5lcmF0ZSBlbWJlZGRlZCByZWxvY3MiCiBtc2dzdHIgIkdlbmVyZXJhIGluYuRkZGFkZSBvbWxva2FsaXNlcmluZ2FyIgogCi0jOiBsZXhzdXAuYzoyOTgKKyM6IGxleHN1cC5jOjMxNQogbXNnaWQgIkNhbGwgU1lNQk9MIGF0IHVubG9hZC10aW1lIgogbXNnc3RyICJBbnJvcGEgU1lNQk9MIHZpZCB1cmxhZGRuaW5nIgogCi0jOiBsZXhzdXAuYzozMDAKKyM6IGxleHN1cC5jOjMxNwogbXNnaWQgIkZvcmNlIGdlbmVyYXRpb24gb2YgZmlsZSB3aXRoIC5leGUgc3VmZml4IgogbXNnc3RyICJUdmluZ2EgZ2VuZXJlcmluZyBhdiBmaWwgbWVkIORuZGVsc2VuIC5leGUiCiAKLSM6IGxleHN1cC5jOjMwMgorIzogbGV4c3VwLmM6MzE5CiBtc2dpZCAiUmVtb3ZlIHVudXNlZCBzZWN0aW9ucyAob24gc29tZSB0YXJnZXRzKSIKIG1zZ3N0ciAiVGEgYm9ydCBvYW525G5kYSBzZWt0aW9uZXIgKHDlIHZpc3NhIG3lbCkiCiAKLSM6IGxleHN1cC5jOjMwNQorIzogbGV4c3VwLmM6MzIyCiBtc2dpZCAiRG9uJ3QgcmVtb3ZlIHVudXNlZCBzZWN0aW9ucyAoZGVmYXVsdCkiCiBtc2dzdHIgIlRhIGludGUgYm9ydCBvYW525G5kYSBzZWt0aW9uZXIgKHN0YW5kYXJkKSIKIAotIzogbGV4c3VwLmM6MzA4CisjOiBsZXhzdXAuYzozMjUKIG1zZ2lkICJQcmludCBvcHRpb24gaGVscCIKIG1zZ3N0ciAiVmlzYSBoauRscCBvbSBmbGFnZ29yIgogCi0jOiBsZXhzdXAuYzozMTAKKyM6IGxleHN1cC5jOjMyNwogbXNnaWQgIkNhbGwgU1lNQk9MIGF0IGxvYWQtdGltZSIKIG1zZ3N0ciAiQW5yb3BhIFNZTUJPTCB2aWQgaW5s5HNuaW5nIgogCi0jOiBsZXhzdXAuYzozMTIKKyM6IGxleHN1cC5jOjMyOQogbXNnaWQgIldyaXRlIGEgbWFwIGZpbGUiCiBtc2dzdHIgIlNrcml2IGVuIHRhYmVsbGZpbCIKIAotIzogbGV4c3VwLmM6MzE0CisjOiBsZXhzdXAuYzozMzEKIG1zZ2lkICJEbyBub3QgZGVmaW5lIENvbW1vbiBzdG9yYWdlIgogbXNnc3RyICJEZWZpbmllcmEgaW50ZSBnZW1lbnNhbSBsYWdyaW5nIgogCi0jOiBsZXhzdXAuYzozMTYKKyM6IGxleHN1cC5jOjMzMwogbXNnaWQgIkRvIG5vdCBkZW1hbmdsZSBzeW1ib2wgbmFtZXMiCiBtc2dzdHIgIkF2a29kYSBpbnRlIHN5bWJvbG5hbW4iCiAKLSM6IGxleHN1cC5jOjMxOAorIzogbGV4c3VwLmM6MzM1CiBtc2dpZCAiVXNlIGxlc3MgbWVtb3J5IGFuZCBtb3JlIGRpc2sgSS9PIgogbXNnc3RyICJBbnbkbmQgbWluZHJlIG1pbm5lIG9jaCBtZXIgZGlzay1JL08iCiAKLSM6IGxleHN1cC5jOjMyMAorIzogbGV4c3VwLmM6MzM3CiBtc2dpZCAiQWxsb3cgbm8gdW5kZWZpbmVkIHN5bWJvbHMiCiBtc2dzdHIgIlRpbGzldCBpbmdhIG9kZWZpbmllcmFkZSBzeW1ib2xlciIKIAotIzogbGV4c3VwLmM6MzIyCi1tc2dpZCAiQWxsb3cgdW5kZWZpbmVkIHN5bWJvbHMgaW4gc2hhcmVkIG9iamVjdHMiCi1tc2dzdHIgIlRpbGzldCBvZGVmaW5pZXJhZGUgc3ltYm9sZXIgaSBkZWxhZGUgb2JqZWt0IgorIzogbGV4c3VwLmM6MzM5Cittc2dpZCAiQWxsb3cgdW5kZWZpbmVkIHN5bWJvbHMgaW4gc2hhcmVkIG9iamVjdHMgKHRoZSBkZWZhdWx0KSIKK21zZ3N0ciAiVGlsbOV0IG9kZWZpbmllcmFkZSBzeW1ib2xlciBpIGRlbGFkZSBvYmpla3QgKHN0YW5kYXJkYWx0ZXJuYXRpdmV0KSIKIAotIzogbGV4c3VwLmM6MzI0CisjOiBsZXhzdXAuYzozNDEKK21zZ2lkICJEbyBub3QgYWxsb3cgdW5kZWZpbmVkIHN5bWJvbHMgaW4gc2hhcmVkIG9iamVjdHMiCittc2dzdHIgIlRpbGzldCBpbnRlIG9kZWZpbmllcmFkZSBzeW1ib2xlciBpIGRlbGFkZSBvYmpla3QiCisKKyM6IGxleHN1cC5jOjM0MwogbXNnaWQgIkFsbG93IG11bHRpcGxlIGRlZmluaXRpb25zIgogbXNnc3RyICJUaWxs5XQgZmxlcmEgZGVmaW50aW9uZXIiCiAKLSMgc3JjL3ByZWZzLmM6MTcwCi0jOiBsZXhzdXAuYzozMjYKKyM6IGxleHN1cC5jOjM0NQorbXNnaWQgIkRpc2FsbG93IHVuZGVmaW5lZCB2ZXJzaW9uIgorbXNnc3RyICJUaWxs5XQgaW50ZSBvZGVmaW5pZXJhZCB2ZXJzaW9uIgorCisjOiBsZXhzdXAuYzozNDcKIG1zZ2lkICJEb24ndCB3YXJuIGFib3V0IG1pc21hdGNoZWQgaW5wdXQgZmlsZXMiCiBtc2dzdHIgIlZhcm5hIGludGUgb20gb3Bhc3NhbmRlIGluZGF0YWZpbGVyIgogCi0jOiBsZXhzdXAuYzozMjgKKyM6IGxleHN1cC5jOjM0OQogbXNnaWQgIlR1cm4gb2ZmIC0td2hvbGUtYXJjaGl2ZSIKIG1zZ3N0ciAiU2zlIGF2IC0tLXdob2xlLWFyY2hpdmUiCiAKLSM6IGxleHN1cC5jOjMzMAorIzogbGV4c3VwLmM6MzUxCiBtc2dpZCAiQ3JlYXRlIGFuIG91dHB1dCBmaWxlIGV2ZW4gaWYgZXJyb3JzIG9jY3VyIgogbXNnc3RyICJTa2FwYSBlbiB1dGRhdGFmaWwg5HZlbiBvbSBmZWwgZvZyZWtvbW1lciIKIAotIzogbGV4c3VwLmM6MzM0CisjOiBsZXhzdXAuYzozNTUKIG1zZ2lkICIiCiAiT25seSB1c2UgbGlicmFyeSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgb25cbiIKICJcdFx0XHRcdHRoZSBjb21tYW5kIGxpbmUiCkBAIC0xMzg5LDEwNyArMTQ1NCwxMTEgQEAKICJBbnbkbmQgZW5kYXN0IGJpYmxpb3Rla3NrYXRhbG9nZXIgc29tIGFuZ2VzXG4iCiAiXHRcdFx0XHRw5SBrb21tYW5kb3JhZGVuIgogCi0jOiBsZXhzdXAuYzozMzYKKyM6IGxleHN1cC5jOjM1NwogbXNnaWQgIlNwZWNpZnkgdGFyZ2V0IG9mIG91dHB1dCBmaWxlIgogbXNnc3RyICJBbmdlIG3lbCBm9nIgdXRkYXRhZmlsIgogCi0jOiBsZXhzdXAuYzozMzgKKyM6IGxleHN1cC5jOjM1OQogbXNnaWQgIklnbm9yZWQgZm9yIExpbnV4IGNvbXBhdGliaWxpdHkiCiBtc2dzdHIgIklnbm9yZXJhZCBm9nIga29tcGF0aWJpbGl0ZXQgbWVkIExpbnV4IgogCi0jOiBsZXhzdXAuYzozNDAKKyM6IGxleHN1cC5jOjM2MQogbXNnaWQgIlJlbGF4IGJyYW5jaGVzIG9uIGNlcnRhaW4gdGFyZ2V0cyIKIG1zZ3N0ciAiU2xhcHBuYSBhdiBncmVuaW5nYXIgcOUgdmlzc2EgbeVsIgogCi0jOiBsZXhzdXAuYzozNDMKKyM6IGxleHN1cC5jOjM2NAogbXNnaWQgIktlZXAgb25seSBzeW1ib2xzIGxpc3RlZCBpbiBGSUxFIgogbXNnc3RyICJCZWjlbGwgZW5kYXN0IHN5bWJvbGVyIGFuZ2l2bmEgaSBGSUwiCiAKLSM6IGxleHN1cC5jOjM0NQorIzogbGV4c3VwLmM6MzY2CiBtc2dpZCAiU2V0IHJ1bnRpbWUgc2hhcmVkIGxpYnJhcnkgc2VhcmNoIHBhdGgiCiBtc2dzdHIgIlN05GxsIGluIGv2cnRpZHNz9mt25GcgZvZyIGRlbGFkZSBiaWJsaW90ZWsiCiAKLSM6IGxleHN1cC5jOjM0NworIzogbGV4c3VwLmM6MzY4CiBtc2dpZCAiU2V0IGxpbmsgdGltZSBzaGFyZWQgbGlicmFyeSBzZWFyY2ggcGF0aCIKIG1zZ3N0ciAiU3TkbGwgaW4gbORua25pbmdzdGlkc3P2a3bkZyBm9nIgZGVsYWRlIGJpYmxpb3RlayIKIAotIzogbGV4c3VwLmM6MzQ5CisjOiBsZXhzdXAuYzozNzAKIG1zZ2lkICJDcmVhdGUgYSBzaGFyZWQgbGlicmFyeSIKIG1zZ3N0ciAiU2thcGEgZXR0IGRlbGF0IGJpYmxpb3RlayIKIAotIzogbGV4c3VwLmM6MzUzCisjOiBsZXhzdXAuYzozNzQKK21zZ2lkICJDcmVhdGUgYSBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlIgorbXNnc3RyICJTa2FwYSBlbiBwb3NpdGlvbnNvYmVyb2VuZGUga/ZyYmFyIGZpbCIKKworIzogbGV4c3VwLmM6Mzc4CiBtc2dpZCAiU29ydCBjb21tb24gc3ltYm9scyBieSBzaXplIgogbXNnc3RyICJTb3J0ZXJhIGdlbWVuc2FtbWEgc3ltYm9sZXIgZWZ0ZXIgc3RvcmxlayIKIAotIzogbGV4c3VwLmM6MzU3CisjOiBsZXhzdXAuYzozODIKIG1zZ2lkICJDT1VOVCIKIG1zZ3N0ciAiQU5UQUwiCiAKLSM6IGxleHN1cC5jOjM1NworIzogbGV4c3VwLmM6MzgyCiBtc2dpZCAiSG93IG1hbnkgdGFncyB0byByZXNlcnZlIGluIC5keW5hbWljIHNlY3Rpb24iCiBtc2dzdHIgIkh1ciBt5W5nYSB0YWdnYXIgc29tIHNrYSByZXNlcnZlcmFzIGkgLmR5bmFtaWMtc2VrdGlvbiIKIAotIzogbGV4c3VwLmM6MzU5CisjOiBsZXhzdXAuYzozODQKIG1zZ2lkICJbPVNJWkVdIgogbXNnc3RyICJbPVNUT1JMRUtdIgogCi0jOiBsZXhzdXAuYzozNTkKKyM6IGxleHN1cC5jOjM4NAogbXNnaWQgIlNwbGl0IG91dHB1dCBzZWN0aW9ucyBldmVyeSBTSVpFIG9jdGV0cyIKIG1zZ3N0ciAiRGVsYSB1dGRhdGFzZWt0aW9uZXIgdmFyIFNUT1JMRUsgb2t0ZXR0IgogCi0jOiBsZXhzdXAuYzozNjEKKyM6IGxleHN1cC5jOjM4NgogbXNnaWQgIls9Q09VTlRdIgogbXNnc3RyICJbPUFOVEFMXSIKIAotIzogbGV4c3VwLmM6MzYxCisjOiBsZXhzdXAuYzozODYKIG1zZ2lkICJTcGxpdCBvdXRwdXQgc2VjdGlvbnMgZXZlcnkgQ09VTlQgcmVsb2NzIgogbXNnc3RyICJEZWxhIHV0ZGF0YXNla3Rpb25lciB2YXIgQU5UQUwgb21sb2thbGlzZXJpbmciCiAKLSM6IGxleHN1cC5jOjM2MworIzogbGV4c3VwLmM6Mzg4CiBtc2dpZCAiUHJpbnQgbWVtb3J5IHVzYWdlIHN0YXRpc3RpY3MiCiBtc2dzdHIgIlZpc2Egc3RhdGlzdGlrIPZ2ZXIgbWlubmVzYW525G5kbmluZyIKIAotIzogbGV4c3VwLmM6MzY1CisjOiBsZXhzdXAuYzozOTAKIG1zZ2lkICJEaXNwbGF5IHRhcmdldCBzcGVjaWZpYyBvcHRpb25zIgogbXNnc3RyICJWaXNhIG3lbHNwZWNpZmlrYSBmbGFnZ29yIgogCi0jOiBsZXhzdXAuYzozNjcKKyM6IGxleHN1cC5jOjM5MgogbXNnaWQgIkRvIHRhc2sgbGV2ZWwgbGlua2luZyIKIG1zZ3N0ciAiVXRm9nIgbORua25pbmcgcOUgdXBwZ2lmdHNuaXblIgogCi0jOiBsZXhzdXAuYzozNjkKKyM6IGxleHN1cC5jOjM5NAogbXNnaWQgIlVzZSBzYW1lIGZvcm1hdCBhcyBuYXRpdmUgbGlua2VyIgogbXNnc3RyICJBbnbkbmQgc2FtbWEgZm9ybWF0IHNvbSBpbmhlbXNrYSBs5G5rYXJlbiIKIAotIzogbGV4c3VwLmM6MzcxCisjOiBsZXhzdXAuYzozOTYKIG1zZ2lkICJTRUNUSU9OPUFERFJFU1MiCiBtc2dzdHIgIlNFS1RJT049QURSRVNTIgogCi0jOiBsZXhzdXAuYzozNzEKKyM6IGxleHN1cC5jOjM5NgogbXNnaWQgIlNldCBhZGRyZXNzIG9mIG5hbWVkIHNlY3Rpb24iCiBtc2dzdHIgIlN05GxsIGluIGFkcmVzcyBw5SBuYW1uZ2l2ZW4gc2VrdGlvbiIKIAotIzogbGV4c3VwLmM6MzczCisjOiBsZXhzdXAuYzozOTgKIG1zZ2lkICJTZXQgYWRkcmVzcyBvZiAuYnNzIHNlY3Rpb24iCiBtc2dzdHIgIlN05GxsIGluIGFkcmVzcyBw5SAuYnNzLXNla3Rpb24iCiAKLSM6IGxleHN1cC5jOjM3NQorIzogbGV4c3VwLmM6NDAwCiBtc2dpZCAiU2V0IGFkZHJlc3Mgb2YgLmRhdGEgc2VjdGlvbiIKIG1zZ3N0ciAiU3TkbGwgaW4gYWRyZXNzIHDlIC5kYXRhLXNla3Rpb24iCiAKLSM6IGxleHN1cC5jOjM3NworIzogbGV4c3VwLmM6NDAyCiBtc2dpZCAiU2V0IGFkZHJlc3Mgb2YgLnRleHQgc2VjdGlvbiIKIG1zZ3N0ciAiU3TkbGwgaW4gYWRyZXNzIHDlIC50ZXh0LXNla3Rpb24iCiAKLSM6IGxleHN1cC5jOjM3OQorIzogbGV4c3VwLmM6NDA0CiBtc2dpZCAiT3V0cHV0IGxvdHMgb2YgaW5mb3JtYXRpb24gZHVyaW5nIGxpbmsiCiBtc2dzdHIgIlZpc2EgbXlja2V0IGluZm9ybWF0aW9uIHVuZGVyIGzkbmtuaW5nIgogCi0jOiBsZXhzdXAuYzozODMKKyM6IGxleHN1cC5jOjQwOAogbXNnaWQgIlJlYWQgdmVyc2lvbiBpbmZvcm1hdGlvbiBzY3JpcHQiCiBtc2dzdHIgIkzkcyBza3JpcHQgbWVkIHZlcnNpb25zaW5mb3JtYXRpb24iCiAKLSM6IGxleHN1cC5jOjM4NgorIzogbGV4c3VwLmM6NDExCiBtc2dpZCAiIgogIlRha2UgZXhwb3J0IHN5bWJvbHMgbGlzdCBmcm9tIC5leHBvcnRzLCB1c2luZ1xuIgogIlx0XHRcdFx0U1lNQk9MIGFzIHRoZSB2ZXJzaW9uLiIKQEAgLTE0OTcsNDMgKzE1NjYsNDMgQEAKICJQbG9ja2EgbGlzdGEgbWVkIGV4cG9ydHN5bWJvbGVyIGZy5W4gLmV4cG9ydHMgb2NoXG4iCiAiXHRcdFx0XHRhbnbkbmQgU1lNQk9MIHNvbSB2ZXJzaW9uLiIKIAotIzogbGV4c3VwLmM6Mzg5CisjOiBsZXhzdXAuYzo0MTQKIG1zZ2lkICJXYXJuIGFib3V0IGR1cGxpY2F0ZSBjb21tb24gc3ltYm9scyIKIG1zZ3N0ciAiVmFybmEgZvZyIGR1YmJsYSBnZW1lbnNhbW1hIHN5bWJvbGVyIgogCi0jOiBsZXhzdXAuYzozOTEKKyM6IGxleHN1cC5jOjQxNgogbXNnaWQgIldhcm4gaWYgZ2xvYmFsIGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycyBhcmUgc2VlbiIKIG1zZ3N0ciAiVmFybmEgb20gZ2xvYmFsYSBrb25zdHJ1a3RvcmVyL2Rlc3RydWt0b3JlciBoaXR0YXMiCiAKLSM6IGxleHN1cC5jOjM5NAorIzogbGV4c3VwLmM6NDE5CiBtc2dpZCAiV2FybiBpZiB0aGUgbXVsdGlwbGUgR1AgdmFsdWVzIGFyZSB1c2VkIgogbXNnc3RyICJWYXJuYSBvbSBmbGVyYSBHUC125HJkZW4gYW525G5kcyIKIAotIzogbGV4c3VwLmM6Mzk2CisjOiBsZXhzdXAuYzo0MjEKIG1zZ2lkICJXYXJuIG9ubHkgb25jZSBwZXIgdW5kZWZpbmVkIHN5bWJvbCIKIG1zZ3N0ciAiVmFybmEgZW5kYXN0IGVuIGflbmcgcGVyIG9kZWZpbmllcmFkIHN5bWJvbCIKIAotIzogbGV4c3VwLmM6Mzk4CisjOiBsZXhzdXAuYzo0MjMKIG1zZ2lkICJXYXJuIGlmIHN0YXJ0IG9mIHNlY3Rpb24gY2hhbmdlcyBkdWUgdG8gYWxpZ25tZW50IgogbXNnc3RyICJWYXJuYSBvbSBi9nJqYW4gcOUgc2VrdGlvbmVuIORuZHJhcyBw5SBncnVuZCBhdiBqdXN0ZXJpbmciCiAKLSM6IGxleHN1cC5jOjQwMQorIzogbGV4c3VwLmM6NDI2CiBtc2dpZCAiVHJlYXQgd2FybmluZ3MgYXMgZXJyb3JzIgogbXNnc3RyICJCZWhhbmRsYSB2YXJuaW5nYXIgc29tIGZlbCIKIAotIzogbGV4c3VwLmM6NDA0CisjOiBsZXhzdXAuYzo0MjkKIG1zZ2lkICJJbmNsdWRlIGFsbCBvYmplY3RzIGZyb20gZm9sbG93aW5nIGFyY2hpdmVzIgogbXNnc3RyICJJbmtsdWRlcmEgYWxsYSBvYmpla3QgZnLlbiBm9mxqYW5kZSBhcmtpdiIKIAotIzogbGV4c3VwLmM6NDA2CisjOiBsZXhzdXAuYzo0MzEKIG1zZ2lkICJVc2Ugd3JhcHBlciBmdW5jdGlvbnMgZm9yIFNZTUJPTCIKIG1zZ3N0ciAiQW525G5kIGlua2Fwc2xpbmdzZnVua3Rpb25lciBm9nIgU1lNQk9MIgogCi0jOiBsZXhzdXAuYzo0MDgKKyM6IGxleHN1cC5jOjQzMwogbXNnaWQgIls9V09SRFNdIgogbXNnc3RyICJbPU9SRF0iCiAKLSM6IGxleHN1cC5jOjQwOAorIzogbGV4c3VwLmM6NDMzCiBtc2dpZCAiIgogIk1vZGlmeSBwcm9ibGVtYXRpYyBicmFuY2hlcyBpbiBsYXN0IFdPUkRTICgxLTEwLFxuIgogIlx0XHRcdFx0ZGVmYXVsdCA1KSB3b3JkcyBvZiBhIHBhZ2UiCkBAIC0xNTQxLDI3ICsxNjEwLDI3IEBACiAixG5kcmEgcHJvYmxlbWF0aXNrYSBncmVuaW5nYXIgaSBzaXN0YSBPUkQgKDEtMTAsXG4iCiAiXHRcdFx0XHRzdGFuZGFyZHbkcmRlIDUpIG9yZGVuIHDlIGVuIHNpZGEiCiAKLSM6IGxleHN1cC5jOjU3NAorIzogbGV4c3VwLmM6NjAyCiBtc2dpZCAiJVA6IHVucmVjb2duaXplZCBvcHRpb24gJyVzJ1xuIgogbXNnc3RyICIlUDogb2vkbmQgZmxhZ2dhIFwiJXNcIlxuIgogCi0jOiBsZXhzdXAuYzo1NzYKKyM6IGxleHN1cC5jOjYwNAogbXNnaWQgIiVQJUY6IHVzZSB0aGUgLS1oZWxwIG9wdGlvbiBmb3IgdXNhZ2UgaW5mb3JtYXRpb25cbiIKIG1zZ3N0ciAiJVAlRjogYW525G5kIGZsYWdnYW4gLS1oZWxwIGb2ciBhbnbkbmRuaW5nc2luZm9ybWF0aW9uXG4iCiAKLSM6IGxleHN1cC5jOjU5NQorIzogbGV4c3VwLmM6NjIyCiBtc2dpZCAiJVAlRjogdW5yZWNvZ25pemVkIC1hIG9wdGlvbiBgJXMnXG4iCiBtc2dzdHIgIiVQJUY6IG9r5G5kIC1hLWZsYWdnYSBcIiVzXCJcbiIKIAotIzogbGV4c3VwLmM6NjA4CisjOiBsZXhzdXAuYzo2MzUKIG1zZ2lkICIlUCVGOiB1bnJlY29nbml6ZWQgLWFzc2VydCBvcHRpb24gYCVzJ1xuIgogbXNnc3RyICIlUCVGOiBva+RuZCAtYXNzZXJ0LWZsYWdnYSBcIiVzXCJcbiIKIAotIzogbGV4c3VwLmM6NjUxCisjOiBsZXhzdXAuYzo2NzgKIG1zZ2lkICIlRiVQOiB1bmtub3duIGRlbWFuZ2xpbmcgc3R5bGUgYCVzJyIKIG1zZ3N0ciAiJUYlUDogb2vkbmQgYXZrb2RuaW5nc3N0aWwgXCIlc1wiIgogCi0jOiBsZXhzdXAuYzo3MTEKKyM6IGxleHN1cC5jOjczNwogbXNnaWQgIiVQJUY6IGludmFsaWQgbnVtYmVyIGAlcydcbiIKIG1zZ3N0ciAiJVAlRjogb2dpbHRpZ3QgdGFsIFwiJXNcIlxuIgogCkBAIC0xNTczLDEzNCArMTY0MiwxNTUgQEAKICMuIGFuIGVycm9yIG1lc3NhZ2UgaGVyZS4gIFdlIGNhbm5vdCBqdXN0IG1ha2UgdGhpcyBhIHdhcm5pbmcsCiAjLiBpbmNyZW1lbnQgb3B0aW5kLCBhbmQgY29udGludWUgYmVjYXVzZSBnZXRvcHQgaXMgdG9vIGNvbmZ1c2VkCiAjLiBhbmQgd2lsbCBzZWctZmF1bHQgdGhlIG5leHQgdGltZSBhcm91bmQuCi0jOiBsZXhzdXAuYzo4MTIKKyM6IGxleHN1cC5jOjg0OQogbXNnaWQgIiVQJUY6IGJhZCAtcnBhdGggb3B0aW9uXG4iCiBtc2dzdHIgIiVQJUY6IG9r5G5kIC1ycGF0aC1mbGFnZ2FcbiIKIAotIzogbGV4c3VwLmM6OTEwCisjOiBsZXhzdXAuYzo5NTMKIG1zZ2lkICIlUCVGOiAtc2hhcmVkIG5vdCBzdXBwb3J0ZWRcbiIKIG1zZ3N0ciAiJVAlRjogLXNoYXJlZCBzdPZkcyBpbnRlXG4iCiAKLSM6IGxleHN1cC5jOjk0MgorIzogbGV4c3VwLmM6OTYyCittc2dpZCAiJVAlRjogLXBpZSBub3Qgc3VwcG9ydGVkXG4iCittc2dzdHIgIiVQJUY6IC1waWUgc3T2ZHMgaW50ZVxuIgorCisjOiBsZXhzdXAuYzo5OTQKIG1zZ2lkICIlUCVGOiBpbnZhbGlkIGFyZ3VtZW50IHRvIG9wdGlvbiBcIi0tc2VjdGlvbi1zdGFydFwiXG4iCiBtc2dzdHIgIiVQJUY6IG9naWx0aWd0IGFyZ3VtZW50IHRpbGwgZmxhZ2dhbiBcIi0tc2VjdGlvbi1zdGFydFwiXG4iCiAKLSM6IGxleHN1cC5jOjk0OAorIzogbGV4c3VwLmM6MTAwMAogbXNnaWQgIiVQJUY6IG1pc3NpbmcgYXJndW1lbnQocykgdG8gb3B0aW9uIFwiLS1zZWN0aW9uLXN0YXJ0XCJcbiIKIG1zZ3N0ciAiJVAlRjogYXJndW1lbnQgc2FrbmFzIHRpbGwgZmxhZ2dhbiBcIi0tc2VjdGlvbi1zdGFydFwiXG4iCiAKLSM6IGxleHN1cC5jOjEwOTcKKyM6IGxleHN1cC5jOjExNTgKIG1zZ2lkICIlUCVGOiBtYXkgbm90IG5lc3QgZ3JvdXBzICgtLWhlbHAgZm9yIHVzYWdlKVxuIgogbXNnc3RyICIlUCVGOiBm5XIgaW50ZSBu5HN0bGEgZ3J1cHBlciAoLS1oZWxwIGb2ciBhbnbkbmRuaW5nKVxuIgogCi0jOiBsZXhzdXAuYzoxMTA0CisjOiBsZXhzdXAuYzoxMTY1CiBtc2dpZCAiJVAlRjogZ3JvdXAgZW5kZWQgYmVmb3JlIGl0IGJlZ2FuICgtLWhlbHAgZm9yIHVzYWdlKVxuIgogbXNnc3RyICIlUCVGOiBncnVwcGVuIHNsdXRhZGUgaW5uYW4gZGVuIGL2cmphZGUgKC0taGVscCBm9nIgYW525G5kbmluZylcbiIKIAotIzogbGV4c3VwLmM6MTExOAorIzogbGV4c3VwLmM6MTE3OQogbXNnaWQgIiVQJUY6IGludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uIFwibXBjODYwYzBcIlxuIgogbXNnc3RyICIlUCVGOiBvZ2lsdGlndCBhcmd1bWVudCB0aWxsIGZsYWdnYW4gXCJtcGM4NjBjMFwiXG4iCiAKLSM6IGxleHN1cC5jOjExNzMKKyM6IGxleHN1cC5jOjEyMzQKIG1zZ2lkICIlUCVGOiBpbnZhbGlkIGhleCBudW1iZXIgYCVzJ1xuIgogbXNnc3RyICIlUCVGOiBvZ2lsdGlndCBoZXhhZGVjaW1hbHQgdGFsIFwiJXNcIlxuIgogCi0jOiBsZXhzdXAuYzoxMTg1CisjOiBsZXhzdXAuYzoxMjQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzYWdlOiAlcyBbb3B0aW9uc10gZmlsZS4uLlxuIgogbXNnc3RyICJBbnbkbmRuaW5nOiAlcyBbZmxhZ2dvcl0gZmlsLi4uXG4iCiAKLSM6IGxleHN1cC5jOjExODcKKyM6IGxleHN1cC5jOjEyNDgKIG1zZ2lkICJPcHRpb25zOlxuIgogbXNnc3RyICJBbHRlcm5hdGl2OlxuIgogCiAjLiBOb3RlOiBWYXJpb3VzIHRvb2xzIChzdWNoIGFzIGxpYnRvb2wpIGRlcGVuZCB1cG9uIHRoZQogIy4gZm9ybWF0IG9mIHRoZSBsaXN0aW5ncyBiZWxvdyAtIGRvIG5vdCBjaGFuZ2UgdGhlbS4KLSM6IGxleHN1cC5jOjEyNzAKKyM6IGxleHN1cC5jOjEzMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHN1cHBvcnRlZCB0YXJnZXRzOiIKIG1zZ3N0ciAiJXM6IG3lbCBzb20gc3T2ZHM6IgogCi0jOiBsZXhzdXAuYzoxMjc4CisjOiBsZXhzdXAuYzoxMzM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBzdXBwb3J0ZWQgZW11bGF0aW9uczogIgogbXNnc3RyICIlczogZW11bGVyaW5nYXIgc29tIHN09mRzOiAiCiAKLSM6IGxleHN1cC5jOjEyODMKKyM6IGxleHN1cC5jOjEzNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGVtdWxhdGlvbiBzcGVjaWZpYyBvcHRpb25zOlxuIgogbXNnc3RyICIlczogZW11bGVyaW5nc3NwZWNpZmlrYSBmbGFnZ29yOlxuIgogCi0jOiBsZXhzdXAuYzoxMjg3CisjOiBsZXhzdXAuYzoxMzQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlcG9ydCBidWdzIHRvICVzXG4iCiBtc2dzdHIgIiIKICJSYXBwb3J0ZXJhIGZlbCB0aWxsICVzXG4iCiAiUmFwcG9ydGVyYSBmZWwgaSD2dmVyc+R0dG5pbmdlbiB0aWxsIHN2QGxpLm9yZ1xuIgogCi0jOiBtcmkuYzozMzQKKyM6IG1yaS5jOjMwNwogbXNnaWQgIiVQJUY6IHVua25vd24gZm9ybWF0IHR5cGUgJXNcbiIKIG1zZ3N0ciAiJVAlRjogb2vkbmQgZm9ybWF0dHlwICVzXG4iCiAKLSM6IHBlLWRsbC5jOjMyMQorIzogcGUtZGxsLmM6MzAxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVYVW5zdXBwb3J0ZWQgUEVJIGFyY2hpdGVjdHVyZTogJXNcbiIKIG1zZ3N0ciAiJVhQRUktYXJraXRla3R1cmVuIHN09mRzIGludGU6ICVzXG4iCiAKLSM6IHBlLWRsbC5jOjY3MQorIzogcGUtZGxsLmM6NjUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVYRXJyb3IsIGR1cGxpY2F0ZSBFWFBPUlQgd2l0aCBvcmRpbmFsczogJXMgKCVkIHZzICVkKVxuIgogbXNnc3RyICIlWEZlbCwgZHViYmVsIEVYUE9SVCBtZWQgb3JkaW5hbGVyOiAlcyAoJWQgZ2VudGVtb3QgJWQpXG4iCiAKLSM6IHBlLWRsbC5jOjY3OAorIzogcGUtZGxsLmM6NjU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIldhcm5pbmcsIGR1cGxpY2F0ZSBFWFBPUlQ6ICVzXG4iCiBtc2dzdHIgIlZhcm5pbmcsIGR1YmJlbCBFWFBPUlQ6ICVzXG4iCiAKLSM6IHBlLWRsbC5jOjc0MgorIzogcGUtZGxsLmM6NzIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVYQ2Fubm90IGV4cG9ydCAlczogc3ltYm9sIG5vdCBkZWZpbmVkXG4iCiBtc2dzdHIgIiVYS2FuIGludGUgZXhwb3J0ZXJhICVzOiBzeW1ib2xlbiDkciBpbnRlIGRlZmluaWVyYWRcbiIKIAotIzogcGUtZGxsLmM6NzQ4CisjOiBwZS1kbGwuYzo3MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJVhDYW5ub3QgZXhwb3J0ICVzOiBzeW1ib2wgd3JvbmcgdHlwZSAoJWQgdnMgJWQpXG4iCiBtc2dzdHIgIiVYS2FuIGludGUgZXhwb3J0ZXJhICVzOiBzeW1ib2xlbiDkciBhdiBmZWwgdHlwICglZCBnZW50ZW1vdCAlZClcbiIKIAotIzogcGUtZGxsLmM6NzU1CisjOiBwZS1kbGwuYzo3MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJVhDYW5ub3QgZXhwb3J0ICVzOiBzeW1ib2wgbm90IGZvdW5kXG4iCiBtc2dzdHIgIiVYS2FuIGludGUgZXhwb3J0ZXJhICVzOiBzeW1ib2xlbiBoaXR0YWRlcyBpbnRlXG4iCiAKLSM6IHBlLWRsbC5jOjg3MAorIzogcGUtZGxsLmM6ODQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVYRXJyb3IsIG9yZGluYWwgdXNlZCB0d2ljZTogJWQgKCVzIHZzICVzKVxuIgogbXNnc3RyICIlWEZlbCwgb3JkaW5hbGVuIGFuduRuZGVzIHR25SBn5W5nZXI6ICVkICglcyBnZW50ZW1vdCAlcylcbiIKIAotIzogcGUtZGxsLmM6MTE4MQorIzogcGUtZGxsLmM6MTE2NQogIywgYy1mb3JtYXQKIG1zZ2lkICIlWEVycm9yOiAlZC1iaXQgcmVsb2MgaW4gZGxsXG4iCiBtc2dzdHIgIiVYRmVsOiAlZC1iaXRhcnMgb21sb2thbGlzZXJpbmcgaSBkbGxcbiIKIAotIzogcGUtZGxsLmM6MTMxNgorIzogcGUtZGxsLmM6MTI5NgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogQ2FuJ3Qgb3BlbiBvdXRwdXQgZGVmIGZpbGUgJXNcbiIKIG1zZ3N0ciAiJXM6IEthbiBpbnRlIPZwcG5hIHV0ZGF0YWRlZmluaXRpb25zZmlsZW4gJXNcbiIKIAotIzogcGUtZGxsLmM6MTQ1OQorIzogcGUtZGxsLmM6MTQzOQogbXNnaWQgIjsgbm8gY29udGVudHMgYXZhaWxhYmxlXG4iCiBtc2dzdHIgIjsgaW5nZXQgaW5uZWjlbGwg5HIgdGlsbGfkbmdsaWd0XG4iCiAKLSM6IHBlLWRsbC5jOjIxMjgKKyM6IHBlLWRsbC5jOjIyMDMKK21zZ2lkICIlQzogdmFyaWFibGUgJyVUJyBjYW4ndCBiZSBhdXRvLWltcG9ydGVkLiBQbGVhc2UgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbGQncyAtLWVuYWJsZS1hdXRvLWltcG9ydCBmb3IgZGV0YWlscy5cbiIKK21zZ3N0ciAiJUM6IHZhcmlhYmVsbiBcIiVUXCIga2FuIGludGUgaW1wb3J0ZXJhcyBhdXRvbWF0aXNrdC4gTORzIGRva3VtZW50YXRpb25lbiBm9nIgbGQ6cyAtLWVuYWJsZS1hdXRvLWltcG9ydCBm9nIgZGV0YWxqZXIuXG4iCisKKyM6IHBlLWRsbC5jOjIyMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJVhDYW4ndCBvcGVuIC5saWIgZmlsZTogJXNcbiIKIG1zZ3N0ciAiJVhLYW4gaW50ZSD2cHBuYSAubGliLWZpbGVuOiAlc1xuIgogCi0jOiBwZS1kbGwuYzoyMTMzCisjOiBwZS1kbGwuYzoyMjM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNyZWF0aW5nIGxpYnJhcnkgZmlsZTogJXNcbiIKIG1zZ3N0ciAiU2thcGFyIGJpYmxpb3Rla3NmaWw6ICVzXG4iCiAKKyN+IG1zZ2lkICIiCisjfiAiICAtLWVuYWJsZS1hdXRvLWltcG9ydCAgICAgICAgICAgICAgIERvIHNvcGhpc3RpY2F0ZWQgbGlua2luZyBvZiBfc3ltIHRvXG4iCisjfiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbXBfc3ltIGZvciBEQVRBIHJlZmVyZW5jZXNcbiIKKyN+IG1zZ3N0ciAiIgorI34gIiAgLS1lbmFibGUtYXV0by1pbXBvcnQgICAgICAgICAgICAgICBVdGb2ciBzb2Zpc3Rpa2VyYWQgbORua25pbmcgYXYgX3N5bSB0aWxsXG4iCisjfiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbXBfc3ltIGb2ciBEQVRBLXJlZmVyZW5zZXJcbiIKKworI34gbXNnaWQgIiVCOiBJbiBmdW5jdGlvbiBgJVQnOlxuIgorI34gbXNnc3RyICIlQjogSSBmdW5rdGlvbmVuIFwiJVRcIjpcbiIKKworI34gbXNnaWQgIkFsbG93IHVuZGVmaW5lZCBzeW1ib2xzIGluIHNoYXJlZCBvYmplY3RzIgorI34gbXNnc3RyICJUaWxs5XQgb2RlZmluaWVyYWRlIHN5bWJvbGVyIGkgZGVsYWRlIG9iamVrdCIKKwogI34gbXNnaWQgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBfX2ltcF88U1lNQk9MPiBhcyB3ZWxsLlxuIgogI34gbXNnc3RyICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2FwYSDkdmVuIF9faW1wXzxTWU1CT0w+LlxuIgogCmRpZmYgLS1naXQgYS9sZC9zY3JpcHR0ZW1wbC9lbGYzMmNyMTZjLnNjIGIvbGQvc2NyaXB0dGVtcGwvZWxmMzJjcjE2Yy5zYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDJlZGZkCi0tLSAvZGV2L251bGwKKysrIGIvbGQvc2NyaXB0dGVtcGwvZWxmMzJjcjE2Yy5zYwpAQCAtMCwwICsxLDUyIEBACisjIExpbmtlciBTY3JpcHQgZm9yIE5hdGlvbmFsIFNlbWljb25kdWN0b3IncyBDUjE2Qy1FTEYzMi4KKwordGVzdCAteiAiJEVOVFJZIiAmJiBFTlRSWT1fc3RhcnQKK2NhdCA8PEVPRgorCisvKiBFeGFtcGxlIExpbmtlciBTY3JpcHQgZm9yIGxpbmtpbmcgTlMgQ1IxNkMgb3IgQ1IxNkNQbHVzCisgICBlbGYzMiBmaWxlcywgd2hpY2ggd2VyZSBjb21waWxlZCB3aXRoIGVpdGhlciB0aGUgbmVhciBkYXRhCisgICBtb2RlbCBvciB0aGUgZGVmYXVsdCBkYXRhIG1vZGVsLiAgKi8KKworLyogRm9yY2UgdGhlIGVudHJ5IHBvaW50IHRvIGJlIGVudGVyZWQgaW4gdGhlIG91dHB1dCBmaWxlIGFzCisgICBhbiB1bmRlZmluZWQgc3ltYm9sLiBUaGlzIGlzIG5lZWRlZCBpbiBjYXNlIHRoZSBlbnRyeSBwb2ludAorICAgKHdoaWNoIGlzIG5vdCBjYWxsZWQgZXhwbGljaXRseSkgaXMgaW4gYW4gYXJjaGl2ZSAod2hpY2ggaXMKKyAgIHRoZSB1c3VhbCBjYXNlKS4gICovCisKK0VYVEVSTigke0VOVFJZfSkKKworRU5UUlkoJHtFTlRSWX0pCisKK01FTU9SWQoreworICBuZWFyX3JvbSAgOiBPUklHSU4gPSAweDQsICAgICBMRU5HVEggPSA1MTJLIC0gNAorICBuZWFyX3JhbSAgOiBPUklHSU4gPSA1MTJLLCAgICBMRU5HVEggPSA1MTJLIC0gNjRLCisgIHJvbSAgCSAgICA6IE9SSUdJTiA9IDFNLCAgICAgIExFTkdUSCA9IDNNCisgIHJhbSAJICAgIDogT1JJR0lOID0gNE0sICAgICAgTEVOR1RIID0gMTBNCit9CisKK1NFQ1RJT05TCit7CisvKiBUaGUgaGVhcCBpcyBsb2NhdGVkIGluIG5lYXIgbWVtb3J5LCB0byBzdWl0IGJvdGggdGhlIG5lYXIgYW5kCisgICBkZWZhdWx0IGRhdGEgbW9kZWxzLiAgVGhlIGhlYXAgYW5kIHN0YWNrIGFyZSBhbGlnbmVkIHRvIHRoZSBidXMKKyAgIHdpZHRoLCBhcyBhIHNwZWVkIG9wdGltaXphdGlvbiBmb3IgYWNjZXNzaW5nICBkYXRhIGxvY2F0ZWQKKyAgIHRoZXJlLiBUaGUgYWxpZ25tZW50IHRvIDQgYnl0ZXMgaXMgY29tcGF0aWJsZSBmb3IgYm90aCB0aGUgQ1IxNkMKKyAgIGJ1cyB3aWR0aCAoMiBieXRlcykgYW5kIENSMTZDUGx1cyBidXMgd2lkdGggKDQgYnl0ZXMpLiAgKi8KKworICAudGV4dCAgICAgICAgICA6IHsgX19URVhUX1NUQVJUID0gLjsgICAqKC50ZXh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1RFWFRfRU5EID0gLjsgfSA+IHJvbQkKKyAgLnJkYXRhICAgICAgICAgOiB7IF9fUkRBVEFfU1RBUlQgPSAuOyAgKigucmRhdGFfNCkgKigucmRhdGFfMikgKigucmRhdGFfMSkgICAgICAgICAgICAgX19SREFUQV9FTkQgPSAuOyB9ID4gbmVhcl9yb20KKyAgLmN0b3IgQUxJR04oNCkgOiB7IF9fQ1RPUl9MSVNUID0gLjsgICAgKiguY3RvcnMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19DVE9SX0VORCA9IC47IH0gPiBuZWFyX3JvbQorICAuZHRvciBBTElHTig0KSA6IHsgX19EVE9SX0xJU1QgPSAuOyAgICAqKC5kdG9ycykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0RUT1JfRU5EID0gLjsgfSA+IG5lYXJfcm9tCisgIC5kYXRhICAgICAgICAgIDogeyBfX0RBVEFfU1RBUlQgPSAuOyAgICooLmRhdGFfNCkgKiguZGF0YV8yKSAqKC5kYXRhXzEpICooLmRhdGEpICAgICAgIF9fREFUQV9FTkQgPSAuOyB9ID4gcmFtIEFUID4gcm9tCisgIC5ic3MgKE5PTE9BRCkgIDogeyBfX0JTU19TVEFSVCA9IC47ICAgICooLmJzc180KSAqKC5ic3NfMikgKiguYnNzXzEpICooLmJzcykgKihDT01NT04pIF9fQlNTX0VORCA9IC47IH0gPiByYW0KKyAgLm5yZGF0YSAgICAgICAgOiB7IF9fTlJEQVRBX1NUQVJUID0gLjsgKigubnJkYXRfNCkgKigubnJkYXRfMikgKigubnJkYXRfMSkgICAgICAgICAgICAgX19OUkRBVEFfRU5EID0gIC47IH0gPiBuZWFyX3JvbQorICAubmRhdGEgICAgICAgICA6IHsgX19OREFUQV9TVEFSVCA9IC47ICAqKC5uZGF0YV80KSAqKC5uZGF0YV8yKSAqKC5uZGF0YV8xKSAgICAgICAgICAgICBfX05EQVRBX0VORCA9IC47IH0gPiBuZWFyX3JhbSBBVCA+IHJvbQorICAubmJzcyAoTk9MT0FEKSA6IHsgX19OQlNTX1NUQVJUID0gLjsgICAqKC5uYnNzXzQpICooLm5ic3NfMikgKigubmJzc18xKSAqKC5uY29tbW9uKSAgICBfX05CU1NfRU5EID0gLjsgfSA+IG5lYXJfcmFtCisgIC5oZWFwICAgICAgICAgIDogeyAuID0gQUxJR04oNCk7IF9fSEVBUF9TVEFSVCA9IC47IC4gKz0gMHgyMDAwOyAgICAgICAgICAgICAgICAgICAgICAgIF9fSEVBUF9NQVggPSAuOyB9ID4gbmVhcl9yYW0KKyAgLnN0YWNrICAgICAgICAgOiB7IC4gPSBBTElHTig0KTsgLiArPSAweDYwMDA7IF9fU1RBQ0tfU1RBUlQgPSAuOyB9ID4gcmFtCisgIC5pc3RhY2sgICAgICAgIDogeyAuID0gQUxJR04oMik7IC4gKz0gMHgxMDA7IF9fSVNUQUNLX1NUQVJUID0gLjsgfSA+IHJhbQorfQorCitfX0RBVEFfSU1BR0VfU1RBUlQgPSBMT0FEQUREUiguZGF0YSk7CitfX05EQVRBX0lNQUdFX1NUQVJUID0gTE9BREFERFIoLm5kYXRhKTsKKworRU9GCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvQ2hhbmdlTG9nIGIvbGQvdGVzdHN1aXRlL0NoYW5nZUxvZwppbmRleCA4MDdjMDhiLi42MmVmYzI3IDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvQ2hhbmdlTG9nCisrKyBiL2xkL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBAQAorMjAwNC0wNC0wOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKworCVBSIDQ3LgorCSogbGQtY2R0ZXN0L2NkdGVzdC5leHA6IFJlbW92ZSAtZmdudS1saW5rZXIuCisKKzIwMDQtMDQtMDggIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKKwkqIGxkLXNjcmlwdHMvYWxpZ24uZXhwOiBEb24ndCBydW4gb24gYWl4LgorCSogbGQtc2NyaXB0cy9hc3NlcnQuczogUmVtb3ZlIGNvbW1lbnQuCisJKiBsZC1zY3JpcHRzL2RhdGEuczogTGlrZXdpc2UuCisJKiBsZC1zY3JpcHRzL2RhdGEudDogU2V0IHN0YXJ0IGFkZHJlc3MgdG8gYWxsb3cgZm9yIGFvdXQgaGVhZGVycy4KKwlNYWtlIGZpcnN0IExPTkcgcGMtcmVsYXRpdmUuCisJKiBsZC1zY3JpcHRzL2RhdGEuZDogVXBkYXRlLgorCSogbGQtc2NyaXB0cy9kZWZpbmVkMi5kOiBBbGxvdyBvdGhlciByYW5kb20gc3ltcy4KKwkqIGxkLXNjcmlwdHMvZGVmaW5lZDMuZDogTGlrZXdpc2UuCisJKiBsZC1zY3JpcHRzL3Byb3ZpZGUtMS5zOiBQYWQgc2VjdGlvbi4KKwkqIGxkLXNjcmlwdHMvcHJvdmlkZS0xLnQ6IFNldCAuZGF0YSBhZGRyZXNzIGFuZCBhbGlnbi4KKwkqIGxkLXNjcmlwdHMvcHJvdmlkZS0xLmQ6IFVwZGF0ZS4KKwkqIGxkLXNjcmlwdHMvcHJvdmlkZS0yLnM6IFBhZCBzZWN0aW9uLgorCSogbGQtc2NyaXB0cy9wcm92aWRlLTIuZDogQWxsb3cgcmFuZG9tIHRyYWlsaW5nIHN5bXMuCisJKiBsZC1zY3JpcHRzL3Byb3ZpZGUtMy5zOiBQYWQgc2VjdGlvbi4KKwkqIGxkLXNjcmlwdHMvcHJvdmlkZS0zLmQ6IEZpeCB0eXBvcy4KKwkqIGxkLXNjcmlwdHMvcHJvdmlkZS5leHA6IERvbid0IHJ1biBvbiBhaXguCisJKiBsZC1zY3JpcHRzL3NpemUtMS5zOiBTaW1wbGlmeSB0ZXN0LgorCSogbGQtc2NyaXB0cy9zaXplLTEudDogUmV3cml0ZS4KKwkqIGxkLXNjcmlwdHMvc2l6ZS0xLmQ6IFVwZGF0ZS4KKwkqIGxkLXNjcmlwdHMvc2l6ZS0yLnM6IFNpbXBsaWZ5LgorCSogbGQtc2NyaXB0cy9zaXplLTIudDogU2V0IHN0YXJ0IGFkZHJlc3MuICBTZXQgZXhlIGZsYWcgb24gaW1hZ2UuCisJKiBsZC1zY3JpcHRzL3NpemUtMi5kOiBVcGRhdGUuCisJKiBsZC1zY3JpcHRzL3NpemUuZXhwOiBEb24ndCBydW4gb24gYWl4LiAgUnVuIHNpemUtMiBvbiBhbGwgZWxmCisJdGFyZ2V0cyBleGNlcHQgbWlwcy4KKworMjAwNC0wMy0yNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CisKKwkqIGxkLWZydi9mZHBpYyouZDogQWRqdXN0IHRvIGNvbXBlbnNhdGUgZm9yIHBhZ2Ugc2l6ZSBjaGFuZ2UuCisKKzIwMDQtMDMtMjYgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKKwkqIGxkLXBvd2VycGMvdGxzZXhlLnI6IFVwZGF0ZSBmb3IgY2hhbmdlZCBzeW0gdHlwZS4KKwkqIGxkLXBvd2VycGMvdGxzZXhldG9jLnI6IExpa2V3aXNlLgorCisyMDA0LTAzLTIyICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KKworCSogbGQtY3Jpcy9kc29mbmYucywgbGQtY3Jpcy9kc29mbmYyLnMsIGxkLWNyaXMvZ290cGx0MS5kLAorCWxkLWNyaXMvZ290cGx0Mi5kLCBsZC1jcmlzL2dvdHBsdDMuZDogTmV3IHRlc3RzLgorCisyMDA0LTAzLTE5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CisKKwkqIGxkLWVsZnZlcnMvdmVycy5leHA6IEFkZCBuZXcgdGVzdHMgZm9yIHZlcnNpb25lZCB3ZWFrCisJZGVmaW5pdGlvbi4gCisKKwkqIGxkLWVsZnZlcnMvdmVyczI4YS5jOiBOZXcgZmlsZS4KKwkqIGxkLWVsZnZlcnMvdmVyczI4YS5kc3ltOiBMaWtld2lzZS4KKwkqIGxkLWVsZnZlcnMvdmVyczI4YS52ZXI6IExpa2V3aXNlLgorCSogbGQtZWxmdmVycy92ZXJzMjhiLmM6IExpa2V3aXNlLgorCSogbGQtZWxmdmVycy92ZXJzMjhiLmRzeW06IExpa2V3aXNlLgorCSogbGQtZWxmdmVycy92ZXJzMjhiLm1hcDogTGlrZXdpc2UuCisJKiBsZC1lbGZ2ZXJzL3ZlcnMyOGIudmVyOiBMaWtld2lzZS4KKwkqIGxkLWVsZnZlcnMvdmVyczI4Yy5jOiBMaWtld2lzZS4KKwkqIGxkLWVsZnZlcnMvdmVyczI4Yy5kc3ltOiBMaWtld2lzZS4KKwkqIGxkLWVsZnZlcnMvdmVyczI4Yy52ZXI6IExpa2V3aXNlLgorCisyMDA0LTAzLTE5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgorCisJKiBsZC1zY3JpcHRzL3Byb3ZpZGUtMi5kOiBJZ25vcmUgcmFuZG9tIHN5bWJvbHMuCisKIDIwMDQtMDMtMTYgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CiAKIAkqIGxkLXBvd2VycGMvdGxzLmQ6IFVwZGF0ZS4KQEAgLTEyLDE0ICs3OCw0MyBAQAogCiAyMDA0LTAzLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgogCisJKiBsZC1zY3JpcHRzL3NpemUtMS5kOiBBZGQgYmlnZW5kaWFuIHJlZ2V4cHMuCisJKiBsZC1zY3JpcHRzL3NpemUtMi5kOiBTZXQgLS13aWRlIGZvciByZWFkZWxmLgorCiAJKiBsZC1zY3JpcHRzL3NpemUuZXhwOiBOZXcuCiAJKiBsZC1zY3JpcHRzL3NpemUtWzEyXS57ZCxzLHR9OiBOZXcuCiAKKzIwMDQtMDMtMDEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KKworCSogbGQtZnJ2L2ZyNDUwLWxpbmtbYWJjXS5zLCBmcjQ1MC1saW5rLmQ6IE5ldyB0ZXN0LgorCSogbGQtZnJ2L2Zydi5leHA6IE5ldyBoYXJuZXNzLgorCisyMDA0LTAyLTI0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KKworCSogbGQtZnJ2L2ZkcGljLXBpZS0yLmQ6IEFkanVzdCBmb3IgZGVjYXkgb2YgRlVOQ0RFU0MgcmVsb2NzIHRoYXQKKwliaW5kIGxvY2FsbHkuCisJKiBsZC1mcnYvZmRwaWMtcGllLTguZDogTGlrZXdpc2UuCisJKiBsZC1mcnYvZmRwaWMtc2hhcmVkLTQuZDogTGlrZXdpc2UuCisJKiBsZC1mcnYvZmRwaWMtcGllLTYtZmFpbC5kOiBSZW5hbWVkIGZyb20uLi4KKwkqIGxkLWZydi9mZHBpYy1waWUtNi5kOiBOZXcgdGVzdC4KKwkqIGxkLWZydi9mZHBpYy1zaGFyZWQtNi1mYWlsLmQ6IFJlbmFtZWQgZnJvbS4uLgorCSogbGQtZnJ2L2ZkcGljLXNoYXJlZC02LmQ6IE5ldyB0ZXN0LgorCSogbGQtZnJ2L2ZkcGljNi5sZHY6IE5ldy4KKwkqIGxkLWZydi9mZHBpYy1zdGF0aWMtNi5kOiBBZGp1c3QgdGVzdCBuYW1lLgorCSogbGQtZnJ2L2ZkcGljLXBpZS04LWZhaWwuZDogUmVtb3ZlZC4KKwkqIGxkLWZydi9mZHBpYy5leHA6IFJ1biBuZXcgdGVzdHMuCisKIDIwMDQtMDItMjMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CiAKIAkqIGxkLXNjcmlwdHMvcHJvdmlkZS5leHA6IE5ldy4KIAkqIGxkLXNjcmlwdHMvcHJvdmlkZS17MSwyLDN9LntzLHQsZH0uZXhwOiBOZXcuCiAKKzIwMDQtMDItMjMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKKwkqIGxkLXNjcmlwdHMvZGF0YS50OiBTZXQgIi5vdGhlciIgYWRkcmVzcyBzbyBsb2NhdGlvbiBkb2Vzbid0CisJZGVwZW5kIG9uIHRhcmdldCBhbGlnbm1lbnQuCisJKiBsZC1zY3JpcHRzL2RhdGEuZDogVXBkYXRlLgorCiAyMDA0LTAyLTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgogCiAJKiBsZC1zY3JpcHRzL2FsaWduLntzLHQsZXhwfTogTmV3LgpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWNkdGVzdC9jZHRlc3QuZXhwIGIvbGQvdGVzdHN1aXRlL2xkLWNkdGVzdC9jZHRlc3QuZXhwCmluZGV4IDFjNTFmMGQuLmQ2YTY0NmEgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1jZHRlc3QvY2R0ZXN0LmV4cAorKysgYi9sZC90ZXN0c3VpdGUvbGQtY2R0ZXN0L2NkdGVzdC5leHAKQEAgLTM1LDkgKzM1LDkgQEAKICAgICByZXR1cm4KIH0KIAotaWYgeyAgICFbbGRfY29tcGlsZSAiJENYWCAkQ1hYRkxBR1MgLWZnbnUtbGlua2VyIC1mbm8tZXhjZXB0aW9ucyIgJHNyY2Rpci8kc3ViZGlyL2NkdGVzdC1mb28uY2MgdG1wZGlyL2NkdGVzdC1mb28ub10KLSAgICB8fCAhW2xkX2NvbXBpbGUgIiRDWFggJENYWEZMQUdTIC1mZ251LWxpbmtlciAtZm5vLWV4Y2VwdGlvbnMiICRzcmNkaXIvJHN1YmRpci9jZHRlc3QtYmFyLmNjIHRtcGRpci9jZHRlc3QtYmFyLm9dCi0gICAgfHwgIVtsZF9jb21waWxlICIkQ1hYICRDWFhGTEFHUyAtZmdudS1saW5rZXIgLWZuby1leGNlcHRpb25zIiAkc3JjZGlyLyRzdWJkaXIvY2R0ZXN0LW1haW4uY2MgdG1wZGlyL2NkdGVzdC1tYWluLm9dIH0geworaWYgeyAgICFbbGRfY29tcGlsZSAiJENYWCAkQ1hYRkxBR1MgLWZuby1leGNlcHRpb25zIiAkc3JjZGlyLyRzdWJkaXIvY2R0ZXN0LWZvby5jYyB0bXBkaXIvY2R0ZXN0LWZvby5vXQorICAgIHx8ICFbbGRfY29tcGlsZSAiJENYWCAkQ1hYRkxBR1MgLWZuby1leGNlcHRpb25zIiAkc3JjZGlyLyRzdWJkaXIvY2R0ZXN0LWJhci5jYyB0bXBkaXIvY2R0ZXN0LWJhci5vXQorICAgIHx8ICFbbGRfY29tcGlsZSAiJENYWCAkQ1hYRkxBR1MgLWZuby1leGNlcHRpb25zIiAkc3JjZGlyLyRzdWJkaXIvY2R0ZXN0LW1haW4uY2MgdG1wZGlyL2NkdGVzdC1tYWluLm9dIH0gewogICAgIHVucmVzb2x2ZWQgJHRlc3QxCiAgICAgdW5yZXNvbHZlZCAkdGVzdDIKICAgICByZXR1cm4KZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGZ2ZXJzL3ZlcnMuZXhwIGIvbGQvdGVzdHN1aXRlL2xkLWVsZnZlcnMvdmVycy5leHAKaW5kZXggNDdiZTQwZS4uYTliMzc3OCAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLWVsZnZlcnMvdmVycy5leHAKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZnZlcnMvdmVycy5leHAKQEAgLTkzOCwzICs5MzgsOSBAQAogYnVpbGRfZXhlY3V0YWJsZSAidmVyczI3ZDMiIHZlcnMyN2QzLmMgdmVyczI3ZDMgInZlcnMyN2IubyB2ZXJzMjdkMi5zbyB2ZXJzMjdkMS5zbyIgIiIgdmVyczI3Yi52ZXIgdmVyczI3Yi5kc3ltICIiCiBidWlsZF92ZXJzX2xpYl9waWMgInZlcnMyN2Q0IiB2ZXJzMjdkMi5jIHZlcnMyN2Q0ICJ2ZXJzMjdhLnNvIiAiIiB2ZXJzMjdkNC52ZXIgdmVyczI3ZDQuZHN5bSAiIgogYnVpbGRfZXhlY3V0YWJsZSAidmVyczI3ZDUiIHZlcnMyN2QzLmMgdmVyczI3ZDUgInZlcnMyN2Q0LnNvIHZlcnMyN2IubyB2ZXJzMjdhLnNvIiAiIiB2ZXJzMjdiLnZlciB2ZXJzMjdiLmRzeW0gIiIKKworIyBUZXN0IHdlYWsgdmVyc2lvbmVkIGRlZmluaXRpb24gdnMuIHN0cm9uZyBkZWZpbml0aW9uIGluIGRpZmZlcmVudAorIyBmaWxlcy4KK2J1aWxkX3ZlcnNfbGliX3BpYyAidmVyczI4YSIgdmVyczI4YS5jIHZlcnMyOGEgIiIgIiIgdmVyczI4YS52ZXIgdmVyczI4YS5kc3ltICIiCitidWlsZF92ZXJzX2xpYl9waWMgInZlcnMyOGIiIHZlcnMyOGIuYyB2ZXJzMjhiICIiIHZlcnMyOGIubWFwIHZlcnMyOGIudmVyIHZlcnMyOGIuZHN5bSAiIgorYnVpbGRfdmVyc19saWJfcGljICJ2ZXJzMjhjIiB2ZXJzMjhjLmMgdmVyczI4YyAidmVyczI4Yi5zbyB2ZXJzMjhhLnNvIiAiIiB2ZXJzMjhjLnZlciB2ZXJzMjhjLmRzeW0gIiIKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtcGllLTEuZCBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtcGllLTEuZAppbmRleCBkYTM1NmFlLi4xNWQzNmFlIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXBpZS0xLmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1waWUtMS5kCkBAIC0zMiwyNyArMzIsMjcgQEAKICA0MTg6CTgwIGY4IDAwIDAwIAlzZXRoaSBoaVwoMHgwXCksZ3IwCiBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwuZGF0YToKIAotMDAwMTA0MzAgPEQxPjoKLSAgIDEwNDMwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDQzMDogUl9GUlZfMzIJXC5kYXRhCiswMDAwNDQzMCA8RDE+OgorICAgIDQ0MzA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ0MzA6IFJfRlJWXzMyCVwuZGF0YQogCi0wMDAxMDQzNCA8XC5EMD46Ci0gICAxMDQzNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotCQkJMTA0MzQ6IFJfRlJWXzMyCVwuZ290Ci0gICAxMDQzODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA0Mzg6IFJfRlJWXzMyCVwudGV4dAorMDAwMDQ0MzQgPFwuRDA+OgorICAgIDQ0MzQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKwkJCTQ0MzQ6IFJfRlJWXzMyCVwuZ290CisgICAgNDQzODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDQzODogUl9GUlZfMzIJXC50ZXh0CiBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwuZ290OgogCi0wMDAxMDRiOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4OD46Ci0gICAxMDRiODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA0Yjg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTA0YmM6CTAwIDAwIDAwIDAyIAlhZGRcLnAgZ3IwLGZwLGdyMAorMDAwMDQ0YjggPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXy0weDg+OgorICAgIDQ0Yjg6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ0Yjg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ0YmM6CTAwIDAwIDAwIDAyIAlhZGRcLnAgZ3IwLGZwLGdyMAogCi0wMDAxMDRjMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKKzAwMDA0NGMwIDxfR0xPQkFMX09GRlNFVF9UQUJMRV8+OgogCVwuXC5cLgotICAgMTA0Y2M6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNGNjOiBSX0ZSVl8zMglcLnRleHQKLSAgIDEwNGQwOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0JCQkxMDRkMDogUl9GUlZfMzIJXC5nb3QKLSAgIDEwNGQ0OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDRkNDogUl9GUlZfMzIJXC5kYXRhCisgICAgNDRjYzoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDRjYzogUl9GUlZfMzIJXC50ZXh0CisgICAgNDRkMDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorCQkJNDRkMDogUl9GUlZfMzIJXC5nb3QKKyAgICA0NGQ0OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NGQ0OiBSX0ZSVl8zMglcLmRhdGEKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtcGllLTIuZCBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtcGllLTIuZAppbmRleCBmYjc2OTFhLi5mYjVlMWU2IDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXBpZS0yLmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1waWUtMi5kCkBAIC0zMiwzOSArMzIsNDEgQEAKICA2MTg6CTgwIGY4IDAwIDAwIAlzZXRoaSBoaVwoMHgwXCksZ3IwCiBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwuZGF0YToKIAotMDAwMTA2MzAgPEQyPjoKLSAgIDEwNjMwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDYzMDogUl9GUlZfMzIJXC5kYXRhCiswMDAwNDYzMCA8RDI+OgorICAgIDQ2MzA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ2MzA6IFJfRlJWXzMyCVwuZGF0YQogCi0wMDAxMDYzNCA8R0QwPjoKLSAgIDEwNjM0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0JCQkxMDYzNDogUl9GUlZfRlVOQ0RFU0MJR0ZiCi0gICAxMDYzODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA2Mzg6IFJfRlJWXzMyCVwudGV4dAorMDAwMDQ2MzQgPEdEMD46CisgICAgNDYzNDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDYzNDogUl9GUlZfRlVOQ0RFU0MJXC50ZXh0CisgICAgNDYzODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDYzODogUl9GUlZfMzIJXC50ZXh0CiBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwuZ290OgogCi0wMDAxMDZiOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4MTg+OgotICAgMTA2Yjg6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNmI4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNmJjOgkwMCAwMCAwMCAwMiAJYWRkXC5wIGdyMCxmcCxncjAKLSAgIDEwNmMwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDZjMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDZjNDoJMDAgMDAgMDAgMDIgCWFkZFwucCBncjAsZnAsZ3IwCi0gICAxMDZjODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA2Yzg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTA2Y2M6CTAwIDAwIDAwIDAyIAlhZGRcLnAgZ3IwLGZwLGdyMAorMDAwMDQ2YjggPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXy0weDE4PjoKKyAgICA0NmI4OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NmI4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0NmJjOgkwMCAwMCAwMCAwMiAJYWRkXC5wIGdyMCxmcCxncjAKKyAgICA0NmMwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NmMwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0NmM0OgkwMCAwMCAwMCAwMiAJYWRkXC5wIGdyMCxmcCxncjAKKyAgICA0NmM4OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NmM4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0NmNjOgkwMCAwMCAwMCAwMiAJYWRkXC5wIGdyMCxmcCxncjAKIAotMDAwMTA2ZDAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXz46CiswMDAwNDZkMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKIAlcLlwuXC4KLQkJCTEwNmRjOiBSX0ZSVl9GVU5DREVTQwlHRjQKLSAgIDEwNmUwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDZlMDogUl9GUlZfMzIJXC50ZXh0Ci0JXC5cLlwuCi0JCQkxMDZlNDogUl9GUlZfRlVOQ0RFU0MJR0Y2Ci0JCQkxMDZlODogUl9GUlZfRlVOQ0RFU0MJR0Y1Ci0gICAxMDZlYzoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA2ZWM6IFJfRlJWXzMyCVwuZGF0YQotICAgMTA2ZjA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNmYwOiBSX0ZSVl8zMglcLnRleHQKLSAgIDEwNmY0OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDZmNDogUl9GUlZfMzIJXC50ZXh0CisgICAgNDZkYzoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDZkYzogUl9GUlZfRlVOQ0RFU0MJXC50ZXh0CisgICAgNDZlMDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDZlMDogUl9GUlZfMzIJXC50ZXh0CisgICAgNDZlNDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDZlNDogUl9GUlZfRlVOQ0RFU0MJXC50ZXh0CisgICAgNDZlODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDZlODogUl9GUlZfRlVOQ0RFU0MJXC50ZXh0CisgICAgNDZlYzoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDZlYzogUl9GUlZfMzIJXC5kYXRhCisgICAgNDZmMDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDZmMDogUl9GUlZfMzIJXC50ZXh0CisgICAgNDZmNDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDZmNDogUl9GUlZfMzIJXC50ZXh0CmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXBpZS02LmQgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXBpZS02LmQKaW5kZXggZWFjYTY3MS4uYzkyNjNmNyAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1waWUtNi5kCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtcGllLTYuZApAQCAtMSw2ICsxLDc0IEBACi0jbmFtZTogRlJWIHVDbGludXggUElDIHJlbG9jcyB0byB1bmRlZmluZWQgc3ltYm9scywgcGllIGxpbmtpbmcKKyNuYW1lOiBGUlYgdUNsaW51eCBQSUMgcmVsb2NzIHRvIHdlYWsgdW5kZWZpbmVkIHN5bWJvbHMsIHBpZSBsaW5raW5nCiAjc291cmNlOiBmZHBpYzYucwogI29iamR1bXA6IC1EUiAtaiAudGV4dCAtaiAuZGF0YSAtaiAuZ290IC1qIC5wbHQKICNhczogLW1mZHBpYwotI2xkOiAtcGllCi0jZXJyb3I6IGRpZmZlcmVudCBzZWdtZW50cworI2xkOiAtcGllIC0tZGVmc3ltIFdEMT1ENgorCisuKjogICAgIGZpbGUgZm9ybWF0IGVsZi4qZnJ2LioKKworRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLnBsdDoKKworMDAwMDA1YTggPFwucGx0PjoKKyA1YTg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKyA1YWM6CWMwIDFhIDAwIDA2IAlicmEgNWM0IDxGNi0weDEwPgorIDViMDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorIDViNDoJYzAgMWEgMDAgMDQgCWJyYSA1YzQgPEY2LTB4MTA+CisgNWI4OgkwMCAwMCAwMCAxMCAJYWRkXC5wIGdyMCxncjE2LGdyMAorIDViYzoJYzAgMWEgMDAgMDIgCWJyYSA1YzQgPEY2LTB4MTA+CisgNWMwOgkwMCAwMCAwMCAxOCAJYWRkXC5wIGdyMCxncjI0LGdyMAorIDVjNDoJODggMDggZjEgNDAgCWxkZCBAXChncjE1LGdyMFwpLGdyNAorIDVjODoJODAgMzAgNDAgMDAgCWptcGwgQFwoZ3I0LGdyMFwpCisgNWNjOgk5YyBjYyBmZiBmMCAJbGRkaSBAXChncjE1LC0xNlwpLGdyMTQKKyA1ZDA6CTgwIDMwIGUwIDAwIAlqbXBsIEBcKGdyMTQsZ3IwXCkKK0Rpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC50ZXh0OgorCiswMDAwMDVkNCA8RjY+OgorIDVkNDoJZmUgM2YgZmYgZmUgCWNhbGwgNWNjIDxGNi0weDg+CisgNWQ4Ogk4MCA0MCBmMCAwYyAJYWRkaSBncjE1LDEyLGdyMAorIDVkYzoJODAgZmMgMDAgMjQgCXNldGxvcyAweDI0LGdyMAorIDVlMDoJODAgZjQgMDAgMjAgCXNldGxvIDB4MjAsZ3IwCisgNWU0Ogk4MCBmOCAwMCAwMCAJc2V0aGkgaGlcKDB4MFwpLGdyMAorIDVlODoJODAgNDAgZjAgMTAgCWFkZGkgZ3IxNSwxNixncjAKKyA1ZWM6CTgwIGZjIDAwIDE4IAlzZXRsb3MgMHgxOCxncjAKKyA1ZjA6CTgwIGY0IDAwIDFjIAlzZXRsbyAweDFjLGdyMAorIDVmNDoJODAgZjggMDAgMDAgCXNldGhpIGhpXCgweDBcKSxncjAKKyA1Zjg6CTgwIDQwIGZmIGY4IAlhZGRpIGdyMTUsLTgsZ3IwCisgNWZjOgk4MCBmYyBmZiBlOCAJc2V0bG9zIDB4ZmZmZmZmZTgsZ3IwCisgNjAwOgk4MCBmNCBmZiBlMCAJc2V0bG8gMHhmZmUwLGdyMAorIDYwNDoJODAgZjggZmYgZmYgCXNldGhpIDB4ZmZmZixncjAKKyA2MDg6CTgwIGY0IGZmIDQ0IAlzZXRsbyAweGZmNDQsZ3IwCisgNjBjOgk4MCBmOCBmZiBmZiAJc2V0aGkgMHhmZmZmLGdyMAorIDYxMDoJODAgZjQgMDAgMTQgCXNldGxvIDB4MTQsZ3IwCisgNjE0Ogk4MCBmOCAwMCAwMCAJc2V0aGkgaGlcKDB4MFwpLGdyMAorRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmRhdGE6CisKKzAwMDA0NjJjIDxENj46CisJXC5cLlwuCisJCQk0NjJjOiBSX0ZSVl8zMglXRDAKKwkJCTQ2MzA6IFJfRlJWX0ZVTkNERVNDCVdGYgorCQkJNDYzNDogUl9GUlZfMzIJV0ZiCitEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwuZ290OgorCiswMDAwNDZjOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4MjA+OgorICAgIDQ2Yzg6CTAwIDAwIDA1IGM0IAlzdWJ4Y2NcLnAgZ3IwLGdyNCxncjAsaWNjMQorCQkJNDZjODogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJV0Y5CisgICAgNDZjYzoJMDAgMDAgMDAgMDIgCWFkZFwucCBncjAsZnAsZ3IwCisgICAgNDZkMDoJMDAgMDAgMDUgYmMgCXN1YnhcLnAgZ3IwLGdyNjAsZ3IwLGljYzEKKwkJCTQ2ZDA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVdGOAorICAgIDQ2ZDQ6CTAwIDAwIDAwIDAyIAlhZGRcLnAgZ3IwLGZwLGdyMAorICAgIDQ2ZDg6CTAwIDAwIDA1IGI0IAlzdWJ4XC5wIGdyMCxncjUyLGdyMCxpY2MxCisJCQk0NmQ4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlXRjAKKyAgICA0NmRjOgkwMCAwMCAwMCAwMiAJYWRkXC5wIGdyMCxmcCxncjAKKyAgICA0NmUwOgkwMCAwMCAwNSBhYyAJc3VieFwucCBncjAsZ3I0NCxncjAsaWNjMQorCQkJNDZlMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJV0Y3CisgICAgNDZlNDoJMDAgMDAgMDAgMDIgCWFkZFwucCBncjAsZnAsZ3IwCisKKzAwMDA0NmU4IDxfR0xPQkFMX09GRlNFVF9UQUJMRV8+OgorCVwuXC5cLgorCQkJNDZmNDogUl9GUlZfMzIJV0YxCisJCQk0NmY4OiBSX0ZSVl9GVU5DREVTQwlXRjQKKwkJCTQ2ZmM6IFJfRlJWXzMyCVdEMgorCQkJNDcwMDogUl9GUlZfRlVOQ0RFU0MJV0Y1CisJCQk0NzA0OiBSX0ZSVl9GVU5DREVTQwlXRjYKKwkJCTQ3MDg6IFJfRlJWXzMyCVdGMworCQkJNDcwYzogUl9GUlZfMzIJV0YyCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXBpZS03LmQgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXBpZS03LmQKaW5kZXggYTNmMDQ3OC4uNjdhNmFiZiAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1waWUtNy5kCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtcGllLTcuZApAQCAtMzIsMjcgKzMyLDI3IEBACiAgNDE4Ogk4MCBmOCAwMCAwMCAJc2V0aGkgaGlcKDB4MFwpLGdyMAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmRhdGE6CiAKLTAwMDEwNDMwIDxENz46Ci0gICAxMDQzMDoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTA0MzA6IFJfRlJWXzMyCVwuZGF0YQorMDAwMDQ0MzAgPEQ3PjoKKyAgICA0NDMwOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCisJCQk0NDMwOiBSX0ZSVl8zMglcLmRhdGEKIAotMDAwMTA0MzQgPFwuRDA+OgotICAgMTA0MzQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLQkJCTEwNDM0OiBSX0ZSVl8zMglcLmdvdAotICAgMTA0Mzg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNDM4OiBSX0ZSVl8zMglcLnRleHQKKzAwMDA0NDM0IDxcLkQwPjoKKyAgICA0NDM0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisJCQk0NDM0OiBSX0ZSVl8zMglcLmdvdAorICAgIDQ0Mzg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ0Mzg6IFJfRlJWXzMyCVwudGV4dAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmdvdDoKIAotMDAwMTA0YjggPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXy0weDg+OgotICAgMTA0Yjg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNGI4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNGJjOgkwMCAwMCAwMCAwMiAJYWRkXC5wIGdyMCxmcCxncjAKKzAwMDA0NGI4IDxfR0xPQkFMX09GRlNFVF9UQUJMRV8tMHg4PjoKKyAgICA0NGI4OgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCisJCQk0NGI4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0NGJjOgkwMCAwMCAwMCAwMiAJYWRkXC5wIGdyMCxmcCxncjAKIAotMDAwMTA0YzAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXz46CiswMDAwNDRjMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKIAlcLlwuXC4KLSAgIDEwNGNjOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDRjYzogUl9GUlZfMzIJXC50ZXh0Ci0gICAxMDRkMDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotCQkJMTA0ZDA6IFJfRlJWXzMyCVwuZ290Ci0gICAxMDRkNDoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTA0ZDQ6IFJfRlJWXzMyCVwuZGF0YQorICAgIDQ0Y2M6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ0Y2M6IFJfRlJWXzMyCVwudGV4dAorICAgIDQ0ZDA6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKwkJCTQ0ZDA6IFJfRlJWXzMyCVwuZ290CisgICAgNDRkNDoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAorCQkJNDRkNDogUl9GUlZfMzIJXC5kYXRhCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXBpZS04LWZhaWwuZCBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtcGllLTgtZmFpbC5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzk3YjZhLi4wMDAwMDAwCi0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtcGllLTgtZmFpbC5kCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0jbmFtZTogRlJWIHVDbGludXggUElDIHJlbG9jcyB0byBnbG9iYWwgc3ltYm9scyB3aXRoIGFkZGVuZHMsIGZhaWxpbmcgcGllIGxpbmtpbmcKLSNzb3VyY2U6IGZkcGljOC5zCi0jb2JqZHVtcDogLURSIC1qIC50ZXh0IC1qIC5kYXRhIC1qIC5nb3QgLWogLnBsdAotI2FzOiAtbWZkcGljCi0jbGQ6IC1waWUKLSNlcnJvcjogbm9uemVybyBhZGRlbmQKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtcGllLTguZCBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtcGllLTguZAppbmRleCA4ODJmODE2Li4yMGIwZWEwIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXBpZS04LmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1waWUtOC5kCkBAIC0yLDgzICsyLDcxIEBACiAjc291cmNlOiBmZHBpYzgucwogI29iamR1bXA6IC1EUiAtaiAudGV4dCAtaiAuZGF0YSAtaiAuZ290IC1qIC5wbHQKICNhczogLW1mZHBpYwotI2xkOiAtcGllIC0tdmVyc2lvbi1zY3JpcHQgZmRwaWM4bWluLmxkdgorI2xkOiAtcGllCiAKIC4qOiAgICAgZmlsZSBmb3JtYXQgZWxmLipmcnYuKgogCiBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwudGV4dDoKIAotMDAwMDA0OTggPEY4PjoKLSA0OTg6CTgwIDNjIDAwIDAyIAljYWxsIDRhMCA8R0YxXCsweDQ+CiswMDAwMDVkMCA8Rjg+OgorIDVkMDoJODAgM2MgMDAgMDIgCWNhbGwgNWQ4IDxHRjBcKzB4ND4KIAotMDAwMDA0OWMgPEdGMT46Ci0gNDljOgk4MCA0MCBmMCAxMCAJYWRkaSBncjE1LDE2LGdyMAotIDRhMDoJODAgZmMgMDAgMTQgCXNldGxvcyAweDE0LGdyMAotIDRhNDoJODAgZjQgMDAgMjQgCXNldGxvIDB4MjQsZ3IwCi0gNGE4Ogk4MCBmOCAwMCAwMCAJc2V0aGkgaGlcKDB4MFwpLGdyMAotIDRhYzoJODAgNDAgZjAgMGMgCWFkZGkgZ3IxNSwxMixncjAKLSA0YjA6CTgwIGZjIDAwIDFjIAlzZXRsb3MgMHgxYyxncjAKLSA0YjQ6CTgwIGY0IDAwIDE4IAlzZXRsbyAweDE4LGdyMAotIDRiODoJODAgZjggMDAgMDAgCXNldGhpIGhpXCgweDBcKSxncjAKLSA0YmM6CTgwIDQwIGZmIGY4IAlhZGRpIGdyMTUsLTgsZ3IwCi0gNGMwOgk4MCBmYyBmZiBmMCAJc2V0bG9zIDB4ZmZmZmZmZjAsZ3IwCi0gNGM0Ogk4MCBmNCBmZiBjOCAJc2V0bG8gMHhmZmM4LGdyMAotIDRjODoJODAgZjggZmYgZmYgCXNldGhpIDB4ZmZmZixncjAKLSA0Y2M6CTgwIDQwIGZmIDQ4IAlhZGRpIGdyMTUsLTE4NCxncjAKLSA0ZDA6CTgwIGZjIGZmIDQ4IAlzZXRsb3MgMHhmZmZmZmY0OCxncjAKLSA0ZDQ6CTgwIGY0IGZmIDQ4IAlzZXRsbyAweGZmNDgsZ3IwCi0gNGQ4Ogk4MCBmOCBmZiBmZiAJc2V0aGkgMHhmZmZmLGdyMAotIDRkYzoJODAgZjQgMDAgMjAgCXNldGxvIDB4MjAsZ3IwCi0gNGUwOgk4MCBmOCAwMCAwMCAJc2V0aGkgaGlcKDB4MFwpLGdyMAorMDAwMDA1ZDQgPEdGMD46CisgNWQ0Ogk4MCA0MCBmMCAxMCAJYWRkaSBncjE1LDE2LGdyMAorIDVkODoJODAgZmMgMDAgMTQgCXNldGxvcyAweDE0LGdyMAorIDVkYzoJODAgZjQgMDAgMjQgCXNldGxvIDB4MjQsZ3IwCisgNWUwOgk4MCBmOCAwMCAwMCAJc2V0aGkgaGlcKDB4MFwpLGdyMAorIDVlNDoJODAgNDAgZjAgMGMgCWFkZGkgZ3IxNSwxMixncjAKKyA1ZTg6CTgwIGZjIDAwIDFjIAlzZXRsb3MgMHgxYyxncjAKKyA1ZWM6CTgwIGY0IDAwIDE4IAlzZXRsbyAweDE4LGdyMAorIDVmMDoJODAgZjggMDAgMDAgCXNldGhpIGhpXCgweDBcKSxncjAKKyA1ZjQ6CTgwIDQwIGZmIGY4IAlhZGRpIGdyMTUsLTgsZ3IwCisgNWY4Ogk4MCBmYyBmZiBmMCAJc2V0bG9zIDB4ZmZmZmZmZjAsZ3IwCisgNWZjOgk4MCBmNCBmZiBlOCAJc2V0bG8gMHhmZmU4LGdyMAorIDYwMDoJODAgZjggZmYgZmYgCXNldGhpIDB4ZmZmZixncjAKKyA2MDQ6CTgwIDQwIGZmIDY4IAlhZGRpIGdyMTUsLTE1MixncjAKKyA2MDg6CTgwIGZjIGZmIDY4IAlzZXRsb3MgMHhmZmZmZmY2OCxncjAKKyA2MGM6CTgwIGY0IGZmIDY4IAlzZXRsbyAweGZmNjgsZ3IwCisgNjEwOgk4MCBmOCBmZiBmZiAJc2V0aGkgMHhmZmZmLGdyMAorIDYxNDoJODAgZjQgMDAgMjAgCXNldGxvIDB4MjAsZ3IwCisgNjE4Ogk4MCBmOCAwMCAwMCAJc2V0aGkgaGlcKDB4MFwpLGdyMAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmRhdGE6CiAKLTAwMDEwNGY4IDxEOD46Ci0gICAxMDRmODoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTA0Zjg6IFJfRlJWXzMyCVwuZGF0YQorMDAwMDQ2MzAgPEQ4PjoKKyAgICA0NjMwOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCisJCQk0NjMwOiBSX0ZSVl8zMglcLmRhdGEKIAotMDAwMTA0ZmMgPEdEMD46Ci0gICAxMDRmYzoJMDAgMDAgMDAgMTAgCWFkZFwucCBncjAsZ3IxNixncjAKLQkJCTEwNGZjOiBSX0ZSVl8zMglcLmdvdAotICAgMTA1MDA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNTAwOiBSX0ZSVl8zMglcLnRleHQKKzAwMDA0NjM0IDxHRDA+OgorICAgIDQ2MzQ6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ2MzQ6IFJfRlJWX0ZVTkNERVNDCVwudGV4dAorICAgIDQ2Mzg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ2Mzg6IFJfRlJWXzMyCVwudGV4dAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmdvdDoKIAotMDAwMTA1ODAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXy0weDM4PjoKLSAgIDEwNTgwOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDU4MDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDU4NDoJMDAgMDAgMDAgMDIgCWFkZFwucCBncjAsZnAsZ3IwCi0gICAxMDU4ODoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTA1ODg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTA1OGM6CTAwIDAwIDAwIDAyIAlhZGRcLnAgZ3IwLGZwLGdyMAotICAgMTA1OTA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNTkwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNTk0OgkwMCAwMCAwMCAwMiAJYWRkXC5wIGdyMCxmcCxncjAKLSAgIDEwNTk4OgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDU5ODogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDU5YzoJMDAgMDAgMDAgMDIgCWFkZFwucCBncjAsZnAsZ3IwCi0gICAxMDVhMDoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTA1YTA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTA1YTQ6CTAwIDAwIDAwIDAyIAlhZGRcLnAgZ3IwLGZwLGdyMAotICAgMTA1YTg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNWE4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNWFjOgkwMCAwMCAwMCAwMiAJYWRkXC5wIGdyMCxmcCxncjAKLSAgIDEwNWIwOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDViMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDViNDoJMDAgMDAgMDAgMDIgCWFkZFwucCBncjAsZnAsZ3IwCiswMDAwNDZiOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4MTg+OgorICAgIDQ2Yjg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ2Yjg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ2YmM6CTAwIDAwIDAwIDAyIAlhZGRcLnAgZ3IwLGZwLGdyMAorICAgIDQ2YzA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ2YzA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ2YzQ6CTAwIDAwIDAwIDAyIAlhZGRcLnAgZ3IwLGZwLGdyMAorICAgIDQ2Yzg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ2Yzg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ2Y2M6CTAwIDAwIDAwIDAyIAlhZGRcLnAgZ3IwLGZwLGdyMAogCi0wMDAxMDViOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKKzAwMDA0NmQwIDxfR0xPQkFMX09GRlNFVF9UQUJMRV8+OgogCVwuXC5cLgotICAgMTA1YzQ6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNWM0OiBSX0ZSVl8zMglcLmdvdAotICAgMTA1Yzg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNWM4OiBSX0ZSVl8zMglcLnRleHQKLSAgIDEwNWNjOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDVjYzogUl9GUlZfMzIJXC50ZXh0Ci0gICAxMDVkMDoJMDAgMDAgMDAgMjAgCWFkZFwucCBncjAsZ3IzMixncjAKLQkJCTEwNWQwOiBSX0ZSVl8zMglcLmdvdAotICAgMTA1ZDQ6CTAwIDAwIDAwIDE4IAlhZGRcLnAgZ3IwLGdyMjQsZ3IwCi0JCQkxMDVkNDogUl9GUlZfMzIJXC5nb3QKLSAgIDEwNWQ4OgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDVkODogUl9GUlZfMzIJXC5kYXRhCi0gICAxMDVkYzoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTA1ZGM6IFJfRlJWXzMyCVwudGV4dAorICAgIDQ2ZGM6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ2ZGM6IFJfRlJWX0ZVTkNERVNDCVwudGV4dAorICAgIDQ2ZTA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ2ZTA6IFJfRlJWXzMyCVwudGV4dAorICAgIDQ2ZTQ6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ2ZTQ6IFJfRlJWXzMyCVwudGV4dAorICAgIDQ2ZTg6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ2ZTg6IFJfRlJWX0ZVTkNERVNDCVwudGV4dAorICAgIDQ2ZWM6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ2ZWM6IFJfRlJWX0ZVTkNERVNDCVwudGV4dAorICAgIDQ2ZjA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ2ZjA6IFJfRlJWXzMyCVwuZGF0YQorICAgIDQ2ZjQ6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ2ZjQ6IFJfRlJWXzMyCVwudGV4dApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtMS5kIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtMS5kCmluZGV4IGFlYjNiYzQuLmYwYzVjZTggMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc2hhcmVkLTEuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXNoYXJlZC0xLmQKQEAgLTMyLDI3ICszMiwyNyBAQAogIDQyNDoJODAgZjggMDAgMDAgCXNldGhpIGhpXCgweDBcKSxncjAKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5kYXRhOgogCi0wMDAxMDQyYyA8RDE+OgotICAgMTA0MmM6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNDJjOiBSX0ZSVl8zMglcLmRhdGEKKzAwMDA0NDJjIDxEMT46CisgICAgNDQyYzoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDQyYzogUl9GUlZfMzIJXC5kYXRhCiAKLTAwMDEwNDMwIDxcLkQwPjoKLSAgIDEwNDMwOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0JCQkxMDQzMDogUl9GUlZfMzIJXC5nb3QKLSAgIDEwNDM0OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDQzNDogUl9GUlZfMzIJXC50ZXh0CiswMDAwNDQzMCA8XC5EMD46CisgICAgNDQzMDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorCQkJNDQzMDogUl9GUlZfMzIJXC5nb3QKKyAgICA0NDM0OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NDM0OiBSX0ZSVl8zMglcLnRleHQKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5nb3Q6CiAKLTAwMDEwNGIwIDxfR0xPQkFMX09GRlNFVF9UQUJMRV8tMHg4PjoKLSAgIDEwNGIwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDRiMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDRiNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorMDAwMDQ0YjAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXy0weDg+OgorICAgIDQ0YjA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ0YjA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ0YjQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKIAotMDAwMTA0YjggPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXz46CiswMDAwNDRiOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKIAlcLlwuXC4KLSAgIDEwNGM0OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDRjNDogUl9GUlZfMzIJXC50ZXh0Ci0gICAxMDRjODoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotCQkJMTA0Yzg6IFJfRlJWXzMyCVwuZ290Ci0gICAxMDRjYzoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA0Y2M6IFJfRlJWXzMyCVwuZGF0YQorICAgIDQ0YzQ6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ0YzQ6IFJfRlJWXzMyCVwudGV4dAorICAgIDQ0Yzg6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKwkJCTQ0Yzg6IFJfRlJWXzMyCVwuZ290CisgICAgNDRjYzoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDRjYzogUl9GUlZfMzIJXC5kYXRhCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXNoYXJlZC0yLmQgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXNoYXJlZC0yLmQKaW5kZXggYjUwNjc4OC4uMDRiN2Y5OCAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtMi5kCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc2hhcmVkLTIuZApAQCAtNDYsMzYgKzQ2LDM2IEBACiAgNjNjOgk4MCBmOCAwMCAwMCAJc2V0aGkgaGlcKDB4MFwpLGdyMAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmRhdGE6CiAKLTAwMDEwNjQ0IDxEMj46Ci0gICAxMDY0NDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotCQkJMTA2NDQ6IFJfRlJWXzMyCUdEMAorMDAwMDQ2NDQgPEQyPjoKKyAgICA0NjQ0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisJCQk0NjQ0OiBSX0ZSVl8zMglHRDAKIAotMDAwMTA2NDggPEdEMD46CiswMDAwNDY0OCA8R0QwPjoKIAlcLlwuXC4KLQkJCTEwNjQ4OiBSX0ZSVl9GVU5DREVTQwlHRmIKLQkJCTEwNjRjOiBSX0ZSVl8zMglHRmIKKwkJCTQ2NDg6IFJfRlJWX0ZVTkNERVNDCUdGYgorCQkJNDY0YzogUl9GUlZfMzIJR0ZiCiBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwuZ290OgogCi0wMDAxMDZlMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4MjA+OgotICAgMTA2ZTA6CTAwIDAwIDA1IGRjIAlzdWJ4Y2NcLnAgZ3IwLGdyMjgsZ3IwLGljYzEKLQkJCTEwNmUwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlHRjkKLSAgIDEwNmU0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDZlODoJMDAgMDAgMDUgZDQgCXN1YnhjY1wucCBncjAsZ3IyMCxncjAsaWNjMQotCQkJMTA2ZTg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCUdGOAotICAgMTA2ZWM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLSAgIDEwNmYwOgkwMCAwMCAwNSBlNCAJc3VieGNjXC5wIGdyMCxncjM2LGdyMCxpY2MxCi0JCQkxMDZmMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJR0Y3Ci0gICAxMDZmNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotICAgMTA2Zjg6CTAwIDAwIDA1IGNjIAlzdWJ4Y2NcLnAgZ3IwLGdyMTIsZ3IwLGljYzEKLQkJCTEwNmY4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlHRjAKLSAgIDEwNmZjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCiswMDAwNDZlMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4MjA+OgorICAgIDQ2ZTA6CTAwIDAwIDA1IGRjIAlzdWJ4Y2NcLnAgZ3IwLGdyMjgsZ3IwLGljYzEKKwkJCTQ2ZTA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCUdGOQorICAgIDQ2ZTQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKyAgICA0NmU4OgkwMCAwMCAwNSBkNCAJc3VieGNjXC5wIGdyMCxncjIwLGdyMCxpY2MxCisJCQk0NmU4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlHRjgKKyAgICA0NmVjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDZmMDoJMDAgMDAgMDUgZTQgCXN1YnhjY1wucCBncjAsZ3IzNixncjAsaWNjMQorCQkJNDZmMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJR0Y3CisgICAgNDZmNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorICAgIDQ2Zjg6CTAwIDAwIDA1IGNjIAlzdWJ4Y2NcLnAgZ3IwLGdyMTIsZ3IwLGljYzEKKwkJCTQ2Zjg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCUdGMAorICAgIDQ2ZmM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKIAotMDAwMTA3MDAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXz46CiswMDAwNDcwMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKIAlcLlwuXC4KLQkJCTEwNzBjOiBSX0ZSVl9GVU5DREVTQwlHRjQKLQkJCTEwNzEwOiBSX0ZSVl8zMglHRjEKLQkJCTEwNzE0OiBSX0ZSVl9GVU5DREVTQwlHRjYKLQkJCTEwNzE4OiBSX0ZSVl9GVU5DREVTQwlHRjUKLQkJCTEwNzFjOiBSX0ZSVl8zMglHRDQKLQkJCTEwNzIwOiBSX0ZSVl8zMglHRjMKLQkJCTEwNzI0OiBSX0ZSVl8zMglHRjIKKwkJCTQ3MGM6IFJfRlJWX0ZVTkNERVNDCUdGNAorCQkJNDcxMDogUl9GUlZfMzIJR0YxCisJCQk0NzE0OiBSX0ZSVl9GVU5DREVTQwlHRjYKKwkJCTQ3MTg6IFJfRlJWX0ZVTkNERVNDCUdGNQorCQkJNDcxYzogUl9GUlZfMzIJR0Q0CisJCQk0NzIwOiBSX0ZSVl8zMglHRjMKKwkJCTQ3MjQ6IFJfRlJWXzMyCUdGMgpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtMy5kIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtMy5kCmluZGV4IDYyNTk3NWIuLjNjN2QwM2EgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc2hhcmVkLTMuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXNoYXJlZC0zLmQKQEAgLTMyLDUzICszMiw1MyBAQAogIDQ3NDoJODAgZjggMDAgMDAgCXNldGhpIGhpXCgweDBcKSxncjAKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5kYXRhOgogCi0wMDAxMDQ3YyA8RDM+OgotICAgMTA0N2M6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNDdjOiBSX0ZSVl8zMglcLmRhdGEKKzAwMDA0NDdjIDxEMz46CisgICAgNDQ3YzoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDQ3YzogUl9GUlZfMzIJXC5kYXRhCiAKLTAwMDEwNDgwIDxIRDA+OgotICAgMTA0ODA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNDgwOiBSX0ZSVl8zMglcLmdvdAotICAgMTA0ODQ6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNDg0OiBSX0ZSVl8zMglcLnRleHQKKzAwMDA0NDgwIDxIRDA+OgorICAgIDQ0ODA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ0ODA6IFJfRlJWXzMyCVwuZ290CisgICAgNDQ4NDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDQ4NDogUl9GUlZfMzIJXC50ZXh0CiBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwuZ290OgogCi0wMDAxMDUwMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4Mzg+OgotICAgMTA1MDA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNTAwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNTA0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDUwODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA1MDg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTA1MGM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLSAgIDEwNTEwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDUxMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDUxNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotICAgMTA1MTg6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNTE4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNTFjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDUyMDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA1MjA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTA1MjQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLSAgIDEwNTI4OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDUyODogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDUyYzoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotICAgMTA1MzA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNTMwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNTM0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCiswMDAwNDUwMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4Mzg+OgorICAgIDQ1MDA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ1MDA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ1MDQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKyAgICA0NTA4OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NTA4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0NTBjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDUxMDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDUxMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0CisgICAgNDUxNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorICAgIDQ1MTg6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ1MTg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ1MWM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKyAgICA0NTIwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NTIwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0NTI0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDUyODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDUyODogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0CisgICAgNDUyYzoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorICAgIDQ1MzA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ1MzA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ1MzQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKIAotMDAwMTA1MzggPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXz46CiswMDAwNDUzOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKIAlcLlwuXC4KLSAgIDEwNTQ0OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDU0NDogUl9GUlZfMzIJXC50ZXh0Ci0gICAxMDU0ODoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotCQkJMTA1NDg6IFJfRlJWXzMyCVwuZ290Ci0gICAxMDU0YzoJMDAgMDAgMDAgMjggCWFkZFwucCBncjAsZ3I0MCxncjAKLQkJCTEwNTRjOiBSX0ZSVl8zMglcLmdvdAotICAgMTA1NTA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNTUwOiBSX0ZSVl8zMglcLnRleHQKLSAgIDEwNTU0OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDU1NDogUl9GUlZfMzIJXC50ZXh0Ci0gICAxMDU1ODoJMDAgMDAgMDAgMTggCWFkZFwucCBncjAsZ3IyNCxncjAKLQkJCTEwNTU4OiBSX0ZSVl8zMglcLmdvdAotICAgMTA1NWM6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNTVjOiBSX0ZSVl8zMglcLmRhdGEKKyAgICA0NTQ0OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NTQ0OiBSX0ZSVl8zMglcLnRleHQKKyAgICA0NTQ4OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisJCQk0NTQ4OiBSX0ZSVl8zMglcLmdvdAorICAgIDQ1NGM6CTAwIDAwIDAwIDI4IAlhZGRcLnAgZ3IwLGdyNDAsZ3IwCisJCQk0NTRjOiBSX0ZSVl8zMglcLmdvdAorICAgIDQ1NTA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ1NTA6IFJfRlJWXzMyCVwudGV4dAorICAgIDQ1NTQ6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ1NTQ6IFJfRlJWXzMyCVwudGV4dAorICAgIDQ1NTg6CTAwIDAwIDAwIDE4IAlhZGRcLnAgZ3IwLGdyMjQsZ3IwCisJCQk0NTU4OiBSX0ZSVl8zMglcLmdvdAorICAgIDQ1NWM6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ1NWM6IFJfRlJWXzMyCVwuZGF0YQpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtNC5kIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtNC5kCmluZGV4IGE0NDE4MzIuLjhjMTA5OGYgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc2hhcmVkLTQuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXNoYXJlZC00LmQKQEAgLTMyLDQwICszMiw0MSBAQAogIDY0YzoJODAgZjggMDAgMDAgCXNldGhpIGhpXCgweDBcKSxncjAKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5kYXRhOgogCi0wMDAxMDY1NCA8RDQ+OgotICAgMTA2NTQ6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNjU0OiBSX0ZSVl8zMglcLmRhdGEKKzAwMDA0NjU0IDxEND46CisgICAgNDY1NDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDY1NDogUl9GUlZfMzIJXC5kYXRhCiAKLTAwMDEwNjU4IDxQRDA+OgotICAgMTA2NTg6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLQkJCTEwNjU4OiBSX0ZSVl9GVU5DREVTQwlQRmIKLSAgIDEwNjVjOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDY1YzogUl9GUlZfMzIJXC50ZXh0CiswMDAwNDY1OCA8UEQwPjoKKyAgICA0NjU4OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NjU4OiBSX0ZSVl9GVU5DREVTQwlcLnRleHQKKyAgICA0NjVjOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NjVjOiBSX0ZSVl8zMglcLnRleHQKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5nb3Q6CiAKLTAwMDEwNmQ4IDxfR0xPQkFMX09GRlNFVF9UQUJMRV8tMHgxOD46Ci0gICAxMDZkODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA2ZDg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTA2ZGM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLSAgIDEwNmUwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDZlMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDZlNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotICAgMTA2ZTg6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNmU4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNmVjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCiswMDAwNDZkOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4MTg+OgorICAgIDQ2ZDg6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ2ZDg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ2ZGM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKyAgICA0NmUwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NmUwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0NmU0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDZlODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDZlODogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0CisgICAgNDZlYzoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAogCi0wMDAxMDZmMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKKzAwMDA0NmYwIDxfR0xPQkFMX09GRlNFVF9UQUJMRV8+OgogCVwuXC5cLgotCQkJMTA2ZmM6IFJfRlJWX0ZVTkNERVNDCVBGNAotICAgMTA3MDA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNzAwOiBSX0ZSVl8zMglcLnRleHQKLSAgIDEwNzA0OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDcwNDogUl9GUlZfMzIJXC5kYXRhCi0gICAxMDcwODoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotCQkJMTA3MDg6IFJfRlJWX0ZVTkNERVNDCVBGNgotICAgMTA3MGM6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNzBjOiBSX0ZSVl8zMglcLnRleHQKLSAgIDEwNzEwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDcxMDogUl9GUlZfMzIJXC50ZXh0Ci0gICAxMDcxNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotCQkJMTA3MTQ6IFJfRlJWX0ZVTkNERVNDCVBGNQorICAgIDQ2ZmM6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ2ZmM6IFJfRlJWX0ZVTkNERVNDCVwudGV4dAorICAgIDQ3MDA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ3MDA6IFJfRlJWXzMyCVwudGV4dAorICAgIDQ3MDQ6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ3MDQ6IFJfRlJWXzMyCVwuZGF0YQorICAgIDQ3MDg6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ3MDg6IFJfRlJWX0ZVTkNERVNDCVwudGV4dAorICAgIDQ3MGM6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ3MGM6IFJfRlJWXzMyCVwudGV4dAorICAgIDQ3MTA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ3MTA6IFJfRlJWXzMyCVwudGV4dAorICAgIDQ3MTQ6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ3MTQ6IFJfRlJWX0ZVTkNERVNDCVwudGV4dApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtNS5kIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtNS5kCmluZGV4IGQwNzY3ZjYuLjlmY2M5MzMgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc2hhcmVkLTUuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXNoYXJlZC01LmQKQEAgLTQwLDQ0ICs0MCw0NCBAQAogIDVmYzoJODAgZjggMDAgMDAgCXNldGhpIGhpXCgweDBcKSxncjAKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5kYXRhOgogCi0wMDAxMDYwNCA8RDU+OgotICAgMTA2MDQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLQkJCTEwNjA0OiBSX0ZSVl8zMglVRDAKLSAgIDEwNjA4OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0JCQkxMDYwODogUl9GUlZfRlVOQ0RFU0MJVUZiCi0gICAxMDYwYzoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotCQkJMTA2MGM6IFJfRlJWXzMyCVVGYgorMDAwMDQ2MDQgPEQ1PjoKKyAgICA0NjA0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisJCQk0NjA0OiBSX0ZSVl8zMglVRDAKKyAgICA0NjA4OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisJCQk0NjA4OiBSX0ZSVl9GVU5DREVTQwlVRmIKKyAgICA0NjBjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisJCQk0NjBjOiBSX0ZSVl8zMglVRmIKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5nb3Q6CiAKLTAwMDEwNmEwIDxfR0xPQkFMX09GRlNFVF9UQUJMRV8tMHgyMD46Ci0gICAxMDZhMDoJMDAgMDAgMDUgYjQgCXN1YnhcLnAgZ3IwLGdyNTIsZ3IwLGljYzEKLQkJCTEwNmEwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlVRjkKLSAgIDEwNmE0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDZhODoJMDAgMDAgMDUgOWMgCXN1YnhcLnAgZ3IwLGdyMjgsZ3IwLGljYzEKLQkJCTEwNmE4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlVRjgKLSAgIDEwNmFjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDZiMDoJMDAgMDAgMDUgYWMgCXN1YnhcLnAgZ3IwLGdyNDQsZ3IwLGljYzEKLQkJCTEwNmIwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlVRjAKLSAgIDEwNmI0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDZiODoJMDAgMDAgMDUgYTQgCXN1YnhcLnAgZ3IwLGdyMzYsZ3IwLGljYzEKLQkJCTEwNmI4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlVRjcKLSAgIDEwNmJjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCiswMDAwNDZhMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4MjA+OgorICAgIDQ2YTA6CTAwIDAwIDA1IGI0IAlzdWJ4XC5wIGdyMCxncjUyLGdyMCxpY2MxCisJCQk0NmEwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlVRjkKKyAgICA0NmE0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDZhODoJMDAgMDAgMDUgOWMgCXN1YnhcLnAgZ3IwLGdyMjgsZ3IwLGljYzEKKwkJCTQ2YTg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVVGOAorICAgIDQ2YWM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKyAgICA0NmIwOgkwMCAwMCAwNSBhYyAJc3VieFwucCBncjAsZ3I0NCxncjAsaWNjMQorCQkJNDZiMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJVUYwCisgICAgNDZiNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorICAgIDQ2Yjg6CTAwIDAwIDA1IGE0IAlzdWJ4XC5wIGdyMCxncjM2LGdyMCxpY2MxCisJCQk0NmI4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlVRjcKKyAgICA0NmJjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCiAKLTAwMDEwNmMwIDxfR0xPQkFMX09GRlNFVF9UQUJMRV8+OgotICAgMTA2YzA6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLSAgIDEwNmM0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDZjODoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotICAgMTA2Y2M6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLQkJCTEwNmNjOiBSX0ZSVl8zMglVRjEKLSAgIDEwNmQwOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0JCQkxMDZkMDogUl9GUlZfRlVOQ0RFU0MJVUY0Ci0gICAxMDZkNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotCQkJMTA2ZDQ6IFJfRlJWXzMyCVVEMQotICAgMTA2ZDg6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLQkJCTEwNmQ4OiBSX0ZSVl9GVU5DREVTQwlVRjYKLSAgIDEwNmRjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0JCQkxMDZkYzogUl9GUlZfRlVOQ0RFU0MJVUY1Ci0gICAxMDZlMDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotCQkJMTA2ZTA6IFJfRlJWXzMyCVVGMwotICAgMTA2ZTQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLQkJCTEwNmU0OiBSX0ZSVl8zMglVRjIKKzAwMDA0NmMwIDxfR0xPQkFMX09GRlNFVF9UQUJMRV8+OgorICAgIDQ2YzA6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKyAgICA0NmM0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDZjODoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorICAgIDQ2Y2M6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKwkJCTQ2Y2M6IFJfRlJWXzMyCVVGMQorICAgIDQ2ZDA6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKwkJCTQ2ZDA6IFJfRlJWX0ZVTkNERVNDCVVGNAorICAgIDQ2ZDQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKwkJCTQ2ZDQ6IFJfRlJWXzMyCVVEMQorICAgIDQ2ZDg6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKwkJCTQ2ZDg6IFJfRlJWX0ZVTkNERVNDCVVGNgorICAgIDQ2ZGM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKwkJCTQ2ZGM6IFJfRlJWX0ZVTkNERVNDCVVGNQorICAgIDQ2ZTA6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKwkJCTQ2ZTA6IFJfRlJWXzMyCVVGMworICAgIDQ2ZTQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKwkJCTQ2ZTQ6IFJfRlJWXzMyCVVGMgpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtNi5kIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtNi5kCmluZGV4IDQ5MmZlMWMuLjhiNTE2OGMgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc2hhcmVkLTYuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXNoYXJlZC02LmQKQEAgLTEsNiArMSw3NCBAQAotI25hbWU6IEZSViB1Q2xpbnV4IFBJQyByZWxvY3MgdG8gdW5kZWZpbmVkIHN5bWJvbHMsIHNoYXJlZCBsaW5raW5nCisjbmFtZTogRlJWIHVDbGludXggUElDIHJlbG9jcyB0byB3ZWFrIHVuZGVmaW5lZCBzeW1ib2xzLCBzaGFyZWQgbGlua2luZwogI3NvdXJjZTogZmRwaWM2LnMKICNvYmpkdW1wOiAtRFIgLWogLnRleHQgLWogLmRhdGEgLWogLmdvdCAtaiAucGx0CiAjYXM6IC1tZmRwaWMKLSNsZDogLXNoYXJlZAotI2Vycm9yOiBkaWZmZXJlbnQgc2VnbWVudHMKKyNsZDogLXNoYXJlZCAtLWRlZnN5bSBXRDE9RDYgLS12ZXJzaW9uLXNjcmlwdCBmZHBpYzYubGR2CisKKy4qOiAgICAgZmlsZSBmb3JtYXQgZWxmLipmcnYuKgorCitEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwucGx0OgorCiswMDAwMDQxYyA8XC5wbHQ+OgorIDQxYzoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAorIDQyMDoJYzAgMWEgMDAgMDYgCWJyYSA0MzggPEY2LTB4MTA+CisgNDI0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgNDI4OgljMCAxYSAwMCAwNCAJYnJhIDQzOCA8RjYtMHgxMD4KKyA0MmM6CTAwIDAwIDAwIDEwIAlhZGRcLnAgZ3IwLGdyMTYsZ3IwCisgNDMwOgljMCAxYSAwMCAwMiAJYnJhIDQzOCA8RjYtMHgxMD4KKyA0MzQ6CTAwIDAwIDAwIDE4IAlhZGRcLnAgZ3IwLGdyMjQsZ3IwCisgNDM4Ogk4OCAwOCBmMSA0MCAJbGRkIEBcKGdyMTUsZ3IwXCksZ3I0CisgNDNjOgk4MCAzMCA0MCAwMCAJam1wbCBAXChncjQsZ3IwXCkKKyA0NDA6CTljIGNjIGZmIGYwIAlsZGRpIEBcKGdyMTUsLTE2XCksZ3IxNAorIDQ0NDoJODAgMzAgZTAgMDAgCWptcGwgQFwoZ3IxNCxncjBcKQorRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLnRleHQ6CisKKzAwMDAwNDQ4IDxGNj46CisgNDQ4OglmZSAzZiBmZiBmZSAJY2FsbCA0NDAgPEY2LTB4OD4KKyA0NGM6CTgwIDQwIGYwIDBjIAlhZGRpIGdyMTUsMTIsZ3IwCisgNDUwOgk4MCBmYyAwMCAyNCAJc2V0bG9zIDB4MjQsZ3IwCisgNDU0Ogk4MCBmNCAwMCAyMCAJc2V0bG8gMHgyMCxncjAKKyA0NTg6CTgwIGY4IDAwIDAwIAlzZXRoaSBoaVwoMHgwXCksZ3IwCisgNDVjOgk4MCA0MCBmMCAxMCAJYWRkaSBncjE1LDE2LGdyMAorIDQ2MDoJODAgZmMgMDAgMTggCXNldGxvcyAweDE4LGdyMAorIDQ2NDoJODAgZjQgMDAgMWMgCXNldGxvIDB4MWMsZ3IwCisgNDY4Ogk4MCBmOCAwMCAwMCAJc2V0aGkgaGlcKDB4MFwpLGdyMAorIDQ2YzoJODAgNDAgZmYgZjggCWFkZGkgZ3IxNSwtOCxncjAKKyA0NzA6CTgwIGZjIGZmIGU4IAlzZXRsb3MgMHhmZmZmZmZlOCxncjAKKyA0NzQ6CTgwIGY0IGZmIGUwIAlzZXRsbyAweGZmZTAsZ3IwCisgNDc4Ogk4MCBmOCBmZiBmZiAJc2V0aGkgMHhmZmZmLGdyMAorIDQ3YzoJODAgZjQgZmYgNDAgCXNldGxvIDB4ZmY0MCxncjAKKyA0ODA6CTgwIGY4IGZmIGZmIAlzZXRoaSAweGZmZmYsZ3IwCisgNDg0Ogk4MCBmNCAwMCAxNCAJc2V0bG8gMHgxNCxncjAKKyA0ODg6CTgwIGY4IDAwIDAwIAlzZXRoaSBoaVwoMHgwXCksZ3IwCitEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwuZGF0YToKKworMDAwMDQ0OTAgPEQ2PjoKKwlcLlwuXC4KKwkJCTQ0OTA6IFJfRlJWXzMyCVdEMAorCQkJNDQ5NDogUl9GUlZfRlVOQ0RFU0MJV0ZiCisJCQk0NDk4OiBSX0ZSVl8zMglXRmIKK0Rpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5nb3Q6CisKKzAwMDA0NTMwIDxfR0xPQkFMX09GRlNFVF9UQUJMRV8tMHgyMD46CisgICAgNDUzMDoJMDAgMDAgMDQgMzggCVwqdW5rbm93blwqCisJCQk0NTMwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlXRjkKKyAgICA0NTM0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDUzODoJMDAgMDAgMDQgMzAgCVwqdW5rbm93blwqCisJCQk0NTM4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlXRjgKKyAgICA0NTNjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDU0MDoJMDAgMDAgMDQgMjggCVwqdW5rbm93blwqCisJCQk0NTQwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlXRjAKKyAgICA0NTQ0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDU0ODoJMDAgMDAgMDQgMjAgCVwqdW5rbm93blwqCisJCQk0NTQ4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlXRjcKKyAgICA0NTRjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisKKzAwMDA0NTUwIDxfR0xPQkFMX09GRlNFVF9UQUJMRV8+OgorCVwuXC5cLgorCQkJNDU1YzogUl9GUlZfMzIJV0YxCisJCQk0NTYwOiBSX0ZSVl9GVU5DREVTQwlXRjQKKwkJCTQ1NjQ6IFJfRlJWXzMyCVdEMgorCQkJNDU2ODogUl9GUlZfRlVOQ0RFU0MJV0Y1CisJCQk0NTZjOiBSX0ZSVl9GVU5DREVTQwlXRjYKKwkJCTQ1NzA6IFJfRlJWXzMyCVdGMworCQkJNDU3NDogUl9GUlZfMzIJV0YyCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXNoYXJlZC03LmQgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXNoYXJlZC03LmQKaW5kZXggMmI5NTYyMy4uODBjMjZkMyAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtNy5kCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc2hhcmVkLTcuZApAQCAtMzIsMjcgKzMyLDI3IEBACiAgNDI0Ogk4MCBmOCAwMCAwMCAJc2V0aGkgaGlcKDB4MFwpLGdyMAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmRhdGE6CiAKLTAwMDEwNDJjIDxENz46Ci0gICAxMDQyYzoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTA0MmM6IFJfRlJWXzMyCVwuZGF0YQorMDAwMDQ0MmMgPEQ3PjoKKyAgICA0NDJjOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCisJCQk0NDJjOiBSX0ZSVl8zMglcLmRhdGEKIAotMDAwMTA0MzAgPFwuRDA+OgotICAgMTA0MzA6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLQkJCTEwNDMwOiBSX0ZSVl8zMglcLmdvdAotICAgMTA0MzQ6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNDM0OiBSX0ZSVl8zMglcLnRleHQKKzAwMDA0NDMwIDxcLkQwPjoKKyAgICA0NDMwOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisJCQk0NDMwOiBSX0ZSVl8zMglcLmdvdAorICAgIDQ0MzQ6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ0MzQ6IFJfRlJWXzMyCVwudGV4dAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmdvdDoKIAotMDAwMTA0YjAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXy0weDg+OgotICAgMTA0YjA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNGIwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNGI0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCiswMDAwNDRiMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4OD46CisgICAgNDRiMDoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAorCQkJNDRiMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0CisgICAgNDRiNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAogCi0wMDAxMDRiOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKKzAwMDA0NGI4IDxfR0xPQkFMX09GRlNFVF9UQUJMRV8+OgogCVwuXC5cLgotICAgMTA0YzQ6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNGM0OiBSX0ZSVl8zMglcLnRleHQKLSAgIDEwNGM4OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0JCQkxMDRjODogUl9GUlZfMzIJXC5nb3QKLSAgIDEwNGNjOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDRjYzogUl9GUlZfMzIJXC5kYXRhCisgICAgNDRjNDoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAorCQkJNDRjNDogUl9GUlZfMzIJXC50ZXh0CisgICAgNDRjODoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorCQkJNDRjODogUl9GUlZfMzIJXC5nb3QKKyAgICA0NGNjOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCisJCQk0NGNjOiBSX0ZSVl8zMglcLmRhdGEKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc2hhcmVkLTguZCBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc2hhcmVkLTguZAppbmRleCBmZGVlYTczLi4yNmE1OTI1IDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXNoYXJlZC04LmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtOC5kCkBAIC0zMiw1MyArMzIsNTMgQEAKICA1MWM6CTgwIGY4IDAwIDAwIAlzZXRoaSBoaVwoMHgwXCksZ3IwCiBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwuZGF0YToKIAotMDAwMTA1MjQgPEQ4PjoKLSAgIDEwNTI0OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDUyNDogUl9GUlZfMzIJR0QwCiswMDAwNDUyNCA8RDg+OgorICAgIDQ1MjQ6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ1MjQ6IFJfRlJWXzMyCUdEMAogCi0wMDAxMDUyOCA8R0QwPjoKLSAgIDEwNTI4OgkwMCAwMCAwMCAxMCAJYWRkXC5wIGdyMCxncjE2LGdyMAotCQkJMTA1Mjg6IFJfRlJWXzMyCVwuZ290Ci0gICAxMDUyYzoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTA1MmM6IFJfRlJWXzMyCVwudGV4dAorMDAwMDQ1MjggPEdEMD46CisgICAgNDUyODoJMDAgMDAgMDAgMTAgCWFkZFwucCBncjAsZ3IxNixncjAKKwkJCTQ1Mjg6IFJfRlJWXzMyCVwuZ290CisgICAgNDUyYzoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAorCQkJNDUyYzogUl9GUlZfMzIJXC50ZXh0CiBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwuZ290OgogCi0wMDAxMDVhOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4Mzg+OgotICAgMTA1YTg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNWE4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNWFjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDViMDoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTA1YjA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTA1YjQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLSAgIDEwNWI4OgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDViODogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDViYzoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotICAgMTA1YzA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNWMwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNWM0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDVjODoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTA1Yzg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTA1Y2M6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLSAgIDEwNWQwOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDVkMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDVkNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotICAgMTA1ZDg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNWQ4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNWRjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCiswMDAwNDVhOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4Mzg+OgorICAgIDQ1YTg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ1YTg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ1YWM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKyAgICA0NWIwOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCisJCQk0NWIwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0NWI0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDViODoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAorCQkJNDViODogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0CisgICAgNDViYzoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorICAgIDQ1YzA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ1YzA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ1YzQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKyAgICA0NWM4OgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCisJCQk0NWM4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0NWNjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDVkMDoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAorCQkJNDVkMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0CisgICAgNDVkNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorICAgIDQ1ZDg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ1ZDg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ1ZGM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKIAotMDAwMTA1ZTAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXz46CiswMDAwNDVlMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKIAlcLlwuXC4KLSAgIDEwNWVjOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDVlYzogUl9GUlZfMzIJXC5nb3QKLSAgIDEwNWYwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDVmMDogUl9GUlZfMzIJR0YxCi0gICAxMDVmNDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA1ZjQ6IFJfRlJWXzMyCUdGMgotICAgMTA1Zjg6CTAwIDAwIDAwIDIwIAlhZGRcLnAgZ3IwLGdyMzIsZ3IwCi0JCQkxMDVmODogUl9GUlZfMzIJXC5nb3QKLSAgIDEwNWZjOgkwMCAwMCAwMCAxOCAJYWRkXC5wIGdyMCxncjI0LGdyMAotCQkJMTA1ZmM6IFJfRlJWXzMyCVwuZ290Ci0gICAxMDYwMDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA2MDA6IFJfRlJWXzMyCUdENAotICAgMTA2MDQ6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNjA0OiBSX0ZSVl8zMglHRjMKKyAgICA0NWVjOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCisJCQk0NWVjOiBSX0ZSVl8zMglcLmdvdAorICAgIDQ1ZjA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ1ZjA6IFJfRlJWXzMyCUdGMQorICAgIDQ1ZjQ6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ1ZjQ6IFJfRlJWXzMyCUdGMgorICAgIDQ1Zjg6CTAwIDAwIDAwIDIwIAlhZGRcLnAgZ3IwLGdyMzIsZ3IwCisJCQk0NWY4OiBSX0ZSVl8zMglcLmdvdAorICAgIDQ1ZmM6CTAwIDAwIDAwIDE4IAlhZGRcLnAgZ3IwLGdyMjQsZ3IwCisJCQk0NWZjOiBSX0ZSVl8zMglcLmdvdAorICAgIDQ2MDA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ2MDA6IFJfRlJWXzMyCUdENAorICAgIDQ2MDQ6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQ2MDQ6IFJfRlJWXzMyCUdGMwpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtbG9jYWwtMi5kIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtbG9jYWwtMi5kCmluZGV4IDZmN2IyMDUuLmE4NTdhMmYgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc2hhcmVkLWxvY2FsLTIuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXNoYXJlZC1sb2NhbC0yLmQKQEAgLTMyLDUzICszMiw1MyBAQAogIDM0ODoJODAgZjggMDAgMDAgCXNldGhpIGhpXCgweDBcKSxncjAKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5kYXRhOgogCi0wMDAxMDM1MCA8RDI+OgotICAgMTAzNTA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwMzUwOiBSX0ZSVl8zMglcLmRhdGEKKzAwMDA0MzUwIDxEMj46CisgICAgNDM1MDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDM1MDogUl9GUlZfMzIJXC5kYXRhCiAKLTAwMDEwMzU0IDxHRDA+OgotICAgMTAzNTQ6CTAwIDAwIDAwIDE4IAlhZGRcLnAgZ3IwLGdyMjQsZ3IwCi0JCQkxMDM1NDogUl9GUlZfMzIJXC5nb3QKLSAgIDEwMzU4OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDM1ODogUl9GUlZfMzIJXC50ZXh0CiswMDAwNDM1NCA8R0QwPjoKKyAgICA0MzU0OgkwMCAwMCAwMCAxOCAJYWRkXC5wIGdyMCxncjI0LGdyMAorCQkJNDM1NDogUl9GUlZfMzIJXC5nb3QKKyAgICA0MzU4OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0MzU4OiBSX0ZSVl8zMglcLnRleHQKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5nb3Q6CiAKLTAwMDEwM2Q4IDxfR0xPQkFMX09GRlNFVF9UQUJMRV8tMHgzOD46Ci0gICAxMDNkODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTAzZDg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTAzZGM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLSAgIDEwM2UwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDNlMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDNlNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotICAgMTAzZTg6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwM2U4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwM2VjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDNmMDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTAzZjA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTAzZjQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLSAgIDEwM2Y4OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDNmODogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDNmYzoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotICAgMTA0MDA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNDAwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNDA0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDQwODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA0MDg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTA0MGM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKzAwMDA0M2Q4IDxfR0xPQkFMX09GRlNFVF9UQUJMRV8tMHgzOD46CisgICAgNDNkODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDNkODogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0CisgICAgNDNkYzoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorICAgIDQzZTA6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQzZTA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQzZTQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKyAgICA0M2U4OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0M2U4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0M2VjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDNmMDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDNmMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0CisgICAgNDNmNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorICAgIDQzZjg6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKKwkJCTQzZjg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQzZmM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKyAgICA0NDAwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NDAwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0NDA0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDQwODoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAorCQkJNDQwODogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0CisgICAgNDQwYzoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAogCi0wMDAxMDQxMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKKzAwMDA0NDEwIDxfR0xPQkFMX09GRlNFVF9UQUJMRV8+OgogCVwuXC5cLgotICAgMTA0MWM6CTAwIDAwIDAwIDEwIAlhZGRcLnAgZ3IwLGdyMTYsZ3IwCi0JCQkxMDQxYzogUl9GUlZfMzIJXC5nb3QKLSAgIDEwNDIwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDQyMDogUl9GUlZfMzIJXC50ZXh0Ci0gICAxMDQyNDoJMDAgMDAgMDAgMjggCWFkZFwucCBncjAsZ3I0MCxncjAKLQkJCTEwNDI0OiBSX0ZSVl8zMglcLmdvdAotICAgMTA0Mjg6CTAwIDAwIDAwIDIwIAlhZGRcLnAgZ3IwLGdyMzIsZ3IwCi0JCQkxMDQyODogUl9GUlZfMzIJXC5nb3QKLSAgIDEwNDJjOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCi0JCQkxMDQyYzogUl9GUlZfMzIJXC5kYXRhCi0gICAxMDQzMDoJMDAgMDAgMDAgMDQgCWFkZFwucCBncjAsZ3I0LGdyMAotCQkJMTA0MzA6IFJfRlJWXzMyCVwudGV4dAotICAgMTA0MzQ6CTAwIDAwIDAwIDA0IAlhZGRcLnAgZ3IwLGdyNCxncjAKLQkJCTEwNDM0OiBSX0ZSVl8zMglcLnRleHQKKyAgICA0NDFjOgkwMCAwMCAwMCAxMCAJYWRkXC5wIGdyMCxncjE2LGdyMAorCQkJNDQxYzogUl9GUlZfMzIJXC5nb3QKKyAgICA0NDIwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NDIwOiBSX0ZSVl8zMglcLnRleHQKKyAgICA0NDI0OgkwMCAwMCAwMCAyOCAJYWRkXC5wIGdyMCxncjQwLGdyMAorCQkJNDQyNDogUl9GUlZfMzIJXC5nb3QKKyAgICA0NDI4OgkwMCAwMCAwMCAyMCAJYWRkXC5wIGdyMCxncjMyLGdyMAorCQkJNDQyODogUl9GUlZfMzIJXC5nb3QKKyAgICA0NDJjOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NDJjOiBSX0ZSVl8zMglcLmRhdGEKKyAgICA0NDMwOgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NDMwOiBSX0ZSVl8zMglcLnRleHQKKyAgICA0NDM0OgkwMCAwMCAwMCAwNCAJYWRkXC5wIGdyMCxncjQsZ3IwCisJCQk0NDM0OiBSX0ZSVl8zMglcLnRleHQKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc2hhcmVkLWxvY2FsLTguZCBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc2hhcmVkLWxvY2FsLTguZAppbmRleCA3YjEyMDUxLi44YjE3OWUzIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXNoYXJlZC1sb2NhbC04LmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zaGFyZWQtbG9jYWwtOC5kCkBAIC0zMiw1MyArMzIsNTMgQEAKICAzNDg6CTgwIGY4IDAwIDAwIAlzZXRoaSBoaVwoMHgwXCksZ3IwCiBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwuZGF0YToKIAotMDAwMTAzNTAgPEQ4PjoKLSAgIDEwMzUwOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDM1MDogUl9GUlZfMzIJXC5kYXRhCiswMDAwNDM1MCA8RDg+OgorICAgIDQzNTA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQzNTA6IFJfRlJWXzMyCVwuZGF0YQogCi0wMDAxMDM1NCA8R0QwPjoKLSAgIDEwMzU0OgkwMCAwMCAwMCAxMCAJYWRkXC5wIGdyMCxncjE2LGdyMAotCQkJMTAzNTQ6IFJfRlJWXzMyCVwuZ290Ci0gICAxMDM1ODoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTAzNTg6IFJfRlJWXzMyCVwudGV4dAorMDAwMDQzNTQgPEdEMD46CisgICAgNDM1NDoJMDAgMDAgMDAgMTAgCWFkZFwucCBncjAsZ3IxNixncjAKKwkJCTQzNTQ6IFJfRlJWXzMyCVwuZ290CisgICAgNDM1ODoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAorCQkJNDM1ODogUl9GUlZfMzIJXC50ZXh0CiBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIFwuZ290OgogCi0wMDAxMDNkOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4Mzg+OgotICAgMTAzZDg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwM2Q4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwM2RjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDNlMDoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTAzZTA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTAzZTQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLSAgIDEwM2U4OgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDNlODogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDNlYzoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotICAgMTAzZjA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwM2YwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwM2Y0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCi0gICAxMDNmODoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTAzZjg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAotICAgMTAzZmM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKLSAgIDEwNDAwOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDQwMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0Ci0gICAxMDQwNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAotICAgMTA0MDg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNDA4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKLSAgIDEwNDBjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCiswMDAwNDNkOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfLTB4Mzg+OgorICAgIDQzZDg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQzZDg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQzZGM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKyAgICA0M2UwOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCisJCQk0M2UwOiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0M2U0OgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDNlODoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAorCQkJNDNlODogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0CisgICAgNDNlYzoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorICAgIDQzZjA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQzZjA6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQzZjQ6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKKyAgICA0M2Y4OgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCisJCQk0M2Y4OiBSX0ZSVl9GVU5DREVTQ19WQUxVRQlcLnRleHQKKyAgICA0M2ZjOgkwMCAwMCAwMCAwMCAJYWRkXC5wIGdyMCxncjAsZ3IwCisgICAgNDQwMDoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAorCQkJNDQwMDogUl9GUlZfRlVOQ0RFU0NfVkFMVUUJXC50ZXh0CisgICAgNDQwNDoJMDAgMDAgMDAgMDAgCWFkZFwucCBncjAsZ3IwLGdyMAorICAgIDQ0MDg6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ0MDg6IFJfRlJWX0ZVTkNERVNDX1ZBTFVFCVwudGV4dAorICAgIDQ0MGM6CTAwIDAwIDAwIDAwIAlhZGRcLnAgZ3IwLGdyMCxncjAKIAotMDAwMTA0MTAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXz46CiswMDAwNDQxMCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKIAlcLlwuXC4KLSAgIDEwNDFjOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDQxYzogUl9GUlZfMzIJXC5nb3QKLSAgIDEwNDIwOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCi0JCQkxMDQyMDogUl9GUlZfMzIJXC50ZXh0Ci0gICAxMDQyNDoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTA0MjQ6IFJfRlJWXzMyCVwudGV4dAotICAgMTA0Mjg6CTAwIDAwIDAwIDIwIAlhZGRcLnAgZ3IwLGdyMzIsZ3IwCi0JCQkxMDQyODogUl9GUlZfMzIJXC5nb3QKLSAgIDEwNDJjOgkwMCAwMCAwMCAxOCAJYWRkXC5wIGdyMCxncjI0LGdyMAotCQkJMTA0MmM6IFJfRlJWXzMyCVwuZ290Ci0gICAxMDQzMDoJMDAgMDAgMDAgMDggCWFkZFwucCBncjAsZ3I4LGdyMAotCQkJMTA0MzA6IFJfRlJWXzMyCVwuZGF0YQotICAgMTA0MzQ6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKLQkJCTEwNDM0OiBSX0ZSVl8zMglcLnRleHQKKyAgICA0NDFjOgkwMCAwMCAwMCAwOCAJYWRkXC5wIGdyMCxncjgsZ3IwCisJCQk0NDFjOiBSX0ZSVl8zMglcLmdvdAorICAgIDQ0MjA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ0MjA6IFJfRlJWXzMyCVwudGV4dAorICAgIDQ0MjQ6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ0MjQ6IFJfRlJWXzMyCVwudGV4dAorICAgIDQ0Mjg6CTAwIDAwIDAwIDIwIAlhZGRcLnAgZ3IwLGdyMzIsZ3IwCisJCQk0NDI4OiBSX0ZSVl8zMglcLmdvdAorICAgIDQ0MmM6CTAwIDAwIDAwIDE4IAlhZGRcLnAgZ3IwLGdyMjQsZ3IwCisJCQk0NDJjOiBSX0ZSVl8zMglcLmdvdAorICAgIDQ0MzA6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ0MzA6IFJfRlJWXzMyCVwuZGF0YQorICAgIDQ0MzQ6CTAwIDAwIDAwIDA4IAlhZGRcLnAgZ3IwLGdyOCxncjAKKwkJCTQ0MzQ6IFJfRlJWXzMyCVwudGV4dApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zdGF0aWMtMS5kIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zdGF0aWMtMS5kCmluZGV4IDI0NmUyNGUuLmRkM2E0OTggMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc3RhdGljLTEuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXN0YXRpYy0xLmQKQEAgLTMzLDMxICszMywzMSBAQAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLnJvZml4dXA6CiAKIDAwMDEwMGUwIDxfX1JPRklYVVBfTElTVF9fPjoKLSAgIDEwMGUwOgkwMCAwMiAwMSAyNCAJc3ViXC5wIGdyMzIsZ3IzNixncjAKLSAgIDEwMGU0OgkwMCAwMiAwMSAyOCAJc3ViXC5wIGdyMzIsZ3I0MCxncjAKLSAgIDEwMGU4OgkwMCAwMiAwMSAxMCAJc3ViXC5wIGdyMzIsZ3IxNixncjAKLSAgIDEwMGVjOgkwMCAwMiAwMSAxNCAJc3ViXC5wIGdyMzIsZ3IyMCxncjAKLSAgIDEwMGYwOgkwMCAwMiAwMSAyYyAJc3ViXC5wIGdyMzIsZ3I0NCxncjAKLSAgIDEwMGY0OgkwMCAwMiAwMSAwNCAJc3ViXC5wIGdyMzIsZ3I0LGdyMAotICAgMTAwZjg6CTAwIDAyIDAxIDA4IAlzdWJcLnAgZ3IzMixncjgsZ3IwCi0gICAxMDBmYzoJMDAgMDIgMDEgMGMgCXN1YlwucCBncjMyLGdyMTIsZ3IwCi0gICAxMDEwMDoJMDAgMDIgMDEgMTggCXN1YlwucCBncjMyLGdyMjQsZ3IwCisgICAxMDBlMDoJMDAgMDEgNDEgMjQgCXN1YlwucCBncjIwLGdyMzYsZ3IwCisgICAxMDBlNDoJMDAgMDEgNDEgMjggCXN1YlwucCBncjIwLGdyNDAsZ3IwCisgICAxMDBlODoJMDAgMDEgNDEgMTAgCXN1YlwucCBncjIwLGdyMTYsZ3IwCisgICAxMDBlYzoJMDAgMDEgNDEgMTQgCXN1YlwucCBncjIwLGdyMjAsZ3IwCisgICAxMDBmMDoJMDAgMDEgNDEgMmMgCXN1YlwucCBncjIwLGdyNDQsZ3IwCisgICAxMDBmNDoJMDAgMDEgNDEgMDQgCXN1YlwucCBncjIwLGdyNCxncjAKKyAgIDEwMGY4OgkwMCAwMSA0MSAwOCAJc3ViXC5wIGdyMjAsZ3I4LGdyMAorICAgMTAwZmM6CTAwIDAxIDQxIDBjIAlzdWJcLnAgZ3IyMCxncjEyLGdyMAorICAgMTAxMDA6CTAwIDAxIDQxIDE4IAlzdWJcLnAgZ3IyMCxncjI0LGdyMAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmRhdGE6CiAKLTAwMDIwMTA0IDxEMT46Ci0gICAyMDEwNDoJMDAgMDIgMDEgMDggCXN1YlwucCBncjMyLGdyOCxncjAKKzAwMDE0MTA0IDxEMT46CisgICAxNDEwNDoJMDAgMDEgNDEgMDggCXN1YlwucCBncjIwLGdyOCxncjAKIAotMDAwMjAxMDggPFwuRDA+OgotICAgMjAxMDg6CTAwIDAyIDAxIDEwIAlzdWJcLnAgZ3IzMixncjE2LGdyMAotICAgMjAxMGM6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAorMDAwMTQxMDggPFwuRDA+OgorICAgMTQxMDg6CTAwIDAxIDQxIDEwIAlzdWJcLnAgZ3IyMCxncjE2LGdyMAorICAgMTQxMGM6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmdvdDoKIAotMDAwMjAxMTAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXy0weDg+OgotICAgMjAxMTA6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAotICAgMjAxMTQ6CTAwIDAyIDAxIDE4IAlzdWJcLnAgZ3IzMixncjI0LGdyMAorMDAwMTQxMTAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXy0weDg+OgorICAgMTQxMTA6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAorICAgMTQxMTQ6CTAwIDAxIDQxIDE4IAlzdWJcLnAgZ3IyMCxncjI0LGdyMAogCi0wMDAyMDExOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKKzAwMDE0MTE4IDxfR0xPQkFMX09GRlNFVF9UQUJMRV8+OgogCVwuXC5cLgotICAgMjAxMjQ6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAotICAgMjAxMjg6CTAwIDAyIDAxIDEwIAlzdWJcLnAgZ3IzMixncjE2LGdyMAotICAgMjAxMmM6CTAwIDAyIDAxIDA4IAlzdWJcLnAgZ3IzMixncjgsZ3IwCisgICAxNDEyNDoJMDAgMDEgMDAgOTggCWFkZHhcLnAgZ3IxNixncjI0LGdyMCxpY2MwCisgICAxNDEyODoJMDAgMDEgNDEgMTAgCXN1YlwucCBncjIwLGdyMTYsZ3IwCisgICAxNDEyYzoJMDAgMDEgNDEgMDggCXN1YlwucCBncjIwLGdyOCxncjAKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc3RhdGljLTIuZCBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc3RhdGljLTIuZAppbmRleCAxYzZiMzcxLi4yNjAwM2IzIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXN0YXRpYy0yLmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zdGF0aWMtMi5kCkBAIC0zMyw2MyArMzMsNjMgQEAKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5yb2ZpeHVwOgogCiAwMDAxMDBlMCA8X19ST0ZJWFVQX0xJU1RfXz46Ci0gICAxMDBlMDoJMDAgMDIgMDEgOTggCXN1YnhcLnAgZ3IzMixncjI0LGdyMCxpY2MwCi0gICAxMDBlNDoJMDAgMDIgMDEgYWMgCXN1YnhcLnAgZ3IzMixncjQ0LGdyMCxpY2MwCi0gICAxMDBlODoJMDAgMDIgMDEgYTggCXN1YnhcLnAgZ3IzMixncjQwLGdyMCxpY2MwCi0gICAxMDBlYzoJMDAgMDIgMDEgOTQgCXN1YnhcLnAgZ3IzMixncjIwLGdyMCxpY2MwCi0gICAxMDBmMDoJMDAgMDIgMDEgNjAgCXN1YmNjXC5wIGdyMzIsZ3IzMixncjAsaWNjMAotICAgMTAwZjQ6CTAwIDAyIDAxIDY0IAlzdWJjY1wucCBncjMyLGdyMzYsZ3IwLGljYzAKLSAgIDEwMGY4OgkwMCAwMiAwMSBhMCAJc3VieFwucCBncjMyLGdyMzIsZ3IwLGljYzAKLSAgIDEwMGZjOgkwMCAwMiAwMSA3MCAJc3ViY2NcLnAgZ3IzMixncjQ4LGdyMCxpY2MwCi0gICAxMDEwMDoJMDAgMDIgMDEgNzQgCXN1YmNjXC5wIGdyMzIsZ3I1MixncjAsaWNjMAotICAgMTAxMDQ6CTAwIDAyIDAxIDljIAlzdWJ4XC5wIGdyMzIsZ3IyOCxncjAsaWNjMAotICAgMTAxMDg6CTAwIDAyIDAxIDc4IAlzdWJjY1wucCBncjMyLGdyNTYsZ3IwLGljYzAKLSAgIDEwMTBjOgkwMCAwMiAwMSA3YyAJc3ViY2NcLnAgZ3IzMixncjYwLGdyMCxpY2MwCi0gICAxMDExMDoJMDAgMDIgMDEgODAgCXN1YnhcLnAgZ3IzMixncjAsZ3IwLGljYzAKLSAgIDEwMTE0OgkwMCAwMiAwMSA4NCAJc3VieFwucCBncjMyLGdyNCxncjAsaWNjMAotICAgMTAxMTg6CTAwIDAyIDAxIDU4IAlzdWJjY1wucCBncjMyLGdyMjQsZ3IwLGljYzAKLSAgIDEwMTFjOgkwMCAwMiAwMSA1YyAJc3ViY2NcLnAgZ3IzMixncjI4LGdyMCxpY2MwCi0gICAxMDEyMDoJMDAgMDIgMDEgNTAgCXN1YmNjXC5wIGdyMzIsZ3IxNixncjAsaWNjMAotICAgMTAxMjQ6CTAwIDAyIDAxIDU0IAlzdWJjY1wucCBncjMyLGdyMjAsZ3IwLGljYzAKLSAgIDEwMTI4OgkwMCAwMiAwMSBhNCAJc3VieFwucCBncjMyLGdyMzYsZ3IwLGljYzAKLSAgIDEwMTJjOgkwMCAwMiAwMSA0NCAJc3ViY2NcLnAgZ3IzMixncjQsZ3IwLGljYzAKLSAgIDEwMTMwOgkwMCAwMiAwMSA2OCAJc3ViY2NcLnAgZ3IzMixncjQwLGdyMCxpY2MwCi0gICAxMDEzNDoJMDAgMDIgMDEgNmMgCXN1YmNjXC5wIGdyMzIsZ3I0NCxncjAsaWNjMAotICAgMTAxMzg6CTAwIDAyIDAxIDQ4IAlzdWJjY1wucCBncjMyLGdyOCxncjAsaWNjMAotICAgMTAxM2M6CTAwIDAyIDAxIDRjIAlzdWJjY1wucCBncjMyLGdyMTIsZ3IwLGljYzAKLSAgIDEwMTQwOgkwMCAwMiAwMSA4OCAJc3VieFwucCBncjMyLGdyOCxncjAsaWNjMAorICAgMTAwZTA6CTAwIDAxIDQxIDk4IAlzdWJ4XC5wIGdyMjAsZ3IyNCxncjAsaWNjMAorICAgMTAwZTQ6CTAwIDAxIDQxIGFjIAlzdWJ4XC5wIGdyMjAsZ3I0NCxncjAsaWNjMAorICAgMTAwZTg6CTAwIDAxIDQxIGE4IAlzdWJ4XC5wIGdyMjAsZ3I0MCxncjAsaWNjMAorICAgMTAwZWM6CTAwIDAxIDQxIDk0IAlzdWJ4XC5wIGdyMjAsZ3IyMCxncjAsaWNjMAorICAgMTAwZjA6CTAwIDAxIDQxIDYwIAlzdWJjY1wucCBncjIwLGdyMzIsZ3IwLGljYzAKKyAgIDEwMGY0OgkwMCAwMSA0MSA2NCAJc3ViY2NcLnAgZ3IyMCxncjM2LGdyMCxpY2MwCisgICAxMDBmODoJMDAgMDEgNDEgYTAgCXN1YnhcLnAgZ3IyMCxncjMyLGdyMCxpY2MwCisgICAxMDBmYzoJMDAgMDEgNDEgNzAgCXN1YmNjXC5wIGdyMjAsZ3I0OCxncjAsaWNjMAorICAgMTAxMDA6CTAwIDAxIDQxIDc0IAlzdWJjY1wucCBncjIwLGdyNTIsZ3IwLGljYzAKKyAgIDEwMTA0OgkwMCAwMSA0MSA5YyAJc3VieFwucCBncjIwLGdyMjgsZ3IwLGljYzAKKyAgIDEwMTA4OgkwMCAwMSA0MSA3OCAJc3ViY2NcLnAgZ3IyMCxncjU2LGdyMCxpY2MwCisgICAxMDEwYzoJMDAgMDEgNDEgN2MgCXN1YmNjXC5wIGdyMjAsZ3I2MCxncjAsaWNjMAorICAgMTAxMTA6CTAwIDAxIDQxIDgwIAlzdWJ4XC5wIGdyMjAsZ3IwLGdyMCxpY2MwCisgICAxMDExNDoJMDAgMDEgNDEgODQgCXN1YnhcLnAgZ3IyMCxncjQsZ3IwLGljYzAKKyAgIDEwMTE4OgkwMCAwMSA0MSA1OCAJc3ViY2NcLnAgZ3IyMCxncjI0LGdyMCxpY2MwCisgICAxMDExYzoJMDAgMDEgNDEgNWMgCXN1YmNjXC5wIGdyMjAsZ3IyOCxncjAsaWNjMAorICAgMTAxMjA6CTAwIDAxIDQxIDUwIAlzdWJjY1wucCBncjIwLGdyMTYsZ3IwLGljYzAKKyAgIDEwMTI0OgkwMCAwMSA0MSA1NCAJc3ViY2NcLnAgZ3IyMCxncjIwLGdyMCxpY2MwCisgICAxMDEyODoJMDAgMDEgNDEgYTQgCXN1YnhcLnAgZ3IyMCxncjM2LGdyMCxpY2MwCisgICAxMDEyYzoJMDAgMDEgNDEgNDQgCXN1YmNjXC5wIGdyMjAsZ3I0LGdyMCxpY2MwCisgICAxMDEzMDoJMDAgMDEgNDEgNjggCXN1YmNjXC5wIGdyMjAsZ3I0MCxncjAsaWNjMAorICAgMTAxMzQ6CTAwIDAxIDQxIDZjIAlzdWJjY1wucCBncjIwLGdyNDQsZ3IwLGljYzAKKyAgIDEwMTM4OgkwMCAwMSA0MSA0OCAJc3ViY2NcLnAgZ3IyMCxncjgsZ3IwLGljYzAKKyAgIDEwMTNjOgkwMCAwMSA0MSA0YyAJc3ViY2NcLnAgZ3IyMCxncjEyLGdyMCxpY2MwCisgICAxMDE0MDoJMDAgMDEgNDEgODggCXN1YnhcLnAgZ3IyMCxncjgsZ3IwLGljYzAKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5kYXRhOgogCi0wMDAyMDE0NCA8RDI+OgotICAgMjAxNDQ6CTAwIDAyIDAxIDQ4IAlzdWJjY1wucCBncjMyLGdyOCxncjAsaWNjMAorMDAwMTQxNDQgPEQyPjoKKyAgIDE0MTQ0OgkwMCAwMSA0MSA0OCAJc3ViY2NcLnAgZ3IyMCxncjgsZ3IwLGljYzAKIAotMDAwMjAxNDggPEdEMD46Ci0gICAyMDE0ODoJMDAgMDIgMDEgNjggCXN1YmNjXC5wIGdyMzIsZ3I0MCxncjAsaWNjMAotICAgMjAxNGM6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAorMDAwMTQxNDggPEdEMD46CisgICAxNDE0ODoJMDAgMDEgNDEgNjggCXN1YmNjXC5wIGdyMjAsZ3I0MCxncjAsaWNjMAorICAgMTQxNGM6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmdvdDoKIAotMDAwMjAxNTAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXy0weDM4PjoKLSAgIDIwMTUwOgkwMCAwMSAwMCA5OCAJYWRkeFwucCBncjE2LGdyMjQsZ3IwLGljYzAKLSAgIDIwMTU0OgkwMCAwMiAwMSA4OCAJc3VieFwucCBncjMyLGdyOCxncjAsaWNjMAotICAgMjAxNTg6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAotICAgMjAxNWM6CTAwIDAyIDAxIDg4IAlzdWJ4XC5wIGdyMzIsZ3I4LGdyMCxpY2MwCi0gICAyMDE2MDoJMDAgMDEgMDAgOTggCWFkZHhcLnAgZ3IxNixncjI0LGdyMCxpY2MwCi0gICAyMDE2NDoJMDAgMDIgMDEgODggCXN1YnhcLnAgZ3IzMixncjgsZ3IwLGljYzAKLSAgIDIwMTY4OgkwMCAwMSAwMCA5OCAJYWRkeFwucCBncjE2LGdyMjQsZ3IwLGljYzAKLSAgIDIwMTZjOgkwMCAwMiAwMSA4OCAJc3VieFwucCBncjMyLGdyOCxncjAsaWNjMAotICAgMjAxNzA6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAotICAgMjAxNzQ6CTAwIDAyIDAxIDg4IAlzdWJ4XC5wIGdyMzIsZ3I4LGdyMCxpY2MwCi0gICAyMDE3ODoJMDAgMDEgMDAgOTggCWFkZHhcLnAgZ3IxNixncjI0LGdyMCxpY2MwCi0gICAyMDE3YzoJMDAgMDIgMDEgODggCXN1YnhcLnAgZ3IzMixncjgsZ3IwLGljYzAKLSAgIDIwMTgwOgkwMCAwMSAwMCA5OCAJYWRkeFwucCBncjE2LGdyMjQsZ3IwLGljYzAKLSAgIDIwMTg0OgkwMCAwMiAwMSA4OCAJc3VieFwucCBncjMyLGdyOCxncjAsaWNjMAorMDAwMTQxNTAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXy0weDM4PjoKKyAgIDE0MTUwOgkwMCAwMSAwMCA5OCAJYWRkeFwucCBncjE2LGdyMjQsZ3IwLGljYzAKKyAgIDE0MTU0OgkwMCAwMSA0MSA4OCAJc3VieFwucCBncjIwLGdyOCxncjAsaWNjMAorICAgMTQxNTg6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAorICAgMTQxNWM6CTAwIDAxIDQxIDg4IAlzdWJ4XC5wIGdyMjAsZ3I4LGdyMCxpY2MwCisgICAxNDE2MDoJMDAgMDEgMDAgOTggCWFkZHhcLnAgZ3IxNixncjI0LGdyMCxpY2MwCisgICAxNDE2NDoJMDAgMDEgNDEgODggCXN1YnhcLnAgZ3IyMCxncjgsZ3IwLGljYzAKKyAgIDE0MTY4OgkwMCAwMSAwMCA5OCAJYWRkeFwucCBncjE2LGdyMjQsZ3IwLGljYzAKKyAgIDE0MTZjOgkwMCAwMSA0MSA4OCAJc3VieFwucCBncjIwLGdyOCxncjAsaWNjMAorICAgMTQxNzA6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAorICAgMTQxNzQ6CTAwIDAxIDQxIDg4IAlzdWJ4XC5wIGdyMjAsZ3I4LGdyMCxpY2MwCisgICAxNDE3ODoJMDAgMDEgMDAgOTggCWFkZHhcLnAgZ3IxNixncjI0LGdyMCxpY2MwCisgICAxNDE3YzoJMDAgMDEgNDEgODggCXN1YnhcLnAgZ3IyMCxncjgsZ3IwLGljYzAKKyAgIDE0MTgwOgkwMCAwMSAwMCA5OCAJYWRkeFwucCBncjE2LGdyMjQsZ3IwLGljYzAKKyAgIDE0MTg0OgkwMCAwMSA0MSA4OCAJc3VieFwucCBncjIwLGdyOCxncjAsaWNjMAogCi0wMDAyMDE4OCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKKzAwMDE0MTg4IDxfR0xPQkFMX09GRlNFVF9UQUJMRV8+OgogCVwuXC5cLgotICAgMjAxOTQ6CTAwIDAyIDAxIDYwIAlzdWJjY1wucCBncjMyLGdyMzIsZ3IwLGljYzAKLSAgIDIwMTk4OgkwMCAwMSAwMCA5OCAJYWRkeFwucCBncjE2LGdyMjQsZ3IwLGljYzAKLSAgIDIwMTljOgkwMCAwMiAwMSA3OCAJc3ViY2NcLnAgZ3IzMixncjU2LGdyMCxpY2MwCi0gICAyMDFhMDoJMDAgMDIgMDEgNzAgCXN1YmNjXC5wIGdyMzIsZ3I0OCxncjAsaWNjMAotICAgMjAxYTQ6CTAwIDAyIDAxIDQ4IAlzdWJjY1wucCBncjMyLGdyOCxncjAsaWNjMAotICAgMjAxYTg6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAotICAgMjAxYWM6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAorICAgMTQxOTQ6CTAwIDAxIDQxIDYwIAlzdWJjY1wucCBncjIwLGdyMzIsZ3IwLGljYzAKKyAgIDE0MTk4OgkwMCAwMSAwMCA5OCAJYWRkeFwucCBncjE2LGdyMjQsZ3IwLGljYzAKKyAgIDE0MTljOgkwMCAwMSA0MSA3OCAJc3ViY2NcLnAgZ3IyMCxncjU2LGdyMCxpY2MwCisgICAxNDFhMDoJMDAgMDEgNDEgNzAgCXN1YmNjXC5wIGdyMjAsZ3I0OCxncjAsaWNjMAorICAgMTQxYTQ6CTAwIDAxIDQxIDQ4IAlzdWJjY1wucCBncjIwLGdyOCxncjAsaWNjMAorICAgMTQxYTg6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMAorICAgMTQxYWM6CTAwIDAxIDAwIDk4IAlhZGR4XC5wIGdyMTYsZ3IyNCxncjAsaWNjMApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zdGF0aWMtNi5kIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zdGF0aWMtNi5kCmluZGV4IDViNTk5NDcuLjU0YTIyNWIgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc3RhdGljLTYuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXN0YXRpYy02LmQKQEAgLTEsNCArMSw0IEBACi0jbmFtZTogRlJWIHVDbGludXggUElDIHJlbG9jcyB0byB1bmRlZmluZWQgc3ltYm9scywgc3RhdGljIGxpbmtpbmcKKyNuYW1lOiBGUlYgdUNsaW51eCBQSUMgcmVsb2NzIHRvIHdlYWsgdW5kZWZpbmVkIHN5bWJvbHMsIHN0YXRpYyBsaW5raW5nCiAjc291cmNlOiBmZHBpYzYucwogI29iamR1bXA6IC1ECiAjYXM6IC1tZmRwaWMKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc3RhdGljLTcuZCBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc3RhdGljLTcuZAppbmRleCBiOGViYTYxLi4wMzYzYTY3IDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXN0YXRpYy03LmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zdGF0aWMtNy5kCkBAIC0zMywzMSArMzMsMzEgQEAKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5yb2ZpeHVwOgogCiAwMDAxMDBlMCA8X19ST0ZJWFVQX0xJU1RfXz46Ci0gICAxMDBlMDoJMDAgMDIgMDEgMjQgCXN1YlwucCBncjMyLGdyMzYsZ3IwCi0gICAxMDBlNDoJMDAgMDIgMDEgMjggCXN1YlwucCBncjMyLGdyNDAsZ3IwCi0gICAxMDBlODoJMDAgMDIgMDEgMTAgCXN1YlwucCBncjMyLGdyMTYsZ3IwCi0gICAxMDBlYzoJMDAgMDIgMDEgMTQgCXN1YlwucCBncjMyLGdyMjAsZ3IwCi0gICAxMDBmMDoJMDAgMDIgMDEgMmMgCXN1YlwucCBncjMyLGdyNDQsZ3IwCi0gICAxMDBmNDoJMDAgMDIgMDEgMDQgCXN1YlwucCBncjMyLGdyNCxncjAKLSAgIDEwMGY4OgkwMCAwMiAwMSAwOCAJc3ViXC5wIGdyMzIsZ3I4LGdyMAotICAgMTAwZmM6CTAwIDAyIDAxIDBjIAlzdWJcLnAgZ3IzMixncjEyLGdyMAotICAgMTAxMDA6CTAwIDAyIDAxIDE4IAlzdWJcLnAgZ3IzMixncjI0LGdyMAorICAgMTAwZTA6CTAwIDAxIDQxIDI0IAlzdWJcLnAgZ3IyMCxncjM2LGdyMAorICAgMTAwZTQ6CTAwIDAxIDQxIDI4IAlzdWJcLnAgZ3IyMCxncjQwLGdyMAorICAgMTAwZTg6CTAwIDAxIDQxIDEwIAlzdWJcLnAgZ3IyMCxncjE2LGdyMAorICAgMTAwZWM6CTAwIDAxIDQxIDE0IAlzdWJcLnAgZ3IyMCxncjIwLGdyMAorICAgMTAwZjA6CTAwIDAxIDQxIDJjIAlzdWJcLnAgZ3IyMCxncjQ0LGdyMAorICAgMTAwZjQ6CTAwIDAxIDQxIDA0IAlzdWJcLnAgZ3IyMCxncjQsZ3IwCisgICAxMDBmODoJMDAgMDEgNDEgMDggCXN1YlwucCBncjIwLGdyOCxncjAKKyAgIDEwMGZjOgkwMCAwMSA0MSAwYyAJc3ViXC5wIGdyMjAsZ3IxMixncjAKKyAgIDEwMTAwOgkwMCAwMSA0MSAxOCAJc3ViXC5wIGdyMjAsZ3IyNCxncjAKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5kYXRhOgogCi0wMDAyMDEwNCA8RDc+OgotICAgMjAxMDQ6CTAwIDAyIDAxIDBjIAlzdWJcLnAgZ3IzMixncjEyLGdyMAorMDAwMTQxMDQgPEQ3PjoKKyAgIDE0MTA0OgkwMCAwMSA0MSAwYyAJc3ViXC5wIGdyMjAsZ3IxMixncjAKIAotMDAwMjAxMDggPFwuRDA+OgotICAgMjAxMDg6CTAwIDAyIDAxIDEwIAlzdWJcLnAgZ3IzMixncjE2LGdyMAotICAgMjAxMGM6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMAorMDAwMTQxMDggPFwuRDA+OgorICAgMTQxMDg6CTAwIDAxIDQxIDEwIAlzdWJcLnAgZ3IyMCxncjE2LGdyMAorICAgMTQxMGM6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmdvdDoKIAotMDAwMjAxMTAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXy0weDg+OgotICAgMjAxMTA6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMAotICAgMjAxMTQ6CTAwIDAyIDAxIDE4IAlzdWJcLnAgZ3IzMixncjI0LGdyMAorMDAwMTQxMTAgPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXy0weDg+OgorICAgMTQxMTA6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMAorICAgMTQxMTQ6CTAwIDAxIDQxIDE4IAlzdWJcLnAgZ3IyMCxncjI0LGdyMAogCi0wMDAyMDExOCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKKzAwMDE0MTE4IDxfR0xPQkFMX09GRlNFVF9UQUJMRV8+OgogCVwuXC5cLgotICAgMjAxMjQ6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMAotICAgMjAxMjg6CTAwIDAyIDAxIDEwIAlzdWJcLnAgZ3IzMixncjE2LGdyMAotICAgMjAxMmM6CTAwIDAyIDAxIDBjIAlzdWJcLnAgZ3IzMixncjEyLGdyMAorICAgMTQxMjQ6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMAorICAgMTQxMjg6CTAwIDAxIDQxIDEwIAlzdWJcLnAgZ3IyMCxncjE2LGdyMAorICAgMTQxMmM6CTAwIDAxIDQxIDBjIAlzdWJcLnAgZ3IyMCxncjEyLGdyMApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zdGF0aWMtOC5kIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy1zdGF0aWMtOC5kCmluZGV4IGNiZWJiMTcuLjgwNGM1NmUgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZmRwaWMtc3RhdGljLTguZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLXN0YXRpYy04LmQKQEAgLTMzLDYzICszMyw2MyBAQAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLnJvZml4dXA6CiAKIDAwMDEwMGUwIDxfX1JPRklYVVBfTElTVF9fPjoKLSAgIDEwMGUwOgkwMCAwMiAwMSA5OCAJc3VieFwucCBncjMyLGdyMjQsZ3IwLGljYzAKLSAgIDEwMGU0OgkwMCAwMiAwMSA5YyAJc3VieFwucCBncjMyLGdyMjgsZ3IwLGljYzAKLSAgIDEwMGU4OgkwMCAwMiAwMSBhYyAJc3VieFwucCBncjMyLGdyNDQsZ3IwLGljYzAKLSAgIDEwMGVjOgkwMCAwMiAwMSA5NCAJc3VieFwucCBncjMyLGdyMjAsZ3IwLGljYzAKLSAgIDEwMGYwOgkwMCAwMiAwMSA1OCAJc3ViY2NcLnAgZ3IzMixncjI0LGdyMCxpY2MwCi0gICAxMDBmNDoJMDAgMDIgMDEgNWMgCXN1YmNjXC5wIGdyMzIsZ3IyOCxncjAsaWNjMAotICAgMTAwZjg6CTAwIDAyIDAxIGE0IAlzdWJ4XC5wIGdyMzIsZ3IzNixncjAsaWNjMAotICAgMTAwZmM6CTAwIDAyIDAxIDY4IAlzdWJjY1wucCBncjMyLGdyNDAsZ3IwLGljYzAKLSAgIDEwMTAwOgkwMCAwMiAwMSA2YyAJc3ViY2NcLnAgZ3IzMixncjQ0LGdyMCxpY2MwCi0gICAxMDEwNDoJMDAgMDIgMDEgYTAgCXN1YnhcLnAgZ3IzMixncjMyLGdyMCxpY2MwCi0gICAxMDEwODoJMDAgMDIgMDEgNzAgCXN1YmNjXC5wIGdyMzIsZ3I0OCxncjAsaWNjMAotICAgMTAxMGM6CTAwIDAyIDAxIDc0IAlzdWJjY1wucCBncjMyLGdyNTIsZ3IwLGljYzAKLSAgIDEwMTEwOgkwMCAwMiAwMSA4MCAJc3VieFwucCBncjMyLGdyMCxncjAsaWNjMAotICAgMTAxMTQ6CTAwIDAyIDAxIDg0IAlzdWJ4XC5wIGdyMzIsZ3I0LGdyMCxpY2MwCi0gICAxMDExODoJMDAgMDIgMDEgNzggCXN1YmNjXC5wIGdyMzIsZ3I1NixncjAsaWNjMAotICAgMTAxMWM6CTAwIDAyIDAxIDdjIAlzdWJjY1wucCBncjMyLGdyNjAsZ3IwLGljYzAKLSAgIDEwMTIwOgkwMCAwMiAwMSA1MCAJc3ViY2NcLnAgZ3IzMixncjE2LGdyMCxpY2MwCi0gICAxMDEyNDoJMDAgMDIgMDEgNTQgCXN1YmNjXC5wIGdyMzIsZ3IyMCxncjAsaWNjMAotICAgMTAxMjg6CTAwIDAyIDAxIGE4IAlzdWJ4XC5wIGdyMzIsZ3I0MCxncjAsaWNjMAotICAgMTAxMmM6CTAwIDAyIDAxIDQ0IAlzdWJjY1wucCBncjMyLGdyNCxncjAsaWNjMAotICAgMTAxMzA6CTAwIDAyIDAxIDYwIAlzdWJjY1wucCBncjMyLGdyMzIsZ3IwLGljYzAKLSAgIDEwMTM0OgkwMCAwMiAwMSA2NCAJc3ViY2NcLnAgZ3IzMixncjM2LGdyMCxpY2MwCi0gICAxMDEzODoJMDAgMDIgMDEgNDggCXN1YmNjXC5wIGdyMzIsZ3I4LGdyMCxpY2MwCi0gICAxMDEzYzoJMDAgMDIgMDEgNGMgCXN1YmNjXC5wIGdyMzIsZ3IxMixncjAsaWNjMAotICAgMTAxNDA6CTAwIDAyIDAxIDg4IAlzdWJ4XC5wIGdyMzIsZ3I4LGdyMCxpY2MwCisgICAxMDBlMDoJMDAgMDEgNDEgOTggCXN1YnhcLnAgZ3IyMCxncjI0LGdyMCxpY2MwCisgICAxMDBlNDoJMDAgMDEgNDEgOWMgCXN1YnhcLnAgZ3IyMCxncjI4LGdyMCxpY2MwCisgICAxMDBlODoJMDAgMDEgNDEgYWMgCXN1YnhcLnAgZ3IyMCxncjQ0LGdyMCxpY2MwCisgICAxMDBlYzoJMDAgMDEgNDEgOTQgCXN1YnhcLnAgZ3IyMCxncjIwLGdyMCxpY2MwCisgICAxMDBmMDoJMDAgMDEgNDEgNTggCXN1YmNjXC5wIGdyMjAsZ3IyNCxncjAsaWNjMAorICAgMTAwZjQ6CTAwIDAxIDQxIDVjIAlzdWJjY1wucCBncjIwLGdyMjgsZ3IwLGljYzAKKyAgIDEwMGY4OgkwMCAwMSA0MSBhNCAJc3VieFwucCBncjIwLGdyMzYsZ3IwLGljYzAKKyAgIDEwMGZjOgkwMCAwMSA0MSA2OCAJc3ViY2NcLnAgZ3IyMCxncjQwLGdyMCxpY2MwCisgICAxMDEwMDoJMDAgMDEgNDEgNmMgCXN1YmNjXC5wIGdyMjAsZ3I0NCxncjAsaWNjMAorICAgMTAxMDQ6CTAwIDAxIDQxIGEwIAlzdWJ4XC5wIGdyMjAsZ3IzMixncjAsaWNjMAorICAgMTAxMDg6CTAwIDAxIDQxIDcwIAlzdWJjY1wucCBncjIwLGdyNDgsZ3IwLGljYzAKKyAgIDEwMTBjOgkwMCAwMSA0MSA3NCAJc3ViY2NcLnAgZ3IyMCxncjUyLGdyMCxpY2MwCisgICAxMDExMDoJMDAgMDEgNDEgODAgCXN1YnhcLnAgZ3IyMCxncjAsZ3IwLGljYzAKKyAgIDEwMTE0OgkwMCAwMSA0MSA4NCAJc3VieFwucCBncjIwLGdyNCxncjAsaWNjMAorICAgMTAxMTg6CTAwIDAxIDQxIDc4IAlzdWJjY1wucCBncjIwLGdyNTYsZ3IwLGljYzAKKyAgIDEwMTFjOgkwMCAwMSA0MSA3YyAJc3ViY2NcLnAgZ3IyMCxncjYwLGdyMCxpY2MwCisgICAxMDEyMDoJMDAgMDEgNDEgNTAgCXN1YmNjXC5wIGdyMjAsZ3IxNixncjAsaWNjMAorICAgMTAxMjQ6CTAwIDAxIDQxIDU0IAlzdWJjY1wucCBncjIwLGdyMjAsZ3IwLGljYzAKKyAgIDEwMTI4OgkwMCAwMSA0MSBhOCAJc3VieFwucCBncjIwLGdyNDAsZ3IwLGljYzAKKyAgIDEwMTJjOgkwMCAwMSA0MSA0NCAJc3ViY2NcLnAgZ3IyMCxncjQsZ3IwLGljYzAKKyAgIDEwMTMwOgkwMCAwMSA0MSA2MCAJc3ViY2NcLnAgZ3IyMCxncjMyLGdyMCxpY2MwCisgICAxMDEzNDoJMDAgMDEgNDEgNjQgCXN1YmNjXC5wIGdyMjAsZ3IzNixncjAsaWNjMAorICAgMTAxMzg6CTAwIDAxIDQxIDQ4IAlzdWJjY1wucCBncjIwLGdyOCxncjAsaWNjMAorICAgMTAxM2M6CTAwIDAxIDQxIDRjIAlzdWJjY1wucCBncjIwLGdyMTIsZ3IwLGljYzAKKyAgIDEwMTQwOgkwMCAwMSA0MSA4OCAJc3VieFwucCBncjIwLGdyOCxncjAsaWNjMAogRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiBcLmRhdGE6CiAKLTAwMDIwMTQ0IDxEOD46Ci0gICAyMDE0NDoJMDAgMDIgMDEgNGMgCXN1YmNjXC5wIGdyMzIsZ3IxMixncjAsaWNjMAorMDAwMTQxNDQgPEQ4PjoKKyAgIDE0MTQ0OgkwMCAwMSA0MSA0YyAJc3ViY2NcLnAgZ3IyMCxncjEyLGdyMCxpY2MwCiAKLTAwMDIwMTQ4IDxHRDA+OgotICAgMjAxNDg6CTAwIDAyIDAxIDYwIAlzdWJjY1wucCBncjMyLGdyMzIsZ3IwLGljYzAKLSAgIDIwMTRjOgkwMCAwMSAwMCA5YyAJYWRkeFwucCBncjE2LGdyMjgsZ3IwLGljYzAKKzAwMDE0MTQ4IDxHRDA+OgorICAgMTQxNDg6CTAwIDAxIDQxIDYwIAlzdWJjY1wucCBncjIwLGdyMzIsZ3IwLGljYzAKKyAgIDE0MTRjOgkwMCAwMSAwMCA5YyAJYWRkeFwucCBncjE2LGdyMjgsZ3IwLGljYzAKIERpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gXC5nb3Q6CiAKLTAwMDIwMTUwIDxfR0xPQkFMX09GRlNFVF9UQUJMRV8tMHgzOD46Ci0gICAyMDE1MDoJMDAgMDEgMDAgOWMgCWFkZHhcLnAgZ3IxNixncjI4LGdyMCxpY2MwCi0gICAyMDE1NDoJMDAgMDIgMDEgODggCXN1YnhcLnAgZ3IzMixncjgsZ3IwLGljYzAKLSAgIDIwMTU4OgkwMCAwMSAwMCA5YyAJYWRkeFwucCBncjE2LGdyMjgsZ3IwLGljYzAKLSAgIDIwMTVjOgkwMCAwMiAwMSA4OCAJc3VieFwucCBncjMyLGdyOCxncjAsaWNjMAotICAgMjAxNjA6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMAotICAgMjAxNjQ6CTAwIDAyIDAxIDg4IAlzdWJ4XC5wIGdyMzIsZ3I4LGdyMCxpY2MwCi0gICAyMDE2ODoJMDAgMDEgMDAgOWMgCWFkZHhcLnAgZ3IxNixncjI4LGdyMCxpY2MwCi0gICAyMDE2YzoJMDAgMDIgMDEgODggCXN1YnhcLnAgZ3IzMixncjgsZ3IwLGljYzAKLSAgIDIwMTcwOgkwMCAwMSAwMCA5YyAJYWRkeFwucCBncjE2LGdyMjgsZ3IwLGljYzAKLSAgIDIwMTc0OgkwMCAwMiAwMSA4OCAJc3VieFwucCBncjMyLGdyOCxncjAsaWNjMAotICAgMjAxNzg6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMAotICAgMjAxN2M6CTAwIDAyIDAxIDg4IAlzdWJ4XC5wIGdyMzIsZ3I4LGdyMCxpY2MwCi0gICAyMDE4MDoJMDAgMDEgMDAgOWMgCWFkZHhcLnAgZ3IxNixncjI4LGdyMCxpY2MwCi0gICAyMDE4NDoJMDAgMDIgMDEgODggCXN1YnhcLnAgZ3IzMixncjgsZ3IwLGljYzAKKzAwMDE0MTUwIDxfR0xPQkFMX09GRlNFVF9UQUJMRV8tMHgzOD46CisgICAxNDE1MDoJMDAgMDEgMDAgOWMgCWFkZHhcLnAgZ3IxNixncjI4LGdyMCxpY2MwCisgICAxNDE1NDoJMDAgMDEgNDEgODggCXN1YnhcLnAgZ3IyMCxncjgsZ3IwLGljYzAKKyAgIDE0MTU4OgkwMCAwMSAwMCA5YyAJYWRkeFwucCBncjE2LGdyMjgsZ3IwLGljYzAKKyAgIDE0MTVjOgkwMCAwMSA0MSA4OCAJc3VieFwucCBncjIwLGdyOCxncjAsaWNjMAorICAgMTQxNjA6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMAorICAgMTQxNjQ6CTAwIDAxIDQxIDg4IAlzdWJ4XC5wIGdyMjAsZ3I4LGdyMCxpY2MwCisgICAxNDE2ODoJMDAgMDEgMDAgOWMgCWFkZHhcLnAgZ3IxNixncjI4LGdyMCxpY2MwCisgICAxNDE2YzoJMDAgMDEgNDEgODggCXN1YnhcLnAgZ3IyMCxncjgsZ3IwLGljYzAKKyAgIDE0MTcwOgkwMCAwMSAwMCA5YyAJYWRkeFwucCBncjE2LGdyMjgsZ3IwLGljYzAKKyAgIDE0MTc0OgkwMCAwMSA0MSA4OCAJc3VieFwucCBncjIwLGdyOCxncjAsaWNjMAorICAgMTQxNzg6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMAorICAgMTQxN2M6CTAwIDAxIDQxIDg4IAlzdWJ4XC5wIGdyMjAsZ3I4LGdyMCxpY2MwCisgICAxNDE4MDoJMDAgMDEgMDAgOWMgCWFkZHhcLnAgZ3IxNixncjI4LGdyMCxpY2MwCisgICAxNDE4NDoJMDAgMDEgNDEgODggCXN1YnhcLnAgZ3IyMCxncjgsZ3IwLGljYzAKIAotMDAwMjAxODggPF9HTE9CQUxfT0ZGU0VUX1RBQkxFXz46CiswMDAxNDE4OCA8X0dMT0JBTF9PRkZTRVRfVEFCTEVfPjoKIAlcLlwuXC4KLSAgIDIwMTk0OgkwMCAwMiAwMSA1OCAJc3ViY2NcLnAgZ3IzMixncjI0LGdyMCxpY2MwCi0gICAyMDE5ODoJMDAgMDEgMDAgOWMgCWFkZHhcLnAgZ3IxNixncjI4LGdyMCxpY2MwCi0gICAyMDE5YzoJMDAgMDEgMDAgOWMgCWFkZHhcLnAgZ3IxNixncjI4LGdyMCxpY2MwCi0gICAyMDFhMDoJMDAgMDIgMDEgNzAgCXN1YmNjXC5wIGdyMzIsZ3I0OCxncjAsaWNjMAotICAgMjAxYTQ6CTAwIDAyIDAxIDY4IAlzdWJjY1wucCBncjMyLGdyNDAsZ3IwLGljYzAKLSAgIDIwMWE4OgkwMCAwMiAwMSA0YyAJc3ViY2NcLnAgZ3IzMixncjEyLGdyMCxpY2MwCi0gICAyMDFhYzoJMDAgMDEgMDAgOWMgCWFkZHhcLnAgZ3IxNixncjI4LGdyMCxpY2MwCisgICAxNDE5NDoJMDAgMDEgNDEgNTggCXN1YmNjXC5wIGdyMjAsZ3IyNCxncjAsaWNjMAorICAgMTQxOTg6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMAorICAgMTQxOWM6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMAorICAgMTQxYTA6CTAwIDAxIDQxIDcwIAlzdWJjY1wucCBncjIwLGdyNDgsZ3IwLGljYzAKKyAgIDE0MWE0OgkwMCAwMSA0MSA2OCAJc3ViY2NcLnAgZ3IyMCxncjQwLGdyMCxpY2MwCisgICAxNDFhODoJMDAgMDEgNDEgNGMgCXN1YmNjXC5wIGdyMjAsZ3IxMixncjAsaWNjMAorICAgMTQxYWM6CTAwIDAxIDAwIDljIAlhZGR4XC5wIGdyMTYsZ3IyOCxncjAsaWNjMApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mZHBpYy5leHAgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLmV4cAppbmRleCBkYzA2ZDRlLi4xMzY3Y2IwIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLmV4cAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZkcGljLmV4cApAQCAtNDIsNyArNDIsOSBAQAogcnVuX2R1bXBfdGVzdCAiZmRwaWMtc2hhcmVkLTUiCiAKIHJ1bl9kdW1wX3Rlc3QgImZkcGljLXN0YXRpYy02IgorcnVuX2R1bXBfdGVzdCAiZmRwaWMtcGllLTYtZmFpbCIKIHJ1bl9kdW1wX3Rlc3QgImZkcGljLXBpZS02IgorcnVuX2R1bXBfdGVzdCAiZmRwaWMtc2hhcmVkLTYtZmFpbCIKIHJ1bl9kdW1wX3Rlc3QgImZkcGljLXNoYXJlZC02IgogCiBydW5fZHVtcF90ZXN0ICJmZHBpYy1zdGF0aWMtNyIKQEAgLTUwLDcgKzUyLDYgQEAKIHJ1bl9kdW1wX3Rlc3QgImZkcGljLXNoYXJlZC03IgogCiBydW5fZHVtcF90ZXN0ICJmZHBpYy1zdGF0aWMtOCIKLXJ1bl9kdW1wX3Rlc3QgImZkcGljLXBpZS04LWZhaWwiCiBydW5fZHVtcF90ZXN0ICJmZHBpYy1waWUtOCIKIHJ1bl9kdW1wX3Rlc3QgImZkcGljLXNoYXJlZC04LWZhaWwiCiBydW5fZHVtcF90ZXN0ICJmZHBpYy1zaGFyZWQtOCIKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZnI0NTAtbGluay5kIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mcjQ1MC1saW5rLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FhYjZmMAotLS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZnI0NTAtbGluay5kCkBAIC0wLDAgKzEsMTEgQEAKKyNzb3VyY2U6IGZyNDUwLWxpbmthLnMgLW1jcHU9ZnI0MDAKKyNzb3VyY2U6IGZyNDUwLWxpbmtiLnMgLW1jcHU9ZnI0MDUKKyNzb3VyY2U6IGZyNDUwLWxpbmtjLnMgLW1jcHU9ZnI0NTAKKyNzb3VyY2U6IGZyNDUwLWxpbmtiLnMgLW1jcHU9ZnI0MDUKKyNzb3VyY2U6IGZyNDUwLWxpbmthLnMgLW1jcHU9ZnI0MDAKKyNsZDogLXIKKyNvYmpkdW1wOiAtcAorCisuKjogICAgIGZpbGUgZm9ybWF0IGVsZjMyLWZydgorcHJpdmF0ZSBmbGFncyA9IDB4ODAwMDAwMDogLW1jcHU9ZnI0NTAKKwpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mcjQ1MC1saW5rYS5zIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mcjQ1MC1saW5rYS5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlN2ZlMmYKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZyNDUwLWxpbmthLnMKQEAgLTAsMCArMSBAQAorCW5vcApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mcjQ1MC1saW5rYi5zIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mcjQ1MC1saW5rYi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlN2ZlMmYKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZyNDUwLWxpbmtiLnMKQEAgLTAsMCArMSBAQAorCW5vcApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mcjQ1MC1saW5rYy5zIGIvbGQvdGVzdHN1aXRlL2xkLWZydi9mcjQ1MC1saW5rYy5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlN2ZlMmYKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZnJ2L2ZyNDUwLWxpbmtjLnMKQEAgLTAsMCArMSBAQAorCW5vcApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWZydi9mcnYtZWxmLmV4cCBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZnJ2LWVsZi5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ2M2UwMwotLS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1mcnYvZnJ2LWVsZi5leHAKQEAgLTAsMCArMSwzIEBACitpZiBbaXN0YXJnZXQgZnJ2Ki0qLSpdIHsKKyAgICBydW5fZHVtcF90ZXN0ICJmcjQ1MC1saW5rIgorfQpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLXBvd2VycGMvdGxzZXhlLnIgYi9sZC90ZXN0c3VpdGUvbGQtcG93ZXJwYy90bHNleGUucgppbmRleCAwNmFkOGEzLi5lNGE2MWQyIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtcG93ZXJwYy90bHNleGUucgorKysgYi9sZC90ZXN0c3VpdGUvbGQtcG93ZXJwYy90bHNleGUucgpAQCAtNjksNyArNjksNyBAQAogICswOiAwKyArMCBOT1RZUEUgK0xPQ0FMICtERUZBVUxUICtVTkQgCiAgKzE6IDArMTAwMTA0YzAgKzAgT0JKRUNUICtHTE9CQUwgREVGQVVMVCArQUJTIF9EWU5BTUlDCiAgKzI6IDArICswIFRMUyArR0xPQkFMIERFRkFVTFQgK1VORCBnZAotICszOiAwKyArMCBOT1RZUEUgK0dMT0JBTCBERUZBVUxUICtVTkQgX190bHNfZ2V0X2FkZHIKKyArMzogMCsgKzAgRlVOQyArR0xPQkFMIERFRkFVTFQgK1VORCBfX3Rsc19nZXRfYWRkcgogICs0OiAwKyArMCBGVU5DICtHTE9CQUwgREVGQVVMVCArVU5EIFwuX190bHNfZ2V0X2FkZHIKICArNTogMCsgKzAgVExTICtHTE9CQUwgREVGQVVMVCArVU5EIGxkCiAgKzY6IDArNTAgKzAgVExTICtHTE9CQUwgREVGQVVMVCArMTEgbGQyCkBAIC0xMDksNyArMTA5LDcgQEAKICArMjc6IDArMTAwMTA0YzAgKzAgT0JKRUNUICtHTE9CQUwgREVGQVVMVCArQUJTIF9EWU5BTUlDCiAgKzI4OiAwKyArMCBUTFMgK0dMT0JBTCBERUZBVUxUICtVTkQgZ2QKICArMjk6IDArNjAgKzAgVExTICtHTE9CQUwgREVGQVVMVCArMTEgbGUwCi0gKzMwOiAwKyArMCBOT1RZUEUgK0dMT0JBTCBERUZBVUxUICtVTkQgX190bHNfZ2V0X2FkZHIKKyArMzA6IDArICswIEZVTkMgK0dMT0JBTCBERUZBVUxUICtVTkQgX190bHNfZ2V0X2FkZHIKICArMzE6IDArICswIEZVTkMgK0dMT0JBTCBERUZBVUxUICtVTkQgXC5fX3Rsc19nZXRfYWRkcgogICszMjogMCs0MCArMCBUTFMgK0dMT0JBTCBERUZBVUxUICsxMSBsZDAKICArMzM6IDArNjggKzAgVExTICtHTE9CQUwgREVGQVVMVCArMTEgbGUxCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtcG93ZXJwYy90bHNleGV0b2MuciBiL2xkL3Rlc3RzdWl0ZS9sZC1wb3dlcnBjL3Rsc2V4ZXRvYy5yCmluZGV4IGUzYzRlOGUuLjRkYWFlMzMgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1wb3dlcnBjL3Rsc2V4ZXRvYy5yCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1wb3dlcnBjL3Rsc2V4ZXRvYy5yCkBAIC02OCw3ICs2OCw3IEBACiAgKzA6IDArICswIE5PVFlQRSArTE9DQUwgK0RFRkFVTFQgK1VORCAKICArMTogMCsxMDAxMDQ0OCArMCBPQkpFQ1QgK0dMT0JBTCBERUZBVUxUICtBQlMgX0RZTkFNSUMKICArMjogMCsgKzAgVExTICtHTE9CQUwgREVGQVVMVCArVU5EIGdkCi0gKzM6IDArICswIE5PVFlQRSArR0xPQkFMIERFRkFVTFQgK1VORCBfX3Rsc19nZXRfYWRkcgorICszOiAwKyArMCBGVU5DICtHTE9CQUwgREVGQVVMVCArVU5EIF9fdGxzX2dldF9hZGRyCiAgKzQ6IDArICswIEZVTkMgK0dMT0JBTCBERUZBVUxUICtVTkQgXC5fX3Rsc19nZXRfYWRkcgogICs1OiAwKyArMCBUTFMgK0dMT0JBTCBERUZBVUxUICtVTkQgbGQKICArNjogMCsxMDAxMDVmMCArMCBOT1RZUEUgK0dMT0JBTCBERUZBVUxUICtBQlMgX19ic3Nfc3RhcnQKQEAgLTEwOCw3ICsxMDgsNyBAQAogICsyODogMCsxMDAxMDQ0OCArMCBPQkpFQ1QgK0dMT0JBTCBERUZBVUxUICtBQlMgX0RZTkFNSUMKICArMjk6IDArICswIFRMUyArR0xPQkFMIERFRkFVTFQgK1VORCBnZAogICszMDogMCs2MCArMCBUTFMgK0dMT0JBTCBERUZBVUxUICsxMSBsZTAKLSArMzE6IDArICswIE5PVFlQRSArR0xPQkFMIERFRkFVTFQgK1VORCBfX3Rsc19nZXRfYWRkcgorICszMTogMCsgKzAgRlVOQyArR0xPQkFMIERFRkFVTFQgK1VORCBfX3Rsc19nZXRfYWRkcgogICszMjogMCsgKzAgRlVOQyArR0xPQkFMIERFRkFVTFQgK1VORCBcLl9fdGxzX2dldF9hZGRyCiAgKzMzOiAwKzQwICswIFRMUyArR0xPQkFMIERFRkFVTFQgKzExIGxkMAogICszNDogMCs2OCArMCBUTFMgK0dMT0JBTCBERUZBVUxUICsxMSBsZTEKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2FsaWduLmV4cCBiL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2FsaWduLmV4cAppbmRleCAzOTU5ZTZkLi5mNzY2NGNhIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9hbGlnbi5leHAKKysrIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvYWxpZ24uZXhwCkBAIC0xNyw2ICsxNywxMSBAQAogIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogCitpZiBbaXN0YXJnZXQgInJzNjAwMC0qLWFpeCoiXSB7CisgICAgIyBUYXJnZXQgbWFwcyAudGV4dCBhbmQgLmRhdGEgdG8gb3RoZXIgc2VjdGlvbnMuCisgICAgcmV0dXJuCit9CisKIHNldCB0ZXN0bmFtZSAiQUxJR04iCiAKIGlmICFbbGRfYXNzZW1ibGUgJGFzICRzcmNkaXIvJHN1YmRpci9hbGlnbi5zIHRtcGRpci9hbGlnbi5vXSB7CmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9hc3NlcnQucyBiL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2Fzc2VydC5zCmluZGV4IDA1MTdmZmUuLmU2OWRlMjkgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2Fzc2VydC5zCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2Fzc2VydC5zCkBAIC0xICswLDAgQEAKLSNub3RoaW5nIGhlcmUKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2RhdGEuZCBiL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2RhdGEuZAppbmRleCA2Mjg0Njg2Li4xMGIzZDA4IDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9kYXRhLmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvZGF0YS5kCkBAIC01LDUgKzUsNSBAQAogLio6ICAgICBmaWxlIGZvcm1hdCAuKgogCiBDb250ZW50cyBvZiBzZWN0aW9uIC50ZXh0OgotIDEwMDAgKDA0MTApPzAwMDAoMTAwNCk/ICgwODEwKT8wMDAwKDEwMDgpPyArLi4uLi4uLi4gKgorIFswLTlhLWZdKiAoMDQpPzAwMDAwMCgwNCk/ICgwMDIwKT8wMDAwKDIwMDApPyAuKgogI3Bhc3MKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2RhdGEucyBiL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2RhdGEucwppbmRleCAwNTE3ZmZlLi5lNjlkZTI5IDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9kYXRhLnMKKysrIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvZGF0YS5zCkBAIC0xICswLDAgQEAKLSNub3RoaW5nIGhlcmUKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2RhdGEudCBiL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2RhdGEudAppbmRleCAzNTlhMDJmLi5mNTZkMTBmIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9kYXRhLnQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvZGF0YS50CkBAIC0xLDEwICsxLDExIEBACiBTRUNUSU9OUwogewotICAudGV4dCAweDEwMDAgOgorICAuID0gMHgxMDAwICsgU0laRU9GX0hFQURFUlM7CisgIC50ZXh0IEFMSUdOICgweDIwKSA6CiAgICB7Ci0gICAgIExPTkcgKGxhYmVsKQorICAgICBMT05HIChsYWJlbCAtIC4pCiAgICAgIGxhYmVsID0gLjsKICAgICAgTE9ORyAoQUREUiAoLm90aGVyKSkKICAgIH0KLSAgIC5vdGhlciA6IHt9CisgICAub3RoZXIgMHgyMDAwIDoge30KIH0KZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2RlZmluZWQyLmQgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9kZWZpbmVkMi5kCmluZGV4IDZiYjA2ODIuLjZlNmUwNjggMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2RlZmluZWQyLmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvZGVmaW5lZDIuZApAQCAtMTAsOCArMTAsMTEgQEAKIAogIy4uLgogMCsxIFtBVF0gZGVmaW5lZDEKKyMuLi4KIDArMTEgQSBkZWZpbmVkMgorIy4uLgogMCsxMDAgQSBkZWZpbmVkMworIy4uLgogMCsxZmYgQSBkZWZpbmVkNAogIy4uLgogMCszIFQgc3ltMQpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvZGVmaW5lZDMuZCBiL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL2RlZmluZWQzLmQKaW5kZXggMWE3OTQ2ZC4uMGIzODMxYyAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvZGVmaW5lZDMuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9kZWZpbmVkMy5kCkBAIC0xMSwxNSArMTEsMjQgQEAKIAogIy4uLgogMCsxIFtBVF0gZGVmaW5lZAorIy4uLgogMCsyMDAgQSBkZWZpbmVkMQorIy4uLgogMCsyMDEgQSBkZWZpbmVkMgorIy4uLgogMCsxMDAgQSBkZWZpbmVkMworIy4uLgogMCsgW0FUXSBkZWZpbmVkNAorIy4uLgogMCsyYSBBIGRlZmluZWQ1CisjLi4uCiAwKyBbQVRdIGRlZmluZWQ2CisjLi4uCiAwKzEgW0FUXSBkZWZpbmVkNworIy4uLgogMCsxIFtBVF0gZGVmaW5lZDgKICMuLi4KIDArMmEgQSBzeW0xCisjLi4uCiBbMC05YS1mXSsgVCBzeW0yCiAjcGFzcwpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0xLmQgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLTEuZAppbmRleCBiZWMzOTgyLi5hYzg3MTlhIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLTEuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLTEuZApAQCAtNSw0ICs1LDUgQEAKIC4qOiAgICAgZmlsZSBmb3JtYXQgLioKIAogQ29udGVudHMgb2Ygc2VjdGlvbiAuZGF0YToKLSAwMDAwICgwOCk/MDAwMDAwKDA4KT8gKDBjKT8wMDAwMDAoMGMpPyAwMDAwMDAwMCAgICAgICAgICAgLi4uLi4uLi4uLi4uICAgIAorIFswLTlhLWZdKiAoMTAyMCk/MDAwMCgyMDEwKT8gKDIwMjApPzAwMDAoMjAyMCk/IDAwMDAwMDAwIC4qCisjcGFzcwpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0xLnMgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLTEucwppbmRleCA2Mzk1ZjNhLi4xZTMzNTQwIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLTEucworKysgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLTEucwpAQCAtMSwzICsxLDQgQEAKIAkuZGF0YQogCS5nbG9ibCBmb28KIGZvbzoJLmxvbmcgMAorCS5wMmFsaWduIDQKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL3Byb3ZpZGUtMS50IGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0xLnQKaW5kZXggZGQzMDk1Ni4uNmI5NmIzMyAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0xLnQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0xLnQKQEAgLTEsOSArMSwxMCBAQAogU0VDVElPTlMgCiB7Ci0gIC5kYXRhIDoKKyAgLmRhdGEgMHgyMDAwIDoKICAgewogICAgIExPTkcgKGZvbykKICAgICBMT05HIChiYXIpCisgICAgLiA9IEFMSUdOICgweDEwKTsKICAgICAqKC5kYXRhKQogICB9CiAgIFBST1ZJREUgKGZvbyA9IC4pOwpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0yLmQgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLTIuZAppbmRleCAzYjU5ZTMyLi5mOGJkMGNmIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLTIuZAorKysgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLTIuZApAQCAtMSw2ICsxLDcgQEAKICNzb3VyY2U6IHByb3ZpZGUtMi5zCiAjbGQ6IC1UIHByb3ZpZGUtMi50CiAjbm06IC1CCisjLi4uCiAwKzMgQSBiYXoKIDArMCBEIGZvbwotCisjcGFzcwpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0yLnMgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLTIucwppbmRleCA2ZmE5M2U0Li5mOTEzOGRiIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLTIucworKysgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLTIucwpAQCAtNCwzICs0LDUgQEAKIAogCS5nbG9ibCBiYXoKIAkubG9uZyBiYXoKKworCS5wMmFsaWduIDQKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL3Byb3ZpZGUtMy5kIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0zLmQKaW5kZXggMWVlMzhlMy4uYzhiMTJkYSAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0zLmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0zLmQKQEAgLTEsMyArMSwzIEBACi0jc291cmNlOiBwcm92aWRlLTIucwotI2xkOiAtVCBwcm92aWRlLTIudAorI3NvdXJjZTogcHJvdmlkZS0zLnMKKyNsZDogLVQgcHJvdmlkZS0zLnQKICNlcnJvcjogc3ltYm9sIGRlZmluZWQgaW4gbGlua2VyIHNjcmlwdCBhbmQgb2JqZWN0IGZpbGUKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL3Byb3ZpZGUtMy5zIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0zLnMKaW5kZXggNjM5NWYzYS4uMWUzMzU0MCAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0zLnMKKysrIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvcHJvdmlkZS0zLnMKQEAgLTEsMyArMSw0IEBACiAJLmRhdGEKIAkuZ2xvYmwgZm9vCiBmb286CS5sb25nIDAKKwkucDJhbGlnbiA0CmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9wcm92aWRlLmV4cCBiL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL3Byb3ZpZGUuZXhwCmluZGV4IDAwOTI2NzQuLjRlMzQ1MDEgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL3Byb3ZpZGUuZXhwCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL3Byb3ZpZGUuZXhwCkBAIC0xNyw2ICsxNywxMSBAQAogIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogCitpZiBbaXN0YXJnZXQgInJzNjAwMC0qLWFpeCoiXSB7CisgICAgIyBUYXJnZXQgbWFwcyAudGV4dCBhbmQgLmRhdGEgdG8gb3RoZXIgc2VjdGlvbnMuCisgICAgcmV0dXJuCit9CisKIHNldCB0ZXN0bmFtZSAicHJvdmlkZSIKIAogcnVuX2R1bXBfdGVzdCBwcm92aWRlLTEKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL3NpemUtMS5kIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvc2l6ZS0xLmQKaW5kZXggNjY3ZjUzMS4uNjQxZmJjYSAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvc2l6ZS0xLmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvc2l6ZS0xLmQKQEAgLTQsMTMgKzQsMTEgQEAKIAogLio6ICAgICBmaWxlIGZvcm1hdCAuKgogCisjLi4uCiBDb250ZW50cyBvZiBzZWN0aW9uIFwudGV4dDoKLSAwKzAwICgwMSk/MDAwMDAwKDAxKT8gKDAyKT8wMDAwMDAoMDIpPyAgICAgICAgICAgICAgICAgICAgLi4uLi4uLi4gICAgICAgIAorIFswLTlhLWZdKiAoMDEpPzAwMDAwMCgwMSk/ICgwMik/MDAwMDAwKDAyKT8gLioKKyMuLi4KIENvbnRlbnRzIG9mIHNlY3Rpb24gXC5kYXRhOgotIDArMDggKDAzKT8wMDAwMDAoMDMpPyAoMDQpPzAwMDAwMCgwNCk/ICgwNSk/MDAwMDAwKDA1KT8gICAgICAgICAgIC4uLi4uLi4uLi4uLiAgICAKLUNvbnRlbnRzIG9mIHNlY3Rpb24gXC50ZGF0YToKLSAwKzI0ICgwNik/MDAwMDAwIDA3MDAwMDAwIDA4MDAwMDAwIDA5MDAwMDAwICAuLi4uLi4uLi4uLi4uLi4uCi0gMCszNCAoMGEpPzAwMDAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uLiAgICAgICAgICAgIAotQ29udGVudHMgb2Ygc2VjdGlvbiBcLm1hcDoKLSAwKzM4ICgwOCk/MDAwMDAwKDA4KT8gKDBjKT8wMDAwMDAoMGMpPyAoMTApPzAwMDAwMCgxMCk/ICgxNCk/MDAwMDAwKDE0KT8gIC4uLi4uLi4uLi4uLi4uLi4KLSAwKzQ4ICgxOCk/MDAwMDAwKDE4KT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLi4gICAgICAgICAgICAKKyBbMC05YS1mXSogKDAzKT8wMDAwMDAoMDMpPyAoMDQpPzAwMDAwMCgwNCk/ICgwNSk/MDAwMDAwKDA1KT8gMDAwMDAwMDAgLioKKyBbMC05YS1mXSogKDIwKT8wMDAwMDAoMjApPyAoMTgpPzAwMDAwMCgxOCk/IC4qCisjcGFzcwpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvc2l6ZS0xLnMgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLTEucwppbmRleCA1MzcyMWZhLi43ZjVhNWZkIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLTEucworKysgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLTEucwpAQCAtMSwxNSArMSw3IEBACi0JLnNlY3Rpb24gLnRleHQsImF4IixAcHJvZ2JpdHMKKwkudGV4dAogCS5sb25nIDEsMgorCS5wMmFsaWduIDUKIAotCS5zZWN0aW9uIC5kYXRhLCJhdyIsQHByb2diaXRzCisJLmRhdGEKIAkubG9uZyAzLDQsNQotCi0JLnNlY3Rpb24gLmJzcywiYXciLEBub2JpdHMKLQkubG9uZyAwLDAsMCwwCi0JCi0JIyB0aHJlYWQgbG9jYWwgc3RvcmFnZSBzZWN0aW9ucwotCS5zZWN0aW9uIC50ZGF0YSwiYXdUIixAcHJvZ2JpdHMKLQkubG9uZyA2LDcsOCw5LDEwCi0JCi0JLnNlY3Rpb24gLnRic3MsImF3VCIsQG5vYml0cwotCS5sb25nIDAsMCwwLDAsMCwwCisJLnAyYWxpZ24gNApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvc2l6ZS0xLnQgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLTEudAppbmRleCA4NTgyODQwLi5iYjQ4NjY1IDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLTEudAorKysgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLTEudApAQCAtMSwxNSArMSwxMCBAQAogU0VDVElPTlMKIHsKLSAgLnRleHQgOiB7ICooLnRleHQpIH0KLSAgLmRhdGEgOiB7ICooLmRhdGEpIH0KLSAgLmJzcyA6IHsgKiguYnNzKSB9Ci0gIC50ZGF0YSA6IHsgKigudGRhdGEpIH0KLSAgLnRic3MgOiB7ICooLnRic3MpIH0KLSAgLm1hcCA6IHsKKyAgLiA9IDB4MTAwMCArIFNJWkVPRl9IRUFERVJTOworICAudGV4dCBBTElHTiAoMHgyMCkgOiB7ICooLnRleHQpIH0KKyAgLmRhdGEgMHgyMDAwIDogeworICAgICooLmRhdGEpCiAgICAgTE9ORyAoU0laRU9GICgudGV4dCkpCiAgICAgTE9ORyAoU0laRU9GICguZGF0YSkpCi0gICAgTE9ORyAoU0laRU9GICguYnNzKSkKLSAgICBMT05HIChTSVpFT0YgKC50ZGF0YSkpCi0gICAgTE9ORyAoU0laRU9GICgudGJzcykpCiAgIH0KIH0KZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1zY3JpcHRzL3NpemUtMi5kIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvc2l6ZS0yLmQKaW5kZXggM2NiZmI0NC4uZGZjYzNlNCAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvc2l6ZS0yLmQKKysrIGIvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvc2l6ZS0yLmQKQEAgLTEsMjAgKzEsMTcgQEAKICNzb3VyY2U6IHNpemUtMi5zCiAjbGQ6IC1UIHNpemUtMi50Ci0jcmVhZGVsZjogLWwKKyNyZWFkZWxmOiAtbCAtLXdpZGUKIAogIy4uLgogUHJvZ3JhbSBIZWFkZXJzOgotICBUeXBlICAgICAgICAgICBPZmZzZXQgICAgICAgICAgICAgVmlydEFkZHIgICAgICAgICAgIFBoeXNBZGRyCi0gICAgICAgICAgICAgICAgIEZpbGVTaXogICAgICAgICAgICBNZW1TaXogICAgICAgICAgICAgIEZsYWdzICBBbGlnbgotICBQSERSICAgICAgICAgICAweFswLTlhLWZdKyAweDArMDAwMCAweDArMDAwMAotICAgICAgICAgICAgICAgICAweFswLTlhLWZdKyAweFswLTlhLWZdKyAgUiAgICAgIC4KLSAgTE9BRCAgICAgICAgICAgMHhbMC05YS1mXSsgMHgwKzAwMDAgMHgwKzAwMDAKLSAgICAgICAgICAgICAgICAgMHgwKzAwMzAgMHgwKzAwMzAgIFIgICAgICBbMC05YS1mXSsKLSAgVExTICAgICAgICAgICAgMHhbMC05YS1mXSsgMHgwKzAwMDggMHgwKzAwMDgKLSAgICAgICAgICAgICAgICAgMHgwKzAwMTQgMHgwKzAwMmMgIFIgICAgICBbMC05YS1mXSsKKyArVHlwZSArT2Zmc2V0ICtWaXJ0QWRkciArUGh5c0FkZHIgK0ZpbGVTaXogK01lbVNpeiArRmxnICtBbGlnbgorICtQSERSICsweFswLTlhLWZdKyAweDArMDAwMCAweDArMDAwMCAweFswLTlhLWZdKyAweFswLTlhLWZdKyBSICsweFswLTlhLWZdKworIy4uLgorICtMT0FEICsweFswLTlhLWZdKyAweDArMDEwMCAweDArMDEwMCAweDArMDAzMCAweDArMDAzMCBSIEUgKzB4WzAtOWEtZl0rCisgK1RMUyArMHhbMC05YS1mXSsgMHgwKzAxMDggMHgwKzAxMDggMHgwKzAwMTQgMHgwKzAwMmMgUiArMHhbMC05YS1mXSsKIAogIFNlY3Rpb24gdG8gU2VnbWVudCBtYXBwaW5nOgotICBTZWdtZW50IFNlY3Rpb25zLi4uCi0gICAwMCAgICAgXC50ZXh0IFwudGRhdGEgXC50YnNzIFwubWFwIAotICAgMDEgICAgIFwudGV4dCBcLnRkYXRhIFwubWFwIAotICAgMDIgICAgIFwudGRhdGEgXC50YnNzIFwubWFwIAorICtTZWdtZW50IFNlY3Rpb25zXC5cLlwuCisgKzAwIC4qCisgKzAxICtcLnRleHQgXC50ZGF0YSBcLm1hcCAKKyArMDIgK1wudGRhdGEgXC50YnNzIFwubWFwIApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvc2l6ZS0yLnMgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLTIucwppbmRleCBlYmEzMjI0Li42YjEwMjUwIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLTIucworKysgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLTIucwpAQCAtMSw5ICsxLDggQEAKLQkuc2VjdGlvbiAudGV4dCwiYXgiLEBwcm9nYml0cworCS50ZXh0CiAJLmxvbmcgMSwyCiAKLQkjIHRocmVhZCBsb2NhbCBzdG9yYWdlIHNlY3Rpb25zCi0JLnNlY3Rpb24gLnRkYXRhLCJhd1QiLEBwcm9nYml0cworCS5zZWN0aW9uIC50ZGF0YQogCS5sb25nIDYsNyw4LDksMTAKIAkKLQkuc2VjdGlvbiAudGJzcywiYXdUIixAbm9iaXRzCisJLnNlY3Rpb24gLnRic3MKIAkubG9uZyAwLDAsMCwwLDAsMApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvc2l6ZS0yLnQgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLTIudAppbmRleCAzNTQ5MzIxLi5lNjdiM2ZhIDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLTIudAorKysgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLTIudApAQCAtMiwxMyArMiwxMyBAQAogewogICBoZWFkZXIgUFRfUEhEUiBGSUxFSERSIFBIRFJTIDsKIAkgCi0gIGltYWdlIFBUX0xPQUQgRkxBR1MgKDQpOworICBpbWFnZSBQVF9MT0FEIEZMQUdTICg1KTsKICAgdGxzIFBUX1RMUyBGTEFHUyAoNCk7CiAgIAogfQogU0VDVElPTlMKIHsKLSAgLnRleHQgOiB7ICooLnRleHQpIH0gOmltYWdlCisgIC50ZXh0IDB4MTAwIDogeyAqKC50ZXh0KSB9IDppbWFnZQogICAudGRhdGEgOiB7ICooLnRkYXRhKSB9IDppbWFnZSA6dGxzCiAgIC50YnNzIDogeyAqKC50YnNzKSB9IDppbWFnZSA6IHRscwogICAubWFwIDogewpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLXNjcmlwdHMvc2l6ZS5leHAgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLmV4cAppbmRleCA1ZmZmMmJkLi40MmU0ZTQ3IDEwMDY0NAotLS0gYS9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLmV4cAorKysgYi9sZC90ZXN0c3VpdGUvbGQtc2NyaXB0cy9zaXplLmV4cApAQCAtMTYsOCArMTYsMjAgQEAKICMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICMKIAoraWYgW2lzdGFyZ2V0ICJyczYwMDAtKi1haXgqIl0geworICAgICMgVGFyZ2V0IG1hcHMgLnRleHQgYW5kIC5kYXRhIHRvIG90aGVyIHNlY3Rpb25zLgorICAgIHJldHVybgorfQorCiBydW5fZHVtcF90ZXN0IHNpemUtMQogCi1pZiB7IFtpc3RhcmdldCAiKi0qLWVsZioiXSB9IHsKLSAgICBydW5fZHVtcF90ZXN0IHNpemUtMgoraWYgIVtpc19lbGZfZm9ybWF0XSB7CisgICAgcmV0dXJuCiB9CisKK2lmIFtpc3RhcmdldCAibWlwcyotKi0qIl0geworICAgICMgTUlQUyBpbnNlcnRzIGEgUkVHSU5GTyBQSERSCisgICAgcmV0dXJuCit9CisKK3J1bl9kdW1wX3Rlc3Qgc2l6ZS0yCmRpZmYgLS1naXQgYS9saWJpYmVydHkvQ2hhbmdlTG9nIGIvbGliaWJlcnR5L0NoYW5nZUxvZwppbmRleCAwOGI3ZDViLi42NjFjYTRiIDEwMDY0NAotLS0gYS9saWJpYmVydHkvQ2hhbmdlTG9nCisrKyBiL2xpYmliZXJ0eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OCBAQAorMjAwNC0wMy0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KKworCSogaGFzaHRhYi5jIChodGFiX3NpemUpOiBNb3ZlIHRvIHRvcCBvZiBmaWxlOyBtYXJrIGlubGluZS4KKwkoaHRhYl9lbGVtZW50cyk6IExpa2V3aXNlLgorCShodGFiX21vZCwgaHRhYl9tb2RfbTIpOiBOZXcuCisJKGh0YWJfZGVsZXRlKTogUmVmYWN0b3IgaHRhYi0+c2l6ZSBhbmQgaHRhYi0+ZW50cmllcy4KKwkoaHRhYl9lbXB0eSk6IExpa2V3aXNlLgorCShmaW5kX2VtcHR5X3Nsb3RfZm9yX2V4cGFuZCk6IFVzZSBodGFiX3NpemUsIGh0YWJfbW9kLCBodGFiX21vZF9tMi4KKwkoaHRhYl9maW5kX3dpdGhfaGFzaCwgaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogTGlrZXdpc2UuCisJKGh0YWJfY2xlYXJfc2xvdCk6IFVzZSBodGFiX3NpemUsIGh0YWJfZWxlbWVudHMuCisJKGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUsIGh0YWJfdHJhdmVyc2UpOiBMaWtld2lzZS4KKworMjAwNC0wMy0xNyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KKworCSogcGV4LXVuaXguYyAocGV4ZWN1dGUpOiBVc2UgdmZvcmsgaW5zdGVhZCBvZiBmb3JrLCB3aXRoCisJYXBwcm9wcmlhdGUgY2hhbmdlcyB0byBtYWtlIHRoaXMgc2FmZS4KKwkqIHBleC1jb21tb24uaCAoU1RERVJSX0ZJTEVfTk8pOiBEZWZpbmUuCisKKwkqIE1ha2VmaWxlLmluOiBDbGVhbiB1cCBSRVFVSVJFRF9PRklMRVMgYW5kIENPTkZJR1VSRURfT0ZJTEVTIGZvcgorCWFuIDgwIGNvbHVtbiBzY3JlZW4uICBSdW4gbWFpbnQtZGVwcy4KKworMjAwNC0wMy0wOSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KKworCSogY29uZmlndXJlLmFjOiBCdW1wIHZlcnNpb24gdG8gMi41OS4gIEFwcGx5IHN1Z2dlc3RlZCBhdXRvdXBkYXRlcy4KKwkqIGFjY29uZmlnLmg6IERlbGV0ZSByZWR1bmRhbnQgZmlsZS4KKwkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKworMjAwNC0wMy0wOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CisKKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZSBmb3IgY29uZmlnL2FjY3Jvc3MubTQgY29ycmVjdGlvbi4KKworMjAwNC0wMy0wNyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgorCisJKiB0ZXN0c3VpdGUvdGVzdC1kZW1hbmdsZS5jOiBJbmNsdWRlIDxzdHJpbmcuaD4gYW5kIDxzdGRsaWIuaD4gZm9yCisJcHJvdG90eXBlcy4KKwkobWFpbik6IEluaXRpYWxpemUgc3R5bGUuCisKKzIwMDQtMDItMjQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CisKKwkqIGNwLWRlbWFuZ2xlLmggKGVudW0gZF9idWlsdGluX3R5cGVfcHJpbnQpOiBBZGQgRF9QUklOVF9VTlNJR05FRCwKKwlEX1BSSU5UX1VOU0lHTkVEX0xPTkcsIERfUFJJTlRfTE9OR19MT05HLAorCURfUFJJTlRfVU5TSUdORURfTE9OR19MT05HLCBEX1BSSU5UX0ZMT0FULgorCSogY3AtZGVtYW5nbGUuYyAoY3BsdXNfZGVtYW5nbGVfYnVpbHRpbl90eXBlcyk6IENoYW5nZSBjaGFyIGFuZAorCXNob3J0IHR5cGVzIHRvIERfUFJJTlRfREVGQVVMVC4gIENoYW5nZSBvdGhlciBpbnRlZ2VyIHR5cGVzIHRvIHVzZQorCW5ldyBEX1BSSU5UXyogdmFsdWVzIHdoZXJlIGFwcHJvcHJpYXRlLiAgQ2hhbmdlIGZsb2F0IHR5cGVzIHRvCisJRF9QUklOVF9GTE9BVC4KKwkoZF9wcmludF9jb21wKSBbTElURVJBTCwgTElURVJBTF9ORUddOiBIYW5kbGUgbmV3IERfUFJJTlRfKgorCXZhbHVlcy4KKwkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRqdXN0IHR3byB0ZXN0IGNhc2VzLgorCisJKiBjcC1kZW1hbmdsZS5jIChkX3ByaW50X2Z1bmN0aW9uX3R5cGUpOiBQcmludCBhIHNwYWNlIGJlZm9yZSB0aGUKKwlwYXJlbnRoZXNpcyBhcm91bmQgdGhlIGZ1bmN0aW9uIHR5cGUgaW4gbW9yZSBjYXNlcy4KKwkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRqdXN0IG9uZSB0ZXN0IGNhc2UuCisKKwkqIGNwLWRlbWFuZ2xlLmMgKGRfcHJpbnRfY29tcCkgW1VOQVJZXTogRG9uJ3QgZW1pdCBleHRyYQorCXBhcmVudGhlc2VzIGFyb3VuZCBhIGNhc3QuCisJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkanVzdCB0d28gdGVzdCBjYXNlcyB0byBtYXRjaCBuZXcKKwlvdXRwdXQuCisKKwkqIGNwLWRlbWFuZ2xlLmMgKF9fY3hhX2RlbWFuZ2xlKTogUGFzcyBETUdMX1BBUkFNUyB0byBkX2RlbWFuZ2xlLgorCisJKiBjcC1kZW1hbmdsZS5jIChkX3ByaW50X2NvbXApIFtSRVNUUklDVCwgVk9MQVRJTEUsIENPTlNUXTogRG9uJ3QKKwlwdXNoIG1vcmUgdGhhbiBvbmUgb2YgdGhlIHNhbWUgQ1YtcXVhbGlmaWVyIG9uIHRoZSB0b3Agb2YgdGhlCisJc3RhY2suCisJKGRfcHJpbnRfY29tcCkgW0FSUkFZX1RZUEVdOiBJZiB0aGUgYXJyYXkgaXRzZWxmIGlzIENWLXF1YWxpZmllZCwKKwltb3ZlIHRoZSBDVi1xdWFsaWZpZXJzIHRvIGFwcGx5IHRvIHRoZSBlbGVtZW50IHR5cGUgaW5zdGVhZC4KKwkoZF9wcmludF9hcnJheV90eXBlKTogV2hlbiBjaGVja2luZyB0aGUgbW9kaWZpZXJzLCBrZWVwIGxvb2tpbmcKKwlwYXN0IG9uZXMgd2hpY2ggaGF2ZSBiZWVuIHByaW50ZWQgYWxyZWFkeS4KKwkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkIHRocmVlIHRlc3QgY2FzZXMuCisKKzIwMDQtMDItMjMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CisKKwkqIGNwLWRlbWFuZ2xlLmMgKF9fY3hhX2RlbWFuZ2xlKTogQWRqdXN0IGxhc3QgcGF0Y2ggdG8gaGFuZGxlCisJZW1wdHkgc3RyaW5nIGNvcnJlY3RseS4KKworCSogY3AtZGVtYW5nbGUuYyAoX19jeGFfZGVtYW5nbGUpOiBJdCBpcyBub3QgYW4gZXJyb3IgaWYgc3RhdHVzIGlzCisJbm90IE5VTEwuICBJdCBpcyBhbiBlcnJvciBpZiB0aGUgbWFuZ2xlZCBuYW1lIGlzIHRoZSBzYW1lIGFzIGEKKwlidWlsdC1pbiB0eXBlIG5hbWUuCisJKG1haW4pOiBJZiBJTl9HTElCQ1BQX1YzIGlzIGRlZmluZWQsIHRlc3QgX19jeGFfZGVtYW5nbGUgcmF0aGVyCisJdGhhbiBjcGx1c19kZW1hbmdsZV92My4KKworCSogZHluLXN0cmluZy5jOiBSZW1vdmUgdGVzdCBvZiBJTl9MSUJHQ0MyIGFuZCBJTl9HTElCQ1BQX1YzIGFuZAorCXRoZSBhc3NvY2lhdGVkICNkZWZpbmUgb2YgUkVUVVJOX09OX0FMTE9DQVRJT05fRkFJTFVSRS4KKwogMjAwNC0wMi0xNiAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgogCiAJKiByZWdleC5jOiBJbmNsdWRlIDxhbnNpZGVjbC5oPi4KZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbiBiL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgppbmRleCBiYmI1YzJhLi43OGNjNGJjIDEwMDY0NAotLS0gYS9saWJpYmVydHkvTWFrZWZpbGUuaW4KKysrIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCkBAIC0xNTcsNDQgKzE1Nyw0NiBAQAogCiAjIFRoZXNlIGFyZSBhbHdheXMgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkuICBUaGUgZmlyc3QgZm91ciBhcmUgbGlzdGVkCiAjIGZpcnN0IGFuZCBieSBjb21waWxlIHRpbWUgdG8gb3B0aW1pemUgcGFyYWxsZWwgYnVpbGRzLgotUkVRVUlSRURfT0ZJTEVTID0gLi9yZWdleC5vIC4vY3BsdXMtZGVtLm8gLi9jcC1kZW1hbmdsZS5vIC4vY3AtZGVtaW50Lm8gLi9tZDUubwkJXAotCS4vYWxsb2NhLm8gLi9hcmd2Lm8JCQkJCQkJXAotCS4vY2hvb3NlLXRlbXAubyAuL2NvbmNhdC5vCQkJCQkJXAorUkVRVUlSRURfT0ZJTEVTID0gLi9yZWdleC5vIC4vY3BsdXMtZGVtLm8gLi9jcC1kZW1hbmdsZS5vIC4vbWQ1Lm8JXAorCS4vYWxsb2NhLm8gLi9hcmd2Lm8JCQkJCQlcCisJLi9jaG9vc2UtdGVtcC5vIC4vY29uY2F0Lm8gLi9jcC1kZW1pbnQubwkJCVwKIAkuL2R5bi1zdHJpbmcubwkJCQkJCQlcCi0JLi9mZG1hdGNoLm8gLi9maWJoZWFwLm8gLi9mbG9hdGZvcm1hdC5vIC4vZm5tYXRjaC5vCQkJXAotCS4vZ2V0b3B0Lm8gLi9nZXRvcHQxLm8gLi9nZXRwd2QubyAuL2dldHJ1bnRpbWUubwkJCVwKLQkuL2hhc2h0YWIubyAuL2hleC5vCQkJCQkJCVwKLQkuL2xiYXNlbmFtZS5vCQkJCQkJCVwKLQkuL2xyZWFscGF0aC5vCQkJCQkJCVwKLQkuL21ha2UtcmVsYXRpdmUtcHJlZml4Lm8JCQkJCQlcCi0JLi9tYWtlLXRlbXAtZmlsZS5vCQkJCQkJXAotCS4vb2JqYWxsb2MubyAuL29ic3RhY2subwkJCQkJCVwKLQkuL3BhcnRpdGlvbi5vIC4vcGh5c21lbS5vIEBwZXhlY3V0ZUAJCQkJCQlcCi0JLi9zYWZlLWN0eXBlLm8gLi9zb3J0Lm8gLi9zcGFjZXMubyAuL3NwbGF5LXRyZWUubyAuL3N0cmVycm9yLm8JCVwKKwkuL2ZkbWF0Y2gubyAuL2ZpYmhlYXAubyAuL2Zsb2F0Zm9ybWF0Lm8gLi9mbm1hdGNoLm8JCVwKKwkuL2dldG9wdC5vIC4vZ2V0b3B0MS5vIC4vZ2V0cHdkLm8gLi9nZXRydW50aW1lLm8JCVwKKwkuL2hhc2h0YWIubyAuL2hleC5vCQkJCQkJXAorCS4vbGJhc2VuYW1lLm8gLi9scmVhbHBhdGgubwkJCQkJXAorCS4vbWFrZS1yZWxhdGl2ZS1wcmVmaXgubyAuL21ha2UtdGVtcC1maWxlLm8JCQlcCisJLi9vYmphbGxvYy5vIC4vb2JzdGFjay5vCQkJCQlcCisJLi9wYXJ0aXRpb24ubyAuL3BoeXNtZW0ubyBAcGV4ZWN1dGVACQkJCVwKKwkuL3NhZmUtY3R5cGUubyAuL3NvcnQubyAuL3NwYWNlcy5vIC4vc3BsYXktdHJlZS5vIC4vc3RyZXJyb3IubwlcCiAJIC4vc3Ryc2lnbmFsLm8JCQkJCQkJXAogCS4vdGVybmFyeS5vCQkJCQkJCVwKLQkuL3hhdGV4aXQubyAuL3hleGl0Lm8gLi94bWFsbG9jLm8gLi94bWVtZHVwLm8gLi94c3RyZHVwLm8gLi94c3RyZXJyb3IubworCS4veGF0ZXhpdC5vIC4veGV4aXQubyAuL3htYWxsb2MubyAuL3htZW1kdXAubyAuL3hzdHJkdXAubwlcCisJIC4veHN0cmVycm9yLm8KIAogIyBUaGVzZSBhcmUgYWxsIHRoZSBvYmplY3RzIHRoYXQgY29uZmlndXJlIG1heSBhZGQgdG8gdGhlIGxpYnJhcnkgdmlhCiAjICRmdW5jcyBvciBFWFRSQV9PRklMRVMuICBUaGlzIGxpc3QgZXhpc3RzIGhlcmUgb25seSBmb3IgIm1ha2UKICMgbWFpbnQtbWlzc2luZyIgYW5kICJtYWtlIGNoZWNrIi4KLUNPTkZJR1VSRURfT0ZJTEVTID0gLi9hc3ByaW50Zi5vIC4vYXRleGl0Lm8JCQkJCVwKLQkuL2Jhc2VuYW1lLm8gLi9iY21wLm8gLi9iY29weS5vIC4vYnNlYXJjaC5vIC4vYnplcm8ubwkJCVwKLQkuL2NhbGxvYy5vIC4vY2xvY2subyAuL2NvcHlzaWduLm8JCQkJCVwKK0NPTkZJR1VSRURfT0ZJTEVTID0gLi9hc3ByaW50Zi5vIC4vYXRleGl0Lm8JCQkJXAorCS4vYmFzZW5hbWUubyAuL2JjbXAubyAuL2Jjb3B5Lm8gLi9ic2VhcmNoLm8gLi9iemVyby5vCQlcCisJLi9jYWxsb2MubyAuL2Nsb2NrLm8gLi9jb3B5c2lnbi5vCQkJCVwKIAkuL19kb3BybnQubwkJCQkJCQlcCiAJLi9mZnMubwkJCQkJCQkJXAotCS4vZ2V0Y3dkLm8gLi9nZXRwYWdlc2l6ZS5vCQkJCQkJXAorCS4vZ2V0Y3dkLm8gLi9nZXRwYWdlc2l6ZS5vCQkJCQlcCiAJLi9pbmRleC5vIC4vaW5zcXVlLm8JCQkJCQlcCi0JLi9tZW1jaHIubyAuL21lbWNtcC5vIC4vbWVtY3B5Lm8gLi9tZW1tb3ZlLm8gLi9tZW1wY3B5Lm8gLi9tZW1zZXQubyAuL21rc3RlbXBzLm8gXAotCS4vcGV4LWRqZ3BwLm8gLi9wZXgtbXB3Lm8gLi9wZXgtbXNkb3MubyAuL3BleC1vczIubwkJCVwKLQkgLi9wZXgtdW5peC5vIC4vcGV4LXdpbjMyLm8JCQkJCQlcCisJLi9tZW1jaHIubyAuL21lbWNtcC5vIC4vbWVtY3B5Lm8gLi9tZW1tb3ZlLm8gLi9tZW1wY3B5Lm8JXAorCSAuL21lbXNldC5vIC4vbWtzdGVtcHMubwkJCQkJXAorCS4vcGV4LWRqZ3BwLm8gLi9wZXgtbXB3Lm8gLi9wZXgtbXNkb3MubyAuL3BleC1vczIubwkJXAorCSAuL3BleC11bml4Lm8gLi9wZXgtd2luMzIubwkJCQkJXAogCSAuL3B1dGVudi5vCQkJCQkJCVwKLQkuL3JhbmRvbS5vIC4vcmVuYW1lLm8gLi9yaW5kZXgubwkJCQkJXAotCS4vc2V0ZW52Lm8gLi9zaWdzZXRtYXNrLm8gLi9zbnByaW50Zi5vIC4vc3RwY3B5Lm8gLi9zdHBuY3B5Lm8gLi9zdHJjYXNlY21wLm8gXAotCSAuL3N0cmNoci5vIC4vc3RyZHVwLm8gLi9zdHJuY2FzZWNtcC5vIC4vc3RybmNtcC5vIC4vc3RycmNoci5vIC4vc3Ryc3RyLm8JXAotCSAuL3N0cnRvZC5vIC4vc3RydG9sLm8gLi9zdHJ0b3VsLm8JCQkJCVwKKwkuL3JhbmRvbS5vIC4vcmVuYW1lLm8gLi9yaW5kZXgubwkJCQlcCisJLi9zZXRlbnYubyAuL3NpZ3NldG1hc2subyAuL3NucHJpbnRmLm8gLi9zdHBjcHkubyAuL3N0cG5jcHkubwlcCisJIC4vc3RyY2FzZWNtcC5vIC4vc3RyY2hyLm8gLi9zdHJkdXAubyAuL3N0cm5jYXNlY21wLm8JCVwKKwkgLi9zdHJuY21wLm8gLi9zdHJyY2hyLm8gLi9zdHJzdHIubwkJCQlcCisJIC4vc3RydG9kLm8gLi9zdHJ0b2wubyAuL3N0cnRvdWwubwkJCQlcCiAJLi90bXBuYW0ubwkJCQkJCQlcCi0JLi92YXNwcmludGYubyAuL3Zmb3JrLm8gLi92ZnByaW50Zi5vIC4vdnByaW50Zi5vIC4vdnNucHJpbnRmLm8gLi92c3ByaW50Zi5vCVwKKwkuL3Zhc3ByaW50Zi5vIC4vdmZvcmsubyAuL3ZmcHJpbnRmLm8gLi92cHJpbnRmLm8gLi92c25wcmludGYubwlcCisJIC4vdnNwcmludGYubwkJCQkJCQlcCiAJLi93YWl0cGlkLm8KIAogIyBUaGVzZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGlmIHRoZSBsaWJyYXJ5IGhhcyBiZWVuIGNvbmZpZ3VyZWQgdG8gZG8gc28uCkBAIC04MDcsNyArODA5LDggQEAKIAllbHNlIHRydWU7IGZpCiAJJChDT01QSUxFLmMpICQoc3JjZGlyKS9yYW5kb20uYyAkKE9VVFBVVF9PUFRJT04pCiAKLS4vcmVnZXgubzogJChzcmNkaXIpL3JlZ2V4LmMgY29uZmlnLmggJChJTkNESVIpL3hyZWdleC5oICQoSU5DRElSKS94cmVnZXgyLmgKKy4vcmVnZXgubzogJChzcmNkaXIpL3JlZ2V4LmMgY29uZmlnLmggJChJTkNESVIpL2Fuc2lkZWNsLmggJChJTkNESVIpL3hyZWdleC5oIFwKKwkkKElOQ0RJUikveHJlZ2V4Mi5oCiAJaWYgWyB4IiQoUElDRkxBRykiICE9IHggXTsgdGhlbiBcCiAJICAkKENPTVBJTEUuYykgJChQSUNGTEFHKSAkKHNyY2RpcikvcmVnZXguYyAtbyBwaWMvJEA7IFwKIAllbHNlIHRydWU7IGZpCmRpZmYgLS1naXQgYS9saWJpYmVydHkvYWNjb25maWcuaCBiL2xpYmliZXJ0eS9hY2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjRjYjQxLi4wMDAwMDAwCi0tLSBhL2xpYmliZXJ0eS9hY2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0vKiBEZWZpbmUgdG8gYHVuc2lnbmVkIGxvbmcnIGlmIDxzeXMvdHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICAqLwotI3VuZGVmIHVpbnRwdHJfdAotCmRpZmYgLS1naXQgYS9saWJpYmVydHkvY29uZmlnLmluIGIvbGliaWJlcnR5L2NvbmZpZy5pbgppbmRleCA4ZTUwNzFhLi45OWVlMDgyIDEwMDY0NAotLS0gYS9saWJpYmVydHkvY29uZmlnLmluCisrKyBiL2xpYmliZXJ0eS9jb25maWcuaW4KQEAgLTEsNyArMSw0IEBACiAvKiBjb25maWcuaW4uICBHZW5lcmF0ZWQgZnJvbSBjb25maWd1cmUuYWMgYnkgYXV0b2hlYWRlci4gICovCi0vKiBEZWZpbmUgdG8gYHVuc2lnbmVkIGxvbmcnIGlmIDxzeXMvdHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICAqLwotI3VuZGVmIHVpbnRwdHJfdAotCiAKIC8qIDEyMzQgPSBMSUxfRU5ESUFOLCA0MzIxID0gQklHRU5ESUFOICovCiAjdW5kZWYgQllURU9SREVSCkBAIC0zNjIsOSArMzU5LDExIEBACiAvKiBEZWZpbmUgdG8gZW1wdHkgaWYgYGNvbnN0JyBkb2VzIG5vdCBjb25mb3JtIHRvIEFOU0kgQy4gKi8KICN1bmRlZiBjb25zdAogCi0vKiBEZWZpbmUgYXMgYF9faW5saW5lJyBpZiB0aGF0J3Mgd2hhdCB0aGUgQyBjb21waWxlciBjYWxscyBpdCwgb3IgdG8gbm90aGluZwotICAgaWYgaXQgaXMgbm90IHN1cHBvcnRlZC4gKi8KKy8qIERlZmluZSB0byBgX19pbmxpbmVfXycgb3IgYF9faW5saW5lJyBpZiB0aGF0J3Mgd2hhdCB0aGUgQyBjb21waWxlcgorICAgY2FsbHMgaXQsIG9yIHRvIG5vdGhpbmcgaWYgJ2lubGluZScgaXMgbm90IHN1cHBvcnRlZCB1bmRlciBhbnkgbmFtZS4gICovCisjaWZuZGVmIF9fY3BsdXNwbHVzCiAjdW5kZWYgaW5saW5lCisjZW5kaWYKIAogLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLwogI3VuZGVmIHBpZF90CmRpZmYgLS1naXQgYS9saWJpYmVydHkvY29uZmlndXJlIGIvbGliaWJlcnR5L2NvbmZpZ3VyZQppbmRleCAyZjY1OTc2Li4zNzRkMTFiIDEwMDc1NQotLS0gYS9saWJpYmVydHkvY29uZmlndXJlCisrKyBiL2xpYmliZXJ0eS9jb25maWd1cmUKQEAgLTEsOSArMSw4IEBACiAjISAvYmluL3NoCiAjIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCi0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi41Ny4KKyMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjU5LgogIwotIyBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMgotIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCiAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKQEAgLTIwLDkgKzE5LDEwIEBACiBlbGlmIHRlc3QgLW4gIiR7QkFTSF9WRVJTSU9OK3NldH0iICYmIChzZXQgLW8gcG9zaXgpID4vZGV2L251bGwgMj4mMTsgdGhlbgogICBzZXQgLW8gcG9zaXgKIGZpCitEVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoCiAKICMgU3VwcG9ydCB1bnNldCB3aGVuIHBvc3NpYmxlLgotaWYgKEZPTz1GT087IHVuc2V0IEZPTykgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCitpZiAoIChNQUlMPTYwOyB1bnNldCBNQUlMKSB8fCBleGl0KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgYXNfdW5zZXQ9dW5zZXQKIGVsc2UKICAgYXNfdW5zZXQ9ZmFsc2UKQEAgLTQxLDcgKzQxLDcgQEAKICAgTENfTUVBU1VSRU1FTlQgTENfTUVTU0FHRVMgTENfTU9ORVRBUlkgTENfTkFNRSBMQ19OVU1FUklDIExDX1BBUEVSIFwKICAgTENfVEVMRVBIT05FIExDX1RJTUUKIGRvCi0gIGlmIChzZXQgK3g7IHRlc3QgLW4gImAoZXZhbCAkYXNfdmFyPUM7IGV4cG9ydCAkYXNfdmFyKSAyPiYxYCIpOyB0aGVuCisgIGlmIChzZXQgK3g7IHRlc3QgLXogImAoZXZhbCAkYXNfdmFyPUM7IGV4cG9ydCAkYXNfdmFyKSAyPiYxYCIpOyB0aGVuCiAgICAgZXZhbCAkYXNfdmFyPUM7IGV4cG9ydCAkYXNfdmFyCiAgIGVsc2UKICAgICAkYXNfdW5zZXQgJGFzX3ZhcgpAQCAtMjE4LDE2ICsyMTgsMTcgQEAKIGlmIG1rZGlyIC1wIC4gMj4vZGV2L251bGw7IHRoZW4KICAgYXNfbWtkaXJfcD06CiBlbHNlCisgIHRlc3QgLWQgLi8tcCAmJiBybWRpciAuLy1wCiAgIGFzX21rZGlyX3A9ZmFsc2UKIGZpCiAKIGFzX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKIAogIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIENQUCBuYW1lLgotYXNfdHJfY3BwPSJzZWQgeSUqJGFzX2NyX2xldHRlcnMlUCRhc19jcl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnIgorYXNfdHJfY3BwPSJldmFsIHNlZCAneSUqJGFzX2NyX2xldHRlcnMlUCRhc19jcl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKIAogIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCi1hc190cl9zaD0ic2VkIHklKislcHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWciCithc190cl9zaD0iZXZhbCBzZWQgJ3klKislcHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgogCiAKICMgSUZTCkBAIC02NjcsNyArNjY4LDcgQEAKIAogIyBCZSBzdXJlIHRvIGhhdmUgYWJzb2x1dGUgcGF0aHMuCiBmb3IgYWNfdmFyIGluIGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIFwKLSAgICAgICAgICAgICAgbG9jYWxzdGF0ZWRpciBsaWJkaXIgaW5jbHVkZWRpciBvbGRpbmNsdWRlZGlyIGluZm9kaXIgbWFuZGlyCisJICAgICAgbG9jYWxzdGF0ZWRpciBsaWJkaXIgaW5jbHVkZWRpciBvbGRpbmNsdWRlZGlyIGluZm9kaXIgbWFuZGlyCiBkbwogICBldmFsIGFjX3ZhbD0kYGVjaG8gJGFjX3ZhcmAKICAgY2FzZSAkYWNfdmFsIGluCkBAIC03MDcsMTAgKzcwOCwxMCBAQAogICAjIFRyeSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBzY3JpcHQsIHRoZW4gaXRzIHBhcmVudC4KICAgYWNfY29uZmRpcj1gKGRpcm5hbWUgIiQwIikgMj4vZGV2L251bGwgfHwKICRhc19leHByIFgiJDAiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCi0gICAgICAgICBYIiQwIiA6ICdYXCgvL1wpW14vXScgXHwgXAotICAgICAgICAgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwKLSAgICAgICAgIFgiJDAiIDogJ1hcKC9cKScgXHwgXAotICAgICAgICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8CisJIFgiJDAiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJDAiIDogJ1hcKC9cKScgXHwgXAorCSAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKIGVjaG8gWCIkMCIgfAogICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQogICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQpAQCAtODAyLDkgKzgwMyw5IEBACiAgIGNhdCA8PF9BQ0VPRgogSW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgogICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KKwkJCSAgWyRhY19kZWZhdWx0X3ByZWZpeF0KICAgLS1leGVjLXByZWZpeD1FUFJFRklYICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluIEVQUkVGSVgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWF0KKwkJCSAgW1BSRUZJWF0KIAogQnkgZGVmYXVsdCwgXGBtYWtlIGluc3RhbGwnIHdpbGwgaW5zdGFsbCBhbGwgdGhlIGZpbGVzIGluCiBcYCRhY19kZWZhdWx0X3ByZWZpeC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4gc3BlY2lmeQpAQCAtOTAxLDEyICs5MDIsNDUgQEAKICAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZGRpciRzcmNkaXIkYWNfZGlyX3N1ZmZpeAogICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZGRpciRzcmNkaXIgOzsKIGVzYWMKLSMgRG9uJ3QgYmxpbmRseSBwZXJmb3JtIGEgYGNkICIkYWNfZGlyIi8kYWNfZm9vICYmIHB3ZGAgc2luY2UgJGFjX2ZvbyBjYW4gYmUKLSMgYWJzb2x1dGUuCi1hY19hYnNfYnVpbGRkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfYnVpbGRkaXIgJiYgcHdkYAotYWNfYWJzX3RvcF9idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNkICR7YWNfdG9wX2J1aWxkZGlyfS4gJiYgcHdkYAotYWNfYWJzX3NyY2Rpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY19zcmNkaXIgJiYgcHdkYAotYWNfYWJzX3RvcF9zcmNkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfdG9wX3NyY2RpciAmJiBwd2RgCisKKyMgRG8gbm90IHVzZSBgY2QgZm9vICYmIHB3ZGAgdG8gY29tcHV0ZSBhYnNvbHV0ZSBwYXRocywgYmVjYXVzZQorIyB0aGUgZGlyZWN0b3JpZXMgbWF5IG5vdCBleGlzdC4KK2Nhc2UgYHB3ZGAgaW4KKy4pIGFjX2Fic19idWlsZGRpcj0iJGFjX2RpciI7OworKikKKyAgY2FzZSAiJGFjX2RpciIgaW4KKyAgLikgYWNfYWJzX2J1aWxkZGlyPWBwd2RgOzsKKyAgW1xcL10qIHwgPzpbXFwvXSogKSBhY19hYnNfYnVpbGRkaXI9IiRhY19kaXIiOzsKKyAgKikgYWNfYWJzX2J1aWxkZGlyPWBwd2RgLyIkYWNfZGlyIjs7CisgIGVzYWM7OworZXNhYworY2FzZSAkYWNfYWJzX2J1aWxkZGlyIGluCisuKSBhY19hYnNfdG9wX2J1aWxkZGlyPSR7YWNfdG9wX2J1aWxkZGlyfS47OworKikKKyAgY2FzZSAke2FjX3RvcF9idWlsZGRpcn0uIGluCisgIC4pIGFjX2Fic190b3BfYnVpbGRkaXI9JGFjX2Fic19idWlsZGRpcjs7CisgIFtcXC9dKiB8ID86W1xcL10qICkgYWNfYWJzX3RvcF9idWlsZGRpcj0ke2FjX3RvcF9idWlsZGRpcn0uOzsKKyAgKikgYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfYWJzX2J1aWxkZGlyLyR7YWNfdG9wX2J1aWxkZGlyfS47OworICBlc2FjOzsKK2VzYWMKK2Nhc2UgJGFjX2Fic19idWlsZGRpciBpbgorLikgYWNfYWJzX3NyY2Rpcj0kYWNfc3JjZGlyOzsKKyopCisgIGNhc2UgJGFjX3NyY2RpciBpbgorICAuKSBhY19hYnNfc3JjZGlyPSRhY19hYnNfYnVpbGRkaXI7OworICBbXFwvXSogfCA/OltcXC9dKiApIGFjX2Fic19zcmNkaXI9JGFjX3NyY2Rpcjs7CisgICopIGFjX2Fic19zcmNkaXI9JGFjX2Fic19idWlsZGRpci8kYWNfc3JjZGlyOzsKKyAgZXNhYzs7Citlc2FjCitjYXNlICRhY19hYnNfYnVpbGRkaXIgaW4KKy4pIGFjX2Fic190b3Bfc3JjZGlyPSRhY190b3Bfc3JjZGlyOzsKKyopCisgIGNhc2UgJGFjX3RvcF9zcmNkaXIgaW4KKyAgLikgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX2Fic19idWlsZGRpcjs7CisgIFtcXC9dKiB8ID86W1xcL10qICkgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3RvcF9zcmNkaXI7OworICAqKSBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfYWJzX2J1aWxkZGlyLyRhY190b3Bfc3JjZGlyOzsKKyAgZXNhYzs7Citlc2FjCiAKICAgICBjZCAkYWNfZGlyCiAgICAgIyBDaGVjayBmb3IgZ3Vlc3RlZCBjb25maWd1cmU7IG90aGVyd2lzZSBnZXQgQ3lnbnVzIHN0eWxlIGNvbmZpZ3VyZS4KQEAgLTkxNyw3ICs5NTEsNyBAQAogICAgICAgZWNobwogICAgICAgJFNIRUxMICRhY19zcmNkaXIvY29uZmlndXJlICAtLWhlbHA9cmVjdXJzaXZlCiAgICAgZWxpZiB0ZXN0IC1mICRhY19zcmNkaXIvY29uZmlndXJlLmFjIHx8Ci0gICAgICAgICAgIHRlc3QgLWYgJGFjX3NyY2Rpci9jb25maWd1cmUuaW47IHRoZW4KKwkgICB0ZXN0IC1mICRhY19zcmNkaXIvY29uZmlndXJlLmluOyB0aGVuCiAgICAgICBlY2hvCiAgICAgICAkYWNfY29uZmlndXJlIC0taGVscAogICAgIGVsc2UKQEAgLTkzMSw4ICs5NjUsNyBAQAogaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgogICBjYXQgPDxcX0FDRU9GCiAKLUNvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyCi1GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCiBfQUNFT0YKQEAgLTk0NCw3ICs5NzcsNyBAQAogcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KIAogSXQgd2FzIGNyZWF0ZWQgYnkgJGFzX21lLCB3aGljaCB3YXMKLWdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi41Ny4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcworZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjU5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQAogCkBAIC0xMDIxLDE5ICsxMDU0LDE5IEBACiAgICAgMikKICAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzMT0iJGFjX2NvbmZpZ3VyZV9hcmdzMSAnJGFjX2FyZyciCiAgICAgICBpZiB0ZXN0ICRhY19tdXN0X2tlZXBfbmV4dCA9IHRydWU7IHRoZW4KLSAgICAgICAgYWNfbXVzdF9rZWVwX25leHQ9ZmFsc2UgIyBHb3QgdmFsdWUsIGJhY2sgdG8gbm9ybWFsLgorCWFjX211c3Rfa2VlcF9uZXh0PWZhbHNlICMgR290IHZhbHVlLCBiYWNrIHRvIG5vcm1hbC4KICAgICAgIGVsc2UKLSAgICAgICAgY2FzZSAkYWNfYXJnIGluCi0gICAgICAgICAgKj0qIHwgLS1jb25maWctY2FjaGUgfCAtQyB8IC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKiBcCi0gICAgICAgICAgfCAtZW5hYmxlLSogfCAtLWVuYWJsZS0qIHwgLWdhcyB8IC0tZyogfCAtbmZwIHwgLS1uZiogXAotICAgICAgICAgIHwgLXEgfCAtcXVpZXQgfCAtLXEqIHwgLXNpbGVudCB8IC0tc2lsKiB8IC12IHwgLXZlcmIqIFwKLSAgICAgICAgICB8IC13aXRoLSogfCAtLXdpdGgtKiB8IC13aXRob3V0LSogfCAtLXdpdGhvdXQtKiB8IC0teCkKLSAgICAgICAgICAgIGNhc2UgIiRhY19jb25maWd1cmVfYXJnczAgIiBpbgotICAgICAgICAgICAgICAiJGFjX2NvbmZpZ3VyZV9hcmdzMSIqIiAnJGFjX2FyZycgIiogKSBjb250aW51ZSA7OwotICAgICAgICAgICAgZXNhYwotICAgICAgICAgICAgOzsKLSAgICAgICAgICAtKiApIGFjX211c3Rfa2VlcF9uZXh0PXRydWUgOzsKLSAgICAgICAgZXNhYworCWNhc2UgJGFjX2FyZyBpbgorCSAgKj0qIHwgLS1jb25maWctY2FjaGUgfCAtQyB8IC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKiBcCisJICB8IC1lbmFibGUtKiB8IC0tZW5hYmxlLSogfCAtZ2FzIHwgLS1nKiB8IC1uZnAgfCAtLW5mKiBcCisJICB8IC1xIHwgLXF1aWV0IHwgLS1xKiB8IC1zaWxlbnQgfCAtLXNpbCogfCAtdiB8IC12ZXJiKiBcCisJICB8IC13aXRoLSogfCAtLXdpdGgtKiB8IC13aXRob3V0LSogfCAtLXdpdGhvdXQtKiB8IC0teCkKKwkgICAgY2FzZSAiJGFjX2NvbmZpZ3VyZV9hcmdzMCAiIGluCisJICAgICAgIiRhY19jb25maWd1cmVfYXJnczEiKiIgJyRhY19hcmcnICIqICkgY29udGludWUgOzsKKwkgICAgZXNhYworCSAgICA7OworCSAgLSogKSBhY19tdXN0X2tlZXBfbmV4dD10cnVlIDs7CisJZXNhYwogICAgICAgZmkKICAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MkYWNfc2VwJyRhY19hcmcnIgogICAgICAgIyBHZXQgcmlkIG9mIHRoZSBsZWFkaW5nIHNwYWNlLgpAQCAtMTA2NywxMiArMTEwMCwxMiBAQAogICAgIGNhc2UgYChhY19zcGFjZT0nIiciJyAnIiciJzsgc2V0IHwgZ3JlcCBhY19zcGFjZSkgMj4mMWAgaW4KICAgICAqYWNfc3BhY2U9XCAqKQogICAgICAgc2VkIC1uIFwKLSAgICAgICAgInMvJyInIicvJyInIidcXFxcJyInIicnIiciJy9nOwotICAgIAkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9JyInIidcXDInIiciJy9wIgorCSJzLyciJyInLyciJyInXFxcXCciJyInJyInIicvZzsKKwkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9JyInIidcXDInIiciJy9wIgogICAgICAgOzsKICAgICAqKQogICAgICAgc2VkIC1uIFwKLSAgICAgICAgInMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9XFwyL3AiCisJInMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9XFwyL3AiCiAgICAgICA7OwogICAgIGVzYWM7CiB9CkBAIC0xMTAxLDcgKzExMzQsNyBAQAogICAgICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3RfZmlsZXMKICAgICAgIGRvCiAJZXZhbCBhY192YWw9JGBlY2hvICRhY192YXJgCi0gICAgICAgIGVjaG8gIiRhY192YXI9JyInIickYWNfdmFsJyInIiciCisJZWNobyAiJGFjX3Zhcj0nIiciJyRhY192YWwnIiciJyIKICAgICAgIGRvbmUgfCBzb3J0CiAgICAgICBlY2hvCiAgICAgZmkKQEAgLTExMjAsNyArMTE1Myw3IEBACiAgICAgICBlY2hvICIkYXNfbWU6IGNhdWdodCBzaWduYWwgJGFjX3NpZ25hbCIKICAgICBlY2hvICIkYXNfbWU6IGV4aXQgJGV4aXRfc3RhdHVzIgogICB9ID4mNQotICBybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgJiYKKyAgcm0gLWYgY29yZSAqLmNvcmUgJiYKICAgcm0gLXJmIGNvbmZ0ZXN0KiBjb25mZGVmcyogY29uZiQkKiAkYWNfY2xlYW5fZmlsZXMgJiYKICAgICBleGl0ICRleGl0X3N0YXR1cwogICAgICAnIDAKQEAgLTEyMDAsNyArMTIzMyw3IEBACiAjIHZhbHVlLgogYWNfY2FjaGVfY29ycnVwdGVkPWZhbHNlCiBmb3IgYWNfdmFyIGluIGAoc2V0KSAyPiYxIHwKLSAgICAgICAgICAgICAgIHNlZCAtbiAncy9eYWNfZW52X1woW2EtekEtWl8wLTldKlwpX3NldD0uKi9cMS9wJ2A7IGRvCisJICAgICAgIHNlZCAtbiAncy9eYWNfZW52X1woW2EtekEtWl8wLTldKlwpX3NldD0uKi9cMS9wJ2A7IGRvCiAgIGV2YWwgYWNfb2xkX3NldD1cJGFjX2N2X2Vudl8ke2FjX3Zhcn1fc2V0CiAgIGV2YWwgYWNfbmV3X3NldD1cJGFjX2Vudl8ke2FjX3Zhcn1fc2V0CiAgIGV2YWwgYWNfb2xkX3ZhbD0iXCRhY19jdl9lbnZfJHthY192YXJ9X3ZhbHVlIgpAQCAtMTIxNywxMyArMTI1MCwxMyBAQAogICAgICwpOzsKICAgICAqKQogICAgICAgaWYgdGVzdCAieCRhY19vbGRfdmFsIiAhPSAieCRhY19uZXdfdmFsIjsgdGhlbgotICAgICAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1CisJeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IFxgJGFjX3ZhcicgaGFzIGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30KLSAgICAgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogICBmb3JtZXIgdmFsdWU6ICAkYWNfb2xkX3ZhbCIgPiY1CisJeyBlY2hvICIkYXNfbWU6JExJTkVOTzogICBmb3JtZXIgdmFsdWU6ICAkYWNfb2xkX3ZhbCIgPiY1CiBlY2hvICIkYXNfbWU6ICAgZm9ybWVyIHZhbHVlOiAgJGFjX29sZF92YWwiID4mMjt9Ci0gICAgICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86ICAgY3VycmVudCB2YWx1ZTogJGFjX25ld192YWwiID4mNQorCXsgZWNobyAiJGFzX21lOiRMSU5FTk86ICAgY3VycmVudCB2YWx1ZTogJGFjX25ld192YWwiID4mNQogZWNobyAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6ICRhY19uZXdfdmFsIiA+JjI7fQotICAgICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OgorCWFjX2NhY2hlX2NvcnJ1cHRlZD06CiAgICAgICBmaTs7CiAgIGVzYWMKICAgIyBQYXNzIHByZWNpb3VzIHZhcmlhYmxlcyB0byBjb25maWcuc3RhdHVzLgpAQCAtMjAzMCw3ICsyMDYzLDYgQEAKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0KIAogY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC0yMDY0LDcgKzIwOTYsNiBAQAogICBFWEVFWFQ9CiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtMjA4NCw4ICsyMTE1LDggQEAKICMgVHJ5IHRvIGNyZWF0ZSBhbiBleGVjdXRhYmxlIHdpdGhvdXQgLW8gZmlyc3QsIGRpc3JlZ2FyZCBhLm91dC4KICMgSXQgd2lsbCBoZWxwIHVzIGRpYWdub3NlIGJyb2tlbiBjb21waWxlcnMsIGFuZCBmaW5kaW5nIG91dCBhbiBpbnR1aXRpb24KICMgb2YgZXhlZXh0LgotZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQuLi4gJEVDSE9fQyIgPiY2CitlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lLi4uICRFQ0hPX0MiID4mNgogYWNfbGlua19kZWZhdWx0PWBlY2hvICIkYWNfbGluayIgfCBzZWQgJ3MvIC1vICpjb25mdGVzdFteIF0qLy8nYAogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua19kZWZhdWx0XCIiKSA+JjUKICAgKGV2YWwgJGFjX2xpbmtfZGVmYXVsdCkgMj4mNQpAQCAtMjEwNSwyMyArMjEzNiwyMyBAQAogICB0ZXN0IC1mICIkYWNfZmlsZSIgfHwgY29udGludWUKICAgY2FzZSAkYWNfZmlsZSBpbgogICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5vIHwgKi5vYmogKQotICAgICAgICA7OworCTs7CiAgICAgY29uZnRlc3QuJGFjX2V4dCApCi0gICAgICAgICMgVGhpcyBpcyB0aGUgc291cmNlIGZpbGUuCi0gICAgICAgIDs7CisJIyBUaGlzIGlzIHRoZSBzb3VyY2UgZmlsZS4KKwk7OwogICAgIFthYl0ub3V0ICkKLSAgICAgICAgIyBXZSBmb3VuZCB0aGUgZGVmYXVsdCBleGVjdXRhYmxlLCBidXQgZXhlZXh0PScnIGlzIG1vc3QKLSAgICAgICAgIyBjZXJ0YWlubHkgcmlnaHQuCi0gICAgICAgIGJyZWFrOzsKKwkjIFdlIGZvdW5kIHRoZSBkZWZhdWx0IGV4ZWN1dGFibGUsIGJ1dCBleGVleHQ9JycgaXMgbW9zdAorCSMgY2VydGFpbmx5IHJpZ2h0LgorCWJyZWFrOzsKICAgICAqLiogKQotICAgICAgICBhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4uKlwpJ2AKLSAgICAgICAgIyBGSVhNRTogSSBiZWxpZXZlIHdlIGV4cG9ydCBhY19jdl9leGVleHQgZm9yIExpYnRvb2wsCi0gICAgICAgICMgYnV0IGl0IHdvdWxkIGJlIGNvb2wgdG8gZmluZCBvdXQgaWYgaXQncyB0cnVlLiAgRG9lcyBhbnlib2R5Ci0gICAgICAgICMgbWFpbnRhaW4gTGlidG9vbD8gLS1ha2ltLgotICAgICAgICBleHBvcnQgYWNfY3ZfZXhlZXh0Ci0gICAgICAgIGJyZWFrOzsKKwlhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4uKlwpJ2AKKwkjIEZJWE1FOiBJIGJlbGlldmUgd2UgZXhwb3J0IGFjX2N2X2V4ZWV4dCBmb3IgTGlidG9vbCwKKwkjIGJ1dCBpdCB3b3VsZCBiZSBjb29sIHRvIGZpbmQgb3V0IGlmIGl0J3MgdHJ1ZS4gIERvZXMgYW55Ym9keQorCSMgbWFpbnRhaW4gTGlidG9vbD8gLS1ha2ltLgorCWV4cG9ydCBhY19jdl9leGVleHQKKwlicmVhazs7CiAgICAgKiApCi0gICAgICAgIGJyZWFrOzsKKwlicmVhazs7CiAgIGVzYWMKIGRvbmUKIGVsc2UKQEAgLTIxOTUsOCArMjIyNiw4IEBACiAgIGNhc2UgJGFjX2ZpbGUgaW4KICAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubyB8ICoub2JqICkgOzsKICAgICAqLiogKSBhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4uKlwpJ2AKLSAgICAgICAgICBleHBvcnQgYWNfY3ZfZXhlZXh0Ci0gICAgICAgICAgYnJlYWs7OworCSAgZXhwb3J0IGFjX2N2X2V4ZWV4dAorCSAgYnJlYWs7OwogICAgICogKSBicmVhazs7CiAgIGVzYWMKIGRvbmUKQEAgLTIyMjIsNyArMjI1Myw2IEBACiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtMjI3Myw3ICsyMzAzLDYgQEAKICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC0yMjkzLDExICsyMzIyLDIxIEBACiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKIGlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcjEKICAgYWNfc3RhdHVzPSQ/CisgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQogICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgorCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMjMxMCw3ICsyMzQ5LDcgQEAKIAogYWNfY29tcGlsZXJfZ251PW5vCiBmaQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBhY19jdl9jX2NvbXBpbGVyX2dudT0kYWNfY29tcGlsZXJfZ251CiAKIGZpCkBAIC0yMzI2LDcgKzIzNjUsNiBAQAogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTIzNDMsMTEgKzIzODEsMjEgQEAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVyMQogICBhY19zdGF0dXM9JD8KKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC0yMzYwLDcgKzI0MDgsNyBAQAogCiBhY19jdl9wcm9nX2NjX2c9bm8KIGZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCiBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19nIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRhY19jdl9wcm9nX2NjX2ciID4mNgpAQCAtMjM4Nyw3ICsyNDM1LDYgQEAKICAgYWNfY3ZfcHJvZ19jY19zdGRjPW5vCiBhY19zYXZlX0NDPSRDQwogY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC0yNDE1LDYgKzI0NjIsMTYgQEAKICAgdmFfZW5kICh2KTsKICAgcmV0dXJuIHM7CiB9CisKKy8qIE9TRiA0LjAgQ29tcGFxIGNjIGlzIHNvbWUgc29ydCBvZiBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LiAgSXQgaGFzCisgICBmdW5jdGlvbiBwcm90b3R5cGVzIGFuZCBzdHVmZiwgYnV0IG5vdCAnXHhISCcgaGV4IGNoYXJhY3RlciBjb25zdGFudHMuCisgICBUaGVzZSBkb24ndCBwcm92b2tlIGFuIGVycm9yIHVuZm9ydHVuYXRlbHksIGluc3RlYWQgYXJlIHNpbGVudGx5IHRyZWF0ZWQKKyAgIGFzICd4Jy4gIFRoZSBmb2xsb3dpbmcgaW5kdWNlcyBhbiBlcnJvciwgdW50aWwgLXN0ZDEgaXMgYWRkZWQgdG8gZ2V0CisgICBwcm9wZXIgQU5TSSBtb2RlLiAgQ3VyaW91c2x5ICdceDAwJyE9J3gnIGFsd2F5cyBjb21lcyBvdXQgdHJ1ZSwgZm9yIGFuCisgICBhcnJheSBzaXplIGF0IGxlYXN0LiAgSXQncyBuZWNlc3NhcnkgdG8gd3JpdGUgJ1x4MDAnPT0wIHRvIGdldCBzb21ldGhpbmcKKyAgIHRoYXQncyB0cnVlIG9ubHkgd2l0aCAtc3RkMS4gICovCitpbnQgb3NmNF9jY19hcnJheSBbJ1x4MDAnID09IDAgPyAxIDogLTFdOworCiBpbnQgdGVzdCAoaW50IGksIGRvdWJsZSB4KTsKIHN0cnVjdCBzMSB7aW50ICgqZikgKGludCBhKTt9Owogc3RydWN0IHMyIHtpbnQgKCpmKSAoZG91YmxlIGEpO307CkBAIC0yNDQxLDExICsyNDk4LDIxIEBACiAgIENDPSIkYWNfc2F2ZV9DQyAkYWNfYXJnIgogICBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CiBpZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPworICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKwkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgorCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH0gJiYKKwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTI0NTgsNyArMjUyNSw3IEBACiBzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CiAKIGZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dAogZG9uZQogcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBjb25mdGVzdC4kYWNfb2JqZXh0CiBDQz0kYWNfc2F2ZV9DQwpAQCAtMjQ4NiwxOSArMjU1MywyOCBAQAogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CiBpZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPworICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKwkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgorCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH0gJiYKKwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICBmb3IgYWNfZGVjbGFyYXRpb24gaW4gXAotICAgJydcCi0gICAnI2luY2x1ZGUgPHN0ZGxpYi5oPicgXAorICAgJycgXAogICAgJ2V4dGVybiAiQyIgdm9pZCBzdGQ6OmV4aXQgKGludCkgdGhyb3cgKCk7IHVzaW5nIHN0ZDo6ZXhpdDsnIFwKICAgICdleHRlcm4gIkMiIHZvaWQgc3RkOjpleGl0IChpbnQpOyB1c2luZyBzdGQ6OmV4aXQ7JyBcCiAgICAnZXh0ZXJuICJDIiB2b2lkIGV4aXQgKGludCkgdGhyb3cgKCk7JyBcCkBAIC0yNTA2LDE0ICsyNTgyLDEzIEBACiAgICAndm9pZCBleGl0IChpbnQpOycKIGRvCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAogY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgogLyogZW5kIGNvbmZkZWZzLmguICAqLwotI2luY2x1ZGUgPHN0ZGxpYi5oPgogJGFjX2RlY2xhcmF0aW9uCisjaW5jbHVkZSA8c3RkbGliLmg+CiBpbnQKIG1haW4gKCkKIHsKQEAgLTI1MjQsMTEgKzI1OTksMjEgQEAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVyMQogICBhY19zdGF0dXM9JD8KKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC0yNTQxLDkgKzI2MjYsOCBAQAogCiBjb250aW51ZQogZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTI1NjAsMTEgKzI2NDQsMjEgQEAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVyMQogICBhY19zdGF0dXM9JD8KKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC0yNTc2LDcgKzI2NzAsNyBAQAogc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQogCiBmaQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBkb25lCiBybSAtZiBjb25mdGVzdCoKIGlmIHRlc3QgLW4gIiRhY19kZWNsYXJhdGlvbiI7IHRoZW4KQEAgLTI1OTAsNyArMjY4NCw3IEBACiBzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CiAKIGZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGFjX2V4dD1jCiBhY19jcHA9JyRDUFAgJENQUEZMQUdTJwogYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwpAQCAtMjYyNSw3ICsyNzE5LDYgQEAKICAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKICAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtMjYzNiw3ICsyNzI5LDcgQEAKICNlbHNlCiAjIGluY2x1ZGUgPGFzc2VydC5oPgogI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICBTeW50YXggZXJyb3IKKwkJICAgICBTeW50YXggZXJyb3IKIF9BQ0VPRgogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQogICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCkBAIC0yNjQ4LDYgKzI3NDEsNyBAQAogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCiAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZworICAgIGFjX2NwcF9lcnI9JGFjX2NwcF9lcnIkYWNfY193ZXJyb3JfZmxhZwogICBlbHNlCiAgICAgYWNfY3BwX2Vycj0KICAgZmkKQEAgLTI2NjgsNyArMjc2Miw2IEBACiAgICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub24tZXhpc3RlbnQgaGVhZGVycwogICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTI2ODYsNiArMjc3OSw3IEBACiAgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgICAgYWNfY3BwX2Vycj0kYWNfY3BwX2VyciRhY19jX3dlcnJvcl9mbGFnCiAgIGVsc2UKICAgICBhY19jcHBfZXJyPQogICBmaQpAQCAtMjczMiw3ICsyODI2LDYgQEAKICAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKICAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtMjc0Myw3ICsyODM2LDcgQEAKICNlbHNlCiAjIGluY2x1ZGUgPGFzc2VydC5oPgogI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICBTeW50YXggZXJyb3IKKwkJICAgICBTeW50YXggZXJyb3IKIF9BQ0VPRgogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQogICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCkBAIC0yNzU1LDYgKzI4NDgsNyBAQAogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCiAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZworICAgIGFjX2NwcF9lcnI9JGFjX2NwcF9lcnIkYWNfY193ZXJyb3JfZmxhZwogICBlbHNlCiAgICAgYWNfY3BwX2Vycj0KICAgZmkKQEAgLTI3NzUsNyArMjg2OSw2IEBACiAgICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub24tZXhpc3RlbnQgaGVhZGVycwogICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTI3OTMsNiArMjg4Niw3IEBACiAgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgICAgYWNfY3BwX2Vycj0kYWNfY3BwX2VyciRhY19jX3dlcnJvcl9mbGFnCiAgIGVsc2UKICAgICBhY19jcHBfZXJyPQogICBmaQpAQCAtMjg1Miw3ICsyOTQ2LDYgQEAKICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC0yOTAzLDExICsyOTk2LDExIEBACiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07CiAgICAgICB0aGVuCi0gICAgICAgICMgY2Mgd29ya3MgdG9vLgotICAgICAgICA6CisJIyBjYyB3b3JrcyB0b28uCisJOgogICAgICAgZWxzZQotICAgICAgICAjIGNjIGV4aXN0cyBidXQgZG9lc24ndCBsaWtlIC1vLgotICAgICAgICBldmFsIGFjX2N2X3Byb2dfY2NfJHthY19jY31fY19vPW5vCisJIyBjYyBleGlzdHMgYnV0IGRvZXNuJ3QgbGlrZSAtby4KKwlldmFsIGFjX2N2X3Byb2dfY2NfJHthY19jY31fY19vPW5vCiAgICAgICBmaQogICAgIGZpCiAgIGZpCkBAIC0yOTQ2LDcgKzMwMzksNiBAQAogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTMwMDksMTEgKzMxMDEsMjEgQEAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVyMQogICBhY19zdGF0dXM9JD8KKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC0zMDI2LDcgKzMxMjgsNyBAQAogCiBhY19jdl9jX2NvbnN0PW5vCiBmaQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQogZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2NfY29uc3QiID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2NfY29uc3QiID4mNgpAQCAtMzA0Niw3ICszMTQ4LDYgQEAKICAgYWNfY3ZfY19pbmxpbmU9bm8KIGZvciBhY19rdyBpbiBpbmxpbmUgX19pbmxpbmVfXyBfX2lubGluZTsgZG8KICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC0zMDYxLDExICszMTYyLDIxIEBACiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKIGlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcjEKICAgYWNfc3RhdHVzPSQ/CisgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQogICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgorCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMzA3NywyMyArMzE4OCwyNyBAQAogc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQogCiBmaQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBkb25lCiAKIGZpCiBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfY19pbmxpbmUiID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2NfaW5saW5lIiA+JjYKKworCiBjYXNlICRhY19jdl9jX2lubGluZSBpbgogICBpbmxpbmUgfCB5ZXMpIDs7Ci0gIG5vKQotY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKLSNkZWZpbmUgaW5saW5lCisgICopCisgICAgY2FzZSAkYWNfY3ZfY19pbmxpbmUgaW4KKyAgICAgIG5vKSBhY192YWw9OzsKKyAgICAgICopIGFjX3ZhbD0kYWNfY3ZfY19pbmxpbmU7OworICAgIGVzYWMKKyAgICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjaWZuZGVmIF9fY3BsdXNwbHVzCisjZGVmaW5lIGlubGluZSAkYWNfdmFsCisjZW5kaWYKIF9BQ0VPRgotIDs7Ci0gICopICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIGlubGluZSAkYWNfY3ZfY19pbmxpbmUKLV9BQ0VPRgotIDs7CisgICAgOzsKIGVzYWMKIAogZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHdoZXRoZXIgYnl0ZSBvcmRlcmluZyBpcyBiaWdlbmRpYW4iID4mNQpAQCAtMzEwNCw3ICszMjE5LDYgQEAKICAgYWNfY3ZfY19iaWdlbmRpYW49dW5rbm93bgogIyBTZWUgaWYgc3lzL3BhcmFtLmggZGVmaW5lcyB0aGUgQllURV9PUkRFUiBtYWNyby4KIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtMzEyNSwxMSArMzIzOSwyMSBAQAogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CiBpZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPworICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKwkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgorCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH0gJiYKKwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTMxMzcsNyArMzI2MSw2IEBACiAgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgICMgSXQgZG9lczsgbm93IHNlZSB3aGV0aGVyIGl0IGRlZmluZWQgdG8gQklHX0VORElBTiBvciBub3QuCiBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTMxNTgsMTEgKzMyODEsMjEgQEAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVyMQogICBhY19zdGF0dXM9JD8KKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC0zMTc1LDE5ICszMzA4LDE4IEBACiAKIGFjX2N2X2NfYmlnZW5kaWFuPW5vCiBmaQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBlbHNlCiAgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CiBzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CiAKIGZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGlmIHRlc3QgJGFjX2N2X2NfYmlnZW5kaWFuID0gdW5rbm93bjsgdGhlbgogaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgIGVjaG8gJGFjX24gImNyb3NzLWNvbXBpbGluZy4uLiAiIDI+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC0zMjI0LDcgKzMzNTYsNyBAQAogKCBleGl0ICRhY19zdGF0dXMgKQogYWNfY3ZfY19iaWdlbmRpYW49eWVzCiBmaQotcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb3JlICouY29yZSBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIGZpCiBmaQpAQCAtMzI0NCw3ICszMzc2LDcgQEAKIGludCBtYWluKCkgeyBfYXNjaWkgKCk7IF9lYmNkaWMgKCk7IHJldHVybiAwOyB9CiBFT0YKICBpZiB0ZXN0IC1mIGNvbmZ0ZXN0LmMgOyB0aGVuCi0gICAgIGlmICR7Q0MtY2N9ICR7Q0ZMQUdTfSBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0Lm8gJiYgdGVzdCAtZiBjb25mdGVzdC5vIDsgdGhlbgorICAgICBpZiAke0NDLWNjfSAke0NGTEFHU30gLWMgY29uZnRlc3QuYyAtbyBjb25mdGVzdC5vICYmIHRlc3QgLWYgY29uZnRlc3QubyA7IHRoZW4KICAgICAgICAgaWYgdGVzdCBgZ3JlcCAtbCBCSUdlbkRpYW5TeVMgY29uZnRlc3Qub2AgOyB0aGVuCiAgICAgICAgICAgIGVjaG8gJGFjX24gJyBiaWcgZW5kaWFuIHByb2JlIE9LLCAnIDE+JjYKICAgICAgICAgICAgYWNfY3ZfY19iaWdlbmRpYW49eWVzCkBAIC0zMjg0LDkgKzM0MTYsOSBAQAogX0FDRU9GCiAKIGlmIHRlc3QgJGFjX2N2X2NfYmlnZW5kaWFuID0gdW5rbm93bjsgdGhlbgotICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiB1bmtub3duIGVuZGlhbmVzcyAtIHNvcnJ5IiA+JjUKLWVjaG8gIiRhc19tZTogZXJyb3I6IHVua25vd24gZW5kaWFuZXNzIC0gc29ycnkiID4mMjt9Ci0gICB7IChleGl0IHBsZWFzZSBwcmUtc2V0IGFjX2N2X2NfYmlnZW5kaWFuKTsgZXhpdCBwbGVhc2UgcHJlLXNldCBhY19jdl9jX2JpZ2VuZGlhbjsgfTsgfQorICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiB1bmtub3duIGVuZGlhbmVzcyAtIHNvcnJ5LCBwbGVhc2UgcHJlLXNldCBhY19jdl9jX2JpZ2VuZGlhbiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiB1bmtub3duIGVuZGlhbmVzcyAtIHNvcnJ5LCBwbGVhc2UgcHJlLXNldCBhY19jdl9jX2JpZ2VuZGlhbiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogZmkKIAogCkBAIC0zMzA3LDYgKzM0MzksNyBAQAogIyBBSVggNCAvdXNyL2Jpbi9pbnN0YWxsYnNkLCB3aGljaCBkb2Vzbid0IHdvcmsgd2l0aG91dCBhIC1nIGZsYWcKICMgQUZTIC91c3IvYWZzd3MvYmluL2luc3RhbGwsIHdoaWNoIG1pc2hhbmRsZXMgbm9uZXhpc3RlbnQgYXJncwogIyBTVlI0IC91c3IvdWNiL2luc3RhbGwsIHdoaWNoIHRyaWVzIHRvIHVzZSB0aGUgbm9uZXhpc3RlbnQgZ3JvdXAgInN0YWZmIgorIyBPUy8yJ3Mgc3lzdGVtIGluc3RhbGwsIHdoaWNoIGhhcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHNlbWFudGljCiAjIC4vaW5zdGFsbCwgd2hpY2ggY2FuIGJlIGVycm9uZW91c2x5IGNyZWF0ZWQgYnkgbWFrZSBmcm9tIC4vaW5zdGFsbC5zaC4KIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbC4uLiAkRUNIT19DIiA+JjYKQEAgLTMzMjMsNiArMzQ1Niw3IEBACiBjYXNlICRhc19kaXIvIGluCiAgIC4vIHwgLi8vIHwgL2NDLyogfCBcCiAgIC9ldGMvKiB8IC91c3Ivc2Jpbi8qIHwgL3Vzci9ldGMvKiB8IC9zYmluLyogfCAvdXNyL2Fmc3dzL2Jpbi8qIHwgXAorICA/OlxcL29zMlxcL2luc3RhbGxcXC8qIHwgPzpcXC9PUzJcXC9JTlNUQUxMXFwvKiB8IFwKICAgL3Vzci91Y2IvKiApIDs7CiAgICopCiAgICAgIyBPU0YxIGFuZCBTQ08gT0RUIDMuMCBoYXZlIHRoZWlyIG93biBuYW1lcyBmb3IgaW5zdGFsbC4KQEAgLTMzMzAsMjAgKzM0NjQsMjAgQEAKICAgICAjIGJ5IGRlZmF1bHQuCiAgICAgZm9yIGFjX3Byb2cgaW4gZ2luc3RhbGwgc2NvaW5zdCBpbnN0YWxsOyBkbwogICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICAgICAgIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiOyB0aGVuCi0gICAgICAgICAgaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYKLSAgICAgICAgICAgIGdyZXAgZHNwbXNnICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgICAgICAgICMgQUlYIGluc3RhbGwuICBJdCBoYXMgYW4gaW5jb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbi4KLSAgICAgICAgICAgIDoKLSAgICAgICAgICBlbGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCi0gICAgICAgICAgICBncmVwIHB3cGx1cyAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgICAgICAgICAjIHByb2dyYW0tc3BlY2lmaWMgaW5zdGFsbCBzY3JpcHQgdXNlZCBieSBIUCBwd3BsdXMtLWRvbid0IHVzZS4KLSAgICAgICAgICAgIDoKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBhY19jdl9wYXRoX2luc3RhbGw9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQgLWMiCi0gICAgICAgICAgICBicmVhayAzCi0gICAgICAgICAgZmkKLSAgICAgICAgZmkKKwlpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgdGhlbgorCSAgaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYKKwkgICAgZ3JlcCBkc3Btc2cgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgICAjIEFJWCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uCisJICAgIDoKKwkgIGVsaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYKKwkgICAgZ3JlcCBwd3BsdXMgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgICAjIHByb2dyYW0tc3BlY2lmaWMgaW5zdGFsbCBzY3JpcHQgdXNlZCBieSBIUCBwd3BsdXMtLWRvbid0IHVzZS4KKwkgICAgOgorCSAgZWxzZQorCSAgICBhY19jdl9wYXRoX2luc3RhbGw9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQgLWMiCisJICAgIGJyZWFrIDMKKwkgIGZpCisJZmkKICAgICAgIGRvbmUKICAgICBkb25lCiAgICAgOzsKQEAgLTM0MTMsNyArMzU0Nyw2IEBACiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtMzQzMSw2ICszNTY0LDcgQEAKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgogICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgogICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKKyAgICBhY19jcHBfZXJyPSRhY19jcHBfZXJyJGFjX2Nfd2Vycm9yX2ZsYWcKICAgZWxzZQogICAgIGFjX2NwcF9lcnI9CiAgIGZpCkBAIC0zNDYzLDcgKzM1OTcsNiBAQAogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTM0OTAsMTEgKzM2MjMsMjEgQEAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVyMQogICBhY19zdGF0dXM9JD8KKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC0zNTA3LDcgKzM2NTAsNyBAQAogCiBhY19jdl9oZWFkZXJfc3lzX3dhaXRfaD1ubwogZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3lzX3dhaXRfaCIgPiY1CiBlY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N5c193YWl0X2giID4mNgpAQCAtMzUyNSw3ICszNjY4LDYgQEAKICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC0zNTQ2LDExICszNjg4LDIxIEBACiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKIGlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcjEKICAgYWNfc3RhdHVzPSQ/CisgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQogICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgorCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMzU2Myw3ICszNzE1LDcgQEAKIAogYWNfY3ZfaGVhZGVyX3RpbWU9bm8KIGZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCiBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3RpbWUiID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl90aW1lIiA+JjYKQEAgLTM1ODIsNyArMzczNCw2IEBACiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtMzU5OSwxMSArMzc1MCwyMSBAQAogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CiBpZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPworICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKwkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgorCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH0gJiYKKwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTM2MTYsNyArMzc3Nyw3IEBACiAKIGxpYmliZXJ0eV9jdl9kZWNsYXJlX2Vycm5vPXllcwogZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRsaWJpYmVydHlfY3ZfZGVjbGFyZV9lcnJubyIgPiY1CiBlY2hvICIke0VDSE9fVH0kbGliaWJlcnR5X2N2X2RlY2xhcmVfZXJybm8iID4mNgpAQCAtMzY1MCw3ICszODExLDYgQEAKICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC0zNjcxLDExICszODMxLDIxIEBACiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKIGlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcjEKICAgYWNfc3RhdHVzPSQ/CisgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQogICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgorCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMzY4OCwxMiArMzg1OCwxMSBAQAogCiBhY19jdl9oZWFkZXJfc3RkYz1ubwogZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogCiBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgogICAjIFN1bk9TIDQueCBzdHJpbmcuaCBkb2VzIG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFOU0kuCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtMzcxNSw3ICszODg0LDYgQEAKIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCiAgICMgSVNDIDIuMC4yIHN0ZGxpYi5oIGRvZXMgbm90IGRlY2xhcmUgZnJlZSwgY29udHJhcnkgdG8gQU5TSS4KICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC0zNzQwLDcgKzM5MDgsNiBAQAogICA6CiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtMzc1Miw5ICszOTE5LDkgQEAKICMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAnQScgKyAoKGMpIC0gJ2EnKSA6IChjKSkKICNlbHNlCiAjIGRlZmluZSBJU0xPV0VSKGMpIFwKLSAgICAgICAgICAgICAgICAgICAoKCdhJyA8PSAoYykgJiYgKGMpIDw9ICdpJykgXAotICAgICAgICAgICAgICAgICAgICAgfHwgKCdqJyA8PSAoYykgJiYgKGMpIDw9ICdyJykgXAotICAgICAgICAgICAgICAgICAgICAgfHwgKCdzJyA8PSAoYykgJiYgKGMpIDw9ICd6JykpCisJCSAgICgoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ2knKSBcCisJCSAgICAgfHwgKCdqJyA8PSAoYykgJiYgKGMpIDw9ICdyJykgXAorCQkgICAgIHx8ICgncycgPD0gKGMpICYmIChjKSA8PSAneicpKQogIyBkZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ICgoYykgfCAweDQwKSA6IChjKSkKICNlbmRpZgogCkBAIC0zNzY1LDcgKzM5MzIsNyBAQAogICBpbnQgaTsKICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQogICAgIGlmIChYT1IgKGlzbG93ZXIgKGkpLCBJU0xPV0VSIChpKSkKLSAgICAgICAgfHwgdG91cHBlciAoaSkgIT0gVE9VUFBFUiAoaSkpCisJfHwgdG91cHBlciAoaSkgIT0gVE9VUFBFUiAoaSkpCiAgICAgICBleGl0KDIpOwogICBleGl0ICgwKTsKIH0KQEAgLTM3OTAsNyArMzk1Nyw3IEBACiAoIGV4aXQgJGFjX3N0YXR1cyApCiBhY19jdl9oZWFkZXJfc3RkYz1ubwogZmkKLXJtIC1mIGNvcmUgY29yZS4qICouY29yZSBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29yZSAqLmNvcmUgZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCiBmaQogZmkKQEAgLTM4MTUsNyArMzk4Miw3IEBACiAKIAogZm9yIGFjX2hlYWRlciBpbiBzeXMvdHlwZXMuaCBzeXMvc3RhdC5oIHN0ZGxpYi5oIHN0cmluZy5oIG1lbW9yeS5oIHN0cmluZ3MuaCBcCi0gICAgICAgICAgICAgICAgICBpbnR0eXBlcy5oIHN0ZGludC5oIHVuaXN0ZC5oCisJCSAgaW50dHlwZXMuaCBzdGRpbnQuaCB1bmlzdGQuaAogZG8KIGFzX2FjX0hlYWRlcj1gZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAogZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKQEAgLTM4MjQsNyArMzk5MSw2IEBACiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtMzg0Miw2ICs0MDA4LDcgQEAKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgogICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgogICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKKyAgICBhY19jcHBfZXJyPSRhY19jcHBfZXJyJGFjX2Nfd2Vycm9yX2ZsYWcKICAgZWxzZQogICAgIGFjX2NwcF9lcnI9CiAgIGZpCkBAIC0zODc1LDcgKzQwNDIsNiBAQAogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTM4OTUsMTEgKzQwNjEsMjEgQEAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVyMQogICBhY19zdGF0dXM9JD8KKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC0zOTEyLDcgKzQwODgsNyBAQAogCiBhY19jdl90eXBlX3VpbnRwdHJfdD1ubwogZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl90eXBlX3VpbnRwdHJfdCIgPiY1CiBlY2hvICIke0VDSE9fVH0kYWNfY3ZfdHlwZV91aW50cHRyX3QiID4mNgpAQCAtMzk0MSw3ICs0MTE3LDYgQEAKICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC0zOTYxLDExICs0MTM2LDIxIEBACiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKIGlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcjEKICAgYWNfc3RhdHVzPSQ/CisgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQogICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgorCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMzk3OCw3ICs0MTYzLDcgQEAKIAogYWNfY3ZfdHlwZV9waWRfdD1ubwogZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl90eXBlX3BpZF90IiA+JjUKIGVjaG8gIiR7RUNIT19UfSRhY19jdl90eXBlX3BpZF90IiA+JjYKQEAgLTQxMzksNyArNDMyNCw2IEBACiAgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KIGZpCiBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTQxODYsMTEgKzQzNzAsMjEgQEAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKIGlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQorICAoZXZhbCAkYWNfbGluaykgMj5jb25mdGVzdC5lcjEKICAgYWNfc3RhdHVzPSQ/CisgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQogICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTQyMDMsNyArNDM5Nyw4IEBACiAKIGV2YWwgIiRhc19hY192YXI9bm8iCiBmaQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCiBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY1CiBlY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY2CkBAIC00MjUwLDEyICs0NDQ1LDU0IEBACiAgICMgbmV3bGliIHByb3ZpZGUgYW5kIHdoaWNoIG9uZXMgd2Ugd2lsbCBiZSBleHBlY3RlZCB0byBwcm92aWRlLgogCiAgIGlmIHRlc3QgIngke3dpdGhfbmV3bGlifSIgPSAieHllcyI7IHRoZW4KLSAgICBMSUJPQkpTPSIkTElCT0JKUyBhc3ByaW50Zi4kYWNfb2JqZXh0IgotICAgIExJQk9CSlM9IiRMSUJPQkpTIGJhc2VuYW1lLiRhY19vYmpleHQiCi0gICAgTElCT0JKUz0iJExJQk9CSlMgaW5zcXVlLiRhY19vYmpleHQiCi0gICAgTElCT0JKUz0iJExJQk9CSlMgcmFuZG9tLiRhY19vYmpleHQiCi0gICAgTElCT0JKUz0iJExJQk9CSlMgc3RyZHVwLiRhY19vYmpleHQiCi0gICAgTElCT0JKUz0iJExJQk9CSlMgdmFzcHJpbnRmLiRhY19vYmpleHQiCisgICAgY2FzZSAkTElCT0JKUyBpbgorICAgICJhc3ByaW50Zi4kYWNfb2JqZXh0IiAgIHwgXAorICAqIiBhc3ByaW50Zi4kYWNfb2JqZXh0IiAgIHwgXAorICAgICJhc3ByaW50Zi4kYWNfb2JqZXh0ICIqIHwgXAorICAqIiBhc3ByaW50Zi4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgYXNwcmludGYuJGFjX29iamV4dCIgOzsKK2VzYWMKKworICAgIGNhc2UgJExJQk9CSlMgaW4KKyAgICAiYmFzZW5hbWUuJGFjX29iamV4dCIgICB8IFwKKyAgKiIgYmFzZW5hbWUuJGFjX29iamV4dCIgICB8IFwKKyAgICAiYmFzZW5hbWUuJGFjX29iamV4dCAiKiB8IFwKKyAgKiIgYmFzZW5hbWUuJGFjX29iamV4dCAiKiApIDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIGJhc2VuYW1lLiRhY19vYmpleHQiIDs7Citlc2FjCisKKyAgICBjYXNlICRMSUJPQkpTIGluCisgICAgImluc3F1ZS4kYWNfb2JqZXh0IiAgIHwgXAorICAqIiBpbnNxdWUuJGFjX29iamV4dCIgICB8IFwKKyAgICAiaW5zcXVlLiRhY19vYmpleHQgIiogfCBcCisgICoiIGluc3F1ZS4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgaW5zcXVlLiRhY19vYmpleHQiIDs7Citlc2FjCisKKyAgICBjYXNlICRMSUJPQkpTIGluCisgICAgInJhbmRvbS4kYWNfb2JqZXh0IiAgIHwgXAorICAqIiByYW5kb20uJGFjX29iamV4dCIgICB8IFwKKyAgICAicmFuZG9tLiRhY19vYmpleHQgIiogfCBcCisgICoiIHJhbmRvbS4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgcmFuZG9tLiRhY19vYmpleHQiIDs7Citlc2FjCisKKyAgICBjYXNlICRMSUJPQkpTIGluCisgICAgInN0cmR1cC4kYWNfb2JqZXh0IiAgIHwgXAorICAqIiBzdHJkdXAuJGFjX29iamV4dCIgICB8IFwKKyAgICAic3RyZHVwLiRhY19vYmpleHQgIiogfCBcCisgICoiIHN0cmR1cC4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgc3RyZHVwLiRhY19vYmpleHQiIDs7Citlc2FjCisKKyAgICBjYXNlICRMSUJPQkpTIGluCisgICAgInZhc3ByaW50Zi4kYWNfb2JqZXh0IiAgIHwgXAorICAqIiB2YXNwcmludGYuJGFjX29iamV4dCIgICB8IFwKKyAgICAidmFzcHJpbnRmLiRhY19vYmpleHQgIiogfCBcCisgICoiIHZhc3ByaW50Zi4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgdmFzcHJpbnRmLiRhY19vYmpleHQiIDs7Citlc2FjCisKIAogICAgIGZvciBmIGluICRmdW5jczsgZG8KICAgICAgIGNhc2UgIiRmIiBpbgpAQCAtNDMzNywxNiArNDU3NCw4NiBAQAogICAgICMgSGFuZGxlIFZ4V29ya3MgY29uZmlndXJhdGlvbiBzcGVjaWFsbHksIHNpbmNlIG9uIFZ4V29ya3MgdGhlCiAgICAgIyBsaWJyYXJpZXMgYXJlIGFjdHVhbGx5IG9uIHRoZSB0YXJnZXQgYm9hcmQsIG5vdCBpbiB0aGUgZmlsZQogICAgICMgc3lzdGVtLgotICAgIExJQk9CSlM9IiRMSUJPQkpTIGJhc2VuYW1lLiRhY19vYmpleHQiCi0gICAgTElCT0JKUz0iJExJQk9CSlMgZ2V0cGFnZXNpemUuJGFjX29iamV4dCIKLSAgICBMSUJPQkpTPSIkTElCT0JKUyBpbnNxdWUuJGFjX29iamV4dCIKLSAgICBMSUJPQkpTPSIkTElCT0JKUyByYW5kb20uJGFjX29iamV4dCIKLSAgICBMSUJPQkpTPSIkTElCT0JKUyBzdHJjYXNlY21wLiRhY19vYmpleHQiCi0gICAgTElCT0JKUz0iJExJQk9CSlMgc3RybmNhc2VjbXAuJGFjX29iamV4dCIKLSAgICBMSUJPQkpTPSIkTElCT0JKUyBzdHJkdXAuJGFjX29iamV4dCIKLSAgICBMSUJPQkpTPSIkTElCT0JKUyB2Zm9yay4kYWNfb2JqZXh0IgotICAgIExJQk9CSlM9IiRMSUJPQkpTIHdhaXRwaWQuJGFjX29iamV4dCIKLSAgICBMSUJPQkpTPSIkTElCT0JKUyB2YXNwcmludGYuJGFjX29iamV4dCIKKyAgICBjYXNlICRMSUJPQkpTIGluCisgICAgImJhc2VuYW1lLiRhY19vYmpleHQiICAgfCBcCisgICoiIGJhc2VuYW1lLiRhY19vYmpleHQiICAgfCBcCisgICAgImJhc2VuYW1lLiRhY19vYmpleHQgIiogfCBcCisgICoiIGJhc2VuYW1lLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyBiYXNlbmFtZS4kYWNfb2JqZXh0IiA7OworZXNhYworCisgICAgY2FzZSAkTElCT0JKUyBpbgorICAgICJnZXRwYWdlc2l6ZS4kYWNfb2JqZXh0IiAgIHwgXAorICAqIiBnZXRwYWdlc2l6ZS4kYWNfb2JqZXh0IiAgIHwgXAorICAgICJnZXRwYWdlc2l6ZS4kYWNfb2JqZXh0ICIqIHwgXAorICAqIiBnZXRwYWdlc2l6ZS4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgZ2V0cGFnZXNpemUuJGFjX29iamV4dCIgOzsKK2VzYWMKKworICAgIGNhc2UgJExJQk9CSlMgaW4KKyAgICAiaW5zcXVlLiRhY19vYmpleHQiICAgfCBcCisgICoiIGluc3F1ZS4kYWNfb2JqZXh0IiAgIHwgXAorICAgICJpbnNxdWUuJGFjX29iamV4dCAiKiB8IFwKKyAgKiIgaW5zcXVlLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyBpbnNxdWUuJGFjX29iamV4dCIgOzsKK2VzYWMKKworICAgIGNhc2UgJExJQk9CSlMgaW4KKyAgICAicmFuZG9tLiRhY19vYmpleHQiICAgfCBcCisgICoiIHJhbmRvbS4kYWNfb2JqZXh0IiAgIHwgXAorICAgICJyYW5kb20uJGFjX29iamV4dCAiKiB8IFwKKyAgKiIgcmFuZG9tLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyByYW5kb20uJGFjX29iamV4dCIgOzsKK2VzYWMKKworICAgIGNhc2UgJExJQk9CSlMgaW4KKyAgICAic3RyY2FzZWNtcC4kYWNfb2JqZXh0IiAgIHwgXAorICAqIiBzdHJjYXNlY21wLiRhY19vYmpleHQiICAgfCBcCisgICAgInN0cmNhc2VjbXAuJGFjX29iamV4dCAiKiB8IFwKKyAgKiIgc3RyY2FzZWNtcC4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgc3RyY2FzZWNtcC4kYWNfb2JqZXh0IiA7OworZXNhYworCisgICAgY2FzZSAkTElCT0JKUyBpbgorICAgICJzdHJuY2FzZWNtcC4kYWNfb2JqZXh0IiAgIHwgXAorICAqIiBzdHJuY2FzZWNtcC4kYWNfb2JqZXh0IiAgIHwgXAorICAgICJzdHJuY2FzZWNtcC4kYWNfb2JqZXh0ICIqIHwgXAorICAqIiBzdHJuY2FzZWNtcC4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgc3RybmNhc2VjbXAuJGFjX29iamV4dCIgOzsKK2VzYWMKKworICAgIGNhc2UgJExJQk9CSlMgaW4KKyAgICAic3RyZHVwLiRhY19vYmpleHQiICAgfCBcCisgICoiIHN0cmR1cC4kYWNfb2JqZXh0IiAgIHwgXAorICAgICJzdHJkdXAuJGFjX29iamV4dCAiKiB8IFwKKyAgKiIgc3RyZHVwLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyBzdHJkdXAuJGFjX29iamV4dCIgOzsKK2VzYWMKKworICAgIGNhc2UgJExJQk9CSlMgaW4KKyAgICAidmZvcmsuJGFjX29iamV4dCIgICB8IFwKKyAgKiIgdmZvcmsuJGFjX29iamV4dCIgICB8IFwKKyAgICAidmZvcmsuJGFjX29iamV4dCAiKiB8IFwKKyAgKiIgdmZvcmsuJGFjX29iamV4dCAiKiApIDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIHZmb3JrLiRhY19vYmpleHQiIDs7Citlc2FjCisKKyAgICBjYXNlICRMSUJPQkpTIGluCisgICAgIndhaXRwaWQuJGFjX29iamV4dCIgICB8IFwKKyAgKiIgd2FpdHBpZC4kYWNfb2JqZXh0IiAgIHwgXAorICAgICJ3YWl0cGlkLiRhY19vYmpleHQgIiogfCBcCisgICoiIHdhaXRwaWQuJGFjX29iamV4dCAiKiApIDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIHdhaXRwaWQuJGFjX29iamV4dCIgOzsKK2VzYWMKKworICAgIGNhc2UgJExJQk9CSlMgaW4KKyAgICAidmFzcHJpbnRmLiRhY19vYmpleHQiICAgfCBcCisgICoiIHZhc3ByaW50Zi4kYWNfb2JqZXh0IiAgIHwgXAorICAgICJ2YXNwcmludGYuJGFjX29iamV4dCAiKiB8IFwKKyAgKiIgdmFzcHJpbnRmLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyB2YXNwcmludGYuJGFjX29iamV4dCIgOzsKK2VzYWMKKwogICAgIGZvciBmIGluICRmdW5jczsgZG8KICAgICAgIGNhc2UgIiRmIiBpbgogCWJhc2VuYW1lIHwgZ2V0cGFnZXNpemUgfCBpbnNxdWUgfCByYW5kb20gfCBzdHJjYXNlY21wKQpAQCAtNDM5OSw3ICs0NzA2LDE0IEBACiAgICAgaWYgdGVzdCAtbiAiJHt3aXRoX3RhcmdldF9zdWJkaXJ9IgogICAgIHRoZW4KICAgICAgIGZ1bmNzPSJgZWNobyAkZnVuY3MgfCBzZWQgLWUgJ3MvcmFuZG9tLy8nYCIKLSAgICAgIExJQk9CSlM9IiRMSUJPQkpTIHJhbmRvbS4kYWNfb2JqZXh0IgorICAgICAgY2FzZSAkTElCT0JKUyBpbgorICAgICJyYW5kb20uJGFjX29iamV4dCIgICB8IFwKKyAgKiIgcmFuZG9tLiRhY19vYmpleHQiICAgfCBcCisgICAgInJhbmRvbS4kYWNfb2JqZXh0ICIqIHwgXAorICAqIiByYW5kb20uJGFjX29iamV4dCAiKiApIDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIHJhbmRvbS4kYWNfb2JqZXh0IiA7OworZXNhYworCiAgICAgICB2YXJzPSJgZWNobyAkdmFycyB8IHNlZCAtZSAncy9zeXNfc2lnbGlzdC8vJ2AiCiAgICAgICBjaGVja2Z1bmNzPSJgZWNobyAkY2hlY2tmdW5jcyB8IHNlZCAtZSAncy9zdHJzaWduYWwvLycgLWUgJ3MvcHNpZ25hbC8vJ2AiCiAgICAgZmkKQEAgLTQ0NDgsNyArNDc2Miw2IEBACiAgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KIGZpCiBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTQ0NzIsMTEgKzQ3ODUsMjEgQEAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKIGlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQorICAoZXZhbCAkYWNfbGluaykgMj5jb25mdGVzdC5lcjEKICAgYWNfc3RhdHVzPSQ/CisgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQogICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTQ0ODgsNyArNDgxMSw4IEBACiBzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CiAKIGZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogaWYgdGVzdCAiJGFjX2N2X3NlYXJjaF9zdHJlcnJvciIgPSBubzsgdGhlbgogICBmb3IgYWNfbGliIGluIGNwb3NpeDsgZG8KICAgICBMSUJTPSItbCRhY19saWIgICRhY19mdW5jX3NlYXJjaF9zYXZlX0xJQlMiCkBAIC00NDk4LDcgKzQ4MjIsNiBAQAogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiBmaQogY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC00NTIyLDExICs0ODQ1LDIxIEBACiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CiBpZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPworICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgorCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC00NTM5LDcgKzQ4NzIsOCBAQAogc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQogCiBmaQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAgZG9uZQogZmkKIExJQlM9JGFjX2Z1bmNfc2VhcmNoX3NhdmVfTElCUwpAQCAtNDU2Niw3ICs0OTAwLDYgQEAKICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogZmkKIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtNDYxMywxMSArNDk0NiwyMSBAQAogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1CisgIChldmFsICRhY19saW5rKSAyPmNvbmZ0ZXN0LmVyMQogICBhY19zdGF0dXM9JD8KKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKwkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgorCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH0gJiYKKwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtNDYzMCw3ICs0OTczLDggQEAKIAogZXZhbCAiJGFzX2FjX3Zhcj1ubyIKIGZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY192YXInfSdgIiA+JjUKIGVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY192YXInfSdgIiA+JjYKQEAgLTQ2NDAsNyArNDk4NCwxNCBAQAogX0FDRU9GCiAKIGVsc2UKLSAgTElCT0JKUz0iJExJQk9CSlMgJGFjX2Z1bmMuJGFjX29iamV4dCIKKyAgY2FzZSAkTElCT0JKUyBpbgorICAgICIkYWNfZnVuYy4kYWNfb2JqZXh0IiAgIHwgXAorICAqIiAkYWNfZnVuYy4kYWNfb2JqZXh0IiAgIHwgXAorICAgICIkYWNfZnVuYy4kYWNfb2JqZXh0ICIqIHwgXAorICAqIiAkYWNfZnVuYy4kYWNfb2JqZXh0ICIqICkgOzsKKyAgKikgTElCT0JKUz0iJExJQk9CSlMgJGFjX2Z1bmMuJGFjX29iamV4dCIgOzsKK2VzYWMKKwogZmkKIGRvbmUKIApAQCAtNDY1MSw3ICs1MDAyLDYgQEAKICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC00Njg5LDcgKzUwMzksNiBAQAogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiBmaQogY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC00NzM2LDExICs1MDg1LDIxIEBACiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CiBpZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPworICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgorCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC00NzUzLDcgKzUxMTIsOCBAQAogCiBldmFsICIkYXNfYWNfdmFyPW5vIgogZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQogZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNQogZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNgpAQCAtNDc3Nyw3ICs1MTM3LDYgQEAKICAgYWNfY3ZfY19zdGFja19kaXJlY3Rpb249MAogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTQ4MjAsNyArNTE3OSw3IEBACiAoIGV4aXQgJGFjX3N0YXR1cyApCiBhY19jdl9jX3N0YWNrX2RpcmVjdGlvbj0tMQogZmkKLXJtIC1mIGNvcmUgY29yZS4qICouY29yZSBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29yZSAqLmNvcmUgZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCiBmaQogZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uIiA+JjUKQEAgLTQ4NDIsNyArNTIwMSw2IEBACiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtNDg2MCw2ICs1MjE4LDcgQEAKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgogICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgogICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKKyAgICBhY19jcHBfZXJyPSRhY19jcHBfZXJyJGFjX2Nfd2Vycm9yX2ZsYWcKICAgZWxzZQogICAgIGFjX2NwcF9lcnI9CiAgIGZpCkBAIC00OTAyLDcgKzUyNjEsNiBAQAogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiBmaQogY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC00OTQ5LDExICs1MzA3LDIxIEBACiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CiBpZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPworICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgorCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC00OTY2LDcgKzUzMzQsOCBAQAogCiBldmFsICIkYXNfYWNfdmFyPW5vIgogZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQogZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNQogZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNgpAQCAtNDk5Niw5ICs1MzY1LDkgQEAKICAgICAgIC8qIFNvbWUgc3lzdGVtcyBvbmx5IGhhdmUgYSBkdW1teSBzdHViIGZvciBmb3JrKCkgKi8KICAgICAgIGludCBtYWluICgpCiAgICAgICB7Ci0gICAgICAgIGlmIChmb3JrKCkgPCAwKQotICAgICAgICAgIGV4aXQgKDEpOwotICAgICAgICBleGl0ICgwKTsKKwlpZiAoZm9yaygpIDwgMCkKKwkgIGV4aXQgKDEpOworCWV4aXQgKDApOwogICAgICAgfQogX0FDRU9GCiBybSAtZiBjb25mdGVzdCRhY19leGVleHQKQEAgLTUwMjEsNyArNTM5MCw3IEBACiAoIGV4aXQgJGFjX3N0YXR1cyApCiBhY19jdl9mdW5jX2Zvcmtfd29ya3M9bm8KIGZpCi1ybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvcmUgKi5jb3JlIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQogZmkKIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID4mNQpAQCAtNTA1NCw3ICs1NDIzLDYgQEAKICAgYWNfY3ZfZnVuY192Zm9ya193b3Jrcz1jcm9zcwogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTUxNzYsNyArNTU0NCw3IEBACiAoIGV4aXQgJGFjX3N0YXR1cyApCiBhY19jdl9mdW5jX3Zmb3JrX3dvcmtzPW5vCiBmaQotcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb3JlICouY29yZSBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIGZpCiBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfZnVuY192Zm9ya193b3JrcyIgPiY1CkBAIC01MTg0LDcgKzU1NTIsNyBAQAogCiBmaTsKIGlmIHRlc3QgIngkYWNfY3ZfZnVuY19mb3JrX3dvcmtzIiA9IHhjcm9zczsgdGhlbgotICBhY19jdl9mdW5jX3Zmb3JrX3dvcmtzPWFjX2N2X2Z1bmNfdmZvcmsKKyAgYWNfY3ZfZnVuY192Zm9ya193b3Jrcz0kYWNfY3ZfZnVuY192Zm9yawogICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiByZXN1bHQgJGFjX2N2X2Z1bmNfdmZvcmtfd29ya3MgZ3Vlc3NlZCBiZWNhdXNlIG9mIGNyb3NzIGNvbXBpbGF0aW9uIiA+JjUKIGVjaG8gIiRhc19tZTogV0FSTklORzogcmVzdWx0ICRhY19jdl9mdW5jX3Zmb3JrX3dvcmtzIGd1ZXNzZWQgYmVjYXVzZSBvZiBjcm9zcyBjb21waWxhdGlvbiIgPiYyO30KIGZpCkBAIC01MjExLDcgKzU1NzksMTQgQEAKIGZpCiAKICAgaWYgdGVzdCAkYWNfY3ZfZnVuY192Zm9ya193b3JrcyA9IG5vOyB0aGVuCi0gICAgTElCT0JKUz0iJExJQk9CSlMgdmZvcmsuJGFjX29iamV4dCIKKyAgICBjYXNlICRMSUJPQkpTIGluCisgICAgInZmb3JrLiRhY19vYmpleHQiICAgfCBcCisgICoiIHZmb3JrLiRhY19vYmpleHQiICAgfCBcCisgICAgInZmb3JrLiRhY19vYmpleHQgIiogfCBcCisgICoiIHZmb3JrLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyB2Zm9yay4kYWNfb2JqZXh0IiA7OworZXNhYworCiAgIGZpCiAgICMgV2Ugb25seSBuZWVkIF9kb3BybnQgaWYgd2UgbWlnaHQgdXNlIGl0IHRvIGltcGxlbWVudCB2KnByaW50Zi4KICAgaWYgdGVzdCAkYWNfY3ZfZnVuY192cHJpbnRmICE9IHllcyBcCkBAIC01MjMyLDcgKzU2MDcsNiBAQAogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiBmaQogY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC01Mjc5LDExICs1NjUzLDIxIEBACiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CiBpZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPworICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgorCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC01Mjk2LDcgKzU2ODAsOCBAQAogCiBldmFsICIkYXNfYWNfdmFyPW5vIgogZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQogZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNQogZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNgpAQCAtNTMwNiw3ICs1NjkxLDE0IEBACiBfQUNFT0YKIAogZWxzZQotICBMSUJPQkpTPSIkTElCT0JKUyAkYWNfZnVuYy4kYWNfb2JqZXh0IgorICBjYXNlICRMSUJPQkpTIGluCisgICAgIiRhY19mdW5jLiRhY19vYmpleHQiICAgfCBcCisgICoiICRhY19mdW5jLiRhY19vYmpleHQiICAgfCBcCisgICAgIiRhY19mdW5jLiRhY19vYmpleHQgIiogfCBcCisgICoiICRhY19mdW5jLiRhY19vYmpleHQgIiogKSA7OworICAqKSBMSUJPQkpTPSIkTElCT0JKUyAkYWNfZnVuYy4kYWNfb2JqZXh0IiA7OworZXNhYworCiBmaQogZG9uZQogCkBAIC01MzI3LDcgKzU3MTksNiBAQAogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiBmaQogY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC01Mzc0LDExICs1NzY1LDIxIEBACiBfQUNFT0YKIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CiBpZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKKyAgKGV2YWwgJGFjX2xpbmspIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPworICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgorCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC01MzkxLDcgKzU3OTIsOCBAQAogCiBldmFsICIkYXNfYWNfdmFyPW5vIgogZmkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQogZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNQogZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNgpAQCAtNTQxNyw3ICs1ODE5LDYgQEAKICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogZmkKIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtNTQzNCwxMSArNTgzNSwyMSBAQAogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1CisgIChldmFsICRhY19saW5rKSAyPmNvbmZ0ZXN0LmVyMQogICBhY19zdGF0dXM9JD8KKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKwkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgorCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH0gJiYKKwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtNTQ1MSw3ICs1ODYyLDggQEAKIAogZXZhbCAibGliaWJlcnR5X2N2X3Zhcl8kdj1ubyIKIGZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIAogICAgIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJGxpYmliZXJ0eV9jdl92YXJfJyR2YFwiID0geWVzIjsgdGhlbgpAQCAtNTQ3Myw3ICs1ODg1LDYgQEAKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBleHRlcm5hbCBzeW1ib2wgX3N5c3RlbV9jb25maWd1cmF0aW9uIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGV4dGVybmFsIHN5bWJvbCBfc3lzdGVtX2NvbmZpZ3VyYXRpb24uLi4gJEVDSE9fQyIgPiY2CiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtNTQ5MCwxMSArNTkwMSwyMSBAQAogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CiBpZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXIxCiAgIGFjX3N0YXR1cz0kPworICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKKwkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgorCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH0gJiYKKwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTU1MTQsNyArNTkzNSw3IEBACiBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1CiBlY2hvICIke0VDSE9fVH1ubyIgPiY2CiBmaQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAKIAogZm9yIGFjX2Z1bmMgaW4gJGNoZWNrZnVuY3MKQEAgLTU1MzEsNyArNTk1Miw2IEBACiAgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KIGZpCiBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTU1NzgsMTEgKzU5OTgsMjEgQEAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKIGlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj4mNQorICAoZXZhbCAkYWNfbGluaykgMj5jb25mdGVzdC5lcjEKICAgYWNfc3RhdHVzPSQ/CisgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQogICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTU1OTUsNyArNjAyNSw4IEBACiAKIGV2YWwgIiRhc19hY192YXI9bm8iCiBmaQotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCiBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY1CiBlY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY2CkBAIC01NjEzLDcgKzYwNDQsNiBAQAogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTU2NDUsMTEgKzYwNzUsMjEgQEAKIF9BQ0VPRgogcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0gIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVyMQogICBhY19zdGF0dXM9JD8KKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC01NjYyLDcgKzYxMDIsNyBAQAogCiBsaWJpYmVydHlfY3ZfZGVjbF9uZWVkZWRfY2Fub25pY2FsaXplX2ZpbGVfbmFtZT15ZXMKIGZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCiAKIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRsaWJpYmVydHlfY3ZfZGVjbF9uZWVkZWRfY2Fub25pY2FsaXplX2ZpbGVfbmFtZSIgPiY1CkBAIC01NzA0LDcgKzYxNDQsNiBAQAogICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgogZWxzZQogICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKIC8qIGNvbmZkZWZzLmguICAqLwogX0FDRU9GCiBjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKQEAgLTU3MjIsNiArNjE2MSw3IEBACiAgIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCisgICAgYWNfY3BwX2Vycj0kYWNfY3BwX2VyciRhY19jX3dlcnJvcl9mbGFnCiAgIGVsc2UKICAgICBhY19jcHBfZXJyPQogICBmaQpAQCAtNTc2Myw3ICs2MjAzLDYgQEAKICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogZmkKIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtNTgxMCwxMSArNjI0OSwyMSBAQAogX0FDRU9GCiBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAogaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPiY1CisgIChldmFsICRhY19saW5rKSAyPmNvbmZ0ZXN0LmVyMQogICBhY19zdGF0dXM9JD8KKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKKwkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgorCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH0gJiYKKwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtNTgyNyw3ICs2Mjc2LDggQEAKIAogZXZhbCAiJGFzX2FjX3Zhcj1ubyIKIGZpCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY192YXInfSdgIiA+JjUKIGVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY192YXInfSdgIiA+JjYKQEAgLTU4NDgsNyArNjI5OCw2IEBACiAgIGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9bm8KIGVsc2UKICAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0jbGluZSAkTElORU5PICJjb25maWd1cmUiCiAvKiBjb25mZGVmcy5oLiAgKi8KIF9BQ0VPRgogY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CkBAIC01OTU2LDkgKzY0MDUsOSBAQAogICBkYXRhMiA9IChjaGFyICopIG1hbGxvYyAoMiAqIHBhZ2VzaXplKTsKICAgaWYgKCFkYXRhMikKICAgICBleGl0ICgxKTsKLSAgZGF0YTIgKz0gKHBhZ2VzaXplIC0gKChpbnQpIGRhdGEyICYgKHBhZ2VzaXplIC0gMSkpKSAmIChwYWdlc2l6ZSAtIDEpOworICBkYXRhMiArPSAocGFnZXNpemUgLSAoKGxvbmcpIGRhdGEyICYgKHBhZ2VzaXplIC0gMSkpKSAmIChwYWdlc2l6ZSAtIDEpOwogICBpZiAoZGF0YTIgIT0gbW1hcCAoZGF0YTIsIHBhZ2VzaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAotICAgICAgICAgICAgICAgICAgICAgTUFQX1BSSVZBVEUgfCBNQVBfRklYRUQsIGZkLCAwTCkpCisJCSAgICAgTUFQX1BSSVZBVEUgfCBNQVBfRklYRUQsIGZkLCAwTCkpCiAgICAgZXhpdCAoMSk7CiAgIGZvciAoaSA9IDA7IGkgPCBwYWdlc2l6ZTsgKytpKQogICAgIGlmICgqKGRhdGEgKyBpKSAhPSAqKGRhdGEyICsgaSkpCkBAIC02MDAxLDcgKzY0NTAsNyBAQAogKCBleGl0ICRhY19zdGF0dXMgKQogYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD1ubwogZmkKLXJtIC1mIGNvcmUgY29yZS4qICouY29yZSBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29yZSAqLmNvcmUgZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCiBmaQogZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQiID4mNQpAQCAtNjAyNiw3ICs2NDc1LDYgQEAKICAgYWNfY3ZfZnVuY19zdHJuY21wX3dvcmtzPW5vCiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogLyogY29uZmRlZnMuaC4gICovCiBfQUNFT0YKIGNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApAQCAtNjExNCwxNCArNjU2MiwyMSBAQAogKCBleGl0ICRhY19zdGF0dXMgKQogYWNfY3ZfZnVuY19zdHJuY21wX3dvcmtzPW5vCiBmaQotcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb3JlICouY29yZSBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIHJtIC1mIGNvcmUgY29yZS4qICouY29yZQogZmkKIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9mdW5jX3N0cm5jbXBfd29ya3MiID4mNQogZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2Z1bmNfc3RybmNtcF93b3JrcyIgPiY2CiBpZiB0ZXN0ICRhY19jdl9mdW5jX3N0cm5jbXBfd29ya3MgPSBubyA7IHRoZW4KLSAgTElCT0JKUz0iJExJQk9CSlMgc3RybmNtcC4kYWNfb2JqZXh0IgorICBjYXNlICRMSUJPQkpTIGluCisgICAgInN0cm5jbXAuJGFjX29iamV4dCIgICB8IFwKKyAgKiIgc3RybmNtcC4kYWNfb2JqZXh0IiAgIHwgXAorICAgICJzdHJuY21wLiRhY19vYmpleHQgIiogfCBcCisgICoiIHN0cm5jbXAuJGFjX29iamV4dCAiKiApIDs7CisgICopIExJQk9CSlM9IiRMSUJPQkpTIHN0cm5jbXAuJGFjX29iamV4dCIgOzsKK2VzYWMKKwogZmkKIAogCkBAIC02MTc1LDEzICs2NjMwLDEzIEBACiAgICAgICAjIGBzZXQnIGRvZXMgbm90IHF1b3RlIGNvcnJlY3RseSwgc28gYWRkIHF1b3RlcyAoZG91YmxlLXF1b3RlCiAgICAgICAjIHN1YnN0aXR1dGlvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCBzZWQgdHVybnMgXFwgaW50byBcKS4KICAgICAgIHNlZCAtbiBcCi0gICAgICAgICJzLycvJ1xcXFwnJy9nOwotICAgIAkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9J1xcMicvcCIKKwkicy8nLydcXFxcJycvZzsKKwkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9J1xcMicvcCIKICAgICAgIDs7CiAgICAgKikKICAgICAgICMgYHNldCcgcXVvdGVzIGNvcnJlY3RseSBhcyByZXF1aXJlZCBieSBQT1NJWCwgc28gZG8gbm90IGFkZCBxdW90ZXMuCiAgICAgICBzZWQgLW4gXAotICAgICAgICAicy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT1cXDIvcCIKKwkicy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT1cXDIvcCIKICAgICAgIDs7CiAgICAgZXNhYzsKIH0gfApAQCAtNjIxMSwxMyArNjY2NiwxMyBAQAogIyB0cmFpbGluZyBjb2xvbnMgYW5kIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBsaW5lIGlmIFZQQVRIIGJlY29tZXMgZW1wdHkKICMgKGFjdHVhbGx5IHdlIGxlYXZlIGFuIGVtcHR5IGxpbmUgdG8gcHJlc2VydmUgbGluZSBudW1iZXJzKS4KIGlmIHRlc3QgIngkc3JjZGlyIiA9IHguOyB0aGVuCi0gIGFjX3Zwc3ViPScvXlsgCV0qVlBBVEhbIAldKj0veworICBhY192cHN1Yj0nL15bCSBdKlZQQVRIWwkgXSo9L3sKIHMvOipcJChzcmNkaXIpOiovOi87CiBzLzoqXCR7c3JjZGlyfToqLzovOwogcy86KkBzcmNkaXJAOiovOi87Ci1zL15cKFtePV0qPVsgCV0qXCk6Ki9cMS87CitzL15cKFtePV0qPVsJIF0qXCk6Ki9cMS87CiBzLzoqJC8vOwotcy9eW149XSo9WyAJXSokLy87CitzL15bXj1dKj1bCSBdKiQvLzsKIH0nCiBmaQogCkBAIC02MjI4LDcgKzY2ODMsNyBAQAogZm9yIGFjX2kgaW4gOiAkTElCT0JKUzsgZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNvbnRpbnVlCiAgICMgMS4gUmVtb3ZlIHRoZSBleHRlbnNpb24sIGFuZCAkVSBpZiBhbHJlYWR5IGluc3RhbGxlZC4KICAgYWNfaT1gZWNobyAiJGFjX2kiIHwKLSAgICAgICAgIHNlZCAncy9cJFVcLi8uLztzL1wubyQvLztzL1wub2JqJC8vJ2AKKwkgc2VkICdzL1wkVVwuLy4vO3MvXC5vJC8vO3MvXC5vYmokLy8nYAogICAjIDIuIEFkZCB0aGVtLgogICBhY19saWJvYmpzPSIkYWNfbGlib2JqcyAkYWNfaVwkVS4kYWNfb2JqZXh0IgogICBhY19sdGxpYm9ianM9IiRhY19sdGxpYm9ianMgJGFjX2kiJyRVLmxvJwpAQCAtNjI3Miw5ICs2NzI3LDEwIEBACiBlbGlmIHRlc3QgLW4gIiR7QkFTSF9WRVJTSU9OK3NldH0iICYmIChzZXQgLW8gcG9zaXgpID4vZGV2L251bGwgMj4mMTsgdGhlbgogICBzZXQgLW8gcG9zaXgKIGZpCitEVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoCiAKICMgU3VwcG9ydCB1bnNldCB3aGVuIHBvc3NpYmxlLgotaWYgKEZPTz1GT087IHVuc2V0IEZPTykgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCitpZiAoIChNQUlMPTYwOyB1bnNldCBNQUlMKSB8fCBleGl0KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgYXNfdW5zZXQ9dW5zZXQKIGVsc2UKICAgYXNfdW5zZXQ9ZmFsc2UKQEAgLTYyOTMsNyArNjc0OSw3IEBACiAgIExDX01FQVNVUkVNRU5UIExDX01FU1NBR0VTIExDX01PTkVUQVJZIExDX05BTUUgTENfTlVNRVJJQyBMQ19QQVBFUiBcCiAgIExDX1RFTEVQSE9ORSBMQ19USU1FCiBkbwotICBpZiAoc2V0ICt4OyB0ZXN0IC1uICJgKGV2YWwgJGFzX3Zhcj1DOyBleHBvcnQgJGFzX3ZhcikgMj4mMWAiKTsgdGhlbgorICBpZiAoc2V0ICt4OyB0ZXN0IC16ICJgKGV2YWwgJGFzX3Zhcj1DOyBleHBvcnQgJGFzX3ZhcikgMj4mMWAiKTsgdGhlbgogICAgIGV2YWwgJGFzX3Zhcj1DOyBleHBvcnQgJGFzX3ZhcgogICBlbHNlCiAgICAgJGFzX3Vuc2V0ICRhc192YXIKQEAgLTY0NzIsMTYgKzY5MjgsMTcgQEAKIGlmIG1rZGlyIC1wIC4gMj4vZGV2L251bGw7IHRoZW4KICAgYXNfbWtkaXJfcD06CiBlbHNlCisgIHRlc3QgLWQgLi8tcCAmJiBybWRpciAuLy1wCiAgIGFzX21rZGlyX3A9ZmFsc2UKIGZpCiAKIGFzX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKIAogIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIENQUCBuYW1lLgotYXNfdHJfY3BwPSJzZWQgeSUqJGFzX2NyX2xldHRlcnMlUCRhc19jcl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnIgorYXNfdHJfY3BwPSJldmFsIHNlZCAneSUqJGFzX2NyX2xldHRlcnMlUCRhc19jcl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKIAogIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCi1hc190cl9zaD0ic2VkIHklKislcHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWciCithc190cl9zaD0iZXZhbCBzZWQgJ3klKislcHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgogCiAKICMgSUZTCkBAIC02NTA4LDcgKzY5NjUsNyBAQAogY2F0ID4mNSA8PF9DU0VPRgogCiBUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5ICRhc19tZSwgd2hpY2ggd2FzCi1nZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNTcuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi41OS4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgIENPTkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKICAgQ09ORklHX0hFQURFUlMgID0gJENPTkZJR19IRUFERVJTCkBAIC02NTUyLDkgKzcwMDksOSBAQAogICAtZCwgLS1kZWJ1ZyAgICAgIGRvbid0IHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMKICAgICAgIC0tcmVjaGVjayAgICB1cGRhdGUgJGFzX21lIGJ5IHJlY29uZmlndXJpbmcgaW4gdGhlIHNhbWUgY29uZGl0aW9ucwogICAtLWZpbGU9RklMRVs6VEVNUExBVEVdCi0gICAgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBGSUxFCisJCSAgIGluc3RhbnRpYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgRklMRQogICAtLWhlYWRlcj1GSUxFWzpURU1QTEFURV0KLSAgICAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUgY29uZmlndXJhdGlvbiBoZWFkZXIgRklMRQorCQkgICBpbnN0YW50aWF0ZSB0aGUgY29uZmlndXJhdGlvbiBoZWFkZXIgRklMRQogCiBDb25maWd1cmF0aW9uIGZpbGVzOgogJGNvbmZpZ19maWxlcwpAQCAtNjU3MSwxMSArNzAyOCwxMCBAQAogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YKIGFjX2NzX3ZlcnNpb249IlxcCiBjb25maWcuc3RhdHVzCi1jb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNTcsCitjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNTksCiAgIHdpdGggb3B0aW9ucyBcXCJgZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9bXFwiIlxgXCRdL1xcXFwmL2cnYFxcIgogCi1Db3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMQotRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiBUaGlzIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCiBzcmNkaXI9JHNyY2RpcgpAQCAtNjg1MSw5ICs3MzA3LDkgQEAKICAgICAgIChlY2hvICc6dAogICAvQFthLXpBLVpfXVthLXpBLVpfMC05XSpALyFiJyAmJiBjYXQgJHRtcC9zdWJzLmZyYWcpID4kdG1wL3N1YnMtJGFjX3NlZF9mcmFnLnNlZAogICAgICAgaWYgdGVzdCAteiAiJGFjX3NlZF9jbWRzIjsgdGhlbgotICAJYWNfc2VkX2NtZHM9InNlZCAtZiAkdG1wL3N1YnMtJGFjX3NlZF9mcmFnLnNlZCIKKwlhY19zZWRfY21kcz0ic2VkIC1mICR0bXAvc3Vicy0kYWNfc2VkX2ZyYWcuc2VkIgogICAgICAgZWxzZQotICAJYWNfc2VkX2NtZHM9IiRhY19zZWRfY21kcyB8IHNlZCAtZiAkdG1wL3N1YnMtJGFjX3NlZF9mcmFnLnNlZCIKKwlhY19zZWRfY21kcz0iJGFjX3NlZF9jbWRzIHwgc2VkIC1mICR0bXAvc3Vicy0kYWNfc2VkX2ZyYWcuc2VkIgogICAgICAgZmkKICAgICAgIGFjX3NlZF9mcmFnPWBleHByICRhY19zZWRfZnJhZyArIDFgCiAgICAgICBhY19iZWc9JGFjX2VuZApAQCAtNjg3MSwyMSArNzMyNywyMSBAQAogICAjIFN1cHBvcnQgIm91dGZpbGVbOmluZmlsZVs6aW5maWxlLi4uXV0iLCBkZWZhdWx0aW5nIGluZmlsZT0ib3V0ZmlsZS5pbiIuCiAgIGNhc2UgJGFjX2ZpbGUgaW4KICAgLSB8ICo6LSB8ICo6LToqICkgIyBpbnB1dCBmcm9tIHN0ZGluCi0gICAgICAgIGNhdCA+JHRtcC9zdGRpbgotICAgICAgICBhY19maWxlX2luPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsW146XSo6LCwnYAotICAgICAgICBhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsOi4qLCwnYCA7OworCWNhdCA+JHRtcC9zdGRpbgorCWFjX2ZpbGVfaW49YGVjaG8gIiRhY19maWxlIiB8IHNlZCAncyxbXjpdKjosLCdgCisJYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLDouKiwsJ2AgOzsKICAgKjoqICkgYWNfZmlsZV9pbj1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKLSAgICAgICAgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLDouKiwsJ2AgOzsKKwlhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsOi4qLCwnYCA7OwogICAqICkgICBhY19maWxlX2luPSRhY19maWxlLmluIDs7CiAgIGVzYWMKIAogICAjIENvbXB1dGUgQHNyY2RpckAsIEB0b3Bfc3JjZGlyQCwgYW5kIEBJTlNUQUxMQCBmb3Igc3ViZGlyZWN0b3JpZXMuCiAgIGFjX2Rpcj1gKGRpcm5hbWUgIiRhY19maWxlIikgMj4vZGV2L251bGwgfHwKICRhc19leHByIFgiJGFjX2ZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCi0gICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvL1wpW14vXScgXHwgXAotICAgICAgICAgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwKLSAgICAgICAgIFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgXAotICAgICAgICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8CisJIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgXAorCSAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKIGVjaG8gWCIkYWNfZmlsZSIgfAogICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQogICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQpAQCAtNjkwMSwxMCArNzM1NywxMCBAQAogICAgICAgYXNfZGlycz0iJGFzX2RpciAkYXNfZGlycyIKICAgICAgIGFzX2Rpcj1gKGRpcm5hbWUgIiRhc19kaXIiKSAyPi9kZXYvbnVsbCB8fAogJGFzX2V4cHIgWCIkYXNfZGlyIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAotICAgICAgICAgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14vXScgXHwgXAotICAgICAgICAgWCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcgXHwgXAotICAgICAgICAgWCIkYXNfZGlyIiA6ICdYXCgvXCknIFx8IFwKLSAgICAgICAgIC4gICAgIDogJ1woLlwpJyAyPi9kZXYvbnVsbCB8fAorCSBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgvXCknIFx8IFwKKwkgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8CiBlY2hvIFgiJGFzX2RpciIgfAogICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQogICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQpAQCAtNjk0MiwxMiArNzM5OCw0NSBAQAogICAgIGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyJHNyY2RpciRhY19kaXJfc3VmZml4CiAgICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyJHNyY2RpciA7OwogZXNhYwotIyBEb24ndCBibGluZGx5IHBlcmZvcm0gYSBgY2QgIiRhY19kaXIiLyRhY19mb28gJiYgcHdkYCBzaW5jZSAkYWNfZm9vIGNhbiBiZQotIyBhYnNvbHV0ZS4KLWFjX2Fic19idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY19idWlsZGRpciAmJiBwd2RgCi1hY19hYnNfdG9wX2J1aWxkZGlyPWBjZCAiJGFjX2RpciIgJiYgY2QgJHthY190b3BfYnVpbGRkaXJ9LiAmJiBwd2RgCi1hY19hYnNfc3JjZGlyPWBjZCAiJGFjX2RpciIgJiYgY2QgJGFjX3NyY2RpciAmJiBwd2RgCi1hY19hYnNfdG9wX3NyY2Rpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY190b3Bfc3JjZGlyICYmIHB3ZGAKKworIyBEbyBub3QgdXNlIGBjZCBmb28gJiYgcHdkYCB0byBjb21wdXRlIGFic29sdXRlIHBhdGhzLCBiZWNhdXNlCisjIHRoZSBkaXJlY3RvcmllcyBtYXkgbm90IGV4aXN0LgorY2FzZSBgcHdkYCBpbgorLikgYWNfYWJzX2J1aWxkZGlyPSIkYWNfZGlyIjs7CisqKQorICBjYXNlICIkYWNfZGlyIiBpbgorICAuKSBhY19hYnNfYnVpbGRkaXI9YHB3ZGA7OworICBbXFwvXSogfCA/OltcXC9dKiApIGFjX2Fic19idWlsZGRpcj0iJGFjX2RpciI7OworICAqKSBhY19hYnNfYnVpbGRkaXI9YHB3ZGAvIiRhY19kaXIiOzsKKyAgZXNhYzs7Citlc2FjCitjYXNlICRhY19hYnNfYnVpbGRkaXIgaW4KKy4pIGFjX2Fic190b3BfYnVpbGRkaXI9JHthY190b3BfYnVpbGRkaXJ9Ljs7CisqKQorICBjYXNlICR7YWNfdG9wX2J1aWxkZGlyfS4gaW4KKyAgLikgYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfYWJzX2J1aWxkZGlyOzsKKyAgW1xcL10qIHwgPzpbXFwvXSogKSBhY19hYnNfdG9wX2J1aWxkZGlyPSR7YWNfdG9wX2J1aWxkZGlyfS47OworICAqKSBhY19hYnNfdG9wX2J1aWxkZGlyPSRhY19hYnNfYnVpbGRkaXIvJHthY190b3BfYnVpbGRkaXJ9Ljs7CisgIGVzYWM7OworZXNhYworY2FzZSAkYWNfYWJzX2J1aWxkZGlyIGluCisuKSBhY19hYnNfc3JjZGlyPSRhY19zcmNkaXI7OworKikKKyAgY2FzZSAkYWNfc3JjZGlyIGluCisgIC4pIGFjX2Fic19zcmNkaXI9JGFjX2Fic19idWlsZGRpcjs7CisgIFtcXC9dKiB8ID86W1xcL10qICkgYWNfYWJzX3NyY2Rpcj0kYWNfc3JjZGlyOzsKKyAgKikgYWNfYWJzX3NyY2Rpcj0kYWNfYWJzX2J1aWxkZGlyLyRhY19zcmNkaXI7OworICBlc2FjOzsKK2VzYWMKK2Nhc2UgJGFjX2Fic19idWlsZGRpciBpbgorLikgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3RvcF9zcmNkaXI7OworKikKKyAgY2FzZSAkYWNfdG9wX3NyY2RpciBpbgorICAuKSBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfYWJzX2J1aWxkZGlyOzsKKyAgW1xcL10qIHwgPzpbXFwvXSogKSBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfdG9wX3NyY2Rpcjs7CisgICopIGFjX2Fic190b3Bfc3JjZGlyPSRhY19hYnNfYnVpbGRkaXIvJGFjX3RvcF9zcmNkaXI7OworICBlc2FjOzsKK2VzYWMKIAogCiAgIGNhc2UgJElOU1RBTEwgaW4KQEAgLTY5NjksNyArNzQ1OCw3IEBACiAgICAgY29uZmlndXJlX2lucHV0PSIkYWNfZmlsZS4gICIKICAgZmkKICAgY29uZmlndXJlX2lucHV0PSRjb25maWd1cmVfaW5wdXQiR2VuZXJhdGVkIGZyb20gYGVjaG8gJGFjX2ZpbGVfaW4gfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZCAncywuKi8sLCdgIGJ5IGNvbmZpZ3VyZS4iCisJCQkJICAgICBzZWQgJ3MsLiovLCwnYCBieSBjb25maWd1cmUuIgogCiAgICMgRmlyc3QgbG9vayBmb3IgdGhlIGlucHV0IGZpbGVzIGluIHRoZSBidWlsZCB0cmVlLCBvdGhlcndpc2UgaW4gdGhlCiAgICMgc3JjIHRyZWUuCkBAIC02OTc4LDI0ICs3NDY3LDI0IEBACiAgICAgICBjYXNlICRmIGluCiAgICAgICAtKSBlY2hvICR0bXAvc3RkaW4gOzsKICAgICAgIFtcXC8kXSopCi0gICAgICAgICAjIEFic29sdXRlIChjYW4ndCBiZSBET1Mtc3R5bGUsIGFzIElGUz06KQotICAgICAgICAgdGVzdCAtZiAiJGYiIHx8IHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjUKKwkgIyBBYnNvbHV0ZSAoY2FuJ3QgYmUgRE9TLXN0eWxlLCBhcyBJRlM9OikKKwkgdGVzdCAtZiAiJGYiIHx8IHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjUKIGVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjI7fQogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0gICAgICAgICBlY2hvICRmOzsKKwkgZWNobyAiJGYiOzsKICAgICAgICopICMgUmVsYXRpdmUKLSAgICAgICAgIGlmIHRlc3QgLWYgIiRmIjsgdGhlbgotICAgICAgICAgICAjIEJ1aWxkIHRyZWUKLSAgICAgICAgICAgZWNobyAkZgotICAgICAgICAgZWxpZiB0ZXN0IC1mICIkc3JjZGlyLyRmIjsgdGhlbgotICAgICAgICAgICAjIFNvdXJjZSB0cmVlCi0gICAgICAgICAgIGVjaG8gJHNyY2Rpci8kZgotICAgICAgICAgZWxzZQotICAgICAgICAgICAjIC9kZXYvbnVsbCB0cmVlCi0gICAgICAgICAgIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjUKKwkgaWYgdGVzdCAtZiAiJGYiOyB0aGVuCisJICAgIyBCdWlsZCB0cmVlCisJICAgZWNobyAiJGYiCisJIGVsaWYgdGVzdCAtZiAiJHNyY2Rpci8kZiI7IHRoZW4KKwkgICAjIFNvdXJjZSB0cmVlCisJICAgZWNobyAiJHNyY2Rpci8kZiIKKwkgZWxzZQorCSAgICMgL2Rldi9udWxsIHRyZWUKKwkgICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotICAgICAgICAgZmk7OworCSBmaTs7CiAgICAgICBlc2FjCiAgICAgZG9uZWAgfHwgeyAoZXhpdCAxKTsgZXhpdCAxOyB9CiBfQUNFT0YKQEAgLTcwMzcsMTIgKzc1MjYsMTIgQEAKICMgTkFNRSBpcyB0aGUgY3BwIG1hY3JvIGJlaW5nIGRlZmluZWQgYW5kIFZBTFVFIGlzIHRoZSB2YWx1ZSBpdCBpcyBiZWluZyBnaXZlbi4KICMKICMgYWNfZCBzZXRzIHRoZSB2YWx1ZSBpbiAiI2RlZmluZSBOQU1FIFZBTFVFIiBsaW5lcy4KLWFjX2RBPSdzLF5cKFsgCV0qXCkjXChbIAldKmRlZmluZVsgCV1bIAldKlwpJwotYWNfZEI9J1sgCV0uKiQsXDEjXDInCithY19kQT0ncyxeXChbCSBdKlwpI1woWwkgXSpkZWZpbmVbCSBdWwkgXSpcKScKK2FjX2RCPSdbCSBdLiokLFwxI1wyJwogYWNfZEM9JyAnCiBhY19kRD0nLDt0JwogIyBhY191IHR1cm5zICIjdW5kZWYgTkFNRSIgd2l0aG91dCB0cmFpbGluZyBibGFua3MgaW50byAiI2RlZmluZSBOQU1FIFZBTFVFIi4KLWFjX3VBPSdzLF5cKFsgCV0qXCkjXChbIAldKlwpdW5kZWZcKFsgCV1bIAldKlwpJworYWNfdUE9J3MsXlwoWwkgXSpcKSNcKFsJIF0qXCl1bmRlZlwoWwkgXVsJIF0qXCknCiBhY191Qj0nJCxcMSNcMmRlZmluZVwzJwogYWNfdUM9JyAnCiBhY191RD0nLDt0JwpAQCAtNzA1MSwxMSArNzU0MCwxMSBAQAogICAjIFN1cHBvcnQgIm91dGZpbGVbOmluZmlsZVs6aW5maWxlLi4uXV0iLCBkZWZhdWx0aW5nIGluZmlsZT0ib3V0ZmlsZS5pbiIuCiAgIGNhc2UgJGFjX2ZpbGUgaW4KICAgLSB8ICo6LSB8ICo6LToqICkgIyBpbnB1dCBmcm9tIHN0ZGluCi0gICAgICAgIGNhdCA+JHRtcC9zdGRpbgotICAgICAgICBhY19maWxlX2luPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsW146XSo6LCwnYAotICAgICAgICBhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsOi4qLCwnYCA7OworCWNhdCA+JHRtcC9zdGRpbgorCWFjX2ZpbGVfaW49YGVjaG8gIiRhY19maWxlIiB8IHNlZCAncyxbXjpdKjosLCdgCisJYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLDouKiwsJ2AgOzsKICAgKjoqICkgYWNfZmlsZV9pbj1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKLSAgICAgICAgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLDouKiwsJ2AgOzsKKwlhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsOi4qLCwnYCA7OwogICAqICkgICBhY19maWxlX2luPSRhY19maWxlLmluIDs7CiAgIGVzYWMKIApAQCAtNzA2OSwyOCArNzU1OCwyOSBAQAogICAgICAgY2FzZSAkZiBpbgogICAgICAgLSkgZWNobyAkdG1wL3N0ZGluIDs7CiAgICAgICBbXFwvJF0qKQotICAgICAgICAgIyBBYnNvbHV0ZSAoY2FuJ3QgYmUgRE9TLXN0eWxlLCBhcyBJRlM9OikKLSAgICAgICAgIHRlc3QgLWYgIiRmIiB8fCB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiY1CisJICMgQWJzb2x1dGUgKGNhbid0IGJlIERPUy1zdHlsZSwgYXMgSUZTPTopCisJIHRlc3QgLWYgIiRmIiB8fCB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiY1CiBlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiYyO30KICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotICAgICAgICAgZWNobyAkZjs7CisJICMgRG8gcXVvdGUgJGYsIHRvIHByZXZlbnQgRE9TIHBhdGhzIGZyb20gYmVpbmcgSUZTJ2QuCisJIGVjaG8gIiRmIjs7CiAgICAgICAqKSAjIFJlbGF0aXZlCi0gICAgICAgICBpZiB0ZXN0IC1mICIkZiI7IHRoZW4KLSAgICAgICAgICAgIyBCdWlsZCB0cmVlCi0gICAgICAgICAgIGVjaG8gJGYKLSAgICAgICAgIGVsaWYgdGVzdCAtZiAiJHNyY2Rpci8kZiI7IHRoZW4KLSAgICAgICAgICAgIyBTb3VyY2UgdHJlZQotICAgICAgICAgICBlY2hvICRzcmNkaXIvJGYKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIyAvZGV2L251bGwgdHJlZQotICAgICAgICAgICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiY1CisJIGlmIHRlc3QgLWYgIiRmIjsgdGhlbgorCSAgICMgQnVpbGQgdHJlZQorCSAgIGVjaG8gIiRmIgorCSBlbGlmIHRlc3QgLWYgIiRzcmNkaXIvJGYiOyB0aGVuCisJICAgIyBTb3VyY2UgdHJlZQorCSAgIGVjaG8gIiRzcmNkaXIvJGYiCisJIGVsc2UKKwkgICAjIC9kZXYvbnVsbCB0cmVlCisJICAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mNQogZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mMjt9CiAgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSAgICAgICAgIGZpOzsKKwkgZmk7OwogICAgICAgZXNhYwogICAgIGRvbmVgIHx8IHsgKGV4aXQgMSk7IGV4aXQgMTsgfQogICAjIFJlbW92ZSB0aGUgdHJhaWxpbmcgc3BhY2VzLgotICBzZWQgJ3MvWyAJXSokLy8nICRhY19maWxlX2lucHV0cyA+JHRtcC9pbgorICBzZWQgJ3MvWwkgXSokLy8nICRhY19maWxlX2lucHV0cyA+JHRtcC9pbgogCiBfQUNFT0YKIApAQCAtNzExMyw5ICs3NjAzLDkgQEAKIHMsW1xcJGBdLFxcJixnCiB0IGNsZWFyCiA6IGNsZWFyCi1zLF5bIAldKiNbIAldKmRlZmluZVsgCV1bIAldKlwoW14gCShdW14gCShdKlwpXCgoW14pXSopXClbIAldKlwoLipcKSQsJHthY19kQX1cMSR7YWNfZEJ9XDFcMiR7YWNfZEN9XDMke2FjX2REfSxncAorcyxeWwkgXSojWwkgXSpkZWZpbmVbCSBdWwkgXSpcKFteCSAoXVteCSAoXSpcKVwoKFteKV0qKVwpWwkgXSpcKC4qXCkkLCR7YWNfZEF9XDEke2FjX2RCfVwxXDIke2FjX2RDfVwzJHthY19kRH0sZ3AKIHQgZW5kCi1zLF5bIAldKiNbIAldKmRlZmluZVsgCV1bIAldKlwoW14gCV1bXiAJXSpcKVsgCV0qXCguKlwpJCwke2FjX2RBfVwxJHthY19kQn1cMSR7YWNfZEN9XDIke2FjX2REfSxncAorcyxeWwkgXSojWwkgXSpkZWZpbmVbCSBdWwkgXSpcKFteCSBdW14JIF0qXClbCSBdKlwoLipcKSQsJHthY19kQX1cMSR7YWNfZEJ9XDEke2FjX2RDfVwyJHthY19kRH0sZ3AKIDogZW5kCiBfQUNFT0YKICMgSWYgc29tZSBtYWNyb3Mgd2VyZSBjYWxsZWQgc2V2ZXJhbCB0aW1lcyB0aGVyZSBtaWdodCBiZSBzZXZlcmFsIHRpbWVzCkBAIC03MTI5LDEzICs3NjE5LDEzIEBACiAjIGV4YW1wbGUsIGluIHRoZSBjYXNlIG9mIF9QT1NJWF9TT1VSQ0UsIHdoaWNoIGlzIHByZWRlZmluZWQgYW5kIHJlcXVpcmVkCiAjIG9uIHNvbWUgc3lzdGVtcyB3aGVyZSBjb25maWd1cmUgd2lsbCBub3QgZGVjaWRlIHRvIGRlZmluZSBpdC4KIGNhdCA+PmNvbmZ0ZXN0LnVuZGVmcyA8PFxfQUNFT0YKLXMsXlsgCV0qI1sgCV0qdW5kZWZbIAldWyAJXSpbYS16QS1aX11bYS16QS1aXzAtOV0qLC8qICYgKi8sCitzLF5bCSBdKiNbCSBdKnVuZGVmWwkgXVsJIF0qW2EtekEtWl9dW2EtekEtWl8wLTldKiwvKiAmICovLAogX0FDRU9GCiAKICMgQnJlYWsgdXAgY29uZnRlc3QuZGVmaW5lcyBiZWNhdXNlIHNvbWUgc2hlbGxzIGhhdmUgYSBsaW1pdCBvbiB0aGUgc2l6ZQogIyBvZiBoZXJlIGRvY3VtZW50cywgYW5kIG9sZCBzZWRzIGhhdmUgc21hbGwgbGltaXRzIHRvbyAoMTAwIGNtZHMpLgogZWNobyAnICAjIEhhbmRsZSBhbGwgdGhlICNkZWZpbmUgdGVtcGxhdGVzIG9ubHkgaWYgbmVjZXNzYXJ5LicgPj4kQ09ORklHX1NUQVRVUwotZWNobyAnICBpZiBncmVwICJeWyAJXSojWyAJXSpkZWZpbmUiICR0bXAvaW4gPi9kZXYvbnVsbDsgdGhlbicgPj4kQ09ORklHX1NUQVRVUworZWNobyAnICBpZiBncmVwICJeWwkgXSojWwkgXSpkZWZpbmUiICR0bXAvaW4gPi9kZXYvbnVsbDsgdGhlbicgPj4kQ09ORklHX1NUQVRVUwogZWNobyAnICAjIElmIHRoZXJlIGFyZSBubyBkZWZpbmVzLCB3ZSBtYXkgaGF2ZSBhbiBlbXB0eSBpZi9maScgPj4kQ09ORklHX1NUQVRVUwogZWNobyAnICA6JyA+PiRDT05GSUdfU1RBVFVTCiBybSAtZiBjb25mdGVzdC50YWlsCkBAIC03MTQ0LDcgKzc2MzQsNyBAQAogICAjIFdyaXRlIGEgbGltaXRlZC1zaXplIGhlcmUgZG9jdW1lbnQgdG8gJHRtcC9kZWZpbmVzLnNlZC4KICAgZWNobyAnICBjYXQgPiR0bXAvZGVmaW5lcy5zZWQgPDxDRU9GJyA+PiRDT05GSUdfU1RBVFVTCiAgICMgU3BlZWQgdXA6IGRvbid0IGNvbnNpZGVyIHRoZSBub24gYCNkZWZpbmUnIGxpbmVzLgotICBlY2hvICcvXlsgCV0qI1sgCV0qZGVmaW5lLyFiJyA+PiRDT05GSUdfU1RBVFVTCisgIGVjaG8gJy9eWwkgXSojWwkgXSpkZWZpbmUvIWInID4+JENPTkZJR19TVEFUVVMKICAgIyBXb3JrIGFyb3VuZCB0aGUgZm9yZ2V0LXRvLXJlc2V0LXRoZS1mbGFnIGJ1Zy4KICAgZWNobyAndCBjbHInID4+JENPTkZJR19TVEFUVVMKICAgZWNobyAnOiBjbHInID4+JENPTkZJR19TVEFUVVMKQEAgLTcxNzEsNyArNzY2MSw3IEBACiAgICMgV3JpdGUgYSBsaW1pdGVkLXNpemUgaGVyZSBkb2N1bWVudCB0byAkdG1wL3VuZGVmcy5zZWQuCiAgIGVjaG8gJyAgY2F0ID4kdG1wL3VuZGVmcy5zZWQgPDxDRU9GJyA+PiRDT05GSUdfU1RBVFVTCiAgICMgU3BlZWQgdXA6IGRvbid0IGNvbnNpZGVyIHRoZSBub24gYCN1bmRlZicKLSAgZWNobyAnL15bIAldKiNbIAldKnVuZGVmLyFiJyA+PiRDT05GSUdfU1RBVFVTCisgIGVjaG8gJy9eWwkgXSojWwkgXSp1bmRlZi8hYicgPj4kQ09ORklHX1NUQVRVUwogICAjIFdvcmsgYXJvdW5kIHRoZSBmb3JnZXQtdG8tcmVzZXQtdGhlLWZsYWcgYnVnLgogICBlY2hvICd0IGNscicgPj4kQ09ORklHX1NUQVRVUwogICBlY2hvICc6IGNscicgPj4kQ09ORklHX1NUQVRVUwpAQCAtNzIwNSwxMCArNzY5NSwxMCBAQAogICAgIGVsc2UKICAgICAgIGFjX2Rpcj1gKGRpcm5hbWUgIiRhY19maWxlIikgMj4vZGV2L251bGwgfHwKICRhc19leHByIFgiJGFjX2ZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCi0gICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvL1wpW14vXScgXHwgXAotICAgICAgICAgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwKLSAgICAgICAgIFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgXAotICAgICAgICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8CisJIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgXAorCSAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKIGVjaG8gWCIkYWNfZmlsZSIgfAogICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQogICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQpAQCAtNzIyNCwxMCArNzcxNCwxMCBAQAogICAgICAgYXNfZGlycz0iJGFzX2RpciAkYXNfZGlycyIKICAgICAgIGFzX2Rpcj1gKGRpcm5hbWUgIiRhc19kaXIiKSAyPi9kZXYvbnVsbCB8fAogJGFzX2V4cHIgWCIkYXNfZGlyIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAotICAgICAgICAgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14vXScgXHwgXAotICAgICAgICAgWCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcgXHwgXAotICAgICAgICAgWCIkYXNfZGlyIiA6ICdYXCgvXCknIFx8IFwKLSAgICAgICAgIC4gICAgIDogJ1woLlwpJyAyPi9kZXYvbnVsbCB8fAorCSBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgvXCknIFx8IFwKKwkgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8CiBlY2hvIFgiJGFzX2RpciIgfAogICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQogICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQpAQCAtNzI1OSwxNiArNzc0OSw0MSBAQAogICBhY19zb3VyY2U9YGVjaG8gIiRhY19maWxlIiB8IHNlZCAncyxbXjpdKjosLCdgCiAgIGFjX2Rpcj1gKGRpcm5hbWUgIiRhY19kZXN0IikgMj4vZGV2L251bGwgfHwKICRhc19leHByIFgiJGFjX2Rlc3QiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCi0gICAgICAgICBYIiRhY19kZXN0IiA6ICdYXCgvL1wpW14vXScgXHwgXAotICAgICAgICAgWCIkYWNfZGVzdCIgOiAnWFwoLy9cKSQnIFx8IFwKLSAgICAgICAgIFgiJGFjX2Rlc3QiIDogJ1hcKC9cKScgXHwgXAotICAgICAgICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8CisJIFgiJGFjX2Rlc3QiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJGFjX2Rlc3QiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJGFjX2Rlc3QiIDogJ1hcKC9cKScgXHwgXAorCSAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKIGVjaG8gWCIkYWNfZGVzdCIgfAogICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQogICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQogICAJICAvXlhcKFwvXC9cKSQveyBzLy9cMS87IHE7IH0KICAgCSAgL15YXChcL1wpLioveyBzLy9cMS87IHE7IH0KICAgCSAgcy8uKi8uLzsgcSdgCisgIHsgaWYgJGFzX21rZGlyX3A7IHRoZW4KKyAgICBta2RpciAtcCAiJGFjX2RpciIKKyAgZWxzZQorICAgIGFzX2Rpcj0iJGFjX2RpciIKKyAgICBhc19kaXJzPQorICAgIHdoaWxlIHRlc3QgISAtZCAiJGFzX2RpciI7IGRvCisgICAgICBhc19kaXJzPSIkYXNfZGlyICRhc19kaXJzIgorICAgICAgYXNfZGlyPWAoZGlybmFtZSAiJGFzX2RpciIpIDI+L2Rldi9udWxsIHx8CiskYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiRhc19kaXIiIDogJ1hcKC9cKScgXHwgXAorCSAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKK2VjaG8gWCIkYXNfZGlyIiB8CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sgcy8vXDEvOyBxOyB9CisgIAkgIC9eWFwoXC9cL1wpW14vXS4qL3sgcy8vXDEvOyBxOyB9CisgIAkgIC9eWFwoXC9cL1wpJC97IHMvL1wxLzsgcTsgfQorICAJICAvXlhcKFwvXCkuKi97IHMvL1wxLzsgcTsgfQorICAJICBzLy4qLy4vOyBxJ2AKKyAgICBkb25lCisgICAgdGVzdCAhIC1uICIkYXNfZGlycyIgfHwgbWtkaXIgJGFzX2RpcnMKKyAgZmkgfHwgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIkYWNfZGlyXCIiID4mNQorZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIkYWNfZGlyXCIiID4mMjt9CisgICB7IChleGl0IDEpOyBleGl0IDE7IH07IH07IH0KKwogICBhY19idWlsZGRpcj0uCiAKIGlmIHRlc3QgIiRhY19kaXIiICE9IC47IHRoZW4KQEAgLTcyOTQsMTIgKzc4MDksNDUgQEAKICAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZGRpciRzcmNkaXIkYWNfZGlyX3N1ZmZpeAogICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZGRpciRzcmNkaXIgOzsKIGVzYWMKLSMgRG9uJ3QgYmxpbmRseSBwZXJmb3JtIGEgYGNkICIkYWNfZGlyIi8kYWNfZm9vICYmIHB3ZGAgc2luY2UgJGFjX2ZvbyBjYW4gYmUKLSMgYWJzb2x1dGUuCi1hY19hYnNfYnVpbGRkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfYnVpbGRkaXIgJiYgcHdkYAotYWNfYWJzX3RvcF9idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNkICR7YWNfdG9wX2J1aWxkZGlyfS4gJiYgcHdkYAotYWNfYWJzX3NyY2Rpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY19zcmNkaXIgJiYgcHdkYAotYWNfYWJzX3RvcF9zcmNkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfdG9wX3NyY2RpciAmJiBwd2RgCisKKyMgRG8gbm90IHVzZSBgY2QgZm9vICYmIHB3ZGAgdG8gY29tcHV0ZSBhYnNvbHV0ZSBwYXRocywgYmVjYXVzZQorIyB0aGUgZGlyZWN0b3JpZXMgbWF5IG5vdCBleGlzdC4KK2Nhc2UgYHB3ZGAgaW4KKy4pIGFjX2Fic19idWlsZGRpcj0iJGFjX2RpciI7OworKikKKyAgY2FzZSAiJGFjX2RpciIgaW4KKyAgLikgYWNfYWJzX2J1aWxkZGlyPWBwd2RgOzsKKyAgW1xcL10qIHwgPzpbXFwvXSogKSBhY19hYnNfYnVpbGRkaXI9IiRhY19kaXIiOzsKKyAgKikgYWNfYWJzX2J1aWxkZGlyPWBwd2RgLyIkYWNfZGlyIjs7CisgIGVzYWM7OworZXNhYworY2FzZSAkYWNfYWJzX2J1aWxkZGlyIGluCisuKSBhY19hYnNfdG9wX2J1aWxkZGlyPSR7YWNfdG9wX2J1aWxkZGlyfS47OworKikKKyAgY2FzZSAke2FjX3RvcF9idWlsZGRpcn0uIGluCisgIC4pIGFjX2Fic190b3BfYnVpbGRkaXI9JGFjX2Fic19idWlsZGRpcjs7CisgIFtcXC9dKiB8ID86W1xcL10qICkgYWNfYWJzX3RvcF9idWlsZGRpcj0ke2FjX3RvcF9idWlsZGRpcn0uOzsKKyAgKikgYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfYWJzX2J1aWxkZGlyLyR7YWNfdG9wX2J1aWxkZGlyfS47OworICBlc2FjOzsKK2VzYWMKK2Nhc2UgJGFjX2Fic19idWlsZGRpciBpbgorLikgYWNfYWJzX3NyY2Rpcj0kYWNfc3JjZGlyOzsKKyopCisgIGNhc2UgJGFjX3NyY2RpciBpbgorICAuKSBhY19hYnNfc3JjZGlyPSRhY19hYnNfYnVpbGRkaXI7OworICBbXFwvXSogfCA/OltcXC9dKiApIGFjX2Fic19zcmNkaXI9JGFjX3NyY2Rpcjs7CisgICopIGFjX2Fic19zcmNkaXI9JGFjX2Fic19idWlsZGRpci8kYWNfc3JjZGlyOzsKKyAgZXNhYzs7Citlc2FjCitjYXNlICRhY19hYnNfYnVpbGRkaXIgaW4KKy4pIGFjX2Fic190b3Bfc3JjZGlyPSRhY190b3Bfc3JjZGlyOzsKKyopCisgIGNhc2UgJGFjX3RvcF9zcmNkaXIgaW4KKyAgLikgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX2Fic19idWlsZGRpcjs7CisgIFtcXC9dKiB8ID86W1xcL10qICkgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3RvcF9zcmNkaXI7OworICAqKSBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfYWJzX2J1aWxkZGlyLyRhY190b3Bfc3JjZGlyOzsKKyAgZXNhYzs7Citlc2FjCiAKIAogICB7IGVjaG8gIiRhc19tZTokTElORU5POiBleGVjdXRpbmcgJGFjX2Rlc3QgY29tbWFuZHMiID4mNQpkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L2NvbmZpZ3VyZS5hYyBiL2xpYmliZXJ0eS9jb25maWd1cmUuYWMKaW5kZXggZTg5MDdlNy4uMzliZmI1MSAxMDA2NDQKLS0tIGEvbGliaWJlcnR5L2NvbmZpZ3VyZS5hYworKysgYi9saWJpYmVydHkvY29uZmlndXJlLmFjCkBAIC0xLDcgKzEsOCBAQAogZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQKIAotQUNfUFJFUkVRKDIuNTcpCi1BQ19JTklUKHhtYWxsb2MuYykKK0FDX1BSRVJFUSgyLjU5KQorQUNfSU5JVAorQUNfQ09ORklHX1NSQ0RJUihbeG1hbGxvYy5jXSkKIAogIyBUaGlzIHdvcmtzIGFyb3VuZCB0aGUgZmFjdCB0aGF0IGxpYnRvb2wgY29uZmlndXJhdGlvbiBtYXkgY2hhbmdlIExECiAjIGZvciB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiwgYnV0IHNvbWUgc2hlbGxzLCBpbnN0ZWFkIG9mCkBAIC00MzMsNyArNDM0LDcgQEAKICAgQUNfSVNDX1BPU0lYCiAgIEFDX1JFUExBQ0VfRlVOQ1MoJGZ1bmNzKQogICBsaWJpYmVydHlfQUNfRlVOQ19DX0FMTE9DQQotICBBQ19GVU5DX1ZGT1JLCisgIEFDX0ZVTkNfRk9SSwogICBpZiB0ZXN0ICRhY19jdl9mdW5jX3Zmb3JrX3dvcmtzID0gbm87IHRoZW4KICAgICBBQ19MSUJPQkooW3Zmb3JrXSkKICAgZmkKQEAgLTQ0OSw5ICs0NTAsOSBAQAogICBmb3IgdiBpbiAkdmFyczsgZG8KICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkdl0pCiAgICAgQUNfQ0FDSEVfVkFMKGxpYmliZXJ0eV9jdl92YXJfJHYsCi0gICAgICBbQUNfVFJZX0xJTksoW2ludCAqcDtdLCBbZXh0ZXJuIGludCAkdiBbXTsgcCA9ICR2O10sCi0JCSAgIFtldmFsICJsaWJpYmVydHlfY3ZfdmFyXyR2PXllcyJdLAotCQkgICBbZXZhbCAibGliaWJlcnR5X2N2X3Zhcl8kdj1ubyJdKV0pCisgICAgICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW2ludCAqcDtdXSxbW2V4dGVybiBpbnQgJHYgW107IHAgPSAkdjtdXSldLAorCQkgICAgICBbZXZhbCAibGliaWJlcnR5X2N2X3Zhcl8kdj15ZXMiXSwKKwkJICAgICAgW2V2YWwgImxpYmliZXJ0eV9jdl92YXJfJHY9bm8iXSldKQogICAgIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJGxpYmliZXJ0eV9jdl92YXJfJyR2YFwiID0geWVzIjsgdGhlbgogICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCiAgICAgICBuPUhBVkVfYGVjaG8gJHYgfCB0ciAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWidgCkBAIC00NjQsMTEgKzQ2NSwxMSBAQAogICAjIHNwZWNpYWwgY2hlY2sgZm9yIF9zeXN0ZW1fY29uZmlndXJhdGlvbiBiZWNhdXNlIEFJWCA8NC4zLjIgZG8gbm90CiAgICMgY29udGFpbiB0aGUgYHBoeXNtZW0nIG1lbWJlci4KICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZXh0ZXJuYWwgc3ltYm9sIF9zeXN0ZW1fY29uZmlndXJhdGlvbl0pCi0gIEFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3lzL3N5c3RlbWNmZy5oPl0sCi0gICAgICAgICAgICAgICAgIFtkb3VibGUgeCA9IF9zeXN0ZW1fY29uZmlndXJhdGlvbi5waHlzbWVtO10sCisgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8c3lzL3N5c3RlbWNmZy5oPl1dLAorCQkJW1tkb3VibGUgeCA9IF9zeXN0ZW1fY29uZmlndXJhdGlvbi5waHlzbWVtO11dKV0sCiAgICAgW0FDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FKEhBVkVfX1NZU1RFTV9DT05GSUdVUkFUSU9OLCAxLAotICAgICAgICAgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfc3lzdGVtX2NvbmZpZ3VyYXRpb24gdmFyaWFibGUuXSldLAorCSAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9zeXN0ZW1fY29uZmlndXJhdGlvbiB2YXJpYWJsZS5dKV0sCiAgICAgW0FDX01TR19SRVNVTFQoW25vXSldKQogCiAgIEFDX0NIRUNLX0ZVTkNTKCRjaGVja2Z1bmNzKQpAQCAtNTA3LDggKzUwOCw5IEBACiBMSUJPQkpTPSIkTCIKIAogIyBXZSBuZWVkIG11bHRpbGliIHN1cHBvcnQsIGJ1dCBvbmx5IGlmIGNvbmZpZ3VyaW5nIGZvciB0aGUgdGFyZ2V0LgotQUNfT1VUUFVUKE1ha2VmaWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSwKLVt0ZXN0IC16ICIkQ09ORklHX0hFQURFUlMiIHx8IGVjaG8gdGltZXN0YW1wID4gc3RhbXAtaAorQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGVdKQorQUNfQ09ORklHX0NPTU1BTkRTKFtkZWZhdWx0XSwKKyAgW1t0ZXN0IC16ICIkQ09ORklHX0hFQURFUlMiIHx8IGVjaG8gdGltZXN0YW1wID4gc3RhbXAtaAogaWYgdGVzdCAtbiAiJENPTkZJR19GSUxFUyI7IHRoZW4KICAgaWYgdGVzdCAtbiAiJHt3aXRoX2J1aWxkX3N1YmRpcn0iIHx8IHRlc3QgLW4gIiR7d2l0aF90YXJnZXRfc3ViZGlyfSI7IHRoZW4KICAgICAjIEZJWE1FOiBXZSBzaG91bGRuJ3QgbmVlZCB0byBzZXQgYWNfZmlsZQpAQCAtNTE2LDggKzUxOCw4IEBACiAgICAgTEQ9IiR7T1JJR0lOQUxfTERfRk9SX01VTFRJTElCU30iCiAgICAgLiAke2xpYmliZXJ0eV90b3BkaXJ9L2NvbmZpZy1tbC5pbgogICBmaQotZmldLAotc3JjZGlyPSR7c3JjZGlyfQorZmldXSwKK1tbc3JjZGlyPSR7c3JjZGlyfQogaG9zdD0ke2hvc3R9CiB0YXJnZXQ9JHt0YXJnZXR9CiB3aXRoX3RhcmdldF9zdWJkaXI9JHt3aXRoX3RhcmdldF9zdWJkaXJ9CkBAIC01MjcsNCArNTI5LDUgQEAKIENPTkZJR19TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQogT1JJR0lOQUxfTERfRk9SX01VTFRJTElCUz0iJHtPUklHSU5BTF9MRF9GT1JfTVVMVElMSUJTfSIKIGxpYmliZXJ0eV90b3BkaXI9JHtsaWJpYmVydHlfdG9wZGlyfQotKQorXV0pCitBQ19PVVRQVVQKZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jIGIvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMKaW5kZXggMTlmMTkxZS4uZmU0YjM2NyAxMDA2NDQKLS0tIGEvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMKKysrIGIvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMKQEAgLTE3NDgsMzEgKzE3NDgsMzMgQEAKIGNvbnN0IHN0cnVjdCBkZW1hbmdsZV9idWlsdGluX3R5cGVfaW5mbwogY3BsdXNfZGVtYW5nbGVfYnVpbHRpbl90eXBlc1tEX0JVSUxUSU5fVFlQRV9DT1VOVF0gPQogewotICAvKiBhICovIHsgTkwgKCJzaWduZWQgY2hhciIpLAlOTCAoInNpZ25lZCBjaGFyIiksCURfUFJJTlRfSU5UIH0sCisgIC8qIGEgKi8geyBOTCAoInNpZ25lZCBjaGFyIiksCU5MICgic2lnbmVkIGNoYXIiKSwJRF9QUklOVF9ERUZBVUxUIH0sCiAgIC8qIGIgKi8geyBOTCAoImJvb2wiKSwJTkwgKCJib29sZWFuIiksCQlEX1BSSU5UX0JPT0wgfSwKLSAgLyogYyAqLyB7IE5MICgiY2hhciIpLAlOTCAoImJ5dGUiKSwJCURfUFJJTlRfSU5UIH0sCi0gIC8qIGQgKi8geyBOTCAoImRvdWJsZSIpLAlOTCAoImRvdWJsZSIpLAkJRF9QUklOVF9ERUZBVUxUIH0sCi0gIC8qIGUgKi8geyBOTCAoImxvbmcgZG91YmxlIiksCU5MICgibG9uZyBkb3VibGUiKSwJRF9QUklOVF9ERUZBVUxUIH0sCi0gIC8qIGYgKi8geyBOTCAoImZsb2F0IiksCU5MICgiZmxvYXQiKSwJCURfUFJJTlRfREVGQVVMVCB9LAotICAvKiBnICovIHsgTkwgKCJfX2Zsb2F0MTI4IiksCU5MICgiX19mbG9hdDEyOCIpLAlEX1BSSU5UX0RFRkFVTFQgfSwKLSAgLyogaCAqLyB7IE5MICgidW5zaWduZWQgY2hhciIpLCBOTCAoInVuc2lnbmVkIGNoYXIiKSwJRF9QUklOVF9JTlQgfSwKKyAgLyogYyAqLyB7IE5MICgiY2hhciIpLAlOTCAoImJ5dGUiKSwJCURfUFJJTlRfREVGQVVMVCB9LAorICAvKiBkICovIHsgTkwgKCJkb3VibGUiKSwJTkwgKCJkb3VibGUiKSwJCURfUFJJTlRfRkxPQVQgfSwKKyAgLyogZSAqLyB7IE5MICgibG9uZyBkb3VibGUiKSwJTkwgKCJsb25nIGRvdWJsZSIpLAlEX1BSSU5UX0ZMT0FUIH0sCisgIC8qIGYgKi8geyBOTCAoImZsb2F0IiksCU5MICgiZmxvYXQiKSwJCURfUFJJTlRfRkxPQVQgfSwKKyAgLyogZyAqLyB7IE5MICgiX19mbG9hdDEyOCIpLAlOTCAoIl9fZmxvYXQxMjgiKSwJRF9QUklOVF9GTE9BVCB9LAorICAvKiBoICovIHsgTkwgKCJ1bnNpZ25lZCBjaGFyIiksIE5MICgidW5zaWduZWQgY2hhciIpLAlEX1BSSU5UX0RFRkFVTFQgfSwKICAgLyogaSAqLyB7IE5MICgiaW50IiksCQlOTCAoImludCIpLAkJRF9QUklOVF9JTlQgfSwKLSAgLyogaiAqLyB7IE5MICgidW5zaWduZWQgaW50IiksIE5MICgidW5zaWduZWQiKSwJRF9QUklOVF9JTlQgfSwKKyAgLyogaiAqLyB7IE5MICgidW5zaWduZWQgaW50IiksIE5MICgidW5zaWduZWQiKSwJRF9QUklOVF9VTlNJR05FRCB9LAogICAvKiBrICovIHsgTlVMTCwgMCwJCU5VTEwsIDAsCQlEX1BSSU5UX0RFRkFVTFQgfSwKICAgLyogbCAqLyB7IE5MICgibG9uZyIpLAlOTCAoImxvbmciKSwJCURfUFJJTlRfTE9ORyB9LAotICAvKiBtICovIHsgTkwgKCJ1bnNpZ25lZCBsb25nIiksIE5MICgidW5zaWduZWQgbG9uZyIpLAlEX1BSSU5UX0xPTkcgfSwKKyAgLyogbSAqLyB7IE5MICgidW5zaWduZWQgbG9uZyIpLCBOTCAoInVuc2lnbmVkIGxvbmciKSwJRF9QUklOVF9VTlNJR05FRF9MT05HIH0sCiAgIC8qIG4gKi8geyBOTCAoIl9faW50MTI4IiksCU5MICgiX19pbnQxMjgiKSwJRF9QUklOVF9ERUZBVUxUIH0sCi0gIC8qIG8gKi8geyBOTCAoInVuc2lnbmVkIF9faW50MTI4IiksIE5MICgidW5zaWduZWQgX19pbnQxMjgiKSwJRF9QUklOVF9ERUZBVUxUIH0sCisgIC8qIG8gKi8geyBOTCAoInVuc2lnbmVkIF9faW50MTI4IiksIE5MICgidW5zaWduZWQgX19pbnQxMjgiKSwKKwkgICAgRF9QUklOVF9ERUZBVUxUIH0sCiAgIC8qIHAgKi8geyBOVUxMLCAwLAkJTlVMTCwgMCwJCURfUFJJTlRfREVGQVVMVCB9LAogICAvKiBxICovIHsgTlVMTCwgMCwJCU5VTEwsIDAsCQlEX1BSSU5UX0RFRkFVTFQgfSwKICAgLyogciAqLyB7IE5VTEwsIDAsCQlOVUxMLCAwLAkJRF9QUklOVF9ERUZBVUxUIH0sCi0gIC8qIHMgKi8geyBOTCAoInNob3J0IiksCU5MICgic2hvcnQiKSwJCURfUFJJTlRfSU5UIH0sCi0gIC8qIHQgKi8geyBOTCAoInVuc2lnbmVkIHNob3J0IiksIE5MICgidW5zaWduZWQgc2hvcnQiKSwgRF9QUklOVF9JTlQgfSwKKyAgLyogcyAqLyB7IE5MICgic2hvcnQiKSwJTkwgKCJzaG9ydCIpLAkJRF9QUklOVF9ERUZBVUxUIH0sCisgIC8qIHQgKi8geyBOTCAoInVuc2lnbmVkIHNob3J0IiksIE5MICgidW5zaWduZWQgc2hvcnQiKSwgRF9QUklOVF9ERUZBVUxUIH0sCiAgIC8qIHUgKi8geyBOVUxMLCAwLAkJTlVMTCwgMCwJCURfUFJJTlRfREVGQVVMVCB9LAogICAvKiB2ICovIHsgTkwgKCJ2b2lkIiksCU5MICgidm9pZCIpLAkJRF9QUklOVF9WT0lEIH0sCi0gIC8qIHcgKi8geyBOTCAoIndjaGFyX3QiKSwJTkwgKCJjaGFyIiksCQlEX1BSSU5UX0lOVCB9LAotICAvKiB4ICovIHsgTkwgKCJsb25nIGxvbmciKSwJTkwgKCJsb25nIiksCQlEX1BSSU5UX0RFRkFVTFQgfSwKLSAgLyogeSAqLyB7IE5MICgidW5zaWduZWQgbG9uZyBsb25nIiksIE5MICgidW5zaWduZWQgbG9uZyBsb25nIiksIERfUFJJTlRfREVGQVVMVCB9LAorICAvKiB3ICovIHsgTkwgKCJ3Y2hhcl90IiksCU5MICgiY2hhciIpLAkJRF9QUklOVF9ERUZBVUxUIH0sCisgIC8qIHggKi8geyBOTCAoImxvbmcgbG9uZyIpLAlOTCAoImxvbmciKSwJCURfUFJJTlRfTE9OR19MT05HIH0sCisgIC8qIHkgKi8geyBOTCAoInVuc2lnbmVkIGxvbmcgbG9uZyIpLCBOTCAoInVuc2lnbmVkIGxvbmcgbG9uZyIpLAorCSAgICBEX1BSSU5UX1VOU0lHTkVEX0xPTkdfTE9ORyB9LAogICAvKiB6ICovIHsgTkwgKCIuLi4iKSwJCU5MICgiLi4uIiksCQlEX1BSSU5UX0RFRkFVTFQgfSwKIH07CiAKQEAgLTMwNTAsNiArMzA1MiwzMCBAQAogICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1JFU1RSSUNUOgogICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1ZPTEFUSUxFOgogICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0NPTlNUOgorICAgICAgeworCXN0cnVjdCBkX3ByaW50X21vZCAqcGRwbTsKKworCS8qIFdoZW4gcHJpbnRpbmcgYXJyYXlzLCBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgY2FzZXMgd2hlcmUgdGhlCisJICAgc2FtZSBDVi1xdWFsaWZpZXIgZ2V0cyBwdXNoZWQgb24gdGhlIHN0YWNrIG11bHRpcGxlIHRpbWVzLgorCSAgIFdlIG9ubHkgbmVlZCB0byBwcmludCBpdCBvbmNlLiAgKi8KKworCWZvciAocGRwbSA9IGRwaS0+bW9kaWZpZXJzOyBwZHBtICE9IE5VTEw7IHBkcG0gPSBwZHBtLT5uZXh0KQorCSAgeworCSAgICBpZiAoISBwZHBtLT5wcmludGVkKQorCSAgICAgIHsKKwkJaWYgKHBkcG0tPm1vZC0+dHlwZSAhPSBERU1BTkdMRV9DT01QT05FTlRfUkVTVFJJQ1QKKwkJICAgICYmIHBkcG0tPm1vZC0+dHlwZSAhPSBERU1BTkdMRV9DT01QT05FTlRfVk9MQVRJTEUKKwkJICAgICYmIHBkcG0tPm1vZC0+dHlwZSAhPSBERU1BTkdMRV9DT01QT05FTlRfQ09OU1QpCisJCSAgYnJlYWs7CisJCWlmIChwZHBtLT5tb2QtPnR5cGUgPT0gZGMtPnR5cGUpCisJCSAgeworCQkgICAgZF9wcmludF9jb21wIChkcGksIGRfbGVmdCAoZGMpKTsKKwkJICAgIHJldHVybjsKKwkJICB9CisJICAgICAgfQorCSAgfQorICAgICAgfQorICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9SRVNUUklDVF9USElTOgogICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1ZPTEFUSUxFX1RISVM6CiAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfQ09OU1RfVEhJUzoKQEAgLTMxMjUsMjQgKzMxNTEsNjUgQEAKIAogICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0FSUkFZX1RZUEU6CiAgICAgICB7Ci0Jc3RydWN0IGRfcHJpbnRfbW9kIGRwbTsKKwlzdHJ1Y3QgZF9wcmludF9tb2QgKmhvbGRfbW9kaWZpZXJzOworCXN0cnVjdCBkX3ByaW50X21vZCBhZHBtWzRdOworCXVuc2lnbmVkIGludCBpOworCXN0cnVjdCBkX3ByaW50X21vZCAqcGRwbTsKIAogCS8qIFdlIG11c3QgcGFzcyB0aGlzIHR5cGUgZG93biBhcyBhIG1vZGlmaWVyIGluIG9yZGVyIHRvIHByaW50Ci0JICAgbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIGNvcnJlY3RseS4gICovCisJICAgbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIGNvcnJlY3RseS4gIElmIHRoZSBhcnJheSBpdHNlbGYgaXMKKwkgICBDVi1xdWFsaWZpZWQsIHdlIGFjdCBhcyB0aG91Z2ggdGhlIGVsZW1lbnQgdHlwZSB3ZXJlCisJICAgQ1YtcXVhbGlmaWVkLiAgV2UgZG8gdGhpcyBieSBjb3B5aW5nIHRoZSBtb2RpZmllcnMgZG93bgorCSAgIHJhdGhlciB0aGFuIGZpZGRsaW5nIHBvaW50ZXJzLCBzbyB0aGF0IHdlIGRvbid0IHdpbmQgdXAKKwkgICB3aXRoIGEgZF9wcmludF9tb2QgaGlnaGVyIG9uIHRoZSBzdGFjayBwb2ludGluZyBpbnRvIG91cgorCSAgIHN0YWNrIGZyYW1lIGFmdGVyIHdlIHJldHVybi4gICovCiAKLQlkcG0ubmV4dCA9IGRwaS0+bW9kaWZpZXJzOwotCWRwaS0+bW9kaWZpZXJzID0gJmRwbTsKLQlkcG0ubW9kID0gZGM7Ci0JZHBtLnByaW50ZWQgPSAwOwotCWRwbS50ZW1wbGF0ZXMgPSBkcGktPnRlbXBsYXRlczsKKwlob2xkX21vZGlmaWVycyA9IGRwaS0+bW9kaWZpZXJzOworCisJYWRwbVswXS5uZXh0ID0gaG9sZF9tb2RpZmllcnM7CisJZHBpLT5tb2RpZmllcnMgPSAmYWRwbVswXTsKKwlhZHBtWzBdLm1vZCA9IGRjOworCWFkcG1bMF0ucHJpbnRlZCA9IDA7CisJYWRwbVswXS50ZW1wbGF0ZXMgPSBkcGktPnRlbXBsYXRlczsKKworCWkgPSAxOworCXBkcG0gPSBob2xkX21vZGlmaWVyczsKKwl3aGlsZSAocGRwbSAhPSBOVUxMCisJICAgICAgICYmIChwZHBtLT5tb2QtPnR5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX1JFU1RSSUNUCisJCSAgIHx8IHBkcG0tPm1vZC0+dHlwZSA9PSBERU1BTkdMRV9DT01QT05FTlRfVk9MQVRJTEUKKwkJICAgfHwgcGRwbS0+bW9kLT50eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9DT05TVCkpCisJICB7CisJICAgIGlmICghIHBkcG0tPnByaW50ZWQpCisJICAgICAgeworCQlpZiAoaSA+PSBzaXplb2YgYWRwbSAvIHNpemVvZiBhZHBtWzBdKQorCQkgIHsKKwkJICAgIGRfcHJpbnRfZXJyb3IgKGRwaSk7CisJCSAgICByZXR1cm47CisJCSAgfQorCisJCWFkcG1baV0gPSAqcGRwbTsKKwkJYWRwbVtpXS5uZXh0ID0gZHBpLT5tb2RpZmllcnM7CisJCWRwaS0+bW9kaWZpZXJzID0gJmFkcG1baV07CisJCXBkcG0tPnByaW50ZWQgPSAxOworCQkrK2k7CisJICAgICAgfQorCisJICAgIHBkcG0gPSBwZHBtLT5uZXh0OworCSAgfQogCiAJZF9wcmludF9jb21wIChkcGksIGRfcmlnaHQgKGRjKSk7CiAKLQlkcGktPm1vZGlmaWVycyA9IGRwbS5uZXh0OworCWRwaS0+bW9kaWZpZXJzID0gaG9sZF9tb2RpZmllcnM7CiAKLQlpZiAoZHBtLnByaW50ZWQpCisJaWYgKGFkcG1bMF0ucHJpbnRlZCkKIAkgIHJldHVybjsKIAorCXdoaWxlIChpID4gMSkKKwkgIHsKKwkgICAgLS1pOworCSAgICBkX3ByaW50X21vZCAoZHBpLCBhZHBtW2ldLm1vZCk7CisJICB9CisKIAlkX3ByaW50X2FycmF5X3R5cGUgKGRwaSwgZGMsIGRwaS0+bW9kaWZpZXJzKTsKIAogCXJldHVybjsKQEAgLTMyMTIsMTUgKzMyNzksMTMgQEAKIAlkX3ByaW50X2V4cHJfb3AgKGRwaSwgZF9sZWZ0IChkYykpOwogICAgICAgZWxzZQogCXsKLQkgIGRfYXBwZW5kX3N0cmluZ19jb25zdGFudCAoZHBpLCAiKCgiKTsKKwkgIGRfYXBwZW5kX2NoYXIgKGRwaSwgJygnKTsKIAkgIGRfcHJpbnRfY2FzdCAoZHBpLCBkX2xlZnQgKGRjKSk7CiAJICBkX2FwcGVuZF9jaGFyIChkcGksICcpJyk7CiAJfQogICAgICAgZF9hcHBlbmRfY2hhciAoZHBpLCAnKCcpOwogICAgICAgZF9wcmludF9jb21wIChkcGksIGRfcmlnaHQgKGRjKSk7CiAgICAgICBkX2FwcGVuZF9jaGFyIChkcGksICcpJyk7Ci0gICAgICBpZiAoZF9sZWZ0IChkYyktPnR5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX0NBU1QpCi0JZF9hcHBlbmRfY2hhciAoZHBpLCAnKScpOwogICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfQklOQVJZOgpAQCAtMzI4NCw2MiArMzM0OSw4NiBAQAogCiAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfTElURVJBTDoKICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9MSVRFUkFMX05FRzoKLSAgICAgIC8qIEZvciBzb21lIGJ1aWx0aW4gdHlwZXMsIHByb2R1Y2Ugc2ltcGxlciBvdXRwdXQuICAqLwotICAgICAgaWYgKGRfbGVmdCAoZGMpLT50eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9CVUlMVElOX1RZUEUpCi0JewotCSAgc3dpdGNoIChkX2xlZnQgKGRjKS0+dS5zX2J1aWx0aW4udHlwZS0+cHJpbnQpCi0JICAgIHsKLQkgICAgY2FzZSBEX1BSSU5UX0lOVDoKLQkgICAgICBpZiAoZF9yaWdodCAoZGMpLT50eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9OQU1FKQotCQl7Ci0JCSAgaWYgKGRjLT50eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9MSVRFUkFMX05FRykKLQkJICAgIGRfYXBwZW5kX2NoYXIgKGRwaSwgJy0nKTsKLQkJICBkX3ByaW50X2NvbXAgKGRwaSwgZF9yaWdodCAoZGMpKTsKLQkJICByZXR1cm47Ci0JCX0KLQkgICAgICBicmVhazsKKyAgICAgIHsKKwllbnVtIGRfYnVpbHRpbl90eXBlX3ByaW50IHRwOwogCi0JICAgIGNhc2UgRF9QUklOVF9MT05HOgotCSAgICAgIGlmIChkX3JpZ2h0IChkYyktPnR5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX05BTUUpCi0JCXsKLQkJICBpZiAoZGMtPnR5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX0xJVEVSQUxfTkVHKQotCQkgICAgZF9hcHBlbmRfY2hhciAoZHBpLCAnLScpOwotCQkgIGRfcHJpbnRfY29tcCAoZHBpLCBkX3JpZ2h0IChkYykpOwotCQkgIGRfYXBwZW5kX2NoYXIgKGRwaSwgJ2wnKTsKLQkJICByZXR1cm47Ci0JCX0KLQkgICAgICBicmVhazsKKwkvKiBGb3Igc29tZSBidWlsdGluIHR5cGVzLCBwcm9kdWNlIHNpbXBsZXIgb3V0cHV0LiAgKi8KKwl0cCA9IERfUFJJTlRfREVGQVVMVDsKKwlpZiAoZF9sZWZ0IChkYyktPnR5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX0JVSUxUSU5fVFlQRSkKKwkgIHsKKwkgICAgdHAgPSBkX2xlZnQgKGRjKS0+dS5zX2J1aWx0aW4udHlwZS0+cHJpbnQ7CisJICAgIHN3aXRjaCAodHApCisJICAgICAgeworCSAgICAgIGNhc2UgRF9QUklOVF9JTlQ6CisJICAgICAgY2FzZSBEX1BSSU5UX1VOU0lHTkVEOgorCSAgICAgIGNhc2UgRF9QUklOVF9MT05HOgorCSAgICAgIGNhc2UgRF9QUklOVF9VTlNJR05FRF9MT05HOgorCSAgICAgIGNhc2UgRF9QUklOVF9MT05HX0xPTkc6CisJICAgICAgY2FzZSBEX1BSSU5UX1VOU0lHTkVEX0xPTkdfTE9ORzoKKwkJaWYgKGRfcmlnaHQgKGRjKS0+dHlwZSA9PSBERU1BTkdMRV9DT01QT05FTlRfTkFNRSkKKwkJICB7CisJCSAgICBpZiAoZGMtPnR5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX0xJVEVSQUxfTkVHKQorCQkgICAgICBkX2FwcGVuZF9jaGFyIChkcGksICctJyk7CisJCSAgICBkX3ByaW50X2NvbXAgKGRwaSwgZF9yaWdodCAoZGMpKTsKKwkJICAgIHN3aXRjaCAodHApCisJCSAgICAgIHsKKwkJICAgICAgZGVmYXVsdDoKKwkJCWJyZWFrOworCQkgICAgICBjYXNlIERfUFJJTlRfVU5TSUdORUQ6CisJCQlkX2FwcGVuZF9jaGFyIChkcGksICd1Jyk7CisJCQlicmVhazsKKwkJICAgICAgY2FzZSBEX1BSSU5UX0xPTkc6CisJCQlkX2FwcGVuZF9jaGFyIChkcGksICdsJyk7CisJCQlicmVhazsKKwkJICAgICAgY2FzZSBEX1BSSU5UX1VOU0lHTkVEX0xPTkc6CisJCQlkX2FwcGVuZF9zdHJpbmdfY29uc3RhbnQgKGRwaSwgInVsIik7CisJCQlicmVhazsKKwkJICAgICAgY2FzZSBEX1BSSU5UX0xPTkdfTE9ORzoKKwkJCWRfYXBwZW5kX3N0cmluZ19jb25zdGFudCAoZHBpLCAibGwiKTsKKwkJCWJyZWFrOworCQkgICAgICBjYXNlIERfUFJJTlRfVU5TSUdORURfTE9OR19MT05HOgorCQkJZF9hcHBlbmRfc3RyaW5nX2NvbnN0YW50IChkcGksICJ1bGwiKTsKKwkJCWJyZWFrOworCQkgICAgICB9CisJCSAgICByZXR1cm47CisJCSAgfQorCQlicmVhazsKIAotCSAgICBjYXNlIERfUFJJTlRfQk9PTDoKLQkgICAgICBpZiAoZF9yaWdodCAoZGMpLT50eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9OQU1FCi0JCSAgJiYgZF9yaWdodCAoZGMpLT51LnNfbmFtZS5sZW4gPT0gMQotCQkgICYmIGRjLT50eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9MSVRFUkFMKQotCQl7Ci0JCSAgc3dpdGNoIChkX3JpZ2h0IChkYyktPnUuc19uYW1lLnNbMF0pCi0JCSAgICB7Ci0JCSAgICBjYXNlICcwJzoKLQkJICAgICAgZF9hcHBlbmRfc3RyaW5nX2NvbnN0YW50IChkcGksICJmYWxzZSIpOwotCQkgICAgICByZXR1cm47Ci0JCSAgICBjYXNlICcxJzoKLQkJICAgICAgZF9hcHBlbmRfc3RyaW5nX2NvbnN0YW50IChkcGksICJ0cnVlIik7Ci0JCSAgICAgIHJldHVybjsKLQkJICAgIGRlZmF1bHQ6Ci0JCSAgICAgIGJyZWFrOwotCQkgICAgfQotCQl9Ci0JICAgICAgYnJlYWs7CisJICAgICAgY2FzZSBEX1BSSU5UX0JPT0w6CisJCWlmIChkX3JpZ2h0IChkYyktPnR5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX05BTUUKKwkJICAgICYmIGRfcmlnaHQgKGRjKS0+dS5zX25hbWUubGVuID09IDEKKwkJICAgICYmIGRjLT50eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9MSVRFUkFMKQorCQkgIHsKKwkJICAgIHN3aXRjaCAoZF9yaWdodCAoZGMpLT51LnNfbmFtZS5zWzBdKQorCQkgICAgICB7CisJCSAgICAgIGNhc2UgJzAnOgorCQkJZF9hcHBlbmRfc3RyaW5nX2NvbnN0YW50IChkcGksICJmYWxzZSIpOworCQkJcmV0dXJuOworCQkgICAgICBjYXNlICcxJzoKKwkJCWRfYXBwZW5kX3N0cmluZ19jb25zdGFudCAoZHBpLCAidHJ1ZSIpOworCQkJcmV0dXJuOworCQkgICAgICBkZWZhdWx0OgorCQkJYnJlYWs7CisJCSAgICAgIH0KKwkJICB9CisJCWJyZWFrOwogCi0JICAgIGRlZmF1bHQ6Ci0JICAgICAgYnJlYWs7Ci0JICAgIH0KLQl9CisJICAgICAgZGVmYXVsdDoKKwkJYnJlYWs7CisJICAgICAgfQorCSAgfQogCi0gICAgICBkX2FwcGVuZF9jaGFyIChkcGksICcoJyk7Ci0gICAgICBkX3ByaW50X2NvbXAgKGRwaSwgZF9sZWZ0IChkYykpOwotICAgICAgZF9hcHBlbmRfY2hhciAoZHBpLCAnKScpOwotICAgICAgaWYgKGRjLT50eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9MSVRFUkFMX05FRykKLQlkX2FwcGVuZF9jaGFyIChkcGksICctJyk7Ci0gICAgICBkX3ByaW50X2NvbXAgKGRwaSwgZF9yaWdodCAoZGMpKTsKKwlkX2FwcGVuZF9jaGFyIChkcGksICcoJyk7CisJZF9wcmludF9jb21wIChkcGksIGRfbGVmdCAoZGMpKTsKKwlkX2FwcGVuZF9jaGFyIChkcGksICcpJyk7CisJaWYgKGRjLT50eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9MSVRFUkFMX05FRykKKwkgIGRfYXBwZW5kX2NoYXIgKGRwaSwgJy0nKTsKKwlpZiAodHAgPT0gRF9QUklOVF9GTE9BVCkKKwkgIGRfYXBwZW5kX2NoYXIgKGRwaSwgJ1snKTsKKwlkX3ByaW50X2NvbXAgKGRwaSwgZF9yaWdodCAoZGMpKTsKKwlpZiAodHAgPT0gRF9QUklOVF9GTE9BVCkKKwkgIGRfYXBwZW5kX2NoYXIgKGRwaSwgJ10nKTsKKyAgICAgIH0KICAgICAgIHJldHVybjsKIAogICAgIGRlZmF1bHQ6CkBAIC0zNTQ5LDExICszNjM4LDEzIEBACiB7CiAgIGludCBuZWVkX3BhcmVuOwogICBpbnQgc2F3X21vZDsKKyAgaW50IG5lZWRfc3BhY2U7CiAgIHN0cnVjdCBkX3ByaW50X21vZCAqcDsKICAgc3RydWN0IGRfcHJpbnRfbW9kICpob2xkX21vZGlmaWVyczsKIAogICBuZWVkX3BhcmVuID0gMDsKICAgc2F3X21vZCA9IDA7CisgIG5lZWRfc3BhY2UgPSAwOwogICBmb3IgKHAgPSBtb2RzOyBwICE9IE5VTEw7IHAgPSBwLT5uZXh0KQogICAgIHsKICAgICAgIGlmIChwLT5wcmludGVkKQpAQCAtMzU2MiwxNSArMzY1MywxOCBAQAogICAgICAgc2F3X21vZCA9IDE7CiAgICAgICBzd2l0Y2ggKHAtPm1vZC0+dHlwZSkKIAl7CisJY2FzZSBERU1BTkdMRV9DT01QT05FTlRfUE9JTlRFUjoKKwljYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9SRUZFUkVOQ0U6CisJICBuZWVkX3BhcmVuID0gMTsKKwkgIGJyZWFrOwogCWNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1JFU1RSSUNUOgogCWNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1ZPTEFUSUxFOgogCWNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0NPTlNUOgogCWNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1ZFTkRPUl9UWVBFX1FVQUw6Ci0JY2FzZSBERU1BTkdMRV9DT01QT05FTlRfUE9JTlRFUjoKLQljYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9SRUZFUkVOQ0U6CiAJY2FzZSBERU1BTkdMRV9DT01QT05FTlRfQ09NUExFWDoKIAljYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9JTUFHSU5BUlk6CiAJY2FzZSBERU1BTkdMRV9DT01QT05FTlRfUFRSTUVNX1RZUEU6CisJICBuZWVkX3NwYWNlID0gMTsKIAkgIG5lZWRfcGFyZW4gPSAxOwogCSAgYnJlYWs7CiAJY2FzZSBERU1BTkdMRV9DT01QT05FTlRfUkVTVFJJQ1RfVEhJUzoKQEAgLTM1ODksMTggKzM2ODMsMTQgQEAKIAogICBpZiAobmVlZF9wYXJlbikKICAgICB7Ci0gICAgICBzd2l0Y2ggKGRfbGFzdF9jaGFyIChkcGkpKQorICAgICAgaWYgKCEgbmVlZF9zcGFjZSkKIAl7Ci0JY2FzZSAnICc6Ci0JY2FzZSAnKCc6Ci0JY2FzZSAnKic6Ci0JICBicmVhazsKLQotCWRlZmF1bHQ6Ci0JICBkX2FwcGVuZF9jaGFyIChkcGksICcgJyk7Ci0JICBicmVhazsKKwkgIGlmIChkX2xhc3RfY2hhciAoZHBpKSAhPSAnKCcKKwkgICAgICAmJiBkX2xhc3RfY2hhciAoZHBpKSAhPSAnKicpCisJICAgIG5lZWRfc3BhY2UgPSAxOwogCX0KLQorICAgICAgaWYgKG5lZWRfc3BhY2UgJiYgZF9sYXN0X2NoYXIgKGRwaSkgIT0gJyAnKQorCWRfYXBwZW5kX2NoYXIgKGRwaSwgJyAnKTsKICAgICAgIGRfYXBwZW5kX2NoYXIgKGRwaSwgJygnKTsKICAgICB9CiAKQEAgLTM2NDMsMTkgKzM3MzMsMTkgQEAKICAgICAgIG5lZWRfcGFyZW4gPSAwOwogICAgICAgZm9yIChwID0gbW9kczsgcCAhPSBOVUxMOyBwID0gcC0+bmV4dCkKIAl7Ci0JICBpZiAocC0+cHJpbnRlZCkKLQkgICAgYnJlYWs7Ci0KLQkgIGlmIChwLT5tb2QtPnR5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX0FSUkFZX1RZUEUpCisJICBpZiAoISBwLT5wcmludGVkKQogCSAgICB7Ci0JICAgICAgbmVlZF9zcGFjZSA9IDA7Ci0JICAgICAgYnJlYWs7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIG5lZWRfcGFyZW4gPSAxOwotCSAgICAgIG5lZWRfc3BhY2UgPSAxOwotCSAgICAgIGJyZWFrOworCSAgICAgIGlmIChwLT5tb2QtPnR5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX0FSUkFZX1RZUEUpCisJCXsKKwkJICBuZWVkX3NwYWNlID0gMDsKKwkJICBicmVhazsKKwkJfQorCSAgICAgIGVsc2UKKwkJeworCQkgIG5lZWRfcGFyZW4gPSAxOworCQkgIG5lZWRfc3BhY2UgPSAxOworCQkgIGJyZWFrOworCQl9CiAJICAgIH0KIAl9CiAKQEAgLTM5NDQsMjkgKzQwMzQsNDYgQEAKICAgY2hhciAqZGVtYW5nbGVkOwogICBzaXplX3QgYWxjOwogCi0gIGlmIChzdGF0dXMgPT0gTlVMTCkKLSAgICByZXR1cm4gTlVMTDsKLQogICBpZiAobWFuZ2xlZF9uYW1lID09IE5VTEwpCiAgICAgewotICAgICAgKnN0YXR1cyA9IC0zOworICAgICAgaWYgKHN0YXR1cyAhPSBOVUxMKQorCSpzdGF0dXMgPSAtMzsKICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICBpZiAob3V0cHV0X2J1ZmZlciAhPSBOVUxMICYmIGxlbmd0aCA9PSBOVUxMKQogICAgIHsKLSAgICAgICpzdGF0dXMgPSAtMzsKKyAgICAgIGlmIChzdGF0dXMgIT0gTlVMTCkKKwkqc3RhdHVzID0gLTM7CiAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgZGVtYW5nbGVkID0gZF9kZW1hbmdsZSAobWFuZ2xlZF9uYW1lLCBETUdMX1RZUEVTLCAmYWxjKTsKKyAgLyogVGhlIHNwZWNpZmljYXRpb24gZm9yIF9fY3hhX2RlbWFuZ2xlKCkgaXMgdGhhdCBpZiB0aGUgbWFuZ2xlZAorICAgICBuYW1lIGNvdWxkIGJlIGVpdGhlciBhbiBleHRlcm4gIkMiIGlkZW50aWZpZXIsIG9yIGFuIGludGVybmFsCisgICAgIGJ1aWx0LWluIHR5cGUgbmFtZSwgdGhlbiB3ZSByZXNvbHZlIGl0IGFzIHRoZSBpZGVudGlmaWVyLiAgQWxsCisgICAgIGludGVybmFsIGJ1aWx0LWluIHR5cGUgbmFtZXMgYXJlIGEgc2luZ2xlIGxvd2VyIGNhc2UgY2hhcmFjdGVyLgorICAgICBGcmFua2x5LCB0aGlzIHNpbXBsaXN0aWMgZGlzYW1iaWd1YXRpb24gZG9lc24ndCBtYWtlIHNlbnNlIHRvIG1lLAorICAgICBidXQgaXQgaXMgZG9jdW1lbnRlZCwgc28gd2UgaW1wbGVtZW50IGl0IGhlcmUuICAqLworICBpZiAoSVNfTE9XRVIgKG1hbmdsZWRfbmFtZVswXSkKKyAgICAgICYmIG1hbmdsZWRfbmFtZVsxXSA9PSAnXDAnCisgICAgICAmJiBjcGx1c19kZW1hbmdsZV9idWlsdGluX3R5cGVzW21hbmdsZWRfbmFtZVswXSAtICdhJ10ubmFtZSAhPSBOVUxMKQorICAgIHsKKyAgICAgIGlmIChzdGF0dXMgIT0gTlVMTCkKKwkqc3RhdHVzID0gLTI7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgZGVtYW5nbGVkID0gZF9kZW1hbmdsZSAobWFuZ2xlZF9uYW1lLCBETUdMX1BBUkFNUyB8IERNR0xfVFlQRVMsICZhbGMpOwogCiAgIGlmIChkZW1hbmdsZWQgPT0gTlVMTCkKICAgICB7Ci0gICAgICBpZiAoYWxjID09IDEpCi0JKnN0YXR1cyA9IC0xOwotICAgICAgZWxzZQotCSpzdGF0dXMgPSAtMjsKKyAgICAgIGlmIChzdGF0dXMgIT0gTlVMTCkKKwl7CisJICBpZiAoYWxjID09IDEpCisJICAgICpzdGF0dXMgPSAtMTsKKwkgIGVsc2UKKwkgICAgKnN0YXR1cyA9IC0yOworCX0KICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMzk5MCw3ICs0MDk3LDggQEAKIAl9CiAgICAgfQogCi0gICpzdGF0dXMgPSAwOworICBpZiAoc3RhdHVzICE9IE5VTEwpCisgICAgKnN0YXR1cyA9IDA7CiAKICAgcmV0dXJuIGRlbWFuZ2xlZDsKIH0KQEAgLTQyOTYsNyArNDQwNCwxMSBAQAogCiAJICBpZiAoZHluX3N0cmluZ19sZW5ndGggKG1hbmdsZWQpID4gMCkKIAkgICAgeworI2lmZGVmIElOX0dMSUJDUFBfVjMKKwkgICAgICBzID0gX19jeGFfZGVtYW5nbGUgKGR5bl9zdHJpbmdfYnVmIChtYW5nbGVkKSwgTlVMTCwgTlVMTCwgTlVMTCk7CisjZWxzZQogCSAgICAgIHMgPSBjcGx1c19kZW1hbmdsZV92MyAoZHluX3N0cmluZ19idWYgKG1hbmdsZWQpLCBvcHRpb25zKTsKKyNlbmRpZgogCiAJICAgICAgaWYgKHMgIT0gTlVMTCkKIAkJewpAQCAtNDMyOCw5ICs0NDQwLDE2IEBACiAgICAgICBmb3IgKGkgPSBvcHRpbmQ7IGkgPCBhcmdjOyArK2kpCiAJewogCSAgY2hhciAqczsKKyNpZmRlZiBJTl9HTElCQ1BQX1YzCisJICBpbnQgc3RhdHVzOworI2VuZGlmCiAKIAkgIC8qIEF0dGVtcHQgdG8gZGVtYW5nbGUuICAqLworI2lmZGVmIElOX0dMSUJDUFBfVjMKKwkgIHMgPSBfX2N4YV9kZW1hbmdsZSAoYXJndltpXSwgTlVMTCwgTlVMTCwgJnN0YXR1cyk7CisjZWxzZQogCSAgcyA9IGNwbHVzX2RlbWFuZ2xlX3YzIChhcmd2W2ldLCBvcHRpb25zKTsKKyNlbmRpZgogCiAJICAvKiBJZiBpdCB3b3JrZWQsIHByaW50IHRoZSBkZW1hbmdsZWQgbmFtZS4gICovCiAJICBpZiAocyAhPSBOVUxMKQpAQCAtNDMzOSw3ICs0NDU4LDEzIEBACiAJICAgICAgZnJlZSAocyk7CiAJICAgIH0KIAkgIGVsc2UKLQkgICAgZnByaW50ZiAoc3RkZXJyLCAiRmFpbGVkOiAlc1xuIiwgYXJndltpXSk7CisJICAgIHsKKyNpZmRlZiBJTl9HTElCQ1BQX1YzCisJICAgICAgZnByaW50ZiAoc3RkZXJyLCAiRmFpbGVkOiAlcyAoc3RhdHVzICVkKVxuIiwgYXJndltpXSwgc3RhdHVzKTsKKyNlbHNlCisJICAgICAgZnByaW50ZiAoc3RkZXJyLCAiRmFpbGVkOiAlc1xuIiwgYXJndltpXSk7CisjZW5kaWYKKwkgICAgfQogCX0KICAgICB9CiAKZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5oIGIvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmgKaW5kZXggZDNjNTdjZS4uZWVhMDg2OCAxMDA2NDQKLS0tIGEvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmgKKysrIGIvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmgKQEAgLTUzLDEwICs1MywyMCBAQAogICBEX1BSSU5UX0RFRkFVTFQsCiAgIC8qIFByaW50IGFzIGludGVnZXIuICAqLwogICBEX1BSSU5UX0lOVCwKLSAgLyogUHJpbnQgYXMgbG9uZywgd2l0aCB0cmFpbGluZyBgbCcuICAqLworICAvKiBQcmludCBhcyB1bnNpZ25lZCBpbnRlZ2VyLCB3aXRoIHRyYWlsaW5nICJ1Ii4gICovCisgIERfUFJJTlRfVU5TSUdORUQsCisgIC8qIFByaW50IGFzIGxvbmcsIHdpdGggdHJhaWxpbmcgImwiLiAgKi8KICAgRF9QUklOVF9MT05HLAorICAvKiBQcmludCBhcyB1bnNpZ25lZCBsb25nLCB3aXRoIHRyYWlsaW5nICJ1bCIuICAqLworICBEX1BSSU5UX1VOU0lHTkVEX0xPTkcsCisgIC8qIFByaW50IGFzIGxvbmcgbG9uZywgd2l0aCB0cmFpbGluZyAibGwiLiAgKi8KKyAgRF9QUklOVF9MT05HX0xPTkcsCisgIC8qIFByaW50IGFzIHVuc2lnbmVkIGxvbmcgbG9uZywgd2l0aCB0cmFpbGluZyAidWxsIi4gICovCisgIERfUFJJTlRfVU5TSUdORURfTE9OR19MT05HLAogICAvKiBQcmludCBhcyBib29sLiAgKi8KICAgRF9QUklOVF9CT09MLAorICAvKiBQcmludCBhcyBmbG9hdC0tcHV0IHZhbHVlIGluIHNxdWFyZSBicmFja2V0cy4gICovCisgIERfUFJJTlRfRkxPQVQsCiAgIC8qIFByaW50IGluIHVzdWFsIHdheSwgYnV0IGhlcmUgdG8gZGV0ZWN0IHZvaWQuICAqLwogICBEX1BSSU5UX1ZPSUQKIH07CmRpZmYgLS1naXQgYS9saWJpYmVydHkvZHluLXN0cmluZy5jIGIvbGliaWJlcnR5L2R5bi1zdHJpbmcuYwppbmRleCAxZGE3NmMyLi41ZDQ4Y2RjIDEwMDY0NAotLS0gYS9saWJpYmVydHkvZHluLXN0cmluZy5jCisrKyBiL2xpYmliZXJ0eS9keW4tc3RyaW5nLmMKQEAgLTEsNSArMSw1IEBACiAvKiBBbiBhYnN0cmFjdCBzdHJpbmcgZGF0YXR5cGUuCi0gICBDb3B5cmlnaHQgKEMpIDE5OTgsIDE5OTksIDIwMDAsIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb3B5cmlnaHQgKEMpIDE5OTgsIDE5OTksIDIwMDAsIDIwMDIsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBDb250cmlidXRlZCBieSBNYXJrIE1pdGNoZWxsIChtYXJrQG1hcmttaXRjaGVsbC5jb20pLgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgQ0MuCkBAIC00NSwxNSArNDUsNiBAQAogI2luY2x1ZGUgImxpYmliZXJ0eS5oIgogI2luY2x1ZGUgImR5bi1zdHJpbmcuaCIKIAotLyogSWYgdGhpcyBmaWxlIGlzIGJlaW5nIGNvbXBpbGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIEMrKyBydW50aW1lCi0gICBsaWJyYXJ5LCBhcyBwYXJ0IG9mIHRoZSBkZW1hbmdsZXIgaW1wbGVtZW50YXRpb24sIHdlIGRvbid0IHdhbnQgdG8KLSAgIGFib3J0IGlmIGFuIGFsbG9jYXRpb24gZmFpbHMuICBJbnN0ZWFkLCBwZXJjb2xhdGUgYW4gZXJyb3IgY29kZSB1cAotICAgdGhyb3VnaCB0aGUgY2FsbCBjaGFpbi4gICovCi0KLSNpZiBkZWZpbmVkKElOX0xJQkdDQzIpIHx8IGRlZmluZWQoSU5fR0xJQkNQUF9WMykKLSNkZWZpbmUgUkVUVVJOX09OX0FMTE9DQVRJT05fRkFJTFVSRQotI2VuZGlmCi0KIC8qIFBlcmZvcm1zIGluLXBsYWNlIGluaXRpYWxpemF0aW9uIG9mIGEgZHluX3N0cmluZyBzdHJ1Y3QuICBUaGlzCiAgICBmdW5jdGlvbiBjYW4gYmUgdXNlZCB3aXRoIGEgZHluX3N0cmluZyBzdHJ1Y3Qgb24gdGhlIHN0YWNrIG9yCiAgICBlbWJlZGRlZCBpbiBhbm90aGVyIG9iamVjdC4gIFRoZSBjb250ZW50cyBvZiBvZiB0aGUgc3RyaW5nIGl0c2VsZgpkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L2hhc2h0YWIuYyBiL2xpYmliZXJ0eS9oYXNodGFiLmMKaW5kZXggMjMxZmJjMC4uZjc3NTE2NiAxMDA2NDQKLS0tIGEvbGliaWJlcnR5L2hhc2h0YWIuYworKysgYi9saWJpYmVydHkvaGFzaHRhYi5jCkBAIC0xNTksNiArMTU5LDQ0IEBACiAgIHJldHVybiBwMSA9PSBwMjsKIH0KIAorLyogUmV0dXJuIHRoZSBjdXJyZW50IHNpemUgb2YgZ2l2ZW4gaGFzaCB0YWJsZS4gKi8KKworaW5saW5lIHNpemVfdAoraHRhYl9zaXplIChodGFiKQorICAgICBodGFiX3QgaHRhYjsKK3sKKyAgcmV0dXJuIGh0YWItPnNpemU7Cit9CisKKy8qIFJldHVybiB0aGUgY3VycmVudCBudW1iZXIgb2YgZWxlbWVudHMgaW4gZ2l2ZW4gaGFzaCB0YWJsZS4gKi8KKworaW5saW5lIHNpemVfdAoraHRhYl9lbGVtZW50cyAoaHRhYikKKyAgICAgaHRhYl90IGh0YWI7Cit7CisgIHJldHVybiBodGFiLT5uX2VsZW1lbnRzIC0gaHRhYi0+bl9kZWxldGVkOworfQorCisvKiBDb21wdXRlIHRoZSBwcmltYXJ5IGhhc2ggZm9yIEhBU0ggZ2l2ZW4gSFRBQidzIGN1cnJlbnQgc2l6ZS4gICovCisKK3N0YXRpYyBpbmxpbmUgaGFzaHZhbF90CitodGFiX21vZCAoaGFzaCwgaHRhYikKKyAgICAgaGFzaHZhbF90IGhhc2g7CisgICAgIGh0YWJfdCBodGFiOworeworICByZXR1cm4gaGFzaCAlIGh0YWJfc2l6ZSAoaHRhYik7Cit9CisKKy8qIENvbXB1dGUgdGhlIHNlY29uZGFyeSBoYXNoIGZvciBIQVNIIGdpdmVuIEhUQUIncyBjdXJyZW50IHNpemUuICAqLworCitzdGF0aWMgaW5saW5lIGhhc2h2YWxfdAoraHRhYl9tb2RfbTIgKGhhc2gsIGh0YWIpCisgICAgIGhhc2h2YWxfdCBoYXNoOworICAgICBodGFiX3QgaHRhYjsKK3sKKyAgcmV0dXJuIDEgKyBoYXNoICUgKGh0YWJfc2l6ZSAoaHRhYikgLSAyKTsKK30KKwogLyogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIHRhYmxlIHdpdGggbGVuZ3RoIHNsaWdodGx5IGxvbmdlciB0aGFuIGdpdmVuCiAgICBzb3VyY2UgbGVuZ3RoLiAgQ3JlYXRlZCBoYXNoIHRhYmxlIGlzIGluaXRpYXRlZCBhcyBlbXB0eSAoYWxsIHRoZQogICAgaGFzaCB0YWJsZSBlbnRyaWVzIGFyZSBFTVBUWV9FTlRSWSkuICBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUKQEAgLTI4MiwyMiArMzIwLDIzIEBACiBodGFiX2RlbGV0ZSAoaHRhYikKICAgICAgaHRhYl90IGh0YWI7CiB7CisgIHNpemVfdCBzaXplID0gaHRhYl9zaXplIChodGFiKTsKKyAgUFRSICplbnRyaWVzID0gaHRhYi0+ZW50cmllczsKICAgaW50IGk7CiAKICAgaWYgKGh0YWItPmRlbF9mKQotICAgIGZvciAoaSA9IGh0YWItPnNpemUgLSAxOyBpID49IDA7IGktLSkKLSAgICAgIGlmIChodGFiLT5lbnRyaWVzW2ldICE9IEVNUFRZX0VOVFJZCi0JICAmJiBodGFiLT5lbnRyaWVzW2ldICE9IERFTEVURURfRU5UUlkpCi0JKCpodGFiLT5kZWxfZikgKGh0YWItPmVudHJpZXNbaV0pOworICAgIGZvciAoaSA9IHNpemUgLSAxOyBpID49IDA7IGktLSkKKyAgICAgIGlmIChlbnRyaWVzW2ldICE9IEVNUFRZX0VOVFJZICYmIGVudHJpZXNbaV0gIT0gREVMRVRFRF9FTlRSWSkKKwkoKmh0YWItPmRlbF9mKSAoZW50cmllc1tpXSk7CiAKICAgaWYgKGh0YWItPmZyZWVfZiAhPSBOVUxMKQogICAgIHsKLSAgICAgICgqaHRhYi0+ZnJlZV9mKSAoaHRhYi0+ZW50cmllcyk7CisgICAgICAoKmh0YWItPmZyZWVfZikgKGVudHJpZXMpOwogICAgICAgKCpodGFiLT5mcmVlX2YpIChodGFiKTsKICAgICB9CiAgIGVsc2UgaWYgKGh0YWItPmZyZWVfd2l0aF9hcmdfZiAhPSBOVUxMKQogICAgIHsKLSAgICAgICgqaHRhYi0+ZnJlZV93aXRoX2FyZ19mKSAoaHRhYi0+YWxsb2NfYXJnLCBodGFiLT5lbnRyaWVzKTsKKyAgICAgICgqaHRhYi0+ZnJlZV93aXRoX2FyZ19mKSAoaHRhYi0+YWxsb2NfYXJnLCBlbnRyaWVzKTsKICAgICAgICgqaHRhYi0+ZnJlZV93aXRoX2FyZ19mKSAoaHRhYi0+YWxsb2NfYXJnLCBodGFiKTsKICAgICB9CiB9CkBAIC0zMDgsMTUgKzM0NywxNiBAQAogaHRhYl9lbXB0eSAoaHRhYikKICAgICAgaHRhYl90IGh0YWI7CiB7CisgIHNpemVfdCBzaXplID0gaHRhYl9zaXplIChodGFiKTsKKyAgUFRSICplbnRyaWVzID0gaHRhYi0+ZW50cmllczsKICAgaW50IGk7CiAKICAgaWYgKGh0YWItPmRlbF9mKQotICAgIGZvciAoaSA9IGh0YWItPnNpemUgLSAxOyBpID49IDA7IGktLSkKLSAgICAgIGlmIChodGFiLT5lbnRyaWVzW2ldICE9IEVNUFRZX0VOVFJZCi0JICAmJiBodGFiLT5lbnRyaWVzW2ldICE9IERFTEVURURfRU5UUlkpCi0JKCpodGFiLT5kZWxfZikgKGh0YWItPmVudHJpZXNbaV0pOworICAgIGZvciAoaSA9IHNpemUgLSAxOyBpID49IDA7IGktLSkKKyAgICAgIGlmIChlbnRyaWVzW2ldICE9IEVNUFRZX0VOVFJZICYmIGVudHJpZXNbaV0gIT0gREVMRVRFRF9FTlRSWSkKKwkoKmh0YWItPmRlbF9mKSAoZW50cmllc1tpXSk7CiAKLSAgbWVtc2V0IChodGFiLT5lbnRyaWVzLCAwLCBodGFiLT5zaXplICogc2l6ZW9mIChQVFIpKTsKKyAgbWVtc2V0IChlbnRyaWVzLCAwLCBzaXplICogc2l6ZW9mIChQVFIpKTsKIH0KIAogLyogU2ltaWxhciB0byBodGFiX2ZpbmRfc2xvdCwgYnV0IHdpdGhvdXQgc2V2ZXJhbCB1bndhbnRlZCBzaWRlIGVmZmVjdHM6CkBAIC0zMzEsOCArMzcxLDggQEAKICAgICAgaHRhYl90IGh0YWI7CiAgICAgIGhhc2h2YWxfdCBoYXNoOwogewotICBzaXplX3Qgc2l6ZSA9IGh0YWItPnNpemU7Ci0gIHVuc2lnbmVkIGludCBpbmRleCA9IGhhc2ggJSBzaXplOworICBoYXNodmFsX3QgaW5kZXggPSBodGFiX21vZCAoaGFzaCwgaHRhYik7CisgIHNpemVfdCBzaXplID0gaHRhYl9zaXplIChodGFiKTsKICAgUFRSICpzbG90ID0gaHRhYi0+ZW50cmllcyArIGluZGV4OwogICBoYXNodmFsX3QgaGFzaDI7CiAKQEAgLTM0MSw3ICszODEsNyBAQAogICBlbHNlIGlmICgqc2xvdCA9PSBERUxFVEVEX0VOVFJZKQogICAgIGFib3J0ICgpOwogCi0gIGhhc2gyID0gMSArIGhhc2ggJSAoc2l6ZSAtIDIpOworICBoYXNoMiA9IGh0YWJfbW9kX20yIChoYXNoLCBodGFiKTsKICAgZm9yICg7OykKICAgICB7CiAgICAgICBpbmRleCArPSBoYXNoMjsKQEAgLTQzMSwyMiArNDcxLDIwIEBACiAgICAgIGNvbnN0IFBUUiBlbGVtZW50OwogICAgICBoYXNodmFsX3QgaGFzaDsKIHsKLSAgdW5zaWduZWQgaW50IGluZGV4OwotICBoYXNodmFsX3QgaGFzaDI7CisgIGhhc2h2YWxfdCBpbmRleCwgaGFzaDI7CiAgIHNpemVfdCBzaXplOwogICBQVFIgZW50cnk7CiAKICAgaHRhYi0+c2VhcmNoZXMrKzsKLSAgc2l6ZSA9IGh0YWItPnNpemU7Ci0gIGluZGV4ID0gaGFzaCAlIHNpemU7CisgIHNpemUgPSBodGFiX3NpemUgKGh0YWIpOworICBpbmRleCA9IGh0YWJfbW9kIChoYXNoLCBodGFiKTsKIAogICBlbnRyeSA9IGh0YWItPmVudHJpZXNbaW5kZXhdOwogICBpZiAoZW50cnkgPT0gRU1QVFlfRU5UUlkKICAgICAgIHx8IChlbnRyeSAhPSBERUxFVEVEX0VOVFJZICYmICgqaHRhYi0+ZXFfZikgKGVudHJ5LCBlbGVtZW50KSkpCiAgICAgcmV0dXJuIGVudHJ5OwogCi0gIGhhc2gyID0gMSArIGhhc2ggJSAoc2l6ZSAtIDIpOwotCisgIGhhc2gyID0gaHRhYl9tb2RfbTIgKGhhc2gsIGh0YWIpOwogICBmb3IgKDs7KQogICAgIHsKICAgICAgIGh0YWItPmNvbGxpc2lvbnMrKzsKQEAgLTQ4OCwxNyArNTI2LDE5IEBACiAgICAgIGVudW0gaW5zZXJ0X29wdGlvbiBpbnNlcnQ7CiB7CiAgIFBUUiAqZmlyc3RfZGVsZXRlZF9zbG90OwotICB1bnNpZ25lZCBpbnQgaW5kZXg7Ci0gIGhhc2h2YWxfdCBoYXNoMjsKKyAgaGFzaHZhbF90IGluZGV4LCBoYXNoMjsKICAgc2l6ZV90IHNpemU7CiAgIFBUUiBlbnRyeTsKIAotICBpZiAoaW5zZXJ0ID09IElOU0VSVCAmJiBodGFiLT5zaXplICogMyA8PSBodGFiLT5uX2VsZW1lbnRzICogNAotICAgICAgJiYgaHRhYl9leHBhbmQgKGh0YWIpID09IDApCi0gICAgcmV0dXJuIE5VTEw7CisgIHNpemUgPSBodGFiX3NpemUgKGh0YWIpOworICBpZiAoaW5zZXJ0ID09IElOU0VSVCAmJiBzaXplICogMyA8PSBodGFiLT5uX2VsZW1lbnRzICogNCkKKyAgICB7CisgICAgICBpZiAoaHRhYl9leHBhbmQgKGh0YWIpID09IDApCisJcmV0dXJuIE5VTEw7CisgICAgICBzaXplID0gaHRhYl9zaXplIChodGFiKTsKKyAgICB9CiAKLSAgc2l6ZSA9IGh0YWItPnNpemU7Ci0gIGluZGV4ID0gaGFzaCAlIHNpemU7CisgIGluZGV4ID0gaHRhYl9tb2QgKGhhc2gsIGh0YWIpOwogCiAgIGh0YWItPnNlYXJjaGVzKys7CiAgIGZpcnN0X2RlbGV0ZWRfc2xvdCA9IE5VTEw7CkBAIC01MTEsNyArNTUxLDcgQEAKICAgZWxzZSBpZiAoKCpodGFiLT5lcV9mKSAoZW50cnksIGVsZW1lbnQpKQogICAgIHJldHVybiAmaHRhYi0+ZW50cmllc1tpbmRleF07CiAgICAgICAKLSAgaGFzaDIgPSAxICsgaGFzaCAlIChzaXplIC0gMik7CisgIGhhc2gyID0gaHRhYl9tb2RfbTIgKGhhc2gsIGh0YWIpOwogICBmb3IgKDs7KQogICAgIHsKICAgICAgIGh0YWItPmNvbGxpc2lvbnMrKzsKQEAgLTU5MCw3ICs2MzAsNyBAQAogICAgICBodGFiX3QgaHRhYjsKICAgICAgUFRSICpzbG90OwogewotICBpZiAoc2xvdCA8IGh0YWItPmVudHJpZXMgfHwgc2xvdCA+PSBodGFiLT5lbnRyaWVzICsgaHRhYi0+c2l6ZQorICBpZiAoc2xvdCA8IGh0YWItPmVudHJpZXMgfHwgc2xvdCA+PSBodGFiLT5lbnRyaWVzICsgaHRhYl9zaXplIChodGFiKQogICAgICAgfHwgKnNsb3QgPT0gRU1QVFlfRU5UUlkgfHwgKnNsb3QgPT0gREVMRVRFRF9FTlRSWSkKICAgICBhYm9ydCAoKTsKIApAQCAtNjE2LDcgKzY1Niw3IEBACiAgIFBUUiAqbGltaXQ7CiAKICAgc2xvdCA9IGh0YWItPmVudHJpZXM7Ci0gIGxpbWl0ID0gc2xvdCArIGh0YWItPnNpemU7CisgIGxpbWl0ID0gc2xvdCArIGh0YWJfc2l6ZSAoaHRhYik7CiAKICAgZG8KICAgICB7CkBAIC02MzgsMzAgKzY3OCwxMiBAQAogICAgICBodGFiX3RyYXYgY2FsbGJhY2s7CiAgICAgIFBUUiBpbmZvOwogewotICBpZiAoKGh0YWItPm5fZWxlbWVudHMgLSBodGFiLT5uX2RlbGV0ZWQpICogOCA8IGh0YWItPnNpemUpCisgIGlmIChodGFiX2VsZW1lbnRzIChodGFiKSAqIDggPCBodGFiX3NpemUgKGh0YWIpKQogICAgIGh0YWJfZXhwYW5kIChodGFiKTsKIAogICBodGFiX3RyYXZlcnNlX25vcmVzaXplIChodGFiLCBjYWxsYmFjaywgaW5mbyk7CiB9CiAKLS8qIFJldHVybiB0aGUgY3VycmVudCBzaXplIG9mIGdpdmVuIGhhc2ggdGFibGUuICovCi0KLXNpemVfdAotaHRhYl9zaXplIChodGFiKQotICAgICBodGFiX3QgaHRhYjsKLXsKLSAgcmV0dXJuIGh0YWItPnNpemU7Ci19Ci0KLS8qIFJldHVybiB0aGUgY3VycmVudCBudW1iZXIgb2YgZWxlbWVudHMgaW4gZ2l2ZW4gaGFzaCB0YWJsZS4gKi8KLQotc2l6ZV90Ci1odGFiX2VsZW1lbnRzIChodGFiKQotICAgICBodGFiX3QgaHRhYjsKLXsKLSAgcmV0dXJuIGh0YWItPm5fZWxlbWVudHMgLSBodGFiLT5uX2RlbGV0ZWQ7Ci19Ci0KIC8qIFJldHVybiB0aGUgZnJhY3Rpb24gb2YgZml4ZWQgY29sbGlzaW9ucyBkdXJpbmcgYWxsIHdvcmsgd2l0aCBnaXZlbgogICAgaGFzaCB0YWJsZS4gKi8KIApkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L3BleC1jb21tb24uaCBiL2xpYmliZXJ0eS9wZXgtY29tbW9uLmgKaW5kZXggZGEyZjcxZS4uZGYzYzBmNiAxMDA2NDQKLS0tIGEvbGliaWJlcnR5L3BleC1jb21tb24uaAorKysgYi9saWJpYmVydHkvcGV4LWNvbW1vbi5oCkBAIC0xLDYgKzEsNiBAQAogLyogVXRpbGl0aWVzIHRvIGV4ZWN1dGUgYSBwcm9ncmFtIGluIGEgc3VicHJvY2VzcyAocG9zc2libHkgbGlua2VkIGJ5IHBpcGVzCiAgICB3aXRoIG90aGVyIHN1YnByb2Nlc3NlcyksIGFuZCB3YWl0IGZvciBpdC4gIFNoYXJlZCBsb2dpYy4KLSAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMworICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0CiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGxpYmliZXJ0eSBsaWJyYXJ5LgpAQCAtMzMsNiArMzMsOSBAQAogLyogc3Rkb3V0IGZpbGUgbnVtYmVyLiAgKi8KICNkZWZpbmUgU1RET1VUX0ZJTEVfTk8gMQogCisvKiBzdGRlcnIgZmlsZSBudW1iZXIuICAqLworI2RlZmluZSBTVERFUlJfRklMRV9OTyAyCisKIC8qIHZhbHVlIG9mIGBwaXBlJzogcG9ydCBpbmRleCBmb3IgcmVhZGluZy4gICovCiAjZGVmaW5lIFJFQURfUE9SVCAwCiAKZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9wZXgtdW5peC5jIGIvbGliaWJlcnR5L3BleC11bml4LmMKaW5kZXggMTRmZTcxZS4uZGRiZWQ4ZiAxMDA2NDQKLS0tIGEvbGliaWJlcnR5L3BleC11bml4LmMKKysrIGIvbGliaWJlcnR5L3BleC11bml4LmMKQEAgLTEsNyArMSw3IEBACiAvKiBVdGlsaXRpZXMgdG8gZXhlY3V0ZSBhIHByb2dyYW0gaW4gYSBzdWJwcm9jZXNzIChwb3NzaWJseSBsaW5rZWQgYnkgcGlwZXMKICAgIHdpdGggb3RoZXIgc3VicHJvY2Vzc2VzKSwgYW5kIHdhaXQgZm9yIGl0LiAgR2VuZXJpYyBVbml4IHZlcnNpb24KICAgIChhbHNvIHVzZWQgZm9yIFVXSU4gYW5kIFZNUykuCi0gICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMKKyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNAogICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBsaWJpYmVydHkgbGlicmFyeS4KQEAgLTQ0LDI4ICs0NCw2NiBAQAogI2RlZmluZSB3YWl0cGlkKHBpZCwgc3RhdHVzLCBmbGFncykgd2FpdChzdGF0dXMpCiAjZW5kaWYKIAotZXh0ZXJuIGludCBleGVjdiAoKTsKLWV4dGVybiBpbnQgZXhlY3ZwICgpOworI2lmZGVmIHZmb3JrIC8qIEF1dG9jb25mIG1heSBkZWZpbmUgdGhpcyB0byBmb3JrIGZvciB1cy4gKi8KKyMgZGVmaW5lIFZGT1JLX1NUUklORyAiZm9yayIKKyNlbHNlCisjIGRlZmluZSBWRk9SS19TVFJJTkcgInZmb3JrIgorI2VuZGlmCisjaWZkZWYgSEFWRV9WRk9SS19ICisjaW5jbHVkZSA8dmZvcmsuaD4KKyNlbmRpZgorI2lmZGVmIFZNUworI2RlZmluZSB2Zm9yaygpIChkZWNjJCRhbGxvY192Zm9ya19ibG9ja3MoKSA+PSAwID8gXAorICAgICAgICAgICAgICAgbGliJGdldF9jdXJyZW50X2ludm9fY29udGV4dChkZWNjJCRnZXRfdmZvcmtfam1wYnVmKCkpIDogLTEpCisjZW5kaWYgLyogVk1TICovCisKKy8qIEV4ZWN1dGUgYSBwcm9ncmFtLCBwb3NzaWJseSBzZXR0aW5nIHVwIHBpcGVzIHRvIHByb2dyYW1zIGV4ZWN1dGVkCisgICB2aWEgb3RoZXIgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbi4KKworICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiB1c2VzIHZmb3JrLiAgSW4gZ2VuZXJhbCB2Zm9yayBpcworICAgc2ltaWxhciB0byBzZXRqbXAvbG9uZ21wLCBpbiB0aGF0IGFueSB2YXJpYWJsZSB3aGljaCBpcyBtb2RpZmllZCBieQorICAgdGhlIGNoaWxkIHByb2Nlc3MgaGFzIGFuIGluZGV0ZXJtaW5hdGUgdmFsdWUgaW4gdGhlIHBhcmVudCBwcm9jZXNzLgorICAgV2UgZm9sbG93IGEgc2FmZSBhcHByb2FjaCBoZXJlIGJ5IG5vdCBtb2RpZnlpbmcgYW55IHZhcmlhYmxlcyBhdAorICAgYWxsIGluIHRoZSBjaGlsZCBwcm9jZXNzICh3aXRoIHRoZSBwb3NzaWJsZSBleGNlcHRpb24gb2YgdmFyaWFibGVzCisgICBtb2RpZmllZCBieSB4c3RyZXJyb3IgaWYgZXhlYyBmYWlscywgYnV0IHRoaXMgaXMgdW5saWtlbHkgdG8gYmUKKyAgIGRldGVjdGFibGUpLgorCisgICBXZSB3b3JrIGEgbGl0dGxlIGJpdCBoYXJkZXIgdG8gYXZvaWQgZ2NjIHdhcm5pbmdzLiAgZ2NjIHdpbGwgd2FybgorICAgYWJvdXQgYW55IGF1dG9tYXRpYyB2YXJpYWJsZSB3aGljaCBpcyBsaXZlIGF0IHRoZSB0aW1lIG9mIHRoZQorICAgdmZvcmssIHdoaWNoIGlzIG5vbi12b2xhdGlsZSwgYW5kIHdoaWNoIGlzIGVpdGhlciBzZXQgbW9yZSB0aGFuCisgICBvbmNlIG9yIGlzIGFuIGFyZ3VtZW50IHRvIHRoZSBmdW5jdGlvbi4gIFRoaXMgd2FybmluZyBpc24ndCBxdWl0ZQorICAgcmlnaHQsIHNpbmNlIHdoYXQgd2UgcmVhbGx5IGNhcmUgYWJvdXQgaXMgd2hldGhlciB0aGUgdmFyaWFibGUgaXMKKyAgIGxpdmUgYXQgdGhlIHRpbWUgb2YgdGhlIHZmb3JrIGFuZCBzZXQgYWZ0ZXJ3YXJkIGJ5IHRoZSBjaGlsZAorICAgcHJvY2VzcywgYnV0IGdjYyBvbmx5IGNoZWNrcyB3aGV0aGVyIHRoZSB2YXJpYWJsZSBpcyBzZXQgbW9yZSB0aGFuCisgICBvbmNlLiAgVG8gYXZvaWQgdGhpcyB3YXJuaW5nLCB3ZSBlbnN1cmUgdGhhdCBhbnkgdmFyaWFibGUgd2hpY2ggaXMKKyAgIGxpdmUgYXQgdGhlIHRpbWUgb2YgdGhlIHZmb3JrIChpLmUuLCB1c2VkIGFmdGVyIHRoZSB2Zm9yaykgaXMgc2V0CisgICBleGFjdGx5IG9uY2UgYW5kIGlzIG5vdCBhbiBhcmd1bWVudCwgb3IgaXMgbWFya2VkIHZvbGF0aWxlLiAgKi8KIAogaW50Ci1wZXhlY3V0ZSAocHJvZ3JhbSwgYXJndiwgdGhpc19wbmFtZSwgdGVtcF9iYXNlLCBlcnJtc2dfZm10LCBlcnJtc2dfYXJnLCBmbGFncykKK3BleGVjdXRlIChwcm9ncmFtLCBhcmd2LCB0aGlzX3BuYW1lLCB0ZW1wX2Jhc2UsIGVycm1zZ19mbXQsIGVycm1zZ19hcmcsCisJICBmbGFnc2FyZykKICAgICAgY29uc3QgY2hhciAqcHJvZ3JhbTsKICAgICAgY2hhciAqIGNvbnN0ICphcmd2OwogICAgICBjb25zdCBjaGFyICp0aGlzX3BuYW1lOwogICAgICBjb25zdCBjaGFyICp0ZW1wX2Jhc2UgQVRUUklCVVRFX1VOVVNFRDsKICAgICAgY2hhciAqKmVycm1zZ19mbXQsICoqZXJybXNnX2FyZzsKLSAgICAgaW50IGZsYWdzOworICAgICBpbnQgZmxhZ3Nhcmc7CiB7Ci0gIGludCAoKmZ1bmMpKCkgPSAoZmxhZ3MgJiBQRVhFQ1VURV9TRUFSQ0ggPyBleGVjdnAgOiBleGVjdik7CiAgIGludCBwaWQ7CiAgIGludCBwZGVzWzJdOworICBpbnQgb3V0OwogICBpbnQgaW5wdXRfZGVzYywgb3V0cHV0X2Rlc2M7Ci0gIGludCByZXRyaWVzLCBzbGVlcF9pbnRlcnZhbDsKKyAgaW50IGZsYWdzOworICAvKiBXZSBkZWNsYXJlIHRoZXNlIHRvIGJlIHZvbGF0aWxlIHRvIGF2b2lkIHdhcm5pbmdzIGZyb20gZ2NjIGFib3V0CisgICAgIHRoZW0gYmVpbmcgY2xvYmJlcmVkIGJ5IHZmb3JrLiAgKi8KKyAgdm9sYXRpbGUgaW50IHJldHJpZXMsIHNsZWVwX2ludGVydmFsOwogICAvKiBQaXBlIHdhaXRpbmcgZnJvbSBsYXN0IHByb2Nlc3MsIHRvIGJlIHVzZWQgYXMgaW5wdXQgZm9yIHRoZSBuZXh0IG9uZS4KICAgICAgVmFsdWUgaXMgU1RESU5fRklMRV9OTyBpZiBubyBwaXBlIGlzIHdhaXRpbmcKICAgICAgKGkuZS4gdGhlIG5leHQgY29tbWFuZCBpcyB0aGUgZmlyc3Qgb2YgYSBncm91cCkuICAqLwogICBzdGF0aWMgaW50IGxhc3RfcGlwZV9pbnB1dDsKIAorICBmbGFncyA9IGZsYWdzYXJnOworCiAgIC8qIElmIHRoaXMgaXMgdGhlIGZpcnN0IHByb2Nlc3MsIGluaXRpYWxpemUuICAqLwogICBpZiAoZmxhZ3MgJiBQRVhFQ1VURV9GSVJTVCkKICAgICBsYXN0X3BpcGVfaW5wdXQgPSBTVERJTl9GSUxFX05POwpAQCAtODIsMjIgKzEyMCwyNCBAQAogCSAgKmVycm1zZ19hcmcgPSBOVUxMOwogCSAgcmV0dXJuIC0xOwogCX0KLSAgICAgIG91dHB1dF9kZXNjID0gcGRlc1tXUklURV9QT1JUXTsKKyAgICAgIG91dCA9IHBkZXNbV1JJVEVfUE9SVF07CiAgICAgICBsYXN0X3BpcGVfaW5wdXQgPSBwZGVzW1JFQURfUE9SVF07CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAgLyogTGFzdCBwcm9jZXNzLiAgKi8KLSAgICAgIG91dHB1dF9kZXNjID0gU1RET1VUX0ZJTEVfTk87CisgICAgICBvdXQgPSBTVERPVVRfRklMRV9OTzsKICAgICAgIGxhc3RfcGlwZV9pbnB1dCA9IFNURElOX0ZJTEVfTk87CiAgICAgfQogCisgIG91dHB1dF9kZXNjID0gb3V0OworCiAgIC8qIEZvcmsgYSBzdWJwcm9jZXNzOyB3YWl0IGFuZCByZXRyeSBpZiBpdCBmYWlscy4gICovCiAgIHNsZWVwX2ludGVydmFsID0gMTsKICAgcGlkID0gLTE7CiAgIGZvciAocmV0cmllcyA9IDA7IHJldHJpZXMgPCA0OyByZXRyaWVzKyspCiAgICAgewotICAgICAgcGlkID0gZm9yayAoKTsKKyAgICAgIHBpZCA9IHZmb3JrICgpOwogICAgICAgaWYgKHBpZCA+PSAwKQogCWJyZWFrOwogICAgICAgc2xlZXAgKHNsZWVwX2ludGVydmFsKTsKQEAgLTEzMSwxMiArMTcxLDIxIEBACiAJY2xvc2UgKGxhc3RfcGlwZV9pbnB1dCk7CiAKICAgICAgIC8qIEV4ZWMgdGhlIHByb2dyYW0uICAqLwotICAgICAgKCpmdW5jKSAocHJvZ3JhbSwgYXJndik7CisgICAgICBpZiAoZmxhZ3MgJiBQRVhFQ1VURV9TRUFSQ0gpCisJZXhlY3ZwIChwcm9ncmFtLCBhcmd2KTsKKyAgICAgIGVsc2UKKwlleGVjdiAocHJvZ3JhbSwgYXJndik7CiAKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgIiVzOiAiLCB0aGlzX3BuYW1lKTsKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgaW5zdGFsbF9lcnJvcl9tc2csIHByb2dyYW0pOwotICAgICAgZnByaW50ZiAoc3RkZXJyLCAiOiAlc1xuIiwgeHN0cmVycm9yIChlcnJubykpOwotICAgICAgZXhpdCAoLTEpOworICAgICAgLyogV2UgZG9uJ3Qgd2FudCB0byBjYWxsIGZwcmludGYgYWZ0ZXIgdmZvcmsuICAqLworI2RlZmluZSB3cml0ZWVycihzKSB3cml0ZSAoU1RERVJSX0ZJTEVfTk8sIHMsIHN0cmxlbiAocykpCisgICAgICB3cml0ZWVyciAodGhpc19wbmFtZSk7CisgICAgICB3cml0ZWVyciAoIjogIik7CisgICAgICB3cml0ZWVyciAoImluc3RhbGxhdGlvbiBwcm9ibGVtLCBjYW5ub3QgZXhlYyAnIik7CisgICAgICB3cml0ZWVyciAocHJvZ3JhbSk7CisgICAgICB3cml0ZWVyciAoIic6ICIpOworICAgICAgd3JpdGVlcnIgKHhzdHJlcnJvciAoZXJybm8pKTsKKyAgICAgIHdyaXRlZXJyICgiXG4iKTsKKyAgICAgIF9leGl0ICgtMSk7CiAgICAgICAvKiBOT1RSRUFDSEVEICovCiAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZCBiL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKaW5kZXggMjVlODgzMC4uOWEzZjBiOSAxMDA2NDQKLS0tIGEvbGliaWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZAorKysgYi9saWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkCkBAIC0zNTkxLDEzICszNTkxLDEzIEBACiAjIFRoaXMgaXMgZnJvbSBnY2MgUFIgODg2MQogLS1mb3JtYXQ9Z251LXYzIC0tbm8tcGFyYW1zCiBfWjFmSUxpMUVMYzEyMEVFdjFBSVhwbFRfY3ZpTGQ4MTAwMDAwMDAwMDAwMDAwMDA3MDNEQUQ3QTM3MEM1RUVFCi12b2lkIGY8MSwgMTIwPihBPCgxKSArICgoKGludCkoKGRvdWJsZSk4MTAwMDAwMDAwMDAwMDAwMDA3MDNEQUQ3QTM3MEM1KSkpPikKLWY8MSwgMTIwPgordm9pZCBmPDEsIChjaGFyKTEyMD4oQTwoMSkgKyAoKGludCkoKGRvdWJsZSlbODEwMDAwMDAwMDAwMDAwMDAwNzAzREFEN0EzNzBDNV0pKT4pCitmPDEsIChjaGFyKTEyMD4KICMKICMgVGhpcyBpcyBhbHNvIGZyb20gZ2NjIFBSIDg4NjEKIC0tZm9ybWF0PWdudS12MyAtLW5vLXBhcmFtcwogX1oxZklMaTFFRXYxQUlYcGxUX2N2aW5nTGYzZjgwMDAwMEVFRQotdm9pZCBmPDE+KEE8KDEpICsgKCgoaW50KSgtKChmbG9hdCkzZjgwMDAwMCkpKSk+KQordm9pZCBmPDE+KEE8KDEpICsgKChpbnQpKC0oKGZsb2F0KVszZjgwMDAwMF0pKSk+KQogZjwxPgogIwogIyBUaGlzIGlzIGZyb20gYSBsaWJzdGRjKysgZGVidWcgbW9kZSBwYXRjaC4KQEAgLTM2MzUsNyArMzYzNSw3IEBACiAjIE1vcmUgaGFpcnkgcXVhbGlmaWVyIGhhbmRsaW5nLgogLS1mb3JtYXQ9Z251LXYzIC0tbm8tcGFyYW1zCiBfWjloYWlyeWZ1bmNNMVlLRlBWUEZyUEEyX1BNMVhLRktQQTNfaWxFUGNFaUUKLWhhaXJ5ZnVuYyhpbnQgKCogY29uc3QgKFg6OioqICgqIHJlc3RyaWN0ICgqIHZvbGF0aWxlKihZOjoqKShpbnQpIGNvbnN0KShjaGFyKikpIFsyXSkobG9uZykgY29uc3QpIFszXSkKK2hhaXJ5ZnVuYyhpbnQgKCogY29uc3QgKFg6OioqICgqIHJlc3RyaWN0ICgqIHZvbGF0aWxlKiAoWTo6KikoaW50KSBjb25zdCkoY2hhciopKSBbMl0pKGxvbmcpIGNvbnN0KSBbM10pCiBoYWlyeWZ1bmMKICMKICMgQ2hlY2sgdGhhdCBuZWdhdGl2ZSBudW1iZXJzIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4KQEAgLTM2ODEsNiArMzY4MSwyNCBAQAogYm9vc3Q6OnNwaXJpdDo6bWF0Y2g8cmNzX2RlbHRhdGV4dD46Om9wZXJhdG9yIHZvaWQgKGJvb3N0OjpzcGlyaXQ6OmltcGw6OmR1bW15OjoqKSgpKCkgY29uc3QKIGJvb3N0OjpzcGlyaXQ6Om1hdGNoPHJjc19kZWx0YXRleHQ+OjpvcGVyYXRvciB2b2lkIChib29zdDo6c3Bpcml0OjppbXBsOjpkdW1teTo6KikoKQogIworIyBNdWx0aS1kaW1lbnNpb25hbCBhcnJheXMgd2l0aCBxdWFsaWZpZXJzIG9uIHRoZSBpbm5lciBkaW1lbnNpb25zLgorLS1mb3JtYXQ9Z251LXYzIC0tbm8tcGFyYW1zCitfWjNmb29JQTZfS2lFdkE5X0tUX3JWUHJTNF8KK3ZvaWQgZm9vPGludCBjb25zdCBbNl0+KGludCBjb25zdCBbOV1bNl0sIGludCByZXN0cmljdCBjb25zdCAoKiB2b2xhdGlsZSByZXN0cmljdCkgWzldWzZdKQorZm9vPGludCBjb25zdCBbNl0+CisjCisjIEZyb20gUFIgbGlic3RkYysrLzEyNzM2CistLWZvcm1hdD1nbnUtdjMgLS1uby1wYXJhbXMKK19aM2Zvb0lBM19pRXZSS1RfCit2b2lkIGZvbzxpbnQgWzNdPihpbnQgY29uc3QgKCYpIFszXSkKK2ZvbzxpbnQgWzNdPgorIworIyBSZWxhdGVkIHRvIFBSIGxpYnN0ZGMrKy8xMjczNgorLS1mb3JtYXQ9Z251LXYzIC0tbm8tcGFyYW1zCitfWjNmb29JUEEzX2lFdlJLVF8KK3ZvaWQgZm9vPGludCAoKikgWzNdPihpbnQgKCogY29uc3QmKSBbM10pCitmb288aW50ICgqKSBbM10+CisjCiAjIFRlc3QgR05VIFYzIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGlkZW50aWZpY2F0aW9uLgogIyAwIG1lYW5zIGl0IGlzIG5vdCBhIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IuCiAjIE90aGVyIGludGVnZXJzIGNvcnJlc3BvbmQgdG8gZW51bSBnbnVfdjNfe2MsZH10b3Jfa2luZHMgaW4gZGVtYW5nbGUuaC4KZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS90ZXN0c3VpdGUvdGVzdC1kZW1hbmdsZS5jIGIvbGliaWJlcnR5L3Rlc3RzdWl0ZS90ZXN0LWRlbWFuZ2xlLmMKaW5kZXggNmUwMGQxNC4uNGQ1MTVmYSAxMDA2NDQKLS0tIGEvbGliaWJlcnR5L3Rlc3RzdWl0ZS90ZXN0LWRlbWFuZ2xlLmMKKysrIGIvbGliaWJlcnR5L3Rlc3RzdWl0ZS90ZXN0LWRlbWFuZ2xlLmMKQEAgLTI2LDYgKzI2LDEyIEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlICJsaWJpYmVydHkuaCIKICNpbmNsdWRlICJkZW1hbmdsZS5oIgorI2lmZGVmIEhBVkVfU1RSSU5HX0gKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1RETElCX0gKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKIAogc3RydWN0IGxpbmUKIHsKQEAgLTExOSw3ICsxMjUsNyBAQAogICAgICBpbnQgYXJnYzsKICAgICAgY2hhciAqKmFyZ3Y7CiB7Ci0gIGVudW0gZGVtYW5nbGluZ19zdHlsZXMgc3R5bGU7CisgIGVudW0gZGVtYW5nbGluZ19zdHlsZXMgc3R5bGUgPSBhdXRvX2RlbWFuZ2xpbmc7CiAgIGludCBub19wYXJhbXM7CiAgIGludCBpc192M19jdG9yOwogICBpbnQgaXNfdjNfZHRvcjsKZGlmZiAtLWdpdCBhL21raW5zdGFsbGRpcnMgYi9ta2luc3RhbGxkaXJzCmluZGV4IGQyZDVmMjEuLjZmYmU1ZTEgMTAwNzU1Ci0tLSBhL21raW5zdGFsbGRpcnMKKysrIGIvbWtpbnN0YWxsZGlycwpAQCAtMSwyMCArMSwzMiBAQAogIyEgL2Jpbi9zaAogIyBta2luc3RhbGxkaXJzIC0tLSBtYWtlIGRpcmVjdG9yeSBoaWVyYXJjaHkKLSMgQXV0aG9yOiBOb2FoIEZyaWVkbWFuIDxmcmllZG1hbkBwcmVwLmFpLm1pdC5lZHU+CisKK3NjcmlwdHZlcnNpb249MjAwNC0wMi0xNS4yMAorCisjIE9yaWdpbmFsIGF1dGhvcjogTm9haCBGcmllZG1hbiA8ZnJpZWRtYW5AcHJlcC5haS5taXQuZWR1PgogIyBDcmVhdGVkOiAxOTkzLTA1LTE2Ci0jIFB1YmxpYyBkb21haW4KKyMgUHVibGljIGRvbWFpbi4KKyMKKyMgVGhpcyBmaWxlIGlzIG1haW50YWluZWQgaW4gQXV0b21ha2UsIHBsZWFzZSByZXBvcnQKKyMgYnVncyB0byA8YnVnLWF1dG9tYWtlQGdudS5vcmc+IG9yIHNlbmQgcGF0Y2hlcyB0bworIyA8YXV0b21ha2UtcGF0Y2hlc0BnbnUub3JnPi4KIAogZXJyc3RhdHVzPTAKIGRpcm1vZGU9IiIKIAogdXNhZ2U9IlwKLVVzYWdlOiBta2luc3RhbGxkaXJzIFstaF0gWy0taGVscF0gWy1tIG1vZGVdIGRpciAuLi4iCitVc2FnZTogbWtpbnN0YWxsZGlycyBbLWhdIFstLWhlbHBdIFstLXZlcnNpb25dIFstbSBNT0RFXSBESVIgLi4uCisKK0NyZWF0ZSBlYWNoIGRpcmVjdG9yeSBESVIgKHdpdGggbW9kZSBNT0RFLCBpZiBzcGVjaWZpZWQpLCBpbmNsdWRpbmcgYWxsCitsZWFkaW5nIGZpbGUgbmFtZSBjb21wb25lbnRzLgorCitSZXBvcnQgYnVncyB0byA8YnVnLWF1dG9tYWtlQGdudS5vcmc+LiIKIAogIyBwcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKIHdoaWxlIHRlc3QgJCMgLWd0IDAgOyBkbwogICBjYXNlICQxIGluCiAgICAgLWggfCAtLWhlbHAgfCAtLWgqKSAgICAgICAgICMgLWggZm9yIGhlbHAKLSAgICAgIGVjaG8gIiR1c2FnZSIgMT4mMgorICAgICAgZWNobyAiJHVzYWdlIgogICAgICAgZXhpdCAwCiAgICAgICA7OwogICAgIC1tKSAgICAgICAgICAgICAgICAgICAgICAgICAjIC1tIFBFUk0gYXJnCkBAIC0yMyw2ICszNSwxMCBAQAogICAgICAgZGlybW9kZT0kMQogICAgICAgc2hpZnQKICAgICAgIDs7CisgICAgLS12ZXJzaW9uKQorICAgICAgZWNobyAiJDAgJHNjcmlwdHZlcnNpb24iCisgICAgICBleGl0IDAKKyAgICAgIDs7CiAgICAgLS0pICAgICAgICAgICAgICAgICAgICAgICAgICMgc3RvcCBvcHRpb24gcHJvY2Vzc2luZwogICAgICAgc2hpZnQKICAgICAgIGJyZWFrCkBAIC01MCwxNyArNjYsMzcgQEAKICAgMCkgZXhpdCAwIDs7CiBlc2FjCiAKKyMgU29sYXJpcyA4J3MgbWtkaXIgLXAgaXNuJ3QgdGhyZWFkLXNhZmUuICBJZiB5b3UgbWtkaXIgLXAgYS9iIGFuZAorIyBta2RpciAtcCBhL2MgYXQgdGhlIHNhbWUgdGltZSwgYm90aCB3aWxsIGRldGVjdCB0aGF0IGEgaXMgbWlzc2luZywKKyMgb25lIHdpbGwgY3JlYXRlIGEsIHRoZW4gdGhlIG90aGVyIHdpbGwgdHJ5IHRvIGNyZWF0ZSBhIGFuZCBkaWUgd2l0aAorIyBhICJGaWxlIGV4aXN0cyIgZXJyb3IuICBUaGlzIGlzIGEgcHJvYmxlbSB3aGVuIGNhbGxpbmcgbWtpbnN0YWxsZGlycworIyBmcm9tIGEgcGFyYWxsZWwgbWFrZS4gIFdlIHVzZSAtLXZlcnNpb24gaW4gdGhlIHByb2JlIHRvIHJlc3RyaWN0CisjIG91cnNlbHZlcyB0byBHTlUgbWtkaXIsIHdoaWNoIGlzIHRocmVhZC1zYWZlLgogY2FzZSAkZGlybW9kZSBpbgogICAnJykKLSAgICBpZiBta2RpciAtcCAtLSAuIDI+L2Rldi9udWxsOyB0aGVuCisgICAgaWYgbWtkaXIgLXAgLS12ZXJzaW9uIC4gPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgISAtZCAuLy0tdmVyc2lvbjsgdGhlbgogICAgICAgZWNobyAibWtkaXIgLXAgLS0gJCoiCiAgICAgICBleGVjIG1rZGlyIC1wIC0tICIkQCIKKyAgICBlbHNlCisgICAgICAjIE9uIE5leHRTdGVwIGFuZCBPcGVuU3RlcCwgdGhlIGBta2RpcicgY29tbWFuZCBkb2VzIG5vdAorICAgICAgIyByZWNvZ25pemUgYW55IG9wdGlvbi4gIEl0IHdpbGwgaW50ZXJwcmV0IGFsbCBvcHRpb25zIGFzCisgICAgICAjIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZSwgYW5kIHRoZW4gYWJvcnQgYmVjYXVzZSBgLicgYWxyZWFkeQorICAgICAgIyBleGlzdHMuCisgICAgICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcAorICAgICAgdGVzdCAtZCAuLy0tdmVyc2lvbiAmJiBybWRpciAuLy0tdmVyc2lvbgogICAgIGZpCiAgICAgOzsKICAgKikKLSAgICBpZiBta2RpciAtbSAiJGRpcm1vZGUiIC1wIC0tIC4gMj4vZGV2L251bGw7IHRoZW4KKyAgICBpZiBta2RpciAtbSAiJGRpcm1vZGUiIC1wIC0tdmVyc2lvbiAuID4vZGV2L251bGwgMj4mMSAmJgorICAgICAgIHRlc3QgISAtZCAuLy0tdmVyc2lvbjsgdGhlbgogICAgICAgZWNobyAibWtkaXIgLW0gJGRpcm1vZGUgLXAgLS0gJCoiCiAgICAgICBleGVjIG1rZGlyIC1tICIkZGlybW9kZSIgLXAgLS0gIiRAIgorICAgIGVsc2UKKyAgICAgICMgQ2xlYW4gdXAgYWZ0ZXIgTmV4dFN0ZXAgYW5kIE9wZW5TdGVwIG1rZGlyLgorICAgICAgZm9yIGQgaW4gLi8tbSAuLy1wIC4vLS12ZXJzaW9uICIuLyRkaXJtb2RlIjsKKyAgICAgIGRvCisgICAgICAgIHRlc3QgLWQgJGQgJiYgcm1kaXIgJGQKKyAgICAgIGRvbmUKICAgICBmaQogICAgIDs7CiBlc2FjCkBAIC04NCwxNyArMTIwLDE3IEBACiAgICAgICBta2RpciAiJHBhdGhjb21wIiB8fCBsYXN0ZXJyPSQ/CiAKICAgICAgIGlmIHRlc3QgISAtZCAiJHBhdGhjb21wIjsgdGhlbgotICAJZXJyc3RhdHVzPSRsYXN0ZXJyCisJZXJyc3RhdHVzPSRsYXN0ZXJyCiAgICAgICBlbHNlCi0gIAlpZiB0ZXN0ICEgLXogIiRkaXJtb2RlIjsgdGhlbgorCWlmIHRlc3QgISAteiAiJGRpcm1vZGUiOyB0aGVuCiAJICBlY2hvICJjaG1vZCAkZGlybW9kZSAkcGF0aGNvbXAiCi0gICAgCSAgbGFzdGVycj0iIgotICAJICBjaG1vZCAiJGRpcm1vZGUiICIkcGF0aGNvbXAiIHx8IGxhc3RlcnI9JD8KKwkgIGxhc3RlcnI9IiIKKwkgIGNobW9kICIkZGlybW9kZSIgIiRwYXRoY29tcCIgfHwgbGFzdGVycj0kPwogCi0gIAkgIGlmIHRlc3QgISAteiAiJGxhc3RlcnIiOyB0aGVuCi0gIAkgICAgZXJyc3RhdHVzPSRsYXN0ZXJyCi0gIAkgIGZpCi0gIAlmaQorCSAgaWYgdGVzdCAhIC16ICIkbGFzdGVyciI7IHRoZW4KKwkgICAgZXJyc3RhdHVzPSRsYXN0ZXJyCisJICBmaQorCWZpCiAgICAgICBmaQogICAgIGZpCiAKQEAgLTEwNyw1ICsxNDMsOCBAQAogIyBMb2NhbCBWYXJpYWJsZXM6CiAjIG1vZGU6IHNoZWxsLXNjcmlwdAogIyBzaC1pbmRlbnRhdGlvbjogMgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCisjIHRpbWUtc3RhbXAtZW5kOiAiJCIKICMgRW5kOgotIyBta2luc3RhbGxkaXJzIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvbXB3LVJFQURNRSBiL21wdy1SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NzE0MGIuLjAwMDAwMDAKLS0tIGEvbXB3LVJFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDM3NiArMCwwIEBACi1UaGlzIGlzIGJhc2ljIGluZm9ybWF0aW9uIGFib3V0IHRoZSBNYWNpbnRvc2godG0pIE1QVyh0bSkgcG9ydCBvZiB0aGUKLUdOVSB0b29scy4gIFRoZSBpbmZvcm1hdGlvbiBiZWxvdyBhcHBsaWVzIHRvIGJvdGggbmF0aXZlIGFuZCBjcm9zcwotY29tcGlsZXJzLgotCi0oUGxlYXNlIG5vdGUgdGhhdCB0aGVyZSBhcmUgdHdvIHZlcnNpb25zIG9mIHRoaXMgZmlsZTsgIm1wdy1SRUFETUUiCi1pcyB0aGUgc291cmNlIGZvcm0sIGFuZCAiUmVhZCBNZSBmb3IgTVBXIiBpcyB0aGUgZGlzdHJpYnV0aW9uIGZvcm0uCi0iUmVhZCBNZSBmb3IgTVBXIiBoYXMgOC1iaXQgY2hhcnMgc3VjaCBhcyBcT3B0aW9uLWQgZW1iZWRkZWQgaW4gaXQuKQotCi1JTlNUQUxMSU5HIEdOVSBUT09MUwotCi0qIFN5c3RlbSBSZXF1aXJlbWVudHMKLQotVG8gdXNlIHRoZXNlIHRvb2xzLCB5b3Ugd2lsbCBuZWVkIGEgTWFjIHdpdGggYSA2ODAyMCBvciBiZXR0ZXIgb3IgZWxzZQotYW55IFBvd2VyTWFjLCBTeXN0ZW0gNy4xIG9yIGxhdGVyLCBhbmQgTVBXIDMuMyBvciAzLjQuICBZb3Ugd2lsbCAqbm90KgotbmVlZCBhbnkgb3RoZXIgTVBXIGNvbXBpbGVyIHVubGVzcyB5b3Ugd2FudCB0byByZWJ1aWxkIGZyb20gc291cmNlcywKLW5vciBldmVuIGFueSBpbmNsdWRlIGZpbGVzLCB1bmxlc3MgeW91IGFyZSBidWlsZGluZyBhY3R1YWwgTWFjCi1hcHBsaWNhdGlvbnMuICBGb3IgUG93ZXJNYWMgbmF0aXZlIHlvdSB3aWxsIG5lZWQgUFBDTGluaywgaG93ZXZlcjsKLWFsc28gdGhlIGV4ZWN1dGFibGVzIGFyZSBQb3dlclBDLW9ubHkuCi0KLSogQXV0b21hdGVkIEluc3RhbGxhdGlvbgotCi1UaGUgc2ltcGxlc3Qgd2F5IHRvIGluc3RhbGwgR05VIHRvb2xzIGlzIHRvIHJ1biB0aGUgSW5zdGFsbCBzY3JpcHQuCi1UaGUgc2NyaXB0IHdpbGwgY29weSB0aGluZ3MgdG8gd2hlcmUgeW91IHdhbnQgdG8ga2VlcCB0aGVtLCB3aWxsIGJ1aWxkCi1hIFVzZXJTdGFydHVwIGZpbGUgd2l0aCBzZXR0aW5ncyBjb3JyZXNwb25kaW5nIHRvIHdoZXJlIHRoaW5ncyB3ZXJlCi1jb3BpZWQsIGFuZCBvZmZlciB0byBwdXQgdGhhdCBVc2VyU3RhcnR1cCBmaWxlIGluIHlvdXIgTVBXIGZvbGRlci4KLQotVGhlIEluc3RhbGwgc2NyaXB0IGRvZXMgbm90IGFsdGVyIGFueXRoaW5nIGluIHRoZSBTeXN0ZW0gRm9sZGVyLCBhbmQKLWl0IGRvZXMgbm90IHRha2UgYW55IGFjdGlvbiB3aXRob3V0IGNvbmZpcm1hdGlvbi4KLQotVGhlIEluc3RhbGwgc2NyaXB0IHdpbGwgYmUgYXQgdGhlIHRvcCBsZXZlbCBvZiB0aGUgYmluYXJ5Ci1kaXN0cmlidXRpb24sIG9yIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIG9iamVjdCBkaXJlY3RvcnkgaWYKLXJlYnVpbGRpbmcgZnJvbSBzb3VyY2UuICAoVGhlIHNvdXJjZXMgaW5jbHVkZSBhIGZpbGUgY2FsbGVkCi0ibXB3LWluc3RhbGwiIGF0IHRoZSB0b3AgbGV2ZWwsIGJ1dCBpdCBpcyB0aGUgc291cmNlIHRvIHRoZSBJbnN0YWxsCi1zY3JpcHQgYW5kIGNhbm5vdCBiZSBydW4gZGlyZWN0bHkuKQotCi0qIE1hbnVhbCBJbnN0YWxsYXRpb24KLQotSWYgeW91IGRvbid0IHdhbnQgdG8gcnVuIHRoZSBJbnN0YWxsIHNjcmlwdCwgeW91IGNhbiBkbyBpbnN0YWxsYXRpb24KLW1hbnVhbGx5OyB0aGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBzdGVwcyBpbnZvbHZlZC4KLQotVGhlIEdOVSB0b29scyBjYW4gZ28gaW4gYW55IGRpcmVjdG9yeSB0aGF0IGlzIGluIHlvdXIge0NvbW1hbmRzfSBsaXN0LgotV2UgZ2VuZXJhbGx5IHB1dCBhbGwgdGhlIHRvb2xzIHNvbWV3aGVyZSBsaWtlIHtCb290fUN5Z251czpsYXRlc3Q6YmluLAotYW5kIHRoZW4gYWRkIHRvIGEgVXNlclN0YXJ0dXAgZmlsZToKLQotCXNldCBDb21tYW5kcyAie0Jvb3R9Q3lnbnVzOmxhdGVzdDpiaW46LHtDb21tYW5kc30iCi0KLUhvd2V2ZXIsIHRoZSBjcHAgYW5kIGNjMSBwcm9ncmFtcyBvZiBHQ0MgYXJlIG5vdCBub3JtYWxseSBzdG9yZWQgaGVyZS4KLUluc3RlYWQsIHRoZXkgd2lsbCBiZSBpbiBhICJsaWIiIGRpcmVjdG9yeSB0aGF0IGlzIGFsb25nc2lkZSAiYmluIiwKLWFuZCBvcmdhbml6ZWQgYnkgdGFyZ2V0IGFuZCB2ZXJzaW9uIHVuZGVybmVhdGgsIHdpdGggbmFtZXMgbGlrZQotCi0JOmxpYjpnY2MtbGliOjx0YXJnZXQ+OmN5Z251cy08dmVyc2lvbj46Ci0KLUlmIHlvdSBidWlsZCBhbmQgaW5zdGFsbCBldmVyeXRoaW5nIHlvdXJzZWxmIGFjY29yZGluZyB0byB0aGUgYnVpbGQKLWluc3RydWN0aW9ucyBiZWxvdywgdGhlbiB5b3Ugd2lsbCBub3QgaGF2ZSBhbnkgcHJvYmxlbXMuICBIb3dldmVyLCB5b3UKLW1heSBkaXNjb3ZlciB0aGF0IEdDQyBzZWVtcyB1bmFibGUgdG8gZmluZCB0aGUgcmlnaHQgY3BwIGFuZCBjYzE7Ci11c3VhbGx5IHRoaXMgd2lsbCBiZSBiZWNhdXNlIGRpcmVjdG9yeSBuYW1lcyBoYXZlIGNoYW5nZWQuICAoRXZlbgotcmVuYW1pbmcgeW91ciBoYXJkIGRpc2sgd2lsbCBtYWtlIHRoaXMgaGFwcGVuLikgIEluIHN1Y2ggY2FzZXMsIHlvdQotaGF2ZSBzZXZlcmFsIGNob2ljZXMuICBPbmUgaXMganVzdCB0byBhZGQgdGhpcyBkaXJlY3RvcnkgdG8KLXtDb21tYW5kc30sIGJ1dCB0aGVuIHlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIGdldCBhbnkgb3RoZXIgY3BwIG9yIGNjMSwKLXN1Y2ggYXMgdGhvc2UgdXNlZCBieSBhIGRpZmZlcmVudCB0YXJnZXQgb3IgdmVyc2lvbi4gIEFub3RoZXIgd2F5IGlzCi10byByZW5hbWUgeW91ciBkaXNrIGFuZCBkaXJlY3RvcmllcyB0byBtYXRjaCB0aGUgcHJlZml4IHVzZWQgd2hlbiB0aGUKLXRvb2xzIHdlcmUgY29tcGlsZWQuICBGaW5hbGx5LCB5b3UgY2FuIHNldCB0aGUgdmFyaWFibGUKLUdDQ19FWEVDX1BSRUZJWCB0byBwb2ludCB0byB0aGUgbGlicmFyeSBkaXJlY3Rvcnk6Ci0KLQlzZXQgR0NDX0VYRUNfUFJFRklYIE15RGlzazpTdHVmZjpsaWI6Z2NjLWxpYjoKLQlleHBvcnQgR0NDX0VYRUNfUFJFRklYCi0KLVlvdSBtYXkgYWxzbyB3YW50IHRvIGVkaXQgTVBXJ3MgSEVYQSAxMjggcmVzb3VyY2UuICBXaGVuIEdDQyBpcyBidWlsdAotdXNpbmcgYSBuYXRpdmUgR0NDLCBpdCBpcyBjb21waWxlZCB0byB1c2UgYSBzcGVjaWFsIHN0YWNrIGFsbG9jYXRvcgotZnVuY3Rpb24gYWxsb2NhKCkuICBXaGlsZSB0aGlzIGlzIHZlcnkgZWZmaWNpZW50LCBpdCBtZWFucyB0aGF0IEdDQwotd2lsbCBuZWVkIGNvbnNpZGVyYWJsZSBzdGFjayBzcGFjZSB0byBydW4sIGVzcGVjaWFsbHkgd2hlbiBjb21waWxpbmcKLWxhcmdlIHByb2dyYW1zIHdpdGggb3B0aW1pemF0aW9uIHR1cm5lZCBvbi4gIFlvdSBnaXZlIE1QVyBtb3JlIHN0YWNrCi1ieSBlZGl0aW5nIHRoZSBIRVhBIDEyOCByZXNvdXJjZSBvZiB0aGUgTVBXIFNoZWxsLiAgQSB2YWx1ZSBvZiAiMDAwOAotMDAwMCIgZ2l2ZXMgNTEySyBvZiBzdGFjayBzaXplLCB3aGljaCBpcyB1c3VhbGx5IHN1ZmZpY2llbnQuCi0KLVVTSU5HIEdOVSBUT09MUwotCi0qIFVzaW5nIE5hdGl2ZSBQb3dlck1hYyBHQ0MKLQotVXNpbmcgYSBuYXRpdmUgUG93ZXJNYWMgR0NDIHRvIHByb2R1Y2UgTVBXIHRvb2xzIG9yIE1hY09TIGFwcGxpY2F0aW9ucwotaXMgbW9yZSBjb21wbGljYXRlZCB0aGFuIGp1c3QgImdDIGZvby5jIiwgYWx0aG91Z2ggbm8gbW9yZSBjb21wbGljYXRlZAotdGhhbiB3aXRoIG90aGVyIE1hYyBjb21waWxlcnMuCi0KLVRvIGJ1aWxkIGEgbmF0aXZlIFBvd2VyTWFjIE1QVyB0b29sLCB1c2UgdGhpcyBzZXF1ZW5jZSwgd2hlcmUgaGVsbG8uYwotaXMgdGhlIHVzdWFsICJoZWxsbyB3b3JsZCIgcHJvZ3JhbSwgYW5kIGdlbmVyaWNjZnJnLnIgaXMgdGhlIFJleiBmaWxlCi13aXRoIHRoZSBjb2RlIGZyYWdtZW50IHJlc291cmNlOgotCi1nQyAtSXtDSW5jbHVkZXN9IC1mbm8tYnVpbHRpbiAtRHBhc2NhbD0gLWMgLWcgaGVsbG8uYwotUFBDTGluayBoZWxsby5vIC1vIGhlbGxvIFxPcHRpb24tZAotCSJ7UFBDTGlicmFyaWVzfSJTdGRDUnVudGltZS5vIFxPcHRpb24tZAotCSJ7U2hhcmVkTGlicmFyaWVzfSJJbnRlcmZhY2VMaWIgXE9wdGlvbi1kCi0JIntTaGFyZWRMaWJyYXJpZXN9IlN0ZENMaWIgXE9wdGlvbi1kCi0JIntQUENMaWJyYXJpZXN9IlBQQ1Rvb2xMaWJzLm8gXE9wdGlvbi1kCi0JIntQUENMaWJyYXJpZXN9IlBQQ0NSdW50aW1lLm8gXE9wdGlvbi1kCi0JIntHQ0NQUENMaWJyYXJpZXN9ImxpYmdjYy54Y29mZgotcmV6IC1kIEFQUE5BTUU9JyInaGVsbG8nIicgR2VuZXJpY0NGUkcuciAtbyBoZWxsbwotc2V0ZmlsZSAtdCAnTVBTVCcgLWMgJ01QUyAnIGhlbGxvCi0KLVRoZSBzYW1lIHNlcXVlbmNlIHdvcmtzIHRvIGJ1aWxkIGEgTWFjT1MgYXBwbGljYXRpb24sIGJ1dCB5b3Ugc2V0IHRoZSBmaWxlCi10eXBlIHRvICdBUFBMJyBhbmQgZG9uJ3QgbGluayBpbiBQUENUb29sTGlicy5vLiAgRm9yIGZ1cnRoZXIgZGV0YWlscyBvbgotdXNpbmcgTVBXIHRvIGJ1aWxkIE1hYyBhcHBsaWNhdGlvbnMsIHNlZSB0aGUgZ2VuZXJhbCBNUFcgZG9jdW1lbnRhdGlvbi4KLQotUmVjZW50IHZlcnNpb25zIG9mIFBQQ0xpbmsgaGF2ZSBhbiBvcHRpb24gdG8gZ2VuZXJhdGUgdGhlIGNvZGUKLWZyYWdtZW50IHJlc291cmNlIGFuZCBhdXRvbWF0aWNhbGx5IHNldCBjcmVhdG9yIGFuZCBmaWxlIHR5cGU7Ci1oZXJlIGlzIHdoYXQgR2VuZXJpY0NGUkcuciBzaG91bGQgbG9vayBsaWtlIGlmIHlvdSBoYXZlIGFuIG9sZGVyCi1QUENMaW5rIG9yIGFyZSB1c2luZyBHTlUgbGQ6Ci0KLSNpbmNsdWRlICJDb2RlRnJhZ21lbnRUeXBlcy5yIgotCi1yZXNvdXJjZSAnY2ZyZycgKDApIHsKLSAgICAgICAgewotICAgICAgICAgICAgICAgIGtQb3dlclBDLAotICAgICAgICAgICAgICAgIGtGdWxsTGliLAotICAgICAgICAgICAgICAgIGtOb1ZlcnNpb25OdW0sa05vVmVyc2lvbk51bSwKLSAgICAgICAgICAgICAgICAwLDAsCi0gICAgICAgICAgICAgICAga0lzQXBwLGtPbkRpc2tGbGF0LGtaZXJvT2Zmc2V0LGtXaG9sZUZvcmssCi0gICAgICAgICAgICAgICAgQVBQTkFNRSAvLyBtdXN0IGJlIGRlZmluZWQgb24gUmV6IGNvbW1hbmQgbGluZSB3aXRoIC1kIG9wdGlvbgotICAgICAgICB9Ci19OwotCi1JbiBnZW5lcmFsIHRoaXMgcG9ydCBvZiBHQ0Mgc3VwcG9ydHMgdGhlIHNhbWUgb3B0aW9uIHN5bnRheCBhbmQKLWJlaGF2aW9yIGFzIGl0cyBVbml4IGNvdW50ZXJwYXJ0LiAgSXQgYWxzbyBoYXMgc2ltaWxhciBjb21waWxhdGlvbgotcnVsZXMsIHNvIGl0IHdpbGwgcnVuIHRoZSBhc3NlbWJsZXIgb24gLnMgZmlsZXMgYW5kIHNvIGZvcnRoLgotCi1UaGUgR0NDIG1hbnVhbCBpbmNsdWRlcyBmdWxsIGluZm9ybWF0aW9uIG9uIHRoZSBhdmFpbGFibGUgb3B0aW9ucy4KLU9uZSBvcHRpb24gdGhhdCBtYXkgYmUgZXNwZWNpYWxseSB1c2VmdWwgaXMgIi12Iiwgd2hpY2ggc2hvd3MgeW91IHdoYXQKLXRvb2xzIGFuZCBvcHRpb25zIGFyZSBiZWluZyB1c2VkOyB1bmxpa2UgbW9zdCBNYWMgQyBjb21waWxlcnMsIEdDQwotZGlyZWN0cyBhc3NlbWJseSBhbmQgbGlua2luZyBpbiBhZGRpdGlvbiB0byBjb21waWxhdGlvbi4KLQotTVBXIEdDQyBkb2VzIGZlYXR1cmUgdHdvIGV4dGVuc2lvbnMgdG8gdGhlIG9wdGlvbiBzeW50YXg7ICctZCBtYWNybz1uYW1lJwotd29ya3MganVzdCBhcyAnLURtYWNybz1uYW1lJyBkb2VzIGluIFVuaXgsIGFuZCAnLWkgZGlyZWN0b3J5JyB3b3JrcyB0aGUKLXNhbWUgYXMgJy1JZGlyZWN0b3J5Jy4KLQotTVBXIEdDQyBzdXBwb3J0cyB0aGUgdXN1YWwgUGFzY2FsLXN0eWxlIHN0cmluZ3MgYW5kIGFsaWdubWVudCBwcmFnbWFzLgotCi1UbyBmaW5kIHN0YW5kYXJkIGluY2x1ZGUgZmlsZXMgeW91IGNhbiBzZXQgdGhlIHZhcmlhYmxlIEdDQ0luY2x1ZGVzOgotCi0Jc2V0IEdDQ0luY2x1ZGVzIE15RGlzazpNeUluY2x1ZGVzOgotCWV4cG9ydCBHQ0NJbmNsdWRlcwotCi1HQ0NJbmNsdWRlcyBpcyBzaW1pbGFyIHRvIE1QVydzIENJbmNsdWRlcyBvciBDVydzIE1XQ0luY2x1ZGVzLiAgSW4KLW9yZGVyIHRvIHVzZSBNUFcncyB1c3VhbCBpbmNsdWRlIGZpbGVzLCBqdXN0IHNheToKLQotCXNldCBHQ0NJbmNsdWRlcyAie0NJbmNsdWRlc30iCi0JZXhwb3J0IEdDQ0luY2x1ZGVzCi0KLSogVXNpbmcgR0NDIGFzIGEgQ3Jvc3MtQ29tcGlsZXIKLQotSWYgeW91IGhhdmUgYSBjcm9zcy1jb21waWxlciwgYW5kIHlvdSBoYXZlIGFsbCBvZiB0aGUgY29ycmVjdAotdGFyZ2V0LXNpZGUgY3J0MCBhbmQgbGlicmFyaWVzIGF2YWlsYWJsZSwgdGhlbiB0byBjb21waWxlIGFuZCBsaW5rIGEKLWZpbGUgImZvby5jIiwgeW91IGNhbiBzYXkganVzdAotCi0JZ0MgZm9vLmMKLQotVGhlIG91dHB1dCBmaWxlIHdpbGwgYmUgYW4gTVBXIGJpbmFyeSBmaWxlIG5hbWVkICJhLm91dCI7IHRoZSBmb3JtYXQKLW9mIHRoZSBjb250ZW50cyB3aWxsIGRlcGVuZCBvbiB3aGljaCB0YXJnZXQgaXMgaW4gdXNlLCBzbyBmb3IgaW5zdGFuY2UKLWEgTUlQUy10YXJnZXRpbmcgR0NDIHdpbGwgcHJvZHVjZSBFQ09GRiBvciBFTEYgZXhlY3V0YWJsZXMuCi0KLU5vdGUgdGhhdCB1c2luZyBNUFcgaW5jbHVkZSBmaWxlcyB3aXRoIGEgY3Jvc3MtY29tcGlsZXIgaXMgc29tZXdoYXQKLWRhbmdlcm91cy4KLQotKiBVc2luZyB0aGUgQXNzZW1ibGVyIGFuZCBGcmllbmRzCi0KLVRoZSBhc3NlbWJsZXIgKCJhcyIpIGFuZCBsaW5rZXIgKCJsZCIpIGFyZSBmYWl0aGZ1bCBwb3J0cyBvZiB0aGVpcgotVW5peCBjb3VudGVycGFydHMuICBTaW1pbGFybHksIHRoZSBiaW51dGlscyAiYXIiLCAiY3BsdXNmaWx0IiwgIm5tIiwKLSJvYmpjb3B5IiwgIm9iamR1bXAiLCAicmFubGliIiwgInNpemUiLCAic3RyaW5ncyIsIGFuZCAic3RyaXAiIGFyZSBhbGwKLWxpa2UgdGhleSBhcmUgdW5kZXIgVW5peC4gIChOb3RlIHRoYXQgImNwbHVzZmlsdCIgaXMgdXN1YWxseSBjYWxsZWQKLSJjKytmaWx0IiB1bmRlciBVbml4LikKLQotKiBVc2luZyBHREIKLQotVGhlcmUgYXJlIHR3byBmbGF2b3JzIG9mIEdEQi4gICJnZGIiIGlzIGFuIE1QVyB0b29sIHRoYXQgd29ya3MgdmVyeQotbXVjaCBsaWtlIGl0IGRvZXMgaW4gVW5peDsgcHV0IGEgY29tbWFuZCBpbnRvIHRoZSBNUFcgd29ya3NoZWV0IGFuZAotdHlwZSB0aGUgPGVudGVyPiBrZXkgdG8gc2VuZCBpdCB0byBHREIuICBXaGlsZSAiZ2RiIiBpcyBydW5uaW5nLCB5b3UKLWNhbm5vdCBkbyBhbnl0aGluZyBlbHNlIGluIE1QVywgYWx0aG91Z2ggeW91IGNhbiBzd2l0Y2ggdG8gb3RoZXIKLU1hYyBhcHBsaWNhdGlvbnMgYW5kIHVzZSB0aGVtLgotCi0iU2lvd0dEQiIgaXMgYWxzbyBhIE1hYyBhcHBsaWNhdGlvbiwgYnV0IGl0IGlzIEdEQiB1c2luZyB0aGUgU0lPVwotcGFja2FnZSB0byBwcm92aWRlIGNvbnNvbGUgZW11bGF0aW9uLiAgQ29tbWFuZHMgYXJlIGV4YWN0bHkgYXMgZm9yIHRoZQotTVBXIHRvb2wsIGJ1dCBzaW5jZSB0aGlzIGlzIGl0cyBvd24gYXBwbGljYXRpb24sIHlvdSBjYW4gc3dpdGNoCi1iZXR3ZWVuIGl0IGFuZCBNUFcuCi0KLUJVSUxESU5HIEdOVSBUT09MUwotCi1UaGlzIHBvcnQgb2YgdGhlIEdOVSB0b29scyB1c2VzIGEgY29uZmlndXJlIHNjcmlwdCBzaW1pbGFyIHRvCi10aGF0IHVzZWQgZm9yIEdOVSB0b29scyB1bmRlciBVbml4LCBidXQgcmV3cml0dGVuIGZvciBNUFcuICBBcyB3aXRoCi1Vbml4IGNvbmZpZ3VyYXRpb24sIHRoZXJlIGlzIGFuICJvYmplY3QiIGRpcmVjdG9yeSB0aGF0IG1heSBiZQotZGlmZmVyZW50IGZyb20gdGhlICJzb3VyY2UiIGRpcmVjdG9yeS4gIEluIHRoZSBleGFtcGxlIGNvbW1hbmRzIGJlbG93LAotd2Ugd2lsbCBhc3N1bWUgdGhhdCB3ZSBhcmUgY3VycmVudGx5IGluIHRoZSBvYmplY3QgZGlyZWN0b3J5LCBhbmQgdGhhdAotdGhlIHNvdXJjZSBkaXJlY3RvcnkgaXMgIntCb290fUN5Z251czpzcmM6Ii4KLQotKiBSZXF1aXJlbWVudHMgZm9yIEJ1aWxkaW5nCi0KLUluIGFkZGl0aW9uIHRvIHRoZSBzb3VyY2VzLCB5b3Ugd2lsbCBuZWVkIGEgc2V0IG9mIHRvb2xzIHRoYXQgdGhlCi1jb25maWd1cmUgYW5kIGJ1aWxkIHNjcmlwdHMgYXNzdW1lIHRvIGJlIGF2YWlsYWJsZS4gIFRoZXNlIHRvb2xzCi0oYW5kIHRoZWlyIHZlcnNpb25zLCBpZiByZWxldmFudCkgYXJlIGFzIGZvbGxvd3M6Ci0KLQlieWFjYyB0b29sCi0JZmxleCAoMi4zLjcpIHRvb2wgKGFuZCBGbGV4LnNrZWwgZmlsZSkKLQlmb3J3YXJkLWluY2x1ZGUgc2NyaXB0Ci0JTW92ZUlmQ2hhbmdlIHNjcmlwdAotCW1wdy10b3VjaCBzY3JpcHQKLQltcHctdHJ1ZSBzY3JpcHQKLQlOZXdGb2xkZXJSZWN1cnNpdmUgc2NyaXB0Ci0JbnVsbC1jb21tYW5kIHNjcmlwdAotCW9wZW4tYnJhY2Ugc2NyaXB0Ci0Jc2VkICgxLjEzKSB0b29sCi0JdHItN3RvOCBzY3JpcHQKLQl0cnVlIHNjcmlwdAotCi1UaGUgc2NyaXB0cyBhcmUgaW4gdGhlIHNvdXJjZXMsIHVuZGVyIHV0aWxzOm1wdzouIFlvdSBtdXN0IGFycmFuZ2UgdG8KLWdldCB0aGUgb3RoZXIgdG9vbHMgeW91cnNlbGYgKHRoZXkgYXJlIHJlYWRpbHkgYXZhaWxhYmxlIGZyb20gdGhlCi0idXN1YWwiIG5ldCBzaXRlcywgYW5kIGFyZSBhbHNvIG9uIG1hbnkgQ0RST01TKS4gIEluIGFkZGl0aW9uLCB0aGVyZQotd2lsbCB1c3VhbGx5IGJlIGEgc2V0IG9mIHRoZXNlIGF2YWlsYWJsZSBhdCBmdHAuY3lnbnVzLmNvbSwgaW4gcHViL21hYy4KLQotWW91IG1heSBwdXQgdGhlIGJ1aWxkIHRvb2xzIGluIHlvdXIgdXN1YWwgVG9vbHMgb3IgU2NyaXB0cwotZGlyZWN0b3JpZXMsIG9yIGtlZXAgdGhlbSBpbiBhIHNlcGFyYXRlIGRpcmVjdG9yaWVzLiAgV2UgcHJlZmVyIHRvCi1tYWtlIGEgZGlyZWN0b3J5IGNhbGxlZCAiYnVpbGR0b29scyIgYW5kIHdlIHB1dCB0aGlzIGluIG9uZSBvZiBvdXIKLVVzZXJTdGFydHVwIGZpbGVzOgotCi0Jc2V0IENvbW1hbmRzICJ7Qm9vdH1DeWdudXM6YnVpbGR0b29sczose0NvbW1hbmRzfSIKLQotRmxleCB1c2VzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIEZMRVhfU0tFTEVUT04gdG8gbG9jYXRlIGl0cyBza2VsZXRvbgotZmlsZSwgc28geW91IG5lZWQgdG8gZG8gc29tZXRoaW5nIGxpa2UgdGhpcywgcHJlZmVyYWJseSBpbiBhIFVzZXJTdGFydHVwOgotCi0JU2V0IEZMRVhfU0tFTEVUT04gIntCb290fSJDeWdudXM6YnVpbGR0b29sczpGbGV4LnNrZWwKLQlFeHBvcnQgRkxFWF9TS0VMRVRPTgotCi0qIENvbmZpZ3VyaW5nCi0KLUJlZm9yZSB5b3UgY2FuIGJ1aWxkIGFueXRoaW5nLCB5b3UgbXVzdCBjb25maWd1cmUuICBZb3UgZG8gdGhpcyBieQotY3JlYXRpbmcgYW4gZGlyZWN0b3J5IHdoZXJlIG9iamVjdCBmaWxlcyB3aWxsIGJlIHN0b3JlZCwgc2V0ZGlyZWN0b3J5Ci10byB0aGF0IGRpcmVjdG9yeSBhbmQgZG8gYSBjb25maWd1cmUgY29tbWFuZDoKLQotCXtCb290fUN5Z251czpzcmM6bXB3LWNvbmZpZ3VyZSAtLXRhcmdldCA8bmFtZT4gLS1jYyA8Y29tcGlsZXI+IC0tc3JjZGlyIHtCb290fUN5Z251czpzcmM6IC0tcHJlZml4IDx3aGF0ZXZlcj4KLQotSWYgdGhlIHNvdXJjZSBkaXJlY3RvcnkgaXMgbm90IGluIHlvdXIge0NvbW1hbmRzfSBsaXN0LCB0aGVuIHlvdSBtdXN0Ci1zdXBwbHkgYSBmdWxsIHBhdGhuYW1lIHRvIG1wdy1jb25maWd1cmUsIHNpbmNlIG1wdy1jb25maWd1cmUgaW52b2tlcwotaXRzZWxmIGFmdGVyIHN3aXRjaGluZyBpbnRvIGVhY2ggc3ViZGlyZWN0b3J5LiAgVXNpbmcgYSByZWxhdGl2ZQotcGF0aG5hbWUsIGV2ZW4gc29tZXRoaW5nIGxpa2UgJzptcHctY29uZmlndXJlJywgd2lsbCB0aGVyZWZvcmUgbm90IHdvcmsuCi0KLTxuYW1lPiBtdXN0IGJlIGEga25vd24gdGFyZ2V0LiAgVmFsaWQgb25lcyBpbmNsdWRlICJtNjhrLWFwcGxlLW1hY29zIiwKLSJwb3dlcnBjLWFwcGxlLW1hY29zIiwgImkzODYtdW5rbm93bi1nbzMyIiwgIm1pcHMtaWR0LWVjb2ZmIiwgYW5kCi0ic2gtaGl0YWNoaS1obXMiLiAgTm90IGFsbCB0YXJnZXQgdHlwZXMgYXJlIGFjY2VwdGVkIGZvciBhbGwgb2YgdGhlCi10b29scyB5ZXQuCi0KLTxjb21waWxlcj4gbXVzdCBiZSB0aGUgbmFtZSBvZiB0aGUgY29tcGlsZXIgdG8gdXNlLiAgSXQgZGVmYXVsdHMgdG8gIm1wd2MiLgotCi0JKG02OGspCi0JbXB3YwlNUFcgQwotCXNjNjhrCVN5bWFudGVjIEMKLQltd2M2OGsJTWV0cm93ZXJrcyBDIChDb2Rld2FycmlvcikKLQlnY2M2OGsJR0NDCi0KLQkocG93ZXJwYykKLQlwcGNjCVBQQ0MKLQltcmMJTWFjaW50b3NoIG9uIFJpc0MgKE1pc3RlciBDLCBha2EoPykgRnJhbmtlbnN0ZWluKQotCXNjcHBjCVN5bWFudGVjIEMKLQltd2NwcGMJTWV0cm93ZXJrcyBDIChDb2Rld2FycmlvcikKLQlnY2NwcGMJR0NDCi0KLU5vdCBhbGwgY29tcGlsZXJzIHdpbGwgY29tcGlsZSBhbGwgdG9vbHMgZXF1YWxseSB3ZWxsISAgRm9yIG02OGsgTWFjcywKLU1QVyBDIGhhcyB0aGUgYmVzdCByZWNvcmQgc28gZmFyIChpdCBoYXMgcHJvYmxlbXMsIGJ1dCB0aGV5IGNhbiBiZQotd29ya2VkIGFyb3VuZCksIHdoaWxlIGZvciBQb3dlck1hY3MsIENvZGVXYXJyaW9yIGlzIHRoZSBvbmx5IGNvbXBpbGVyCi10aGF0IGhhcyBzdWNjZXNzZnVsbHkgY29tcGlsZWQgZXZlcnl0aGluZyBpbnRvIHJ1bm5pbmcgY29kZS4KLQotPHByZWZpeD4gaXMgdGhlIHBhdGggdGhhdCAiZ2NjIiB3aWxsIHByZXBlbmQgd2hlbiBsb29raW5nIGZvciB0b29scwotdG8gZXhlY3V0ZS4gIEdDQ19FWEVDX1BSRUZJWCBvdmVycmlkZXMgdGhpcyB2YWx1ZSwgc28geW91IG5lZWQgbm90Ci1pbmNsdWRlIGl0IGlmIHlvdSBwbGFuIHRvIHVzZSBHQ0NfRVhFQ19QUkVGSVguCi0KLUFzIGFuIGV4YW1wbGUsIGhlcmUgaXMgdGhlIGNvbmZpZ3VyZSBsaW5lIHRoYXQgeW91IGNvdWxkIHVzZSB0byBidWlsZAotbmF0aXZlIFBvd2VyTWFjIEdDQzoKLQotIntCb290fSJDeWdudXM6c3JjOm1wdy1jb25maWd1cmUgLS1jYyBtd2NwcGMgLS10YXJnZXQgcG93ZXJwYy1hcHBsZS1tYWNvcyAtLXNyY2RpciAie0Jvb3R9IkN5Z251czpzcmM6IC0tcHJlZml4ICJ7Qm9vdH0iR05VVG9vbHM6Ci0KLSogQnVpbGRpbmcKLQotSWYgeW91IHVzZSBDb2RlV2FycmlvciwgeW91ICptdXN0KiBmaXJzdCBzZXQgTVdDSW5jbHVkZXMgdG8KLXtDSW5jbHVkZXN9LiAgVGhpcyBpcyBiZWNhdXNlIHlvdSB3aWxsIGJlIGJ1aWxkaW5nIE1QVyB0b29scywgYW5kCi10aGVpciBzdGFuZGFyZCBJL08gd29ya3MgYnkgbWFraW5nIHJlZmVyZW5jZXMgdG8gZGF0YSB0aGF0IGlzIHBhcnQgb2YKLXRoZSBNUFcgU2hlbGwsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGNvZGUgbXVzdCBiZSBjb21waWxlZCBhbmQgbGlua2VkCi13aXRoIG1hY3JvcyB0aGF0IHJlZmVyIHRvIHRoYXQgZGF0YSwgYW5kIHRob3NlIG1hY3JvcyBhcmUgaW4KLXtDSW5jbHVkZXN9LCBub3QgdGhlIGRlZmF1bHQge01XQ0luY2x1ZGVzfS4gIFdpdGhvdXQgdGhpcyBjaGFuZ2UsIHlvdQotd2lsbCBlbmNvdW50ZXIgcHJvYmxlbXMgY29tcGlsaW5nIGxpYmliZXJ0eS9tcHcuYywgYnV0IHR3ZWFraW5nIHRoYXQKLWZpbGUgb25seSBtYXNrcyB0aGUgcmVhbCBwcm9ibGVtLCBhbmQgZG9lcyBub3QgZml4IGl0LgotCi1UaGUgY29tbWFuZAotCi0JbXB3LWJ1aWxkCi0KLXdpbGwgYnVpbGQgZXZlcnl0aGluZy4gQnVpbGRpbmcgd2lsbCB0YWtlIG92ZXIgYW4gaG91ciBvbiBhIFF1YWRyYSA4MDAKLW9yIFBvd2VyTWFjIDgxMDAvMTEwLCBsb25nZXIgaWYgdGhlIHNvdXJjZXMgYXJlIG9uIGEgc2hhcmVkIHZvbHVtZS4KLQotWW91IG1heSBzZWUgc29tZSB3YXJuaW5nczsgdGhlc2UgYXJlIG1vc3RseSBsaWtlbHkgYmVuaWduLCB0eXBpY2FsbHkKLWRpc2FncmVlbWVudHMgYWJvdXQgZGVjbGFyYXRpb25zIG9mIGxpYnJhcnkgYW5kIHN5c3RlbSBmdW5jdGlvbnMuCi0KLSogSW5zdGFsbGluZwotCi1UbyBpbnN0YWxsIHRoZSBqdXN0LWJ1aWx0IHRvb2xzLCB1c2UgdGhlIGNvbW1hbmQKLQotCW1wdy1idWlsZCBpbnN0YWxsCi0KLVRoaXMgcGFydCBvZiB0aGUgaW5zdGFsbGF0aW9uIHByb2NlZHVyZSBqdXN0IGNvcGllcyBmaWxlcyB0byB0aGUKLWxvY2F0aW9uIHNwZWNpZmllZCBhdCBjb25maWd1cmUgdGltZSBieSA8cHJlZml4PiwgYW5kLCBpbiBzb21lIGNhc2VzLAotcmVuYW1lcyB0aGVtIGZyb20gdGVtcG9yYXJ5IGludGVybmFsIG5hbWVzIHRvIHRoZWlyIHVzdWFsIG5hbWVzLiBUaGlzCi1pbnN0YWxsIHByb2Nlc3MgaXMgKm5vdCogdGhlIHNhbWUgYXMgd2hhdCB0aGUgSW5zdGFsbCBzY3JpcHQgZG9lczsKLUluc3RhbGwgY2FuIGNvcHkgdG9vbHMgZnJvbSB0aGUgaW5zdGFsbGF0aW9uIGxvY2F0aW9uIGNob3NlbiBhdAotY29uZmlndXJhdGlvbiB0aW1lIHRvIGEgdXNlci1jaG9zZW4gcGxhY2UsIGFuZCBzZXRzIHVwIGEgVXNlclN0YXJ0dXAKLWZpbGUuICBOb3RlIHRoYXQgd2hpbGUgdGhlIEluc3RhbGwgc2NyaXB0IGlzIG9wdGlvbmFsLCB0aGUgaW5zdGFsbAotYnVpbGQgYWN0aW9uIHBlcmZvcm1zIHNvbWUgdGFza3Mgd291bGQgYmUgdmVyeSBoYXJkIHRvIHJlcGxpY2F0ZQotbWFudWFsbHksIHNvIHlvdSBzaG91bGQgYWx3YXlzIGRvIGl0IGJlZm9yZSB1c2luZyB0aGUgdG9vbHMuCi0KLSogS25vd24gUHJvYmxlbXMgV2l0aCBVc2luZyBWYXJpb3VzIENvbXBpbGVycyB0byBCdWlsZAotCi1Nb3N0IHZlcnNpb25zIG9mIE1QVyBDIGhhdmUgcHJvYmxlbXMgd2l0aCBjb21waWxpbmcgR05VIHNvZnR3YXJlLgotCi1NUFcgQyAzLjIueCBoYXMgcHJlcHJvY2Vzc2luZyBidWdzIHRoYXQgcmVuZGVyIGl0IGluY2FwYWJsZSBvZgotY29tcGlsaW5nIHRoZSBCRkQgbGlicmFyeSwgc28gaXQgY2FuJ3QgYmUgdXNlZCBhdCBhbGwgZm9yIGJ1aWxkaW5nIEJGRC4KLQotTVBXIEMgMy4zLCAzLjMuMSwgYW5kIDMuMy4yIHdpbGwgc3BvbnRhbmVvdXNseSBjbGFpbSB0byBoYXZlIGZvdW5kCi1lcnJvcnMgaW4gdGhlIHNvdXJjZSBjb2RlLCBidXQgaW4gZmFjdCB0aGUgY29kZSBpcyBwZXJmZWN0bHkgZmluZS4gIElmCi10aGlzIGhhcHBlbnMsIGp1c3Qgc2V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeSBiYWNrIHRvIHRoZSB0b3AtbGV2ZWwKLW9iamRpciAod2hlcmUgdGhlIGNvbmZpZ3VyZSBjb21tYW5kIGFib3ZlIHdhcyBwZXJmb3JtZWQpLCBhbmQgdHlwZQotIm1wdy1idWlsZCBhbGwiIGFnYWluLiAgSWYgaXQgZ29lcyBvbiB0aHJvdWdoIHRoZSBzdXBwb3NlZCBlcnJvciwgdGhlbgoteW91IGdvdCBvbmUgb2YgdGhlIHNwdXJpb3VzIGVycm9ycy4gIEEgZnVsbCBidWlsZCBtYXkgcmVxdWlyZSBhIG51bWJlcgotb2YgdGhlc2UgcmVzdGFydHMuCi0KLU1QVyBDIDMuMy4zIHNlZW1zIHRvIHdvcmsgT0ssIGF0IGxlYXN0IHdpdGggdGhlIGFpZCBvZiBhIG51bWJlciBvZgotd29ya2Fyb3VuZHMgdGhhdCBhcmUgaW4gdGhlIHNvdXJjZXMgKGxvb2sgZm9yICNpZmRlZiBNUFdfQykuCi0KLVZlcnNpb25zIG9mIE1QVyBNYWtlIGVhcmxpZXIgdGhhbiA0LjBkMiBoYXZlIGV4aGliaXRlZCBiaXphcnJlIGJlaGF2aW9yLAotZmFpbHVyZSB0byBzdWJzdGl0dXRlIHZhcmlhYmxlcyBhbmQgdGhlIGxpa2UuCi0KLU1ldHJvd2Vya3MgQ1c2IFBQQyBsaW5rZXIgKE1XTGlua1BQQykgc2VlbXMgdG8gZG8gYmFkIHRoaW5ncyB3aXRoIG1lbW9yeQotaWYgdGhlICJNb2Rlcm4gTWVtb3J5IE1hbmFnZXIiIGlzIHR1cm5lZCBvbiAoaW4gdGhlIE1lbW9yeSBjb250cm9sIHBhbmVsKSwKLWJ1dCB3b3JrcyBPSyBpZiBpdCBpcyB0dXJuZWQgb2ZmLgotCi1NZXRyb3dlcmtzIENXNiBsb3NlcyBiaWd0aW1lIGNvbXBpbGluZyBvcGNvZGVzOnBwYy1vcGMuYywgd2hpY2ggaGFzCi1zb21lIGRlZXBseSBuZXN0ZWQgbWFjcm9zLiAgKENXNyBpcyBPSy4pICBUaGVyZSBpcyBhIHdheSB0byBwYXRjaCB0aGUKLWZpbGUsIGJ5IHN1YnN0aXR1dGluZyBjb25zdGFudCB2YWx1ZXMuICBJZiB5b3UgbmVlZCB0byBkbyB0aGlzLAotY29udGFjdCBzaGVic0BjeWdudXMuY29tIGZvciBkZXRhaWxzLgotCi08R2VzdGFsdC5oPiBpcyBtaXNzaW5nIGZyb20ge0NJbmNsdWRlc30gaW4gdGhlIE1QVyB2ZXJzaW9uIHRoYXQgY29tZXMKLXdpdGggQ1c3LiAgWW91IGNhbiBqdXN0IGNvcHkgdGhlIG9uZSBpbiBDVzcncyB7TVdDSW5jbHVkZXN9LgotCi1DVzggYW5kIGxhdGVyIGhhdmUgY2hhbmdlcyB0byBoZWFkZXJzIGFuZCBzdWNoIHRoYXQgd2lsbCByZXF1aXJlIGNoYW5nZXMKLXRvIHRoZSBzb3VyY2UgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byB1c2UgdGhlbSB0byByZWJ1aWxkLgotCi1LTk9XTiBCVUdTCi0KLVRoZSBkZWNsYXJhdGlvbnMgZm9yIG1lbWNweSBhbmQgbWVtY21wIGluIHNvbWUgdmVyc2lvbnMgb2YgaGVhZGVyIGZpbGVzCi1tYXkgY29uZmxpY3Qgd2l0aCBHQ0MncyBidWlsdGluIGRlZmluaXRpb24uICBFaXRoZXIgdXNlIC1mbm8tYnVpbHRpbgotb3IgaWdub3JlIHRoZSB3YXJuaW5ncy4KLQotVGhpcyBpcyBub3QgYSBidWcsIGJ1dCAtIHdhdGNoIG91dCBmb3IgY3IvbmwgdHJhbnNsYXRpb24hICBGb3IgaW5zdGFuY2UsCi1pZiBjb25maWcvbXB3LW1oLW1wdyBpcyBub3QgcHJvcGVybHkgdHJhbnNsYXRlZCBiZWNhdXNlIGl0IGhhcyBiZWVuCi1jb3BpZWQgb3IgdXBkYXRlZCBzZXBhcmF0ZWx5LCB0aGVuIGV2ZXJ5dGhpbmcgd2lsbCBhbG1vc3QgYnVpbGQsIGJ1dAoteW91IHdpbGwgZ2V0IHB1enpsaW5nIGVycm9yIG1lc3NhZ2VzIGZyb20gbWFrZSBvciB0aGUgY29tcGlsZXIuCi0KLScvJyBvciAnICcgZW1iZWRkZWQgaW4gYW55IGRldmljZSwgZGlyZWN0b3J5LCBvciBmaWxlIG5hbWUgbWF5IG9yIG1heQotbm90IHdvcmsuCi0KLW9iamNvcHkgLU8gc3JlYyBmb28ubyBtYWtlcyByYW5kb20gb3V0cHV0IGZpbGVuYW1lcy4KLQotTWFjLXgtbWlwcyByZXF1aXJlcyAtbWdhcyBidXQgVW5peCBob3N0cyBkb24ndC4KLQotR0RCIHdpbGwgZnJlcXVlbnRseSByZXF1aXJlIGEgJy8nIG9uIHRoZSBmcm9udCBvZiBhIGRldmljZSBuYW1lIGluIG9yZGVyCi10byByZWNvZ25pemUgaXQgYXMgYW4gYWJzb2x1dGUgcmF0aGVyIHRoYW4gYSByZWxhdGl2ZSBwYXRobmFtZS4KLQotR0RCIGRvZXNuJ3Qgc2VlbSB0byB1c2UgdGhlIHByaW50ZXIgcG9ydCBjb3JyZWN0bHksIGFsdGhvdWdoIGl0IHRyaWVzLgotCi1UaGUgY3Vyc29yIGRvZXNuJ3QgYWx3YXlzIHNwaW4gYXMgbXVjaCBhcyBpdCBzaG91bGQuICBUbyBnZXQgZWxhYm9yYXRlCi1zdGF0aXN0aWNzIGFuZCB3YXJuaW5ncyBhYm91dCBzcGluIHJhdGVzLCBhZGQgdGhpcyB0byBVc2VyU3RhcnR1cDoKLQotCXNldCBNRUFTVVJFX1NQSU4gYWxsCi0JZXhwb3J0IE1FQVNVUkVfU1BJTgpkaWZmIC0tZ2l0IGEvbXB3LWJ1aWxkLmluIGIvbXB3LWJ1aWxkLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmQ5NTMwLi4wMDAwMDAwCi0tLSBhL21wdy1idWlsZC5pbgorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi0jIFRvcC1sZXZlbCBzY3JpcHQgZnJhZ21lbnQgdG8gYnVpbGQgZXZlcnl0aGluZyBmb3IgTVBXLgotCi1TZXQgc2F2ZWRpciAiYERpcmVjdG9yeWAiCi0KLSNTZXQgRWNobyAxCi0KLVNldCBUaGlzU2NyaXB0ICJ7MH0iCi0KLVNldCBvYmpkaXIgIjoiCi0KLVNldCB2ZXJpZnkgMAotCi1TZXQgQnVpbGRUYXJnZXQgIm5vbmUiCi0KLSMgUGFyc2UgYXJndW1lbnRzLgotCi1Mb29wCi0JQnJlYWsgSWYgeyN9ID09IDAKLQkJSWYgIntCdWlsZFRhcmdldH0iID1+IC9ub25lLwotCQkJU2V0IEJ1aWxkVGFyZ2V0ICJ7MX0iCi0JCUVsc2UKLQkJCUVjaG8gT25seSBvbmUgYnVpbGQgdGFyZ2V0IGFsbG93ZWQsIGlnbm9yaW5nICJ7MX0iCi0JCUVuZCBJZgotCVNoaWZ0IDEKLUVuZCBMb29wCi0KLUlmICJ7QnVpbGRUYXJnZXR9IiA9fiAvbm9uZS8KLQlTZXQgQnVpbGRUYXJnZXQgImFsbCIKLUVuZCBJZgotCi1JZiB7dmVyaWZ5fSA9PSAxCi0JRWNobyAiIyIgRG9pbmcgIntUaGlzU2NyaXB0fSIgIntCdWlsZFRhcmdldH0iIGluICJgRGlyZWN0b3J5YCIgLi4uIAotRW5kIElmCi0KLVNldCByYW5tYWtlIDAKLQotSWYgImBFeGlzdHMgTWFrZWZpbGVgIiAhPSAiIgotCUVjaG8gIlNldCBFY2hvIDEiID57QnVpbGRUYXJnZXR9Lm1ha2VvdXQKLQlNYWtlIC1mIE1ha2VmaWxlIHtCdWlsZFRhcmdldH0gPj57QnVpbGRUYXJnZXR9Lm1ha2VvdXQKLQl7QnVpbGRUYXJnZXR9Lm1ha2VvdXQKLQlEZWxldGUge0J1aWxkVGFyZ2V0fS5tYWtlb3V0Ci0JU2V0IHJhbm1ha2UgMQotRW5kIElmCi0KLUlmICJgRXhpc3RzIE1ha2VmaWxlLlBQQ2AiICE9ICIiCi0JRWNobyAiU2V0IEVjaG8gMSIgPntCdWlsZFRhcmdldH0ubWFrZW91dC5wcGMKLQlNYWtlIC1mIE1ha2VmaWxlLlBQQyB7QnVpbGRUYXJnZXR9ID4+e0J1aWxkVGFyZ2V0fS5tYWtlb3V0LnBwYwotCXtCdWlsZFRhcmdldH0ubWFrZW91dC5wcGMKLQlEZWxldGUge0J1aWxkVGFyZ2V0fS5tYWtlb3V0LnBwYwotCVNldCByYW5tYWtlIDEKLUVuZCBJZgotCi1JZiB7cmFubWFrZX0gPT0gMQotCUV4aXQKLUVuZCBJZgotCi0jIERpc3BhdGNoIG9uIHZhcmlvdXMgcHNldWRvLXRhcmdldHMuCi0KLUlmICJ7QnVpbGRUYXJnZXR9IiA9fiAvYWxsLwotCUVjaG8gU3RhcnRlZCBgRGF0ZWAKLQkie1RoaXNTY3JpcHR9IiBhbGwtZ2NjCi0JIntUaGlzU2NyaXB0fSIgYWxsLWdkYgotCUVjaG8gRmluaXNoZWQgYERhdGVgCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvYWxsLWxpYmliZXJ0eS8KLQkie1RoaXNTY3JpcHR9IiBkby1saWJpYmVydHkKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9hbGwtYmZkLwotCSJ7VGhpc1NjcmlwdH0iIGRvLWJmZAotRWxzZSBJZiAie0J1aWxkVGFyZ2V0fSIgPX4gL2FsbC1vcGNvZGVzLwotCSJ7VGhpc1NjcmlwdH0iIGRvLW9wY29kZXMKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9hbGwtYnlhY2MvCi0JIntUaGlzU2NyaXB0fSIgZG8tYnlhY2MKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9hbGwtZmxleC8KLQkie1RoaXNTY3JpcHR9IiBhbGwtbGliaWJlcnR5Ci0JIntUaGlzU2NyaXB0fSIgZG8tZmxleAotRWxzZSBJZiAie0J1aWxkVGFyZ2V0fSIgPX4gL2FsbC1iaW51dGlscy8KLQkie1RoaXNTY3JpcHR9IiBhbGwtbGliaWJlcnR5Ci0JIntUaGlzU2NyaXB0fSIgYWxsLWJmZAotCSJ7VGhpc1NjcmlwdH0iIGFsbC1vcGNvZGVzCi0JIntUaGlzU2NyaXB0fSIgZG8tYmludXRpbHMKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9hbGwtZ2FzLwotCSJ7VGhpc1NjcmlwdH0iIGFsbC1saWJpYmVydHkKLQkie1RoaXNTY3JpcHR9IiBhbGwtYmZkCi0JIntUaGlzU2NyaXB0fSIgYWxsLW9wY29kZXMKLQkie1RoaXNTY3JpcHR9IiBkby1nYXMKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9hbGwtZ2NjLwotCSJ7VGhpc1NjcmlwdH0iIGFsbC1saWJpYmVydHkKLQkie1RoaXNTY3JpcHR9IiBhbGwtZ2FzCi0JIntUaGlzU2NyaXB0fSIgYWxsLWJpbnV0aWxzCi0JIntUaGlzU2NyaXB0fSIgYWxsLWxkCi0JIntUaGlzU2NyaXB0fSIgZG8tZ2NjCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvYWxsLWdkYi8KLQkie1RoaXNTY3JpcHR9IiBhbGwtbGliaWJlcnR5Ci0JIntUaGlzU2NyaXB0fSIgYWxsLWJmZAotCSJ7VGhpc1NjcmlwdH0iIGFsbC1vcGNvZGVzCi0JIntUaGlzU2NyaXB0fSIgZG8tZ2RiCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvYWxsLWdyZXovCi0JIntUaGlzU2NyaXB0fSIgYWxsLWxpYmliZXJ0eQotCSJ7VGhpc1NjcmlwdH0iIGFsbC1iZmQKLQkie1RoaXNTY3JpcHR9IiBkby1ncmV6Ci1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvYWxsLWxkLwotCSJ7VGhpc1NjcmlwdH0iIGFsbC1saWJpYmVydHkKLQkie1RoaXNTY3JpcHR9IiBhbGwtYmZkCi0JIntUaGlzU2NyaXB0fSIgYWxsLW9wY29kZXMKLQkie1RoaXNTY3JpcHR9IiBkby1sZAotRWxzZSBJZiAie0J1aWxkVGFyZ2V0fSIgPX4gL2RvLWJ5YWNjLwotCVNldERpcmVjdG9yeSA6YnlhY2M6Ci0JOjptcHctYnVpbGQgYWxsCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvZG8tZmxleC8KLQlTZXREaXJlY3RvcnkgOmZsZXg6Ci0JOjptcHctYnVpbGQgX2Jvb3RzdHJhcAotCTo6bXB3LWJ1aWxkIGFsbAotRWxzZSBJZiAie0J1aWxkVGFyZ2V0fSIgPX4gL2RvLWJmZC8KLQlTZXREaXJlY3RvcnkgOmJmZDoKLQk6Om1wdy1idWlsZCBhbGwKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9kby1saWJpYmVydHkvCi0JU2V0RGlyZWN0b3J5IDpsaWJpYmVydHk6Ci0JOjptcHctYnVpbGQgYWxsCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvZG8tb3Bjb2Rlcy8KLQlTZXREaXJlY3RvcnkgOm9wY29kZXM6Ci0JOjptcHctYnVpbGQgYWxsCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvZG8tYmludXRpbHMvCi0JU2V0RGlyZWN0b3J5IDpiaW51dGlsczoKLQk6Om1wdy1idWlsZCBzdGFtcHMKLQk6Om1wdy1idWlsZCBhbGwKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9kby1nYXMvCi0JU2V0RGlyZWN0b3J5IDpnYXM6Ci0JOjptcHctYnVpbGQgc3RhbXBzCi0JOjptcHctYnVpbGQgYWxsCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvZG8tZ2NjLwotCVNldERpcmVjdG9yeSA6Z2NjOgotCTptcHctYnVpbGQgYWxsCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvZG8tZ2RiLwotCVNldERpcmVjdG9yeSA6Z2RiOgotCTo6bXB3LWJ1aWxkIGFsbAotRWxzZSBJZiAie0J1aWxkVGFyZ2V0fSIgPX4gL2RvLWdyZXovCi0JU2V0RGlyZWN0b3J5IDpncmV6OgotCTo6bXB3LWJ1aWxkIGFsbAotRWxzZSBJZiAie0J1aWxkVGFyZ2V0fSIgPX4gL2RvLWxkLwotCVNldERpcmVjdG9yeSA6bGQ6Ci0JOjptcHctYnVpbGQgYWxsCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvZG8tbmV3bGliLwotCVNldERpcmVjdG9yeSA6bmV3bGliOgotCTo6bXB3LWJ1aWxkIGFsbAotRWxzZSBJZiAie0J1aWxkVGFyZ2V0fSIgPX4gL2luc3RhbGwvCi0JIntUaGlzU2NyaXB0fSIgaW5zdGFsbC1vbmx5LXRvcAotCSJ7VGhpc1NjcmlwdH0iIGluc3RhbGwtYmludXRpbHMKLQkie1RoaXNTY3JpcHR9IiBpbnN0YWxsLWdhcwotCSJ7VGhpc1NjcmlwdH0iIGluc3RhbGwtZ2NjCi0JIntUaGlzU2NyaXB0fSIgaW5zdGFsbC1sZAotCSJ7VGhpc1NjcmlwdH0iIGluc3RhbGwtZ2RiCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvaW5zdGFsbC1iaW51dGlscy8KLQlTZXREaXJlY3RvcnkgOmJpbnV0aWxzOgotCTo6bXB3LWJ1aWxkIGluc3RhbGwKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9pbnN0YWxsLWdhcy8KLQlTZXREaXJlY3RvcnkgOmdhczoKLQk6Om1wdy1idWlsZCBpbnN0YWxsCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvaW5zdGFsbC1nY2MvCi0JU2V0RGlyZWN0b3J5IDpnY2M6Ci0JOm1wdy1idWlsZCBpbnN0YWxsCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvaW5zdGFsbC1nZGIvCi0JU2V0RGlyZWN0b3J5IDpnZGI6Ci0JOjptcHctYnVpbGQgaW5zdGFsbAotRWxzZSBJZiAie0J1aWxkVGFyZ2V0fSIgPX4gL2luc3RhbGwtZ3Jlei8KLQlTZXREaXJlY3RvcnkgOmdyZXo6Ci0JOjptcHctYnVpbGQgaW5zdGFsbAotRWxzZSBJZiAie0J1aWxkVGFyZ2V0fSIgPX4gL2luc3RhbGwtbGQvCi0JU2V0RGlyZWN0b3J5IDpsZDoKLQk6Om1wdy1idWlsZCBpbnN0YWxsCi1FbHNlIElmICJ7QnVpbGRUYXJnZXR9IiA9fiAvaW5zdGFsbC1vbmx5LwotCSJ7VGhpc1NjcmlwdH0iIGluc3RhbGwtb25seS10b3AKLQkie1RoaXNTY3JpcHR9IiBpbnN0YWxsLW9ubHktYmludXRpbHMKLQkie1RoaXNTY3JpcHR9IiBpbnN0YWxsLW9ubHktZ2FzCi0JIntUaGlzU2NyaXB0fSIgaW5zdGFsbC1vbmx5LWdjYwotCSJ7VGhpc1NjcmlwdH0iIGluc3RhbGwtb25seS1nZGIKLQkie1RoaXNTY3JpcHR9IiBpbnN0YWxsLW9ubHktbGQKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9pbnN0YWxsLW9ubHktYmludXRpbHMvCi0JU2V0RGlyZWN0b3J5IDpiaW51dGlsczoKLQk6Om1wdy1idWlsZCBpbnN0YWxsLW9ubHkKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9pbnN0YWxsLW9ubHktZ2FzLwotCVNldERpcmVjdG9yeSA6Z2FzOgotCTo6bXB3LWJ1aWxkIGluc3RhbGwtb25seQotRWxzZSBJZiAie0J1aWxkVGFyZ2V0fSIgPX4gL2luc3RhbGwtb25seS1nY2MvCi0JU2V0RGlyZWN0b3J5IDpnY2M6Ci0JOm1wdy1idWlsZCBpbnN0YWxsLW9ubHkKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9pbnN0YWxsLW9ubHktZ2RiLwotCVNldERpcmVjdG9yeSA6Z2RiOgotCTo6bXB3LWJ1aWxkIGluc3RhbGwtb25seQotRWxzZSBJZiAie0J1aWxkVGFyZ2V0fSIgPX4gL2luc3RhbGwtb25seS1ncmV6LwotCVNldERpcmVjdG9yeSA6Z3JlejoKLQk6Om1wdy1idWlsZCBpbnN0YWxsLW9ubHkKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9pbnN0YWxsLW9ubHktbGQvCi0JU2V0RGlyZWN0b3J5IDpsZDoKLQk6Om1wdy1idWlsZCBpbnN0YWxsLW9ubHkKLUVsc2UgSWYgIntCdWlsZFRhcmdldH0iID1+IC9pbnN0YWxsLW9ubHktdG9wLwotCU5ld0ZvbGRlclJlY3Vyc2l2ZSAie3ByZWZpeH0iCi0JSWYgIntwcmVmaXh9IiAhPSAiYERpcmVjdG9yeWAiCi0JCUR1cGxpY2F0ZSAteSAnUmVhZCBNZSBmb3IgTVBXJyAie3ByZWZpeH0iJ1JlYWQgTWUgZm9yIE1QVycKLQkJRHVwbGljYXRlIC15IEluc3RhbGwgIntwcmVmaXh9Ikluc3RhbGwKLQlFbmQgSWYKLUVsc2UKLQlFY2hvIHtCdWlsZFRhcmdldH0gbm90IHVuZGVyc3Rvb2QsIGlnbm9yaW5nCi1FbmQgSWYKLQotU2V0RGlyZWN0b3J5ICJ7c2F2ZWRpcn0iCmRpZmYgLS1naXQgYS9tcHctY29uZmlnLmluIGIvbXB3LWNvbmZpZy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAyODczNy4uMDAwMDAwMAotLS0gYS9tcHctY29uZmlnLmluCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLSMgQ29uZmlndXJhdGlvbiBmcmFnbWVudCBmb3IgQ3lnbnVzIHNvdXJjZSB0cmVlLgotCi0jIENoZWNrIHRoYXQgd2UgY2FuIGZpbmQgYWxsIHRoZSBzcGVjaWFsIHRvb2xzIHRoYXQgd2Ugd2lsbCBuZWVkLgotIyBUaGUgdGVzdCBmb3Igc2VkIGlzIHNlbWktcG9pbnRsZXNzLCBiZWNhdXNlIGl0J3MgYWxyZWFkeSBiZWVuIGludm9rZWQKLSMgYnkgdGhlIGNhbGN1bGF0aW9uIG9mIHRhcmdldF9jcHUgaW4gdGhlIG1haW4gY29uZmlndXJlIHNjcmlwdCwgYnV0Ci0jIHRoZSB0ZXN0IHdpbGwgYWxzbyBzaG93IHdoaWNoIG9uZSBpcyBiZWluZyB1c2VkLgotCi1TZXQgRXhpdCAwCi1FY2hvIGJ5YWNjIGlzIGBXaGljaCBieWFjY2AKLUVjaG8gZmxleCBpcyBgV2hpY2ggZmxleGAKLUVjaG8gZm9yd2FyZC1pbmNsdWRlIGlzIGBXaGljaCBmb3J3YXJkLWluY2x1ZGVgCi1FY2hvIE1vdmVJZkNoYW5nZSBpcyBgV2hpY2ggTW92ZUlmQ2hhbmdlYAotRWNobyBtcHctdG91Y2ggaXMgYFdoaWNoIG1wdy10b3VjaGAKLUVjaG8gbXB3LXRydWUgaXMgYFdoaWNoIG1wdy10cnVlYAotRWNobyBOZXdGb2xkZXJSZWN1cnNpdmUgaXMgYFdoaWNoIE5ld0ZvbGRlclJlY3Vyc2l2ZWAKLUVjaG8gbnVsbC1jb21tYW5kIGlzIGBXaGljaCBudWxsLWNvbW1hbmRgCi1FY2hvIG9wZW4tYnJhY2UgaXMgYFdoaWNoIG9wZW4tYnJhY2VgCi1FY2hvIHNlZCBpcyBgV2hpY2ggc2VkYAotRWNobyAndHItN3RvOCcgaXMgYFdoaWNoIHRyLTd0bzhgCi1FY2hvIHRydWUgaXMgYFdoaWNoIHRydWVgCi1TZXQgRXhpdCAxCi0KLVNldCBob3N0X2xpYnMgIm1tYWxsb2MgbGliaWJlcnR5IG9wY29kZXMgYmZkIHJlYWRsaW5lIGdhc2ggdGNsIHRrIHRjbFgiCi0KLVNldCBob3N0X3Rvb2xzICJ0ZXhpbmZvIGJ5YWNjIGZsZXggYmlzb24gYmludXRpbHMgbGQgZ2FzIGdjYyBnZGIgbWFrZSBwYXRjaCBcT3B0aW9uLWQKLQkgICAgcHJtcyBzZW5kLXByIGdwcm9mIGdkYnRlc3QgdGdhcyBldGMgZXhwZWN0IGRlamFnbnUgc2ltIGJhc2ggXE9wdGlvbi1kCi0JICAgIG00IGF1dG9jb25mIGlzcGVsbCBncmVwIGRpZmYgcmNzIGN2cyBmaWxldXRpbHMgc2hlbGx1dGlscyB0aW1lIFxPcHRpb24tZAotCSAgICB0ZXh0dXRpbHMgd2RpZmYgZmluZCBlbWFjcyBlbWFjczE5IHV1ZGVjb2RlIGhlbGxvIHRhciBnemlwIGluZGVudCBcT3B0aW9uLWQKLQkgICAgcmVjb2RlIHJlbGVhc2Ugc2VkIHV0aWxzIGd1aWxlIHBlcmwgYXBhY2hlIGluZXQgZ2F3ayIKLQotU2V0IHRhcmdldF9saWJzICJuZXdsaWIiCi0KLVNldCB0YXJnZXRfdG9vbHMgImV4YW1wbGVzIgotCi0jIENvbmZpZ3VyZSB0aGUgcmVzb3VyY2UgY29tcGlsZXIgaWYgdGFyZ2V0aW5nIE1hY3MuCi1JZiB7dGFyZ2V0X29zfSA9fiAvbWFjb3MvIHx8IHt0YXJnZXRfb3N9ID1+IC9tcHcvCi0JU2V0IGhvc3RfdG9vbHMgIntob3N0X3Rvb2xzfSBncmV6IgotRW5kIElmCi0JCi1TZXQgY29uZmlnZGlycyAie2hvc3RfbGlic30ge2hvc3RfdG9vbHN9IHt0YXJnZXRfbGlic30ge3RhcmdldF90b29sc30iCi1FeHBvcnQgY29uZmlnZGlycwotCi0jIE1ha2UgdXAgYSBzcGVjaWFsIGluY2x1ZGUgZGlyZWN0b3J5IHRoYXQgdG9vbHMgd2lsbCBzaGFyZS4KLQotSWYgImBFeGlzdHMgIntvYmpkaXJ9ImV4dHJhLWluY2x1ZGVgIiA9PSAiIgotCU5ld0ZvbGRlciAie29iamRpcn0iZXh0cmEtaW5jbHVkZQotRW5kIElmCi0KLVNldCBlZGlyICJ7b2JqZGlyfWV4dHJhLWluY2x1ZGU6IgotCi1mb3J3YXJkLWluY2x1ZGUgIntzcmNkaXJ9ImluY2x1ZGU6bXB3OnN5czpmaWxlLmggIntlZGlyfSInc3lzL2ZpbGUuaCcKLWZvcndhcmQtaW5jbHVkZSAie3NyY2Rpcn0iaW5jbHVkZTptcHc6c3lzOmlvY3RsLmggIntlZGlyfSInc3lzL2lvY3RsLmgnCi1mb3J3YXJkLWluY2x1ZGUgIntzcmNkaXJ9ImluY2x1ZGU6bXB3OnN5czpwYXJhbS5oICJ7ZWRpcn0iJ3N5cy9wYXJhbS5oJwotZm9yd2FyZC1pbmNsdWRlICJ7c3JjZGlyfSJpbmNsdWRlOm1wdzpzeXM6cmVzb3VyY2UuaCAie2VkaXJ9IidzeXMvcmVzb3VyY2UuaCcKLWZvcndhcmQtaW5jbHVkZSAie3NyY2Rpcn0iaW5jbHVkZTptcHc6c3lzOnN0YXQuaCAie2VkaXJ9IidzeXMvc3RhdC5oJwotZm9yd2FyZC1pbmNsdWRlICJ7c3JjZGlyfSJpbmNsdWRlOm1wdzpzeXM6dGltZS5oICJ7ZWRpcn0iJ3N5cy90aW1lLmgnCi1mb3J3YXJkLWluY2x1ZGUgIntzcmNkaXJ9ImluY2x1ZGU6bXB3OnN5czp0eXBlcy5oICJ7ZWRpcn0iJ3N5cy90eXBlcy5oJwotCi1mb3J3YXJkLWluY2x1ZGUgIntzcmNyb290fSJpbmNsdWRlOmFvdXQ6YW91dDY0LmggIntlZGlyfSInYW91dC9hb3V0NjQuaCcKLWZvcndhcmQtaW5jbHVkZSAie3NyY3Jvb3R9ImluY2x1ZGU6YW91dDphci5oICJ7ZWRpcn0iJ2FvdXQvYXIuaCcKLWZvcndhcmQtaW5jbHVkZSAie3NyY3Jvb3R9ImluY2x1ZGU6YW91dDpyYW5saWIuaCAie2VkaXJ9Iidhb3V0L3JhbmxpYi5oJwotZm9yd2FyZC1pbmNsdWRlICJ7c3Jjcm9vdH0iaW5jbHVkZTphb3V0OnJlbG9jLmggIntlZGlyfSInYW91dC9yZWxvYy5oJwotZm9yd2FyZC1pbmNsdWRlICJ7c3Jjcm9vdH0iaW5jbHVkZTphb3V0OnN0YWIuZGVmICJ7ZWRpcn0iJ2FvdXQvc3RhYi5kZWYnCi1mb3J3YXJkLWluY2x1ZGUgIntzcmNyb290fSJpbmNsdWRlOmFvdXQ6c3RhYl9nbnUuaCAie2VkaXJ9Iidhb3V0L3N0YWJfZ251LmgnCi0KLUlmICJgRXhpc3RzICJ7c3Jjcm9vdH0iaW5jbHVkZTphb3V0OiJ7dGFyZ2V0X2NwdX0iLmhgIiAhPSAiIgotCWZvcndhcmQtaW5jbHVkZSAie3NyY3Jvb3R9ImluY2x1ZGU6YW91dDoie3RhcmdldF9jcHV9Ii5oICJ7ZWRpcn0iJ2FvdXQvJyJ7dGFyZ2V0X2NwdX0iJy5oJwotRW5kIElmCi0KLWZvcndhcmQtaW5jbHVkZSAie3NyY3Jvb3R9ImluY2x1ZGU6Y29mZjplY29mZi5oICJ7ZWRpcn0iJ2NvZmYvZWNvZmYuaCcKLWZvcndhcmQtaW5jbHVkZSAie3NyY3Jvb3R9ImluY2x1ZGU6Y29mZjppbnRlcm5hbC5oICJ7ZWRpcn0iJ2NvZmYvaW50ZXJuYWwuaCcKLWZvcndhcmQtaW5jbHVkZSAie3NyY3Jvb3R9ImluY2x1ZGU6Y29mZjpzeW0uaCAie2VkaXJ9Iidjb2ZmL3N5bS5oJwotZm9yd2FyZC1pbmNsdWRlICJ7c3Jjcm9vdH0iaW5jbHVkZTpjb2ZmOnN5bWNvbnN0LmggIntlZGlyfSInY29mZi9zeW1jb25zdC5oJwotCi1JZiAiYEV4aXN0cyAie3NyY3Jvb3R9ImluY2x1ZGU6Y29mZjoie3RhcmdldF9jcHV9Ii5oYCIgIT0gIiIKLQlmb3J3YXJkLWluY2x1ZGUgIntzcmNyb290fSJpbmNsdWRlOmNvZmY6Int0YXJnZXRfY3B1fSIuaCAie2VkaXJ9Iidjb2ZmLycie3RhcmdldF9jcHV9IicuaCcKLUVuZCBJZgotSWYgInt0YXJnZXRfY3B1fSIgPX4gL3Bvd2VycGMvCi0JZm9yd2FyZC1pbmNsdWRlICJ7c3Jjcm9vdH0iaW5jbHVkZTpjb2ZmOnJzNjAwMC5oICJ7ZWRpcn0iJ2NvZmYvcnM2MDAwLmgnCi1FbmQgSWYKLQotZm9yd2FyZC1pbmNsdWRlICJ7c3Jjcm9vdH0iaW5jbHVkZTplbGY6Y29tbW9uLmggIntlZGlyfSInZWxmL2NvbW1vbi5oJwotZm9yd2FyZC1pbmNsdWRlICJ7c3Jjcm9vdH0iaW5jbHVkZTplbGY6ZHdhcmYuaCAie2VkaXJ9IidlbGYvZHdhcmYuaCcKLWZvcndhcmQtaW5jbHVkZSAie3NyY3Jvb3R9ImluY2x1ZGU6ZWxmOmR3YXJmMi5oICJ7ZWRpcn0iJ2VsZi9kd2FyZjIuaCcKLWZvcndhcmQtaW5jbHVkZSAie3NyY3Jvb3R9ImluY2x1ZGU6ZWxmOmV4dGVybmFsLmggIntlZGlyfSInZWxmL2V4dGVybmFsLmgnCi1mb3J3YXJkLWluY2x1ZGUgIntzcmNyb290fSJpbmNsdWRlOmVsZjppbnRlcm5hbC5oICJ7ZWRpcn0iJ2VsZi9pbnRlcm5hbC5oJwotCi0jIEJlbGlldmUgaXQgb3Igbm90LCBHREIgbmVlZHMgdGhpcyBmb3IgYWxsIHRhcmdldHMuCi1mb3J3YXJkLWluY2x1ZGUgIntzcmNyb290fSJpbmNsdWRlOmVsZjptaXBzLmggIntlZGlyfSInZWxmL21pcHMuaCcKLQotSWYgImBFeGlzdHMgIntzcmNyb290fSJpbmNsdWRlOmVsZjoie3RhcmdldF9jcHV9Ii5oYCIgIT0gIiIKLQlmb3J3YXJkLWluY2x1ZGUgIntzcmNyb290fSJpbmNsdWRlOmVsZjoie3RhcmdldF9jcHV9Ii5oICJ7ZWRpcn0iJ2VsZi8nInt0YXJnZXRfY3B1fSInLmgnCi1FbmQgSWYKLUlmICJ7dGFyZ2V0X2NwdX0iID1+IC9wb3dlcnBjLwotCWZvcndhcmQtaW5jbHVkZSAie3NyY3Jvb3R9ImluY2x1ZGU6ZWxmOnBwYy5oICJ7ZWRpcn0iJ2VsZi9wcGMuaCcKLUVuZCBJZgotCi1JZiAiYEV4aXN0cyAie3NyY3Jvb3R9ImluY2x1ZGU6b3Bjb2RlOiJ7dGFyZ2V0X2NwdX0iLmhgIiAhPSAiIgotCWZvcndhcmQtaW5jbHVkZSAie3NyY3Jvb3R9ImluY2x1ZGU6b3Bjb2RlOiJ7dGFyZ2V0X2NwdX0iLmggIntlZGlyfSInb3Bjb2RlLycie3RhcmdldF9jcHV9IicuaCcKLUVuZCBJZgotSWYgInt0YXJnZXRfY3B1fSIgPX4gL3Bvd2VycGMvCi0JZm9yd2FyZC1pbmNsdWRlICJ7c3Jjcm9vdH0iaW5jbHVkZTpvcGNvZGU6cHBjLmggIntlZGlyfSInb3Bjb2RlL3BwYy5oJwotRW5kIElmCi0KLSMgQWRkIHNvbWUgYmZkIGluY2x1ZGVzIHRoYXQgZ2V0IG1lbnRpb25lZCBvdXRzaWRlIHRoZSBiZmQgZGlyLgotCQotZm9yd2FyZC1pbmNsdWRlICJ7c3Jjcm9vdH0iYmZkOmxpYmNvZmYuaCAie2VkaXJ9IidiZmQvbGliY29mZi5oJwotZm9yd2FyZC1pbmNsdWRlICJ7c3Jjcm9vdH0iYmZkOmxpYmVjb2ZmLmggIntlZGlyfSInYmZkL2xpYmVjb2ZmLmgnCi0KLSMgVHJhbnNsYXRlIHJhbmRvbSBmaWxlcyBpbnRvIE1QVy1vbmx5IGNoYXJhY3RlciBzZXQuCi0KLXRyLTd0bzggIntzcmNkaXJ9Im1wdy1SRUFETUUgPiAie29iamRpcn1SZWFkIE1lIGZvciBNUFciCi10ci03dG84ICJ7c3JjZGlyfSJtcHctaW5zdGFsbCA+ICJ7b2JqZGlyfSJJbnN0YWxsCmRpZmYgLS1naXQgYS9tcHctY29uZmlndXJlIGIvbXB3LWNvbmZpZ3VyZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y0NTE0OC4uMDAwMDAwMAotLS0gYS9tcHctY29uZmlndXJlCisrKyAvZGV2L251bGwKQEAgLTEsNDQ4ICswLDAgQEAKLSMgQ29uZmlndXJhdGlvbiBzY3JpcHQKLSMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jIAotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIyAKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLQotIyMjIFdBUk5JTkcKLSMjIyBUaGlzIHNjcmlwdCBtdXN0IE5PVCB1c2UgYW55IDgtYml0IGNoYXJzIQotIyMjIFdBUk5JTkcKLQotIyBUaGlzIGlzIGFuIE1QVyBTaGVsbCBzY3JpcHQgdGhhdCBzZXRzIGV2ZXJ5dGhpbmcgdXAgZm9yIGNvbXBpbGF0aW9uLAotIyBtYWlubHkgY3JlYXRpbmcgZGlyZWN0b3JpZXMsIGFuZCBlZGl0aW5nIGNvcGllcyBvZiBmaWxlcy4KLQotU2V0IHNhdmVkaXIgImBEaXJlY3RvcnlgIgotCi0jU2V0IEVjaG8gMQotCi1TZXQgVGhpc1NjcmlwdCAiezB9IgotCi1TZXQgc3Jjcm9vdCAiLS0tLS0tLS0iCi0KLVNldCBzcmNkaXIgIjoiCi0KLVNldCBvYmpkaXIgIjoiCi0KLVNldCBwcmVmaXggIntNUFd9IjpHTlVUb29sczoKLQotU2V0IGV4ZWNfcHJlZml4ICIiCi0KLVNldCBiaW5kaXIgIiIKLQotU2V0IGhvc3RfYWxpYXMgIm02OGstYXBwbGUtbXB3IgotCi1TZXQgdGFyZ2V0X2FsaWFzIHtob3N0X2FsaWFzfQotCi1TZXQgaG9zdF9jYyAibXB3YyIKLQotU2V0IHdpdGhfZ251X2xkIDAKLQotU2V0IGhlbHBvdXRwdXQgMAotCi1TZXQgcmVjdXJzZSAxCi0KLVNldCB2ZXJpZnkgMAotU2V0IHZlcmlmeXN0ciAiIgotCi1TZXQgZW5hYmxlX29wdGlvbnMgIiIKLVNldCBkaXNhYmxlX29wdGlvbnMgIiIKLQotIyBQYXJzZSBhcmd1bWVudHMuCi0KLUxvb3AKLQlCcmVhayBJZiB7I30gPT0gMAotCUlmICJ7MX0iID1+IC8tLWNjLwotCQlTZXQgaG9zdF9jYyAiezJ9IgotCQlTaGlmdCAxCi0JRWxzZSBJZiAiezF9IiA9fiAvLS1iaW5kaXIvCi0JCVNldCBiaW5kaXIgInsyfSIKLQkJU2hpZnQgMQotCUVsc2UgSWYgInsxfSIgPX4gLy0tZGlzYWJsZS0/Ky8KLQkJU2V0IGBFY2hvIHsxfSB8IHNlZCAtZSAncy8tLWRpc2FibGUtL2VuYWJsZV8vJ2Agbm8KLQkJU2V0IGRpc2FibGVfb3B0aW9ucyAie2Rpc2FibGVfb3B0aW9uc30gJ3sxfSciCi0JRWxzZSBJZiAiezF9IiA9fiAvLS1lbmFibGUtPysvCi0JCVNldCBgRWNobyB7MX0gfCBzZWQgLWUgJ3MvLS1lbmFibGUtL2VuYWJsZV8vJ2AgeWVzCi0JCVNldCBlbmFibGVfb3B0aW9ucyAie2VuYWJsZV9vcHRpb25zfSAnezF9JyIKLQlFbHNlIElmICJ7MX0iID1+IC8tLWV4ZWMtcHJlZml4LwotCQlTZXQgZXhlY19wcmVmaXggInsyfSIKLQkJU2hpZnQgMQotCUVsc2UgSWYgInsxfSIgPX4gLy0taGVscC8KLQkJU2V0IGhlbHBvdXRwdXQgMQotCUVsc2UgSWYgInsxfSIgPX4gLy0taG9zdC8KLQkJU2V0IGhvc3RfYWxpYXMgInsyfSIKLQkJU2hpZnQgMQotCUVsc2UgSWYgInsxfSIgPX4gLy0tbm9yZWN1cnNpb24vCi0JCVNldCByZWN1cnNlIDAKLQlFbHNlIElmICJ7MX0iID1+IC8tLXByZWZpeC8KLQkJU2V0IHByZWZpeCAiezJ9IgotCQlTaGlmdCAxCi0JRWxzZSBJZiAiezF9IiA9fiAvLS1zcmNkaXIvCi0JCVNldCBzcmNkaXIgInsyfSIKLQkJU2hpZnQgMQotCUVsc2UgSWYgInsxfSIgPX4gLy0tc3Jjcm9vdC8KLQkJU2V0IHNyY3Jvb3QgInsyfSIKLQkJU2hpZnQgMQotCUVsc2UgSWYgInsxfSIgPX4gLy0tdGFyZ2V0LwotCQlTZXQgdGFyZ2V0X2FsaWFzICJ7Mn0iCi0JCVNoaWZ0IDEKLQlFbHNlIElmICJ7MX0iID1+IC8tdi8KLQkJU2V0IHZlcmlmeSAxCi0JCVNldCB2ZXJpZnlzdHIgIi12IgotCUVsc2UgSWYgInsxfSIgPX4gLy0td2l0aC1nbnUtbGQvCi0JCVNldCB3aXRoX2dudV9sZCAxCi0JRWxzZQotCQlFY2hvIC1uICdtcHctY29uZmlndXJlOiBVbnJlY29nbml6ZWQgb3B0aW9uOiAiJwotCQlFY2hvIC1uICJ7MX0iCi0JCUVjaG8gJyI7IHVzZSAtLWhlbHAgZm9yIHVzYWdlLicKLQkJRXhpdCAxCi0JRW5kIElmCi0JU2hpZnQgMQotRW5kIExvb3AKLQotSWYge2hlbHBvdXRwdXR9ID09IDEKLQlFY2hvICJVc2FnZTogbXB3LWNvbmZpZ3VyZSBbT1BUSU9OU10iCi0JRWNobyAiIgotCUVjaG8gIk9wdGlvbnM6IFtkZWZhdWx0cyBpbiBicmFja2V0c10iCi0JRWNobyAiLS1iaW5kaXIgRElSICAgICAgZGlyZWN0b3J5IGZvciBiaW5hcmllcyBbXSIKLQlFY2hvICItLWNjIENDICAgICAgICAgICB1c2UgQyBjb21waWxlciBDQyBbbXB3Y10iCi0JRWNobyAiLS1kaXNhYmxlLUZPTyAgICAgZG8gbm90IGluY2x1ZGUgZmVhdHVyZSBGT08iCi0JRWNobyAiLS1lbmFibGUtRk9PICAgICAgaW5jbHVkZSBmZWF0dXJlIEZPTyIKLQlFY2hvICItLWV4ZWMtcHJlZml4IERJUiBpbnN0YWxsIGhvc3QtZGVwZW5kZW50IGZpbGVzIGludG8gRElSIFtdIgotCUVjaG8gIi0taGVscCAgICAgICAgICAgIHByaW50IHRoaXMgbWVzc2FnZSIKLQlFY2hvICItLWhvc3QgSE9TVCAgICAgICBjb25maWd1cmUgZm9yIEhPU1QgW202OGstYXBwbGUtbXB3XSIKLQlFY2hvICItLW5vcmVjdXJzaW9uICAgICBjb25maWd1cmUgdGhpcyBkaXJlY3Rvcnkgb25seSBbcmVjdXJzZV0iCi0JRWNobyAiLS1wcmVmaXggRElSICAgICAgaW5zdGFsbCBpbnRvIERJUiBbe01QV306R05VVG9vbHM6XSIKLQlFY2hvICItLXNyY2RpciBESVIgICAgICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBbOl0iCi0JRWNobyAiLS1zcmNyb290IERJUiAgICAgZmluZCB0aGUgdG9wbGV2ZWwgc291cmNlcyBpbiBESVIgWzpdIgotCUVjaG8gIi0tdGFyZ2V0IFRBUkdFVCAgIGNvbmZpZ3VyZSBmb3IgVEFSR0VUIFtUQVJHRVQ9SE9TVF0iCi0JRWNobyAiLXYgICAgICAgICAgICAgICAgdmVyYm9zZSIKLQlFY2hvICItLXdpdGgtZ251LWxkICAgICBsaW5rIHVzaW5nIEdOVSBsZCBbbm9dIgotCUV4aXQgMAotRW5kIElmCi0KLVNldCBFeGl0IDAKLQotIyBEZWZhdWx0IGV4ZWNfcHJlZml4IGZyb20gcHJlZml4LgotCi1JZiAie2V4ZWNfcHJlZml4fSIgPT0gIiIKLQlTZXQgZXhlY19wcmVmaXggIntwcmVmaXh9IgotRW5kIElmCi0KLUlmICJ7YmluZGlyfSIgPT0gIiIKLQlTZXQgYmluZGlyICJ7cHJlZml4fSJiaW46Ci1FbmQgSWYKLQotIyBQb2ludCB0byB0aGUgY29ycmVjdCBzZXQgb2YgdG9vbHMgdG8gdXNlIHdpdGggdGhlIGNob3NlbiBjb21waWxlci4KLQotSWYgIntob3N0X2NjfSIgPX4gL21wd2MvCi0JU2V0IGhvc3RfYWxpYXMgIm02OGstYXBwbGUtbXB3IgotCVNldCBjY19uYW1lICd7Q0NfTVBXX0N9JwotCVNldCBzZWdtZW50X2ZsYWcgJy1zICcKLQlTZXQgYXJfbmFtZSAne0FSX0xJQn0nCi0JU2V0IHJhbmxpYl9uYW1lICd7UkFOTElCX05VTEx9JwotCVNldCBjY19sZF9uYW1lICd7Q0NfTERfTElOS30nCi0JU2V0IHByb2dfZXh0X25hbWUgJ3tQUk9HX0VYVF82OEt9JwotCVNldCBleHRyYWxpYnNfbmFtZSAne0VYVFJBTElCU19DfScKLQlTZXQgbWFrZXBlZl9uYW1lICd7TUFLRVBFRl9OVUxMfScKLQlTZXQgcmV6X25hbWUgJ3tSRVpfNjhLfScKLUVsc2UgSWYgIntob3N0X2NjfSIgPX4gL3NjNjhrLwotCVNldCBob3N0X2FsaWFzICJtNjhrLWFwcGxlLW1wdyIKLQlTZXQgY2NfbmFtZSAne0NDX1NDfScKLQlTZXQgc2VnbWVudF9mbGFnICctcyAnCi0JU2V0IGFyX25hbWUgJ3tBUl9MSUJ9JwotCVNldCByYW5saWJfbmFtZSAne1JBTkxJQl9OVUxMfScKLQlTZXQgY2NfbGRfbmFtZSAne0NDX0xEX0xJTkt9JwotCVNldCBwcm9nX2V4dF9uYW1lICd7UFJPR19FWFRfNjhLfScKLQlTZXQgZXh0cmFsaWJzX25hbWUgJ3tFWFRSQUxJQlNfQ30nCi0JU2V0IG1ha2VwZWZfbmFtZSAne01BS0VQRUZfTlVMTH0nCi0JU2V0IHJlel9uYW1lICd7UkVaXzY4S30nCi1FbHNlIElmICJ7aG9zdF9jY30iID1+IC9td2M2OGsvCi0JU2V0IGhvc3RfYWxpYXMgIm02OGstYXBwbGUtbXB3IgotCVNldCBjY19uYW1lICd7Q0NfTVdDNjhLfScKLQlTZXQgc2VnbWVudF9mbGFnICctcyAnCi0JU2V0IGFyX25hbWUgJ3tBUl9NV0xJTks2OEt9JwotCVNldCByYW5saWJfbmFtZSAne1JBTkxJQl9OVUxMfScKLQlTZXQgY2NfbGRfbmFtZSAne0NDX0xEX01XTElOSzY4S30nCi0JU2V0IHByb2dfZXh0X25hbWUgJ3tQUk9HX0VYVF82OEt9JwotCVNldCBleHRyYWxpYnNfbmFtZSAne0VYVFJBTElCU19NV0M2OEt9JwotCVNldCBtYWtlcGVmX25hbWUgJ3tNQUtFUEVGX05VTEx9JwotCVNldCByZXpfbmFtZSAne1JFWl82OEt9JwotRWxzZSBJZiAie2hvc3RfY2N9IiA9fiAvZ2NjNjhrLwotCVNldCBob3N0X2FsaWFzICJtNjhrLWFwcGxlLW1wdyIKLQlTZXQgY2NfbmFtZSAne0NDXzY4S19HQ0N9JwotCVNldCBzZWdtZW50X2ZsYWcgJy1zICcKLQlTZXQgYXJfbmFtZSAne0FSXzY4S19BUn0nCi0JU2V0IHJhbmxpYl9uYW1lICd7UkFOTElCX1JBTkxJQn0nCi0JU2V0IGNjX2xkX25hbWUgJ3tDQ182OEtfR0NDfScKLQlTZXQgcHJvZ19leHRfbmFtZSAne1BST0dfRVhUXzY4S30nCi0JU2V0IGV4dHJhbGlic19uYW1lICd7RVhUUkFMSUJTX0N9JwotCVNldCBtYWtlcGVmX25hbWUgJ3tNQUtFUEVGX05VTEx9JwotCVNldCByZXpfbmFtZSAne1JFWl82OEt9JwotRWxzZSBJZiAie2hvc3RfY2N9IiA9fiAvcHBjYy8KLQlTZXQgaG9zdF9hbGlhcyAicG93ZXJwYy1hcHBsZS1tcHciCi0JU2V0IGNjX25hbWUgJ3tDQ19QUENDfScKLQlTZXQgc2VnbWVudF9mbGFnICctZCBfX19zX2VfZ19fXz0nCi0JU2V0IGFyX25hbWUgJ3tBUl9QUENMSU5LfScKLQlTZXQgcmFubGliX25hbWUgJ3tSQU5MSUJfTlVMTH0nCi0JU2V0IGNjX2xkX25hbWUgJ3tDQ19MRF9QUENMSU5LfScKLQlTZXQgcHJvZ19leHRfbmFtZSAne1BST0dfRVhUX1hDT0ZGfScKLQlTZXQgZXh0cmFsaWJzX25hbWUgJ3tFWFRSQUxJQlNfUFBDfScKLQlTZXQgbWFrZXBlZl9uYW1lICd7TUFLRVBFRl9QUEN9JwotCVNldCByZXpfbmFtZSAne1JFWl9QUEN9JwotRWxzZSBJZiAie2hvc3RfY2N9IiA9fiAvbXJjLwotCVNldCBob3N0X2FsaWFzICJwb3dlcnBjLWFwcGxlLW1wdyIKLQlTZXQgY2NfbmFtZSAne0NDX01SQ30nCi0JU2V0IHNlZ21lbnRfZmxhZyAnLWQgX19fc19lX2dfX189JwotCVNldCBhcl9uYW1lICd7QVJfUFBDTElOS30nCi0JU2V0IHJhbmxpYl9uYW1lICd7UkFOTElCX05VTEx9JwotCVNldCBjY19sZF9uYW1lICd7Q0NfTERfUFBDTElOS30nCi0JU2V0IHByb2dfZXh0X25hbWUgJ3tQUk9HX0VYVF9YQ09GRn0nCi0JU2V0IGV4dHJhbGlic19uYW1lICd7RVhUUkFMSUJTX1BQQ30nCi0JU2V0IG1ha2VwZWZfbmFtZSAne01BS0VQRUZfUFBDfScKLQlTZXQgcmV6X25hbWUgJ3tSRVpfUFBDfScKLUVsc2UgSWYgIntob3N0X2NjfSIgPX4gL3NjcHBjLwotCVNldCBob3N0X2FsaWFzICJwb3dlcnBjLWFwcGxlLW1wdyIKLQlTZXQgY2NfbmFtZSAne0NDX1NDfScKLQlTZXQgc2VnbWVudF9mbGFnICctZCBfX19zX2VfZ19fXz0nCi0JU2V0IGFyX25hbWUgJ3tBUl9QUENMSU5LfScKLQlTZXQgcmFubGliX25hbWUgJ3tSQU5MSUJfTlVMTH0nCi0JU2V0IGNjX2xkX25hbWUgJ3tDQ19MRF9QUENMSU5LfScKLQlTZXQgcHJvZ19leHRfbmFtZSAne1BST0dfRVhUX1hDT0ZGfScKLQlTZXQgZXh0cmFsaWJzX25hbWUgJ3tFWFRSQUxJQlNfUFBDfScKLQlTZXQgbWFrZXBlZl9uYW1lICd7TUFLRVBFRl9QUEN9JwotCVNldCByZXpfbmFtZSAne1JFWl9QUEN9JwotRWxzZSBJZiAie2hvc3RfY2N9IiA9fiAvbXdjcHBjLwotCVNldCBob3N0X2FsaWFzICJwb3dlcnBjLWFwcGxlLW1wdyIKLQlTZXQgY2NfbmFtZSAne0NDX01XQ1BQQ30nCi0JU2V0IHNlZ21lbnRfZmxhZyAnLWQgX19fc19lX2dfX189JwotCVNldCBhcl9uYW1lICd7QVJfTVdMSU5LUFBDfScKLQlTZXQgcmFubGliX25hbWUgJ3tSQU5MSUJfTlVMTH0nCi0JU2V0IGNjX2xkX25hbWUgJ3tDQ19MRF9NV0xJTktQUEN9JwotCSMgTWlzbGVhZGluZywgYnV0IHdlIGRvbid0IG5lZWQgYSBQRUYgc3RlcC4KLQlTZXQgcHJvZ19leHRfbmFtZSAne1BST0dfRVhUXzY4S30nCi0JU2V0IGV4dHJhbGlic19uYW1lICd7RVhUUkFMSUJTX01XQ1BQQ30nCi0JU2V0IG1ha2VwZWZfbmFtZSAne01BS0VQRUZfTlVMTH0nCi0JU2V0IHJlel9uYW1lICd7UkVaX1BQQ30nCi1FbHNlIElmICJ7aG9zdF9jY30iID1+IC9nY2NwcGMvCi0JU2V0IGhvc3RfYWxpYXMgInBvd2VycGMtYXBwbGUtbXB3IgotCVNldCBjY19uYW1lICd7Q0NfUFBDX0dDQ30nCi0JU2V0IHNlZ21lbnRfZmxhZyAnLWQgX19fc19lX2dfX189JwotCVNldCBhcl9uYW1lICd7QVJfUFBDTElOS30nCi0JSWYge3dpdGhfZ251X2xkfSA9PSAxCi0JCVNldCByYW5saWJfbmFtZSAne1JBTkxJQl9SQU5MSUJ9JwotCQlTZXQgY2NfbGRfbmFtZSAne0NDX0xEX0dMRH0nCi0JRWxzZQotCQlTZXQgcmFubGliX25hbWUgJ3tSQU5MSUJfTlVMTH0nCi0JCVNldCBjY19sZF9uYW1lICd7Q0NfTERfUFBDTElOS30nCi0JRW5kIElmCi0JU2V0IHByb2dfZXh0X25hbWUgJ3tQUk9HX0VYVF9YQ09GRn0nCi0JU2V0IGV4dHJhbGlic19uYW1lICd7RVhUUkFMSUJTX1BQQ30nCi0JU2V0IG1ha2VwZWZfbmFtZSAne01BS0VQRUZfUFBDfScKLQlTZXQgcmV6X25hbWUgJ3tSRVpfUFBDfScKLUVsc2UKLQlFY2hvICJ7aG9zdF9jY30iIGlzIG5vdCBhIGtub3duIE1QVyBjb21waWxlciB0eXBlCi1FbmQgSWYKLQotU2V0IGRhc2hfY19mbGFnICcnCi1JZiAie2hvc3RfY2N9IiA9fiAvZ2NjNjhrLwotCVNldCBkYXNoX2NfZmxhZyAnLWMnCi1FbHNlIElmICJ7aG9zdF9jY30iID1+IC9nY2NwcGMvCi0JU2V0IGRhc2hfY19mbGFnICctYycKLUVuZCBJZgotCi0jIChzaG91bGQgaW50ZXJwcmV0IGFsaWFzZXMgaWYgbm90IGluIGNhbm9uaWNhbCBmb3JtKQotCi1TZXQgaG9zdF9jYW5vbmljYWwgIntob3N0X2FsaWFzfSIKLQotU2V0IHRhcmdldF9jYW5vbmljYWwgInt0YXJnZXRfYWxpYXN9IgotCi1TZXQgY29uZmlnZGlycyAiIgotCi1JZiAie3NyY3Jvb3R9IiA9fiAvLS0tLS0tLS0vCi0JU2V0IHNyY3Jvb3QgIntzcmNkaXJ9IgotRW5kIElmCi1JZiAiYEV4aXN0cyAie3NyY2Rpcn0iYCIgPT0gIiIKLQlFY2hvIFNvdXJjZSBkaXJlY3Rvcnkge3NyY2Rpcn0gZG9lcyBub3QgZXhpc3QhCi0JRXhpdCAxCi1FbmQgSWYKLUlmICJgRXhpc3RzICJ7c3Jjcm9vdH0iYCIgPT0gIiIKLQlFY2hvIFRvcC1sZXZlbCBzb3VyY2UgZGlyZWN0b3J5IHtzcmNyb290fSBkb2VzIG5vdCBleGlzdCEKLQlFeGl0IDEKLUVuZCBJZgotCi1TZXQgdGFyZ2V0X2NwdSAiYGVjaG8ge3RhcmdldF9jYW5vbmljYWx9IHwgc2VkICdzL15cKC4qXCktXCguKlwpLVwoLipcKSQvXDEvJ2AiCi1TZXQgdGFyZ2V0X3ZlbmRvciAiYGVjaG8ge3RhcmdldF9jYW5vbmljYWx9IHwgc2VkICdzL15cKC4qXCktXCguKlwpLVwoLipcKSQvXDIvJ2AiCi1TZXQgdGFyZ2V0X29zICJgZWNobyB7dGFyZ2V0X2Nhbm9uaWNhbH0gfCBzZWQgJ3MvXlwoLipcKS1cKC4qXCktXCguKlwpJC9cMy8nYCIKLQotIyBDcmVhdGUgYSBmaWxlIHRoYXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvbGRlciB0aGFuIGFueSBvdGhlciBoZXJlLgotCi1JZiAiYEV4aXN0cyAie29iamRpcn0iX29sZGVzdGAiID09ICIiCi0JbXB3LXRvdWNoIF9vbGRlc3QKLUVuZCBJZgotCi0jIFJlY29yZCB0aGlzIGJlZm9yZSBjcmVhdGluZyBhbnkgZmlsZXMsIG1ha2VmaWxlcyBzb21ldGltZXMgbWVudGlvbgotIyBkZXBlbmRlbmNpZXMgb24gY29uZmlnLnN0YXR1cy4KLQotRWNobyAiIyBUaGlzIGRpcmVjdG9yeSB3YXMgY29uZmlndXJlZCBhcyBmb2xsb3dzOiIgPmNvbmZpZy5uZXcKLUVjaG8gIntUaGlzU2NyaXB0fSAtLWhvc3Qge2hvc3RfYWxpYXN9IC0tdGFyZ2V0IHt0YXJnZXRfYWxpYXN9IC0tc3JjZGlyIHtzcmNkaXJ9ICAtLXNyY3Jvb3Qge3NyY3Jvb3R9ICAtLXByZWZpeCB7cHJlZml4fSAtLWNjIHtob3N0X2NjfSB7dmVyaWZ5c3RyfSB7ZW5hYmxlX29wdGlvbnN9IHtkaXNhYmxlX29wdGlvbnN9IC0tbm9yZWN1cnNpb24iID4+Y29uZmlnLm5ldwotTW92ZUlmQ2hhbmdlIGNvbmZpZy5uZXcgY29uZmlnLnN0YXR1cwotCi1JZiAiYEV4aXN0cyAie3NyY2Rpcn0ibXB3LWNvbmZpZy5pbmAiICE9ICIiCi0JdHItN3RvOCAie3NyY2Rpcn0ibXB3LWNvbmZpZy5pbiA+IntvYmpkaXJ9Im1wdy1jb25maWcuaW4KLQlFeGVjdXRlICJ7b2JqZGlyfSJtcHctY29uZmlnLmluCi1FbmQgSWYKLQotIyBTdGFydCBNYWtlZmlsZSBjb25zdHJ1Y3Rpb24gYnkgZGVmaW5pbmcgYWxsIHRoZSB2YXJpYWJsZXMgY2hvc2VuIGJ5Ci0jIGNvbmZpZ3VyYXRpb24uCi0KLUVjaG8gIiMgVGhpcyBNYWtlZmlsZSBwcm9kdWNlZCBieSBtcHctY29uZmlndXJlLiAgQ2hhbmdlcyBtYXkgZ2V0IGxvc3QhIiA+ICJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0KLUVjaG8gInNyY3Jvb3QgPSAiIHtzcmNyb290fQkJCT4+ICJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0KLUVjaG8gInRvcHNyY2RpciA9ICIge3NyY3Jvb3R9CQkJPj4gIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotRWNobyAic3JjZGlyID0gIiB7c3JjZGlyfQkJCT4+ICJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0KLUVjaG8gIm1wd19wcmVmaXggPSAiIHtwcmVmaXh9CQkJPj4gIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotRWNobyAibXB3X2V4ZWNfcHJlZml4ID0gIiB7ZXhlY19wcmVmaXh9CQk+PiAie29iamRpcn0iTWFrZWZpbGUudGVtCi1FY2hvICJtcHdfYmluZGlyID0gIiB7YmluZGlyfQkJCT4+ICJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0KLUVjaG8gImhvc3RfYWxpYXMgPSAiIHtob3N0X2FsaWFzfQkJPj4gIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotRWNobyAidGFyZ2V0X2FsaWFzID0gIiB7dGFyZ2V0X2FsaWFzfQkJPj4gIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotRWNobyAidGFyZ2V0X2NwdSA9ICIge3RhcmdldF9jcHV9CQk+PiAie29iamRpcn0iTWFrZWZpbGUudGVtCi1FY2hvICJ0YXJnZXRfdmVuZG9yID0gIiB7dGFyZ2V0X3ZlbmRvcn0JCT4+ICJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0KLUVjaG8gInRhcmdldF9vcyA9ICIge3RhcmdldF9vc30JCQk+PiAie29iamRpcn0iTWFrZWZpbGUudGVtCi1FY2hvICJ0YXJnZXRfY2Fub25pY2FsID0gIiB7dGFyZ2V0X2Nhbm9uaWNhbH0JPj4gIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotRWNobyAiaG9zdF9tYWtlZmlsZV9mcmFnID0gIgkJCT4+ICJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0KLUVjaG8gInRhcmdldF9tYWtlZmlsZV9mcmFnID0gIgkJCT4+ICJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0KLUVjaG8gIkNDID0gIiB7Y2NfbmFtZX0JCQkJPj4gIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotRWNobyAiQVIgPSAiIHthcl9uYW1lfQkJCQk+PiAie29iamRpcn0iTWFrZWZpbGUudGVtCi1FY2hvICJSQU5MSUIgPSAiIHtyYW5saWJfbmFtZX0JCQk+PiAie29iamRpcn0iTWFrZWZpbGUudGVtCi1FY2hvICJDQ19MRCA9ICIge2NjX2xkX25hbWV9CQkJPj4gIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotRWNobyAiUFJPR19FWFQgPSAiIHtwcm9nX2V4dF9uYW1lfQkJPj4gIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotRWNobyAiRVhUUkFMSUJTID0gIiB7ZXh0cmFsaWJzX25hbWV9CQk+PiAie29iamRpcn0iTWFrZWZpbGUudGVtCi1FY2hvICJNQUtFUEVGID0gIiB7bWFrZXBlZl9uYW1lfQkJPj4gIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotRWNobyAiUkVaID0gIiB7cmV6X25hbWV9CQkJPj4gIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotCi1JZiB7aG9zdF9jY30gPX4gL2djY3BwYy8KLQlFY2hvIC1uICJkcSA9XE9wdGlvbi1kXE9wdGlvbi1kXE9wdGlvbi1kIiA+ICJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0wCi0JRWNobyAnIicgCQkJCSA+PiAie29iamRpcn0iTWFrZWZpbGUudGVtMAotCXRyLTd0bzggICJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0wCT4+IntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotRWxzZQotCUVjaG8gLW4gImRxID0nIiAJCQk+PiAie29iamRpcn0iTWFrZWZpbGUudGVtCi0JRWNobyAtbiAnIicgCQkJCT4+ICJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0KLQlFY2hvICAgICInIiAJCQkJPj4gIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotRW5kIElmCi0KLSMgQXBwZW5kIHRoZSBtYXN0ZXIgc2V0IG9mIGRlZmluaXRpb25zIGZvciB0aGUgdmFyaW91cyBjb21waWxlcnMuCi0KLUlmICJgRXhpc3RzICJ7c3JjZGlyfSJjb25maWc6bXB3LW1oLW1wd2AiICE9ICIiCi0JdHItN3RvOCAie3NyY2Rpcn0iY29uZmlnOm1wdy1taC1tcHcgPj4ie29iamRpcn0iTWFrZWZpbGUudGVtCi1FbHNlIElmICJgRXhpc3RzICJ7c3Jjcm9vdH0iY29uZmlnOm1wdy1taC1tcHdgIiAhPSAiIgotCXRyLTd0bzggIntzcmNyb290fSJjb25maWc6bXB3LW1oLW1wdyA+PiJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0KLUVsc2UKLQlFY2hvICJjYW4ndCBmaW5kIGEgaG9zdCBjb25maWcgZmlsZSEiCi0JRXhpdCAwCi1FbmQgSWYKLQotIyBBcHBlbmQgYW55dGhpbmcgcHJvZHVjZWQgYnkgdGhlIGRpcmVjdG9yeSdzIG1wdy1jb25maWcuaW4uCi0KLUlmICJgRXhpc3RzICJ7b2JqZGlyfSJtay50bXBgIiAhPSAiIgotCUNhdGVuYXRlICJ7b2JqZGlyfSJtay50bXAgPj4ie29iamRpcn0iTWFrZWZpbGUudGVtCi0JIyBBbiBtcHctY29uZmlnLmluIG1pZ2h0IGNoYW5nZSBzbyBhcyBub3QgdG8gY3JlYXRlIHRoaXMKLQkjIGFueW1vcmUsIHNvIGdldCByaWQgb2YgaXQgbm93IHRvIGJlIHNhZmUuCi0JRGVsZXRlIC1pIC15ICJ7b2JqZGlyfSJtay50bXAKLUVuZCBJZgotCi0jIElmIHRoZXJlIGFyZSBzZWQgc2NyaXB0cyB0byBlZGl0IHRoZSBVbml4IE1ha2VmaWxlLmluLCB1c2UgdGhlbTsgb3RoZXJ3aXNlCi0jIHVzZSBhbiBtcHctbWFrZS5pbiBpZiBwcmVzZW50LgotCi1JZiAiYEV4aXN0cyAie3NyY2Rpcn0ibXB3LW1ha2Uuc2VkYCIgIT0gIiIKLQlJZiAiYEV4aXN0cyAie29iamRpcn0iaGFja2VkX01ha2VmaWxlLmluYCIgIT0gIiIKLQkJU2V0IE1ha2VmaWxlSW4gIntvYmpkaXJ9ImhhY2tlZF9NYWtlZmlsZS5pbgotCUVsc2UKLQkJU2V0IE1ha2VmaWxlSW4gIntzcmNkaXJ9Ik1ha2VmaWxlLmluCi0JRW5kIElmCi0JIyBGaW5kIHRoZSBnZW5lcmljIG1ha2VmaWxlIGVkaXRpbmcgc2NyaXB0LgotCUlmICJgRXhpc3RzICJ7c3Jjcm9vdH0iY29uZmlnOm1wdzpnLW1wdy1tYWtlLnNlZGAiICE9ICIiCi0JCXNlZCAtZiAie3NyY3Jvb3R9ImNvbmZpZzptcHc6Zy1tcHctbWFrZS5zZWQgIntNYWtlZmlsZUlufSIgPiJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0xCi0JRWxzZSBJZiAiYEV4aXN0cyAie3NyY3Jvb3R9InV0aWxzOm1wdzpnLW1wdy1tYWtlLnNlZGAiICE9ICIiCi0JCXNlZCAtZiAie3NyY3Jvb3R9InV0aWxzOm1wdzpnLW1wdy1tYWtlLnNlZCAie01ha2VmaWxlSW59IiA+IntvYmpkaXJ9Ik1ha2VmaWxlLnRlbTEKLQlFbHNlIElmICJgRXhpc3RzICJ7c3JjZGlyfSJnLW1wdy1tYWtlLnNlZGAiICE9ICIiCi0JCXNlZCAtZiAie3NyY2Rpcn0iZy1tcHctbWFrZS5zZWQgIntNYWtlZmlsZUlufSIgPiJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0xCi0JRWxzZQotCQlFY2hvIFdhcm5pbmc6IGctbXB3LW1ha2Uuc2VkIG5vdCBmb3VuZCwgY29weWluZyAie01ha2VmaWxlSW59IiB2ZXJiYXRpbS4uLgotCQlDYXRlbmF0ZSAie01ha2VmaWxlSW59IiA+IntvYmpkaXJ9Ik1ha2VmaWxlLnRlbTEKLQlFbmQgSWYKLQlzZWQgLWYgIntzcmNkaXJ9Im1wdy1tYWtlLnNlZCAie29iamRpcn0iTWFrZWZpbGUudGVtMSA+IntvYmpkaXJ9Ik1ha2VmaWxlLnRlbTIKLQlzZWQgLWUgJ3MvXnByZWZpeCA9IC4qJC9wcmVmaXggPSB7bXB3X3ByZWZpeH0vZycgLWUgJ3MvXmV4ZWNfcHJlZml4ID0gLiokL2V4ZWNfcHJlZml4ID0ge21wd19leGVjX3ByZWZpeH0vZycgLWUgJ3MvXmJpbmRpciA9IEBiaW5kaXJAL2JpbmRpciA9IHttcHdfYmluZGlyfS9nJyAie29iamRpcn0iTWFrZWZpbGUudGVtMiA+IntvYmpkaXJ9Ik1ha2VmaWxlLnRlbTMKLQlzZWQgLWUgInMvQERBU0hfQ19GTEFHQC97ZGFzaF9jX2ZsYWd9LyIgLWUgInMvQFNFR01FTlRfRkxBRyhcKFteKV0qXCkpQC97c2VnbWVudF9mbGFnfVwxLyIgIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbTMgPiJ7b2JqZGlyfSJtcHctbWFrZS5pbgotCXRyLTd0bzggIntvYmpkaXJ9Im1wdy1tYWtlLmluID4+IntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotCUlmICJgRXhpc3RzICJ7b2JqZGlyfSJtay5zZWRgIiAhPSAiIgotCQlzZWQgLWYgIntvYmpkaXJ9Im1rLnNlZCAie29iamRpcn0iTWFrZWZpbGUudGVtID4ie29iamRpcn0iTWFrZWZpbGUudGVtMgotCQlSZW5hbWUgLXkgIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbTIgIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbQotCUVuZCBJZgotCU1vdmVJZkNoYW5nZSAie29iamRpcn0iTWFrZWZpbGUudGVtICJ7b2JqZGlyfSJNYWtlZmlsZQotCURlbGV0ZSAtaSAteSAie29iamRpcn0iTWFrZWZpbGUudGVtWzEyXQotCUlmIHt2ZXJpZnl9ID09IDEKLQkJRWNobyBDcmVhdGVkIE1ha2VmaWxlIGluICJgRGlyZWN0b3J5YCIKLQlFbmQgSWYKLUVsc2UgSWYgImBFeGlzdHMgIntzcmNkaXJ9Im1wdy1tYWtlLmluYCIgIT0gIiIKLQlzZWQgLWUgJ3MvXnByZWZpeCA9IC4qJC9wcmVmaXggPSB7bXB3X3ByZWZpeH0vZycgIntzcmNkaXJ9Im1wdy1tYWtlLmluID4ie29iamRpcn0iTWFrZWZpbGUudGVtMQotCXNlZCAtZSAicy9AREFTSF9DX0ZMQUdAL3tkYXNoX2NfZmxhZ30vIiAtZSAicy9AU0VHTUVOVF9GTEFHKFwoW14pXSpcKSlAL3tzZWdtZW50X2ZsYWd9fVwxLyIgIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbTEgPiJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0yCi0JdHItN3RvOCAie29iamRpcn0iTWFrZWZpbGUudGVtMiA+PiJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0KLQlJZiAiYEV4aXN0cyAie29iamRpcn0ibWsuc2VkYCIgIT0gIiIKLQkJc2VkIC1mICJ7b2JqZGlyfSJtay5zZWQgIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbSA+IntvYmpkaXJ9Ik1ha2VmaWxlLnRlbTIKLQkJUmVuYW1lIC15ICJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0yICJ7b2JqZGlyfSJNYWtlZmlsZS50ZW0KLQlFbmQgSWYKLQlNb3ZlSWZDaGFuZ2UgIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbSAie29iamRpcn0iTWFrZWZpbGUKLQlEZWxldGUgLWkgLXkgIntvYmpkaXJ9Ik1ha2VmaWxlLnRlbVsxMl0KLQlJZiB7dmVyaWZ5fSA9PSAxCi0JCUVjaG8gQ3JlYXRlZCBNYWtlZmlsZSBpbiAiYERpcmVjdG9yeWAiCi0JRW5kIElmCi1FbmQgSWYKLQotIyBQcm9kdWNlIGEgYnVpbGQgc2NyaXB0IGlmIHRoZSBzb3VyY2UgaXMgZGVmaW5lZC4KLQotSWYgImBFeGlzdHMgIntzcmNkaXJ9Im1wdy1idWlsZC5pbmAiICE9ICIiCi0JRWNobyAiU2V0IHNyY3Jvb3QgIiB7c3Jjcm9vdH0gPiAie29iamRpcn0ibXB3LWJ1aWxkLnRlbQotCUVjaG8gIlNldCBzcmNkaXIgIiB7c3JjZGlyfSA+PiAie29iamRpcn0ibXB3LWJ1aWxkLnRlbQotCUVjaG8gIlNldCB0YXJnZXRfY2Fub25pY2FsICIge3RhcmdldF9jYW5vbmljYWx9ID4+ICJ7b2JqZGlyfSJtcHctYnVpbGQudGVtCi0JRWNobyAiU2V0IHByZWZpeCAiIHtwcmVmaXh9ID4+ICJ7b2JqZGlyfSJtcHctYnVpbGQudGVtCi0JdHItN3RvOCAie3NyY2Rpcn0ibXB3LWJ1aWxkLmluID4+IntvYmpkaXJ9Im1wdy1idWlsZC50ZW0KLQlNb3ZlSWZDaGFuZ2UgIntvYmpkaXJ9Im1wdy1idWlsZC50ZW0gIntvYmpkaXJ9Im1wdy1idWlsZAotCUlmIHt2ZXJpZnl9ID09IDEKLQkJRWNobyBDcmVhdGVkIG1wdy1idWlsZCBpbiAiYERpcmVjdG9yeWAiCi0JRW5kIElmCi1FbmQgSWYKLQotIyBBcHBseSBvdXJzZWx2ZXMgcmVjdXJzaXZlbHkgdG8gdGhlIGxpc3Qgb2Ygc3ViZGlyZWN0b3JpZXMgdG8gY29uZmlndXJlLgotCi1JZiB7cmVjdXJzZX0gPT0gMQotCUZvciBzdWJkaXIgSW4ge2NvbmZpZ2RpcnN9Ci0JCVNldCBzYXZlZGlyICJgRGlyZWN0b3J5YCIKLQkJSWYgImBFeGlzdHMgIntzcmNkaXJ9e3N1YmRpcn06ImAiID09ICIiCi0JCQlJZiB7dmVyaWZ5fSA9PSAxCi0JCQkJRWNobyBObyAie3NyY2Rpcn17c3ViZGlyfToiIGZvdW5kLCBza2lwcGluZwotCQkJRW5kIElmCi0JCQlDb250aW51ZQotCQlFbmQgSWYKLQkJSWYge3ZlcmlmeX0gPT0gMQotCQkJRWNobyBDb25maWd1cmluZyB7c3ViZGlyfS4uLgotCQlFbmQgSWYKLQkJSWYgImBFeGlzdHMgIntvYmpkaXJ9e3N1YmRpcn06ImAiID09ICIiCi0JCQlOZXdGb2xkZXIgIntvYmpkaXJ9e3N1YmRpcn0iCi0JCUVuZCBJZgotCQlTZXREaXJlY3RvcnkgIntvYmpkaXJ9e3N1YmRpcn06IgotCQkie1RoaXNTY3JpcHR9IiAtLXRhcmdldCAie3RhcmdldF9jYW5vbmljYWx9IiAtLXNyY2RpciAie3NyY2Rpcn17c3ViZGlyfToiIC0tc3Jjcm9vdCAie3NyY3Jvb3R9IiAtLXByZWZpeCAie3ByZWZpeH0iIC0tY2MgIntob3N0X2NjfSIge3ZlcmlmeXN0cn0ge2VuYWJsZV9vcHRpb25zfSB7ZGlzYWJsZV9vcHRpb25zfQotCQlTZXREaXJlY3RvcnkgIntzYXZlZGlyfSIKLQlFbmQgRm9yCi1FbmQgSWYKLQotU2V0RGlyZWN0b3J5ICJ7c2F2ZWRpcn0iCmRpZmYgLS1naXQgYS9tcHctaW5zdGFsbCBiL21wdy1pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGM1YWFjLi4wMDAwMDAwCi0tLSBhL21wdy1pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLSMgR05VIEluc3RhbGwgc2NyaXB0IGZvciBNUFcuCi0KLVNldCBPbGRFeGl0ICJ7RXhpdH0iCi1TZXQgRXhpdCAwCi0KLVNldCBUZW1wVXNlclN0YXJ0dXAgIntUZW1wRm9sZGVyfSJfX3RlbXBfX1VzZXJTdGFydHVwCi0KLUVjaG8gJyMgVXNlclN0YXJ0dXAgZ2VuZXJhdGVkIGJ5IEdOVSBJbnN0YWxsIHNjcmlwdCcgPiAie1RlbXBVc2VyU3RhcnR1cH0iCi1FY2hvICcnCQkJCQkJPj4gIntUZW1wVXNlclN0YXJ0dXB9IgotCi0jIChzaG91bGQpIENoZWNrIHRoYXQgZGlzayBzcGFjZSBpcyBzdWZmaWNpZW50IGZvciBpbnN0YWxsYXRpb24uCi0KLSMgQXNzdW1lIHRoYXQgdGhlIGluc3RhbGwgc2NyaXB0IGlzIHdoZXJlIGV2ZXJ5dGhpbmcgZWxzZSBpcy4KLQotU2V0IHRoaXNkaXIgImBEaXJlY3RvcnlgIgotCi0jIENvcHkgdGhlIGJpbmFyaWVzIHRvIHRoZSBkZXNpcmVkIHBsYWNlLgotCi1Db25maXJtIC10ICJDb3B5IHRoZSBiaW5hcmllcyB0byBzb21ld2hlcmUgZWxzZT8iCi1TZXQgVG1wU3RhdHVzIHtTdGF0dXN9Ci1JZiB7VG1wU3RhdHVzfSA9PSAwCi0JU2V0IGJpbmRlc3QgImBHZXRGaWxlTmFtZSAtZCAtbSAiV2hlcmUgdG8gaW5zdGFsbCB0aGUgYmluYXJpZXM/ImAiCi0JSWYge1N0YXR1c30gPT0gMAotCQlJZiAiYEV4aXN0cyAie3RoaXNkaXJ9YmluImAiICE9ICIiCi0JCQlGb3IgYWZpbGUgSW4gInt0aGlzZGlyfSJiaW46XE9wdGlvbi14Ci0JCQkJRHVwbGljYXRlIC15ICJ7YWZpbGV9IiAie2JpbmRlc3R9IgotCQkJRW5kIEZvcgotCQlFbHNlCi0JCQlFY2hvICJiaW4gZGlyZWN0b3J5IG5vdCBmb3VuZCwgZXhpdGluZyIKLQkJCUV4aXQgMQotCQlFbmQgSWYKLQlFbHNlCi0JCUVjaG8gIk5vIGRlc3RpbmF0aW9uIHN1cHBsaWVkLCBleGl0aW5nIgotCQlFeGl0IDEKLQlFbmQgSWYKLUVsc2UgSWYge1RtcFN0YXR1c30gPT0gNAotCSMgVXNlIHRoZSBleGlzdGluZyBkaXJlY3RvcnkuCi0JU2V0IGJpbmRlc3QgInt0aGlzZGlyfWJpbjoiCi1FbHNlCi0JIyBDYW5jZWxsZWQgZnJvbSBjb25maXJtYXRpb24sIGVzY2FwZSBhbHRvZ2V0aGVyLgotCUV4aXQgMQotRW5kIElmCi0KLSMgQ29weSB0aGUgbGlicmFyaWVzIHRvIHRoZSBkZXNpcmVkIHBsYWNlLgotCi1Db25maXJtIC10ICJDb3B5IHRoZSBsaWJyYXJpZXMgdG8gc29tZXdoZXJlIGVsc2U/IgotU2V0IFRtcFN0YXR1cyB7U3RhdHVzfQotSWYge1RtcFN0YXR1c30gPT0gMAotCVNldCBsaWJkZXN0ICJgR2V0RmlsZU5hbWUgLWQgLW0gIldoZXJlIHRvIGluc3RhbGwgdGhlIGxpYnJhcmllcz8iYCIKLQlJZiB7U3RhdHVzfSA9PSAwCi0JCUlmICJgRXhpc3RzICJ7dGhpc2Rpcn1saWI6ImAiICE9ICIiCi0JCQlGb3IgYWZpbGUgSW4gInt0aGlzZGlyfSJsaWI6XE9wdGlvbi14Ci0JCQkJRHVwbGljYXRlIC15ICJ7YWZpbGV9IiAie2xpYmRlc3R9IgotCQkJRW5kIEZvcgotCQlFbHNlCi0JCQlFY2hvICJsaWIgZGlyZWN0b3J5IG5vdCBmb3VuZCwgZXhpdGluZyIKLQkJCUV4aXQgMQotCQlFbmQgSWYKLQlFbHNlCi0JCUVjaG8gIk5vIGRlc3RpbmF0aW9uIHN1cHBsaWVkLCBleGl0aW5nIgotCQlFeGl0IDEKLQlFbmQgSWYKLUVsc2UgSWYge1RtcFN0YXR1c30gPT0gNAotCSMgVXNlIHRoZSBleGlzdGluZyBkaXJlY3RvcnkuCi0JU2V0IGxpYmRlc3QgInt0aGlzZGlyfWxpYjoiCi1FbHNlCi0JIyBDYW5jZWxsZWQgZnJvbSBjb25maXJtYXRpb24sIGVzY2FwZSBhbHRvZ2V0aGVyLgotCUV4aXQgMQotRW5kIElmCi0KLQotIyBBZGQgdGhlIGxvY2F0aW9uIG9mIHRoZSBiaW5hcmllcyB0byB0aGUgY29tbWFuZCBwYXRoLgotCi1FY2hvIC1uICdTZXQgQ29tbWFuZHMgIicJCQk+PiAie1RlbXBVc2VyU3RhcnR1cH0iCi1FY2hvIC1uICJ7YmluZGVzdH0iCQkJCT4+ICJ7VGVtcFVzZXJTdGFydHVwfSIKLUVjaG8gICAgJyx7Q29tbWFuZHN9IicJCQkJPj4gIntUZW1wVXNlclN0YXJ0dXB9IgotRWNobyAnJwkJCQkJCT4+ICJ7VGVtcFVzZXJTdGFydHVwfSIKLQotIyBTZXQgdXAgR0NDIGV4ZWMgcHJlZml4LgotCi1TZXQgZ2NjbGliZGlyICJ7bGliZGVzdH0iZ2NjLWxpYjoKLQotRWNobyAtbiAnU2V0IEdDQ19FWEVDX1BSRUZJWCAiJwkJCT4+ICJ7VGVtcFVzZXJTdGFydHVwfSIKLUVjaG8gLW4gIntnY2NsaWJkaXJ9IgkJCQk+PiAie1RlbXBVc2VyU3RhcnR1cH0iCi1FY2hvICAgICciJwkJCQkJPj4gIntUZW1wVXNlclN0YXJ0dXB9IgotRWNobyAiRXhwb3J0IEdDQ19FWEVDX1BSRUZJWCIJCQk+PiAie1RlbXBVc2VyU3RhcnR1cH0iCi1FY2hvICcnCQkJCQkJPj4gIntUZW1wVXNlclN0YXJ0dXB9IgotCi0jIFNldCB1cCBwYXRoIHRvIGxpYmdjYy54Y29mZiBldGMuCi0KLUVjaG8gLW4gJ1NldCBHQ0NQUENMaWJyYXJpZXMgIicJCQk+PiAie1RlbXBVc2VyU3RhcnR1cH0iCi1FY2hvIC1uICJ7bGliZGVzdH0iCQkJCT4+ICJ7VGVtcFVzZXJTdGFydHVwfSIKLUVjaG8gICAgJyInCQkJCQk+PiAie1RlbXBVc2VyU3RhcnR1cH0iCi1FY2hvICJFeHBvcnQgR0NDUFBDTGlicmFyaWVzIgkJCT4+ICJ7VGVtcFVzZXJTdGFydHVwfSIKLUVjaG8gJycJCQkJCQk+PiAie1RlbXBVc2VyU3RhcnR1cH0iCi0KLSMgRGlzcGxheSBjb250ZW50cyBvZiBVc2VyU3RhcnR1cCwgY29uZmlybSBpbnN0YWxsYXRpb24uCi0KLVNldCBVc2VyU3RhcnR1cE5hbWUgIlVzZXJTdGFydHVwXE9wdGlvbi04R05VIgotCi1FY2hvICJDb250ZW50cyBvZiIge1VzZXJTdGFydHVwTmFtZX0gIndpbGwgYmU6IgotQ2F0ZW5hdGUgIntUZW1wVXNlclN0YXJ0dXB9IgotCi1Db25maXJtICJJbnN0YWxsIHtVc2VyU3RhcnR1cE5hbWV9IGludG8gdGhlIE1QVyBmb2xkZXIge01QV30gPyIKLUlmIHtTdGF0dXN9ID09IDAKLQlEdXBsaWNhdGUgIntUZW1wVXNlclN0YXJ0dXB9IiAie01QV317VXNlclN0YXJ0dXBOYW1lfSIKLQlEZWxldGUgLXkgIntUZW1wVXNlclN0YXJ0dXB9IgotRWxzZQotCUVjaG8gIntVc2VyU3RhcnR1cE5hbWV9IGZpbGUgbm90IGluc3RhbGxlZCIKLUVuZCBJZgotCi0jIChzaG91bGQpIENoZWNrIEhFWEEgcmVzb3VyY2UsIHdhcm4gaWYgbG93LgotCi0jIChzaG91bGQpIENoZWNrIGZvciBzcGFjZXMgaW4gcGF0aG5hbWVzLCB3YXJuIGlmIGZvdW5kLgotCi1FY2hvICJJbnN0YWxsYXRpb24gd2FzIHN1Y2Nlc3NmdWwuIgotRWNobyAiIgotRWNobyAiQmUgc3VyZSB0byByZXZpZXcgdGhlIHVzYWdlIG5vdGVzIGluICdSZWFkIE1lIGZvciBNUFcnIGJlZm9yZSBwcm9jZWVkaW5nISIKLQotIyBSZXN0b3JlIHByZXZpb3VzIHNldHRpbmdzLgotCi1TZXQgRXhpdCAie09sZEV4aXR9IgpkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9DaGFuZ2VMb2cgYi9vcGNvZGVzL0NoYW5nZUxvZwppbmRleCA2M2MxN2E1Li42NWIwODk4IDEwMDY0NAotLS0gYS9vcGNvZGVzL0NoYW5nZUxvZworKysgYi9vcGNvZGVzL0NoYW5nZUxvZwpAQCAtMSw2ICsxLDE5IEBACi0yMDA0LTAzLTE1ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+Ci0gCi0gICAgICAgICogcHBjLW9wYy5jIChwb3dlcnBjX29wY29kZXMpOiBBZGQgQk9PS0UgdmVyc2lvbnMgb2YgbWZzcHJnLgorMjAwNC0wMy0zMCAgS2F6dWhpcm8gSW5hb2thICA8aW5hb2thLmthenVoaXJvQHJlbmVzYXMuY29tPgorCisJKiBtMzJyLWFzbS5jOiBSZWdlbmVyYXRlLgorCisyMDA0LTAzLTI5ICBTdGFuIFNoZWJzICA8c2hlYnNAYXBwbGUuY29tPgorCisJKiBtcHctY29uZmlnLmluLCBtcHctbWFrZS5zZWQ6IFJlbW92ZSBNUFcgc3VwcG9ydCBmaWxlcywgbm8gbG9uZ2VyCisJdXNlZC4KKworMjAwNC0wMy0xOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKworCSogYWNsb2NhbC5tNDogUmVnZW5lcmF0ZS4KKwkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKwkqIHBvL1BPVEZJTEVTLmluOiBSZWdlbmVyYXRlLgorCSogcG8vb3Bjb2Rlcy5wb3Q6IFJlZ2VuZXJhdGUuCiAKIDIwMDQtMDMtMTYgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CiAKQEAgLTExLDE4ICsyNCwyMSBAQAogCShSQU9QVCk6IFJlbmFtZSBmcm9tIFJBTy4gIFVwZGF0ZSBhbGwgdXNlcy4KIAkocG93ZXJwY19vcGNvZGVzKTogVXNlIFJBMCBhcyBhcHByb3ByaWF0ZS4KIAorMjAwNC0wMy0xNSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgorCisJKiBwcGMtb3BjLmMgKHBvd2VycGNfb3Bjb2Rlcyk6IEFkZCBCT09LRSB2ZXJzaW9ucyBvZiBtZnNwcmcuCisKIDIwMDQtMDMtMTUgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CiAKIAkqIHNwYXJjLWRpcy5jIChwcmludF9pbnNuX3NwYXJjKTogVXBkYXRlIGdldHdvcmQgcHJvdG90eXBlLgogCi0yMDA0LTAzLTEzICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgorMjAwNC0wMy0xMiAgTWljaGFsIEx1ZHZpZyAgPG1sdWR2aWdAc3VzZS5jej4KIAotCUFwcGx5IHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyBmcm9tIG1haW5saW5lCi0JMjAwNC0wMy0xMiAgTWljaGFsIEx1ZHZpZyAgPG1sdWR2aWdAc3VzZS5jej4KIAkqIGkzODYtZGlzLmMgKEdSUFBMT0NLKTogRGVsZXRlLgogCShncnBzKTogRGVsZXRlIEdSUFBMT0NLIGVudHJ5LgogCi0JMjAwNC0wMy0xMiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KKzIwMDQtMDMtMTIgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CisKIAkqIGkzODYtZGlzLmMgKE9QX00sIE9QXzBmMGUsIE9QXzBmYWUsIE5PUF9GaXh1cCk6IE5ldyBmdW5jdGlvbnMuCiAJKE0sIE1wKTogVXNlIE9QX00uCiAJKE5vbmUsIFBBRExPQ0tfU1BFQ0lBTCwgUEFETE9DS18wKTogRGVsZXRlLgpAQCAtMzYsMTUgKzUyLDEyIEBACiAJKHByaW50X2luc24pOiBSZXZlcnQgUEFETE9DS19TUEVDSUFMIGNvZGUuCiAJKE9QX0UpOiBEZWxldGUgc2ZlbmNlLCBsZmVuY2UsIG1mZW5jZSBjaGVja3MuCiAKLQkyMDA0LTAzLTEyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKzIwMDQtMDMtMTIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCiAJKiBpMzg2LWRpcy5jIChncnBzKTogVXNlIElOVkxQR19GaXh1cCBpbnN0ZWFkIG9mIE9QX0UgZm9yIGludmxwZy4KIAkoSU5WTFBHX0ZpeHVwKTogTmV3IGZ1bmN0aW9uLgogCShQTklfRml4dXApOiBSZW1vdmUgQVRUUklCVVRFX1VOVVNFRCBmcm9tIHNpemVmbGFnLgogCi0JMjAwNC0wMy0xMiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KLQkqIGkzODYtZGlzLmMgKGdycHMpOiBVc2UgY2xmbHVzaCBieSBkZWZhdWx0IGZvciAweDBmYWUvNy4KLQkoT1BfRSk6IFR3aWRkbGUgY2xmbHVzaCB0byBzZmVuY2UgaGVyZS4KLQogMjAwNC0wMy0xMiAgTWljaGFsIEx1ZHZpZyAgPG1sdWR2aWdAc3VzZS5jej4KIAogCSogaTM4Ni1kaXMuYyAoUEFETE9DS19TUEVDSUFMLCBQQURMT0NLXzApOiBOZXcgZGVmaW5lcy4KQEAgLTUyLDYgKzY1LDc5IEBACiAJKHBhZGxvY2tfdGFibGUpOiBOZXcgc3RydWN0IHdpdGggUGFkTG9jayBpbnN0cnVjdGlvbnMuCiAJKHByaW50X2luc24pOiBIYW5kbGUgUEFETE9DS19TUEVDSUFMLgogCisyMDA0LTAzLTEyICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgorCisJKiBpMzg2LWRpcy5jIChncnBzKTogVXNlIGNsZmx1c2ggYnkgZGVmYXVsdCBmb3IgMHgwZmFlLzcuCisJKE9QX0UpOiBUd2lkZGxlIGNsZmx1c2ggdG8gc2ZlbmNlIGhlcmUuCisKKzIwMDQtMDMtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CisKKwkqIHBvL2RlLnBvOiBVcGRhdGVkIEdlcm1hbiB0cmFuc2xhdGlvbi4KKworMjAwMy0wMy0wMyAgQW5kcmV3IFN0dWJicyAgPGFuZHJldy5zdHViYnNAc3VwZXJoLmNvbT4KKworCSogc2gtZGlzLmMgKHByaW50X2luc25fc2gpOiBEb24ndCBkaXNhc3NlbWJsZSBmcCBpbnN0cnVjdGlvbnMgaW4KKwlub2ZwdSBtb2RlLiAgQWRkIEJGRCB0eXBlIGJmZF9tYWNoX3NoNF9ub21tdV9ub2ZwdS4KKwkqIHNoLW9wYy5oOiBBZGQgc2g0X25vbW11X25vZnB1IGFyY2hpdGVjdHVyZSBhbmQgYWRqdXN0IGluc3RydWN0aW9ucworCWFjY29yZGluZ2x5LgorCisyMDA0LTAzLTAxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CisKKwkqIGZydi1hc20uYzogUmVnZW5lcmF0ZS4KKwkqIGZydi1kZXNjLmM6IFJlZ2VuZXJhdGUuCisJKiBmcnYtZGVzYy5oOiBSZWdlbmVyYXRlLgorCSogZnJ2LWRpcy5jOiBSZWdlbmVyYXRlLgorCSogZnJ2LWlibGQuYzogUmVnZW5lcmF0ZS4KKwkqIGZydi1vcGMuYzogUmVnZW5lcmF0ZS4KKwkqIGZydi1vcGMuaDogUmVnZW5lcmF0ZS4KKworMjAwNC0wMy0wMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgorCisJKiBmcnYtZGVzYy5jLCBmcnYtb3BjLmM6IFJlZ2VuZXJhdGUuCisKKzIwMDQtMDMtMDEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KKworCSogZnJ2LWRlc2MuYywgZnJ2LW9wYy5jLCBmcnYtb3BjLmg6IFJlZ2VuZXJhdGUuCisKKzIwMDQtMDItMjYgIEFuZHJldyBTdHViYnMgIDxhbmRyZXcuc3R1YmJzQHN1cGVyaC5jb20+CisKKwkqIHNoLW9wYy5oOiBNb3ZlIGZzY2EgYW5kIGZzcnJhIGluc3RydWN0aW9ucyBmcm9tIHNoNGEgdG8gc2g0LgorCUFsc28gY29ycmVjdCBtaXN0YWtlIGluIHRoZSBjb21tZW50LgorCisyMDA0LTAyLTI2ICBBbmRyZXcgU3R1YmJzIDxhbmRyZXcuc3R1YmJzQHN1cGVyaC5jb20+CisKKwkqIHNoLWRpcy5jIChwcmludF9pbnNuX3NoKTogQWRkIFJFR19OX0QgbmliYmxlIHR5cGUgdG8KKwllbnN1cmUgdGhhdCBkb3VibGUgcmVnaXN0ZXJzIGhhdmUgZXZlbiBudW1iZXJzLgorCUFkZCBSRUdfTl9CMDEgZm9yIG5uMDEgKGJpbmFyeSAwMSkgbmliYmxlIHRvIGVuc3VyZQorCXRoYXQgcmVzZXJ2ZWQgaW5zdHJ1Y3Rpb24gMHhmZmZkIGRvZXMgbm90IGRlY29kZSB0aGUgc2FtZQorCWFzIDB4ZmRmZCAoZnRydikuCisJKiBzaC1vcGMuaDogQWRkIFJFR19OX0QgbmliYmxlIHR5cGUgYW5kIHVzZSBpdCB3aGVyZWV2ZXIKKwlSRUdfTiByZWZlcnMgdG8gYSBkb3VibGUgcmVnaXN0ZXIuCisJQWRkIFJFR19OX0IwMSBuaWJibGUgdHlwZSBhbmQgdXNlIGl0IGluc3RlYWQgb2YgUkVHX05NCisJaW4gZnRydi4KKwlBZGp1c3QgdGhlIGJpdCBwYXR0ZXJucyBpbiBhIGZldyBjb21tZW50cy4KKworMjAwNC0wMi0yNSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgorCisJKiBwcGMtb3BjLmMgKHBvd2VycGNfb3Bjb2Rlcyk6IENoYW5nZSBtYXNrIGZvciBkY2J0IGFuZCBkY2J0c3QuCisKKzIwMDQtMDItMjAgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KKworCSogcHBjLW9wYy5jIChwb3dlcnBjX29wY29kZXMpOiBNb3ZlIG1mbWNzcnIwIGJlZm9yZSBtZmRjX2RhdC4KKworMjAwNC0wMi0yMCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgorCisJKiBwcGMtb3BjLmMgKHBvd2VycGNfb3Bjb2Rlcyk6IEFkZCBtKml2b3IzNS4KKworMjAwNC0wMi0yMCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgorCisJKiBwcGMtb3BjLmMgKHBvd2VycGNfb3Bjb2Rlcyk6IEFkZCBtZml2b3IzMiwgbWZpdm9yMzMsIG1maXZvcjM0LAorCW10aXZvcjMyLCBtdGl2b3IzMywgbXRpdm9yMzQuCisKKzIwMDQtMDItMTkgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KKworCSogcHBjLW9wYy5jIChwb3dlcnBjX29wY29kZXMpOiBBZGQgbWZtY2FyLgorCiAyMDA0LTAyLTEwICBQZXRrbyBNYW5vbG92ICA8cGV0a2FuQG51Y2xldXN5cy5jb20+CiAKIAkqIGFybS1vcGMuaCBNYXZlcmljayBhY2N1bXVsYXRvciByZWdpc3RlciBvcGNvZGUgZml4ZXMuCmRpZmYgLS1naXQgYS9vcGNvZGVzL2FjbG9jYWwubTQgYi9vcGNvZGVzL2FjbG9jYWwubTQKaW5kZXggOTI3MzJkMy4uYTliMGIyOSAxMDA2NDQKLS0tIGEvb3Bjb2Rlcy9hY2xvY2FsLm00CisrKyBiL29wY29kZXMvYWNsb2NhbC5tNApAQCAtMSw0ICsxLDQgQEAKLWRubCBhY2xvY2FsLm00IGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGFjbG9jYWwgMS40LXA1CitkbmwgYWNsb2NhbC5tNCBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBhY2xvY2FsIDEuNC1wNgogCiBkbmwgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LTgsIDE5OTksIDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KQEAgLTM1LDcgKzM1LDE2IEBACiBBQ19TVUJTVChiZmRpbmNsdWRlZGlyKQogXSkKIAotI3NlcmlhbCAxCisjIGlzYy1wb3NpeC5tNCBzZXJpYWwgMiAoZ2V0dGV4dC0wLjExLjIpCitkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCitkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCitkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgorZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKyMgVGhpcyBmaWxlIGlzIG5vdCBuZWVkZWQgd2l0aCBhdXRvY29uZi0yLjUzIGFuZCBuZXdlci4gIFJlbW92ZSBpdCBpbiAyMDA1LgorCiAjIFRoaXMgdGVzdCByZXBsYWNlcyB0aGUgb25lIGluIGF1dG9jb25mLgogIyBDdXJyZW50bHkgdGhpcyBtYWNybyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZSBhdXRvY29uZiBtYWNybwogIyBiZWNhdXNlIGdldHRleHQncyBnZXR0ZXh0Lm00IChkaXN0cmlidXRlZCBpbiB0aGUgYXV0b21ha2UgcGFja2FnZSkKQEAgLTYzLDcgKzcyLDggQEAKIGRubCBBTV9JTklUX0FVVE9NQUtFKHBhY2thZ2UsdmVyc2lvbiwgW25vLWRlZmluZV0pCiAKIEFDX0RFRlVOKFtBTV9JTklUX0FVVE9NQUtFXSwKLVtBQ19SRVFVSVJFKFtBQ19QUk9HX0lOU1RBTExdKQorW0FDX1JFUVVJUkUoW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT05dKWRubAorQUNfUkVRVUlSRShbQUNfUFJPR19JTlNUQUxMXSkKIFBBQ0tBR0U9WyQxXQogQUNfU1VCU1QoUEFDS0FHRSkKIFZFUlNJT049WyQyXQpAQCAtNzksMTMgKzg5LDQyIEBACiBBQ19SRVFVSVJFKFtBQ19BUkdfUFJPR1JBTV0pCiBkbmwgRklYTUUgVGhpcyBpcyB0cnVseSBncm9zcy4KIG1pc3NpbmdfZGlyPWBjZCAkYWNfYXV4X2RpciAmJiBwd2RgCi1BTV9NSVNTSU5HX1BST0coQUNMT0NBTCwgYWNsb2NhbCwgJG1pc3NpbmdfZGlyKQorQU1fTUlTU0lOR19QUk9HKEFDTE9DQUwsIGFjbG9jYWwtJHthbV9fYXBpX3ZlcnNpb259LCAkbWlzc2luZ19kaXIpCiBBTV9NSVNTSU5HX1BST0coQVVUT0NPTkYsIGF1dG9jb25mLCAkbWlzc2luZ19kaXIpCi1BTV9NSVNTSU5HX1BST0coQVVUT01BS0UsIGF1dG9tYWtlLCAkbWlzc2luZ19kaXIpCitBTV9NSVNTSU5HX1BST0coQVVUT01BS0UsIGF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSwgJG1pc3NpbmdfZGlyKQogQU1fTUlTU0lOR19QUk9HKEFVVE9IRUFERVIsIGF1dG9oZWFkZXIsICRtaXNzaW5nX2RpcikKIEFNX01JU1NJTkdfUFJPRyhNQUtFSU5GTywgbWFrZWluZm8sICRtaXNzaW5nX2RpcikKIEFDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKV0pCiAKKyMgQ29weXJpZ2h0IDIwMDIgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyMgYW55IGxhdGVyIHZlcnNpb24uCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKworIyBBTV9BVVRPTUFLRV9WRVJTSU9OKFZFUlNJT04pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQXV0b21ha2UgWC5ZIHRyYWNlcyB0aGlzIG1hY3JvIHRvIGVuc3VyZSBhY2xvY2FsLm00IGhhcyBiZWVuCisjIGdlbmVyYXRlZCBmcm9tIHRoZSBtNCBmaWxlcyBhY2NvbXBhbnlpbmcgQXV0b21ha2UgWC5ZLgorQUNfREVGVU4oW0FNX0FVVE9NQUtFX1ZFUlNJT05dLFthbV9fYXBpX3ZlcnNpb249IjEuNCJdKQorCisjIEFNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT04KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDYWxsIEFNX0FVVE9NQUtFX1ZFUlNJT04gc28gaXQgY2FuIGJlIHRyYWNlZC4KKyMgVGhpcyBmdW5jdGlvbiBpcyBBQ19SRVFVSVJFZCBieSBBQ19JTklUX0FVVE9NQUtFLgorQUNfREVGVU4oW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT05dLAorCSBbQU1fQVVUT01BS0VfVkVSU0lPTihbMS40LXA2XSldKQorCiAjCiAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lLgogIwpkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWcuaW4gYi9vcGNvZGVzL2NvbmZpZy5pbgppbmRleCA1Y2FlZjU1Li4xMTg1ZTg5IDEwMDY0NAotLS0gYS9vcGNvZGVzL2NvbmZpZy5pbgorKysgYi9vcGNvZGVzL2NvbmZpZy5pbgpAQCAtMTA2LDYgKzEwNiwxMiBAQAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3BhcmFtLmg+IGhlYWRlciBmaWxlLiAgKi8KICN1bmRlZiBIQVZFX1NZU19QQVJBTV9ICiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAgKi8KKyN1bmRlZiBIQVZFX1NZU19TVEFUX0gKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAgKi8KKyN1bmRlZiBIQVZFX1NZU19UWVBFU19ICisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gICovCiAjdW5kZWYgSEFWRV9VTklTVERfSAogCmRpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZSBiL29wY29kZXMvY29uZmlndXJlCmluZGV4IDRhOTVhOWEuLjZjZmY0ZTcgMTAwNzU1Ci0tLSBhL29wY29kZXMvY29uZmlndXJlCisrKyBiL29wY29kZXMvY29uZmlndXJlCkBAIC01Nyw3ICs1Nyw2IEBACiBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPXMseCx4LAogc2lsZW50PQogc2l0ZT0KLXNpdGVmaWxlPQogc3JjZGlyPQogdGFyZ2V0PU5PTkUKIHZlcmJvc2U9CkBAIC0xNzIsNyArMTcxLDYgQEAKICAgLS1oZWxwICAgICAgICAgICAgICAgICAgcHJpbnQgdGhpcyBtZXNzYWdlCiAgIC0tbm8tY3JlYXRlICAgICAgICAgICAgIGRvIG5vdCBjcmVhdGUgb3V0cHV0IGZpbGVzCiAgIC0tcXVpZXQsIC0tc2lsZW50ICAgICAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nLi4uJyBtZXNzYWdlcwotICAtLXNpdGUtZmlsZT1GSUxFICAgICAgICB1c2UgRklMRSBhcyB0aGUgc2l0ZSBmaWxlCiAgIC0tdmVyc2lvbiAgICAgICAgICAgICAgIHByaW50IHRoZSB2ZXJzaW9uIG9mIGF1dG9jb25mIHRoYXQgY3JlYXRlZCBjb25maWd1cmUKIERpcmVjdG9yeSBhbmQgZmlsZSBuYW1lczoKICAgLS1wcmVmaXg9UFJFRklYICAgICAgICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMgaW4gUFJFRklYCkBAIC0zNDMsMTEgKzM0MSw2IEBACiAgIC1zaXRlPSogfCAtLXNpdGU9KiB8IC0tc2l0PSopCiAgICAgc2l0ZT0iJGFjX29wdGFyZyIgOzsKIAotICAtc2l0ZS1maWxlIHwgLS1zaXRlLWZpbGUgfCAtLXNpdGUtZmlsIHwgLS1zaXRlLWZpIHwgLS1zaXRlLWYpCi0gICAgYWNfcHJldj1zaXRlZmlsZSA7OwotICAtc2l0ZS1maWxlPSogfCAtLXNpdGUtZmlsZT0qIHwgLS1zaXRlLWZpbD0qIHwgLS1zaXRlLWZpPSogfCAtLXNpdGUtZj0qKQotICAgIHNpdGVmaWxlPSIkYWNfb3B0YXJnIiA7OwotCiAgIC1zcmNkaXIgfCAtLXNyY2RpciB8IC0tc3JjZGkgfCAtLXNyY2QgfCAtLXNyYyB8IC0tc3IpCiAgICAgYWNfcHJldj1zcmNkaXIgOzsKICAgLXNyY2Rpcj0qIHwgLS1zcmNkaXI9KiB8IC0tc3JjZGk9KiB8IC0tc3JjZD0qIHwgLS1zcmM9KiB8IC0tc3I9KikKQEAgLTUxMywxNiArNTA2LDEyIEBACiBzcmNkaXI9YGVjaG8gIiR7c3JjZGlyfSIgfCBzZWQgJ3MlXChbXi9dXCkvKiQlXDElJ2AKIAogIyBQcmVmZXIgZXhwbGljaXRseSBzZWxlY3RlZCBmaWxlIHRvIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgb25lcy4KLWlmIHRlc3QgLXogIiRzaXRlZmlsZSI7IHRoZW4KLSAgaWYgdGVzdCAteiAiJENPTkZJR19TSVRFIjsgdGhlbgotICAgIGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgotICAgICAgQ09ORklHX1NJVEU9IiRwcmVmaXgvc2hhcmUvY29uZmlnLnNpdGUgJHByZWZpeC9ldGMvY29uZmlnLnNpdGUiCi0gICAgZWxzZQotICAgICAgQ09ORklHX1NJVEU9IiRhY19kZWZhdWx0X3ByZWZpeC9zaGFyZS9jb25maWcuc2l0ZSAkYWNfZGVmYXVsdF9wcmVmaXgvZXRjL2NvbmZpZy5zaXRlIgotICAgIGZpCitpZiB0ZXN0IC16ICIkQ09ORklHX1NJVEUiOyB0aGVuCisgIGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgorICAgIENPTkZJR19TSVRFPSIkcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlICRwcmVmaXgvZXRjL2NvbmZpZy5zaXRlIgorICBlbHNlCisgICAgQ09ORklHX1NJVEU9IiRhY19kZWZhdWx0X3ByZWZpeC9zaGFyZS9jb25maWcuc2l0ZSAkYWNfZGVmYXVsdF9wcmVmaXgvZXRjL2NvbmZpZy5zaXRlIgogICBmaQotZWxzZQotICBDT05GSUdfU0lURT0iJHNpdGVmaWxlIgogZmkKIGZvciBhY19zaXRlX2ZpbGUgaW4gJENPTkZJR19TSVRFOyBkbwogICBpZiB0ZXN0IC1yICIkYWNfc2l0ZV9maWxlIjsgdGhlbgpAQCAtNTYxLDEyICs1NTAsMTIgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBDeWd3aW4gZW52aXJvbm1lbnQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjU2NTogY2hlY2tpbmcgZm9yIEN5Z3dpbiBlbnZpcm9ubWVudCIgPiY1CitlY2hvICJjb25maWd1cmU6NTU0OiBjaGVja2luZyBmb3IgQ3lnd2luIGVudmlyb25tZW50IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9jeWd3aW4nK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1NzAgImNvbmZpZ3VyZSIKKyNsaW5lIDU1OSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewpAQCAtNTc3LDcgKzU2Niw3IEBACiByZXR1cm4gX19DWUdXSU5fXzsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1ODE6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTcwOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3ZfY3lnd2luPXllcwogZWxzZQpAQCAtNTk0LDE5ICs1ODMsMTkgQEAKIENZR1dJTj0KIHRlc3QgIiRhY19jdl9jeWd3aW4iID0geWVzICYmIENZR1dJTj15ZXMKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtaW5ndzMyIGVudmlyb25tZW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1OTg6IGNoZWNraW5nIGZvciBtaW5ndzMyIGVudmlyb25tZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1ODc6IGNoZWNraW5nIGZvciBtaW5ndzMyIGVudmlyb25tZW50IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9taW5ndzMyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjAzICJjb25maWd1cmUiCisjbGluZSA1OTIgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKIHJldHVybiBfX01JTkdXMzJfXzsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MTA6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTk5OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3ZfbWluZ3czMj15ZXMKIGVsc2UKQEAgLTY3MSw3ICs2NjAsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Njc1OiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2NjQ6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQogCiBob3N0X2FsaWFzPSRob3N0CiBjYXNlICIkaG9zdF9hbGlhcyIgaW4KQEAgLTY5Miw3ICs2ODEsNyBAQAogZWNobyAiJGFjX3QiIiRob3N0IiAxPiY2CiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Njk2OiBjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUiID4mNQorZWNobyAiY29uZmlndXJlOjY4NTogY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlIiA+JjUKIAogdGFyZ2V0X2FsaWFzPSR0YXJnZXQKIGNhc2UgIiR0YXJnZXRfYWxpYXMiIGluCkBAIC03MTAsNyArNjk5LDcgQEAKIGVjaG8gIiRhY190IiIkdGFyZ2V0IiAxPiY2CiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3MTQ6IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo3MDM6IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKIAogYnVpbGRfYWxpYXM9JGJ1aWxkCiBjYXNlICIkYnVpbGRfYWxpYXMiIGluCkBAIC03MzQsNyArNzIzLDcgQEAKIAogCiAgICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBzdHJlcnJvciBpbiAtbGNwb3NpeCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NzM4OiBjaGVja2luZyBmb3Igc3RyZXJyb3IgaW4gLWxjcG9zaXgiID4mNQorZWNobyAiY29uZmlndXJlOjcyNzogY2hlY2tpbmcgZm9yIHN0cmVycm9yIGluIC1sY3Bvc2l4IiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gY3Bvc2l4J18nc3RyZXJyb3IgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTc0Miw3ICs3MzEsNyBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxjcG9zaXggICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNzQ2ICJjb25maWd1cmUiCisjbGluZSA3MzUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTc1Myw3ICs3NDIsNyBAQAogc3RyZXJyb3IoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc1NzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc0NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTc4MSw2ICs3NzAsNyBAQAogIyBudW1iZXIgdGhhdCBCRkQgaXMgdXNpbmcuCiBCRkRfVkVSU0lPTj1gc2VkIC1uIC1lICdzL14uLl9JTklUX0FVVE9NQUtFLiosWyAJXSpcKFteIAldKlwpWyAJXSopLiovXDEvcCcgPCAke3NyY2Rpcn0vLi4vYmZkL2NvbmZpZ3VyZS5pbmAKIAorYW1fX2FwaV92ZXJzaW9uPSIxLjQiCiAjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwKICMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcgogIyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6CkBAIC03OTMsNyArNzgzLDcgQEAKICMgU1ZSNCAvdXNyL3VjYi9pbnN0YWxsLCB3aGljaCB0cmllcyB0byB1c2UgdGhlIG5vbmV4aXN0ZW50IGdyb3VwICJzdGFmZiIKICMgLi9pbnN0YWxsLCB3aGljaCBjYW4gYmUgZXJyb25lb3VzbHkgY3JlYXRlZCBieSBtYWtlIGZyb20gLi9pbnN0YWxsLnNoLgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGEgQlNEIGNvbXBhdGlibGUgaW5zdGFsbCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Nzk3OiBjaGVja2luZyBmb3IgYSBCU0QgY29tcGF0aWJsZSBpbnN0YWxsIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo3ODc6IGNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwiID4mNQogaWYgdGVzdCAteiAiJElOU1RBTEwiOyB0aGVuCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF9pbnN0YWxsJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTg0Niw3ICs4MzYsNyBAQAogdGVzdCAteiAiJElOU1RBTExfREFUQSIgJiYgSU5TVEFMTF9EQVRBPScke0lOU1RBTEx9IC1tIDY0NCcKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4NTA6IGNoZWNraW5nIHdoZXRoZXIgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2FuZSIgPiY1CitlY2hvICJjb25maWd1cmU6ODQwOiBjaGVja2luZyB3aGV0aGVyIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmUiID4mNQogIyBKdXN0IGluIGNhc2UKIHNsZWVwIDEKIGVjaG8gdGltZXN0YW1wID4gY29uZnRlc3RmaWxlCkBAIC05MDMsNyArODkzLDcgQEAKIHRlc3QgIiRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIiA9ICIiICYmIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9InMseCx4LCIKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJHtNQUtFfSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6OTA3OiBjaGVja2luZyB3aGV0aGVyICR7TUFLRS1tYWtlfSBzZXRzIFwke01BS0V9IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo4OTc6IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCR7TUFLRX0iID4mNQogc2V0IGR1bW15ICR7TUFLRS1tYWtlfTsgYWNfbWFrZT1gZWNobyAiJDIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC05NDgsMjEgKzkzOCwyMSBAQAogCiAKIG1pc3NpbmdfZGlyPWBjZCAkYWNfYXV4X2RpciAmJiBwd2RgCi1lY2hvICRhY19uICJjaGVja2luZyBmb3Igd29ya2luZyBhY2xvY2FsIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo5NTM6IGNoZWNraW5nIGZvciB3b3JraW5nIGFjbG9jYWwiID4mNQorZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWNsb2NhbC0ke2FtX19hcGlfdmVyc2lvbn0iIi4uLiAkYWNfYyIgMT4mNgorZWNobyAiY29uZmlndXJlOjk0MzogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWNsb2NhbC0ke2FtX19hcGlfdmVyc2lvbn0iID4mNQogIyBSdW4gdGVzdCBpbiBhIHN1YnNoZWxsOyBzb21lIHZlcnNpb25zIG9mIHNoIHdpbGwgcHJpbnQgYW4gZXJyb3IgaWYKICMgYW4gZXhlY3V0YWJsZSBpcyBub3QgZm91bmQsIGV2ZW4gaWYgc3RkZXJyIGlzIHJlZGlyZWN0ZWQuCiAjIFJlZGlyZWN0IHN0ZGluIHRvIHBsYWNhdGUgb2xkZXIgdmVyc2lvbnMgb2YgYXV0b2NvbmYuICBTaWdoLgotaWYgKGFjbG9jYWwgLS12ZXJzaW9uKSA8IC9kZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICBBQ0xPQ0FMPWFjbG9jYWwKK2lmIChhY2xvY2FsLSR7YW1fX2FwaV92ZXJzaW9ufSAtLXZlcnNpb24pIDwgL2Rldi9udWxsID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgIEFDTE9DQUw9YWNsb2NhbC0ke2FtX19hcGlfdmVyc2lvbn0KICAgIGVjaG8gIiRhY190IiJmb3VuZCIgMT4mNgogZWxzZQotICAgQUNMT0NBTD0iJG1pc3NpbmdfZGlyL21pc3NpbmcgYWNsb2NhbCIKKyAgIEFDTE9DQUw9IiRtaXNzaW5nX2Rpci9taXNzaW5nIGFjbG9jYWwtJHthbV9fYXBpX3ZlcnNpb259IgogICAgZWNobyAiJGFjX3QiIm1pc3NpbmciIDE+JjYKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9jb25mIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo5NjY6IGNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9jb25mIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo5NTY6IGNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9jb25mIiA+JjUKICMgUnVuIHRlc3QgaW4gYSBzdWJzaGVsbDsgc29tZSB2ZXJzaW9ucyBvZiBzaCB3aWxsIHByaW50IGFuIGVycm9yIGlmCiAjIGFuIGV4ZWN1dGFibGUgaXMgbm90IGZvdW5kLCBldmVuIGlmIHN0ZGVyciBpcyByZWRpcmVjdGVkLgogIyBSZWRpcmVjdCBzdGRpbiB0byBwbGFjYXRlIG9sZGVyIHZlcnNpb25zIG9mIGF1dG9jb25mLiAgU2lnaC4KQEAgLTk3NCwyMSArOTY0LDIxIEBACiAgICBlY2hvICIkYWNfdCIibWlzc2luZyIgMT4mNgogZmkKIAotZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgYXV0b21ha2UiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjk3OTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYXV0b21ha2UiID4mNQorZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgYXV0b21ha2UtJHthbV9fYXBpX3ZlcnNpb259IiIuLi4gJGFjX2MiIDE+JjYKK2VjaG8gImNvbmZpZ3VyZTo5Njk6IGNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSIgPiY1CiAjIFJ1biB0ZXN0IGluIGEgc3Vic2hlbGw7IHNvbWUgdmVyc2lvbnMgb2Ygc2ggd2lsbCBwcmludCBhbiBlcnJvciBpZgogIyBhbiBleGVjdXRhYmxlIGlzIG5vdCBmb3VuZCwgZXZlbiBpZiBzdGRlcnIgaXMgcmVkaXJlY3RlZC4KICMgUmVkaXJlY3Qgc3RkaW4gdG8gcGxhY2F0ZSBvbGRlciB2ZXJzaW9ucyBvZiBhdXRvY29uZi4gIFNpZ2guCi1pZiAoYXV0b21ha2UgLS12ZXJzaW9uKSA8IC9kZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICBBVVRPTUFLRT1hdXRvbWFrZQoraWYgKGF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSAtLXZlcnNpb24pIDwgL2Rldi9udWxsID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgIEFVVE9NQUtFPWF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufQogICAgZWNobyAiJGFjX3QiImZvdW5kIiAxPiY2CiBlbHNlCi0gICBBVVRPTUFLRT0iJG1pc3NpbmdfZGlyL21pc3NpbmcgYXV0b21ha2UiCisgICBBVVRPTUFLRT0iJG1pc3NpbmdfZGlyL21pc3NpbmcgYXV0b21ha2UtJHthbV9fYXBpX3ZlcnNpb259IgogICAgZWNobyAiJGFjX3QiIm1pc3NpbmciIDE+JjYKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB3b3JraW5nIGF1dG9oZWFkZXIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjk5MjogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYXV0b2hlYWRlciIgPiY1CitlY2hvICJjb25maWd1cmU6OTgyOiBjaGVja2luZyBmb3Igd29ya2luZyBhdXRvaGVhZGVyIiA+JjUKICMgUnVuIHRlc3QgaW4gYSBzdWJzaGVsbDsgc29tZSB2ZXJzaW9ucyBvZiBzaCB3aWxsIHByaW50IGFuIGVycm9yIGlmCiAjIGFuIGV4ZWN1dGFibGUgaXMgbm90IGZvdW5kLCBldmVuIGlmIHN0ZGVyciBpcyByZWRpcmVjdGVkLgogIyBSZWRpcmVjdCBzdGRpbiB0byBwbGFjYXRlIG9sZGVyIHZlcnNpb25zIG9mIGF1dG9jb25mLiAgU2lnaC4KQEAgLTEwMDEsNyArOTkxLDcgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB3b3JraW5nIG1ha2VpbmZvIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxMDA1OiBjaGVja2luZyBmb3Igd29ya2luZyBtYWtlaW5mbyIgPiY1CitlY2hvICJjb25maWd1cmU6OTk1OiBjaGVja2luZyBmb3Igd29ya2luZyBtYWtlaW5mbyIgPiY1CiAjIFJ1biB0ZXN0IGluIGEgc3Vic2hlbGw7IHNvbWUgdmVyc2lvbnMgb2Ygc2ggd2lsbCBwcmludCBhbiBlcnJvciBpZgogIyBhbiBleGVjdXRhYmxlIGlzIG5vdCBmb3VuZCwgZXZlbiBpZiBzdGRlcnIgaXMgcmVkaXJlY3RlZC4KICMgUmVkaXJlY3Qgc3RkaW4gdG8gcGxhY2F0ZSBvbGRlciB2ZXJzaW9ucyBvZiBhdXRvY29uZi4gIFNpZ2guCkBAIC0xMDI0LDcgKzEwMTQsNyBAQAogIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjEwMjg6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MTAxODogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0FSJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTEwNTYsNyArMTA0Niw3IEBACiAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXJhbmxpYjsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxMDYwOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjEwNTA6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19SQU5MSUInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTA4OCw3ICsxMDc4LDcgQEAKICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJyYW5saWIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IHJhbmxpYjsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxMDkyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjEwODI6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19SQU5MSUInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTE5NCw3ICsxMTg0LDcgQEAKICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZ2NjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBnY2M7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTE5ODogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxMTg4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ0MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTIyNCw3ICsxMjE0LDcgQEAKICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgY2M7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTIyODogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxMjE4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ0MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTI3NSw3ICsxMjY1LDcgQEAKICAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGNsOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjEyNzk6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MTI2OTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NDJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTEzMDcsNyArMTI5Nyw3IEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgd29ya3MiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjEzMTE6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSB3b3JrcyIgPiY1CitlY2hvICJjb25maWd1cmU6MTMwMTogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIHdvcmtzIiA+JjUKIAogYWNfZXh0PWMKICMgQ0ZMQUdTIGlzIG5vdCBpbiBhY19jcHAgYmVjYXVzZSAtZywgLU8sIGV0Yy4gYXJlIG5vdCB2YWxpZCBjcHAgb3B0aW9ucy4KQEAgLTEzMTgsMTIgKzEzMDgsMTIgQEAKIAogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PCBFT0YKIAotI2xpbmUgMTMyMiAiY29uZmlndXJlIgorI2xpbmUgMTMxMiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIG1haW4oKXtyZXR1cm4oMCk7fQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEzMjc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMzE3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgYWNfY3ZfcHJvZ19jY193b3Jrcz15ZXMKICAgIyBJZiB3ZSBjYW4ndCBydW4gYSB0cml2aWFsIHByb2dyYW0sIHdlIGFyZSBwcm9iYWJseSB1c2luZyBhIGNyb3NzIGNvbXBpbGVyLgogICBpZiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGw7IHRoZW4KQEAgLTEzNDksMTIgKzEzMzksMTIgQEAKICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBpbnN0YWxsYXRpb24gb3IgY29uZmlndXJhdGlvbiBwcm9ibGVtOiBDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMuIiAxPiYyOyBleGl0IDE7IH0KIGZpCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgaXMgYSBjcm9zcy1jb21waWxlciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTM1MzogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIGlzIGEgY3Jvc3MtY29tcGlsZXIiID4mNQorZWNobyAiY29uZmlndXJlOjEzNDM6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSBpcyBhIGNyb3NzLWNvbXBpbGVyIiA+JjUKIGVjaG8gIiRhY190IiIkYWNfY3ZfcHJvZ19jY19jcm9zcyIgMT4mNgogY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdOVSBDIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxMzU4OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyBHTlUgQyIgPiY1CitlY2hvICJjb25maWd1cmU6MTM0ODogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfZ2NjJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTEzNjMsNyArMTM1Myw3IEBACiAgIHllczsKICNlbmRpZgogRU9GCi1pZiB7IGFjX3RyeT0nJHtDQy1jY30gLUUgY29uZnRlc3QuYyc7IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTM2NzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH07IH0gfCBlZ3JlcCB5ZXMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCitpZiB7IGFjX3RyeT0nJHtDQy1jY30gLUUgY29uZnRlc3QuYyc7IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTM1NzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH07IH0gfCBlZ3JlcCB5ZXMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgIGFjX2N2X3Byb2dfZ2NjPXllcwogZWxzZQogICBhY19jdl9wcm9nX2djYz1ubwpAQCAtMTM4Miw3ICsxMzcyLDcgQEAKIGFjX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgogQ0ZMQUdTPQogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1nIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxMzg2OiBjaGVja2luZyB3aGV0aGVyICR7Q0MtY2N9IGFjY2VwdHMgLWciID4mNQorZWNobyAiY29uZmlndXJlOjEzNzY6IGNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gYWNjZXB0cyAtZyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19jY19nJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTE0MjUsNyArMTQxNSw3IEBACiBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAjIENoZWNrIGlmIGdjYyAtcHJpbnQtcHJvZy1uYW1lPWxkIGdpdmVzIGEgcGF0aC4KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGxkIHVzZWQgYnkgR0NDIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxNDI5OiBjaGVja2luZyBmb3IgbGQgdXNlZCBieSBHQ0MiID4mNQorZWNobyAiY29uZmlndXJlOjE0MTk6IGNoZWNraW5nIGZvciBsZCB1c2VkIGJ5IEdDQyIgPiY1CiAgIGNhc2UgJGhvc3QgaW4KICAgKi0qLW1pbmd3KikKICAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gd2hpY2ggdXBzZXRzIG1pbmd3CkBAIC0xNDU1LDEwICsxNDQ1LDEwIEBACiAgIGVzYWMKIGVsaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgR05VIGxkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxNDU5OiBjaGVja2luZyBmb3IgR05VIGxkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNDQ5OiBjaGVja2luZyBmb3IgR05VIGxkIiA+JjUKIGVsc2UKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG5vbi1HTlUgbGQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE0NjI6IGNoZWNraW5nIGZvciBub24tR05VIGxkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNDUyOiBjaGVja2luZyBmb3Igbm9uLUdOVSBsZCIgPiY1CiBmaQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2x0X2N2X3BhdGhfTEQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMTQ5Myw3ICsxNDgzLDcgQEAKIGZpCiB0ZXN0IC16ICIkTEQiICYmIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogbm8gYWNjZXB0YWJsZSBsZCBmb3VuZCBpbiBcJFBBVEgiIDE+JjI7IGV4aXQgMTsgfQogZWNobyAkYWNfbiAiY2hlY2tpbmcgaWYgdGhlIGxpbmtlciAoJExEKSBpcyBHTlUgbGQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE0OTc6IGNoZWNraW5nIGlmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNDg3OiBjaGVja2luZyBpZiB0aGUgbGlua2VyICgkTEQpIGlzIEdOVSBsZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snbHRfY3ZfcHJvZ19nbnVfbGQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTUxMCw3ICsxNTAwLDcgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxNTE0OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNTA0OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydsdF9jdl9sZF9yZWxvYWRfZmxhZycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0xNTIyLDcgKzE1MTIsNyBAQAogdGVzdCAtbiAiJHJlbG9hZF9mbGFnIiAmJiByZWxvYWRfZmxhZz0iICRyZWxvYWRfZmxhZyIKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIEJTRC1jb21wYXRpYmxlIG5tIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxNTI2OiBjaGVja2luZyBmb3IgQlNELWNvbXBhdGlibGUgbm0iID4mNQorZWNobyAiY29uZmlndXJlOjE1MTY6IGNoZWNraW5nIGZvciBCU0QtY29tcGF0aWJsZSBubSIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snbHRfY3ZfcGF0aF9OTScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0xNTYwLDcgKzE1NTAsNyBAQAogZWNobyAiJGFjX3QiIiROTSIgMT4mNgogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxNTY0OiBjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNTU0OiBjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0xOX1MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTU4MSw3ICsxNTcxLDcgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGhvdyB0byByZWNvZ25pc2UgZGVwZW5kYW50IGxpYnJhcmllcyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTU4NTogY2hlY2tpbmcgaG93IHRvIHJlY29nbmlzZSBkZXBlbmRhbnQgbGlicmFyaWVzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNTc1OiBjaGVja2luZyBob3cgdG8gcmVjb2duaXNlIGRlcGVuZGFudCBsaWJyYXJpZXMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTE3NTQsMTMgKzE3NDQsMTMgQEAKIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igb2JqZWN0IHN1ZmZpeCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTc1ODogY2hlY2tpbmcgZm9yIG9iamVjdCBzdWZmaXgiID4mNQorZWNobyAiY29uZmlndXJlOjE3NDg6IGNoZWNraW5nIGZvciBvYmplY3Qgc3VmZml4IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9vYmpleHQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBybSAtZiBjb25mdGVzdCoKIGVjaG8gJ2ludCBpID0gMTsnID4gY29uZnRlc3QuJGFjX2V4dAotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNzY0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE3NTQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgZm9yIGFjX2ZpbGUgaW4gY29uZnRlc3QuKjsgZG8KICAgICBjYXNlICRhY19maWxlIGluCiAgICAgKi5jKSA7OwpAQCAtMTc4MCw3ICsxNzcwLDcgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZXhlY3V0YWJsZSBzdWZmaXgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE3ODQ6IGNoZWNraW5nIGZvciBleGVjdXRhYmxlIHN1ZmZpeCIgPiY1CitlY2hvICJjb25maWd1cmU6MTc3NDogY2hlY2tpbmcgZm9yIGV4ZWN1dGFibGUgc3VmZml4IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9leGVleHQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTc5MCwxMCArMTc4MCwxMCBAQAogICBybSAtZiBjb25mdGVzdCoKICAgZWNobyAnaW50IG1haW4gKCkgeyByZXR1cm4gMDsgfScgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGFjX2N2X2V4ZWV4dD0KLSAgaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNzk0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9OyB0aGVuCisgIGlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTc4NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfTsgdGhlbgogICAgIGZvciBmaWxlIGluIGNvbmZ0ZXN0Lio7IGRvCiAgICAgICBjYXNlICRmaWxlIGluCi0gICAgICAqLmMgfCAqLm8gfCAqLm9iaiB8ICouaWxrIHwgKi5wZGIpIDs7CisgICAgICAqLmMgfCAqLm8gfCAqLm9iaikgOzsKICAgICAgICopIGFjX2N2X2V4ZWV4dD1gZWNobyAkZmlsZSB8IHNlZCAtZSBzL2NvbmZ0ZXN0Ly9gIDs7CiAgICAgICBlc2FjCiAgICAgZG9uZQpAQCAtMTgxNyw3ICsxODA3LDcgQEAKIGZpbGVfbWFnaWMqKQogICBpZiB0ZXN0ICIkZmlsZV9tYWdpY19jbWQiID0gJyRNQUdJQ19DTUQnOyB0aGVuCiAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICR7YWNfdG9vbF9wcmVmaXh9ZmlsZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTgyMTogY2hlY2tpbmcgZm9yICR7YWNfdG9vbF9wcmVmaXh9ZmlsZSIgPiY1CitlY2hvICJjb25maWd1cmU6MTgxMTogY2hlY2tpbmcgZm9yICR7YWNfdG9vbF9wcmVmaXh9ZmlsZSIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snbHRfY3ZfcGF0aF9NQUdJQ19DTUQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTg3OSw3ICsxODY5LDcgQEAKIGlmIHRlc3QgLXogIiRsdF9jdl9wYXRoX01BR0lDX0NNRCI7IHRoZW4KICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBmaWxlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxODgzOiBjaGVja2luZyBmb3IgZmlsZSIgPiY1CitlY2hvICJjb25maWd1cmU6MTg3MzogY2hlY2tpbmcgZm9yIGZpbGUiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2x0X2N2X3BhdGhfTUFHSUNfQ01EJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTE5NTAsNyArMTk0MCw3IEBACiAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXJhbmxpYjsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxOTU0OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjE5NDQ6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19SQU5MSUInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTk4Miw3ICsxOTcyLDcgQEAKICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJyYW5saWIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IHJhbmxpYjsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxOTg2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjE5NzY6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19SQU5MSUInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjAxNyw3ICsyMDA3LDcgQEAKICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyMDIxOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjIwMTE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19TVFJJUCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yMDQ5LDcgKzIwMzksNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBzdHJpcDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyMDUzOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjIwNDM6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19TVFJJUCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yMTE2LDggKzIxMDYsOCBAQAogY2FzZSAkaG9zdCBpbgogKi0qLWlyaXg2KikKICAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgotICBlY2hvICcjbGluZSAyMTIwICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyMTIxOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCisgIGVjaG8gJyNsaW5lIDIxMTAgImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAorICBpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIxMTE6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgIGlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KICAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCiAgICAgKjMyLWJpdCopCkBAIC0yMTUwLDcgKzIxNDAsNyBAQAogaWE2NC0qLWhwdXgqKQogICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCiAgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0Ci0gIGlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjE1NDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgorICBpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIxNDQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgICBjYXNlICJgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC5vYCIgaW4KICAgICAqRUxGLTMyKikKICAgICAgIEhQVVhfSUE2NF9NT0RFPSIzMiIKQEAgLTIxNjgsNyArMjE1OCw3IEBACiAgIFNBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgogICBDRkxBR1M9IiRDRkxBR1MgLWJlbGYiCiAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGYiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjIxNzI6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGYiID4mNQorZWNobyAiY29uZmlndXJlOjIxNjI6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGYiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2x0X2N2X2NjX25lZWRzX2JlbGYnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjE4MSwxNCArMjE3MSwxNCBAQAogY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCiAKICAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjE4NSAiY29uZmlndXJlIgorI2xpbmUgMjE3NSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjE5MjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIxODI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGx0X2N2X2NjX25lZWRzX2JlbGY9eWVzCiBlbHNlCkBAIC0yMzU2LDcgKzIzNDYsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjIzNjA6IGNoZWNraW5nIHdoZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyMzUwOiBjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1ha2VmaWxlcyIgPiY1CiAgICAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSBvciAtLWRpc2FibGUtbWFpbnRhaW5lci1tb2RlIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX21haW50YWluZXJfbW9kZStzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfbWFpbnRhaW5lcl9tb2RlIgpAQCAtMjM3OSw3ICsyMzY5LDcgQEAKICAgCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdG8gaW5zdGFsbCBsaWJiZmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjIzODM6IGNoZWNraW5nIHdoZXRoZXIgdG8gaW5zdGFsbCBsaWJiZmQiID4mNQorZWNobyAiY29uZmlndXJlOjIzNzM6IGNoZWNraW5nIHdoZXRoZXIgdG8gaW5zdGFsbCBsaWJiZmQiID4mNQogICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQgb3IgLS1kaXNhYmxlLWluc3RhbGwtbGliYmZkIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX2luc3RhbGxfbGliYmZkK3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV9pbnN0YWxsX2xpYmJmZCIKQEAgLTI0MTYsNyArMjQwNiw3IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGV4ZWN1dGFibGUgc3VmZml4IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNDIwOiBjaGVja2luZyBmb3IgZXhlY3V0YWJsZSBzdWZmaXgiID4mNQorZWNobyAiY29uZmlndXJlOjI0MTA6IGNoZWNraW5nIGZvciBleGVjdXRhYmxlIHN1ZmZpeCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZXhlZXh0JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTI0MjYsMTAgKzI0MTYsMTAgQEAKICAgcm0gLWYgY29uZnRlc3QqCiAgIGVjaG8gJ2ludCBtYWluICgpIHsgcmV0dXJuIDA7IH0nID4gY29uZnRlc3QuJGFjX2V4dAogICBhY19jdl9leGVleHQ9Ci0gIGlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjQzMDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfTsgdGhlbgorICBpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI0MjA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH07IHRoZW4KICAgICBmb3IgZmlsZSBpbiBjb25mdGVzdC4qOyBkbwogICAgICAgY2FzZSAkZmlsZSBpbgotICAgICAgKi5jIHwgKi5vIHwgKi5vYmogfCAqLmlsayB8ICoucGRiKSA7OworICAgICAgKi5jIHwgKi5vIHwgKi5vYmopIDs7CiAgICAgICAqKSBhY19jdl9leGVleHQ9YGVjaG8gJGZpbGUgfCBzZWQgLWUgcy9jb25mdGVzdC8vYCA7OwogICAgICAgZXNhYwogICAgIGRvbmUKQEAgLTI0NTIsNyArMjQ0Miw3IEBACiAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgZ2NjOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI0NTY6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MjQ0NjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NDJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTI0ODIsNyArMjQ3Miw3IEBACiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGNjOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI0ODY6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MjQ3NjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NDJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTI1MzMsNyArMjUyMyw3IEBACiAgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNsIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBjbDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNTM3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjI1Mjc6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DQycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yNTY1LDcgKzI1NTUsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIHdvcmtzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNTY5OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgd29ya3MiID4mNQorZWNobyAiY29uZmlndXJlOjI1NTk6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSB3b3JrcyIgPiY1CiAKIGFjX2V4dD1jCiAjIENGTEFHUyBpcyBub3QgaW4gYWNfY3BwIGJlY2F1c2UgLWcsIC1PLCBldGMuIGFyZSBub3QgdmFsaWQgY3BwIG9wdGlvbnMuCkBAIC0yNTc2LDEyICsyNTY2LDEyIEBACiAKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDwgRU9GCiAKLSNsaW5lIDI1ODAgImNvbmZpZ3VyZSIKKyNsaW5lIDI1NzAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBtYWluKCl7cmV0dXJuKDApO30KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNTg1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjU3NTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIGFjX2N2X3Byb2dfY2Nfd29ya3M9eWVzCiAgICMgSWYgd2UgY2FuJ3QgcnVuIGEgdHJpdmlhbCBwcm9ncmFtLCB3ZSBhcmUgcHJvYmFibHkgdXNpbmcgYSBjcm9zcyBjb21waWxlci4KICAgaWYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsOyB0aGVuCkBAIC0yNjA3LDEyICsyNTk3LDEyIEBACiAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogaW5zdGFsbGF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gcHJvYmxlbTogQyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzLiIgMT4mMjsgZXhpdCAxOyB9CiBmaQogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIGlzIGEgY3Jvc3MtY29tcGlsZXIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI2MTE6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSBpcyBhIGNyb3NzLWNvbXBpbGVyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyNjAxOiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgaXMgYSBjcm9zcy1jb21waWxlciIgPiY1CiBlY2hvICIkYWNfdCIiJGFjX2N2X3Byb2dfY2NfY3Jvc3MiIDE+JjYKIGNyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jY19jcm9zcwogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyBHTlUgQyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjYxNjogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMiID4mNQorZWNobyAiY29uZmlndXJlOjI2MDY6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdOVSBDIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX2djYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yNjIxLDcgKzI2MTEsNyBAQAogICB5ZXM7CiAjZW5kaWYKIEVPRgotaWYgeyBhY190cnk9JyR7Q0MtY2N9IC1FIGNvbmZ0ZXN0LmMnOyB7IChldmFsIGVjaG8gY29uZmlndXJlOjI2MjU6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9OyB9IHwgZWdyZXAgeWVzID4vZGV2L251bGwgMj4mMTsgdGhlbgoraWYgeyBhY190cnk9JyR7Q0MtY2N9IC1FIGNvbmZ0ZXN0LmMnOyB7IChldmFsIGVjaG8gY29uZmlndXJlOjI2MTU6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9OyB9IHwgZWdyZXAgeWVzID4vZGV2L251bGwgMj4mMTsgdGhlbgogICBhY19jdl9wcm9nX2djYz15ZXMKIGVsc2UKICAgYWNfY3ZfcHJvZ19nY2M9bm8KQEAgLTI2NDAsNyArMjYzMCw3IEBACiBhY19zYXZlX0NGTEFHUz0iJENGTEFHUyIKIENGTEFHUz0KIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gYWNjZXB0cyAtZyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjY0NDogY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1nIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyNjM0OiBjaGVja2luZyB3aGV0aGVyICR7Q0MtY2N9IGFjY2VwdHMgLWciID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfY2NfZycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yNjc0LDcgKzI2NjQsNyBAQAogCiBBTExfTElOR1VBUz0iZnIgc3YgdHIgZXMgZGEgZGUgaWQgcHRfQlIgcm8gbmwiCiBlY2hvICRhY19uICJjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjY3ODogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IiID4mNQorZWNobyAiY29uZmlndXJlOjI2Njg6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKICMgT24gU3Vucywgc29tZXRpbWVzICRDUFAgbmFtZXMgYSBkaXJlY3RvcnkuCiBpZiB0ZXN0IC1uICIkQ1BQIiAmJiB0ZXN0IC1kICIkQ1BQIjsgdGhlbgogICBDUFA9CkBAIC0yNjg5LDEzICsyNjc5LDEzIEBACiAgICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCiAgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI2OTMgImNvbmZpZ3VyZSIKKyNsaW5lIDI2ODMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGFzc2VydC5oPgogU3ludGF4IEVycm9yCiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjI2OTk6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjI2ODk6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICA6CkBAIC0yNzA2LDEzICsyNjk2LDEzIEBACiAgIHJtIC1yZiBjb25mdGVzdCoKICAgQ1BQPSIke0NDLWNjfSAtRSAtdHJhZGl0aW9uYWwtY3BwIgogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyNzEwICJjb25maWd1cmUiCisjbGluZSAyNzAwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxhc3NlcnQuaD4KIFN5bnRheCBFcnJvcgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNzE2OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNzA2OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgOgpAQCAtMjcyMywxMyArMjcxMywxMyBAQAogICBybSAtcmYgY29uZnRlc3QqCiAgIENQUD0iJHtDQy1jY30gLW5vbG9nbyAtRSIKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjcyNyAiY29uZmlndXJlIgorI2xpbmUgMjcxNyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiBTeW50YXggRXJyb3IKIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6MjczMzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MjcyMzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIDoKQEAgLTI3NTYsNyArMjc0Niw3IEBACiAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgcmFubGliOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI3NjA6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6Mjc1MDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX1JBTkxJQicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yNzg0LDEyICsyNzc0LDEyIEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Mjc4ODogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiID4mNQorZWNobyAiY29uZmlndXJlOjI3Nzg6IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfc3RkYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI3OTMgImNvbmZpZ3VyZSIKKyNsaW5lIDI3ODMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGFyZy5oPgpAQCAtMjc5Nyw3ICsyNzg3LDcgQEAKICNpbmNsdWRlIDxmbG9hdC5oPgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyODAxOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNzkxOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAtMjgxNCw3ICsyODA0LDcgQEAKIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCiAgICMgU3VuT1MgNC54IHN0cmluZy5oIGRvZXMgbm90IGRlY2xhcmUgbWVtKiwgY29udHJhcnkgdG8gQU5TSS4KIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI4MTggImNvbmZpZ3VyZSIKKyNsaW5lIDI4MDggImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN0cmluZy5oPgogRU9GCkBAIC0yODMyLDcgKzI4MjIsNyBAQAogaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KICAgIyBJU0MgMi4wLjIgc3RkbGliLmggZG9lcyBub3QgZGVjbGFyZSBmcmVlLCBjb250cmFyeSB0byBBTlNJLgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjgzNiAiY29uZmlndXJlIgorI2xpbmUgMjgyNiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3RkbGliLmg+CiBFT0YKQEAgLTI4NTMsNyArMjg0Myw3IEBACiAgIDoKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjg1NyAiY29uZmlndXJlIgorI2xpbmUgMjg0NyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNkZWZpbmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ3onKQpAQCAtMjg2NCw3ICsyODU0LDcgQEAKIGV4aXQgKDApOyB9CiAKIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyODY4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI4NTg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgOgogZWxzZQpAQCAtMjg4OCwxMiArMjg3OCwxMiBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgY29uc3QiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI4OTI6IGNoZWNraW5nIGZvciB3b3JraW5nIGNvbnN0IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyODgyOiBjaGVja2luZyBmb3Igd29ya2luZyBjb25zdCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfY19jb25zdCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI4OTcgImNvbmZpZ3VyZSIKKyNsaW5lIDI4ODcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKQEAgLTI5NDIsNyArMjkzMiw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyOTQ2OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI5MzY6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBhY19jdl9jX2NvbnN0PXllcwogZWxzZQpAQCAtMjk2MywyMSArMjk1MywyMSBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGlubGluZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Mjk2NzogY2hlY2tpbmcgZm9yIGlubGluZSIgPiY1CitlY2hvICJjb25maWd1cmU6Mjk1NzogY2hlY2tpbmcgZm9yIGlubGluZSIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfY19pbmxpbmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBhY19jdl9jX2lubGluZT1ubwogZm9yIGFjX2t3IGluIGlubGluZSBfX2lubGluZV9fIF9faW5saW5lOyBkbwogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyOTc0ICJjb25maWd1cmUiCisjbGluZSAyOTY0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CiB9ICRhY19rdyBmb28oKSB7CiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mjk4MTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyOTcxOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3ZfY19pbmxpbmU9JGFjX2t3OyBicmVhawogZWxzZQpAQCAtMzAwMywxMiArMjk5MywxMiBAQAogZXNhYwogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igb2ZmX3QiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMwMDc6IGNoZWNraW5nIGZvciBvZmZfdCIgPiY1CitlY2hvICJjb25maWd1cmU6Mjk5NzogY2hlY2tpbmcgZm9yIG9mZl90IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl90eXBlX29mZl90JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzAxMiAiY29uZmlndXJlIgorI2xpbmUgMzAwMiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWYgU1REQ19IRUFERVJTCkBAIC0zMDM2LDEyICszMDI2LDEyIEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igc2l6ZV90IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMDQwOiBjaGVja2luZyBmb3Igc2l6ZV90IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozMDMwOiBjaGVja2luZyBmb3Igc2l6ZV90IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl90eXBlX3NpemVfdCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMwNDUgImNvbmZpZ3VyZSIKKyNsaW5lIDMwMzUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmIFNURENfSEVBREVSUwpAQCAtMzA3MSwxOSArMzA2MSwxOSBAQAogIyBUaGUgVWx0cml4IDQuMiBtaXBzIGJ1aWx0aW4gYWxsb2NhIGRlY2xhcmVkIGJ5IGFsbG9jYS5oIG9ubHkgd29ya3MKICMgZm9yIGNvbnN0YW50IGFyZ3VtZW50cy4gIFVzZWxlc3MhCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igd29ya2luZyBhbGxvY2EuaCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzA3NTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWxsb2NhLmgiID4mNQorZWNobyAiY29uZmlndXJlOjMwNjU6IGNoZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfYWxsb2NhX2gnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzMDgwICJjb25maWd1cmUiCisjbGluZSAzMDcwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxhbGxvY2EuaD4KIGludCBtYWluKCkgewogY2hhciAqcCA9IGFsbG9jYSgyICogc2l6ZW9mKGludCkpOwogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMwODc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMDc3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBhY19jdl9oZWFkZXJfYWxsb2NhX2g9eWVzCiBlbHNlCkBAIC0zMTA0LDEyICszMDk0LDEyIEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgYWxsb2NhIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMTA4OiBjaGVja2luZyBmb3IgYWxsb2NhIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozMDk4OiBjaGVja2luZyBmb3IgYWxsb2NhIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX2FsbG9jYV93b3Jrcycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMxMTMgImNvbmZpZ3VyZSIKKyNsaW5lIDMxMDMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWZkZWYgX19HTlVDX18KQEAgLTMxMzcsNyArMzEyNyw3IEBACiBjaGFyICpwID0gKGNoYXIgKikgYWxsb2NhKDEpOwogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMxNDE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMTMxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBhY19jdl9mdW5jX2FsbG9jYV93b3Jrcz15ZXMKIGVsc2UKQEAgLTMxNjksMTIgKzMxNTksMTIgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIGFsbG9jYSBuZWVkcyBDcmF5IGhvb2tzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMTczOiBjaGVja2luZyB3aGV0aGVyIGFsbG9jYSBuZWVkcyBDcmF5IGhvb2tzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozMTYzOiBjaGVja2luZyB3aGV0aGVyIGFsbG9jYSBuZWVkcyBDcmF5IGhvb2tzIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9vc19jcmF5JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzE3OCAiY29uZmlndXJlIgorI2xpbmUgMzE2OCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaWYgZGVmaW5lZChDUkFZKSAmJiAhIGRlZmluZWQoQ1JBWTIpCiB3ZWJlY3JheQpAQCAtMzE5OSwxMiArMzE4OSwxMiBAQAogaWYgdGVzdCAkYWNfY3Zfb3NfY3JheSA9IHllczsgdGhlbgogZm9yIGFjX2Z1bmMgaW4gX2dldGI2NyBHRVRCNjcgZ2V0YjY3OyBkbwogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2Z1bmMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMyMDM6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CitlY2hvICJjb25maWd1cmU6MzE5MzogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jXyRhY19mdW5jJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzIwOCAiY29uZmlndXJlIgorI2xpbmUgMzE5OCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYygpOyBiZWxvdy4gICovCkBAIC0zMjI3LDcgKzMyMTcsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzIzMTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMyMjE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNfJGFjX2Z1bmM9eWVzIgogZWxzZQpAQCAtMzI1NCw3ICszMjQ0LDcgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMyNTg6IGNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EiID4mNQorZWNobyAiY29uZmlndXJlOjMyNDg6IGNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTMyNjIsNyArMzI1Miw3IEBACiAgIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uPTAKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzI2NiAiY29uZmlndXJlIgorI2xpbmUgMzI1NiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiBmaW5kX3N0YWNrX2RpcmVjdGlvbiAoKQogewpAQCAtMzI4MSw3ICszMjcxLDcgQEAKICAgZXhpdCAoZmluZF9zdGFja19kaXJlY3Rpb24oKSA8IDApOwogfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMyODU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzI3NTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBhY19jdl9jX3N0YWNrX2RpcmVjdGlvbj0xCiBlbHNlCkBAIC0zMzAyLDIxICszMjkyLDIxIEBACiAKIGZpCiAKLWZvciBhY19oZHIgaW4gdW5pc3RkLmgKK2ZvciBhY19oZHIgaW4gc3RkbGliLmggdW5pc3RkLmggc3lzL3N0YXQuaCBzeXMvdHlwZXMuaAogZG8KIGFjX3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjMzMTA6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozMzAwOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzMxNSAiY29uZmlndXJlIgorI2xpbmUgMzMwNSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8JGFjX2hkcj4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6MzMyMDogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MzMxMDogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTMzNDUsMTIgKzMzMzUsMTIgQEAKIGZvciBhY19mdW5jIGluIGdldHBhZ2VzaXplCiBkbwogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19mdW5jIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMzQ5OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQorZWNobyAiY29uZmlndXJlOjMzMzk6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY18kYWNfZnVuYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMzNTQgImNvbmZpZ3VyZSIKKyNsaW5lIDMzNDQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMoKTsgYmVsb3cuICAqLwpAQCAtMzM3Myw3ICszMzYzLDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMzNzc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMzY3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jXyRhY19mdW5jPXllcyIKIGVsc2UKQEAgLTMzOTgsNyArMzM4OCw3IEBACiBkb25lCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB3b3JraW5nIG1tYXAiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM0MDI6IGNoZWNraW5nIGZvciB3b3JraW5nIG1tYXAiID4mNQorZWNobyAiY29uZmlndXJlOjMzOTI6IGNoZWNraW5nIGZvciB3b3JraW5nIG1tYXAiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMzQwNiw3ICszMzk2LDcgQEAKICAgYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD1ubwogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzNDEwICJjb25maWd1cmUiCisjbGluZSAzNDAwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogLyogVGhhbmtzIHRvIE1pa2UgSGFlcnRlbCBhbmQgSmltIEF2ZXJhIGZvciB0aGlzIHRlc3QuCkBAIC0zNDM0LDExICszNDI0LDI0IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvbW1hbi5oPgogCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaWYgSEFWRV9TVERMSUJfSAorIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorCisjaWYgSEFWRV9TWVNfU1RBVF9ICisjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKworI2lmIEhBVkVfVU5JU1REX0gKKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKwogLyogVGhpcyBtZXNzIHdhcyBjb3BpZWQgZnJvbSB0aGUgR05VIGdldHBhZ2VzaXplLmguICAqLwogI2lmbmRlZiBIQVZFX0dFVFBBR0VTSVpFCi0jIGlmZGVmIEhBVkVfVU5JU1REX0gKLSMgIGluY2x1ZGUgPHVuaXN0ZC5oPgotIyBlbmRpZgogCiAvKiBBc3N1bWUgdGhhdCBhbGwgc3lzdGVtcyB0aGF0IGNhbiBydW4gY29uZmlndXJlIGhhdmUgc3lzL3BhcmFtLmguICAqLwogIyBpZm5kZWYgSEFWRV9TWVNfUEFSQU1fSApAQCAtMzU0Niw3ICszNTQ5LDcgQEAKIH0KIAogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM1NTA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzU1MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPXllcwogZWxzZQpAQCAtMzU3NCwxNyArMzU3NywxNyBAQAogZG8KIGFjX3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM1Nzg6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNTgxOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzU4MyAiY29uZmlndXJlIgorI2xpbmUgMzU4NiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8JGFjX2hkcj4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6MzU4ODogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MzU5MTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTM2MTQsMTIgKzM2MTcsMTIgQEAKIF9fYXJnel9jb3VudCBfX2FyZ3pfc3RyaW5naWZ5IF9fYXJnel9uZXh0CiBkbwogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19mdW5jIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNjE4OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQorZWNobyAiY29uZmlndXJlOjM2MjE6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY18kYWNfZnVuYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM2MjMgImNvbmZpZ3VyZSIKKyNsaW5lIDM2MjYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMoKTsgYmVsb3cuICAqLwpAQCAtMzY0Miw3ICszNjQ1LDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM2NDY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNjQ5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jXyRhY19mdW5jPXllcyIKIGVsc2UKQEAgLTM2NzEsMTIgKzM2NzQsMTIgQEAKICAgICAgZm9yIGFjX2Z1bmMgaW4gc3RwY3B5CiBkbwogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19mdW5jIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNjc1OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQorZWNobyAiY29uZmlndXJlOjM2Nzg6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY18kYWNfZnVuYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM2ODAgImNvbmZpZ3VyZSIKKyNsaW5lIDM2ODMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMoKTsgYmVsb3cuICAqLwpAQCAtMzY5OSw3ICszNzAyLDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM3MDM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNzA2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jXyRhY19mdW5jPXllcyIKIGVsc2UKQEAgLTM3MzMsMTkgKzM3MzYsMTkgQEAKIAogICAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX2xvY2FsZV9oID0geWVzOyB0aGVuCiAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIExDX01FU1NBR0VTIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNzM3OiBjaGVja2luZyBmb3IgTENfTUVTU0FHRVMiID4mNQorZWNobyAiY29uZmlndXJlOjM3NDA6IGNoZWNraW5nIGZvciBMQ19NRVNTQUdFUyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYW1fY3ZfdmFsX0xDX01FU1NBR0VTJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzc0MiAiY29uZmlndXJlIgorI2xpbmUgMzc0NSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8bG9jYWxlLmg+CiBpbnQgbWFpbigpIHsKIHJldHVybiBMQ19NRVNTQUdFUwogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM3NDk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNzUyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBhbV9jdl92YWxfTENfTUVTU0FHRVM9eWVzCiBlbHNlCkBAIC0zNzY2LDcgKzM3NjksNyBAQAogICAgIGZpCiAgIGZpCiAgICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIE5MUyBpcyByZXF1ZXN0ZWQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM3NzA6IGNoZWNraW5nIHdoZXRoZXIgTkxTIGlzIHJlcXVlc3RlZCIgPiY1CitlY2hvICJjb25maWd1cmU6Mzc3MzogY2hlY2tpbmcgd2hldGhlciBOTFMgaXMgcmVxdWVzdGVkIiA+JjUKICAgICAgICAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW5scyBvciAtLWRpc2FibGUtbmxzIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX25scytzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfbmxzIgpAQCAtMzc4Niw3ICszNzg5LDcgQEAKIEVPRgogCiAgICAgICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIGluY2x1ZGVkIGdldHRleHQgaXMgcmVxdWVzdGVkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNzkwOiBjaGVja2luZyB3aGV0aGVyIGluY2x1ZGVkIGdldHRleHQgaXMgcmVxdWVzdGVkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNzkzOiBjaGVja2luZyB3aGV0aGVyIGluY2x1ZGVkIGdldHRleHQgaXMgcmVxdWVzdGVkIiA+JjUKICAgICAgICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtaW5jbHVkZWQtZ2V0dGV4dCBvciAtLXdpdGhvdXQtaW5jbHVkZWQtZ2V0dGV4dCB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfaW5jbHVkZWRfZ2V0dGV4dCtzZXR9IiA9IHNldDsgdGhlbgogICB3aXRodmFsPSIkd2l0aF9pbmNsdWRlZF9nZXR0ZXh0IgpAQCAtMzgwNSwxNyArMzgwOCwxNyBAQAogCiAJYWNfc2FmZT1gZWNobyAibGliaW50bC5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBsaWJpbnRsLmgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM4MDk6IGNoZWNraW5nIGZvciBsaWJpbnRsLmgiID4mNQorZWNobyAiY29uZmlndXJlOjM4MTI6IGNoZWNraW5nIGZvciBsaWJpbnRsLmgiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM4MTQgImNvbmZpZ3VyZSIKKyNsaW5lIDM4MTcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGxpYmludGwuaD4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6MzgxOTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MzgyMjogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTM4MzIsMTkgKzM4MzUsMTkgQEAKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2hlYWRlcl8nJGFjX3NhZmVgXCIgPSB5ZXMiOyB0aGVuCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGdldHRleHQgaW4gbGliYyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzgzNjogY2hlY2tpbmcgZm9yIGdldHRleHQgaW4gbGliYyIgPiY1CitlY2hvICJjb25maWd1cmU6MzgzOTogY2hlY2tpbmcgZm9yIGdldHRleHQgaW4gbGliYyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snZ3RfY3ZfZnVuY19nZXR0ZXh0X2xpYmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzODQxICJjb25maWd1cmUiCisjbGluZSAzODQ0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBpbnQgbWFpbigpIHsKIHJldHVybiAoaW50KSBnZXR0ZXh0ICgiIikKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozODQ4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzg1MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZ3RfY3ZfZnVuY19nZXR0ZXh0X2xpYmM9eWVzCiBlbHNlCkBAIC0zODYwLDcgKzM4NjMsNyBAQAogCiAJICAgaWYgdGVzdCAiJGd0X2N2X2Z1bmNfZ2V0dGV4dF9saWJjIiAhPSAieWVzIjsgdGhlbgogCSAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGJpbmR0ZXh0ZG9tYWluIGluIC1saW50bCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Mzg2NDogY2hlY2tpbmcgZm9yIGJpbmR0ZXh0ZG9tYWluIGluIC1saW50bCIgPiY1CitlY2hvICJjb25maWd1cmU6Mzg2NzogY2hlY2tpbmcgZm9yIGJpbmR0ZXh0ZG9tYWluIGluIC1saW50bCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIGludGwnXydiaW5kdGV4dGRvbWFpbiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMzg2OCw3ICszODcxLDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1saW50bCAgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzODcyICJjb25maWd1cmUiCisjbGluZSAzODc1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0zODc5LDcgKzM4ODIsNyBAQAogYmluZHRleHRkb21haW4oKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM4ODM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozODg2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMzg5NSwxOSArMzg5OCwxOSBAQAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3ZfbGliXyckYWNfbGliX3ZhcmBcIiA9IHllcyI7IHRoZW4KICAgZWNobyAiJGFjX3QiInllcyIgMT4mNgogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZ2V0dGV4dCBpbiBsaWJpbnRsIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozODk5OiBjaGVja2luZyBmb3IgZ2V0dGV4dCBpbiBsaWJpbnRsIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozOTAyOiBjaGVja2luZyBmb3IgZ2V0dGV4dCBpbiBsaWJpbnRsIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydndF9jdl9mdW5jX2dldHRleHRfbGliaW50bCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM5MDQgImNvbmZpZ3VyZSIKKyNsaW5lIDM5MDcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKIHJldHVybiAoaW50KSBnZXR0ZXh0ICgiIikKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozOTExOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzkxNDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZ3RfY3ZfZnVuY19nZXR0ZXh0X2xpYmludGw9eWVzCiBlbHNlCkBAIC0zOTM1LDcgKzM5MzgsNyBAQAogCSAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXNnZm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBtc2dmbXQ7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzkzOTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozOTQyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfTVNHRk1UJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTM5NjksMTIgKzM5NzIsMTIgQEAKIAkJZm9yIGFjX2Z1bmMgaW4gZGNnZXR0ZXh0CiBkbwogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19mdW5jIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozOTczOiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQorZWNobyAiY29uZmlndXJlOjM5NzY6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY18kYWNfZnVuYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM5NzggImNvbmZpZ3VyZSIKKyNsaW5lIDM5ODEgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMoKTsgYmVsb3cuICAqLwpAQCAtMzk5Nyw3ICs0MDAwLDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQwMDE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0MDA0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jXyRhY19mdW5jPXllcyIKIGVsc2UKQEAgLTQwMjQsNyArNDAyNyw3IEBACiAJCSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZ21zZ2ZtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgZ21zZ2ZtdDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MDI4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjQwMzE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF9HTVNHRk1UJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTQwNjAsNyArNDA2Myw3IEBACiAJCSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAieGdldHRleHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IHhnZXR0ZXh0OyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQwNjQ6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6NDA2NzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX1hHRVRURVhUJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTQwOTIsNyArNDA5NSw3IEBACiBmaQogCiAJCWNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDQwOTYgImNvbmZpZ3VyZSIKKyNsaW5lIDQwOTkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKQEAgLTQxMDAsNyArNDEwMyw3IEBACiAJCQkgICAgICAgcmV0dXJuIF9ubF9tc2dfY2F0X2NudHIKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0MTA0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDEwNzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgQ0FUT0JKRVhUPS5nbW8KIAkJICAgREFUQURJUk5BTUU9c2hhcmUKQEAgLTQxMzIsNyArNDEzNSw3IEBACiAgICAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXNnZm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBtc2dmbXQ7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDEzNjogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0MTM5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfTVNHRk1UJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTQxNjYsNyArNDE2OSw3IEBACiAgICAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZ21zZ2ZtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgZ21zZ2ZtdDsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MTcwOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjQxNzM6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF9HTVNHRk1UJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTQyMDIsNyArNDIwNSw3IEBACiAgICAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAieGdldHRleHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IHhnZXR0ZXh0OyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQyMDY6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6NDIwOTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX1hHRVRURVhUJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTQyOTIsNyArNDI5NSw3IEBACiAgICAgICAgTElOR1VBUz0KICAgICAgZWxzZQogICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBjYXRhbG9ncyB0byBiZSBpbnN0YWxsZWQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQyOTY6IGNoZWNraW5nIGZvciBjYXRhbG9ncyB0byBiZSBpbnN0YWxsZWQiID4mNQorZWNobyAiY29uZmlndXJlOjQyOTk6IGNoZWNraW5nIGZvciBjYXRhbG9ncyB0byBiZSBpbnN0YWxsZWQiID4mNQogICAgICAgIE5FV19MSU5HVUFTPQogICAgICAgIGZvciBsYW5nIGluICR7TElOR1VBUz0kQUxMX0xJTkdVQVN9OyBkbwogICAgICAgICAgY2FzZSAiJEFMTF9MSU5HVUFTIiBpbgpAQCAtNDMyMCwxNyArNDMyMywxNyBAQAogICAgICAgaWYgdGVzdCAiJENBVE9CSkVYVCIgPSAiLmNhdCI7IHRoZW4KIAkgYWNfc2FmZT1gZWNobyAibGludXgvdmVyc2lvbi5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBsaW51eC92ZXJzaW9uLmgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQzMjQ6IGNoZWNraW5nIGZvciBsaW51eC92ZXJzaW9uLmgiID4mNQorZWNobyAiY29uZmlndXJlOjQzMjc6IGNoZWNraW5nIGZvciBsaW51eC92ZXJzaW9uLmgiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDQzMjkgImNvbmZpZ3VyZSIKKyNsaW5lIDQzMzIgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6NDMzNDogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6NDMzNzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTQ0MDgsNyArNDQxMSw3IEBACiAgIEVYRUVYVF9GT1JfQlVJTEQ9JyQoRVhFRVhUKScKIGVsc2UKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGJ1aWxkIHN5c3RlbSBleGVjdXRhYmxlIHN1ZmZpeCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDQxMjogY2hlY2tpbmcgZm9yIGJ1aWxkIHN5c3RlbSBleGVjdXRhYmxlIHN1ZmZpeCIgPiY1CitlY2hvICJjb25maWd1cmU6NDQxNTogY2hlY2tpbmcgZm9yIGJ1aWxkIHN5c3RlbSBleGVjdXRhYmxlIHN1ZmZpeCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYmZkX2N2X2J1aWxkX2V4ZWV4dCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC00NDQ1LDcgKzQ0NDgsNyBAQAogIyBTVlI0IC91c3IvdWNiL2luc3RhbGwsIHdoaWNoIHRyaWVzIHRvIHVzZSB0aGUgbm9uZXhpc3RlbnQgZ3JvdXAgInN0YWZmIgogIyAuL2luc3RhbGwsIHdoaWNoIGNhbiBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5IG1ha2UgZnJvbSAuL2luc3RhbGwuc2guCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgYSBCU0QgY29tcGF0aWJsZSBpbnN0YWxsIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0NDQ5OiBjaGVja2luZyBmb3IgYSBCU0QgY29tcGF0aWJsZSBpbnN0YWxsIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0NDUyOiBjaGVja2luZyBmb3IgYSBCU0QgY29tcGF0aWJsZSBpbnN0YWxsIiA+JjUKIGlmIHRlc3QgLXogIiRJTlNUQUxMIjsgdGhlbgogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfaW5zdGFsbCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC00NTAyLDE3ICs0NTA1LDE3IEBACiBkbwogYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDUwNjogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQorZWNobyAiY29uZmlndXJlOjQ1MDk6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0NTExICJjb25maWd1cmUiCisjbGluZSA0NTE0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDwkYWNfaGRyPgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NTE2OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NTE5OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9mcnYtYXNtLmMgYi9vcGNvZGVzL2Zydi1hc20uYwppbmRleCAxNDViNTZhLi45OGRmMzZiIDEwMDY0NAotLS0gYS9vcGNvZGVzL2Zydi1hc20uYworKysgYi9vcGNvZGVzL2Zydi1hc20uYwpAQCAtODYwLDYgKzg2MCwyMSBAQAogICAgIGNhc2UgRlJWX09QRVJBTkRfTEkgOgogICAgICAgZXJybXNnID0gY2dlbl9wYXJzZV91bnNpZ25lZF9pbnRlZ2VyIChjZCwgc3RycCwgRlJWX09QRVJBTkRfTEksICZmaWVsZHMtPmZfTEkpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBGUlZfT1BFUkFORF9MUkFEIDoKKyAgICAgIGVycm1zZyA9IGNnZW5fcGFyc2VfdW5zaWduZWRfaW50ZWdlciAoY2QsIHN0cnAsIEZSVl9PUEVSQU5EX0xSQUQsICZmaWVsZHMtPmZfTFJBRCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX0xSQUUgOgorICAgICAgZXJybXNnID0gY2dlbl9wYXJzZV91bnNpZ25lZF9pbnRlZ2VyIChjZCwgc3RycCwgRlJWX09QRVJBTkRfTFJBRSwgJmZpZWxkcy0+Zl9MUkFFKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfTFJBUyA6CisgICAgICBlcnJtc2cgPSBjZ2VuX3BhcnNlX3Vuc2lnbmVkX2ludGVnZXIgKGNkLCBzdHJwLCBGUlZfT1BFUkFORF9MUkFTLCAmZmllbGRzLT5mX0xSQVMpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGUlZfT1BFUkFORF9UTEJQUkwgOgorICAgICAgZXJybXNnID0gY2dlbl9wYXJzZV91bnNpZ25lZF9pbnRlZ2VyIChjZCwgc3RycCwgRlJWX09QRVJBTkRfVExCUFJMLCAmZmllbGRzLT5mX1RMQlBSTCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX1RMQlBST1BYIDoKKyAgICAgIGVycm1zZyA9IGNnZW5fcGFyc2VfdW5zaWduZWRfaW50ZWdlciAoY2QsIHN0cnAsIEZSVl9PUEVSQU5EX1RMQlBST1BYLCAmZmllbGRzLT5mX1RMQlBSb3B4KTsKKyAgICAgIGJyZWFrOwogICAgIGNhc2UgRlJWX09QRVJBTkRfQUUgOgogICAgICAgZXJybXNnID0gY2dlbl9wYXJzZV91bnNpZ25lZF9pbnRlZ2VyIChjZCwgc3RycCwgRlJWX09QRVJBTkRfQUUsICZmaWVsZHMtPmZfYWUpOwogICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9vcGNvZGVzL2Zydi1kZXNjLmMgYi9vcGNvZGVzL2Zydi1kZXNjLmMKaW5kZXggMzU2NTljNy4uN2UwYjNiNCAxMDA2NDQKLS0tIGEvb3Bjb2Rlcy9mcnYtZGVzYy5jCisrKyBiL29wY29kZXMvZnJ2LWRlc2MuYwpAQCAtNDksNiArNDksNyBAQAogICB7ICJmcnYiLCBNQUNIX0ZSViB9LAogICB7ICJmcjU1MCIsIE1BQ0hfRlI1NTAgfSwKICAgeyAiZnI1MDAiLCBNQUNIX0ZSNTAwIH0sCisgIHsgImZyNDUwIiwgTUFDSF9GUjQ1MCB9LAogICB7ICJmcjQwMCIsIE1BQ0hfRlI0MDAgfSwKICAgeyAidG9tY2F0IiwgTUFDSF9UT01DQVQgfSwKICAgeyAic2ltcGxlIiwgTUFDSF9TSU1QTEUgfSwKQEAgLTkwLDYgKzkxLDcgQEAKICAgeyAiU0NBTiIsIFVOSVRfU0NBTiB9LAogICB7ICJEQ1BMIiwgVU5JVF9EQ1BMIH0sCiAgIHsgIk1EVUFMQUNDIiwgVU5JVF9NRFVBTEFDQyB9LAorICB7ICJNRENVVFNTSSIsIFVOSVRfTURDVVRTU0kgfSwKICAgeyAiTUNMUkFDQ18xIiwgVU5JVF9NQ0xSQUNDXzEgfSwKICAgeyAiTlVNX1VOSVRTIiwgVU5JVF9OVU1fVU5JVFMgfSwKICAgeyAwLCAwIH0KQEAgLTExNiw2ICsxMTgsMzEgQEAKICAgeyAwLCAwIH0KIH07CiAKK3N0YXRpYyBjb25zdCBDR0VOX0FUVFJfRU5UUlkgRlI0NTBfTUFKT1JfYXR0cltdID0KK3sKKyAgeyAiTk9ORSIsIEZSNDUwX01BSk9SX05PTkUgfSwKKyAgeyAiSV8xIiwgRlI0NTBfTUFKT1JfSV8xIH0sCisgIHsgIklfMiIsIEZSNDUwX01BSk9SX0lfMiB9LAorICB7ICJJXzMiLCBGUjQ1MF9NQUpPUl9JXzMgfSwKKyAgeyAiSV80IiwgRlI0NTBfTUFKT1JfSV80IH0sCisgIHsgIklfNSIsIEZSNDUwX01BSk9SX0lfNSB9LAorICB7ICJCXzEiLCBGUjQ1MF9NQUpPUl9CXzEgfSwKKyAgeyAiQl8yIiwgRlI0NTBfTUFKT1JfQl8yIH0sCisgIHsgIkJfMyIsIEZSNDUwX01BSk9SX0JfMyB9LAorICB7ICJCXzQiLCBGUjQ1MF9NQUpPUl9CXzQgfSwKKyAgeyAiQl81IiwgRlI0NTBfTUFKT1JfQl81IH0sCisgIHsgIkJfNiIsIEZSNDUwX01BSk9SX0JfNiB9LAorICB7ICJDXzEiLCBGUjQ1MF9NQUpPUl9DXzEgfSwKKyAgeyAiQ18yIiwgRlI0NTBfTUFKT1JfQ18yIH0sCisgIHsgIk1fMSIsIEZSNDUwX01BSk9SX01fMSB9LAorICB7ICJNXzIiLCBGUjQ1MF9NQUpPUl9NXzIgfSwKKyAgeyAiTV8zIiwgRlI0NTBfTUFKT1JfTV8zIH0sCisgIHsgIk1fNCIsIEZSNDUwX01BSk9SX01fNCB9LAorICB7ICJNXzUiLCBGUjQ1MF9NQUpPUl9NXzUgfSwKKyAgeyAiTV82IiwgRlI0NTBfTUFKT1JfTV82IH0sCisgIHsgMCwgMCB9Cit9OworCiBzdGF0aWMgY29uc3QgQ0dFTl9BVFRSX0VOVFJZIEZSNTAwX01BSk9SX2F0dHJbXSA9CiB7CiAgIHsgIk5PTkUiLCBGUjUwMF9NQUpPUl9OT05FIH0sCkBAIC0yMjUsNiArMjUyLDcgQEAKICAgeyAiTUFDSCIsICYgTUFDSF9hdHRyWzBdLCAmIE1BQ0hfYXR0clswXSB9LAogICB7ICJVTklUIiwgJiBVTklUX2F0dHJbMF0sICYgVU5JVF9hdHRyWzBdIH0sCiAgIHsgIkZSNDAwLU1BSk9SIiwgJiBGUjQwMF9NQUpPUl9hdHRyWzBdLCAmIEZSNDAwX01BSk9SX2F0dHJbMF0gfSwKKyAgeyAiRlI0NTAtTUFKT1IiLCAmIEZSNDUwX01BSk9SX2F0dHJbMF0sICYgRlI0NTBfTUFKT1JfYXR0clswXSB9LAogICB7ICJGUjUwMC1NQUpPUiIsICYgRlI1MDBfTUFKT1JfYXR0clswXSwgJiBGUjUwMF9NQUpPUl9hdHRyWzBdIH0sCiAgIHsgIkZSNTUwLU1BSk9SIiwgJiBGUjU1MF9NQUpPUl9hdHRyWzBdLCAmIEZSNTUwX01BSk9SX2F0dHJbMF0gfSwKICAgeyAiQUxJQVMiLCAmYm9vbF9hdHRyWzBdLCAmYm9vbF9hdHRyWzBdIH0sCkBAIC0yNDIsNiArMjcwLDcgQEAKICAgeyAiQ09ORElUSU9OQUwiLCAmYm9vbF9hdHRyWzBdLCAmYm9vbF9hdHRyWzBdIH0sCiAgIHsgIkZSLUFDQ0VTUyIsICZib29sX2F0dHJbMF0sICZib29sX2F0dHJbMF0gfSwKICAgeyAiUFJFU0VSVkUtT1ZGIiwgJmJvb2xfYXR0clswXSwgJmJvb2xfYXR0clswXSB9LAorICB7ICJBVURJTyIsICZib29sX2F0dHJbMF0sICZib29sX2F0dHJbMF0gfSwKICAgeyAwLCAwLCAwIH0KIH07CiAKQEAgLTI2MCw2ICsyODksNyBAQAogICB7ICJmcjUwMCIsICJmcjUwMCIsIE1BQ0hfRlI1MDAsIDAgfSwKICAgeyAidG9tY2F0IiwgInRvbWNhdCIsIE1BQ0hfVE9NQ0FULCAwIH0sCiAgIHsgImZyNDAwIiwgImZyNDAwIiwgTUFDSF9GUjQwMCwgMCB9LAorICB7ICJmcjQ1MCIsICJmcjQ1MCIsIE1BQ0hfRlI0NTAsIDAgfSwKICAgeyAic2ltcGxlIiwgInNpbXBsZSIsIE1BQ0hfU0lNUExFLCAwIH0sCiAgIHsgMCwgMCwgMCwgMCB9CiB9OwpAQCAtODA0LDYgKzgzNCwxMCBAQAogICB7ICJzcjEiLCA3NjksIHswLCB7MH19LCAwLCAwIH0sCiAgIHsgInNyMiIsIDc3MCwgezAsIHswfX0sIDAsIDAgfSwKICAgeyAic3IzIiwgNzcxLCB7MCwgezB9fSwgMCwgMCB9LAorICB7ICJzY3IwIiwgODMyLCB7MCwgezB9fSwgMCwgMCB9LAorICB7ICJzY3IxIiwgODMzLCB7MCwgezB9fSwgMCwgMCB9LAorICB7ICJzY3IyIiwgODM0LCB7MCwgezB9fSwgMCwgMCB9LAorICB7ICJzY3IzIiwgODM1LCB7MCwgezB9fSwgMCwgMCB9LAogICB7ICJmc3IwIiwgMTAyNCwgezAsIHswfX0sIDAsIDAgfSwKICAgeyAiZnNyMSIsIDEwMjUsIHswLCB7MH19LCAwLCAwIH0sCiAgIHsgImZzcjIiLCAxMDI2LCB7MCwgezB9fSwgMCwgMCB9LApAQCAtMTQ0OSw5ICsxNDgzLDIwIEBACiAgIHsgImFtY3IiLCAxOTIwLCB7MCwgezB9fSwgMCwgMCB9LAogICB7ICJzdGJhciIsIDE5MjEsIHswLCB7MH19LCAwLCAwIH0sCiAgIHsgIm1tY3IiLCAxOTIyLCB7MCwgezB9fSwgMCwgMCB9LAorICB7ICJpYW12cjEiLCAxOTI1LCB7MCwgezB9fSwgMCwgMCB9LAorICB7ICJkYW12cjEiLCAxOTI3LCB7MCwgezB9fSwgMCwgMCB9LAorICB7ICJjeG5yIiwgMTkzNiwgezAsIHswfX0sIDAsIDAgfSwKKyAgeyAidHRiciIsIDE5MzcsIHswLCB7MH19LCAwLCAwIH0sCisgIHsgInRwbHIiLCAxOTM4LCB7MCwgezB9fSwgMCwgMCB9LAorICB7ICJ0cHByIiwgMTkzOSwgezAsIHswfX0sIDAsIDAgfSwKKyAgeyAidHB4ciIsIDE5NDAsIHswLCB7MH19LCAwLCAwIH0sCisgIHsgInRpbWVyaCIsIDE5NTIsIHswLCB7MH19LCAwLCAwIH0sCisgIHsgInRpbWVybCIsIDE5NTMsIHswLCB7MH19LCAwLCAwIH0sCisgIHsgInRpbWVyZCIsIDE5NTQsIHswLCB7MH19LCAwLCAwIH0sCiAgIHsgImRjciIsIDIwNDgsIHswLCB7MH19LCAwLCAwIH0sCiAgIHsgImJyciIsIDIwNDksIHswLCB7MH19LCAwLCAwIH0sCiAgIHsgIm5tYXIiLCAyMDUwLCB7MCwgezB9fSwgMCwgMCB9LAorICB7ICJidGJyIiwgMjA1MSwgezAsIHswfX0sIDAsIDAgfSwKICAgeyAiaWJhcjAiLCAyMDUyLCB7MCwgezB9fSwgMCwgMCB9LAogICB7ICJpYmFyMSIsIDIwNTMsIHswLCB7MH19LCAwLCAwIH0sCiAgIHsgImliYXIyIiwgMjA1NCwgezAsIHswfX0sIDAsIDAgfSwKQEAgLTE1MDUsNyArMTU1MCw3IEBACiBDR0VOX0tFWVdPUkQgZnJ2X2NnZW5fb3B2YWxfc3ByX25hbWVzID0KIHsKICAgJiBmcnZfY2dlbl9vcHZhbF9zcHJfbmFtZXNfZW50cmllc1swXSwKLSAgMTAwNywKKyAgMTAyMiwKICAgMCwgMCwgMCwgMCwgIiIKIH07CiAKQEAgLTE4MTcsNyArMTg2Miw3IEBACiAgIHsgImgtYWNjZyIsIEhXX0hfQUNDRywgQ0dFTl9BU01fS0VZV09SRCwgKFBUUikgJiBmcnZfY2dlbl9vcHZhbF9hY2NnX25hbWVzLCB7IDB8QShWSVJUVUFMKXxBKFBST0ZJTEUpLCB7ICgxPDxNQUNIX0JBU0UpIH0gfSB9LAogICB7ICJoLWFjYzQwUyIsIEhXX0hfQUNDNDBTLCBDR0VOX0FTTV9LRVlXT1JELCAoUFRSKSAmIGZydl9jZ2VuX29wdmFsX2FjY19uYW1lcywgeyAwfEEoVklSVFVBTCl8QShQUk9GSUxFKSwgeyAoMTw8TUFDSF9CQVNFKSB9IH0gfSwKICAgeyAiaC1hY2M0MFUiLCBIV19IX0FDQzQwVSwgQ0dFTl9BU01fS0VZV09SRCwgKFBUUikgJiBmcnZfY2dlbl9vcHZhbF9hY2NfbmFtZXMsIHsgMHxBKFZJUlRVQUwpfEEoUFJPRklMRSksIHsgKDE8PE1BQ0hfQkFTRSkgfSB9IH0sCi0gIHsgImgtaWFjYzAiLCBIV19IX0lBQ0MwLCBDR0VOX0FTTV9LRVlXT1JELCAoUFRSKSAmIGZydl9jZ2VuX29wdmFsX2lhY2MwX25hbWVzLCB7IDB8QShWSVJUVUFMKXxBKFBST0ZJTEUpLCB7ICgxPDxNQUNIX0ZSNDAwKSB9IH0gfSwKKyAgeyAiaC1pYWNjMCIsIEhXX0hfSUFDQzAsIENHRU5fQVNNX0tFWVdPUkQsIChQVFIpICYgZnJ2X2NnZW5fb3B2YWxfaWFjYzBfbmFtZXMsIHsgMHxBKFZJUlRVQUwpfEEoUFJPRklMRSksIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNDUwKSB9IH0gfSwKICAgeyAiaC1pY2NyIiwgSFdfSF9JQ0NSLCBDR0VOX0FTTV9LRVlXT1JELCAoUFRSKSAmIGZydl9jZ2VuX29wdmFsX2ljY3JfbmFtZXMsIHsgMHxBKFBST0ZJTEUpLCB7ICgxPDxNQUNIX0JBU0UpIH0gfSB9LAogICB7ICJoLWZjY3IiLCBIV19IX0ZDQ1IsIENHRU5fQVNNX0tFWVdPUkQsIChQVFIpICYgZnJ2X2NnZW5fb3B2YWxfZmNjcl9uYW1lcywgeyAwfEEoUFJPRklMRSksIHsgKDE8PE1BQ0hfQkFTRSkgfSB9IH0sCiAgIHsgImgtY2NjciIsIEhXX0hfQ0NDUiwgQ0dFTl9BU01fS0VZV09SRCwgKFBUUikgJiBmcnZfY2dlbl9vcHZhbF9jY2NyX25hbWVzLCB7IDB8QShQUk9GSUxFKSwgeyAoMTw8TUFDSF9CQVNFKSB9IH0gfSwKQEAgLTE5MDYsNiArMTk1MSwxMSBAQAogICB7IEZSVl9GX0xBQkVMSDYsICJmLWxhYmVsSDYiLCAwLCAzMiwgMzAsIDYsIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSB9IH0gIH0sCiAgIHsgRlJWX0ZfTEFCRUxMMTgsICJmLWxhYmVsTDE4IiwgMCwgMzIsIDE3LCAxOCwgeyAwLCB7ICgxPDxNQUNIX0JBU0UpIH0gfSAgfSwKICAgeyBGUlZfRl9MQUJFTDI0LCAiZi1sYWJlbDI0IiwgMCwgMCwgMCwgMCx7IDB8QShQQ1JFTF9BRERSKXxBKFZJUlRVQUwpLCB7ICgxPDxNQUNIX0JBU0UpIH0gfSAgfSwKKyAgeyBGUlZfRl9MUkFFLCAiZi1MUkFFIiwgMCwgMzIsIDUsIDEsIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSB9IH0gIH0sCisgIHsgRlJWX0ZfTFJBRCwgImYtTFJBRCIsIDAsIDMyLCA0LCAxLCB7IDAsIHsgKDE8PE1BQ0hfQkFTRSkgfSB9ICB9LAorICB7IEZSVl9GX0xSQVMsICJmLUxSQVMiLCAwLCAzMiwgMywgMSwgeyAwLCB7ICgxPDxNQUNIX0JBU0UpIH0gfSAgfSwKKyAgeyBGUlZfRl9UTEJQUk9QWCwgImYtVExCUFJvcHgiLCAwLCAzMiwgMjgsIDMsIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSB9IH0gIH0sCisgIHsgRlJWX0ZfVExCUFJMLCAiZi1UTEJQUkwiLCAwLCAzMiwgMjUsIDEsIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSB9IH0gIH0sCiAgIHsgRlJWX0ZfSUNDSV8xX05VTEwsICJmLUlDQ2lfMS1udWxsIiwgMCwgMzIsIDExLCAyLCB7IDB8QShSRVNFUlZFRCksIHsgKDE8PE1BQ0hfQkFTRSkgfSB9ICB9LAogICB7IEZSVl9GX0lDQ0lfMl9OVUxMLCAiZi1JQ0NpXzItbnVsbCIsIDAsIDMyLCAyNiwgMiwgeyAwfEEoUkVTRVJWRUQpLCB7ICgxPDxNQUNIX0JBU0UpIH0gfSAgfSwKICAgeyBGUlZfRl9JQ0NJXzNfTlVMTCwgImYtSUNDaV8zLW51bGwiLCAwLCAzMiwgMSwgMiwgeyAwfEEoUkVTRVJWRUQpLCB7ICgxPDxNQUNIX0JBU0UpIH0gfSAgfSwKQEAgLTE5MzUsNiArMTk4NSw4IEBACiAgIHsgRlJWX0ZfTUlTQ19OVUxMXzksICJmLW1pc2MtbnVsbC05IiwgMCwgMzIsIDUsIDQsIHsgMHxBKFJFU0VSVkVEKSwgeyAoMTw8TUFDSF9CQVNFKSB9IH0gIH0sCiAgIHsgRlJWX0ZfTUlTQ19OVUxMXzEwLCAiZi1taXNjLW51bGwtMTAiLCAwLCAzMiwgMTYsIDUsIHsgMHxBKFJFU0VSVkVEKSwgeyAoMTw8TUFDSF9CQVNFKSB9IH0gIH0sCiAgIHsgRlJWX0ZfTUlTQ19OVUxMXzExLCAiZi1taXNjLW51bGwtMTEiLCAwLCAzMiwgNSwgMSwgeyAwfEEoUkVTRVJWRUQpLCB7ICgxPDxNQUNIX0JBU0UpIH0gfSAgfSwKKyAgeyBGUlZfRl9MUkFfTlVMTCwgImYtTFJBLW51bGwiLCAwLCAzMiwgMiwgMywgeyAwfEEoUkVTRVJWRUQpLCB7ICgxPDxNQUNIX0JBU0UpIH0gfSAgfSwKKyAgeyBGUlZfRl9UTEJQUl9OVUxMLCAiZi1UTEJQUi1udWxsIiwgMCwgMzIsIDMwLCAyLCB7IDB8QShSRVNFUlZFRCksIHsgKDE8PE1BQ0hfQkFTRSkgfSB9ICB9LAogICB7IEZSVl9GX0xJX09GRiwgImYtTEktb2ZmIiwgMCwgMzIsIDI1LCAxLCB7IDB8QShSRVNFUlZFRCksIHsgKDE8PE1BQ0hfQkFTRSkgfSB9ICB9LAogICB7IEZSVl9GX0xJX09OLCAiZi1MSS1vbiIsIDAsIDMyLCAyNSwgMSwgeyAwfEEoUkVTRVJWRUQpLCB7ICgxPDxNQUNIX0JBU0UpIH0gfSAgfSwKICAgeyAwLCAwLCAwLCAwLCAwLCAwLCB7MCwgezB9fSB9CkBAIC0yMjMxLDYgKzIyODMsMjYgQEAKICAgeyAibGFiZWwyNCIsIEZSVl9PUEVSQU5EX0xBQkVMMjQsIEhXX0hfSUFERFIsIDE3LCAyNCwKICAgICB7IDIsIHsgKGNvbnN0IFBUUikgJkZSVl9GX0xBQkVMMjRfTVVMVElfSUZJRUxEWzBdIH0gfSwgCiAgICAgeyAwfEEoUENSRUxfQUREUil8QShWSVJUVUFMKSwgeyAoMTw8TUFDSF9CQVNFKSB9IH0gIH0sCisvKiBMUkFFOiBMb2FkIFJlYWwgQWRkcmVzcyBFIGZsYWcgKi8KKyAgeyAiTFJBRSIsIEZSVl9PUEVSQU5EX0xSQUUsIEhXX0hfVUlOVCwgNSwgMSwKKyAgICB7IDAsIHsgKGNvbnN0IFBUUikgJmZydl9jZ2VuX2lmbGRfdGFibGVbRlJWX0ZfTFJBRV0gfSB9LCAKKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSkgfSB9ICB9LAorLyogTFJBRDogTG9hZCBSZWFsIEFkZHJlc3MgRCBmbGFnICovCisgIHsgIkxSQUQiLCBGUlZfT1BFUkFORF9MUkFELCBIV19IX1VJTlQsIDQsIDEsCisgICAgeyAwLCB7IChjb25zdCBQVFIpICZmcnZfY2dlbl9pZmxkX3RhYmxlW0ZSVl9GX0xSQURdIH0gfSwgCisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpIH0gfSAgfSwKKy8qIExSQVM6IExvYWQgUmVhbCBBZGRyZXNzIFMgZmxhZyAqLworICB7ICJMUkFTIiwgRlJWX09QRVJBTkRfTFJBUywgSFdfSF9VSU5ULCAzLCAxLAorICAgIHsgMCwgeyAoY29uc3QgUFRSKSAmZnJ2X2NnZW5faWZsZF90YWJsZVtGUlZfRl9MUkFTXSB9IH0sIAorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSB9IH0gIH0sCisvKiBUTEJQUm9weDogVExCIFByb2JlIG9wZXJhdGlvbiBudW1iZXIgKi8KKyAgeyAiVExCUFJvcHgiLCBGUlZfT1BFUkFORF9UTEJQUk9QWCwgSFdfSF9VSU5ULCAyOCwgMywKKyAgICB7IDAsIHsgKGNvbnN0IFBUUikgJmZydl9jZ2VuX2lmbGRfdGFibGVbRlJWX0ZfVExCUFJPUFhdIH0gfSwgCisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpIH0gfSAgfSwKKy8qIFRMQlBSTDogVExCIFByb2JlIEwgZmxhZyAqLworICB7ICJUTEJQUkwiLCBGUlZfT1BFUkFORF9UTEJQUkwsIEhXX0hfVUlOVCwgMjUsIDEsCisgICAgeyAwLCB7IChjb25zdCBQVFIpICZmcnZfY2dlbl9pZmxkX3RhYmxlW0ZSVl9GX1RMQlBSTF0gfSB9LCAKKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSkgfSB9ICB9LAogLyogQTA6IEE9PTAgb3BlcmFuZCBvZiBtY2xyYWNjICovCiAgIHsgIkEwIiwgRlJWX09QRVJBTkRfQTAsIEhXX0hfVUlOVCwgMTcsIDEsCiAgICAgeyAwLCB7IChjb25zdCBQVFIpICZmcnZfY2dlbl9pZmxkX3RhYmxlW0ZSVl9GX0FdIH0gfSwgCkBAIC0yMzM4LDM3MzIgKzI0MTAsMzcxNyBAQAogLyogYWRkJHBhY2sgJEdSaSwkR1JqLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0FERCwgImFkZCIsICJhZGQiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogc3ViJHBhY2sgJEdSaSwkR1JqLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX1NVQiwgInN1YiIsICJzdWIiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogYW5kJHBhY2sgJEdSaSwkR1JqLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0FORCwgImFuZCIsICJhbmQiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogb3IkcGFjayAkR1JpLCRHUmosJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fT1IsICJvciIsICJvciIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiB4b3IkcGFjayAkR1JpLCRHUmosJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fWE9SLCAieG9yIiwgInhvciIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBub3QkcGFjayAkR1JqLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05PVCwgIm5vdCIsICJub3QiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogc2RpdiRwYWNrICRHUmksJEdSaiwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9TRElWLCAic2RpdiIsICJzZGl2IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9NVUxUX0RJViwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQogICB9LAogLyogbnNkaXYkcGFjayAkR1JpLCRHUmosJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTlNESVYsICJuc2RpdiIsICJuc2RpdiIsIDMyLAotICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQorICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQogICB9LAogLyogdWRpdiRwYWNrICRHUmksJEdSaiwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9VRElWLCAidWRpdiIsICJ1ZGl2IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9NVUxUX0RJViwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQogICB9LAogLyogbnVkaXYkcGFjayAkR1JpLCRHUmosJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTlVESVYsICJudWRpdiIsICJudWRpdiIsIDMyLAotICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQorICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQogICB9LAogLyogc211bCRwYWNrICRHUmksJEdSaiwkR1Jkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9TTVVMLCAic211bCIsICJzbXVsIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9NVUxUX0RJViwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQogICB9LAogLyogdW11bCRwYWNrICRHUmksJEdSaiwkR1Jkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9VTVVMLCAidW11bCIsICJ1bXVsIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9NVUxUX0RJViwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQogICB9LAogLyogc211JHBhY2sgJEdSaSwkR1JqICovCiAgIHsKICAgICBGUlZfSU5TTl9TTVUsICJzbXUiLCAic211IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKSwgVU5JVF9JQUNDLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwfEEoQVVESU8pLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCksIFVOSVRfSUFDQywgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBzbWFzcyRwYWNrICRHUmksJEdSaiAqLwogICB7CiAgICAgRlJWX0lOU05fU01BU1MsICJzbWFzcyIsICJzbWFzcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCksIFVOSVRfSUFDQywgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKEFVRElPKSwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApLCBVTklUX0lBQ0MsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogc21zc3MkcGFjayAkR1JpLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX1NNU1NTLCAic21zc3MiLCAic21zc3MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApLCBVTklUX0lBQ0MsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShBVURJTyksIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNDUwKSwgVU5JVF9JQUNDLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIHNsbCRwYWNrICRHUmksJEdSaiwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9TTEwsICJzbGwiLCAic2xsIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIHNybCRwYWNrICRHUmksJEdSaiwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9TUkwsICJzcmwiLCAic3JsIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIHNyYSRwYWNrICRHUmksJEdSaiwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9TUkEsICJzcmEiLCAic3JhIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIHNsYXNzJHBhY2sgJEdSaSwkR1JqLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX1NMQVNTLCAic2xhc3MiLCAic2xhc3MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShBVURJTyksIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNDUwKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIHNjdXRzcyRwYWNrICRHUmosJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fU0NVVFNTLCAic2N1dHNzIiwgInNjdXRzcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKEFVRElPKSwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApLCBVTklUX0kwLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIHNjYW4kcGFjayAkR1JpLCRHUmosJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fU0NBTiwgInNjYW4iLCAic2NhbiIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TQ0FOLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TQ0FOLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBjYWRkJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0FERCwgImNhZGQiLCAiY2FkZCIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBjc3ViJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ1NVQiwgImNzdWIiLCAiY3N1YiIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBjYW5kJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0FORCwgImNhbmQiLCAiY2FuZCIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBjb3IkcGFjayAkR1JpLCRHUmosJEdSaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DT1IsICJjb3IiLCAiY29yIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIGN4b3IkcGFjayAkR1JpLCRHUmosJEdSaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DWE9SLCAiY3hvciIsICJjeG9yIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIGNub3QkcGFjayAkR1JqLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ05PVCwgImNub3QiLCAiY25vdCIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBjc211bCRwYWNrICRHUmksJEdSaiwkR1Jkb3VibGVrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NTTVVMLCAiY3NtdWwiLCAiY3NtdWwiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CiAgIH0sCiAvKiBjc2RpdiRwYWNrICRHUmksJEdSaiwkR1JrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NTRElWLCAiY3NkaXYiLCAiY3NkaXYiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CiAgIH0sCiAvKiBjdWRpdiRwYWNrICRHUmksJEdSaiwkR1JrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NVRElWLCAiY3VkaXYiLCAiY3VkaXYiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CiAgIH0sCiAvKiBjc2xsJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ1NMTCwgImNzbGwiLCAiY3NsbCIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBjc3JsJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ1NSTCwgImNzcmwiLCAiY3NybCIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBjc3JhJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ1NSQSwgImNzcmEiLCAiY3NyYSIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBjc2NhbiRwYWNrICRHUmksJEdSaiwkR1JrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NTQ0FOLCAiY3NjYW4iLCAiY3NjYW4iLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU0NBTiwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU0NBTiwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogYWRkY2MkcGFjayAkR1JpLCRHUmosJEdSaywkSUNDaV8xICovCiAgIHsKICAgICBGUlZfSU5TTl9BRERDQywgImFkZGNjIiwgImFkZGNjIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIHN1YmNjJHBhY2sgJEdSaSwkR1JqLCRHUmssJElDQ2lfMSAqLwogICB7CiAgICAgRlJWX0lOU05fU1VCQ0MsICJzdWJjYyIsICJzdWJjYyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBhbmRjYyRwYWNrICRHUmksJEdSaiwkR1JrLCRJQ0NpXzEgKi8KICAgewogICAgIEZSVl9JTlNOX0FORENDLCAiYW5kY2MiLCAiYW5kY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogb3JjYyRwYWNrICRHUmksJEdSaiwkR1JrLCRJQ0NpXzEgKi8KICAgewogICAgIEZSVl9JTlNOX09SQ0MsICJvcmNjIiwgIm9yY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogeG9yY2MkcGFjayAkR1JpLCRHUmosJEdSaywkSUNDaV8xICovCiAgIHsKICAgICBGUlZfSU5TTl9YT1JDQywgInhvcmNjIiwgInhvcmNjIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIHNsbGNjJHBhY2sgJEdSaSwkR1JqLCRHUmssJElDQ2lfMSAqLwogICB7CiAgICAgRlJWX0lOU05fU0xMQ0MsICJzbGxjYyIsICJzbGxjYyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBzcmxjYyRwYWNrICRHUmksJEdSaiwkR1JrLCRJQ0NpXzEgKi8KICAgewogICAgIEZSVl9JTlNOX1NSTENDLCAic3JsY2MiLCAic3JsY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogc3JhY2MkcGFjayAkR1JpLCRHUmosJEdSaywkSUNDaV8xICovCiAgIHsKICAgICBGUlZfSU5TTl9TUkFDQywgInNyYWNjIiwgInNyYWNjIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIHNtdWxjYyRwYWNrICRHUmksJEdSaiwkR1Jkb3VibGVrLCRJQ0NpXzEgKi8KICAgewogICAgIEZSVl9JTlNOX1NNVUxDQywgInNtdWxjYyIsICJzbXVsY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CiAgIH0sCiAvKiB1bXVsY2MkcGFjayAkR1JpLCRHUmosJEdSZG91YmxlaywkSUNDaV8xICovCiAgIHsKICAgICBGUlZfSU5TTl9VTVVMQ0MsICJ1bXVsY2MiLCAidW11bGNjIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9NVUxUX0RJViwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQogICB9LAogLyogY2FkZGNjJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0FERENDLCAiY2FkZGNjIiwgImNhZGRjYyIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBjc3ViY2MkcGFjayAkR1JpLCRHUmosJEdSaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DU1VCQ0MsICJjc3ViY2MiLCAiY3N1YmNjIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIGNzbXVsY2MkcGFjayAkR1JpLCRHUmosJEdSZG91YmxlaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DU01VTENDLCAiY3NtdWxjYyIsICJjc211bGNjIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9NVUxUX0RJViwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQogICB9LAogLyogY2FuZGNjJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0FORENDLCAiY2FuZGNjIiwgImNhbmRjYyIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBjb3JjYyRwYWNrICRHUmksJEdSaiwkR1JrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NPUkNDLCAiY29yY2MiLCAiY29yY2MiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogY3hvcmNjJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ1hPUkNDLCAiY3hvcmNjIiwgImN4b3JjYyIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBjc2xsY2MkcGFjayAkR1JpLCRHUmosJEdSaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DU0xMQ0MsICJjc2xsY2MiLCAiY3NsbGNjIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIGNzcmxjYyRwYWNrICRHUmksJEdSaiwkR1JrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NTUkxDQywgImNzcmxjYyIsICJjc3JsY2MiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogY3NyYWNjJHBhY2sgJEdSaSwkR1JqLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ1NSQUNDLCAiY3NyYWNjIiwgImNzcmFjYyIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBhZGR4JHBhY2sgJEdSaSwkR1JqLCRHUmssJElDQ2lfMSAqLwogICB7CiAgICAgRlJWX0lOU05fQUREWCwgImFkZHgiLCAiYWRkeCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBzdWJ4JHBhY2sgJEdSaSwkR1JqLCRHUmssJElDQ2lfMSAqLwogICB7CiAgICAgRlJWX0lOU05fU1VCWCwgInN1YngiLCAic3VieCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBhZGR4Y2MkcGFjayAkR1JpLCRHUmosJEdSaywkSUNDaV8xICovCiAgIHsKICAgICBGUlZfSU5TTl9BRERYQ0MsICJhZGR4Y2MiLCAiYWRkeGNjIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIHN1YnhjYyRwYWNrICRHUmksJEdSaiwkR1JrLCRJQ0NpXzEgKi8KICAgewogICAgIEZSVl9JTlNOX1NVQlhDQywgInN1YnhjYyIsICJzdWJ4Y2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogYWRkc3MkcGFjayAkR1JpLCRHUmosJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fQUREU1MsICJhZGRzcyIsICJhZGRzcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKEFVRElPKSwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogc3Vic3MkcGFjayAkR1JpLCRHUmosJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fU1VCU1MsICJzdWJzcyIsICJzdWJzcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKEFVRElPKSwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogYWRkaSRwYWNrICRHUmksJHMxMiwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9BRERJLCAiYWRkaSIsICJhZGRpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIHN1YmkkcGFjayAkR1JpLCRzMTIsJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fU1VCSSwgInN1YmkiLCAic3ViaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBhbmRpJHBhY2sgJEdSaSwkczEyLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0FOREksICJhbmRpIiwgImFuZGkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogb3JpJHBhY2sgJEdSaSwkczEyLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX09SSSwgIm9yaSIsICJvcmkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogeG9yaSRwYWNrICRHUmksJHMxMiwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9YT1JJLCAieG9yaSIsICJ4b3JpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIHNkaXZpJHBhY2sgJEdSaSwkczEyLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX1NESVZJLCAic2RpdmkiLCAic2RpdmkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CiAgIH0sCiAvKiBuc2RpdmkkcGFjayAkR1JpLCRzMTIsJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTlNESVZJLCAibnNkaXZpIiwgIm5zZGl2aSIsIDMyLAotICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQorICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQogICB9LAogLyogdWRpdmkkcGFjayAkR1JpLCRzMTIsJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fVURJVkksICJ1ZGl2aSIsICJ1ZGl2aSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9NVUxUX0RJViwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMiB9IH0KICAgfSwKIC8qIG51ZGl2aSRwYWNrICRHUmksJHMxMiwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9OVURJVkksICJudWRpdmkiLCAibnVkaXZpIiwgMzIsCi0gICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9NVUxUX0RJViwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CisgICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9NVUxUX0RJViwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CiAgIH0sCiAvKiBzbXVsaSRwYWNrICRHUmksJHMxMiwkR1Jkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9TTVVMSSwgInNtdWxpIiwgInNtdWxpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9NVUxUX0RJViwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8yIH0gfQogICB9LAogLyogdW11bGkkcGFjayAkR1JpLCRzMTIsJEdSZG91YmxlayAqLwogICB7CiAgICAgRlJWX0lOU05fVU1VTEksICJ1bXVsaSIsICJ1bXVsaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9NVUxUX0RJViwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMiB9IH0KICAgfSwKIC8qIHNsbGkkcGFjayAkR1JpLCRzMTIsJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fU0xMSSwgInNsbGkiLCAic2xsaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBzcmxpJHBhY2sgJEdSaSwkczEyLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX1NSTEksICJzcmxpIiwgInNybGkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogc3JhaSRwYWNrICRHUmksJHMxMiwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9TUkFJLCAic3JhaSIsICJzcmFpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIHNjYW5pJHBhY2sgJEdSaSwkczEyLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX1NDQU5JLCAic2NhbmkiLCAic2NhbmkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU0NBTiwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU0NBTiwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogYWRkaWNjJHBhY2sgJEdSaSwkczEwLCRHUmssJElDQ2lfMSAqLwogICB7CiAgICAgRlJWX0lOU05fQURESUNDLCAiYWRkaWNjIiwgImFkZGljYyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBzdWJpY2MkcGFjayAkR1JpLCRzMTAsJEdSaywkSUNDaV8xICovCiAgIHsKICAgICBGUlZfSU5TTl9TVUJJQ0MsICJzdWJpY2MiLCAic3ViaWNjIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIGFuZGljYyRwYWNrICRHUmksJHMxMCwkR1JrLCRJQ0NpXzEgKi8KICAgewogICAgIEZSVl9JTlNOX0FORElDQywgImFuZGljYyIsICJhbmRpY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogb3JpY2MkcGFjayAkR1JpLCRzMTAsJEdSaywkSUNDaV8xICovCiAgIHsKICAgICBGUlZfSU5TTl9PUklDQywgIm9yaWNjIiwgIm9yaWNjIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIHhvcmljYyRwYWNrICRHUmksJHMxMCwkR1JrLCRJQ0NpXzEgKi8KICAgewogICAgIEZSVl9JTlNOX1hPUklDQywgInhvcmljYyIsICJ4b3JpY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogc211bGljYyRwYWNrICRHUmksJHMxMCwkR1Jkb3VibGVrLCRJQ0NpXzEgKi8KICAgewogICAgIEZSVl9JTlNOX1NNVUxJQ0MsICJzbXVsaWNjIiwgInNtdWxpY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX01VTFRfRElWLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzIgfSB9CiAgIH0sCiAvKiB1bXVsaWNjJHBhY2sgJEdSaSwkczEwLCRHUmRvdWJsZWssJElDQ2lfMSAqLwogICB7CiAgICAgRlJWX0lOU05fVU1VTElDQywgInVtdWxpY2MiLCAidW11bGljYyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9NVUxUX0RJViwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTVVMVF9ESVYsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMiB9IH0KICAgfSwKIC8qIHNsbGljYyRwYWNrICRHUmksJHMxMCwkR1JrLCRJQ0NpXzEgKi8KICAgewogICAgIEZSVl9JTlNOX1NMTElDQywgInNsbGljYyIsICJzbGxpY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogc3JsaWNjJHBhY2sgJEdSaSwkczEwLCRHUmssJElDQ2lfMSAqLwogICB7CiAgICAgRlJWX0lOU05fU1JMSUNDLCAic3JsaWNjIiwgInNybGljYyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBzcmFpY2MkcGFjayAkR1JpLCRzMTAsJEdSaywkSUNDaV8xICovCiAgIHsKICAgICBGUlZfSU5TTl9TUkFJQ0MsICJzcmFpY2MiLCAic3JhaWNjIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIGFkZHhpJHBhY2sgJEdSaSwkczEwLCRHUmssJElDQ2lfMSAqLwogICB7CiAgICAgRlJWX0lOU05fQUREWEksICJhZGR4aSIsICJhZGR4aSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBzdWJ4aSRwYWNrICRHUmksJHMxMCwkR1JrLCRJQ0NpXzEgKi8KICAgewogICAgIEZSVl9JTlNOX1NVQlhJLCAic3VieGkiLCAic3VieGkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogYWRkeGljYyRwYWNrICRHUmksJHMxMCwkR1JrLCRJQ0NpXzEgKi8KICAgewogICAgIEZSVl9JTlNOX0FERFhJQ0MsICJhZGR4aWNjIiwgImFkZHhpY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogc3VieGljYyRwYWNrICRHUmksJHMxMCwkR1JrLCRJQ0NpXzEgKi8KICAgewogICAgIEZSVl9JTlNOX1NVQlhJQ0MsICJzdWJ4aWNjIiwgInN1YnhpY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogY21wYiRwYWNrICRHUmksJEdSaiwkSUNDaV8xICovCiAgIHsKICAgICBGUlZfSU5TTl9DTVBCLCAiY21wYiIsICJjbXBiIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBjbXBiYSRwYWNrICRHUmksJEdSaiwkSUNDaV8xICovCiAgIHsKICAgICBGUlZfSU5TTl9DTVBCQSwgImNtcGJhIiwgImNtcGJhIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9JXzEgfSB9CiAgIH0sCiAvKiBzZXRsbyRwYWNrICR1bG8xNiwkR1JrbG8gKi8KICAgewogICAgIEZSVl9JTlNOX1NFVExPLCAic2V0bG8iLCAic2V0bG8iLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfSV8xIH0gfQogICB9LAogLyogc2V0aGkkcGFjayAkdWhpMTYsJEdSa2hpICovCiAgIHsKICAgICBGUlZfSU5TTl9TRVRISSwgInNldGhpIiwgInNldGhpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIHNldGxvcyRwYWNrICRzbG8xNiwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9TRVRMT1MsICJzZXRsb3MiLCAic2V0bG9zIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9JXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX0lfMSB9IH0KICAgfSwKIC8qIGxkc2IkcGFjayBAKCRHUmksJEdSaiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTERTQiwgImxkc2IiLCAibGRzYiIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBsZHViJHBhY2sgQCgkR1JpLCRHUmopLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0xEVUIsICJsZHViIiwgImxkdWIiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGRzaCRwYWNrIEAoJEdSaSwkR1JqKSwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9MRFNILCAibGRzaCIsICJsZHNoIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGxkdWgkcGFjayBAKCRHUmksJEdSaiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTERVSCwgImxkdWgiLCAibGR1aCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBsZCRwYWNrIEAoJEdSaSwkR1JqKSwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9MRCwgImxkIiwgImxkIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGxkYmYkcGFjayBAKCRHUmksJEdSaiksJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTERCRiwgImxkYmYiLCAibGRiZiIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGxkaGYkcGFjayBAKCRHUmksJEdSaiksJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTERIRiwgImxkaGYiLCAibGRoZiIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGxkZiRwYWNrIEAoJEdSaSwkR1JqKSwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9MREYsICJsZGYiLCAibGRmIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGRjJHBhY2sgQCgkR1JpLCRHUmopLCRDUFJrICovCiAgIHsKICAgICBGUlZfSU5TTl9MREMsICJsZGMiLCAibGRjIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG5sZHNiJHBhY2sgQCgkR1JpLCRHUmopLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05MRFNCLCAibmxkc2IiLCAibmxkc2IiLCAzMiwKLSAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBubGR1YiRwYWNrIEAoJEdSaSwkR1JqKSwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9OTERVQiwgIm5sZHViIiwgIm5sZHViIiwgMzIsCi0gICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbmxkc2gkcGFjayBAKCRHUmksJEdSaiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxEU0gsICJubGRzaCIsICJubGRzaCIsIDMyLAotICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIG5sZHVoJHBhY2sgQCgkR1JpLCRHUmopLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05MRFVILCAibmxkdWgiLCAibmxkdWgiLCAzMiwKLSAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBubGQkcGFjayBAKCRHUmksJEdSaiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxELCAibmxkIiwgIm5sZCIsIDMyLAotICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIG5sZGJmJHBhY2sgQCgkR1JpLCRHUmopLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX05MREJGLCAibmxkYmYiLCAibmxkYmYiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIG5sZGhmJHBhY2sgQCgkR1JpLCRHUmopLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX05MREhGLCAibmxkaGYiLCAibmxkaGYiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIG5sZGYkcGFjayBAKCRHUmksJEdSaiksJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxERiwgIm5sZGYiLCAibmxkZiIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGRkJHBhY2sgQCgkR1JpLCRHUmopLCRHUmRvdWJsZWsgKi8KICAgewogICAgIEZSVl9JTlNOX0xERCwgImxkZCIsICJsZGQiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGRkZiRwYWNrIEAoJEdSaSwkR1JqKSwkRlJkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9MRERGLCAibGRkZiIsICJsZGRmIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGRkYyRwYWNrIEAoJEdSaSwkR1JqKSwkQ1BSZG91YmxlayAqLwogICB7CiAgICAgRlJWX0lOU05fTEREQywgImxkZGMiLCAibGRkYyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbmxkZCRwYWNrIEAoJEdSaSwkR1JqKSwkR1Jkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9OTERELCAibmxkZCIsICJubGRkIiwgMzIsCi0gICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbmxkZGYkcGFjayBAKCRHUmksJEdSaiksJEZSZG91YmxlayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxEREYsICJubGRkZiIsICJubGRkZiIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGRxJHBhY2sgQCgkR1JpLCRHUmopLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0xEUSwgImxkcSIsICJsZHEiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogbGRxZiRwYWNrIEAoJEdSaSwkR1JqKSwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9MRFFGLCAibGRxZiIsICJsZHFmIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogbGRxYyRwYWNrIEAoJEdSaSwkR1JqKSwkQ1BSayAqLwogICB7CiAgICAgRlJWX0lOU05fTERRQywgImxkcWMiLCAibGRxYyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBubGRxJHBhY2sgQCgkR1JpLCRHUmopLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05MRFEsICJubGRxIiwgIm5sZHEiLCAzMiwKLSAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG5sZHFmJHBhY2sgQCgkR1JpLCRHUmopLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX05MRFFGLCAibmxkcWYiLCAibmxkcWYiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogbGRzYnUkcGFjayBAKCRHUmksJEdSaiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTERTQlUsICJsZHNidSIsICJsZHNidSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBsZHVidSRwYWNrIEAoJEdSaSwkR1JqKSwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9MRFVCVSwgImxkdWJ1IiwgImxkdWJ1IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGxkc2h1JHBhY2sgQCgkR1JpLCRHUmopLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0xEU0hVLCAibGRzaHUiLCAibGRzaHUiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGR1aHUkcGFjayBAKCRHUmksJEdSaiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTERVSFUsICJsZHVodSIsICJsZHVodSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBsZHUkcGFjayBAKCRHUmksJEdSaiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTERVLCAibGR1IiwgImxkdSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBubGRzYnUkcGFjayBAKCRHUmksJEdSaiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxEU0JVLCAibmxkc2J1IiwgIm5sZHNidSIsIDMyLAotICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIG5sZHVidSRwYWNrIEAoJEdSaSwkR1JqKSwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9OTERVQlUsICJubGR1YnUiLCAibmxkdWJ1IiwgMzIsCi0gICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbmxkc2h1JHBhY2sgQCgkR1JpLCRHUmopLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05MRFNIVSwgIm5sZHNodSIsICJubGRzaHUiLCAzMiwKLSAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBubGR1aHUkcGFjayBAKCRHUmksJEdSaiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxEVUhVLCAibmxkdWh1IiwgIm5sZHVodSIsIDMyLAotICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIG5sZHUkcGFjayBAKCRHUmksJEdSaiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxEVSwgIm5sZHUiLCAibmxkdSIsIDMyLAotICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGxkYmZ1JHBhY2sgQCgkR1JpLCRHUmopLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX0xEQkZVLCAibGRiZnUiLCAibGRiZnUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBsZGhmdSRwYWNrIEAoJEdSaSwkR1JqKSwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9MREhGVSwgImxkaGZ1IiwgImxkaGZ1IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGRmdSRwYWNrIEAoJEdSaSwkR1JqKSwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9MREZVLCAibGRmdSIsICJsZGZ1IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGRjdSRwYWNrIEAoJEdSaSwkR1JqKSwkQ1BSayAqLwogICB7CiAgICAgRlJWX0lOU05fTERDVSwgImxkY3UiLCAibGRjdSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBubGRiZnUkcGFjayBAKCRHUmksJEdSaiksJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxEQkZVLCAibmxkYmZ1IiwgIm5sZGJmdSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbmxkaGZ1JHBhY2sgQCgkR1JpLCRHUmopLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX05MREhGVSwgIm5sZGhmdSIsICJubGRoZnUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIG5sZGZ1JHBhY2sgQCgkR1JpLCRHUmopLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX05MREZVLCAibmxkZnUiLCAibmxkZnUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGxkZHUkcGFjayBAKCRHUmksJEdSaiksJEdSZG91YmxlayAqLwogICB7CiAgICAgRlJWX0lOU05fTEREVSwgImxkZHUiLCAibGRkdSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBubGRkdSRwYWNrIEAoJEdSaSwkR1JqKSwkR1Jkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9OTEREVSwgIm5sZGR1IiwgIm5sZGR1IiwgMzIsCi0gICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGRkZnUkcGFjayBAKCRHUmksJEdSaiksJEZSZG91YmxlayAqLwogICB7CiAgICAgRlJWX0lOU05fTERERlUsICJsZGRmdSIsICJsZGRmdSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGxkZGN1JHBhY2sgQCgkR1JpLCRHUmopLCRDUFJkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9MRERDVSwgImxkZGN1IiwgImxkZGN1IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBubGRkZnUkcGFjayBAKCRHUmksJEdSaiksJEZSZG91YmxlayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxEREZVLCAibmxkZGZ1IiwgIm5sZGRmdSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGRxdSRwYWNrIEAoJEdSaSwkR1JqKSwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9MRFFVLCAibGRxdSIsICJsZHF1IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG5sZHF1JHBhY2sgQCgkR1JpLCRHUmopLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05MRFFVLCAibmxkcXUiLCAibmxkcXUiLCAzMiwKLSAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGxkcWZ1JHBhY2sgQCgkR1JpLCRHUmopLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX0xEUUZVLCAibGRxZnUiLCAibGRxZnUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBsZHFjdSRwYWNrIEAoJEdSaSwkR1JqKSwkQ1BSayAqLwogICB7CiAgICAgRlJWX0lOU05fTERRQ1UsICJsZHFjdSIsICJsZHFjdSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBubGRxZnUkcGFjayBAKCRHUmksJEdSaiksJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxEUUZVLCAibmxkcWZ1IiwgIm5sZHFmdSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBsZHNiaSRwYWNrIEAoJEdSaSwkZDEyKSwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9MRFNCSSwgImxkc2JpIiwgImxkc2JpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGxkc2hpJHBhY2sgQCgkR1JpLCRkMTIpLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0xEU0hJLCAibGRzaGkiLCAibGRzaGkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGRpJHBhY2sgQCgkR1JpLCRkMTIpLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0xESSwgImxkaSIsICJsZGkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGR1YmkkcGFjayBAKCRHUmksJGQxMiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTERVQkksICJsZHViaSIsICJsZHViaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBsZHVoaSRwYWNrIEAoJEdSaSwkZDEyKSwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9MRFVISSwgImxkdWhpIiwgImxkdWhpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGxkYmZpJHBhY2sgQCgkR1JpLCRkMTIpLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX0xEQkZJLCAibGRiZmkiLCAibGRiZmkiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBsZGhmaSRwYWNrIEAoJEdSaSwkZDEyKSwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9MREhGSSwgImxkaGZpIiwgImxkaGZpIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbGRmaSRwYWNrIEAoJEdSaSwkZDEyKSwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9MREZJLCAibGRmaSIsICJsZGZpIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbmxkc2JpJHBhY2sgQCgkR1JpLCRkMTIpLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05MRFNCSSwgIm5sZHNiaSIsICJubGRzYmkiLCAzMiwKLSAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBubGR1YmkkcGFjayBAKCRHUmksJGQxMiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxEVUJJLCAibmxkdWJpIiwgIm5sZHViaSIsIDMyLAotICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIG5sZHNoaSRwYWNrIEAoJEdSaSwkZDEyKSwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9OTERTSEksICJubGRzaGkiLCAibmxkc2hpIiwgMzIsCi0gICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbmxkdWhpJHBhY2sgQCgkR1JpLCRkMTIpLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05MRFVISSwgIm5sZHVoaSIsICJubGR1aGkiLCAzMiwKLSAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBubGRpJHBhY2sgQCgkR1JpLCRkMTIpLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05MREksICJubGRpIiwgIm5sZGkiLCAzMiwKLSAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBubGRiZmkkcGFjayBAKCRHUmksJGQxMiksJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxEQkZJLCAibmxkYmZpIiwgIm5sZGJmaSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbmxkaGZpJHBhY2sgQCgkR1JpLCRkMTIpLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX05MREhGSSwgIm5sZGhmaSIsICJubGRoZmkiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIG5sZGZpJHBhY2sgQCgkR1JpLCRkMTIpLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX05MREZJLCAibmxkZmkiLCAibmxkZmkiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGxkZGkkcGFjayBAKCRHUmksJGQxMiksJEdSZG91YmxlayAqLwogICB7CiAgICAgRlJWX0lOU05fTERESSwgImxkZGkiLCAibGRkaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBsZGRmaSRwYWNrIEAoJEdSaSwkZDEyKSwkRlJkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9MRERGSSwgImxkZGZpIiwgImxkZGZpIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogbmxkZGkkcGFjayBAKCRHUmksJGQxMiksJEdSZG91YmxlayAqLwogICB7CiAgICAgRlJWX0lOU05fTkxEREksICJubGRkaSIsICJubGRkaSIsIDMyLAotICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIG5sZGRmaSRwYWNrIEAoJEdSaSwkZDEyKSwkRlJkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9OTERERkksICJubGRkZmkiLCAibmxkZGZpIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBsZHFpJHBhY2sgQCgkR1JpLCRkMTIpLCRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0xEUUksICJsZHFpIiwgImxkcWkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogbGRxZmkkcGFjayBAKCRHUmksJGQxMiksJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTERRRkksICJsZHFmaSIsICJsZHFmaSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG5sZHFmaSRwYWNrIEAoJEdSaSwkZDEyKSwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9OTERRRkksICJubGRxZmkiLCAibmxkcWZpIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIHN0YiRwYWNrICRHUmssQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9TVEIsICJzdGIiLCAic3RiIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogc3RoJHBhY2sgJEdSayxAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX1NUSCwgInN0aCIsICJzdGgiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdCRwYWNrICRHUmssQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9TVCwgInN0IiwgInN0IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogc3RiZiRwYWNrICRGUmludGssQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9TVEJGLCAic3RiZiIsICJzdGJmIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdGhmJHBhY2sgJEZSaW50ayxAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX1NUSEYsICJzdGhmIiwgInN0aGYiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI0NTBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KICAgfSwKIC8qIHN0ZiRwYWNrICRGUmludGssQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9TVEYsICJzdGYiLCAic3RmIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdGMkcGFjayAkQ1BSayxAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX1NUQywgInN0YyIsICJzdGMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KLSAgfSwKLS8qIHJzdGIkcGFjayAkR1JrLEAoJEdSaSwkR1JqKSAqLwotICB7Ci0gICAgRlJWX0lOU05fUlNUQiwgInJzdGIiLCAicnN0YiIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9Ci0gIH0sCi0vKiByc3RoJHBhY2sgJEdSayxAKCRHUmksJEdSaikgKi8KLSAgewotICAgIEZSVl9JTlNOX1JTVEgsICJyc3RoIiwgInJzdGgiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9OT05FIH0gfQotICB9LAotLyogcnN0JHBhY2sgJEdSayxAKCRHUmksJEdSaikgKi8KLSAgewotICAgIEZSVl9JTlNOX1JTVCwgInJzdCIsICJyc3QiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9OT05FIH0gfQotICB9LAotLyogcnN0YmYkcGFjayAkRlJpbnRrLEAoJEdSaSwkR1JqKSAqLwotICB7Ci0gICAgRlJWX0lOU05fUlNUQkYsICJyc3RiZiIsICJyc3RiZiIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9Ci0gIH0sCi0vKiByc3RoZiRwYWNrICRGUmludGssQCgkR1JpLCRHUmopICovCi0gIHsKLSAgICBGUlZfSU5TTl9SU1RIRiwgInJzdGhmIiwgInJzdGhmIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfTk9ORSB9IH0KLSAgfSwKLS8qIHJzdGYkcGFjayAkRlJpbnRrLEAoJEdSaSwkR1JqKSAqLwotICB7Ci0gICAgRlJWX0lOU05fUlNURiwgInJzdGYiLCAicnN0ZiIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI0NTBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KICAgfSwKIC8qIHN0ZCRwYWNrICRHUmRvdWJsZWssQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9TVEQsICJzdGQiLCAic3RkIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogc3RkZiRwYWNrICRGUmRvdWJsZWssQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9TVERGLCAic3RkZiIsICJzdGRmIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdGRjJHBhY2sgJENQUmRvdWJsZWssQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9TVERDLCAic3RkYyIsICJzdGRjIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9Ci0gIH0sCi0vKiByc3RkJHBhY2sgJEdSZG91YmxlayxAKCRHUmksJEdSaikgKi8KLSAgewotICAgIEZSVl9JTlNOX1JTVEQsICJyc3RkIiwgInJzdGQiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9OT05FIH0gfQotICB9LAotLyogcnN0ZGYkcGFjayAkRlJkb3VibGVrLEAoJEdSaSwkR1JqKSAqLwotICB7Ci0gICAgRlJWX0lOU05fUlNUREYsICJyc3RkZiIsICJyc3RkZiIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdHEkcGFjayAkR1JrLEAoJEdSaSwkR1JqKSAqLwogICB7CiAgICAgRlJWX0lOU05fU1RRLCAic3RxIiwgInN0cSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIHN0cWYkcGFjayAkRlJpbnRrLEAoJEdSaSwkR1JqKSAqLwogICB7CiAgICAgRlJWX0lOU05fU1RRRiwgInN0cWYiLCAic3RxZiIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogc3RxYyRwYWNrICRDUFJrLEAoJEdSaSwkR1JqKSAqLwogICB7CiAgICAgRlJWX0lOU05fU1RRQywgInN0cWMiLCAic3RxYyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9Ci0gIH0sCi0vKiByc3RxJHBhY2sgJEdSayxAKCRHUmksJEdSaikgKi8KLSAgewotICAgIEZSVl9JTlNOX1JTVFEsICJyc3RxIiwgInJzdHEiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9OT05FIH0gfQotICB9LAotLyogcnN0cWYkcGFjayAkRlJpbnRrLEAoJEdSaSwkR1JqKSAqLwotICB7Ci0gICAgRlJWX0lOU05fUlNUUUYsICJyc3RxZiIsICJyc3RxZiIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBzdGJ1JHBhY2sgJEdSayxAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX1NUQlUsICJzdGJ1IiwgInN0YnUiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdGh1JHBhY2sgJEdSayxAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX1NUSFUsICJzdGh1IiwgInN0aHUiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdHUkcGFjayAkR1JrLEAoJEdSaSwkR1JqKSAqLwogICB7CiAgICAgRlJWX0lOU05fU1RVLCAic3R1IiwgInN0dSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI0NTBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KICAgfSwKIC8qIHN0YmZ1JHBhY2sgJEZSaW50ayxAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX1NUQkZVLCAic3RiZnUiLCAic3RiZnUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI0NTBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KICAgfSwKIC8qIHN0aGZ1JHBhY2sgJEZSaW50ayxAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX1NUSEZVLCAic3RoZnUiLCAic3RoZnUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI0NTBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KICAgfSwKIC8qIHN0ZnUkcGFjayAkRlJpbnRrLEAoJEdSaSwkR1JqKSAqLwogICB7CiAgICAgRlJWX0lOU05fU1RGVSwgInN0ZnUiLCAic3RmdSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogc3RjdSRwYWNrICRDUFJrLEAoJEdSaSwkR1JqKSAqLwogICB7CiAgICAgRlJWX0lOU05fU1RDVSwgInN0Y3UiLCAic3RjdSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdGR1JHBhY2sgJEdSZG91YmxlayxAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX1NURFUsICJzdGR1IiwgInN0ZHUiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdGRmdSRwYWNrICRGUmRvdWJsZWssQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9TVERGVSwgInN0ZGZ1IiwgInN0ZGZ1IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdGRjdSRwYWNrICRDUFJkb3VibGVrLEAoJEdSaSwkR1JqKSAqLwogICB7CiAgICAgRlJWX0lOU05fU1REQ1UsICJzdGRjdSIsICJzdGRjdSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdHF1JHBhY2sgJEdSayxAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX1NUUVUsICJzdHF1IiwgInN0cXUiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBzdHFmdSRwYWNrICRGUmludGssQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9TVFFGVSwgInN0cWZ1IiwgInN0cWZ1IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBzdHFjdSRwYWNrICRDUFJrLEAoJEdSaSwkR1JqKSAqLwogICB7CiAgICAgRlJWX0lOU05fU1RRQ1UsICJzdHFjdSIsICJzdHFjdSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGNsZHNiJHBhY2sgQCgkR1JpLCRHUmopLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0xEU0IsICJjbGRzYiIsICJjbGRzYiIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBjbGR1YiRwYWNrIEAoJEdSaSwkR1JqKSwkR1JrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NMRFVCLCAiY2xkdWIiLCAiY2xkdWIiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogY2xkc2gkcGFjayBAKCRHUmksJEdSaiksJEdSaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTERTSCwgImNsZHNoIiwgImNsZHNoIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGNsZHVoJHBhY2sgQCgkR1JpLCRHUmopLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0xEVUgsICJjbGR1aCIsICJjbGR1aCIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBjbGQkcGFjayBAKCRHUmksJEdSaiksJEdSaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTEQsICJjbGQiLCAiY2xkIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGNsZGJmJHBhY2sgQCgkR1JpLCRHUmopLCRGUmludGssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0xEQkYsICJjbGRiZiIsICJjbGRiZiIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBjbGRoZiRwYWNrIEAoJEdSaSwkR1JqKSwkRlJpbnRrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NMREhGLCAiY2xkaGYiLCAiY2xkaGYiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogY2xkZiRwYWNrIEAoJEdSaSwkR1JqKSwkRlJpbnRrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NMREYsICJjbGRmIiwgImNsZGYiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogY2xkZCRwYWNrIEAoJEdSaSwkR1JqKSwkR1Jkb3VibGVrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NMREQsICJjbGRkIiwgImNsZGQiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogY2xkZGYkcGFjayBAKCRHUmksJEdSaiksJEZSZG91YmxlaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTERERiwgImNsZGRmIiwgImNsZGRmIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogY2xkcSRwYWNrIEAoJEdSaSwkR1JqKSwkR1JrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NMRFEsICJjbGRxIiwgImNsZHEiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogY2xkc2J1JHBhY2sgQCgkR1JpLCRHUmopLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0xEU0JVLCAiY2xkc2J1IiwgImNsZHNidSIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBjbGR1YnUkcGFjayBAKCRHUmksJEdSaiksJEdSaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTERVQlUsICJjbGR1YnUiLCAiY2xkdWJ1IiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGNsZHNodSRwYWNrIEAoJEdSaSwkR1JqKSwkR1JrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NMRFNIVSwgImNsZHNodSIsICJjbGRzaHUiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogY2xkdWh1JHBhY2sgQCgkR1JpLCRHUmopLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0xEVUhVLCAiY2xkdWh1IiwgImNsZHVodSIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBjbGR1JHBhY2sgQCgkR1JpLCRHUmopLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0xEVSwgImNsZHUiLCAiY2xkdSIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBjbGRiZnUkcGFjayBAKCRHUmksJEdSaiksJEZSaW50aywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTERCRlUsICJjbGRiZnUiLCAiY2xkYmZ1IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogY2xkaGZ1JHBhY2sgQCgkR1JpLCRHUmopLCRGUmludGssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0xESEZVLCAiY2xkaGZ1IiwgImNsZGhmdSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGNsZGZ1JHBhY2sgQCgkR1JpLCRHUmopLCRGUmludGssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0xERlUsICJjbGRmdSIsICJjbGRmdSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX0lfMiwgRlI0NTBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzIsIEZSNTUwX01BSk9SX0lfMyB9IH0KICAgfSwKIC8qIGNsZGR1JHBhY2sgQCgkR1JpLCRHUmopLCRHUmRvdWJsZWssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0xERFUsICJjbGRkdSIsICJjbGRkdSIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9JXzMgfSB9CiAgIH0sCiAvKiBjbGRkZnUkcGFjayBAKCRHUmksJEdSaiksJEZSZG91YmxlaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTERERlUsICJjbGRkZnUiLCAiY2xkZGZ1IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9MT0FELCBGUjQwMF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfSV8yLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfSV8zIH0gfQogICB9LAogLyogY2xkcXUkcGFjayBAKCRHUmksJEdSaiksJEdSaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTERRVSwgImNsZHF1IiwgImNsZHF1IiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfTE9BRCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0xPQUQsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGNzdGIkcGFjayAkR1JrLEAoJEdSaSwkR1JqKSwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DU1RCLCAiY3N0YiIsICJjc3RiIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogY3N0aCRwYWNrICRHUmssQCgkR1JpLCRHUmopLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NTVEgsICJjc3RoIiwgImNzdGgiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBjc3QkcGFjayAkR1JrLEAoJEdSaSwkR1JqKSwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DU1QsICJjc3QiLCAiY3N0IiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogY3N0YmYkcGFjayAkRlJpbnRrLEAoJEdSaSwkR1JqKSwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DU1RCRiwgImNzdGJmIiwgImNzdGJmIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogY3N0aGYkcGFjayAkRlJpbnRrLEAoJEdSaSwkR1JqKSwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DU1RIRiwgImNzdGhmIiwgImNzdGhmIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogY3N0ZiRwYWNrICRGUmludGssQCgkR1JpLCRHUmopLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NTVEYsICJjc3RmIiwgImNzdGYiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBjc3RkJHBhY2sgJEdSZG91YmxlayxAKCRHUmksJEdSaiksJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ1NURCwgImNzdGQiLCAiY3N0ZCIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI0NTBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KICAgfSwKIC8qIGNzdGRmJHBhY2sgJEZSZG91YmxlayxAKCRHUmksJEdSaiksJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ1NUREYsICJjc3RkZiIsICJjc3RkZiIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogY3N0cSRwYWNrICRHUmssQCgkR1JpLCRHUmopLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NTVFEsICJjc3RxIiwgImNzdHEiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBjc3RidSRwYWNrICRHUmssQCgkR1JpLCRHUmopLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NTVEJVLCAiY3N0YnUiLCAiY3N0YnUiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBjc3RodSRwYWNrICRHUmssQCgkR1JpLCRHUmopLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NTVEhVLCAiY3N0aHUiLCAiY3N0aHUiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBjc3R1JHBhY2sgJEdSayxAKCRHUmksJEdSaiksJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ1NUVSwgImNzdHUiLCAiY3N0dSIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI0NTBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KICAgfSwKIC8qIGNzdGJmdSRwYWNrICRGUmludGssQCgkR1JpLCRHUmopLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NTVEJGVSwgImNzdGJmdSIsICJjc3RiZnUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI0NTBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KICAgfSwKIC8qIGNzdGhmdSRwYWNrICRGUmludGssQCgkR1JpLCRHUmopLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NTVEhGVSwgImNzdGhmdSIsICJjc3RoZnUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI0NTBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KICAgfSwKIC8qIGNzdGZ1JHBhY2sgJEZSaW50ayxAKCRHUmksJEdSaiksJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ1NURlUsICJjc3RmdSIsICJjc3RmdSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogY3N0ZHUkcGFjayAkR1Jkb3VibGVrLEAoJEdSaSwkR1JqKSwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DU1REVSwgImNzdGR1IiwgImNzdGR1IiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogY3N0ZGZ1JHBhY2sgJEZSZG91YmxlayxAKCRHUmksJEdSaiksJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ1NUREZVLCAiY3N0ZGZ1IiwgImNzdGRmdSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogc3RiaSRwYWNrICRHUmssQCgkR1JpLCRkMTIpICovCiAgIHsKICAgICBGUlZfSU5TTl9TVEJJLCAic3RiaSIsICJzdGJpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogc3RoaSRwYWNrICRHUmssQCgkR1JpLCRkMTIpICovCiAgIHsKICAgICBGUlZfSU5TTl9TVEhJLCAic3RoaSIsICJzdGhpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjQ1MF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQogICB9LAogLyogc3RpJHBhY2sgJEdSayxAKCRHUmksJGQxMikgKi8KICAgewogICAgIEZSVl9JTlNOX1NUSSwgInN0aSIsICJzdGkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdGJmaSRwYWNrICRGUmludGssQCgkR1JpLCRkMTIpICovCiAgIHsKICAgICBGUlZfSU5TTl9TVEJGSSwgInN0YmZpIiwgInN0YmZpIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdGhmaSRwYWNrICRGUmludGssQCgkR1JpLCRkMTIpICovCiAgIHsKICAgICBGUlZfSU5TTl9TVEhGSSwgInN0aGZpIiwgInN0aGZpIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNDUwX01BSk9SX0lfMywgRlI1MDBfTUFKT1JfSV8zLCBGUjU1MF9NQUpPUl9JXzQgfSB9CiAgIH0sCiAvKiBzdGZpJHBhY2sgJEZSaW50ayxAKCRHUmksJGQxMikgKi8KICAgewogICAgIEZSVl9JTlNOX1NURkksICJzdGZpIiwgInN0ZmkiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI0NTBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KICAgfSwKIC8qIHN0ZGkkcGFjayAkR1Jkb3VibGVrLEAoJEdSaSwkZDEyKSAqLwogICB7CiAgICAgRlJWX0lOU05fU1RESSwgInN0ZGkiLCAic3RkaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9TVE9SRSwgRlI0MDBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI0NTBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KICAgfSwKIC8qIHN0ZGZpJHBhY2sgJEZSZG91YmxlayxAKCRHUmksJGQxMikgKi8KICAgewogICAgIEZSVl9JTlNOX1NUREZJLCAic3RkZmkiLCAic3RkZmkiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9JXzMsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfSV80IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX0lfMywgRlI0NTBfTUFKT1JfSV8zLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX0lfNCB9IH0KICAgfSwKIC8qIHN0cWkkcGFjayAkR1JrLEAoJEdSaSwkZDEyKSAqLwogICB7CiAgICAgRlJWX0lOU05fU1RRSSwgInN0cWkiLCAic3RxaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX1NUT1JFLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIHN0cWZpJHBhY2sgJEZSaW50ayxAKCRHUmksJGQxMikgKi8KICAgewogICAgIEZSVl9JTlNOX1NUUUZJLCAic3RxZmkiLCAic3RxZmkiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfU1RPUkUsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMywgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIHN3YXAkcGFjayBAKCRHUmksJEdSaiksJEdSayAqLwogICB7CiAgICAgRlJWX0lOU05fU1dBUCwgInN3YXAiLCAic3dhcCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfQ18yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNDUwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9DXzIgfSB9CiAgIH0sCiAvKiBzd2FwaSRwYWNrIEAoJEdSaSwkZDEyKSwkR1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9TV0FQSSwgInN3YXBpIiwgInN3YXBpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9DXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMiwgRlI0NTBfTUFKT1JfQ18yLCBGUjUwMF9NQUpPUl9DXzIsIEZSNTUwX01BSk9SX0NfMiB9IH0KICAgfSwKIC8qIGNzd2FwJHBhY2sgQCgkR1JpLCRHUmopLCRHUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ1NXQVAsICJjc3dhcCIsICJjc3dhcCIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfQ18yIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNDUwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9DXzIgfSB9CiAgIH0sCiAvKiBtb3ZnZiRwYWNrICRHUmosJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTU9WR0YsICJtb3ZnZiIsICJtb3ZnZiIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSTAsIEZSNDAwX01BSk9SX0lfNCwgRlI1MDBfTUFKT1JfSV80LCBGUjU1MF9NQUpPUl9JXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JMCwgRlI0MDBfTUFKT1JfSV80LCBGUjQ1MF9NQUpPUl9JXzQsIEZSNTAwX01BSk9SX0lfNCwgRlI1NTBfTUFKT1JfSV81IH0gfQogICB9LAogLyogbW92ZmckcGFjayAkRlJpbnRrLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX01PVkZHLCAibW92ZmciLCAibW92ZmciLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0kwLCBGUjQwMF9NQUpPUl9JXzQsIEZSNTAwX01BSk9SX0lfNCwgRlI1NTBfTUFKT1JfSV81IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSTAsIEZSNDAwX01BSk9SX0lfNCwgRlI0NTBfTUFKT1JfSV80LCBGUjUwMF9NQUpPUl9JXzQsIEZSNTUwX01BSk9SX0lfNSB9IH0KICAgfSwKIC8qIG1vdmdmZCRwYWNrICRHUmosJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTU9WR0ZELCAibW92Z2ZkIiwgIm1vdmdmZCIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSTAsIEZSNDAwX01BSk9SX0lfNCwgRlI1MDBfTUFKT1JfSV80LCBGUjU1MF9NQUpPUl9JXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JMCwgRlI0MDBfTUFKT1JfSV80LCBGUjQ1MF9NQUpPUl9JXzQsIEZSNTAwX01BSk9SX0lfNCwgRlI1NTBfTUFKT1JfSV81IH0gfQogICB9LAogLyogbW92ZmdkJHBhY2sgJEZSaW50aywkR1JqICovCiAgIHsKICAgICBGUlZfSU5TTl9NT1ZGR0QsICJtb3ZmZ2QiLCAibW92ZmdkIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JMCwgRlI0MDBfTUFKT1JfSV80LCBGUjUwMF9NQUpPUl9JXzQsIEZSNTUwX01BSk9SX0lfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0kwLCBGUjQwMF9NQUpPUl9JXzQsIEZSNDUwX01BSk9SX0lfNCwgRlI1MDBfTUFKT1JfSV80LCBGUjU1MF9NQUpPUl9JXzUgfSB9CiAgIH0sCiAvKiBtb3ZnZnEkcGFjayAkR1JqLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX01PVkdGUSwgIm1vdmdmcSIsICJtb3ZnZnEiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfSTAsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfNCwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfSTAsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfNCwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG1vdmZncSRwYWNrICRGUmludGssJEdSaiAqLwogICB7CiAgICAgRlJWX0lOU05fTU9WRkdRLCAibW92ZmdxIiwgIm1vdmZncSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9JMCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV80LCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9JMCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV80LCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogY21vdmdmJHBhY2sgJEdSaiwkRlJpbnRrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNT1ZHRiwgImNtb3ZnZiIsICJjbW92Z2YiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0kwLCBGUjQwMF9NQUpPUl9JXzQsIEZSNTAwX01BSk9SX0lfNCwgRlI1NTBfTUFKT1JfSV81IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSTAsIEZSNDAwX01BSk9SX0lfNCwgRlI0NTBfTUFKT1JfSV80LCBGUjUwMF9NQUpPUl9JXzQsIEZSNTUwX01BSk9SX0lfNSB9IH0KICAgfSwKIC8qIGNtb3ZmZyRwYWNrICRGUmludGssJEdSaiwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTU9WRkcsICJjbW92ZmciLCAiY21vdmZnIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JMCwgRlI0MDBfTUFKT1JfSV80LCBGUjUwMF9NQUpPUl9JXzQsIEZSNTUwX01BSk9SX0lfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0kwLCBGUjQwMF9NQUpPUl9JXzQsIEZSNDUwX01BSk9SX0lfNCwgRlI1MDBfTUFKT1JfSV80LCBGUjU1MF9NQUpPUl9JXzUgfSB9CiAgIH0sCiAvKiBjbW92Z2ZkJHBhY2sgJEdSaiwkRlJpbnRrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNT1ZHRkQsICJjbW92Z2ZkIiwgImNtb3ZnZmQiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0kwLCBGUjQwMF9NQUpPUl9JXzQsIEZSNTAwX01BSk9SX0lfNCwgRlI1NTBfTUFKT1JfSV81IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSTAsIEZSNDAwX01BSk9SX0lfNCwgRlI0NTBfTUFKT1JfSV80LCBGUjUwMF9NQUpPUl9JXzQsIEZSNTUwX01BSk9SX0lfNSB9IH0KICAgfSwKIC8qIGNtb3ZmZ2QkcGFjayAkRlJpbnRrLCRHUmosJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ01PVkZHRCwgImNtb3ZmZ2QiLCAiY21vdmZnZCIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSTAsIEZSNDAwX01BSk9SX0lfNCwgRlI1MDBfTUFKT1JfSV80LCBGUjU1MF9NQUpPUl9JXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JMCwgRlI0MDBfTUFKT1JfSV80LCBGUjQ1MF9NQUpPUl9JXzQsIEZSNTAwX01BSk9SX0lfNCwgRlI1NTBfTUFKT1JfSV81IH0gfQogICB9LAogLyogbW92Z3MkcGFjayAkR1JqLCRzcHIgKi8KICAgewogICAgIEZSVl9JTlNOX01PVkdTLCAibW92Z3MiLCAibW92Z3MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18yLCBGUjUwMF9NQUpPUl9DXzIsIEZSNTUwX01BSk9SX0NfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18yLCBGUjQ1MF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfQ18yIH0gfQogICB9LAogLyogbW92c2ckcGFjayAkc3ByLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX01PVlNHLCAibW92c2ciLCAibW92c2ciLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18yLCBGUjUwMF9NQUpPUl9DXzIsIEZSNTUwX01BSk9SX0NfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18yLCBGUjQ1MF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfQ18yIH0gfQogICB9LAogLyogYnJhJHBhY2sgJGhpbnRfdGFrZW4kbGFiZWwxNiAqLwogICB7CiAgICAgRlJWX0lOU05fQlJBLCAiYnJhIiwgImJyYSIsIDMyLAotICAgIHsgMHxBKFVOQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShVTkNPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI0NTBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KICAgfSwKIC8qIGJubyRwYWNrJGhpbnRfbm90X3Rha2VuICovCiAgIHsKICAgICBGUlZfSU5TTl9CTk8sICJibm8iLCAiYm5vIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNDUwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CiAgIH0sCiAvKiBiZXEkcGFjayAkSUNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9CRVEsICJiZXEiLCAiYmVxIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNDUwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CiAgIH0sCiAvKiBibmUkcGFjayAkSUNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9CTkUsICJibmUiLCAiYm5lIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNDUwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CiAgIH0sCiAvKiBibGUkcGFjayAkSUNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9CTEUsICJibGUiLCAiYmxlIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNDUwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CiAgIH0sCiAvKiBiZ3QkcGFjayAkSUNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9CR1QsICJiZ3QiLCAiYmd0IiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNDUwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CiAgIH0sCiAvKiBibHQkcGFjayAkSUNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9CTFQsICJibHQiLCAiYmx0IiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNDUwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CiAgIH0sCiAvKiBiZ2UkcGFjayAkSUNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9CR0UsICJiZ2UiLCAiYmdlIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNDUwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CiAgIH0sCiAvKiBibHMkcGFjayAkSUNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9CTFMsICJibHMiLCAiYmxzIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNDUwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CiAgIH0sCiAvKiBiaGkkcGFjayAkSUNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9CSEksICJiaGkiLCAiYmhpIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNDUwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CiAgIH0sCiAvKiBiYyRwYWNrICRJQ0NpXzIsJGhpbnQsJGxhYmVsMTYgKi8KICAgewogICAgIEZSVl9JTlNOX0JDLCAiYmMiLCAiYmMiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI0NTBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KICAgfSwKIC8qIGJuYyRwYWNrICRJQ0NpXzIsJGhpbnQsJGxhYmVsMTYgKi8KICAgewogICAgIEZSVl9JTlNOX0JOQywgImJuYyIsICJibmMiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI0NTBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KICAgfSwKIC8qIGJuJHBhY2sgJElDQ2lfMiwkaGludCwkbGFiZWwxNiAqLwogICB7CiAgICAgRlJWX0lOU05fQk4sICJibiIsICJibiIsIDMyLAotICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CisgICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjQ1MF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQogICB9LAogLyogYnAkcGFjayAkSUNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9CUCwgImJwIiwgImJwIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNDUwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CiAgIH0sCiAvKiBidiRwYWNrICRJQ0NpXzIsJGhpbnQsJGxhYmVsMTYgKi8KICAgewogICAgIEZSVl9JTlNOX0JWLCAiYnYiLCAiYnYiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI0NTBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KICAgfSwKIC8qIGJudiRwYWNrICRJQ0NpXzIsJGhpbnQsJGxhYmVsMTYgKi8KICAgewogICAgIEZSVl9JTlNOX0JOViwgImJudiIsICJibnYiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI0NTBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KICAgfSwKIC8qIGZicmEkcGFjayAkaGludF90YWtlbiRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQlJBLCAiZmJyYSIsICJmYnJhIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKFVOQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoVU5DT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNDUwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CiAgIH0sCiAvKiBmYm5vJHBhY2skaGludF9ub3RfdGFrZW4gKi8KICAgewogICAgIEZSVl9JTlNOX0ZCTk8sICJmYm5vIiwgImZibm8iLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjQ1MF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQogICB9LAogLyogZmJuZSRwYWNrICRGQ0NpXzIsJGhpbnQsJGxhYmVsMTYgKi8KICAgewogICAgIEZSVl9JTlNOX0ZCTkUsICJmYm5lIiwgImZibmUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjQ1MF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQogICB9LAogLyogZmJlcSRwYWNrICRGQ0NpXzIsJGhpbnQsJGxhYmVsMTYgKi8KICAgewogICAgIEZSVl9JTlNOX0ZCRVEsICJmYmVxIiwgImZiZXEiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjQ1MF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQogICB9LAogLyogZmJsZyRwYWNrICRGQ0NpXzIsJGhpbnQsJGxhYmVsMTYgKi8KICAgewogICAgIEZSVl9JTlNOX0ZCTEcsICJmYmxnIiwgImZibGciLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjQ1MF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQogICB9LAogLyogZmJ1ZSRwYWNrICRGQ0NpXzIsJGhpbnQsJGxhYmVsMTYgKi8KICAgewogICAgIEZSVl9JTlNOX0ZCVUUsICJmYnVlIiwgImZidWUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjQ1MF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQogICB9LAogLyogZmJ1bCRwYWNrICRGQ0NpXzIsJGhpbnQsJGxhYmVsMTYgKi8KICAgewogICAgIEZSVl9JTlNOX0ZCVUwsICJmYnVsIiwgImZidWwiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjQ1MF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQogICB9LAogLyogZmJnZSRwYWNrICRGQ0NpXzIsJGhpbnQsJGxhYmVsMTYgKi8KICAgewogICAgIEZSVl9JTlNOX0ZCR0UsICJmYmdlIiwgImZiZ2UiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjQ1MF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQogICB9LAogLyogZmJsdCRwYWNrICRGQ0NpXzIsJGhpbnQsJGxhYmVsMTYgKi8KICAgewogICAgIEZSVl9JTlNOX0ZCTFQsICJmYmx0IiwgImZibHQiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjQ1MF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQogICB9LAogLyogZmJ1Z2UkcGFjayAkRkNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQlVHRSwgImZidWdlIiwgImZidWdlIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI0NTBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KICAgfSwKIC8qIGZidWckcGFjayAkRkNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQlVHLCAiZmJ1ZyIsICJmYnVnIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI0NTBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KICAgfSwKIC8qIGZibGUkcGFjayAkRkNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQkxFLCAiZmJsZSIsICJmYmxlIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI0NTBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KICAgfSwKIC8qIGZiZ3QkcGFjayAkRkNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQkdULCAiZmJndCIsICJmYmd0IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI0NTBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KICAgfSwKIC8qIGZidWxlJHBhY2sgJEZDQ2lfMiwkaGludCwkbGFiZWwxNiAqLwogICB7CiAgICAgRlJWX0lOU05fRkJVTEUsICJmYnVsZSIsICJmYnVsZSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzEsIEZSNDUwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CiAgIH0sCiAvKiBmYnUkcGFjayAkRkNDaV8yLCRoaW50LCRsYWJlbDE2ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQlUsICJmYnUiLCAiZmJ1IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI1MDBfTUFKT1JfQl8xLCBGUjU1MF9NQUpPUl9CXzEgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMSwgRlI0NTBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KICAgfSwKIC8qIGZibyRwYWNrICRGQ0NpXzIsJGhpbnQsJGxhYmVsMTYgKi8KICAgewogICAgIEZSVl9JTlNOX0ZCTywgImZibyIsICJmYm8iLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjUwMF9NQUpPUl9CXzEsIEZSNTUwX01BSk9SX0JfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8xLCBGUjQ1MF9NQUpPUl9CXzEsIEZSNTAwX01BSk9SX0JfMSwgRlI1NTBfTUFKT1JfQl8xIH0gfQogICB9LAogLyogYmN0cmxyJHBhY2sgJGNjb25kLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9CQ1RSTFIsICJiY3RybHIiLCAiYmN0cmxyIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjQ1MF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQogICB9LAogLyogYnJhbHIkcGFjayRoaW50X3Rha2VuICovCiAgIHsKICAgICBGUlZfSU5TTl9CUkFMUiwgImJyYWxyIiwgImJyYWxyIiwgMzIsCi0gICAgeyAwfEEoVU5DT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQorICAgIHsgMHxBKFVOQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQogICB9LAogLyogYm5vbHIkcGFjayRoaW50X25vdF90YWtlbiAqLwogICB7CiAgICAgRlJWX0lOU05fQk5PTFIsICJibm9sciIsICJibm9sciIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQogICB9LAogLyogYmVxbHIkcGFjayAkSUNDaV8yLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9CRVFMUiwgImJlcWxyIiwgImJlcWxyIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNDUwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CiAgIH0sCiAvKiBibmVsciRwYWNrICRJQ0NpXzIsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0JORUxSLCAiYm5lbHIiLCAiYm5lbHIiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI0NTBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KICAgfSwKIC8qIGJsZWxyJHBhY2sgJElDQ2lfMiwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fQkxFTFIsICJibGVsciIsICJibGVsciIsIDMyLAotICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CisgICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQogICB9LAogLyogYmd0bHIkcGFjayAkSUNDaV8yLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9CR1RMUiwgImJndGxyIiwgImJndGxyIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNDUwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CiAgIH0sCiAvKiBibHRsciRwYWNrICRJQ0NpXzIsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0JMVExSLCAiYmx0bHIiLCAiYmx0bHIiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI0NTBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KICAgfSwKIC8qIGJnZWxyJHBhY2sgJElDQ2lfMiwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fQkdFTFIsICJiZ2VsciIsICJiZ2VsciIsIDMyLAotICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CisgICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQogICB9LAogLyogYmxzbHIkcGFjayAkSUNDaV8yLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9CTFNMUiwgImJsc2xyIiwgImJsc2xyIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNDUwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CiAgIH0sCiAvKiBiaGlsciRwYWNrICRJQ0NpXzIsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0JISUxSLCAiYmhpbHIiLCAiYmhpbHIiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI0NTBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KICAgfSwKIC8qIGJjbHIkcGFjayAkSUNDaV8yLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9CQ0xSLCAiYmNsciIsICJiY2xyIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNDUwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CiAgIH0sCiAvKiBibmNsciRwYWNrICRJQ0NpXzIsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0JOQ0xSLCAiYm5jbHIiLCAiYm5jbHIiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI0NTBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KICAgfSwKIC8qIGJubHIkcGFjayAkSUNDaV8yLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9CTkxSLCAiYm5sciIsICJibmxyIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNDUwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CiAgIH0sCiAvKiBicGxyJHBhY2sgJElDQ2lfMiwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fQlBMUiwgImJwbHIiLCAiYnBsciIsIDMyLAotICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CisgICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQogICB9LAogLyogYnZsciRwYWNrICRJQ0NpXzIsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0JWTFIsICJidmxyIiwgImJ2bHIiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI0NTBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KICAgfSwKIC8qIGJudmxyJHBhY2sgJElDQ2lfMiwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fQk5WTFIsICJibnZsciIsICJibnZsciIsIDMyLAotICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CisgICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQogICB9LAogLyogZmJyYWxyJHBhY2skaGludF90YWtlbiAqLwogICB7CiAgICAgRlJWX0lOU05fRkJSQUxSLCAiZmJyYWxyIiwgImZicmFsciIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShVTkNPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKFVOQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQogICB9LAogLyogZmJub2xyJHBhY2skaGludF9ub3RfdGFrZW4gKi8KICAgewogICAgIEZSVl9JTlNOX0ZCTk9MUiwgImZibm9sciIsICJmYm5vbHIiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQogICB9LAogLyogZmJlcWxyJHBhY2sgJEZDQ2lfMiwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fRkJFUUxSLCAiZmJlcWxyIiwgImZiZXFsciIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNDUwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CiAgIH0sCiAvKiBmYm5lbHIkcGFjayAkRkNDaV8yLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQk5FTFIsICJmYm5lbHIiLCAiZmJuZWxyIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI0NTBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KICAgfSwKIC8qIGZibGdsciRwYWNrICRGQ0NpXzIsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZCTEdMUiwgImZibGdsciIsICJmYmxnbHIiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQogICB9LAogLyogZmJ1ZWxyJHBhY2sgJEZDQ2lfMiwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fRkJVRUxSLCAiZmJ1ZWxyIiwgImZidWVsciIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNDUwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CiAgIH0sCiAvKiBmYnVsbHIkcGFjayAkRkNDaV8yLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQlVMTFIsICJmYnVsbHIiLCAiZmJ1bGxyIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI0NTBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KICAgfSwKIC8qIGZiZ2VsciRwYWNrICRGQ0NpXzIsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZCR0VMUiwgImZiZ2VsciIsICJmYmdlbHIiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQogICB9LAogLyogZmJsdGxyJHBhY2sgJEZDQ2lfMiwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fRkJMVExSLCAiZmJsdGxyIiwgImZibHRsciIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNDUwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CiAgIH0sCiAvKiBmYnVnZWxyJHBhY2sgJEZDQ2lfMiwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fRkJVR0VMUiwgImZidWdlbHIiLCAiZmJ1Z2VsciIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNDUwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CiAgIH0sCiAvKiBmYnVnbHIkcGFjayAkRkNDaV8yLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQlVHTFIsICJmYnVnbHIiLCAiZmJ1Z2xyIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI0NTBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KICAgfSwKIC8qIGZibGVsciRwYWNrICRGQ0NpXzIsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZCTEVMUiwgImZibGVsciIsICJmYmxlbHIiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQogICB9LAogLyogZmJndGxyJHBhY2sgJEZDQ2lfMiwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fRkJHVExSLCAiZmJndGxyIiwgImZiZ3RsciIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNDUwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CiAgIH0sCiAvKiBmYnVsZWxyJHBhY2sgJEZDQ2lfMiwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fRkJVTEVMUiwgImZidWxlbHIiLCAiZmJ1bGVsciIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNDUwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CiAgIH0sCiAvKiBmYnVsciRwYWNrICRGQ0NpXzIsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZCVUxSLCAiZmJ1bHIiLCAiZmJ1bHIiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfQl8zIH0gfQogICB9LAogLyogZmJvbHIkcGFjayAkRkNDaV8yLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQk9MUiwgImZib2xyIiwgImZib2xyIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI1MDBfTUFKT1JfQl8zLCBGUjU1MF9NQUpPUl9CXzMgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfMywgRlI0NTBfTUFKT1JfQl8zLCBGUjUwMF9NQUpPUl9CXzMsIEZSNTUwX01BSk9SX0JfMyB9IH0KICAgfSwKIC8qIGJjcmFsciRwYWNrICRjY29uZCRoaW50X3Rha2VuICovCiAgIHsKICAgICBGUlZfSU5TTl9CQ1JBTFIsICJiY3JhbHIiLCAiYmNyYWxyIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjQ1MF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQogICB9LAogLyogYmNub2xyJHBhY2skaGludF9ub3RfdGFrZW4gKi8KICAgewogICAgIEZSVl9JTlNOX0JDTk9MUiwgImJjbm9sciIsICJiY25vbHIiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNDUwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CiAgIH0sCiAvKiBiY2VxbHIkcGFjayAkSUNDaV8yLCRjY29uZCwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fQkNFUUxSLCAiYmNlcWxyIiwgImJjZXFsciIsIDMyLAotICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI0NTBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KICAgfSwKIC8qIGJjbmVsciRwYWNrICRJQ0NpXzIsJGNjb25kLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9CQ05FTFIsICJiY25lbHIiLCAiYmNuZWxyIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjQ1MF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQogICB9LAogLyogYmNsZWxyJHBhY2sgJElDQ2lfMiwkY2NvbmQsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0JDTEVMUiwgImJjbGVsciIsICJiY2xlbHIiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CisgICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNDUwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CiAgIH0sCiAvKiBiY2d0bHIkcGFjayAkSUNDaV8yLCRjY29uZCwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fQkNHVExSLCAiYmNndGxyIiwgImJjZ3RsciIsIDMyLAotICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI0NTBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KICAgfSwKIC8qIGJjbHRsciRwYWNrICRJQ0NpXzIsJGNjb25kLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9CQ0xUTFIsICJiY2x0bHIiLCAiYmNsdGxyIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjQ1MF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQogICB9LAogLyogYmNnZWxyJHBhY2sgJElDQ2lfMiwkY2NvbmQsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0JDR0VMUiwgImJjZ2VsciIsICJiY2dlbHIiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CisgICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNDUwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CiAgIH0sCiAvKiBiY2xzbHIkcGFjayAkSUNDaV8yLCRjY29uZCwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fQkNMU0xSLCAiYmNsc2xyIiwgImJjbHNsciIsIDMyLAotICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI0NTBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KICAgfSwKIC8qIGJjaGlsciRwYWNrICRJQ0NpXzIsJGNjb25kLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9CQ0hJTFIsICJiY2hpbHIiLCAiYmNoaWxyIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjQ1MF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQogICB9LAogLyogYmNjbHIkcGFjayAkSUNDaV8yLCRjY29uZCwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fQkNDTFIsICJiY2NsciIsICJiY2NsciIsIDMyLAotICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI0NTBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KICAgfSwKIC8qIGJjbmNsciRwYWNrICRJQ0NpXzIsJGNjb25kLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9CQ05DTFIsICJiY25jbHIiLCAiYmNuY2xyIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjQ1MF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQogICB9LAogLyogYmNubHIkcGFjayAkSUNDaV8yLCRjY29uZCwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fQkNOTFIsICJiY25sciIsICJiY25sciIsIDMyLAotICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KKyAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI0NTBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KICAgfSwKIC8qIGJjcGxyJHBhY2sgJElDQ2lfMiwkY2NvbmQsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0JDUExSLCAiYmNwbHIiLCAiYmNwbHIiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CisgICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNDUwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CiAgIH0sCiAvKiBiY3ZsciRwYWNrICRJQ0NpXzIsJGNjb25kLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9CQ1ZMUiwgImJjdmxyIiwgImJjdmxyIiwgMzIsCi0gICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQorICAgIHsgMHxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjQ1MF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQogICB9LAogLyogYmNudmxyJHBhY2sgJElDQ2lfMiwkY2NvbmQsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0JDTlZMUiwgImJjbnZsciIsICJiY252bHIiLCAzMiwKLSAgICB7IDB8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CisgICAgeyAwfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNDUwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CiAgIH0sCiAvKiBmY2JyYWxyJHBhY2sgJGNjb25kJGhpbnRfdGFrZW4gKi8KICAgewogICAgIEZSVl9JTlNOX0ZDQlJBTFIsICJmY2JyYWxyIiwgImZjYnJhbHIiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI0NTBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KICAgfSwKIC8qIGZjYm5vbHIkcGFjayRoaW50X25vdF90YWtlbiAqLwogICB7CiAgICAgRlJWX0lOU05fRkNCTk9MUiwgImZjYm5vbHIiLCAiZmNibm9sciIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjQ1MF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQogICB9LAogLyogZmNiZXFsciRwYWNrICRGQ0NpXzIsJGNjb25kLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQ0JFUUxSLCAiZmNiZXFsciIsICJmY2JlcWxyIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNDUwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CiAgIH0sCiAvKiBmY2JuZWxyJHBhY2sgJEZDQ2lfMiwkY2NvbmQsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDQk5FTFIsICJmY2JuZWxyIiwgImZjYm5lbHIiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI0NTBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KICAgfSwKIC8qIGZjYmxnbHIkcGFjayAkRkNDaV8yLCRjY29uZCwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fRkNCTEdMUiwgImZjYmxnbHIiLCAiZmNibGdsciIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjQ1MF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQogICB9LAogLyogZmNidWVsciRwYWNrICRGQ0NpXzIsJGNjb25kLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQ0JVRUxSLCAiZmNidWVsciIsICJmY2J1ZWxyIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNDUwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CiAgIH0sCiAvKiBmY2J1bGxyJHBhY2sgJEZDQ2lfMiwkY2NvbmQsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDQlVMTFIsICJmY2J1bGxyIiwgImZjYnVsbHIiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI0NTBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KICAgfSwKIC8qIGZjYmdlbHIkcGFjayAkRkNDaV8yLCRjY29uZCwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fRkNCR0VMUiwgImZjYmdlbHIiLCAiZmNiZ2VsciIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjQ1MF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQogICB9LAogLyogZmNibHRsciRwYWNrICRGQ0NpXzIsJGNjb25kLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQ0JMVExSLCAiZmNibHRsciIsICJmY2JsdGxyIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNDUwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CiAgIH0sCiAvKiBmY2J1Z2VsciRwYWNrICRGQ0NpXzIsJGNjb25kLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQ0JVR0VMUiwgImZjYnVnZWxyIiwgImZjYnVnZWxyIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNDUwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CiAgIH0sCiAvKiBmY2J1Z2xyJHBhY2sgJEZDQ2lfMiwkY2NvbmQsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDQlVHTFIsICJmY2J1Z2xyIiwgImZjYnVnbHIiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI0NTBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KICAgfSwKIC8qIGZjYmxlbHIkcGFjayAkRkNDaV8yLCRjY29uZCwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fRkNCTEVMUiwgImZjYmxlbHIiLCAiZmNibGVsciIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjQ1MF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQogICB9LAogLyogZmNiZ3RsciRwYWNrICRGQ0NpXzIsJGNjb25kLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQ0JHVExSLCAiZmNiZ3RsciIsICJmY2JndGxyIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNDUwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CiAgIH0sCiAvKiBmY2J1bGVsciRwYWNrICRGQ0NpXzIsJGNjb25kLCRoaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQ0JVTEVMUiwgImZjYnVsZWxyIiwgImZjYnVsZWxyIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNDUwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CiAgIH0sCiAvKiBmY2J1bHIkcGFjayAkRkNDaV8yLCRjY29uZCwkaGludCAqLwogICB7CiAgICAgRlJWX0lOU05fRkNCVUxSLCAiZmNidWxyIiwgImZjYnVsciIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI1MDBfTUFKT1JfQl8yLCBGUjU1MF9NQUpPUl9CXzIgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMCwgRlI0MDBfTUFKT1JfQl8yLCBGUjQ1MF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQogICB9LAogLyogZmNib2xyJHBhY2sgJEZDQ2lfMiwkY2NvbmQsJGhpbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDQk9MUiwgImZjYm9sciIsICJmY2JvbHIiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwLCBGUjQwMF9NQUpPUl9CXzIsIEZSNTAwX01BSk9SX0JfMiwgRlI1NTBfTUFKT1JfQl8yIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfMiwgRlI0NTBfTUFKT1JfQl8yLCBGUjUwMF9NQUpPUl9CXzIsIEZSNTUwX01BSk9SX0JfMiB9IH0KICAgfSwKIC8qIGptcGwkcGFjayBAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX0pNUEwsICJqbXBsIiwgImptcGwiLCAzMiwKLSAgICB7IDB8QShVTkNPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JMCwgRlI0MDBfTUFKT1JfSV81LCBGUjUwMF9NQUpPUl9JXzUsIEZSNTUwX01BSk9SX0lfNiB9IH0KKyAgICB7IDB8QShVTkNPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JMCwgRlI0MDBfTUFKT1JfSV81LCBGUjQ1MF9NQUpPUl9JXzUsIEZSNTAwX01BSk9SX0lfNSwgRlI1NTBfTUFKT1JfSV82IH0gfQogICB9LAogLyogY2FsbGwkcGFjayBAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX0NBTExMLCAiY2FsbGwiLCAiY2FsbGwiLCAzMiwKLSAgICB7IDB8QShVTkNPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JMCwgRlI0MDBfTUFKT1JfSV81LCBGUjUwMF9NQUpPUl9JXzUsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwfEEoVU5DT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSTAsIEZSNDAwX01BSk9SX0lfNSwgRlI0NTBfTUFKT1JfSV81LCBGUjUwMF9NQUpPUl9JXzUsIEZSNTUwX01BSk9SX0lfNiB9IH0KICAgfSwKIC8qIGptcGlsJHBhY2sgQCgkR1JpLCRzMTIpICovCiAgIHsKICAgICBGUlZfSU5TTl9KTVBJTCwgImptcGlsIiwgImptcGlsIiwgMzIsCi0gICAgeyAwfEEoVU5DT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSTAsIEZSNDAwX01BSk9SX0lfNSwgRlI1MDBfTUFKT1JfSV81LCBGUjU1MF9NQUpPUl9JXzYgfSB9CisgICAgeyAwfEEoVU5DT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSTAsIEZSNDAwX01BSk9SX0lfNSwgRlI0NTBfTUFKT1JfSV81LCBGUjUwMF9NQUpPUl9JXzUsIEZSNTUwX01BSk9SX0lfNiB9IH0KICAgfSwKIC8qIGNhbGxpbCRwYWNrIEAoJEdSaSwkczEyKSAqLwogICB7CiAgICAgRlJWX0lOU05fQ0FMTElMLCAiY2FsbGlsIiwgImNhbGxpbCIsIDMyLAotICAgIHsgMHxBKFVOQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0kwLCBGUjQwMF9NQUpPUl9JXzUsIEZSNTAwX01BSk9SX0lfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShVTkNPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JMCwgRlI0MDBfTUFKT1JfSV81LCBGUjQ1MF9NQUpPUl9JXzUsIEZSNTAwX01BSk9SX0lfNSwgRlI1NTBfTUFKT1JfSV82IH0gfQogICB9LAogLyogY2FsbCRwYWNrICRsYWJlbDI0ICovCiAgIHsKICAgICBGUlZfSU5TTl9DQUxMLCAiY2FsbCIsICJjYWxsIiwgMzIsCi0gICAgeyAwfEEoVU5DT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfNCwgRlI1MDBfTUFKT1JfQl80LCBGUjU1MF9NQUpPUl9CXzQgfSB9CisgICAgeyAwfEEoVU5DT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAsIEZSNDAwX01BSk9SX0JfNCwgRlI0NTBfTUFKT1JfQl80LCBGUjUwMF9NQUpPUl9CXzQsIEZSNTUwX01BSk9SX0JfNCB9IH0KICAgfSwKIC8qIHJldHQkcGFjayAkZGVidWcgKi8KICAgewogICAgIEZSVl9JTlNOX1JFVFQsICJyZXR0IiwgInJldHQiLCAzMiwKLSAgICB7IDB8QShQUklWSUxFR0VEKXxBKFVOQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9DXzIgfSB9CisgICAgeyAwfEEoUFJJVklMRUdFRCl8QShVTkNPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNDUwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9DXzIgfSB9CiAgIH0sCiAvKiByZWkkcGFjayAkZWlyICovCiAgIHsKICAgICBGUlZfSU5TTl9SRUksICJyZWkiLCAicmVpIiwgMzIsCi0gICAgeyAwfEEoUFJJVklMRUdFRCksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwfEEoUFJJVklMRUdFRCksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiB0cmEkcGFjayAkR1JpLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX1RSQSwgInRyYSIsICJ0cmEiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdG5vJHBhY2sgKi8KICAgewogICAgIEZSVl9JTlNOX1ROTywgInRubyIsICJ0bm8iLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGVxJHBhY2sgJElDQ2lfMiwkR1JpLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX1RFUSwgInRlcSIsICJ0ZXEiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdG5lJHBhY2sgJElDQ2lfMiwkR1JpLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX1RORSwgInRuZSIsICJ0bmUiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGxlJHBhY2sgJElDQ2lfMiwkR1JpLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX1RMRSwgInRsZSIsICJ0bGUiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGd0JHBhY2sgJElDQ2lfMiwkR1JpLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX1RHVCwgInRndCIsICJ0Z3QiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGx0JHBhY2sgJElDQ2lfMiwkR1JpLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX1RMVCwgInRsdCIsICJ0bHQiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGdlJHBhY2sgJElDQ2lfMiwkR1JpLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX1RHRSwgInRnZSIsICJ0Z2UiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGxzJHBhY2sgJElDQ2lfMiwkR1JpLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX1RMUywgInRscyIsICJ0bHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGhpJHBhY2sgJElDQ2lfMiwkR1JpLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX1RISSwgInRoaSIsICJ0aGkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGMkcGFjayAkSUNDaV8yLCRHUmksJEdSaiAqLwogICB7CiAgICAgRlJWX0lOU05fVEMsICJ0YyIsICJ0YyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiB0bmMkcGFjayAkSUNDaV8yLCRHUmksJEdSaiAqLwogICB7CiAgICAgRlJWX0lOU05fVE5DLCAidG5jIiwgInRuYyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiB0biRwYWNrICRJQ0NpXzIsJEdSaSwkR1JqICovCiAgIHsKICAgICBGUlZfSU5TTl9UTiwgInRuIiwgInRuIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIHRwJHBhY2sgJElDQ2lfMiwkR1JpLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX1RQLCAidHAiLCAidHAiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdHYkcGFjayAkSUNDaV8yLCRHUmksJEdSaiAqLwogICB7CiAgICAgRlJWX0lOU05fVFYsICJ0diIsICJ0diIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiB0bnYkcGFjayAkSUNDaV8yLCRHUmksJEdSaiAqLwogICB7CiAgICAgRlJWX0lOU05fVE5WLCAidG52IiwgInRudiIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiBmdHJhJHBhY2sgJEdSaSwkR1JqICovCiAgIHsKICAgICBGUlZfSU5TTl9GVFJBLCAiZnRyYSIsICJmdHJhIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnRubyRwYWNrICovCiAgIHsKICAgICBGUlZfSU5TTl9GVE5PLCAiZnRubyIsICJmdG5vIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnRuZSRwYWNrICRGQ0NpXzIsJEdSaSwkR1JqICovCiAgIHsKICAgICBGUlZfSU5TTl9GVE5FLCAiZnRuZSIsICJmdG5lIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnRlcSRwYWNrICRGQ0NpXzIsJEdSaSwkR1JqICovCiAgIHsKICAgICBGUlZfSU5TTl9GVEVRLCAiZnRlcSIsICJmdGVxIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnRsZyRwYWNrICRGQ0NpXzIsJEdSaSwkR1JqICovCiAgIHsKICAgICBGUlZfSU5TTl9GVExHLCAiZnRsZyIsICJmdGxnIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnR1ZSRwYWNrICRGQ0NpXzIsJEdSaSwkR1JqICovCiAgIHsKICAgICBGUlZfSU5TTl9GVFVFLCAiZnR1ZSIsICJmdHVlIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnR1bCRwYWNrICRGQ0NpXzIsJEdSaSwkR1JqICovCiAgIHsKICAgICBGUlZfSU5TTl9GVFVMLCAiZnR1bCIsICJmdHVsIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnRnZSRwYWNrICRGQ0NpXzIsJEdSaSwkR1JqICovCiAgIHsKICAgICBGUlZfSU5TTl9GVEdFLCAiZnRnZSIsICJmdGdlIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnRsdCRwYWNrICRGQ0NpXzIsJEdSaSwkR1JqICovCiAgIHsKICAgICBGUlZfSU5TTl9GVExULCAiZnRsdCIsICJmdGx0IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnR1Z2UkcGFjayAkRkNDaV8yLCRHUmksJEdSaiAqLwogICB7CiAgICAgRlJWX0lOU05fRlRVR0UsICJmdHVnZSIsICJmdHVnZSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIGZ0dWckcGFjayAkRkNDaV8yLCRHUmksJEdSaiAqLwogICB7CiAgICAgRlJWX0lOU05fRlRVRywgImZ0dWciLCAiZnR1ZyIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIGZ0bGUkcGFjayAkRkNDaV8yLCRHUmksJEdSaiAqLwogICB7CiAgICAgRlJWX0lOU05fRlRMRSwgImZ0bGUiLCAiZnRsZSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIGZ0Z3QkcGFjayAkRkNDaV8yLCRHUmksJEdSaiAqLwogICB7CiAgICAgRlJWX0lOU05fRlRHVCwgImZ0Z3QiLCAiZnRndCIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIGZ0dWxlJHBhY2sgJEZDQ2lfMiwkR1JpLCRHUmogKi8KICAgewogICAgIEZSVl9JTlNOX0ZUVUxFLCAiZnR1bGUiLCAiZnR1bGUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiBmdHUkcGFjayAkRkNDaV8yLCRHUmksJEdSaiAqLwogICB7CiAgICAgRlJWX0lOU05fRlRVLCAiZnR1IiwgImZ0dSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIGZ0byRwYWNrICRGQ0NpXzIsJEdSaSwkR1JqICovCiAgIHsKICAgICBGUlZfSU5TTl9GVE8sICJmdG8iLCAiZnRvIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGlyYSRwYWNrICRHUmksJHMxMiAqLwogICB7CiAgICAgRlJWX0lOU05fVElSQSwgInRpcmEiLCAidGlyYSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiB0aW5vJHBhY2sgKi8KICAgewogICAgIEZSVl9JTlNOX1RJTk8sICJ0aW5vIiwgInRpbm8iLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGllcSRwYWNrICRJQ0NpXzIsJEdSaSwkczEyICovCiAgIHsKICAgICBGUlZfSU5TTl9USUVRLCAidGllcSIsICJ0aWVxIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIHRpbmUkcGFjayAkSUNDaV8yLCRHUmksJHMxMiAqLwogICB7CiAgICAgRlJWX0lOU05fVElORSwgInRpbmUiLCAidGluZSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiB0aWxlJHBhY2sgJElDQ2lfMiwkR1JpLCRzMTIgKi8KICAgewogICAgIEZSVl9JTlNOX1RJTEUsICJ0aWxlIiwgInRpbGUiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGlndCRwYWNrICRJQ0NpXzIsJEdSaSwkczEyICovCiAgIHsKICAgICBGUlZfSU5TTl9USUdULCAidGlndCIsICJ0aWd0IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIHRpbHQkcGFjayAkSUNDaV8yLCRHUmksJHMxMiAqLwogICB7CiAgICAgRlJWX0lOU05fVElMVCwgInRpbHQiLCAidGlsdCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiB0aWdlJHBhY2sgJElDQ2lfMiwkR1JpLCRzMTIgKi8KICAgewogICAgIEZSVl9JTlNOX1RJR0UsICJ0aWdlIiwgInRpZ2UiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGlscyRwYWNrICRJQ0NpXzIsJEdSaSwkczEyICovCiAgIHsKICAgICBGUlZfSU5TTl9USUxTLCAidGlscyIsICJ0aWxzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIHRpaGkkcGFjayAkSUNDaV8yLCRHUmksJHMxMiAqLwogICB7CiAgICAgRlJWX0lOU05fVElISSwgInRpaGkiLCAidGloaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiB0aWMkcGFjayAkSUNDaV8yLCRHUmksJHMxMiAqLwogICB7CiAgICAgRlJWX0lOU05fVElDLCAidGljIiwgInRpYyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiB0aW5jJHBhY2sgJElDQ2lfMiwkR1JpLCRzMTIgKi8KICAgewogICAgIEZSVl9JTlNOX1RJTkMsICJ0aW5jIiwgInRpbmMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGluJHBhY2sgJElDQ2lfMiwkR1JpLCRzMTIgKi8KICAgewogICAgIEZSVl9JTlNOX1RJTiwgInRpbiIsICJ0aW4iLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGlwJHBhY2sgJElDQ2lfMiwkR1JpLCRzMTIgKi8KICAgewogICAgIEZSVl9JTlNOX1RJUCwgInRpcCIsICJ0aXAiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGl2JHBhY2sgJElDQ2lfMiwkR1JpLCRzMTIgKi8KICAgewogICAgIEZSVl9JTlNOX1RJViwgInRpdiIsICJ0aXYiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogdGludiRwYWNrICRJQ0NpXzIsJEdSaSwkczEyICovCiAgIHsKICAgICBGUlZfSU5TTl9USU5WLCAidGludiIsICJ0aW52IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIGZ0aXJhJHBhY2sgJEdSaSwkczEyICovCiAgIHsKICAgICBGUlZfSU5TTl9GVElSQSwgImZ0aXJhIiwgImZ0aXJhIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnRpbm8kcGFjayAqLwogICB7CiAgICAgRlJWX0lOU05fRlRJTk8sICJmdGlubyIsICJmdGlubyIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIGZ0aW5lJHBhY2sgJEZDQ2lfMiwkR1JpLCRzMTIgKi8KICAgewogICAgIEZSVl9JTlNOX0ZUSU5FLCAiZnRpbmUiLCAiZnRpbmUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiBmdGllcSRwYWNrICRGQ0NpXzIsJEdSaSwkczEyICovCiAgIHsKICAgICBGUlZfSU5TTl9GVElFUSwgImZ0aWVxIiwgImZ0aWVxIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnRpbGckcGFjayAkRkNDaV8yLCRHUmksJHMxMiAqLwogICB7CiAgICAgRlJWX0lOU05fRlRJTEcsICJmdGlsZyIsICJmdGlsZyIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIGZ0aXVlJHBhY2sgJEZDQ2lfMiwkR1JpLCRzMTIgKi8KICAgewogICAgIEZSVl9JTlNOX0ZUSVVFLCAiZnRpdWUiLCAiZnRpdWUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiBmdGl1bCRwYWNrICRGQ0NpXzIsJEdSaSwkczEyICovCiAgIHsKICAgICBGUlZfSU5TTl9GVElVTCwgImZ0aXVsIiwgImZ0aXVsIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnRpZ2UkcGFjayAkRkNDaV8yLCRHUmksJHMxMiAqLwogICB7CiAgICAgRlJWX0lOU05fRlRJR0UsICJmdGlnZSIsICJmdGlnZSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIGZ0aWx0JHBhY2sgJEZDQ2lfMiwkR1JpLCRzMTIgKi8KICAgewogICAgIEZSVl9JTlNOX0ZUSUxULCAiZnRpbHQiLCAiZnRpbHQiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiBmdGl1Z2UkcGFjayAkRkNDaV8yLCRHUmksJHMxMiAqLwogICB7CiAgICAgRlJWX0lOU05fRlRJVUdFLCAiZnRpdWdlIiwgImZ0aXVnZSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIGZ0aXVnJHBhY2sgJEZDQ2lfMiwkR1JpLCRzMTIgKi8KICAgewogICAgIEZSVl9JTlNOX0ZUSVVHLCAiZnRpdWciLCAiZnRpdWciLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiBmdGlsZSRwYWNrICRGQ0NpXzIsJEdSaSwkczEyICovCiAgIHsKICAgICBGUlZfSU5TTl9GVElMRSwgImZ0aWxlIiwgImZ0aWxlIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnRpZ3QkcGFjayAkRkNDaV8yLCRHUmksJHMxMiAqLwogICB7CiAgICAgRlJWX0lOU05fRlRJR1QsICJmdGlndCIsICJmdGlndCIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18xLCBGUjUwMF9NQUpPUl9DXzEsIEZSNTUwX01BSk9SX0NfMSB9IH0KICAgfSwKIC8qIGZ0aXVsZSRwYWNrICRGQ0NpXzIsJEdSaSwkczEyICovCiAgIHsKICAgICBGUlZfSU5TTl9GVElVTEUsICJmdGl1bGUiLCAiZnRpdWxlIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnRpdSRwYWNrICRGQ0NpXzIsJEdSaSwkczEyICovCiAgIHsKICAgICBGUlZfSU5TTl9GVElVLCAiZnRpdSIsICJmdGl1IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogZnRpbyRwYWNrICRGQ0NpXzIsJEdSaSwkczEyICovCiAgIHsKICAgICBGUlZfSU5TTl9GVElPLCAiZnRpbyIsICJmdGlvIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogYnJlYWskcGFjayAqLwogICB7CiAgICAgRlJWX0lOU05fQlJFQUssICJicmVhayIsICJicmVhayIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDUwX01BSk9SX0NfMSwgRlI1MDBfTUFKT1JfQ18xLCBGUjU1MF9NQUpPUl9DXzEgfSB9CiAgIH0sCiAvKiBtdHJhcCRwYWNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NVFJBUCwgIm10cmFwIiwgIm10cmFwIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18xLCBGUjQ1MF9NQUpPUl9DXzEsIEZSNTAwX01BSk9SX0NfMSwgRlI1NTBfTUFKT1JfQ18xIH0gfQogICB9LAogLyogYW5kY3IkcGFjayAkQ1JpLCRDUmosJENSayAqLwogICB7CiAgICAgRlJWX0lOU05fQU5EQ1IsICJhbmRjciIsICJhbmRjciIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNiwgRlI1MDBfTUFKT1JfQl82LCBGUjU1MF9NQUpPUl9CXzYgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl82LCBGUjQ1MF9NQUpPUl9CXzYsIEZSNTAwX01BSk9SX0JfNiwgRlI1NTBfTUFKT1JfQl82IH0gfQogICB9LAogLyogb3JjciRwYWNrICRDUmksJENSaiwkQ1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9PUkNSLCAib3JjciIsICJvcmNyIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl82LCBGUjUwMF9NQUpPUl9CXzYsIEZSNTUwX01BSk9SX0JfNiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzYsIEZSNDUwX01BSk9SX0JfNiwgRlI1MDBfTUFKT1JfQl82LCBGUjU1MF9NQUpPUl9CXzYgfSB9CiAgIH0sCiAvKiB4b3JjciRwYWNrICRDUmksJENSaiwkQ1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9YT1JDUiwgInhvcmNyIiwgInhvcmNyIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl82LCBGUjUwMF9NQUpPUl9CXzYsIEZSNTUwX01BSk9SX0JfNiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzYsIEZSNDUwX01BSk9SX0JfNiwgRlI1MDBfTUFKT1JfQl82LCBGUjU1MF9NQUpPUl9CXzYgfSB9CiAgIH0sCiAvKiBuYW5kY3IkcGFjayAkQ1JpLCRDUmosJENSayAqLwogICB7CiAgICAgRlJWX0lOU05fTkFORENSLCAibmFuZGNyIiwgIm5hbmRjciIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNiwgRlI1MDBfTUFKT1JfQl82LCBGUjU1MF9NQUpPUl9CXzYgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl82LCBGUjQ1MF9NQUpPUl9CXzYsIEZSNTAwX01BSk9SX0JfNiwgRlI1NTBfTUFKT1JfQl82IH0gfQogICB9LAogLyogbm9yY3IkcGFjayAkQ1JpLCRDUmosJENSayAqLwogICB7CiAgICAgRlJWX0lOU05fTk9SQ1IsICJub3JjciIsICJub3JjciIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNiwgRlI1MDBfTUFKT1JfQl82LCBGUjU1MF9NQUpPUl9CXzYgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl82LCBGUjQ1MF9NQUpPUl9CXzYsIEZSNTAwX01BSk9SX0JfNiwgRlI1NTBfTUFKT1JfQl82IH0gfQogICB9LAogLyogYW5kbmNyJHBhY2sgJENSaSwkQ1JqLCRDUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0FORE5DUiwgImFuZG5jciIsICJhbmRuY3IiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzYsIEZSNTAwX01BSk9SX0JfNiwgRlI1NTBfTUFKT1JfQl82IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNiwgRlI0NTBfTUFKT1JfQl82LCBGUjUwMF9NQUpPUl9CXzYsIEZSNTUwX01BSk9SX0JfNiB9IH0KICAgfSwKIC8qIG9ybmNyJHBhY2sgJENSaSwkQ1JqLCRDUmsgKi8KICAgewogICAgIEZSVl9JTlNOX09STkNSLCAib3JuY3IiLCAib3JuY3IiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzYsIEZSNTAwX01BSk9SX0JfNiwgRlI1NTBfTUFKT1JfQl82IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNiwgRlI0NTBfTUFKT1JfQl82LCBGUjUwMF9NQUpPUl9CXzYsIEZSNTUwX01BSk9SX0JfNiB9IH0KICAgfSwKIC8qIG5hbmRuY3IkcGFjayAkQ1JpLCRDUmosJENSayAqLwogICB7CiAgICAgRlJWX0lOU05fTkFORE5DUiwgIm5hbmRuY3IiLCAibmFuZG5jciIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNiwgRlI1MDBfTUFKT1JfQl82LCBGUjU1MF9NQUpPUl9CXzYgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl82LCBGUjQ1MF9NQUpPUl9CXzYsIEZSNTAwX01BSk9SX0JfNiwgRlI1NTBfTUFKT1JfQl82IH0gfQogICB9LAogLyogbm9ybmNyJHBhY2sgJENSaSwkQ1JqLCRDUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05PUk5DUiwgIm5vcm5jciIsICJub3JuY3IiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzYsIEZSNTAwX01BSk9SX0JfNiwgRlI1NTBfTUFKT1JfQl82IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNiwgRlI0NTBfTUFKT1JfQl82LCBGUjUwMF9NQUpPUl9CXzYsIEZSNTUwX01BSk9SX0JfNiB9IH0KICAgfSwKIC8qIG5vdGNyJHBhY2sgJENSaiwkQ1JrICovCiAgIHsKICAgICBGUlZfSU5TTl9OT1RDUiwgIm5vdGNyIiwgIm5vdGNyIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl82LCBGUjUwMF9NQUpPUl9CXzYsIEZSNTUwX01BSk9SX0JfNiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzYsIEZSNDUwX01BSk9SX0JfNiwgRlI1MDBfTUFKT1JfQl82LCBGUjU1MF9NQUpPUl9CXzYgfSB9CiAgIH0sCiAvKiBja3JhJHBhY2sgJENSal9pbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0NLUkEsICJja3JhIiwgImNrcmEiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNrbm8kcGFjayAkQ1JqX2ludCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0tOTywgImNrbm8iLCAiY2tubyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2tlcSRwYWNrICRJQ0NpXzMsJENSal9pbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0NLRVEsICJja2VxIiwgImNrZXEiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNrbmUkcGFjayAkSUNDaV8zLCRDUmpfaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9DS05FLCAiY2tuZSIsICJja25lIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBja2xlJHBhY2sgJElDQ2lfMywkQ1JqX2ludCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0tMRSwgImNrbGUiLCAiY2tsZSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2tndCRwYWNrICRJQ0NpXzMsJENSal9pbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0NLR1QsICJja2d0IiwgImNrZ3QiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNrbHQkcGFjayAkSUNDaV8zLCRDUmpfaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9DS0xULCAiY2tsdCIsICJja2x0IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBja2dlJHBhY2sgJElDQ2lfMywkQ1JqX2ludCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0tHRSwgImNrZ2UiLCAiY2tnZSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2tscyRwYWNrICRJQ0NpXzMsJENSal9pbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0NLTFMsICJja2xzIiwgImNrbHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNraGkkcGFjayAkSUNDaV8zLCRDUmpfaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9DS0hJLCAiY2toaSIsICJja2hpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBja2MkcGFjayAkSUNDaV8zLCRDUmpfaW50ICovCiAgIHsKICAgICBGUlZfSU5TTl9DS0MsICJja2MiLCAiY2tjIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBja25jJHBhY2sgJElDQ2lfMywkQ1JqX2ludCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0tOQywgImNrbmMiLCAiY2tuYyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2tuJHBhY2sgJElDQ2lfMywkQ1JqX2ludCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0tOLCAiY2tuIiwgImNrbiIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2twJHBhY2sgJElDQ2lfMywkQ1JqX2ludCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0tQLCAiY2twIiwgImNrcCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2t2JHBhY2sgJElDQ2lfMywkQ1JqX2ludCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0tWLCAiY2t2IiwgImNrdiIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2tudiRwYWNrICRJQ0NpXzMsJENSal9pbnQgKi8KICAgewogICAgIEZSVl9JTlNOX0NLTlYsICJja252IiwgImNrbnYiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGZja3JhJHBhY2sgJENSal9mbG9hdCAqLwogICB7CiAgICAgRlJWX0lOU05fRkNLUkEsICJmY2tyYSIsICJmY2tyYSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBmY2tubyRwYWNrICRDUmpfZmxvYXQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDS05PLCAiZmNrbm8iLCAiZmNrbm8iLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogZmNrbmUkcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDS05FLCAiZmNrbmUiLCAiZmNrbmUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogZmNrZXEkcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDS0VRLCAiZmNrZXEiLCAiZmNrZXEiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogZmNrbGckcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDS0xHLCAiZmNrbGciLCAiZmNrbGciLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogZmNrdWUkcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDS1VFLCAiZmNrdWUiLCAiZmNrdWUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogZmNrdWwkcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDS1VMLCAiZmNrdWwiLCAiZmNrdWwiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogZmNrZ2UkcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDS0dFLCAiZmNrZ2UiLCAiZmNrZ2UiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogZmNrbHQkcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDS0xULCAiZmNrbHQiLCAiZmNrbHQiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogZmNrdWdlJHBhY2sgJEZDQ2lfMywkQ1JqX2Zsb2F0ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQ0tVR0UsICJmY2t1Z2UiLCAiZmNrdWdlIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGZja3VnJHBhY2sgJEZDQ2lfMywkQ1JqX2Zsb2F0ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQ0tVRywgImZja3VnIiwgImZja3VnIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGZja2xlJHBhY2sgJEZDQ2lfMywkQ1JqX2Zsb2F0ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQ0tMRSwgImZja2xlIiwgImZja2xlIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGZja2d0JHBhY2sgJEZDQ2lfMywkQ1JqX2Zsb2F0ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQ0tHVCwgImZja2d0IiwgImZja2d0IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGZja3VsZSRwYWNrICRGQ0NpXzMsJENSal9mbG9hdCAqLwogICB7CiAgICAgRlJWX0lOU05fRkNLVUxFLCAiZmNrdWxlIiwgImZja3VsZSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBmY2t1JHBhY2sgJEZDQ2lfMywkQ1JqX2Zsb2F0ICovCiAgIHsKICAgICBGUlZfSU5TTl9GQ0tVLCAiZmNrdSIsICJmY2t1IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGZja28kcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQgKi8KICAgewogICAgIEZSVl9JTlNOX0ZDS08sICJmY2tvIiwgImZja28iLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2NrcmEkcGFjayAkQ1JqX2ludCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DQ0tSQSwgImNja3JhIiwgImNja3JhIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBjY2tubyRwYWNrICRDUmpfaW50LCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NDS05PLCAiY2Nrbm8iLCAiY2Nrbm8iLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNja2VxJHBhY2sgJElDQ2lfMywkQ1JqX2ludCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DQ0tFUSwgImNja2VxIiwgImNja2VxIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBjY2tuZSRwYWNrICRJQ0NpXzMsJENSal9pbnQsJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0NLTkUsICJjY2tuZSIsICJjY2tuZSIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2NrbGUkcGFjayAkSUNDaV8zLCRDUmpfaW50LCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NDS0xFLCAiY2NrbGUiLCAiY2NrbGUiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNja2d0JHBhY2sgJElDQ2lfMywkQ1JqX2ludCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DQ0tHVCwgImNja2d0IiwgImNja2d0IiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBjY2tsdCRwYWNrICRJQ0NpXzMsJENSal9pbnQsJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0NLTFQsICJjY2tsdCIsICJjY2tsdCIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2NrZ2UkcGFjayAkSUNDaV8zLCRDUmpfaW50LCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NDS0dFLCAiY2NrZ2UiLCAiY2NrZ2UiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNja2xzJHBhY2sgJElDQ2lfMywkQ1JqX2ludCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DQ0tMUywgImNja2xzIiwgImNja2xzIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBjY2toaSRwYWNrICRJQ0NpXzMsJENSal9pbnQsJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0NLSEksICJjY2toaSIsICJjY2toaSIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2NrYyRwYWNrICRJQ0NpXzMsJENSal9pbnQsJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0NLQywgImNja2MiLCAiY2NrYyIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2NrbmMkcGFjayAkSUNDaV8zLCRDUmpfaW50LCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NDS05DLCAiY2NrbmMiLCAiY2NrbmMiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNja24kcGFjayAkSUNDaV8zLCRDUmpfaW50LCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NDS04sICJjY2tuIiwgImNja24iLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNja3AkcGFjayAkSUNDaV8zLCRDUmpfaW50LCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NDS1AsICJjY2twIiwgImNja3AiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNja3YkcGFjayAkSUNDaV8zLCRDUmpfaW50LCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NDS1YsICJjY2t2IiwgImNja3YiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNja252JHBhY2sgJElDQ2lfMywkQ1JqX2ludCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DQ0tOViwgImNja252IiwgImNja252IiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBjZmNrcmEkcGFjayAkQ1JqX2Zsb2F0LCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NGQ0tSQSwgImNmY2tyYSIsICJjZmNrcmEiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2Zja25vJHBhY2sgJENSal9mbG9hdCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRkNLTk8sICJjZmNrbm8iLCAiY2Zja25vIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNmY2tuZSRwYWNrICRGQ0NpXzMsJENSal9mbG9hdCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRkNLTkUsICJjZmNrbmUiLCAiY2Zja25lIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNmY2tlcSRwYWNrICRGQ0NpXzMsJENSal9mbG9hdCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRkNLRVEsICJjZmNrZXEiLCAiY2Zja2VxIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNmY2tsZyRwYWNrICRGQ0NpXzMsJENSal9mbG9hdCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRkNLTEcsICJjZmNrbGciLCAiY2Zja2xnIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNmY2t1ZSRwYWNrICRGQ0NpXzMsJENSal9mbG9hdCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRkNLVUUsICJjZmNrdWUiLCAiY2Zja3VlIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNmY2t1bCRwYWNrICRGQ0NpXzMsJENSal9mbG9hdCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRkNLVUwsICJjZmNrdWwiLCAiY2Zja3VsIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNmY2tnZSRwYWNrICRGQ0NpXzMsJENSal9mbG9hdCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRkNLR0UsICJjZmNrZ2UiLCAiY2Zja2dlIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNmY2tsdCRwYWNrICRGQ0NpXzMsJENSal9mbG9hdCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRkNLTFQsICJjZmNrbHQiLCAiY2Zja2x0IiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNmY2t1Z2UkcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQsJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0ZDS1VHRSwgImNmY2t1Z2UiLCAiY2Zja3VnZSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBjZmNrdWckcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQsJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0ZDS1VHLCAiY2Zja3VnIiwgImNmY2t1ZyIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBjZmNrbGUkcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQsJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0ZDS0xFLCAiY2Zja2xlIiwgImNmY2tsZSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBjZmNrZ3QkcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQsJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0ZDS0dULCAiY2Zja2d0IiwgImNmY2tndCIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBjZmNrdWxlJHBhY2sgJEZDQ2lfMywkQ1JqX2Zsb2F0LCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NGQ0tVTEUsICJjZmNrdWxlIiwgImNmY2t1bGUiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQogICB9LAogLyogY2Zja3UkcGFjayAkRkNDaV8zLCRDUmpfZmxvYXQsJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0ZDS1UsICJjZmNrdSIsICJjZmNrdSIsIDMyLAotICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNTAwX01BSk9SX0JfNSwgRlI1NTBfTUFKT1JfQl81IH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzUsIEZSNDUwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CiAgIH0sCiAvKiBjZmNrbyRwYWNrICRGQ0NpXzMsJENSal9mbG9hdCwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRkNLTywgImNmY2tvIiwgImNmY2tvIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI1MDBfTUFKT1JfQl81LCBGUjU1MF9NQUpPUl9CXzUgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9CMDEsIEZSNDAwX01BSk9SX0JfNSwgRlI0NTBfTUFKT1JfQl81LCBGUjUwMF9NQUpPUl9CXzUsIEZSNTUwX01BSk9SX0JfNSB9IH0KICAgfSwKIC8qIGNqbXBsJHBhY2sgQCgkR1JpLCRHUmopLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NKTVBMLCAiY2ptcGwiLCAiY2ptcGwiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCl8QShDT05EX0NUSSksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSTAsIEZSNDAwX01BSk9SX0lfNSwgRlI1MDBfTUFKT1JfSV81LCBGUjU1MF9NQUpPUl9JXzYgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0kwLCBGUjQwMF9NQUpPUl9JXzUsIEZSNDUwX01BSk9SX0lfNSwgRlI1MDBfTUFKT1JfSV81LCBGUjU1MF9NQUpPUl9JXzYgfSB9CiAgIH0sCiAvKiBjY2FsbGwkcGFjayBAKCRHUmksJEdSaiksJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0NBTExMLCAiY2NhbGxsIiwgImNjYWxsbCIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKXxBKENPTkRfQ1RJKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JMCwgRlI0MDBfTUFKT1JfSV81LCBGUjUwMF9NQUpPUl9JXzUsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpfEEoQ09ORF9DVEkpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0kwLCBGUjQwMF9NQUpPUl9JXzUsIEZSNDUwX01BSk9SX0lfNSwgRlI1MDBfTUFKT1JfSV81LCBGUjU1MF9NQUpPUl9JXzYgfSB9CiAgIH0sCiAvKiBpY2kkcGFjayBAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX0lDSSwgImljaSIsICJpY2kiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18yLCBGUjUwMF9NQUpPUl9DXzIsIEZSNTUwX01BSk9SX0NfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18yLCBGUjQ1MF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfQ18yIH0gfQogICB9LAogLyogZGNpJHBhY2sgQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9EQ0ksICJkY2kiLCAiZGNpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9DXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMiwgRlI0NTBfTUFKT1JfQ18yLCBGUjUwMF9NQUpPUl9DXzIsIEZSNTUwX01BSk9SX0NfMiB9IH0KICAgfSwKIC8qIGljZWkkcGFjayBAKCRHUmksJEdSaiksJGFlICovCiAgIHsKICAgICBGUlZfSU5TTl9JQ0VJLCAiaWNlaSIsICJpY2VpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18yLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9DXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMiwgRlI0NTBfTUFKT1JfQ18yLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9DXzIgfSB9CiAgIH0sCiAvKiBkY2VpJHBhY2sgQCgkR1JpLCRHUmopLCRhZSAqLwogICB7CiAgICAgRlJWX0lOU05fRENFSSwgImRjZWkiLCAiZGNlaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfQ18yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNDUwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfQ18yIH0gfQogICB9LAogLyogZGNmJHBhY2sgQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9EQ0YsICJkY2YiLCAiZGNmIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9DXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMiwgRlI0NTBfTUFKT1JfQ18yLCBGUjUwMF9NQUpPUl9DXzIsIEZSNTUwX01BSk9SX0NfMiB9IH0KICAgfSwKIC8qIGRjZWYkcGFjayBAKCRHUmksJEdSaiksJGFlICovCiAgIHsKICAgICBGUlZfSU5TTl9EQ0VGLCAiZGNlZiIsICJkY2VmIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18yLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9DXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0MsIEZSNDAwX01BSk9SX0NfMiwgRlI0NTBfTUFKT1JfQ18yLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9DXzIgfSB9CiAgIH0sCiAvKiB3aXRsYiRwYWNrICRHUmssQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9XSVRMQiwgIndpdGxiIiwgIndpdGxiIiwgMzIsCi0gICAgeyAwfEEoUFJJVklMRUdFRCksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9DXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwfEEoUFJJVklMRUdFRCksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9DXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiB3ZHRsYiRwYWNrICRHUmssQCgkR1JpLCRHUmopICovCiAgIHsKICAgICBGUlZfSU5TTl9XRFRMQiwgIndkdGxiIiwgIndkdGxiIiwgMzIsCi0gICAgeyAwfEEoUFJJVklMRUdFRCksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9DXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwfEEoUFJJVklMRUdFRCksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9DXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBpdGxiaSRwYWNrIEAoJEdSaSwkR1JqKSAqLwogICB7CiAgICAgRlJWX0lOU05fSVRMQkksICJpdGxiaSIsICJpdGxiaSIsIDMyLAotICAgIHsgMHxBKFBSSVZJTEVHRUQpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfQywgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKFBSSVZJTEVHRUQpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfQywgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogZHRsYmkkcGFjayBAKCRHUmksJEdSaikgKi8KICAgewogICAgIEZSVl9JTlNOX0RUTEJJLCAiZHRsYmkiLCAiZHRsYmkiLCAzMiwKLSAgICB7IDB8QShQUklWSUxFR0VEKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0MsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShQUklWSUxFR0VEKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0MsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGljcGwkcGFjayAkR1JpLCRHUmosJGxvY2sgKi8KICAgewogICAgIEZSVl9JTlNOX0lDUEwsICJpY3BsIiwgImljcGwiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18yLCBGUjUwMF9NQUpPUl9DXzIsIEZSNTUwX01BSk9SX0NfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQywgRlI0MDBfTUFKT1JfQ18yLCBGUjQ1MF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfQ18yIH0gfQogICB9LAogLyogZGNwbCRwYWNrICRHUmksJEdSaiwkbG9jayAqLwogICB7CiAgICAgRlJWX0lOU05fRENQTCwgImRjcGwiLCAiZGNwbCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9EQ1BMLCBGUjQwMF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfSV84IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9EQ1BMLCBGUjQwMF9NQUpPUl9DXzIsIEZSNDUwX01BSk9SX0lfMiwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9JXzggfSB9CiAgIH0sCiAvKiBpY3VsJHBhY2sgJEdSaSAqLwogICB7CiAgICAgRlJWX0lOU05fSUNVTCwgImljdWwiLCAiaWN1bCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfQ18yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNDUwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9DXzIgfSB9CiAgIH0sCiAvKiBkY3VsJHBhY2sgJEdSaSAqLwogICB7CiAgICAgRlJWX0lOU05fRENVTCwgImRjdWwiLCAiZGN1bCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfQ18yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNDUwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9DXzIgfSB9CiAgIH0sCiAvKiBiYXIkcGFjayAqLwogICB7CiAgICAgRlJWX0lOU05fQkFSLCAiYmFyIiwgImJhciIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfQ18yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNDUwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9DXzIgfSB9CiAgIH0sCiAvKiBtZW1iYXIkcGFjayAqLwogICB7CiAgICAgRlJWX0lOU05fTUVNQkFSLCAibWVtYmFyIiwgIm1lbWJhciIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfQ18yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9DXzIsIEZSNDUwX01BSk9SX0NfMiwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9DXzIgfSB9CisgIH0sCisvKiBscmFpJHBhY2sgJEdSaSwkR1JrLCRMUkFFLCRMUkFELCRMUkFTICovCisgIHsKKyAgICBGUlZfSU5TTl9MUkFJLCAibHJhaSIsICJscmFpIiwgMzIsCisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDUwKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgIH0sCisvKiBscmFkJHBhY2sgJEdSaSwkR1JrLCRMUkFFLCRMUkFELCRMUkFTICovCisgIHsKKyAgICBGUlZfSU5TTl9MUkFELCAibHJhZCIsICJscmFkIiwgMzIsCisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDUwKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9DXzIsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgIH0sCisvKiB0bGJwciRwYWNrICRHUmksJEdSaiwkVExCUFJvcHgsJFRMQlBSTCAqLworICB7CisgICAgRlJWX0lOU05fVExCUFIsICJ0bGJwciIsICJ0bGJwciIsIDMyLAorICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQ1MCksIFVOSVRfQywgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfQ18yLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogY29wMSRwYWNrICRzNl8xLCRDUFJpLCRDUFJqLCRDUFJrICovCiAgIHsKICAgICBGUlZfSU5TTl9DT1AxLCAiY29wMSIsICJjb3AxIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfQywgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfQ18yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0MsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGNvcDIkcGFjayAkczZfMSwkQ1BSaSwkQ1BSaiwkQ1BSayAqLwogICB7CiAgICAgRlJWX0lOU05fQ09QMiwgImNvcDIiLCAiY29wMiIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0MsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0NfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9DLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9DXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBjbHJnciRwYWNrICRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0NMUkdSLCAiY2xyZ3IiLCAiY2xyZ3IiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9JMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfNiwgRlI1NTBfTUFKT1JfSV83IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0kwMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV82LCBGUjU1MF9NQUpPUl9JXzcgfSB9CiAgIH0sCiAvKiBjbHJmciRwYWNrICRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0NMUkZSLCAiY2xyZnIiLCAiY2xyZnIiLCAzMiwKLSAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfSTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzYsIEZSNTUwX01BSk9SX0lfNyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfSTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzYsIEZSNTUwX01BSk9SX0lfNyB9IH0KICAgfSwKIC8qIGNscmdhJHBhY2sgKi8KICAgewogICAgIEZSVl9JTlNOX0NMUkdBLCAiY2xyZ2EiLCAiY2xyZ2EiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9JMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfNiwgRlI1NTBfTUFKT1JfSV83IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0kwMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV82LCBGUjU1MF9NQUpPUl9JXzcgfSB9CiAgIH0sCiAvKiBjbHJmYSRwYWNrICovCiAgIHsKICAgICBGUlZfSU5TTl9DTFJGQSwgImNscmZhIiwgImNscmZhIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0kwMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV82LCBGUjU1MF9NQUpPUl9JXzcgfSB9CisgICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0kwMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV82LCBGUjU1MF9NQUpPUl9JXzcgfSB9CiAgIH0sCiAvKiBjb21taXRnciRwYWNrICRHUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0NPTU1JVEdSLCAiY29tbWl0Z3IiLCAiY29tbWl0Z3IiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0kwMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV82LCBGUjU1MF9NQUpPUl9JXzcgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSVil8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9JMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfNiwgRlI1NTBfTUFKT1JfSV83IH0gfQogICB9LAogLyogY29tbWl0ZnIkcGFjayAkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9DT01NSVRGUiwgImNvbW1pdGZyIiwgImNvbW1pdGZyIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9GUlYpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfSTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzYsIEZSNTUwX01BSk9SX0lfNyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0ZSVil8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9JMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfNiwgRlI1NTBfTUFKT1JfSV83IH0gfQogICB9LAogLyogY29tbWl0Z2EkcGFjayAqLwogICB7CiAgICAgRlJWX0lOU05fQ09NTUlUR0EsICJjb21taXRnYSIsICJjb21taXRnYSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfSTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzYsIEZSNTUwX01BSk9SX0lfNyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0kwMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfSV82LCBGUjU1MF9NQUpPUl9JXzcgfSB9CiAgIH0sCiAvKiBjb21taXRmYSRwYWNrICovCiAgIHsKICAgICBGUlZfSU5TTl9DT01NSVRGQSwgImNvbW1pdGZhIiwgImNvbW1pdGZhIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKSwgeyAoMTw8TUFDSF9GUlYpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfSTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9JXzYsIEZSNTUwX01BSk9SX0lfNyB9IH0KKyAgICB7IDB8QShGUl9BQ0NFU1MpLCB7ICgxPDxNQUNIX0ZSVil8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9JMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfNiwgRlI1NTBfTUFKT1JfSV83IH0gfQogICB9LAogLyogZml0b3MkcGFjayAkRlJpbnRqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZJVE9TLCAiZml0b3MiLCAiZml0b3MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9GXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfRl8yIH0gfQogICB9LAogLyogZnN0b2kkcGFjayAkRlJqLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZTVE9JLCAiZnN0b2kiLCAiZnN0b2kiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9GXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfRl8yIH0gfQogICB9LAogLyogZml0b2QkcGFjayAkRlJpbnRqLCRGUmRvdWJsZWsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZJVE9ELCAiZml0b2QiLCAiZml0b2QiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBmZHRvaSRwYWNrICRGUmRvdWJsZWosJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fRkRUT0ksICJmZHRvaSIsICJmZHRvaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGZkaXRvcyRwYWNrICRGUmludGosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fRkRJVE9TLCAiZmRpdG9zIiwgImZkaXRvcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGZkc3RvaSRwYWNrICRGUmosJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fRkRTVE9JLCAiZmRzdG9pIiwgImZkc3RvaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG5mZGl0b3MkcGFjayAkRlJpbnRqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05GRElUT1MsICJuZmRpdG9zIiwgIm5mZGl0b3MiLCAzMiwKLSAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogbmZkc3RvaSRwYWNrICRGUmosJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTkZEU1RPSSwgIm5mZHN0b2kiLCAibmZkc3RvaSIsIDMyLAotICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBjZml0b3MkcGFjayAkRlJpbnRqLCRGUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0ZJVE9TLCAiY2ZpdG9zIiwgImNmaXRvcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX0ZfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9GXzIgfSB9CiAgIH0sCiAvKiBjZnN0b2kkcGFjayAkRlJqLCRGUmludGssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0ZTVE9JLCAiY2ZzdG9pIiwgImNmc3RvaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX0ZfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9GXzIgfSB9CiAgIH0sCiAvKiBuZml0b3MkcGFjayAkRlJpbnRqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05GSVRPUywgIm5maXRvcyIsICJuZml0b3MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9GXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfRl8yIH0gfQogICB9LAogLyogbmZzdG9pJHBhY2sgJEZSaiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9ORlNUT0ksICJuZnN0b2kiLCAibmZzdG9pIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfRl8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX0ZfMiB9IH0KICAgfSwKIC8qIGZtb3ZzJHBhY2sgJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9GTU9WUywgImZtb3ZzIiwgImZtb3ZzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfRl8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX0ZfMiB9IH0KICAgfSwKIC8qIGZtb3ZkJHBhY2sgJEZSZG91YmxlaiwkRlJkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9GTU9WRCwgImZtb3ZkIiwgImZtb3ZkIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGZkbW92cyRwYWNrICRGUmosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fRkRNT1ZTLCAiZmRtb3ZzIiwgImZkbW92cyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGNmbW92cyRwYWNrICRGUmosJEZSaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRk1PVlMsICJjZm1vdnMiLCAiY2Ztb3ZzIiwgMzIsCi0gICAgeyAwfEEoRlJfQUNDRVNTKXxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfRl8yIH0gfQorICAgIHsgMHxBKEZSX0FDQ0VTUyl8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX0ZfMiB9IH0KICAgfSwKIC8qIGZuZWdzJHBhY2sgJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9GTkVHUywgImZuZWdzIiwgImZuZWdzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfRl8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX0ZfMiB9IH0KICAgfSwKIC8qIGZuZWdkJHBhY2sgJEZSZG91YmxlaiwkRlJkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9GTkVHRCwgImZuZWdkIiwgImZuZWdkIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogZmRuZWdzJHBhY2sgJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9GRE5FR1MsICJmZG5lZ3MiLCAiZmRuZWdzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogY2ZuZWdzJHBhY2sgJEZSaiwkRlJrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NGTkVHUywgImNmbmVncyIsICJjZm5lZ3MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9GXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfRl8yIH0gfQogICB9LAogLyogZmFic3MkcGFjayAkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZBQlNTLCAiZmFic3MiLCAiZmFic3MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9GXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMSwgRlI1NTBfTUFKT1JfRl8yIH0gfQogICB9LAogLyogZmFic2QkcGFjayAkRlJkb3VibGVqLCRGUmRvdWJsZWsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZBQlNELCAiZmFic2QiLCAiZmFic2QiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBmZGFic3MkcGFjayAkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZEQUJTUywgImZkYWJzcyIsICJmZGFic3MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBjZmFic3MkcGFjayAkRlJqLCRGUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0ZBQlNTLCAiY2ZhYnNzIiwgImNmYWJzcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzEsIEZSNTUwX01BSk9SX0ZfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8xLCBGUjU1MF9NQUpPUl9GXzIgfSB9CiAgIH0sCiAvKiBmc3FydHMkcGFjayAkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZTUVJUUywgImZzcXJ0cyIsICJmc3FydHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzQsIEZSNTUwX01BSk9SX0ZfMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzQsIEZSNTUwX01BSk9SX0ZfMyB9IH0KICAgfSwKIC8qIGZkc3FydHMkcGFjayAkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZEU1FSVFMsICJmZHNxcnRzIiwgImZkc3FydHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzQsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl80LCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogbmZkc3FydHMkcGFjayAkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05GRFNRUlRTLCAibmZkc3FydHMiLCAibmZkc3FydHMiLCAzMiwKLSAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNCwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNCwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGZzcXJ0ZCRwYWNrICRGUmRvdWJsZWosJEZSZG91YmxlayAqLwogICB7CiAgICAgRlJWX0lOU05fRlNRUlRELCAiZnNxcnRkIiwgImZzcXJ0ZCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNCwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzQsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBjZnNxcnRzJHBhY2sgJEZSaiwkRlJrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NGU1FSVFMsICJjZnNxcnRzIiwgImNmc3FydHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzQsIEZSNTUwX01BSk9SX0ZfMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzQsIEZSNTUwX01BSk9SX0ZfMyB9IH0KICAgfSwKIC8qIG5mc3FydHMkcGFjayAkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05GU1FSVFMsICJuZnNxcnRzIiwgIm5mc3FydHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzQsIEZSNTUwX01BSk9SX0ZfMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzQsIEZSNTUwX01BSk9SX0ZfMyB9IH0KICAgfSwKIC8qIGZhZGRzJHBhY2sgJEZSaSwkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZBRERTLCAiZmFkZHMiLCAiZmFkZHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8yLCBGUjU1MF9NQUpPUl9GXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMiwgRlI1NTBfTUFKT1JfRl8yIH0gfQogICB9LAogLyogZnN1YnMkcGFjayAkRlJpLCRGUmosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fRlNVQlMsICJmc3VicyIsICJmc3VicyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzIsIEZSNTUwX01BSk9SX0ZfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8yLCBGUjU1MF9NQUpPUl9GXzIgfSB9CiAgIH0sCiAvKiBmbXVscyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9GTVVMUywgImZtdWxzIiwgImZtdWxzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8zLCBGUjU1MF9NQUpPUl9GXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8zLCBGUjU1MF9NQUpPUl9GXzMgfSB9CiAgIH0sCiAvKiBmZGl2cyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9GRElWUywgImZkaXZzIiwgImZkaXZzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl80LCBGUjU1MF9NQUpPUl9GXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl80LCBGUjU1MF9NQUpPUl9GXzMgfSB9CiAgIH0sCiAvKiBmYWRkZCRwYWNrICRGUmRvdWJsZWksJEZSZG91YmxlaiwkRlJkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9GQURERCwgImZhZGRkIiwgImZhZGRkIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogZnN1YmQkcGFjayAkRlJkb3VibGVpLCRGUmRvdWJsZWosJEZSZG91YmxlayAqLwogICB7CiAgICAgRlJWX0lOU05fRlNVQkQsICJmc3ViZCIsICJmc3ViZCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzIsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGZtdWxkJHBhY2sgJEZSZG91YmxlaSwkRlJkb3VibGVqLCRGUmRvdWJsZWsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZNVUxELCAiZm11bGQiLCAiZm11bGQiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8zLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzMsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBmZGl2ZCRwYWNrICRGUmRvdWJsZWksJEZSZG91YmxlaiwkRlJkb3VibGVrICovCiAgIHsKICAgICBGUlZfSU5TTl9GRElWRCwgImZkaXZkIiwgImZkaXZkIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNCwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl80LCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogY2ZhZGRzJHBhY2sgJEZSaSwkRlJqLCRGUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0ZBRERTLCAiY2ZhZGRzIiwgImNmYWRkcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzIsIEZSNTUwX01BSk9SX0ZfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8yLCBGUjU1MF9NQUpPUl9GXzIgfSB9CiAgIH0sCiAvKiBjZnN1YnMkcGFjayAkRlJpLCRGUmosJEZSaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRlNVQlMsICJjZnN1YnMiLCAiY2ZzdWJzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMiwgRlI1NTBfTUFKT1JfRl8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzIsIEZSNTUwX01BSk9SX0ZfMiB9IH0KICAgfSwKIC8qIGNmbXVscyRwYWNrICRGUmksJEZSaiwkRlJrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NGTVVMUywgImNmbXVscyIsICJjZm11bHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzMsIEZSNTUwX01BSk9SX0ZfMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzMsIEZSNTUwX01BSk9SX0ZfMyB9IH0KICAgfSwKIC8qIGNmZGl2cyRwYWNrICRGUmksJEZSaiwkRlJrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NGRElWUywgImNmZGl2cyIsICJjZmRpdnMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzQsIEZSNTUwX01BSk9SX0ZfMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzQsIEZSNTUwX01BSk9SX0ZfMyB9IH0KICAgfSwKIC8qIG5mYWRkcyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9ORkFERFMsICJuZmFkZHMiLCAibmZhZGRzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMiwgRlI1NTBfTUFKT1JfRl8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzIsIEZSNTUwX01BSk9SX0ZfMiB9IH0KICAgfSwKIC8qIG5mc3VicyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9ORlNVQlMsICJuZnN1YnMiLCAibmZzdWJzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMiwgRlI1NTBfTUFKT1JfRl8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzIsIEZSNTUwX01BSk9SX0ZfMiB9IH0KICAgfSwKIC8qIG5mbXVscyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9ORk1VTFMsICJuZm11bHMiLCAibmZtdWxzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8zLCBGUjU1MF9NQUpPUl9GXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8zLCBGUjU1MF9NQUpPUl9GXzMgfSB9CiAgIH0sCiAvKiBuZmRpdnMkcGFjayAkRlJpLCRGUmosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fTkZESVZTLCAibmZkaXZzIiwgIm5mZGl2cyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNCwgRlI1NTBfTUFKT1JfRl8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNCwgRlI1NTBfTUFKT1JfRl8zIH0gfQogICB9LAogLyogZmNtcHMkcGFjayAkRlJpLCRGUmosJEZDQ2lfMiAqLwogICB7CiAgICAgRlJWX0lOU05fRkNNUFMsICJmY21wcyIsICJmY21wcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzIsIEZSNTUwX01BSk9SX0ZfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8yLCBGUjU1MF9NQUpPUl9GXzIgfSB9CiAgIH0sCiAvKiBmY21wZCRwYWNrICRGUmRvdWJsZWksJEZSZG91YmxlaiwkRkNDaV8yICovCiAgIHsKICAgICBGUlZfSU5TTl9GQ01QRCwgImZjbXBkIiwgImZjbXBkIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfMiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8yLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogY2ZjbXBzJHBhY2sgJEZSaSwkRlJqLCRGQ0NpXzIsJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0ZDTVBTLCAiY2ZjbXBzIiwgImNmY21wcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzIsIEZSNTUwX01BSk9SX0ZfMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl8yLCBGUjU1MF9NQUpPUl9GXzIgfSB9CiAgIH0sCiAvKiBmZGNtcHMkcGFjayAkRlJpLCRGUmosJEZDQ2lfMiAqLwogICB7CiAgICAgRlJWX0lOU05fRkRDTVBTLCAiZmRjbXBzIiwgImZkY21wcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzYsIEZSNTUwX01BSk9SX0ZfNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl82LCBGUjU1MF9NQUpPUl9GXzQgfSB9CiAgIH0sCiAvKiBmbWFkZHMkcGFjayAkRlJpLCRGUmosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fRk1BRERTLCAiZm1hZGRzIiwgImZtYWRkcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGZtc3VicyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9GTVNVQlMsICJmbXN1YnMiLCAiZm1zdWJzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl81LCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogZm1hZGRkJHBhY2sgJEZSZG91YmxlaSwkRlJkb3VibGVqLCRGUmRvdWJsZWsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZNQURERCwgImZtYWRkZCIsICJmbWFkZGQiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl81LCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBmbXN1YmQkcGFjayAkRlJkb3VibGVpLCRGUmRvdWJsZWosJEZSZG91YmxlayAqLwogICB7CiAgICAgRlJWX0lOU05fRk1TVUJELCAiZm1zdWJkIiwgImZtc3ViZCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGZkbWFkZHMkcGFjayAkRlJpLCRGUmosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fRkRNQUREUywgImZkbWFkZHMiLCAiZmRtYWRkcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG5mZG1hZGRzJHBhY2sgJEZSaSwkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05GRE1BRERTLCAibmZkbWFkZHMiLCAibmZkbWFkZHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl81LCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBjZm1hZGRzJHBhY2sgJEZSaSwkRlJqLCRGUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0ZNQUREUywgImNmbWFkZHMiLCAiY2ZtYWRkcyIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGNmbXN1YnMkcGFjayAkRlJpLCRGUmosJEZSaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRk1TVUJTLCAiY2Ztc3VicyIsICJjZm1zdWJzIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl81LCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogbmZtYWRkcyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9ORk1BRERTLCAibmZtYWRkcyIsICJuZm1hZGRzIiwgMzIsCi0gICAgeyAwfEEoTk9OX0VYQ0VQVElORyksIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl81LCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG5mbXN1YnMkcGFjayAkRlJpLCRGUmosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fTkZNU1VCUywgIm5mbXN1YnMiLCAibmZtc3VicyIsIDMyLAotICAgIHsgMHxBKE5PTl9FWENFUFRJTkcpLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShOT05fRVhDRVBUSU5HKSwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBmbWFzJHBhY2sgJEZSaSwkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZNQVMsICJmbWFzIiwgImZtYXMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX0ZfNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX0ZfNCB9IH0KICAgfSwKIC8qIGZtc3MkcGFjayAkRlJpLCRGUmosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fRk1TUywgImZtc3MiLCAiZm1zcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfRl80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfRl80IH0gfQogICB9LAogLyogZmRtYXMkcGFjayAkRlJpLCRGUmosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fRkRNQVMsICJmZG1hcyIsICJmZG1hcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBmZG1zcyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9GRE1TUywgImZkbXNzIiwgImZkbXNzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl81LCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG5mZG1hcyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9ORkRNQVMsICJuZmRtYXMiLCAibmZkbWFzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl81LCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG5mZG1zcyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9ORkRNU1MsICJuZmRtc3MiLCAibmZkbXNzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl81LCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGNmbWFzJHBhY2sgJEZSaSwkRlJqLCRGUmssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ0ZNQVMsICJjZm1hcyIsICJjZm1hcyIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfRl80IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfRl80IH0gfQogICB9LAogLyogY2Ztc3MkcGFjayAkRlJpLCRGUmosJEZSaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DRk1TUywgImNmbXNzIiwgImNmbXNzIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl81LCBGUjU1MF9NQUpPUl9GXzQgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl81LCBGUjU1MF9NQUpPUl9GXzQgfSB9CiAgIH0sCiAvKiBmbWFkJHBhY2sgJEZSaSwkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZNQUQsICJmbWFkIiwgImZtYWQiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl81LCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogZm1zZCRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9GTVNELCAiZm1zZCIsICJmbXNkIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl81LCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG5mbWFzJHBhY2sgJEZSaSwkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05GTUFTLCAibmZtYXMiLCAibmZtYXMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX0ZfNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX0ZfNCB9IH0KICAgfSwKIC8qIG5mbXNzJHBhY2sgJEZSaSwkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05GTVNTLCAibmZtc3MiLCAibmZtc3MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX0ZfNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzUsIEZSNTUwX01BSk9SX0ZfNCB9IH0KICAgfSwKIC8qIGZkYWRkcyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9GREFERFMsICJmZGFkZHMiLCAiZmRhZGRzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl82LCBGUjU1MF9NQUpPUl9GXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl82LCBGUjU1MF9NQUpPUl9GXzQgfSB9CiAgIH0sCiAvKiBmZHN1YnMkcGFjayAkRlJpLCRGUmosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fRkRTVUJTLCAiZmRzdWJzIiwgImZkc3VicyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNiwgRlI1NTBfTUFKT1JfRl80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNiwgRlI1NTBfTUFKT1JfRl80IH0gfQogICB9LAogLyogZmRtdWxzJHBhY2sgJEZSaSwkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZETVVMUywgImZkbXVscyIsICJmZG11bHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzcsIEZSNTUwX01BSk9SX0ZfNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzcsIEZSNTUwX01BSk9SX0ZfNCB9IH0KICAgfSwKIC8qIGZkZGl2cyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9GRERJVlMsICJmZGRpdnMiLCAiZmRkaXZzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl83LCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNywgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGZkc2FkcyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9GRFNBRFMsICJmZHNhZHMiLCAiZmRzYWRzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl82LCBGUjU1MF9NQUpPUl9GXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl82LCBGUjU1MF9NQUpPUl9GXzQgfSB9CiAgIH0sCiAvKiBmZG11bGNzJHBhY2sgJEZSaSwkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX0ZETVVMQ1MsICJmZG11bGNzIiwgImZkbXVsY3MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzcsIEZSNTUwX01BSk9SX0ZfNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzcsIEZSNTUwX01BSk9SX0ZfNCB9IH0KICAgfSwKIC8qIG5mZG11bGNzJHBhY2sgJEZSaSwkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05GRE1VTENTLCAibmZkbXVsY3MiLCAibmZkbXVsY3MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzcsIEZSNTUwX01BSk9SX0ZfNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzcsIEZSNTUwX01BSk9SX0ZfNCB9IH0KICAgfSwKIC8qIG5mZGFkZHMkcGFjayAkRlJpLCRGUmosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fTkZEQUREUywgIm5mZGFkZHMiLCAibmZkYWRkcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNiwgRlI1NTBfTUFKT1JfRl80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlI1MDApfCgxPDxNQUNIX0ZSNTUwKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNiwgRlI1NTBfTUFKT1JfRl80IH0gfQogICB9LAogLyogbmZkc3VicyRwYWNrICRGUmksJEZSaiwkRlJrICovCiAgIHsKICAgICBGUlZfSU5TTl9ORkRTVUJTLCAibmZkc3VicyIsICJuZmRzdWJzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl82LCBGUjU1MF9NQUpPUl9GXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl82LCBGUjU1MF9NQUpPUl9GXzQgfSB9CiAgIH0sCiAvKiBuZmRtdWxzJHBhY2sgJEZSaSwkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05GRE1VTFMsICJuZmRtdWxzIiwgIm5mZG11bHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzcsIEZSNTUwX01BSk9SX0ZfNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzcsIEZSNTUwX01BSk9SX0ZfNCB9IH0KICAgfSwKIC8qIG5mZGRpdnMkcGFjayAkRlJpLCRGUmosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fTkZERElWUywgIm5mZGRpdnMiLCAibmZkZGl2cyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNywgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzcsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBuZmRzYWRzJHBhY2sgJEZSaSwkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX05GRFNBRFMsICJuZmRzYWRzIiwgIm5mZHNhZHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzYsIEZSNTUwX01BSk9SX0ZfNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzYsIEZSNTUwX01BSk9SX0ZfNCB9IH0KICAgfSwKIC8qIG5mZGNtcHMkcGFjayAkRlJpLCRGUmosJEZDQ2lfMiAqLwogICB7CiAgICAgRlJWX0lOU05fTkZEQ01QUywgIm5mZGNtcHMiLCAibmZkY21wcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9GXzYsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfNiwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG1oc2V0bG9zJHBhY2sgJHUxMiwkRlJrbG8gKi8KICAgewogICAgIEZSVl9JTlNOX01IU0VUTE9TLCAibWhzZXRsb3MiLCAibWhzZXRsb3MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV81IH0gfQogICB9LAogLyogbWhzZXRoaXMkcGFjayAkdTEyLCRGUmtoaSAqLwogICB7CiAgICAgRlJWX0lOU05fTUhTRVRISVMsICJtaHNldGhpcyIsICJtaHNldGhpcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fNSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNDUwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI0NTBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzUgfSB9CiAgIH0sCiAvKiBtaGRzZXRzJHBhY2sgJHUxMiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NSERTRVRTLCAibWhkc2V0cyIsICJtaGRzZXRzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV81IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fNSB9IH0KICAgfSwKIC8qIG1oc2V0bG9oJHBhY2sgJHM1LCRGUmtsbyAqLwogICB7CiAgICAgRlJWX0lOU05fTUhTRVRMT0gsICJtaHNldGxvaCIsICJtaHNldGxvaCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fNSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNDUwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI0NTBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzUgfSB9CiAgIH0sCiAvKiBtaHNldGhpaCRwYWNrICRzNSwkRlJraGkgKi8KICAgewogICAgIEZSVl9JTlNOX01IU0VUSElILCAibWhzZXRoaWgiLCAibWhzZXRoaWgiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV81IH0gfQogICB9LAogLyogbWhkc2V0aCRwYWNrICRzNSwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NSERTRVRILCAibWhkc2V0aCIsICJtaGRzZXRoIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV81IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fNSB9IH0KICAgfSwKIC8qIG1hbmQkcGFjayAkRlJpbnRpLCRGUmludGosJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTUFORCwgIm1hbmQiLCAibWFuZCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX01fMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI0NTBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX01fMiB9IH0KICAgfSwKIC8qIG1vciRwYWNrICRGUmludGksJEZSaW50aiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NT1IsICJtb3IiLCAibW9yIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogbXhvciRwYWNrICRGUmludGksJEZSaW50aiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NWE9SLCAibXhvciIsICJteG9yIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogY21hbmQkcGFjayAkRlJpbnRpLCRGUmludGosJEZSaW50aywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTUFORCwgImNtYW5kIiwgImNtYW5kIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogY21vciRwYWNrICRGUmludGksJEZSaW50aiwkRlJpbnRrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNT1IsICJjbW9yIiwgImNtb3IiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CiAgIH0sCiAvKiBjbXhvciRwYWNrICRGUmludGksJEZSaW50aiwkRlJpbnRrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNWE9SLCAiY214b3IiLCAiY214b3IiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CiAgIH0sCiAvKiBtbm90JHBhY2sgJEZSaW50aiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NTk9ULCAibW5vdCIsICJtbm90IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogY21ub3QkcGFjayAkRlJpbnRqLCRGUmludGssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ01OT1QsICJjbW5vdCIsICJjbW5vdCIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX01fMiB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI0NTBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX01fMiB9IH0KICAgfSwKIC8qIG1yb3RsaSRwYWNrICRGUmludGksJHU2LCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX01ST1RMSSwgIm1yb3RsaSIsICJtcm90bGkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbXJvdHJpJHBhY2sgJEZSaW50aSwkdTYsJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTVJPVFJJLCAibXJvdHJpIiwgIm1yb3RyaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CiAgIH0sCiAvKiBtd2N1dCRwYWNrICRGUmludGksJEZSaW50aiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NV0NVVCwgIm13Y3V0IiwgIm13Y3V0IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMiwgRlI0NTBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KICAgfSwKIC8qIG13Y3V0aSRwYWNrICRGUmludGksJHU2LCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX01XQ1VUSSwgIm13Y3V0aSIsICJtd2N1dGkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbWN1dCRwYWNrICRBQ0M0MFNpLCRGUmludGosJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTUNVVCwgIm1jdXQiLCAibWN1dCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CiAgIH0sCiAvKiBtY3V0aSRwYWNrICRBQ0M0MFNpLCRzNiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NQ1VUSSwgIm1jdXRpIiwgIm1jdXRpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMSwgRlI0NTBfTUFKT1JfTV81LCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KICAgfSwKIC8qIG1jdXRzcyRwYWNrICRBQ0M0MFNpLCRGUmludGosJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTUNVVFNTLCAibWN1dHNzIiwgIm1jdXRzcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CiAgIH0sCiAvKiBtY3V0c3NpJHBhY2sgJEFDQzQwU2ksJHM2LCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX01DVVRTU0ksICJtY3V0c3NpIiwgIm1jdXRzc2kiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzUsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbWRjdXRzc2kkcGFjayAkQUNDNDBTaSwkczYsJEZSaW50a2V2ZW4gKi8KICAgewogICAgIEZSVl9JTlNOX01EQ1VUU1NJLCAibWRjdXRzc2kiLCAibWRjdXRzc2kiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9GTUxPVywgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX01EQ1VUU1NJLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fNiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbWF2ZWgkcGFjayAkRlJpbnRpLCRGUmludGosJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTUFWRUgsICJtYXZlaCIsICJtYXZlaCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX01fMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI0NTBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX01fMiB9IH0KICAgfSwKIC8qIG1zbGxoaSRwYWNrICRGUmludGksJHU2LCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX01TTExISSwgIm1zbGxoaSIsICJtc2xsaGkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbXNybGhpJHBhY2sgJEZSaW50aSwkdTYsJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTVNSTEhJLCAibXNybGhpIiwgIm1zcmxoaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CiAgIH0sCiAvKiBtc3JhaGkkcGFjayAkRlJpbnRpLCR1NiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NU1JBSEksICJtc3JhaGkiLCAibXNyYWhpIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMSwgRlI0NTBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KICAgfSwKIC8qIG1kcm90bGkkcGFjayAkRlJpbnRpZXZlbiwkczYsJEZSaW50a2V2ZW4gKi8KICAgewogICAgIEZSVl9JTlNOX01EUk9UTEksICJtZHJvdGxpIiwgIm1kcm90bGkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9GTUxPVywgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0ZNTE9XLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbWNwbGhpJHBhY2sgJEZSaW50aSwkdTYsJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTUNQTEhJLCAibWNwbGhpIiwgIm1jcGxoaSIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0ZNTE9XLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNDUwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfRk1MT1csIEZSNDAwX01BSk9SX01fMiwgRlI0NTBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzMgfSB9CiAgIH0sCiAvKiBtY3BsaSRwYWNrICRGUmludGksJHU2LCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX01DUExJLCAibWNwbGkiLCAibWNwbGkiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9GTUxPVywgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0ZNTE9XLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbXNhdGhzJHBhY2sgJEZSaW50aSwkRlJpbnRqLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX01TQVRIUywgIm1zYXRocyIsICJtc2F0aHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CiAgIH0sCiAvKiBtcXNhdGhzJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEZSaW50a2V2ZW4gKi8KICAgewogICAgIEZSVl9JTlNOX01RU0FUSFMsICJtcXNhdGhzIiwgIm1xc2F0aHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogbXNhdGh1JHBhY2sgJEZSaW50aSwkRlJpbnRqLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX01TQVRIVSwgIm1zYXRodSIsICJtc2F0aHUiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CiAgIH0sCiAvKiBtY21wc2gkcGFjayAkRlJpbnRpLCRGUmludGosJEZDQ2sgKi8KICAgewogICAgIEZSVl9JTlNOX01DTVBTSCwgIm1jbXBzaCIsICJtY21wc2giLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CiAgIH0sCiAvKiBtY21wdWgkcGFjayAkRlJpbnRpLCRGUmludGosJEZDQ2sgKi8KICAgewogICAgIEZSVl9JTlNOX01DTVBVSCwgIm1jbXB1aCIsICJtY21wdWgiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CiAgIH0sCiAvKiBtYWJzaHMkcGFjayAkRlJpbnRqLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX01BQlNIUywgIm1hYnNocyIsICJtYWJzaHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogbWFkZGhzcyRwYWNrICRGUmludGksJEZSaW50aiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NQURESFNTLCAibWFkZGhzcyIsICJtYWRkaHNzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogbWFkZGh1cyRwYWNrICRGUmludGksJEZSaW50aiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NQURESFVTLCAibWFkZGh1cyIsICJtYWRkaHVzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogbXN1YmhzcyRwYWNrICRGUmludGksJEZSaW50aiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NU1VCSFNTLCAibXN1YmhzcyIsICJtc3ViaHNzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogbXN1Ymh1cyRwYWNrICRGUmludGksJEZSaW50aiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NU1VCSFVTLCAibXN1Ymh1cyIsICJtc3ViaHVzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogY21hZGRoc3MkcGFjayAkRlJpbnRpLCRGUmludGosJEZSaW50aywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTUFEREhTUywgImNtYWRkaHNzIiwgImNtYWRkaHNzIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogY21hZGRodXMkcGFjayAkRlJpbnRpLCRGUmludGosJEZSaW50aywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTUFEREhVUywgImNtYWRkaHVzIiwgImNtYWRkaHVzIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogY21zdWJoc3MkcGFjayAkRlJpbnRpLCRGUmludGosJEZSaW50aywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTVNVQkhTUywgImNtc3ViaHNzIiwgImNtc3ViaHNzIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogY21zdWJodXMkcGFjayAkRlJpbnRpLCRGUmludGosJEZSaW50aywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTVNVQkhVUywgImNtc3ViaHVzIiwgImNtc3ViaHVzIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogbXFhZGRoc3MkcGFjayAkRlJpbnRpZXZlbiwkRlJpbnRqZXZlbiwkRlJpbnRrZXZlbiAqLwogICB7CiAgICAgRlJWX0lOU05fTVFBRERIU1MsICJtcWFkZGhzcyIsICJtcWFkZGhzcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX01fMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI0NTBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX01fMiB9IH0KICAgfSwKIC8qIG1xYWRkaHVzJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEZSaW50a2V2ZW4gKi8KICAgewogICAgIEZSVl9JTlNOX01RQURESFVTLCAibXFhZGRodXMiLCAibXFhZGRodXMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CiAgIH0sCiAvKiBtcXN1YmhzcyRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRGUmludGtldmVuICovCiAgIHsKICAgICBGUlZfSU5TTl9NUVNVQkhTUywgIm1xc3ViaHNzIiwgIm1xc3ViaHNzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogbXFzdWJodXMkcGFjayAkRlJpbnRpZXZlbiwkRlJpbnRqZXZlbiwkRlJpbnRrZXZlbiAqLwogICB7CiAgICAgRlJWX0lOU05fTVFTVUJIVVMsICJtcXN1Ymh1cyIsICJtcXN1Ymh1cyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX01fMiB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI0NTBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX01fMiB9IH0KICAgfSwKIC8qIGNtcWFkZGhzcyRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRGUmludGtldmVuLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNUUFEREhTUywgImNtcWFkZGhzcyIsICJjbXFhZGRoc3MiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CiAgIH0sCiAvKiBjbXFhZGRodXMkcGFjayAkRlJpbnRpZXZlbiwkRlJpbnRqZXZlbiwkRlJpbnRrZXZlbiwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTVFBRERIVVMsICJjbXFhZGRodXMiLCAiY21xYWRkaHVzIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8yIH0gfQogICB9LAogLyogY21xc3ViaHNzJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEZSaW50a2V2ZW4sJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ01RU1VCSFNTLCAiY21xc3ViaHNzIiwgImNtcXN1YmhzcyIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX01fMiB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI0NTBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX01fMiB9IH0KICAgfSwKIC8qIGNtcXN1Ymh1cyRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRGUmludGtldmVuLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNUVNVQkhVUywgImNtcXN1Ymh1cyIsICJjbXFzdWJodXMiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9NXzIgfSB9CisgIH0sCisvKiBtcWxjbHJocyRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRGUmludGtldmVuICovCisgIHsKKyAgICBGUlZfSU5TTl9NUUxDTFJIUywgIm1xbGNscmhzIiwgIm1xbGNscmhzIiwgMzIsCisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDUwKSwgVU5JVF9GTTAsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgfSwKKy8qIG1xbG10aHMkcGFjayAkRlJpbnRpZXZlbiwkRlJpbnRqZXZlbiwkRlJpbnRrZXZlbiAqLworICB7CisgICAgRlJWX0lOU05fTVFMTVRIUywgIm1xbG10aHMiLCAibXFsbXRocyIsIDMyLAorICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQ1MCksIFVOSVRfRk0wLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgIH0sCisvKiBtcXNsbGhpJHBhY2sgJEZSaW50aWV2ZW4sJHU2LCRGUmludGtldmVuICovCisgIHsKKyAgICBGUlZfSU5TTl9NUVNMTEhJLCAibXFzbGxoaSIsICJtcXNsbGhpIiwgMzIsCisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDUwKSwgVU5JVF9GTTAsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgfSwKKy8qIG1xc3JhaGkkcGFjayAkRlJpbnRpZXZlbiwkdTYsJEZSaW50a2V2ZW4gKi8KKyAgeworICAgIEZSVl9JTlNOX01RU1JBSEksICJtcXNyYWhpIiwgIm1xc3JhaGkiLCAzMiwKKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0NTApLCBVTklUX0ZNMCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogbWFkZGFjY3MkcGFjayAkQUNDNDBTaSwkQUNDNDBTayAqLwogICB7CiAgICAgRlJWX0lOU05fTUFEREFDQ1MsICJtYWRkYWNjcyIsICJtYWRkYWNjcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNDUwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI0NTBfTUFKT1JfTV8zLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBtc3ViYWNjcyRwYWNrICRBQ0M0MFNpLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NU1VCQUNDUywgIm1zdWJhY2NzIiwgIm1zdWJhY2NzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fNCB9IH0KICAgfSwKIC8qIG1kYWRkYWNjcyRwYWNrICRBQ0M0MFNpLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NREFEREFDQ1MsICJtZGFkZGFjY3MiLCAibWRhZGRhY2NzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfTURVQUxBQ0MsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9NRFVBTEFDQywgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzQsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fNCB9IH0KICAgfSwKIC8qIG1kc3ViYWNjcyRwYWNrICRBQ0M0MFNpLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NRFNVQkFDQ1MsICJtZHN1YmFjY3MiLCAibWRzdWJhY2NzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfTURVQUxBQ0MsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9NRFVBTEFDQywgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzQsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fNCB9IH0KICAgfSwKIC8qIG1hc2FjY3MkcGFjayAkQUNDNDBTaSwkQUNDNDBTayAqLwogICB7CiAgICAgRlJWX0lOU05fTUFTQUNDUywgIm1hc2FjY3MiLCAibWFzYWNjcyIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fNCB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNDUwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI0NTBfTUFKT1JfTV8zLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBtZGFzYWNjcyRwYWNrICRBQ0M0MFNpLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NREFTQUNDUywgIm1kYXNhY2NzIiwgIm1kYXNhY2NzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfTURVQUxBQ0MsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9NRFVBTEFDQywgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzQsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fNCB9IH0KICAgfSwKIC8qIG1tdWxocyRwYWNrICRGUmludGksJEZSaW50aiwkQUNDNDBTayAqLwogICB7CiAgICAgRlJWX0lOU05fTU1VTEhTLCAibW11bGhzIiwgIm1tdWxocyIsIDMyLAotICAgIHsgMHxBKFBSRVNFUlZFX09WRiksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwfEEoUFJFU0VSVkVfT1ZGKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogbW11bGh1JHBhY2sgJEZSaW50aSwkRlJpbnRqLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NTVVMSFUsICJtbXVsaHUiLCAibW11bGh1IiwgMzIsCi0gICAgeyAwfEEoUFJFU0VSVkVfT1ZGKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzQsIEZSNTUwX01BSk9SX01fNCB9IH0KKyAgICB7IDB8QShQUkVTRVJWRV9PVkYpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMywgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBtbXVseGhzJHBhY2sgJEZSaW50aSwkRlJpbnRqLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NTVVMWEhTLCAibW11bHhocyIsICJtbXVseGhzIiwgMzIsCi0gICAgeyAwfEEoUFJFU0VSVkVfT1ZGKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzQsIEZSNTUwX01BSk9SX01fNCB9IH0KKyAgICB7IDB8QShQUkVTRVJWRV9PVkYpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMywgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBtbXVseGh1JHBhY2sgJEZSaW50aSwkRlJpbnRqLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NTVVMWEhVLCAibW11bHhodSIsICJtbXVseGh1IiwgMzIsCi0gICAgeyAwfEEoUFJFU0VSVkVfT1ZGKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzQsIEZSNTUwX01BSk9SX01fNCB9IH0KKyAgICB7IDB8QShQUkVTRVJWRV9PVkYpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMywgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBjbW11bGhzJHBhY2sgJEZSaW50aSwkRlJpbnRqLCRBQ0M0MFNrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNTVVMSFMsICJjbW11bGhzIiwgImNtbXVsaHMiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCl8QShQUkVTRVJWRV9PVkYpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKXxBKFBSRVNFUlZFX09WRiksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI0NTBfTUFKT1JfTV8zLCBGUjUwMF9NQUpPUl9NXzQsIEZSNTUwX01BSk9SX01fNCB9IH0KICAgfSwKIC8qIGNtbXVsaHUkcGFjayAkRlJpbnRpLCRGUmludGosJEFDQzQwU2ssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ01NVUxIVSwgImNtbXVsaHUiLCAiY21tdWxodSIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKXxBKFBSRVNFUlZFX09WRiksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpfEEoUFJFU0VSVkVfT1ZGKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogbXFtdWxocyRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NUU1VTEhTLCAibXFtdWxocyIsICJtcW11bGhzIiwgMzIsCi0gICAgeyAwfEEoUFJFU0VSVkVfT1ZGKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzQsIEZSNTUwX01BSk9SX01fNCB9IH0KKyAgICB7IDB8QShQUkVTRVJWRV9PVkYpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fNCwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBtcW11bGh1JHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEFDQzQwU2sgKi8KICAgewogICAgIEZSVl9JTlNOX01RTVVMSFUsICJtcW11bGh1IiwgIm1xbXVsaHUiLCAzMiwKLSAgICB7IDB8QShQUkVTRVJWRV9PVkYpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMHxBKFBSRVNFUlZFX09WRiksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI0NTBfTUFKT1JfTV80LCBGUjUwMF9NQUpPUl9NXzQsIEZSNTUwX01BSk9SX01fNCB9IH0KICAgfSwKIC8qIG1xbXVseGhzJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEFDQzQwU2sgKi8KICAgewogICAgIEZSVl9JTlNOX01RTVVMWEhTLCAibXFtdWx4aHMiLCAibXFtdWx4aHMiLCAzMiwKLSAgICB7IDB8QShQUkVTRVJWRV9PVkYpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMHxBKFBSRVNFUlZFX09WRiksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI0NTBfTUFKT1JfTV80LCBGUjUwMF9NQUpPUl9NXzQsIEZSNTUwX01BSk9SX01fNCB9IH0KICAgfSwKIC8qIG1xbXVseGh1JHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEFDQzQwU2sgKi8KICAgewogICAgIEZSVl9JTlNOX01RTVVMWEhVLCAibXFtdWx4aHUiLCAibXFtdWx4aHUiLCAzMiwKLSAgICB7IDB8QShQUkVTRVJWRV9PVkYpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMHxBKFBSRVNFUlZFX09WRiksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI0NTBfTUFKT1JfTV80LCBGUjUwMF9NQUpPUl9NXzQsIEZSNTUwX01BSk9SX01fNCB9IH0KICAgfSwKIC8qIGNtcW11bGhzJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEFDQzQwU2ssJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ01RTVVMSFMsICJjbXFtdWxocyIsICJjbXFtdWxocyIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKXxBKFBSRVNFUlZFX09WRiksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpfEEoUFJFU0VSVkVfT1ZGKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzQsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogY21xbXVsaHUkcGFjayAkRlJpbnRpZXZlbiwkRlJpbnRqZXZlbiwkQUNDNDBTaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTVFNVUxIVSwgImNtcW11bGh1IiwgImNtcW11bGh1IiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpfEEoUFJFU0VSVkVfT1ZGKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzQsIEZSNTUwX01BSk9SX01fNCB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCl8QShQUkVTRVJWRV9PVkYpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fNCwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBtbWFjaHMkcGFjayAkRlJpbnRpLCRGUmludGosJEFDQzQwU2sgKi8KICAgewogICAgIEZSVl9JTlNOX01NQUNIUywgIm1tYWNocyIsICJtbWFjaHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMywgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBtbWFjaHUkcGFjayAkRlJpbnRpLCRGUmludGosJEFDQzQwVWsgKi8KICAgewogICAgIEZSVl9JTlNOX01NQUNIVSwgIm1tYWNodSIsICJtbWFjaHUiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMywgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBtbXJkaHMkcGFjayAkRlJpbnRpLCRGUmludGosJEFDQzQwU2sgKi8KICAgewogICAgIEZSVl9JTlNOX01NUkRIUywgIm1tcmRocyIsICJtbXJkaHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMywgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBtbXJkaHUkcGFjayAkRlJpbnRpLCRGUmludGosJEFDQzQwVWsgKi8KICAgewogICAgIEZSVl9JTlNOX01NUkRIVSwgIm1tcmRodSIsICJtbXJkaHUiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMywgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBjbW1hY2hzJHBhY2sgJEZSaW50aSwkRlJpbnRqLCRBQ0M0MFNrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNTUFDSFMsICJjbW1hY2hzIiwgImNtbWFjaHMiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMywgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBjbW1hY2h1JHBhY2sgJEZSaW50aSwkRlJpbnRqLCRBQ0M0MFVrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNTUFDSFUsICJjbW1hY2h1IiwgImNtbWFjaHUiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMywgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBtcW1hY2hzJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEFDQzQwU2sgKi8KICAgewogICAgIEZSVl9JTlNOX01RTUFDSFMsICJtcW1hY2hzIiwgIm1xbWFjaHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fNCwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBtcW1hY2h1JHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEFDQzQwVWsgKi8KICAgewogICAgIEZSVl9JTlNOX01RTUFDSFUsICJtcW1hY2h1IiwgIm1xbWFjaHUiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fNCwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBjbXFtYWNocyRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRBQ0M0MFNrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNUU1BQ0hTLCAiY21xbWFjaHMiLCAiY21xbWFjaHMiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fNCwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBjbXFtYWNodSRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRBQ0M0MFVrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNUU1BQ0hVLCAiY21xbWFjaHUiLCAiY21xbWFjaHUiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fNCwgRlI1MDBfTUFKT1JfTV80LCBGUjU1MF9NQUpPUl9NXzQgfSB9CiAgIH0sCiAvKiBtcXhtYWNocyRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NUVhNQUNIUywgIm1xeG1hY2hzIiwgIm1xeG1hY2hzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfTURVQUxBQ0MsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzQsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fNCB9IH0KICAgfSwKIC8qIG1xeG1hY3hocyRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NUVhNQUNYSFMsICJtcXhtYWN4aHMiLCAibXF4bWFjeGhzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjU1MCksIFVOSVRfTURVQUxBQ0MsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9GUjQwMCl8KDE8PE1BQ0hfRlI0NTApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzQsIEZSNTAwX01BSk9SX05PTkUsIEZSNTUwX01BSk9SX01fNCB9IH0KICAgfSwKIC8qIG1xbWFjeGhzJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEFDQzQwU2sgKi8KICAgewogICAgIEZSVl9JTlNOX01RTUFDWEhTLCAibXFtYWN4aHMiLCAibXFtYWN4aHMiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlI0MDApfCgxPDxNQUNIX0ZSNTUwKSwgVU5JVF9NRFVBTEFDQywgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9OT05FLCBGUjU1MF9NQUpPUl9NXzQgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSNDAwKXwoMTw8TUFDSF9GUjQ1MCl8KDE8PE1BQ0hfRlI1NTApLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fNCwgRlI1MDBfTUFKT1JfTk9ORSwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogbWNweHJzJHBhY2sgJEZSaW50aSwkRlJpbnRqLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NQ1BYUlMsICJtY3B4cnMiLCAibWNweHJzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogbWNweHJ1JHBhY2sgJEZSaW50aSwkRlJpbnRqLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NQ1BYUlUsICJtY3B4cnUiLCAibWNweHJ1IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogbWNweGlzJHBhY2sgJEZSaW50aSwkRlJpbnRqLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NQ1BYSVMsICJtY3B4aXMiLCAibWNweGlzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogbWNweGl1JHBhY2sgJEZSaW50aSwkRlJpbnRqLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NQ1BYSVUsICJtY3B4aXUiLCAibWNweGl1IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogY21jcHhycyRwYWNrICRGUmludGksJEZSaW50aiwkQUNDNDBTaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTUNQWFJTLCAiY21jcHhycyIsICJjbWNweHJzIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogY21jcHhydSRwYWNrICRGUmludGksJEZSaW50aiwkQUNDNDBTaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTUNQWFJVLCAiY21jcHhydSIsICJjbWNweHJ1IiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogY21jcHhpcyRwYWNrICRGUmludGksJEZSaW50aiwkQUNDNDBTaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTUNQWElTLCAiY21jcHhpcyIsICJjbWNweGlzIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogY21jcHhpdSRwYWNrICRGUmludGksJEZSaW50aiwkQUNDNDBTaywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTUNQWElVLCAiY21jcHhpdSIsICJjbWNweGl1IiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogbXFjcHhycyRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NUUNQWFJTLCAibXFjcHhycyIsICJtcWNweHJzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzQsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogbXFjcHhydSRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NUUNQWFJVLCAibXFjcHhydSIsICJtcWNweHJ1IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzQsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogbXFjcHhpcyRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NUUNQWElTLCAibXFjcHhpcyIsICJtcWNweGlzIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzQsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogbXFjcHhpdSRwYWNrICRGUmludGlldmVuLCRGUmludGpldmVuLCRBQ0M0MFNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NUUNQWElVLCAibXFjcHhpdSIsICJtcWNweGl1IiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzQsIEZSNTAwX01BSk9SX01fNCwgRlI1NTBfTUFKT1JfTV80IH0gfQogICB9LAogLyogbWV4cGRodyRwYWNrICRGUmludGksJHU2LCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX01FWFBESFcsICJtZXhwZGh3IiwgIm1leHBkaHciLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogY21leHBkaHckcGFjayAkRlJpbnRpLCR1NiwkRlJpbnRrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNRVhQREhXLCAiY21leHBkaHciLCAiY21leHBkaHciLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbWV4cGRoZCRwYWNrICRGUmludGksJHU2LCRGUmludGtldmVuICovCiAgIHsKICAgICBGUlZfSU5TTl9NRVhQREhELCAibWV4cGRoZCIsICJtZXhwZGhkIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMiwgRlI0NTBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KICAgfSwKIC8qIGNtZXhwZGhkJHBhY2sgJEZSaW50aSwkdTYsJEZSaW50a2V2ZW4sJENDaSwkY29uZCAqLwogICB7CiAgICAgRlJWX0lOU05fQ01FWFBESEQsICJjbWV4cGRoZCIsICJjbWV4cGRoZCIsIDMyLAotICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CiAgIH0sCiAvKiBtcGFja2gkcGFjayAkRlJpbnRpLCRGUmludGosJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTVBBQ0tILCAibXBhY2toIiwgIm1wYWNraCIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CiAgIH0sCiAvKiBtZHBhY2toJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEZSaW50a2V2ZW4gKi8KICAgewogICAgIEZSVl9JTlNOX01EUEFDS0gsICJtZHBhY2toIiwgIm1kcGFja2giLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzUsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fNSwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbXVucGFja2gkcGFjayAkRlJpbnRpLCRGUmludGtldmVuICovCiAgIHsKICAgICBGUlZfSU5TTl9NVU5QQUNLSCwgIm11bnBhY2toIiwgIm11bnBhY2toIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMiwgRlI0NTBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KICAgfSwKIC8qIG1kdW5wYWNraCRwYWNrICRGUmludGlldmVuLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX01EVU5QQUNLSCwgIm1kdW5wYWNraCIsICJtZHVucGFja2giLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfTV83LCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9TSU1QTEUpfCgxPDxNQUNIX1RPTUNBVCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9NXzcsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBtYnRvaCRwYWNrICRGUmludGosJEZSaW50a2V2ZW4gKi8KICAgewogICAgIEZSVl9JTlNOX01CVE9ILCAibWJ0b2giLCAibWJ0b2giLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogY21idG9oJHBhY2sgJEZSaW50aiwkRlJpbnRrZXZlbiwkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTUJUT0gsICJjbWJ0b2giLCAiY21idG9oIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CisgICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMiwgRlI0NTBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KICAgfSwKIC8qIG1odG9iJHBhY2sgJEZSaW50amV2ZW4sJEZSaW50ayAqLwogICB7CiAgICAgRlJWX0lOU05fTUhUT0IsICJtaHRvYiIsICJtaHRvYiIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9NXzIsIEZSNDUwX01BSk9SX01fMiwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CiAgIH0sCiAvKiBjbWh0b2IkcGFjayAkRlJpbnRqZXZlbiwkRlJpbnRrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIEZSVl9JTlNOX0NNSFRPQiwgImNtaHRvYiIsICJjbWh0b2IiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8yLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8yLCBGUjQ1MF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbWJ0b2hlJHBhY2sgJEZSaW50aiwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NQlRPSEUsICJtYnRvaGUiLCAibWJ0b2hlIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX01fNywgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfTV83LCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogY21idG9oZSRwYWNrICRGUmludGosJEZSaW50aywkQ0NpLCRjb25kICovCiAgIHsKICAgICBGUlZfSU5TTl9DTUJUT0hFLCAiY21idG9oZSIsICJjbWJ0b2hlIiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX01fNywgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCksIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfTV83LCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogbW5vcCRwYWNrICovCiAgIHsKICAgICBGUlZfSU5TTl9NTk9QLCAibW5vcCIsICJtbm9wIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNQUxMLCBGUjQwMF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8xIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTV8xIH0gfQogICB9LAogLyogbWNscmFjYyRwYWNrICRBQ0M0MFNrLCRBMCAqLwogICB7CiAgICAgRlJWX0lOU05fTUNMUkFDQ18wLCAibWNscmFjYy0wIiwgIm1jbHJhY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzMsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX01fMywgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbWNscmFjYyRwYWNrICRBQ0M0MFNrLCRBMSAqLwogICB7CiAgICAgRlJWX0lOU05fTUNMUkFDQ18xLCAibWNscmFjYy0xIiwgIm1jbHJhY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfTUNMUkFDQ18xLCBGUjQwMF9NQUpPUl9NXzIsIEZSNTAwX01BSk9SX01fNiwgRlI1NTBfTUFKT1JfTV8zIH0gfQorICAgIHsgMCwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9NQ0xSQUNDXzEsIEZSNDAwX01BSk9SX01fMiwgRlI0NTBfTUFKT1JfTV80LCBGUjUwMF9NQUpPUl9NXzYsIEZSNTUwX01BSk9SX01fMyB9IH0KICAgfSwKIC8qIG1yZGFjYyRwYWNrICRBQ0M0MFNpLCRGUmludGsgKi8KICAgewogICAgIEZSVl9JTlNOX01SREFDQywgIm1yZGFjYyIsICJtcmRhY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzUsIEZSNTAwX01BSk9SX01fMiwgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbXJkYWNjZyRwYWNrICRBQ0NHaSwkRlJpbnRrICovCiAgIHsKICAgICBGUlZfSU5TTl9NUkRBQ0NHLCAibXJkYWNjZyIsICJtcmRhY2NnIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8yLCBGUjU1MF9NQUpPUl9NXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMSwgRlI0NTBfTUFKT1JfTV81LCBGUjUwMF9NQUpPUl9NXzIsIEZSNTUwX01BSk9SX01fMyB9IH0KICAgfSwKIC8qIG13dGFjYyRwYWNrICRGUmludGksJEFDQzQwU2sgKi8KICAgewogICAgIEZSVl9JTlNOX01XVEFDQywgIm13dGFjYyIsICJtd3RhY2MiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjUwMF9NQUpPUl9NXzMsIEZSNTUwX01BSk9SX01fMyB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTV8xLCBGUjQ1MF9NQUpPUl9NXzMsIEZSNTAwX01BSk9SX01fMywgRlI1NTBfTUFKT1JfTV8zIH0gfQogICB9LAogLyogbXd0YWNjZyRwYWNrICRGUmludGksJEFDQ0drICovCiAgIHsKICAgICBGUlZfSU5TTl9NV1RBQ0NHLCAibXd0YWNjZyIsICJtd3RhY2NnIiwgMzIsCi0gICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMSwgRlI1MDBfTUFKT1JfTV8zLCBGUjU1MF9NQUpPUl9NXzMgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX01fMSwgRlI0NTBfTUFKT1JfTV8zLCBGUjUwMF9NQUpPUl9NXzMsIEZSNTUwX01BSk9SX01fMyB9IH0KICAgfSwKIC8qIG1jb3AxJHBhY2sgJEZSaSwkRlJqLCRGUmsgKi8KICAgewogICAgIEZSVl9JTlNOX01DT1AxLCAibWNvcDEiLCAibWNvcDEiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX0ZSViksIFVOSVRfRk0wMSwgRlI0MDBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfTV8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogbWNvcDIkcGFjayAkRlJpLCRGUmosJEZSayAqLwogICB7CiAgICAgRlJWX0lOU05fTUNPUDIsICJtY29wMiIsICJtY29wMiIsIDMyLAotICAgIHsgMCwgeyAoMTw8TUFDSF9GUlYpLCBVTklUX0ZNMDEsIEZSNDAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX01fMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDAsIHsgKDE8PE1BQ0hfRlJWKSwgVU5JVF9GTTAxLCBGUjQwMF9NQUpPUl9OT05FLCBGUjQ1MF9NQUpPUl9OT05FLCBGUjUwMF9NQUpPUl9NXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBmbm9wJHBhY2sgKi8KICAgewogICAgIEZSVl9JTlNOX0ZOT1AsICJmbm9wIiwgImZub3AiLCAzMiwKLSAgICB7IDAsIHsgKDE8PE1BQ0hfU0lNUExFKXwoMTw8TUFDSF9UT01DQVQpfCgxPDxNQUNIX0ZSNTAwKXwoMTw8TUFDSF9GUjU1MCl8KDE8PE1BQ0hfRlJWKSwgVU5JVF9GTUFMTCwgRlI0MDBfTUFKT1JfTk9ORSwgRlI1MDBfTUFKT1JfRl84LCBGUjU1MF9NQUpPUl9GXzEgfSB9CisgICAgeyAwLCB7ICgxPDxNQUNIX1NJTVBMRSl8KDE8PE1BQ0hfVE9NQ0FUKXwoMTw8TUFDSF9GUjUwMCl8KDE8PE1BQ0hfRlI1NTApfCgxPDxNQUNIX0ZSViksIFVOSVRfRk1BTEwsIEZSNDAwX01BSk9SX05PTkUsIEZSNDUwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0ZfOCwgRlI1NTBfTUFKT1JfRl8xIH0gfQogICB9LAogfTsKIApkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9mcnYtZGVzYy5oIGIvb3Bjb2Rlcy9mcnYtZGVzYy5oCmluZGV4IGY0NmMzZjkuLjVhMTFmOGQgMTAwNjQ0Ci0tLSBhL29wY29kZXMvZnJ2LWRlc2MuaAorKysgYi9vcGNvZGVzL2Zydi1kZXNjLmgKQEAgLTI5Miw3ICsyOTIsOCBAQAogICwgSF9TUFJfRUlSMjMgPSA2NjMsIEhfU1BSX0VJUjI0ID0gNjY0LCBIX1NQUl9FSVIyNSA9IDY2NSwgSF9TUFJfRUlSMjYgPSA2NjYKICAsIEhfU1BSX0VJUjI3ID0gNjY3LCBIX1NQUl9FSVIyOCA9IDY2OCwgSF9TUFJfRUlSMjkgPSA2NjksIEhfU1BSX0VJUjMwID0gNjcwCiAgLCBIX1NQUl9FSVIzMSA9IDY3MSwgSF9TUFJfRVNGUjAgPSA2NzIsIEhfU1BSX0VTRlIxID0gNjczLCBIX1NQUl9TUjAgPSA3NjgKLSAsIEhfU1BSX1NSMSA9IDc2OSwgSF9TUFJfU1IyID0gNzcwLCBIX1NQUl9TUjMgPSA3NzEsIEhfU1BSX0ZTUjAgPSAxMDI0CisgLCBIX1NQUl9TUjEgPSA3NjksIEhfU1BSX1NSMiA9IDc3MCwgSF9TUFJfU1IzID0gNzcxLCBIX1NQUl9TQ1IwID0gODMyCisgLCBIX1NQUl9TQ1IxID0gODMzLCBIX1NQUl9TQ1IyID0gODM0LCBIX1NQUl9TQ1IzID0gODM1LCBIX1NQUl9GU1IwID0gMTAyNAogICwgSF9TUFJfRlNSMSA9IDEwMjUsIEhfU1BSX0ZTUjIgPSAxMDI2LCBIX1NQUl9GU1IzID0gMTAyNywgSF9TUFJfRlNSNCA9IDEwMjgKICAsIEhfU1BSX0ZTUjUgPSAxMDI5LCBIX1NQUl9GU1I2ID0gMTAzMCwgSF9TUFJfRlNSNyA9IDEwMzEsIEhfU1BSX0ZTUjggPSAxMDMyCiAgLCBIX1NQUl9GU1I5ID0gMTAzMywgSF9TUFJfRlNSMTAgPSAxMDM0LCBIX1NQUl9GU1IxMSA9IDEwMzUsIEhfU1BSX0ZTUjEyID0gMTAzNgpAQCAtNDU0LDE5ICs0NTUsMjIgQEAKICAsIEhfU1BSX0RBTVBSNTUgPSAxOTExLCBIX1NQUl9EQU1QUjU2ID0gMTkxMiwgSF9TUFJfREFNUFI1NyA9IDE5MTMsIEhfU1BSX0RBTVBSNTggPSAxOTE0CiAgLCBIX1NQUl9EQU1QUjU5ID0gMTkxNSwgSF9TUFJfREFNUFI2MCA9IDE5MTYsIEhfU1BSX0RBTVBSNjEgPSAxOTE3LCBIX1NQUl9EQU1QUjYyID0gMTkxOAogICwgSF9TUFJfREFNUFI2MyA9IDE5MTksIEhfU1BSX0FNQ1IgPSAxOTIwLCBIX1NQUl9TVEJBUiA9IDE5MjEsIEhfU1BSX01NQ1IgPSAxOTIyCi0gLCBIX1NQUl9EQ1IgPSAyMDQ4LCBIX1NQUl9CUlIgPSAyMDQ5LCBIX1NQUl9OTUFSID0gMjA1MCwgSF9TUFJfSUJBUjAgPSAyMDUyCi0gLCBIX1NQUl9JQkFSMSA9IDIwNTMsIEhfU1BSX0lCQVIyID0gMjA1NCwgSF9TUFJfSUJBUjMgPSAyMDU1LCBIX1NQUl9EQkFSMCA9IDIwNTYKLSAsIEhfU1BSX0RCQVIxID0gMjA1NywgSF9TUFJfREJBUjIgPSAyMDU4LCBIX1NQUl9EQkFSMyA9IDIwNTksIEhfU1BSX0RCRFIwMCA9IDIwNjAKLSAsIEhfU1BSX0RCRFIwMSA9IDIwNjEsIEhfU1BSX0RCRFIwMiA9IDIwNjIsIEhfU1BSX0RCRFIwMyA9IDIwNjMsIEhfU1BSX0RCRFIxMCA9IDIwNjQKLSAsIEhfU1BSX0RCRFIxMSA9IDIwNjUsIEhfU1BSX0RCRFIxMiA9IDIwNjYsIEhfU1BSX0RCRFIxMyA9IDIwNjcsIEhfU1BSX0RCRFIyMCA9IDIwNjgKLSAsIEhfU1BSX0RCRFIyMSA9IDIwNjksIEhfU1BSX0RCRFIyMiA9IDIwNzAsIEhfU1BSX0RCRFIyMyA9IDIwNzEsIEhfU1BSX0RCRFIzMCA9IDIwNzIKLSAsIEhfU1BSX0RCRFIzMSA9IDIwNzMsIEhfU1BSX0RCRFIzMiA9IDIwNzQsIEhfU1BSX0RCRFIzMyA9IDIwNzUsIEhfU1BSX0RCTVIwMCA9IDIwNzYKLSAsIEhfU1BSX0RCTVIwMSA9IDIwNzcsIEhfU1BSX0RCTVIwMiA9IDIwNzgsIEhfU1BSX0RCTVIwMyA9IDIwNzksIEhfU1BSX0RCTVIxMCA9IDIwODAKLSAsIEhfU1BSX0RCTVIxMSA9IDIwODEsIEhfU1BSX0RCTVIxMiA9IDIwODIsIEhfU1BSX0RCTVIxMyA9IDIwODMsIEhfU1BSX0RCTVIyMCA9IDIwODQKLSAsIEhfU1BSX0RCTVIyMSA9IDIwODUsIEhfU1BSX0RCTVIyMiA9IDIwODYsIEhfU1BSX0RCTVIyMyA9IDIwODcsIEhfU1BSX0RCTVIzMCA9IDIwODgKLSAsIEhfU1BSX0RCTVIzMSA9IDIwODksIEhfU1BSX0RCTVIzMiA9IDIwOTAsIEhfU1BSX0RCTVIzMyA9IDIwOTEsIEhfU1BSX0NQQ0ZSID0gMjA5MgotICwgSF9TUFJfQ1BDUiA9IDIwOTMsIEhfU1BSX0NQU1IgPSAyMDk0LCBIX1NQUl9DUEVTUjAgPSAyMDk2LCBIX1NQUl9DUEVTUjEgPSAyMDk3Ci0gLCBIX1NQUl9DUEVNUjAgPSAyMDk4LCBIX1NQUl9DUEVNUjEgPSAyMDk5LCBIX1NQUl9JSFNSOCA9IDM4NDgKKyAsIEhfU1BSX0lBTVZSMSA9IDE5MjUsIEhfU1BSX0RBTVZSMSA9IDE5MjcsIEhfU1BSX0NYTlIgPSAxOTM2LCBIX1NQUl9UVEJSID0gMTkzNworICwgSF9TUFJfVFBMUiA9IDE5MzgsIEhfU1BSX1RQUFIgPSAxOTM5LCBIX1NQUl9UUFhSID0gMTk0MCwgSF9TUFJfVElNRVJIID0gMTk1MgorICwgSF9TUFJfVElNRVJMID0gMTk1MywgSF9TUFJfVElNRVJEID0gMTk1NCwgSF9TUFJfRENSID0gMjA0OCwgSF9TUFJfQlJSID0gMjA0OQorICwgSF9TUFJfTk1BUiA9IDIwNTAsIEhfU1BSX0JUQlIgPSAyMDUxLCBIX1NQUl9JQkFSMCA9IDIwNTIsIEhfU1BSX0lCQVIxID0gMjA1MworICwgSF9TUFJfSUJBUjIgPSAyMDU0LCBIX1NQUl9JQkFSMyA9IDIwNTUsIEhfU1BSX0RCQVIwID0gMjA1NiwgSF9TUFJfREJBUjEgPSAyMDU3CisgLCBIX1NQUl9EQkFSMiA9IDIwNTgsIEhfU1BSX0RCQVIzID0gMjA1OSwgSF9TUFJfREJEUjAwID0gMjA2MCwgSF9TUFJfREJEUjAxID0gMjA2MQorICwgSF9TUFJfREJEUjAyID0gMjA2MiwgSF9TUFJfREJEUjAzID0gMjA2MywgSF9TUFJfREJEUjEwID0gMjA2NCwgSF9TUFJfREJEUjExID0gMjA2NQorICwgSF9TUFJfREJEUjEyID0gMjA2NiwgSF9TUFJfREJEUjEzID0gMjA2NywgSF9TUFJfREJEUjIwID0gMjA2OCwgSF9TUFJfREJEUjIxID0gMjA2OQorICwgSF9TUFJfREJEUjIyID0gMjA3MCwgSF9TUFJfREJEUjIzID0gMjA3MSwgSF9TUFJfREJEUjMwID0gMjA3MiwgSF9TUFJfREJEUjMxID0gMjA3MworICwgSF9TUFJfREJEUjMyID0gMjA3NCwgSF9TUFJfREJEUjMzID0gMjA3NSwgSF9TUFJfREJNUjAwID0gMjA3NiwgSF9TUFJfREJNUjAxID0gMjA3NworICwgSF9TUFJfREJNUjAyID0gMjA3OCwgSF9TUFJfREJNUjAzID0gMjA3OSwgSF9TUFJfREJNUjEwID0gMjA4MCwgSF9TUFJfREJNUjExID0gMjA4MQorICwgSF9TUFJfREJNUjEyID0gMjA4MiwgSF9TUFJfREJNUjEzID0gMjA4MywgSF9TUFJfREJNUjIwID0gMjA4NCwgSF9TUFJfREJNUjIxID0gMjA4NQorICwgSF9TUFJfREJNUjIyID0gMjA4NiwgSF9TUFJfREJNUjIzID0gMjA4NywgSF9TUFJfREJNUjMwID0gMjA4OCwgSF9TUFJfREJNUjMxID0gMjA4OQorICwgSF9TUFJfREJNUjMyID0gMjA5MCwgSF9TUFJfREJNUjMzID0gMjA5MSwgSF9TUFJfQ1BDRlIgPSAyMDkyLCBIX1NQUl9DUENSID0gMjA5MworICwgSF9TUFJfQ1BTUiA9IDIwOTQsIEhfU1BSX0NQRVNSMCA9IDIwOTYsIEhfU1BSX0NQRVNSMSA9IDIwOTcsIEhfU1BSX0NQRU1SMCA9IDIwOTgKKyAsIEhfU1BSX0NQRU1SMSA9IDIwOTksIEhfU1BSX0lIU1I4ID0gMzg0OAogfSBTUFJfTkFNRVM7CiAKIC8qIEVudW0gZGVjbGFyYXRpb24gZm9yIC4gICovCkBAIC01MzUsNyArNTM5LDggQEAKIC8qIEVudW0gZGVjbGFyYXRpb24gZm9yIG1hY2hpbmUgdHlwZSBzZWxlY3Rpb24uICAqLwogdHlwZWRlZiBlbnVtIG1hY2hfYXR0ciB7CiAgIE1BQ0hfQkFTRSwgTUFDSF9GUlYsIE1BQ0hfRlI1NTAsIE1BQ0hfRlI1MDAKLSAsIE1BQ0hfRlI0MDAsIE1BQ0hfVE9NQ0FULCBNQUNIX1NJTVBMRSwgTUFDSF9NQVgKKyAsIE1BQ0hfRlI0NTAsIE1BQ0hfRlI0MDAsIE1BQ0hfVE9NQ0FULCBNQUNIX1NJTVBMRQorICwgTUFDSF9NQVgKIH0gTUFDSF9BVFRSOwogCiAvKiBFbnVtIGRlY2xhcmF0aW9uIGZvciBpbnN0cnVjdGlvbiBzZXQgc2VsZWN0aW9uLiAgKi8KQEAgLTU1MSw3ICs1NTYsNyBAQAogICwgVU5JVF9GTUFMTCwgVU5JVF9GTUxPVywgVU5JVF9CMCwgVU5JVF9CMQogICwgVU5JVF9CMDEsIFVOSVRfQywgVU5JVF9NVUxUX0RJViwgVU5JVF9JQUNDCiAgLCBVTklUX0xPQUQsIFVOSVRfU1RPUkUsIFVOSVRfU0NBTiwgVU5JVF9EQ1BMCi0gLCBVTklUX01EVUFMQUNDLCBVTklUX01DTFJBQ0NfMSwgVU5JVF9OVU1fVU5JVFMKKyAsIFVOSVRfTURVQUxBQ0MsIFVOSVRfTURDVVRTU0ksIFVOSVRfTUNMUkFDQ18xLCBVTklUX05VTV9VTklUUwogfSBVTklUX0FUVFI7CiAKIC8qIEVudW0gZGVjbGFyYXRpb24gZm9yIGZyNDAwIG1ham9yIGluc24gY2F0ZWdvcmllcy4gICovCkBAIC01NjIsNiArNTY3LDE1IEBACiAgLCBGUjQwMF9NQUpPUl9DXzEsIEZSNDAwX01BSk9SX0NfMiwgRlI0MDBfTUFKT1JfTV8xLCBGUjQwMF9NQUpPUl9NXzIKIH0gRlI0MDBfTUFKT1JfQVRUUjsKIAorLyogRW51bSBkZWNsYXJhdGlvbiBmb3IgZnI0NTAgbWFqb3IgaW5zbiBjYXRlZ29yaWVzLiAgKi8KK3R5cGVkZWYgZW51bSBmcjQ1MF9tYWpvcl9hdHRyIHsKKyAgRlI0NTBfTUFKT1JfTk9ORSwgRlI0NTBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzIsIEZSNDUwX01BSk9SX0lfMworICwgRlI0NTBfTUFKT1JfSV80LCBGUjQ1MF9NQUpPUl9JXzUsIEZSNDUwX01BSk9SX0JfMSwgRlI0NTBfTUFKT1JfQl8yCisgLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNDUwX01BSk9SX0JfNCwgRlI0NTBfTUFKT1JfQl81LCBGUjQ1MF9NQUpPUl9CXzYKKyAsIEZSNDUwX01BSk9SX0NfMSwgRlI0NTBfTUFKT1JfQ18yLCBGUjQ1MF9NQUpPUl9NXzEsIEZSNDUwX01BSk9SX01fMgorICwgRlI0NTBfTUFKT1JfTV8zLCBGUjQ1MF9NQUpPUl9NXzQsIEZSNDUwX01BSk9SX01fNSwgRlI0NTBfTUFKT1JfTV82Cit9IEZSNDUwX01BSk9SX0FUVFI7CisKIC8qIEVudW0gZGVjbGFyYXRpb24gZm9yIGZyNTAwIG1ham9yIGluc24gY2F0ZWdvcmllcy4gICovCiB0eXBlZGVmIGVudW0gZnI1MDBfbWFqb3JfYXR0ciB7CiAgIEZSNTAwX01BSk9SX05PTkUsIEZSNTAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8yLCBGUjUwMF9NQUpPUl9JXzMKQEAgLTYyMywxNSArNjM3LDE3IEBACiAgLCBGUlZfRl9DQ09ORCwgRlJWX0ZfSElOVCwgRlJWX0ZfTEksIEZSVl9GX0xPQ0sKICAsIEZSVl9GX0RFQlVHLCBGUlZfRl9BLCBGUlZfRl9BRSwgRlJWX0ZfU1BSX0gKICAsIEZSVl9GX1NQUl9MLCBGUlZfRl9TUFIsIEZSVl9GX0xBQkVMMTYsIEZSVl9GX0xBQkVMSDYKLSAsIEZSVl9GX0xBQkVMTDE4LCBGUlZfRl9MQUJFTDI0LCBGUlZfRl9JQ0NJXzFfTlVMTCwgRlJWX0ZfSUNDSV8yX05VTEwKLSAsIEZSVl9GX0lDQ0lfM19OVUxMLCBGUlZfRl9GQ0NJXzFfTlVMTCwgRlJWX0ZfRkNDSV8yX05VTEwsIEZSVl9GX0ZDQ0lfM19OVUxMCi0gLCBGUlZfRl9SU19OVUxMLCBGUlZfRl9HUklfTlVMTCwgRlJWX0ZfR1JKX05VTEwsIEZSVl9GX0dSS19OVUxMCi0gLCBGUlZfRl9GUklfTlVMTCwgRlJWX0ZfRlJKX05VTEwsIEZSVl9GX0FDQ0pfTlVMTCwgRlJWX0ZfUkRfTlVMTAotICwgRlJWX0ZfQ09ORF9OVUxMLCBGUlZfRl9DQ09ORF9OVUxMLCBGUlZfRl9TMTJfTlVMTCwgRlJWX0ZfTEFCRUwxNl9OVUxMCi0gLCBGUlZfRl9NSVNDX05VTExfMSwgRlJWX0ZfTUlTQ19OVUxMXzIsIEZSVl9GX01JU0NfTlVMTF8zLCBGUlZfRl9NSVNDX05VTExfNAotICwgRlJWX0ZfTUlTQ19OVUxMXzUsIEZSVl9GX01JU0NfTlVMTF82LCBGUlZfRl9NSVNDX05VTExfNywgRlJWX0ZfTUlTQ19OVUxMXzgKLSAsIEZSVl9GX01JU0NfTlVMTF85LCBGUlZfRl9NSVNDX05VTExfMTAsIEZSVl9GX01JU0NfTlVMTF8xMSwgRlJWX0ZfTElfT0ZGCi0gLCBGUlZfRl9MSV9PTiwgRlJWX0ZfTUFYCisgLCBGUlZfRl9MQUJFTEwxOCwgRlJWX0ZfTEFCRUwyNCwgRlJWX0ZfTFJBRSwgRlJWX0ZfTFJBRAorICwgRlJWX0ZfTFJBUywgRlJWX0ZfVExCUFJPUFgsIEZSVl9GX1RMQlBSTCwgRlJWX0ZfSUNDSV8xX05VTEwKKyAsIEZSVl9GX0lDQ0lfMl9OVUxMLCBGUlZfRl9JQ0NJXzNfTlVMTCwgRlJWX0ZfRkNDSV8xX05VTEwsIEZSVl9GX0ZDQ0lfMl9OVUxMCisgLCBGUlZfRl9GQ0NJXzNfTlVMTCwgRlJWX0ZfUlNfTlVMTCwgRlJWX0ZfR1JJX05VTEwsIEZSVl9GX0dSSl9OVUxMCisgLCBGUlZfRl9HUktfTlVMTCwgRlJWX0ZfRlJJX05VTEwsIEZSVl9GX0ZSSl9OVUxMLCBGUlZfRl9BQ0NKX05VTEwKKyAsIEZSVl9GX1JEX05VTEwsIEZSVl9GX0NPTkRfTlVMTCwgRlJWX0ZfQ0NPTkRfTlVMTCwgRlJWX0ZfUzEyX05VTEwKKyAsIEZSVl9GX0xBQkVMMTZfTlVMTCwgRlJWX0ZfTUlTQ19OVUxMXzEsIEZSVl9GX01JU0NfTlVMTF8yLCBGUlZfRl9NSVNDX05VTExfMworICwgRlJWX0ZfTUlTQ19OVUxMXzQsIEZSVl9GX01JU0NfTlVMTF81LCBGUlZfRl9NSVNDX05VTExfNiwgRlJWX0ZfTUlTQ19OVUxMXzcKKyAsIEZSVl9GX01JU0NfTlVMTF84LCBGUlZfRl9NSVNDX05VTExfOSwgRlJWX0ZfTUlTQ19OVUxMXzEwLCBGUlZfRl9NSVNDX05VTExfMTEKKyAsIEZSVl9GX0xSQV9OVUxMLCBGUlZfRl9UTEJQUl9OVUxMLCBGUlZfRl9MSV9PRkYsIEZSVl9GX0xJX09OCisgLCBGUlZfRl9NQVgKIH0gSUZJRUxEX1RZUEU7CiAKICNkZWZpbmUgTUFYX0lGTEQgKChpbnQpIEZSVl9GX01BWCkKQEAgLTY5NiwxNiArNzEyLDE3IEBACiAgLCBGUlZfT1BFUkFORF9VNiwgRlJWX09QRVJBTkRfUzUsIEZSVl9PUEVSQU5EX0NPTkQsIEZSVl9PUEVSQU5EX0NDT05ECiAgLCBGUlZfT1BFUkFORF9ISU5ULCBGUlZfT1BFUkFORF9ISU5UX1RBS0VOLCBGUlZfT1BFUkFORF9ISU5UX05PVF9UQUtFTiwgRlJWX09QRVJBTkRfTEkKICAsIEZSVl9PUEVSQU5EX0xPQ0ssIEZSVl9PUEVSQU5EX0RFQlVHLCBGUlZfT1BFUkFORF9BRSwgRlJWX09QRVJBTkRfTEFCRUwxNgotICwgRlJWX09QRVJBTkRfTEFCRUwyNCwgRlJWX09QRVJBTkRfQTAsIEZSVl9PUEVSQU5EX0ExLCBGUlZfT1BFUkFORF9GUklOVElFVkVOCi0gLCBGUlZfT1BFUkFORF9GUklOVEpFVkVOLCBGUlZfT1BFUkFORF9GUklOVEtFVkVOLCBGUlZfT1BFUkFORF9EMTIsIEZSVl9PUEVSQU5EX1MxMgotICwgRlJWX09QRVJBTkRfVTEyLCBGUlZfT1BFUkFORF9TUFIsIEZSVl9PUEVSQU5EX1VMTzE2LCBGUlZfT1BFUkFORF9TTE8xNgotICwgRlJWX09QRVJBTkRfVUhJMTYsIEZSVl9PUEVSQU5EX1BTUl9FU1IsIEZSVl9PUEVSQU5EX1BTUl9TLCBGUlZfT1BFUkFORF9QU1JfUFMKLSAsIEZSVl9PUEVSQU5EX1BTUl9FVCwgRlJWX09QRVJBTkRfQlBTUl9CUywgRlJWX09QRVJBTkRfQlBTUl9CRVQsIEZSVl9PUEVSQU5EX1RCUl9UQkEKLSAsIEZSVl9PUEVSQU5EX1RCUl9UVCwgRlJWX09QRVJBTkRfTUFYCisgLCBGUlZfT1BFUkFORF9MQUJFTDI0LCBGUlZfT1BFUkFORF9MUkFFLCBGUlZfT1BFUkFORF9MUkFELCBGUlZfT1BFUkFORF9MUkFTCisgLCBGUlZfT1BFUkFORF9UTEJQUk9QWCwgRlJWX09QRVJBTkRfVExCUFJMLCBGUlZfT1BFUkFORF9BMCwgRlJWX09QRVJBTkRfQTEKKyAsIEZSVl9PUEVSQU5EX0ZSSU5USUVWRU4sIEZSVl9PUEVSQU5EX0ZSSU5USkVWRU4sIEZSVl9PUEVSQU5EX0ZSSU5US0VWRU4sIEZSVl9PUEVSQU5EX0QxMgorICwgRlJWX09QRVJBTkRfUzEyLCBGUlZfT1BFUkFORF9VMTIsIEZSVl9PUEVSQU5EX1NQUiwgRlJWX09QRVJBTkRfVUxPMTYKKyAsIEZSVl9PUEVSQU5EX1NMTzE2LCBGUlZfT1BFUkFORF9VSEkxNiwgRlJWX09QRVJBTkRfUFNSX0VTUiwgRlJWX09QRVJBTkRfUFNSX1MKKyAsIEZSVl9PUEVSQU5EX1BTUl9QUywgRlJWX09QRVJBTkRfUFNSX0VULCBGUlZfT1BFUkFORF9CUFNSX0JTLCBGUlZfT1BFUkFORF9CUFNSX0JFVAorICwgRlJWX09QRVJBTkRfVEJSX1RCQSwgRlJWX09QRVJBTkRfVEJSX1RULCBGUlZfT1BFUkFORF9NQVgKIH0gQ0dFTl9PUEVSQU5EX1RZUEU7CiAKIC8qIE51bWJlciBvZiBvcGVyYW5kcyB0eXBlcy4gICovCi0jZGVmaW5lIE1BWF9PUEVSQU5EUyA4MQorI2RlZmluZSBNQVhfT1BFUkFORFMgODYKIAogLyogTWF4aW11bSBudW1iZXIgb2Ygb3BlcmFuZHMgcmVmZXJlbmNlZCBieSBhbnkgaW5zbi4gICovCiAjZGVmaW5lIE1BWF9PUEVSQU5EX0lOU1RBTkNFUyA4CkBAIC03MTcsOSArNzM0LDEwIEBACiAgIENHRU5fSU5TTl9BTElBUywgQ0dFTl9JTlNOX1ZJUlRVQUwsIENHRU5fSU5TTl9VTkNPTkRfQ1RJLCBDR0VOX0lOU05fQ09ORF9DVEkKICAsIENHRU5fSU5TTl9TS0lQX0NUSSwgQ0dFTl9JTlNOX0RFTEFZX1NMT1QsIENHRU5fSU5TTl9SRUxBWEFCTEUsIENHRU5fSU5TTl9SRUxBWEVECiAgLCBDR0VOX0lOU05fTk9fRElTLCBDR0VOX0lOU05fUEJCLCBDR0VOX0lOU05fUFJJVklMRUdFRCwgQ0dFTl9JTlNOX05PTl9FWENFUFRJTkcKLSAsIENHRU5fSU5TTl9DT05ESVRJT05BTCwgQ0dFTl9JTlNOX0ZSX0FDQ0VTUywgQ0dFTl9JTlNOX1BSRVNFUlZFX09WRiwgQ0dFTl9JTlNOX0VORF9CT09MUwotICwgQ0dFTl9JTlNOX1NUQVJUX05CT09MUyA9IDMxLCBDR0VOX0lOU05fTUFDSCwgQ0dFTl9JTlNOX1VOSVQsIENHRU5fSU5TTl9GUjQwMF9NQUpPUgotICwgQ0dFTl9JTlNOX0ZSNTAwX01BSk9SLCBDR0VOX0lOU05fRlI1NTBfTUFKT1IsIENHRU5fSU5TTl9FTkRfTkJPT0xTCisgLCBDR0VOX0lOU05fQ09ORElUSU9OQUwsIENHRU5fSU5TTl9GUl9BQ0NFU1MsIENHRU5fSU5TTl9QUkVTRVJWRV9PVkYsIENHRU5fSU5TTl9BVURJTworICwgQ0dFTl9JTlNOX0VORF9CT09MUywgQ0dFTl9JTlNOX1NUQVJUX05CT09MUyA9IDMxLCBDR0VOX0lOU05fTUFDSCwgQ0dFTl9JTlNOX1VOSVQKKyAsIENHRU5fSU5TTl9GUjQwMF9NQUpPUiwgQ0dFTl9JTlNOX0ZSNDUwX01BSk9SLCBDR0VOX0lOU05fRlI1MDBfTUFKT1IsIENHRU5fSU5TTl9GUjU1MF9NQUpPUgorICwgQ0dFTl9JTlNOX0VORF9OQk9PTFMKIH0gQ0dFTl9JTlNOX0FUVFI7CiAKIC8qIE51bWJlciBvZiBub24tYm9vbGVhbiBlbGVtZW50cyBpbiBjZ2VuX2luc25fYXR0ci4gICovCmRpZmYgLS1naXQgYS9vcGNvZGVzL2Zydi1kaXMuYyBiL29wY29kZXMvZnJ2LWRpcy5jCmluZGV4IGIwZjUxYmMuLjgxYWYzNDMgMTAwNjQ0Ci0tLSBhL29wY29kZXMvZnJ2LWRpcy5jCisrKyBiL29wY29kZXMvZnJ2LWRpcy5jCkBAIC0yODksNiArMjg5LDIxIEBACiAgICAgY2FzZSBGUlZfT1BFUkFORF9MSSA6CiAgICAgICBwcmludF9ub3JtYWwgKGNkLCBpbmZvLCBmaWVsZHMtPmZfTEksIDAsIHBjLCBsZW5ndGgpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBGUlZfT1BFUkFORF9MUkFEIDoKKyAgICAgIHByaW50X25vcm1hbCAoY2QsIGluZm8sIGZpZWxkcy0+Zl9MUkFELCAwLCBwYywgbGVuZ3RoKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfTFJBRSA6CisgICAgICBwcmludF9ub3JtYWwgKGNkLCBpbmZvLCBmaWVsZHMtPmZfTFJBRSwgMCwgcGMsIGxlbmd0aCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX0xSQVMgOgorICAgICAgcHJpbnRfbm9ybWFsIChjZCwgaW5mbywgZmllbGRzLT5mX0xSQVMsIDAsIHBjLCBsZW5ndGgpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGUlZfT1BFUkFORF9UTEJQUkwgOgorICAgICAgcHJpbnRfbm9ybWFsIChjZCwgaW5mbywgZmllbGRzLT5mX1RMQlBSTCwgMCwgcGMsIGxlbmd0aCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX1RMQlBST1BYIDoKKyAgICAgIHByaW50X25vcm1hbCAoY2QsIGluZm8sIGZpZWxkcy0+Zl9UTEJQUm9weCwgMCwgcGMsIGxlbmd0aCk7CisgICAgICBicmVhazsKICAgICBjYXNlIEZSVl9PUEVSQU5EX0FFIDoKICAgICAgIHByaW50X25vcm1hbCAoY2QsIGluZm8sIGZpZWxkcy0+Zl9hZSwgMHwoMTw8Q0dFTl9PUEVSQU5EX0hBU0hfUFJFRklYKSwgcGMsIGxlbmd0aCk7CiAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL29wY29kZXMvZnJ2LWlibGQuYyBiL29wY29kZXMvZnJ2LWlibGQuYwppbmRleCA1NjVmNGY0Li4wMzY4NmY4IDEwMDY0NAotLS0gYS9vcGNvZGVzL2Zydi1pYmxkLmMKKysrIGIvb3Bjb2Rlcy9mcnYtaWJsZC5jCkBAIC03MTMsNiArNzEzLDIxIEBACiAgICAgY2FzZSBGUlZfT1BFUkFORF9MSSA6CiAgICAgICBlcnJtc2cgPSBpbnNlcnRfbm9ybWFsIChjZCwgZmllbGRzLT5mX0xJLCAwLCAwLCAyNSwgMSwgMzIsIHRvdGFsX2xlbmd0aCwgYnVmZmVyKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfTFJBRCA6CisgICAgICBlcnJtc2cgPSBpbnNlcnRfbm9ybWFsIChjZCwgZmllbGRzLT5mX0xSQUQsIDAsIDAsIDQsIDEsIDMyLCB0b3RhbF9sZW5ndGgsIGJ1ZmZlcik7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX0xSQUUgOgorICAgICAgZXJybXNnID0gaW5zZXJ0X25vcm1hbCAoY2QsIGZpZWxkcy0+Zl9MUkFFLCAwLCAwLCA1LCAxLCAzMiwgdG90YWxfbGVuZ3RoLCBidWZmZXIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGUlZfT1BFUkFORF9MUkFTIDoKKyAgICAgIGVycm1zZyA9IGluc2VydF9ub3JtYWwgKGNkLCBmaWVsZHMtPmZfTFJBUywgMCwgMCwgMywgMSwgMzIsIHRvdGFsX2xlbmd0aCwgYnVmZmVyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfVExCUFJMIDoKKyAgICAgIGVycm1zZyA9IGluc2VydF9ub3JtYWwgKGNkLCBmaWVsZHMtPmZfVExCUFJMLCAwLCAwLCAyNSwgMSwgMzIsIHRvdGFsX2xlbmd0aCwgYnVmZmVyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfVExCUFJPUFggOgorICAgICAgZXJybXNnID0gaW5zZXJ0X25vcm1hbCAoY2QsIGZpZWxkcy0+Zl9UTEJQUm9weCwgMCwgMCwgMjgsIDMsIDMyLCB0b3RhbF9sZW5ndGgsIGJ1ZmZlcik7CisgICAgICBicmVhazsKICAgICBjYXNlIEZSVl9PUEVSQU5EX0FFIDoKICAgICAgIGVycm1zZyA9IGluc2VydF9ub3JtYWwgKGNkLCBmaWVsZHMtPmZfYWUsIDAsIDAsIDI1LCAxLCAzMiwgdG90YWxfbGVuZ3RoLCBidWZmZXIpOwogICAgICAgYnJlYWs7CkBAIC0xMDE2LDYgKzEwMzEsMjEgQEAKICAgICBjYXNlIEZSVl9PUEVSQU5EX0xJIDoKICAgICAgIGxlbmd0aCA9IGV4dHJhY3Rfbm9ybWFsIChjZCwgZXhfaW5mbywgaW5zbl92YWx1ZSwgMCwgMCwgMjUsIDEsIDMyLCB0b3RhbF9sZW5ndGgsIHBjLCAmIGZpZWxkcy0+Zl9MSSk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX0xSQUQgOgorICAgICAgbGVuZ3RoID0gZXh0cmFjdF9ub3JtYWwgKGNkLCBleF9pbmZvLCBpbnNuX3ZhbHVlLCAwLCAwLCA0LCAxLCAzMiwgdG90YWxfbGVuZ3RoLCBwYywgJiBmaWVsZHMtPmZfTFJBRCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX0xSQUUgOgorICAgICAgbGVuZ3RoID0gZXh0cmFjdF9ub3JtYWwgKGNkLCBleF9pbmZvLCBpbnNuX3ZhbHVlLCAwLCAwLCA1LCAxLCAzMiwgdG90YWxfbGVuZ3RoLCBwYywgJiBmaWVsZHMtPmZfTFJBRSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX0xSQVMgOgorICAgICAgbGVuZ3RoID0gZXh0cmFjdF9ub3JtYWwgKGNkLCBleF9pbmZvLCBpbnNuX3ZhbHVlLCAwLCAwLCAzLCAxLCAzMiwgdG90YWxfbGVuZ3RoLCBwYywgJiBmaWVsZHMtPmZfTFJBUyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX1RMQlBSTCA6CisgICAgICBsZW5ndGggPSBleHRyYWN0X25vcm1hbCAoY2QsIGV4X2luZm8sIGluc25fdmFsdWUsIDAsIDAsIDI1LCAxLCAzMiwgdG90YWxfbGVuZ3RoLCBwYywgJiBmaWVsZHMtPmZfVExCUFJMKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfVExCUFJPUFggOgorICAgICAgbGVuZ3RoID0gZXh0cmFjdF9ub3JtYWwgKGNkLCBleF9pbmZvLCBpbnNuX3ZhbHVlLCAwLCAwLCAyOCwgMywgMzIsIHRvdGFsX2xlbmd0aCwgcGMsICYgZmllbGRzLT5mX1RMQlBSb3B4KTsKKyAgICAgIGJyZWFrOwogICAgIGNhc2UgRlJWX09QRVJBTkRfQUUgOgogICAgICAgbGVuZ3RoID0gZXh0cmFjdF9ub3JtYWwgKGNkLCBleF9pbmZvLCBpbnNuX3ZhbHVlLCAwLCAwLCAyNSwgMSwgMzIsIHRvdGFsX2xlbmd0aCwgcGMsICYgZmllbGRzLT5mX2FlKTsKICAgICAgIGJyZWFrOwpAQCAtMTMwMiw2ICsxMzMyLDIxIEBACiAgICAgY2FzZSBGUlZfT1BFUkFORF9MSSA6CiAgICAgICB2YWx1ZSA9IGZpZWxkcy0+Zl9MSTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfTFJBRCA6CisgICAgICB2YWx1ZSA9IGZpZWxkcy0+Zl9MUkFEOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGUlZfT1BFUkFORF9MUkFFIDoKKyAgICAgIHZhbHVlID0gZmllbGRzLT5mX0xSQUU7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX0xSQVMgOgorICAgICAgdmFsdWUgPSBmaWVsZHMtPmZfTFJBUzsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfVExCUFJMIDoKKyAgICAgIHZhbHVlID0gZmllbGRzLT5mX1RMQlBSTDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfVExCUFJPUFggOgorICAgICAgdmFsdWUgPSBmaWVsZHMtPmZfVExCUFJvcHg7CisgICAgICBicmVhazsKICAgICBjYXNlIEZSVl9PUEVSQU5EX0FFIDoKICAgICAgIHZhbHVlID0gZmllbGRzLT5mX2FlOwogICAgICAgYnJlYWs7CkBAIC0xNTM5LDYgKzE1ODQsMjEgQEAKICAgICBjYXNlIEZSVl9PUEVSQU5EX0xJIDoKICAgICAgIHZhbHVlID0gZmllbGRzLT5mX0xJOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBGUlZfT1BFUkFORF9MUkFEIDoKKyAgICAgIHZhbHVlID0gZmllbGRzLT5mX0xSQUQ7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX0xSQUUgOgorICAgICAgdmFsdWUgPSBmaWVsZHMtPmZfTFJBRTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfTFJBUyA6CisgICAgICB2YWx1ZSA9IGZpZWxkcy0+Zl9MUkFTOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGUlZfT1BFUkFORF9UTEJQUkwgOgorICAgICAgdmFsdWUgPSBmaWVsZHMtPmZfVExCUFJMOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGUlZfT1BFUkFORF9UTEJQUk9QWCA6CisgICAgICB2YWx1ZSA9IGZpZWxkcy0+Zl9UTEJQUm9weDsKKyAgICAgIGJyZWFrOwogICAgIGNhc2UgRlJWX09QRVJBTkRfQUUgOgogICAgICAgdmFsdWUgPSBmaWVsZHMtPmZfYWU7CiAgICAgICBicmVhazsKQEAgLTE3ODUsNiArMTg0NSwyMSBAQAogICAgIGNhc2UgRlJWX09QRVJBTkRfTEkgOgogICAgICAgZmllbGRzLT5mX0xJID0gdmFsdWU7CiAgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX0xSQUQgOgorICAgICAgZmllbGRzLT5mX0xSQUQgPSB2YWx1ZTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfTFJBRSA6CisgICAgICBmaWVsZHMtPmZfTFJBRSA9IHZhbHVlOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGUlZfT1BFUkFORF9MUkFTIDoKKyAgICAgIGZpZWxkcy0+Zl9MUkFTID0gdmFsdWU7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX1RMQlBSTCA6CisgICAgICBmaWVsZHMtPmZfVExCUFJMID0gdmFsdWU7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX1RMQlBST1BYIDoKKyAgICAgIGZpZWxkcy0+Zl9UTEJQUm9weCA9IHZhbHVlOworICAgICAgYnJlYWs7CiAgICAgY2FzZSBGUlZfT1BFUkFORF9BRSA6CiAgICAgICBmaWVsZHMtPmZfYWUgPSB2YWx1ZTsKICAgICAgIGJyZWFrOwpAQCAtMjAxOSw2ICsyMDk0LDIxIEBACiAgICAgY2FzZSBGUlZfT1BFUkFORF9MSSA6CiAgICAgICBmaWVsZHMtPmZfTEkgPSB2YWx1ZTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfTFJBRCA6CisgICAgICBmaWVsZHMtPmZfTFJBRCA9IHZhbHVlOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGUlZfT1BFUkFORF9MUkFFIDoKKyAgICAgIGZpZWxkcy0+Zl9MUkFFID0gdmFsdWU7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZSVl9PUEVSQU5EX0xSQVMgOgorICAgICAgZmllbGRzLT5mX0xSQVMgPSB2YWx1ZTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfVExCUFJMIDoKKyAgICAgIGZpZWxkcy0+Zl9UTEJQUkwgPSB2YWx1ZTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlJWX09QRVJBTkRfVExCUFJPUFggOgorICAgICAgZmllbGRzLT5mX1RMQlBSb3B4ID0gdmFsdWU7CisgICAgICBicmVhazsKICAgICBjYXNlIEZSVl9PUEVSQU5EX0FFIDoKICAgICAgIGZpZWxkcy0+Zl9hZSA9IHZhbHVlOwogICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9vcGNvZGVzL2Zydi1vcGMuYyBiL29wY29kZXMvZnJ2LW9wYy5jCmluZGV4IDE1NjBkMjAuLjJlMzA3ZTAgMTAwNjQ0Ci0tLSBhL29wY29kZXMvZnJ2LW9wYy5jCisrKyBiL29wY29kZXMvZnJ2LW9wYy5jCkBAIC00NCw2ICs0NCw4IEBACiAgIFBBUkFNUyAoKEZSVl9WTElXICosIENHRU5fQVRUUl9WQUxVRV9UWVBFKSk7CiBzdGF0aWMgaW50IGZyNDAwX2NoZWNrX2luc25fbWFqb3JfY29uc3RyYWludHMKICAgUEFSQU1TICgoRlJWX1ZMSVcgKiwgQ0dFTl9BVFRSX1ZBTFVFX1RZUEUpKTsKK3N0YXRpYyBpbnQgZnI0NTBfY2hlY2tfaW5zbl9tYWpvcl9jb25zdHJhaW50cworICBQQVJBTVMgKChGUlZfVkxJVyAqLCBDR0VOX0FUVFJfVkFMVUVfVFlQRSkpOwogc3RhdGljIGludCBmcjUwMF9jaGVja19pbnNuX21ham9yX2NvbnN0cmFpbnRzCiAgIFBBUkFNUyAoKEZSVl9WTElXICosIENHRU5fQVRUUl9WQUxVRV9UWVBFKSk7CiBzdGF0aWMgaW50IGZyNTUwX2NoZWNrX2luc25fbWFqb3JfY29uc3RyYWludHMKQEAgLTYwLDYgKzYyLDEwIEBACiAgICAgICBpZiAobWFqb3IgPj0gRlI0MDBfTUFKT1JfQl8xICYmIG1ham9yIDw9IEZSNDAwX01BSk9SX0JfNikKIAlyZXR1cm4gMTsgLyogaXMgYSBicmFuY2ggKi8KICAgICAgIGJyZWFrOworICAgIGNhc2UgYmZkX21hY2hfZnI0NTA6CisgICAgICBpZiAobWFqb3IgPj0gRlI0NTBfTUFKT1JfQl8xICYmIG1ham9yIDw9IEZSNDUwX01BSk9SX0JfNikKKwlyZXR1cm4gMTsgLyogaXMgYSBicmFuY2ggKi8KKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBpZiAobWFqb3IgPj0gRlI1MDBfTUFKT1JfQl8xICYmIG1ham9yIDw9IEZSNTAwX01BSk9SX0JfNikKIAlyZXR1cm4gMTsgLyogaXMgYSBicmFuY2ggKi8KQEAgLTc1LDYgKzgxLDcgQEAKICAgc3dpdGNoIChtYWNoKQogICAgIHsKICAgICBjYXNlIGJmZF9tYWNoX2ZyNDAwOgorICAgIGNhc2UgYmZkX21hY2hfZnI0NTA6CiAgICAgICByZXR1cm4gMDsgLyogTm8gZmxvYXQgaW5zbnMgKi8KICAgICBkZWZhdWx0OgogICAgICAgaWYgKG1ham9yID49IEZSNTAwX01BSk9SX0ZfMSAmJiBtYWpvciA8PSBGUjUwMF9NQUpPUl9GXzgpCkBAIC05NCw2ICsxMDEsMTAgQEAKICAgICAgIGlmIChtYWpvciA+PSBGUjQwMF9NQUpPUl9NXzEgJiYgbWFqb3IgPD0gRlI0MDBfTUFKT1JfTV8yKQogCXJldHVybiAxOyAvKiBpcyBhIG1lZGlhIGluc24gKi8KICAgICAgIGJyZWFrOworICAgIGNhc2UgYmZkX21hY2hfZnI0NTA6CisgICAgICBpZiAobWFqb3IgPj0gRlI0NTBfTUFKT1JfTV8xICYmIG1ham9yIDw9IEZSNDUwX01BSk9SX01fNikKKwlyZXR1cm4gMTsgLyogaXMgYSBtZWRpYSBpbnNuICovCisgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgaWYgKG1ham9yID49IEZSNTAwX01BSk9SX01fMSAmJiBtYWpvciA8PSBGUjUwMF9NQUpPUl9NXzgpCiAJcmV0dXJuIDE7IC8qIGlzIGEgbWVkaWEgaW5zbiAqLwpAQCAtMTA5LDYgKzEyMCw5IEBACiAgIGlmIChmcnZfaXNfYnJhbmNoX21ham9yIChDR0VOX0lOU05fQVRUUl9WQUxVRSAoaW5zbiwgQ0dFTl9JTlNOX0ZSNDAwX01BSk9SKSwKIAkJCSAgIGJmZF9tYWNoX2ZyNDAwKSkKICAgICByZXR1cm4gMTsKKyAgaWYgKGZydl9pc19icmFuY2hfbWFqb3IgKENHRU5fSU5TTl9BVFRSX1ZBTFVFIChpbnNuLCBDR0VOX0lOU05fRlI0NTBfTUFKT1IpLAorCQkJICAgYmZkX21hY2hfZnI0NTApKQorICAgIHJldHVybiAxOwogICBpZiAoZnJ2X2lzX2JyYW5jaF9tYWpvciAoQ0dFTl9JTlNOX0FUVFJfVkFMVUUgKGluc24sIENHRU5fSU5TTl9GUjUwMF9NQUpPUiksCiAJCQkgICBiZmRfbWFjaF9mcjUwMCkpCiAgICAgcmV0dXJuIDE7CkBAIC0xMjIsNiArMTM2LDkgQEAKICAgaWYgKGZydl9pc19mbG9hdF9tYWpvciAoQ0dFTl9JTlNOX0FUVFJfVkFMVUUgKGluc24sIENHRU5fSU5TTl9GUjQwMF9NQUpPUiksCiAJCQkgIGJmZF9tYWNoX2ZyNDAwKSkKICAgICByZXR1cm4gMTsKKyAgaWYgKGZydl9pc19mbG9hdF9tYWpvciAoQ0dFTl9JTlNOX0FUVFJfVkFMVUUgKGluc24sIENHRU5fSU5TTl9GUjQ1MF9NQUpPUiksCisJCQkgIGJmZF9tYWNoX2ZyNDUwKSkKKyAgICByZXR1cm4gMTsKICAgaWYgKGZydl9pc19mbG9hdF9tYWpvciAoQ0dFTl9JTlNOX0FUVFJfVkFMVUUgKGluc24sIENHRU5fSU5TTl9GUjUwMF9NQUpPUiksCiAJCQkgIGJmZF9tYWNoX2ZyNTAwKSkKICAgICByZXR1cm4gMTsKQEAgLTEzNSw2ICsxNTIsOSBAQAogICBpZiAoZnJ2X2lzX21lZGlhX21ham9yIChDR0VOX0lOU05fQVRUUl9WQUxVRSAoaW5zbiwgQ0dFTl9JTlNOX0ZSNDAwX01BSk9SKSwKIAkJCSAgYmZkX21hY2hfZnI0MDApKQogICAgIHJldHVybiAxOworICBpZiAoZnJ2X2lzX21lZGlhX21ham9yIChDR0VOX0lOU05fQVRUUl9WQUxVRSAoaW5zbiwgQ0dFTl9JTlNOX0ZSNDUwX01BSk9SKSwKKwkJCSAgYmZkX21hY2hfZnI0NTApKQorICAgIHJldHVybiAxOwogICBpZiAoZnJ2X2lzX21lZGlhX21ham9yIChDR0VOX0lOU05fQVRUUl9WQUxVRSAoaW5zbiwgQ0dFTl9JTlNOX0ZSNTAwX01BSk9SKSwKIAkJCSAgYmZkX21hY2hfZnI1MDApKQogICAgIHJldHVybiAxOwpAQCAtMjQ1LDYgKzI2NSw0MiBAQAogLyogU0NBTiAgICAgKi8gICAgIFVOSVRfSTAsICAvKiBzY2FuICAgICAgICAgICAgICAgIG9ubHkgaW4gSTAgIHVuaXQuICAqLwogLyogRENQTCAgICAgKi8gICAgIFVOSVRfQywgICAvKiBkY3BsICAgICAgICAgICAgICAgIG9ubHkgaW4gQyAgIHVuaXQuICAqLwogLyogTURVQUxBQ0MgKi8gICAgIFVOSVRfRk0wLCAvKiBtZWRpYSBkdWFsIGFjYyBpbnNuIG9ubHkgaW4gRk0wIHVuaXQuICAqLworLyogTURDVVRTU0kgKi8gICAgIFVOSVRfRk0wLCAvKiBtZGN1dHNzaSAgICAgICAgICAgIG9ubHkgaW4gRk0wIHVuaXQuICAqLworLyogTUNMUkFDQy0xKi8gICAgIFVOSVRfRk0wICAvKiBtY2xyYWNjLEE9PTEgICBpbnNuIG9ubHkgaW4gRk0wIHVuaXQuICAqLworfTsKKworLyogU29tZSBpbnNucyBhcmUgYXNzaWduZWQgc3BlY2lhbGl6ZWQgaW1wbGVtZW50YXRpb24gdW5pdHMgd2hpY2ggbWFwIHRvCisgICBkaWZmZXJlbnQgYWN0dWFsIGltcGxlbWVudGF0aW9uIHVuaXRzIG9uIGRpZmZlcmVudCBtYWNoaW5lcy4gIFRoZXNlCisgICB0YWJsZXMgcGVyZm9ybSB0aGF0IG1hcHBpbmcuICAqLworc3RhdGljIENHRU5fQVRUUl9WQUxVRV9UWVBFIGZyNDUwX3VuaXRfbWFwcGluZ1tdID0KK3sKKy8qIHVuaXQgaW4gaW5zbiAgICBhY3R1YWwgdW5pdCAqLworLyogTklMICAgICAgKi8gICAgIFVOSVRfTklMLAorLyogSTAgICAgICAgKi8gICAgIFVOSVRfSTAsCisvKiBJMSAgICAgICAqLyAgICAgVU5JVF9JMSwKKy8qIEkwMSAgICAgICovICAgICBVTklUX0kwMSwgCisvKiBJMiAgICAgICAqLyAgICAgVU5JVF9OSUwsIC8qIG5vIEkyIG9yIEkzIHVuaXQgKi8KKy8qIEkzICAgICAgICovICAgICBVTklUX05JTCwKKy8qIElBTEwgICAgICovICAgICBVTklUX0kwMSwgLyogb25seSBJMCBhbmQgSTEgdW5pdHMgKi8KKy8qIEZNMCAgICAgICovICAgICBVTklUX0ZNMCwKKy8qIEZNMSAgICAgICovICAgICBVTklUX0ZNMSwKKy8qIEZNMDEgICAgICovICAgICBVTklUX0ZNMDEsCisvKiBGTTIgICAgICAqLyAgICAgVU5JVF9OSUwsIC8qIG5vIEYyIG9yIE0yIHVuaXRzICovCisvKiBGTTMgICAgICAqLyAgICAgVU5JVF9OSUwsIC8qIG5vIEYzIG9yIE0zIHVuaXRzICovCisvKiBGTUFMTCAgICAqLyAgICAgVU5JVF9GTTAxLC8qIE9ubHkgRjAsRjEsTTAsTTEgdW5pdHMgKi8KKy8qIEZNTE9XICAgICovICAgICBVTklUX0ZNMCwgLyogT25seSBGMCxNMCB1bml0cyAqLworLyogQjAgICAgICAgKi8gICAgIFVOSVRfQjAsICAvKiBicmFuY2hlcyBvbmx5IGluIEIwIHVuaXQuICAqLworLyogQjEgICAgICAgKi8gICAgIFVOSVRfQjAsCisvKiBCMDEgICAgICAqLyAgICAgVU5JVF9CMCwKKy8qIEMgICAgICAgICovICAgICBVTklUX0MsCisvKiBNVUxULURJViAqLyAgICAgVU5JVF9JMCwgIC8qIG11bHRpcGx5IGFuZCBkaXZpZGUgb25seSBpbiBJMCAgdW5pdC4gICovCisvKiBJQUNDICAgICAqLyAgICAgVU5JVF9JMDEsIC8qIGlhY2MgbXVsdGlwbHkgICAgICAgaW4gSTAgb3IgSTEgdW5pdC4gICovCisvKiBMT0FEICAgICAqLyAgICAgVU5JVF9JMCwgIC8qIGxvYWQgICAgICAgICAgICAgICAgb25seSBpbiBJMCAgdW5pdC4gICovCisvKiBTVE9SRSAgICAqLyAgICAgVU5JVF9JMCwgIC8qIHN0b3JlICAgICAgICAgICAgICAgb25seSBpbiBJMCAgdW5pdC4gICovCisvKiBTQ0FOICAgICAqLyAgICAgVU5JVF9JMCwgIC8qIHNjYW4gICAgICAgICAgICAgICAgb25seSBpbiBJMCAgdW5pdC4gICovCisvKiBEQ1BMICAgICAqLyAgICAgVU5JVF9JMCwgIC8qIGRjcGwgICAgICAgICAgICAgICAgb25seSBpbiBJMCAgdW5pdC4gICovCisvKiBNRFVBTEFDQyAqLyAgICAgVU5JVF9GTTAsIC8qIG1lZGlhIGR1YWwgYWNjIGluc24gb25seSBpbiBGTTAgdW5pdC4gICovCisvKiBNRENVVFNTSSAqLyAgICAgVU5JVF9GTTAxLCAvKiBtZGN1dHNzaSAgICAgICAgICAgaW4gRk0wIG9yIEZNMS4gICovCiAvKiBNQ0xSQUNDLTEqLyAgICAgVU5JVF9GTTAgIC8qIG1jbHJhY2MsQT09MSAgIGluc24gb25seSBpbiBGTTAgdW5pdC4gICovCiB9OwogCkBAIC0yNzYsNiArMzMyLDcgQEAKIC8qIFNDQU4gICAgICovICAgICBVTklUX0kwMSwgLyogc2NhbiAgICAgICAgICAgICAgICBpbiBJMCBvciBJMSB1bml0LiAgKi8KIC8qIERDUEwgICAgICovICAgICBVTklUX0MsICAgLyogZGNwbCAgICAgICAgICAgICAgICBvbmx5IGluIEMgdW5pdC4gICovCiAvKiBNRFVBTEFDQyAqLyAgICAgVU5JVF9GTTAsIC8qIG1lZGlhIGR1YWwgYWNjIGluc24gb25seSBpbiBGTTAgdW5pdC4gICovCisvKiBNRENVVFNTSSAqLyAgICAgVU5JVF9GTTAsIC8qIG1kY3V0c3NpICAgICAgICAgICAgb25seSBpbiBGTTAgdW5pdC4gICovCiAvKiBNQ0xSQUNDLTEqLyAgICAgVU5JVF9GTTAxIC8qIG1jbHJhY2MsQT09MSBpbiBGTTAgb3IgRk0xIHVuaXQuICAqLwogfTsKIApAQCAtMzA3LDYgKzM2NCw3IEBACiAvKiBTQ0FOICAgICAqLyAgICAgVU5JVF9JQUxMLCAvKiBzY2FuICAgICAgICAgICAgICAgIGluIGFueSBpbnRlZ2VyIHVuaXQuICovCiAvKiBEQ1BMICAgICAqLyAgICAgVU5JVF9JMCwgICAvKiBkY3BsICAgICAgICAgICAgICAgIG9ubHkgaW4gSTAgdW5pdC4gICAgICovCiAvKiBNRFVBTEFDQyAqLyAgICAgVU5JVF9GTUFMTCwvKiBtZWRpYSBkdWFsIGFjYyBpbnNuIGluIGFsbCBtZWRpYSB1bml0cyAgICovCisvKiBNRENVVFNTSSAqLyAgICAgVU5JVF9GTTAxLCAvKiBtZGN1dHNzaSAgICAgICAgICAgIGluIEZNMCBvciBGTTEgdW5pdC4gICovCiAvKiBNQ0xSQUNDLTEqLyAgICAgVU5JVF9GTTAxICAvKiBtY2xyYWNjLEE9PTEgaW4gRk0wIG9yIEZNMSB1bml0LiAgICAgICAgICovCiB9OwogCkBAIC0zMjQsNiArMzgyLDEwIEBACiAgICAgICB2bGl3LT5jdXJyZW50X3ZsaXcgPSBmcjQwMF9hbGxvd2VkX3ZsaXc7CiAgICAgICB2bGl3LT51bml0X21hcHBpbmcgPSBmcjQwMF91bml0X21hcHBpbmc7CiAgICAgICBicmVhazsKKyAgICBjYXNlIGJmZF9tYWNoX2ZyNDUwOgorICAgICAgdmxpdy0+Y3VycmVudF92bGl3ID0gZnI0MDBfYWxsb3dlZF92bGl3OworICAgICAgdmxpdy0+dW5pdF9tYXBwaW5nID0gZnI0NTBfdW5pdF9tYXBwaW5nOworICAgICAgYnJlYWs7CiAgICAgY2FzZSBiZmRfbWFjaF9mcjU1MDoKICAgICAgIHZsaXctPmN1cnJlbnRfdmxpdyA9IGZyNTUwX2FsbG93ZWRfdmxpdzsKICAgICAgIHZsaXctPnVuaXRfbWFwcGluZyA9IGZyNTUwX3VuaXRfbWFwcGluZzsKQEAgLTQ1Myw2ICs1MTUsOCBAQAogICAgIGNhc2UgRlI0MDBfTUFKT1JfTV8yOgogICAgICAgcmV0dXJuICEgZmluZF9tYWpvcl9pbl92bGl3ICh2bGl3LCBGUjQwMF9NQUpPUl9NXzEpCiAJJiYgICAhIGZpbmRfbWFqb3JfaW5fdmxpdyAodmxpdywgRlI0MDBfTUFKT1JfTV8yKTsKKyAgICBjYXNlIEZSNDAwX01BSk9SX01fMToKKyAgICAgIHJldHVybiAhZmluZF9tYWpvcl9pbl92bGl3ICh2bGl3LCBGUjQwMF9NQUpPUl9NXzIpOwogICAgIGRlZmF1bHQ6CiAgICAgICBicmVhazsKICAgICB9CkBAIC00NjAsNiArNTI0LDQzIEBACiB9CiAKIHN0YXRpYyBpbnQKK2ZyNDUwX2NoZWNrX2luc25fbWFqb3JfY29uc3RyYWludHMgKAorICBGUlZfVkxJVyAqdmxpdywgQ0dFTl9BVFRSX1ZBTFVFX1RZUEUgbWFqb3IKKykKK3sKKyAgQ0dFTl9BVFRSX1ZBTFVFX1RZUEUgb3RoZXJfbWFqb3I7CisKKyAgLyogT3VyIGNhbGxlciBndWFyYW50ZWVzIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIG90aGVyIGluc3RydWN0aW9uLiAgKi8KKyAgb3RoZXJfbWFqb3IgPSBDR0VOX0lOU05fQVRUUl9WQUxVRSAodmxpdy0+aW5zblswXSwgQ0dFTl9JTlNOX0ZSNDUwX01BSk9SKTsKKworICAvKiAoTTQsIE01KSBhbmQgKE00LCBNNikgYXJlIGFsbG93ZWQuICAqLworICBpZiAob3RoZXJfbWFqb3IgPT0gRlI0NTBfTUFKT1JfTV80KQorICAgIGlmIChtYWpvciA9PSBGUjQ1MF9NQUpPUl9NXzUgfHwgbWFqb3IgPT0gRlI0NTBfTUFKT1JfTV82KQorICAgICAgcmV0dXJuIDE7CisKKyAgLyogT3RoZXJ3aXNlLCBpbnN0cnVjdGlvbnMgaW4gZXZlbi1udW1iZXJlZCBtZWRpYSBjYXRlZ29yaWVzIGNhbm5vdCBiZQorICAgICBleGVjdXRlZCBpbiBwYXJhbGxlbCB3aXRoIG90aGVyIG1lZGlhIGluc3RydWN0aW9ucy4gICovCisgIHN3aXRjaCAobWFqb3IpCisgICAgeworICAgIGNhc2UgRlI0NTBfTUFKT1JfTV8yOgorICAgIGNhc2UgRlI0NTBfTUFKT1JfTV80OgorICAgIGNhc2UgRlI0NTBfTUFKT1JfTV82OgorICAgICAgcmV0dXJuICEob3RoZXJfbWFqb3IgPj0gRlI0NTBfTUFKT1JfTV8xCisJICAgICAgICYmIG90aGVyX21ham9yIDw9IEZSNDUwX01BSk9SX01fNik7CisKKyAgICBjYXNlIEZSNDUwX01BSk9SX01fMToKKyAgICBjYXNlIEZSNDUwX01BSk9SX01fMzoKKyAgICBjYXNlIEZSNDUwX01BSk9SX01fNToKKyAgICAgIHJldHVybiAhKG90aGVyX21ham9yID09IEZSNDUwX01BSk9SX01fMgorCSAgICAgICB8fCBvdGhlcl9tYWpvciA9PSBGUjQ1MF9NQUpPUl9NXzQKKwkgICAgICAgfHwgb3RoZXJfbWFqb3IgPT0gRlI0NTBfTUFKT1JfTV82KTsKKworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gMTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKIGZpbmRfdW5pdF9pbl92bGl3ICgKICAgRlJWX1ZMSVcgKnZsaXcsIENHRU5fQVRUUl9WQUxVRV9UWVBFIHVuaXQKICkKQEAgLTY5Niw2ICs3OTcsOSBAQAogICAgIGNhc2UgYmZkX21hY2hfZnI0MDA6CiAgICAgICByYyA9IGZyNDAwX2NoZWNrX2luc25fbWFqb3JfY29uc3RyYWludHMgKHZsaXcsIG1ham9yKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgYmZkX21hY2hfZnI0NTA6CisgICAgICByYyA9IGZyNDUwX2NoZWNrX2luc25fbWFqb3JfY29uc3RyYWludHMgKHZsaXcsIG1ham9yKTsKKyAgICAgIGJyZWFrOwogICAgIGNhc2UgYmZkX21hY2hfZnI1NTA6CiAgICAgICByYyA9IGZyNTUwX2NoZWNrX2luc25fbWFqb3JfY29uc3RyYWludHMgKHZsaXcsIG1ham9yLCBpbnNuKTsKICAgICAgIGJyZWFrOwpAQCAtNzM2LDYgKzg0MCw5IEBACiAgICAgY2FzZSBiZmRfbWFjaF9mcjQwMDoKICAgICAgIG1ham9yID0gQ0dFTl9JTlNOX0FUVFJfVkFMVUUgKGluc24sIENHRU5fSU5TTl9GUjQwMF9NQUpPUik7CiAgICAgICBicmVhazsKKyAgICBjYXNlIGJmZF9tYWNoX2ZyNDUwOgorICAgICAgbWFqb3IgPSBDR0VOX0lOU05fQVRUUl9WQUxVRSAoaW5zbiwgQ0dFTl9JTlNOX0ZSNDUwX01BSk9SKTsKKyAgICAgIGJyZWFrOwogICAgIGNhc2UgYmZkX21hY2hfZnI1NTA6CiAgICAgICBtYWpvciA9IENHRU5fSU5TTl9BVFRSX1ZBTFVFIChpbnNuLCBDR0VOX0lOU05fRlI1NTBfTUFKT1IpOwogICAgICAgYnJlYWs7CkBAIC0xMTQ5LDYgKzEyNTYsMTQgQEAKICAgMzIsIDMyLCAweDdmZmZmZmZmLCB7IHsgRiAoRl9QQUNLKSB9LCB7IEYgKEZfUkRfTlVMTCkgfSwgeyBGIChGX09QKSB9LCB7IEYgKEZfUlNfTlVMTCkgfSwgeyBGIChGX09QRTEpIH0sIHsgRiAoRl9HUkpfTlVMTCkgfSwgeyAwIH0gfQogfTsKIAorc3RhdGljIGNvbnN0IENHRU5fSUZNVCBpZm10X2xyYWkgPSB7CisgIDMyLCAzMiwgMHgxZmMwZmM3LCB7IHsgRiAoRl9QQUNLKSB9LCB7IEYgKEZfR1JLKSB9LCB7IEYgKEZfT1ApIH0sIHsgRiAoRl9HUkkpIH0sIHsgRiAoRl9PUEUxKSB9LCB7IEYgKEZfTFJBRSkgfSwgeyBGIChGX0xSQUQpIH0sIHsgRiAoRl9MUkFTKSB9LCB7IEYgKEZfTFJBX05VTEwpIH0sIHsgMCB9IH0KK307CisKK3N0YXRpYyBjb25zdCBDR0VOX0lGTVQgaWZtdF90bGJwciA9IHsKKyAgMzIsIDMyLCAweDYxZmMwZmMwLCB7IHsgRiAoRl9QQUNLKSB9LCB7IEYgKEZfVExCUFJfTlVMTCkgfSwgeyBGIChGX1RMQlBST1BYKSB9LCB7IEYgKEZfVExCUFJMKSB9LCB7IEYgKEZfT1ApIH0sIHsgRiAoRl9HUkkpIH0sIHsgRiAoRl9PUEUxKSB9LCB7IEYgKEZfR1JKKSB9LCB7IDAgfSB9Cit9OworCiBzdGF0aWMgY29uc3QgQ0dFTl9JRk1UIGlmbXRfY29wMSA9IHsKICAgMzIsIDMyLCAweDFmYzAwMDAsIHsgeyBGIChGX1BBQ0spIH0sIHsgRiAoRl9DUFJLKSB9LCB7IEYgKEZfT1ApIH0sIHsgRiAoRl9DUFJJKSB9LCB7IEYgKEZfUzZfMSkgfSwgeyBGIChGX0NQUkopIH0sIHsgMCB9IH0KIH07CkBAIC0xMjk3LDYgKzE0MTIsMTAgQEAKICAgMzIsIDMyLCAweDFmYzAwYzAsIHsgeyBGIChGX1BBQ0spIH0sIHsgRiAoRl9GUkspIH0sIHsgRiAoRl9PUCkgfSwgeyBGIChGX0ZSSSkgfSwgeyBGIChGX0NDSSkgfSwgeyBGIChGX0NPTkQpIH0sIHsgRiAoRl9PUEU0KSB9LCB7IEYgKEZfRlJKKSB9LCB7IDAgfSB9CiB9OwogCitzdGF0aWMgY29uc3QgQ0dFTl9JRk1UIGlmbXRfbXFzbGxoaSA9IHsKKyAgMzIsIDMyLCAweDFmYzBmYzAsIHsgeyBGIChGX1BBQ0spIH0sIHsgRiAoRl9GUkspIH0sIHsgRiAoRl9PUCkgfSwgeyBGIChGX0ZSSSkgfSwgeyBGIChGX09QRTEpIH0sIHsgRiAoRl9VNikgfSwgeyAwIH0gfQorfTsKKwogc3RhdGljIGNvbnN0IENHRU5fSUZNVCBpZm10X21hZGRhY2NzID0gewogICAzMiwgMzIsIDB4MWZjMGZmZiwgeyB7IEYgKEZfUEFDSykgfSwgeyBGIChGX0FDQzQwU0spIH0sIHsgRiAoRl9PUCkgfSwgeyBGIChGX0FDQzQwU0kpIH0sIHsgRiAoRl9PUEUxKSB9LCB7IEYgKEZfQUNDSl9OVUxMKSB9LCB7IDAgfSB9CiB9OwpAQCAtMjQ4Niw0MiArMjYwNSw2IEBACiAgICAgeyB7IE1ORU0sIE9QIChQQUNLKSwgJyAnLCBPUCAoQ1BSSyksICcsJywgJ0AnLCAnKCcsIE9QIChHUkkpLCAnLCcsIE9QIChHUkopLCAnKScsIDAgfSB9LAogICAgICYgaWZtdF9sZGMsIHsgMHhjMDk0MCB9CiAgIH0sCi0vKiByc3RiJHBhY2sgJEdSayxAKCRHUmksJEdSaikgKi8KLSAgewotICAgIHsgMCwgMCwgMCwgMCB9LAotICAgIHsgeyBNTkVNLCBPUCAoUEFDSyksICcgJywgT1AgKEdSSyksICcsJywgJ0AnLCAnKCcsIE9QIChHUkkpLCAnLCcsIE9QIChHUkopLCAnKScsIDAgfSB9LAotICAgICYgaWZtdF9zbGFzcywgeyAweGMwODAwIH0KLSAgfSwKLS8qIHJzdGgkcGFjayAkR1JrLEAoJEdSaSwkR1JqKSAqLwotICB7Ci0gICAgeyAwLCAwLCAwLCAwIH0sCi0gICAgeyB7IE1ORU0sIE9QIChQQUNLKSwgJyAnLCBPUCAoR1JLKSwgJywnLCAnQCcsICcoJywgT1AgKEdSSSksICcsJywgT1AgKEdSSiksICcpJywgMCB9IH0sCi0gICAgJiBpZm10X3NsYXNzLCB7IDB4YzA4NDAgfQotICB9LAotLyogcnN0JHBhY2sgJEdSayxAKCRHUmksJEdSaikgKi8KLSAgewotICAgIHsgMCwgMCwgMCwgMCB9LAotICAgIHsgeyBNTkVNLCBPUCAoUEFDSyksICcgJywgT1AgKEdSSyksICcsJywgJ0AnLCAnKCcsIE9QIChHUkkpLCAnLCcsIE9QIChHUkopLCAnKScsIDAgfSB9LAotICAgICYgaWZtdF9zbGFzcywgeyAweGMwODgwIH0KLSAgfSwKLS8qIHJzdGJmJHBhY2sgJEZSaW50ayxAKCRHUmksJEdSaikgKi8KLSAgewotICAgIHsgMCwgMCwgMCwgMCB9LAotICAgIHsgeyBNTkVNLCBPUCAoUEFDSyksICcgJywgT1AgKEZSSU5USyksICcsJywgJ0AnLCAnKCcsIE9QIChHUkkpLCAnLCcsIE9QIChHUkopLCAnKScsIDAgfSB9LAotICAgICYgaWZtdF9sZGJmLCB7IDB4YzBhMDAgfQotICB9LAotLyogcnN0aGYkcGFjayAkRlJpbnRrLEAoJEdSaSwkR1JqKSAqLwotICB7Ci0gICAgeyAwLCAwLCAwLCAwIH0sCi0gICAgeyB7IE1ORU0sIE9QIChQQUNLKSwgJyAnLCBPUCAoRlJJTlRLKSwgJywnLCAnQCcsICcoJywgT1AgKEdSSSksICcsJywgT1AgKEdSSiksICcpJywgMCB9IH0sCi0gICAgJiBpZm10X2xkYmYsIHsgMHhjMGE0MCB9Ci0gIH0sCi0vKiByc3RmJHBhY2sgJEZSaW50ayxAKCRHUmksJEdSaikgKi8KLSAgewotICAgIHsgMCwgMCwgMCwgMCB9LAotICAgIHsgeyBNTkVNLCBPUCAoUEFDSyksICcgJywgT1AgKEZSSU5USyksICcsJywgJ0AnLCAnKCcsIE9QIChHUkkpLCAnLCcsIE9QIChHUkopLCAnKScsIDAgfSB9LAotICAgICYgaWZtdF9sZGJmLCB7IDB4YzBhODAgfQotICB9LAogLyogc3RkJHBhY2sgJEdSZG91YmxlayxAKCRHUmksJEdSaikgKi8KICAgewogICAgIHsgMCwgMCwgMCwgMCB9LApAQCAtMjU0MCwxOCArMjYyMyw2IEBACiAgICAgeyB7IE1ORU0sIE9QIChQQUNLKSwgJyAnLCBPUCAoQ1BSRE9VQkxFSyksICcsJywgJ0AnLCAnKCcsIE9QIChHUkkpLCAnLCcsIE9QIChHUkopLCAnKScsIDAgfSB9LAogICAgICYgaWZtdF9sZGRjLCB7IDB4YzA5ODAgfQogICB9LAotLyogcnN0ZCRwYWNrICRHUmRvdWJsZWssQCgkR1JpLCRHUmopICovCi0gIHsKLSAgICB7IDAsIDAsIDAsIDAgfSwKLSAgICB7IHsgTU5FTSwgT1AgKFBBQ0spLCAnICcsIE9QIChHUkRPVUJMRUspLCAnLCcsICdAJywgJygnLCBPUCAoR1JJKSwgJywnLCBPUCAoR1JKKSwgJyknLCAwIH0gfSwKLSAgICAmIGlmbXRfbGRkLCB7IDB4YzA4YzAgfQotICB9LAotLyogcnN0ZGYkcGFjayAkRlJkb3VibGVrLEAoJEdSaSwkR1JqKSAqLwotICB7Ci0gICAgeyAwLCAwLCAwLCAwIH0sCi0gICAgeyB7IE1ORU0sIE9QIChQQUNLKSwgJyAnLCBPUCAoRlJET1VCTEVLKSwgJywnLCAnQCcsICcoJywgT1AgKEdSSSksICcsJywgT1AgKEdSSiksICcpJywgMCB9IH0sCi0gICAgJiBpZm10X2xkZGYsIHsgMHhjMGFjMCB9Ci0gIH0sCiAvKiBzdHEkcGFjayAkR1JrLEAoJEdSaSwkR1JqKSAqLwogICB7CiAgICAgeyAwLCAwLCAwLCAwIH0sCkBAIC0yNTcwLDE4ICsyNjQxLDYgQEAKICAgICB7IHsgTU5FTSwgT1AgKFBBQ0spLCAnICcsIE9QIChDUFJLKSwgJywnLCAnQCcsICcoJywgT1AgKEdSSSksICcsJywgT1AgKEdSSiksICcpJywgMCB9IH0sCiAgICAgJiBpZm10X2xkYywgeyAweGMwOWMwIH0KICAgfSwKLS8qIHJzdHEkcGFjayAkR1JrLEAoJEdSaSwkR1JqKSAqLwotICB7Ci0gICAgeyAwLCAwLCAwLCAwIH0sCi0gICAgeyB7IE1ORU0sIE9QIChQQUNLKSwgJyAnLCBPUCAoR1JLKSwgJywnLCAnQCcsICcoJywgT1AgKEdSSSksICcsJywgT1AgKEdSSiksICcpJywgMCB9IH0sCi0gICAgJiBpZm10X3NsYXNzLCB7IDB4YzA5MDAgfQotICB9LAotLyogcnN0cWYkcGFjayAkRlJpbnRrLEAoJEdSaSwkR1JqKSAqLwotICB7Ci0gICAgeyAwLCAwLCAwLCAwIH0sCi0gICAgeyB7IE1ORU0sIE9QIChQQUNLKSwgJyAnLCBPUCAoRlJJTlRLKSwgJywnLCAnQCcsICcoJywgT1AgKEdSSSksICcsJywgT1AgKEdSSiksICcpJywgMCB9IH0sCi0gICAgJiBpZm10X2xkYmYsIHsgMHhjMGIwMCB9Ci0gIH0sCiAvKiBzdGJ1JHBhY2sgJEdSayxAKCRHUmksJEdSaikgKi8KICAgewogICAgIHsgMCwgMCwgMCwgMCB9LApAQCAtNDYxNiw2ICs0Njc1LDI0IEBACiAgICAgeyB7IE1ORU0sIE9QIChQQUNLKSwgMCB9IH0sCiAgICAgJiBpZm10X2JhciwgeyAweGMwZmMwIH0KICAgfSwKKy8qIGxyYWkkcGFjayAkR1JpLCRHUmssJExSQUUsJExSQUQsJExSQVMgKi8KKyAgeworICAgIHsgMCwgMCwgMCwgMCB9LAorICAgIHsgeyBNTkVNLCBPUCAoUEFDSyksICcgJywgT1AgKEdSSSksICcsJywgT1AgKEdSSyksICcsJywgT1AgKExSQUUpLCAnLCcsIE9QIChMUkFEKSwgJywnLCBPUCAoTFJBUyksIDAgfSB9LAorICAgICYgaWZtdF9scmFpLCB7IDB4YzA4MDAgfQorICB9LAorLyogbHJhZCRwYWNrICRHUmksJEdSaywkTFJBRSwkTFJBRCwkTFJBUyAqLworICB7CisgICAgeyAwLCAwLCAwLCAwIH0sCisgICAgeyB7IE1ORU0sIE9QIChQQUNLKSwgJyAnLCBPUCAoR1JJKSwgJywnLCBPUCAoR1JLKSwgJywnLCBPUCAoTFJBRSksICcsJywgT1AgKExSQUQpLCAnLCcsIE9QIChMUkFTKSwgMCB9IH0sCisgICAgJiBpZm10X2xyYWksIHsgMHhjMDg0MCB9CisgIH0sCisvKiB0bGJwciRwYWNrICRHUmksJEdSaiwkVExCUFJvcHgsJFRMQlBSTCAqLworICB7CisgICAgeyAwLCAwLCAwLCAwIH0sCisgICAgeyB7IE1ORU0sIE9QIChQQUNLKSwgJyAnLCBPUCAoR1JJKSwgJywnLCBPUCAoR1JKKSwgJywnLCBPUCAoVExCUFJPUFgpLCAnLCcsIE9QIChUTEJQUkwpLCAwIH0gfSwKKyAgICAmIGlmbXRfdGxicHIsIHsgMHhjMDkwMCB9CisgIH0sCiAvKiBjb3AxJHBhY2sgJHM2XzEsJENQUmksJENQUmosJENQUmsgKi8KICAgewogICAgIHsgMCwgMCwgMCwgMCB9LApAQCAtNTQ5OCw2ICs1NTc1LDMwIEBACiAgICAgeyB7IE1ORU0sIE9QIChQQUNLKSwgJyAnLCBPUCAoRlJJTlRJRVZFTiksICcsJywgT1AgKEZSSU5USkVWRU4pLCAnLCcsIE9QIChGUklOVEtFVkVOKSwgJywnLCBPUCAoQ0NJKSwgJywnLCBPUCAoQ09ORCksIDAgfSB9LAogICAgICYgaWZtdF9jbXFhZGRoc3MsIHsgMHgxY2MwMGMwIH0KICAgfSwKKy8qIG1xbGNscmhzJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEZSaW50a2V2ZW4gKi8KKyAgeworICAgIHsgMCwgMCwgMCwgMCB9LAorICAgIHsgeyBNTkVNLCBPUCAoUEFDSyksICcgJywgT1AgKEZSSU5USUVWRU4pLCAnLCcsIE9QIChGUklOVEpFVkVOKSwgJywnLCBPUCAoRlJJTlRLRVZFTiksIDAgfSB9LAorICAgICYgaWZtdF9tcXNhdGhzLCB7IDB4MWUwMDQwMCB9CisgIH0sCisvKiBtcWxtdGhzJHBhY2sgJEZSaW50aWV2ZW4sJEZSaW50amV2ZW4sJEZSaW50a2V2ZW4gKi8KKyAgeworICAgIHsgMCwgMCwgMCwgMCB9LAorICAgIHsgeyBNTkVNLCBPUCAoUEFDSyksICcgJywgT1AgKEZSSU5USUVWRU4pLCAnLCcsIE9QIChGUklOVEpFVkVOKSwgJywnLCBPUCAoRlJJTlRLRVZFTiksIDAgfSB9LAorICAgICYgaWZtdF9tcXNhdGhzLCB7IDB4MWUwMDUwMCB9CisgIH0sCisvKiBtcXNsbGhpJHBhY2sgJEZSaW50aWV2ZW4sJHU2LCRGUmludGtldmVuICovCisgIHsKKyAgICB7IDAsIDAsIDAsIDAgfSwKKyAgICB7IHsgTU5FTSwgT1AgKFBBQ0spLCAnICcsIE9QIChGUklOVElFVkVOKSwgJywnLCBPUCAoVTYpLCAnLCcsIE9QIChGUklOVEtFVkVOKSwgMCB9IH0sCisgICAgJiBpZm10X21xc2xsaGksIHsgMHgxZTAwNDQwIH0KKyAgfSwKKy8qIG1xc3JhaGkkcGFjayAkRlJpbnRpZXZlbiwkdTYsJEZSaW50a2V2ZW4gKi8KKyAgeworICAgIHsgMCwgMCwgMCwgMCB9LAorICAgIHsgeyBNTkVNLCBPUCAoUEFDSyksICcgJywgT1AgKEZSSU5USUVWRU4pLCAnLCcsIE9QIChVNiksICcsJywgT1AgKEZSSU5US0VWRU4pLCAwIH0gfSwKKyAgICAmIGlmbXRfbXFzbGxoaSwgeyAweDFlMDA0YzAgfQorICB9LAogLyogbWFkZGFjY3MkcGFjayAkQUNDNDBTaSwkQUNDNDBTayAqLwogICB7CiAgICAgeyAwLCAwLCAwLCAwIH0sCkBAIC01OTY2LDM3ICs2MDY3LDM3IEBACiAvKiBub3AkcGFjayAqLwogICB7CiAgICAgLTEsICJub3AiLCAibm9wIiwgMzIsCi0gICAgeyAwfEEoQUxJQVMpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKEFMSUFTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNDUwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQogICB9LAogLyogcmV0JHBhY2sgKi8KICAgewogICAgIC0xLCAicmV0IiwgInJldCIsIDMyLAotICAgIHsgMHxBKE5PX0RJUyl8QShBTElBUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfQjAxLCBGUjQwMF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShOT19ESVMpfEEoQUxJQVMpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0IwMSwgRlI0MDBfTUFKT1JfQl8zLCBGUjQ1MF9NQUpPUl9CXzMsIEZSNTAwX01BSk9SX0JfMywgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGNtcCRwYWNrICRHUmksJEdSaiwkSUNDaV8xICovCiAgIHsKICAgICAtMSwgImNtcCIsICJjbXAiLCAzMiwKLSAgICB7IDB8QShOT19ESVMpfEEoQUxJQVMpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKE5PX0RJUyl8QShBTElBUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGNtcGkkcGFjayAkR1JpLCRzMTAsJElDQ2lfMSAqLwogICB7CiAgICAgLTEsICJjbXBpIiwgImNtcGkiLCAzMiwKLSAgICB7IDB8QShOT19ESVMpfEEoQUxJQVMpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKE5PX0RJUyl8QShBTElBUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIGNjbXAkcGFjayAkR1JpLCRHUmosJENDaSwkY29uZCAqLwogICB7CiAgICAgLTEsICJjY21wIiwgImNjbXAiLCAzMiwKLSAgICB7IDB8QShDT05ESVRJT05BTCl8QShOT19ESVMpfEEoQUxJQVMpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI1MDBfTUFKT1JfSV8xLCBGUjU1MF9NQUpPUl9OT05FIH0gfQorICAgIHsgMHxBKENPTkRJVElPTkFMKXxBKE5PX0RJUyl8QShBTElBUyksIHsgKDE8PE1BQ0hfQkFTRSksIFVOSVRfSUFMTCwgRlI0MDBfTUFKT1JfSV8xLCBGUjQ1MF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KICAgfSwKIC8qIG1vdiRwYWNrICRHUmksJEdSayAqLwogICB7CiAgICAgLTEsICJtb3YiLCAibW92IiwgMzIsCi0gICAgeyAwfEEoTk9fRElTKXxBKEFMSUFTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShOT19ESVMpfEEoQUxJQVMpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiAvKiBjbW92JHBhY2sgJEdSaSwkR1JrLCRDQ2ksJGNvbmQgKi8KICAgewogICAgIC0xLCAiY21vdiIsICJjbW92IiwgMzIsCi0gICAgeyAwfEEoQ09ORElUSU9OQUwpfEEoTk9fRElTKXxBKEFMSUFTKSwgeyAoMTw8TUFDSF9CQVNFKSwgVU5JVF9JQUxMLCBGUjQwMF9NQUpPUl9JXzEsIEZSNTAwX01BSk9SX0lfMSwgRlI1NTBfTUFKT1JfTk9ORSB9IH0KKyAgICB7IDB8QShDT05ESVRJT05BTCl8QShOT19ESVMpfEEoQUxJQVMpLCB7ICgxPDxNQUNIX0JBU0UpLCBVTklUX0lBTEwsIEZSNDAwX01BSk9SX0lfMSwgRlI0NTBfTUFKT1JfSV8xLCBGUjUwMF9NQUpPUl9JXzEsIEZSNTUwX01BSk9SX05PTkUgfSB9CiAgIH0sCiB9OwogCmRpZmYgLS1naXQgYS9vcGNvZGVzL2Zydi1vcGMuaCBiL29wY29kZXMvZnJ2LW9wYy5oCmluZGV4IGUxNjZmYTIuLmRkMzQzZGUgMTAwNjQ0Ci0tLSBhL29wY29kZXMvZnJ2LW9wYy5oCisrKyBiL29wY29kZXMvZnJ2LW9wYy5oCkBAIC0xMDgsMTQ5ICsxMDgsMTQ4IEBACiAgLCBGUlZfSU5TTl9MRERJLCBGUlZfSU5TTl9MRERGSSwgRlJWX0lOU05fTkxEREksIEZSVl9JTlNOX05MRERGSQogICwgRlJWX0lOU05fTERRSSwgRlJWX0lOU05fTERRRkksIEZSVl9JTlNOX05MRFFGSSwgRlJWX0lOU05fU1RCCiAgLCBGUlZfSU5TTl9TVEgsIEZSVl9JTlNOX1NULCBGUlZfSU5TTl9TVEJGLCBGUlZfSU5TTl9TVEhGCi0gLCBGUlZfSU5TTl9TVEYsIEZSVl9JTlNOX1NUQywgRlJWX0lOU05fUlNUQiwgRlJWX0lOU05fUlNUSAotICwgRlJWX0lOU05fUlNULCBGUlZfSU5TTl9SU1RCRiwgRlJWX0lOU05fUlNUSEYsIEZSVl9JTlNOX1JTVEYKLSAsIEZSVl9JTlNOX1NURCwgRlJWX0lOU05fU1RERiwgRlJWX0lOU05fU1REQywgRlJWX0lOU05fUlNURAotICwgRlJWX0lOU05fUlNUREYsIEZSVl9JTlNOX1NUUSwgRlJWX0lOU05fU1RRRiwgRlJWX0lOU05fU1RRQwotICwgRlJWX0lOU05fUlNUUSwgRlJWX0lOU05fUlNUUUYsIEZSVl9JTlNOX1NUQlUsIEZSVl9JTlNOX1NUSFUKLSAsIEZSVl9JTlNOX1NUVSwgRlJWX0lOU05fU1RCRlUsIEZSVl9JTlNOX1NUSEZVLCBGUlZfSU5TTl9TVEZVCi0gLCBGUlZfSU5TTl9TVENVLCBGUlZfSU5TTl9TVERVLCBGUlZfSU5TTl9TVERGVSwgRlJWX0lOU05fU1REQ1UKLSAsIEZSVl9JTlNOX1NUUVUsIEZSVl9JTlNOX1NUUUZVLCBGUlZfSU5TTl9TVFFDVSwgRlJWX0lOU05fQ0xEU0IKLSAsIEZSVl9JTlNOX0NMRFVCLCBGUlZfSU5TTl9DTERTSCwgRlJWX0lOU05fQ0xEVUgsIEZSVl9JTlNOX0NMRAotICwgRlJWX0lOU05fQ0xEQkYsIEZSVl9JTlNOX0NMREhGLCBGUlZfSU5TTl9DTERGLCBGUlZfSU5TTl9DTERECi0gLCBGUlZfSU5TTl9DTERERiwgRlJWX0lOU05fQ0xEUSwgRlJWX0lOU05fQ0xEU0JVLCBGUlZfSU5TTl9DTERVQlUKLSAsIEZSVl9JTlNOX0NMRFNIVSwgRlJWX0lOU05fQ0xEVUhVLCBGUlZfSU5TTl9DTERVLCBGUlZfSU5TTl9DTERCRlUKLSAsIEZSVl9JTlNOX0NMREhGVSwgRlJWX0lOU05fQ0xERlUsIEZSVl9JTlNOX0NMRERVLCBGUlZfSU5TTl9DTERERlUKLSAsIEZSVl9JTlNOX0NMRFFVLCBGUlZfSU5TTl9DU1RCLCBGUlZfSU5TTl9DU1RILCBGUlZfSU5TTl9DU1QKLSAsIEZSVl9JTlNOX0NTVEJGLCBGUlZfSU5TTl9DU1RIRiwgRlJWX0lOU05fQ1NURiwgRlJWX0lOU05fQ1NURAotICwgRlJWX0lOU05fQ1NUREYsIEZSVl9JTlNOX0NTVFEsIEZSVl9JTlNOX0NTVEJVLCBGUlZfSU5TTl9DU1RIVQotICwgRlJWX0lOU05fQ1NUVSwgRlJWX0lOU05fQ1NUQkZVLCBGUlZfSU5TTl9DU1RIRlUsIEZSVl9JTlNOX0NTVEZVCi0gLCBGUlZfSU5TTl9DU1REVSwgRlJWX0lOU05fQ1NUREZVLCBGUlZfSU5TTl9TVEJJLCBGUlZfSU5TTl9TVEhJCi0gLCBGUlZfSU5TTl9TVEksIEZSVl9JTlNOX1NUQkZJLCBGUlZfSU5TTl9TVEhGSSwgRlJWX0lOU05fU1RGSQotICwgRlJWX0lOU05fU1RESSwgRlJWX0lOU05fU1RERkksIEZSVl9JTlNOX1NUUUksIEZSVl9JTlNOX1NUUUZJCi0gLCBGUlZfSU5TTl9TV0FQLCBGUlZfSU5TTl9TV0FQSSwgRlJWX0lOU05fQ1NXQVAsIEZSVl9JTlNOX01PVkdGCi0gLCBGUlZfSU5TTl9NT1ZGRywgRlJWX0lOU05fTU9WR0ZELCBGUlZfSU5TTl9NT1ZGR0QsIEZSVl9JTlNOX01PVkdGUQotICwgRlJWX0lOU05fTU9WRkdRLCBGUlZfSU5TTl9DTU9WR0YsIEZSVl9JTlNOX0NNT1ZGRywgRlJWX0lOU05fQ01PVkdGRAotICwgRlJWX0lOU05fQ01PVkZHRCwgRlJWX0lOU05fTU9WR1MsIEZSVl9JTlNOX01PVlNHLCBGUlZfSU5TTl9CUkEKLSAsIEZSVl9JTlNOX0JOTywgRlJWX0lOU05fQkVRLCBGUlZfSU5TTl9CTkUsIEZSVl9JTlNOX0JMRQotICwgRlJWX0lOU05fQkdULCBGUlZfSU5TTl9CTFQsIEZSVl9JTlNOX0JHRSwgRlJWX0lOU05fQkxTCi0gLCBGUlZfSU5TTl9CSEksIEZSVl9JTlNOX0JDLCBGUlZfSU5TTl9CTkMsIEZSVl9JTlNOX0JOCi0gLCBGUlZfSU5TTl9CUCwgRlJWX0lOU05fQlYsIEZSVl9JTlNOX0JOViwgRlJWX0lOU05fRkJSQQotICwgRlJWX0lOU05fRkJOTywgRlJWX0lOU05fRkJORSwgRlJWX0lOU05fRkJFUSwgRlJWX0lOU05fRkJMRwotICwgRlJWX0lOU05fRkJVRSwgRlJWX0lOU05fRkJVTCwgRlJWX0lOU05fRkJHRSwgRlJWX0lOU05fRkJMVAotICwgRlJWX0lOU05fRkJVR0UsIEZSVl9JTlNOX0ZCVUcsIEZSVl9JTlNOX0ZCTEUsIEZSVl9JTlNOX0ZCR1QKLSAsIEZSVl9JTlNOX0ZCVUxFLCBGUlZfSU5TTl9GQlUsIEZSVl9JTlNOX0ZCTywgRlJWX0lOU05fQkNUUkxSCi0gLCBGUlZfSU5TTl9CUkFMUiwgRlJWX0lOU05fQk5PTFIsIEZSVl9JTlNOX0JFUUxSLCBGUlZfSU5TTl9CTkVMUgotICwgRlJWX0lOU05fQkxFTFIsIEZSVl9JTlNOX0JHVExSLCBGUlZfSU5TTl9CTFRMUiwgRlJWX0lOU05fQkdFTFIKLSAsIEZSVl9JTlNOX0JMU0xSLCBGUlZfSU5TTl9CSElMUiwgRlJWX0lOU05fQkNMUiwgRlJWX0lOU05fQk5DTFIKLSAsIEZSVl9JTlNOX0JOTFIsIEZSVl9JTlNOX0JQTFIsIEZSVl9JTlNOX0JWTFIsIEZSVl9JTlNOX0JOVkxSCi0gLCBGUlZfSU5TTl9GQlJBTFIsIEZSVl9JTlNOX0ZCTk9MUiwgRlJWX0lOU05fRkJFUUxSLCBGUlZfSU5TTl9GQk5FTFIKLSAsIEZSVl9JTlNOX0ZCTEdMUiwgRlJWX0lOU05fRkJVRUxSLCBGUlZfSU5TTl9GQlVMTFIsIEZSVl9JTlNOX0ZCR0VMUgotICwgRlJWX0lOU05fRkJMVExSLCBGUlZfSU5TTl9GQlVHRUxSLCBGUlZfSU5TTl9GQlVHTFIsIEZSVl9JTlNOX0ZCTEVMUgotICwgRlJWX0lOU05fRkJHVExSLCBGUlZfSU5TTl9GQlVMRUxSLCBGUlZfSU5TTl9GQlVMUiwgRlJWX0lOU05fRkJPTFIKLSAsIEZSVl9JTlNOX0JDUkFMUiwgRlJWX0lOU05fQkNOT0xSLCBGUlZfSU5TTl9CQ0VRTFIsIEZSVl9JTlNOX0JDTkVMUgotICwgRlJWX0lOU05fQkNMRUxSLCBGUlZfSU5TTl9CQ0dUTFIsIEZSVl9JTlNOX0JDTFRMUiwgRlJWX0lOU05fQkNHRUxSCi0gLCBGUlZfSU5TTl9CQ0xTTFIsIEZSVl9JTlNOX0JDSElMUiwgRlJWX0lOU05fQkNDTFIsIEZSVl9JTlNOX0JDTkNMUgotICwgRlJWX0lOU05fQkNOTFIsIEZSVl9JTlNOX0JDUExSLCBGUlZfSU5TTl9CQ1ZMUiwgRlJWX0lOU05fQkNOVkxSCi0gLCBGUlZfSU5TTl9GQ0JSQUxSLCBGUlZfSU5TTl9GQ0JOT0xSLCBGUlZfSU5TTl9GQ0JFUUxSLCBGUlZfSU5TTl9GQ0JORUxSCi0gLCBGUlZfSU5TTl9GQ0JMR0xSLCBGUlZfSU5TTl9GQ0JVRUxSLCBGUlZfSU5TTl9GQ0JVTExSLCBGUlZfSU5TTl9GQ0JHRUxSCi0gLCBGUlZfSU5TTl9GQ0JMVExSLCBGUlZfSU5TTl9GQ0JVR0VMUiwgRlJWX0lOU05fRkNCVUdMUiwgRlJWX0lOU05fRkNCTEVMUgotICwgRlJWX0lOU05fRkNCR1RMUiwgRlJWX0lOU05fRkNCVUxFTFIsIEZSVl9JTlNOX0ZDQlVMUiwgRlJWX0lOU05fRkNCT0xSCi0gLCBGUlZfSU5TTl9KTVBMLCBGUlZfSU5TTl9DQUxMTCwgRlJWX0lOU05fSk1QSUwsIEZSVl9JTlNOX0NBTExJTAotICwgRlJWX0lOU05fQ0FMTCwgRlJWX0lOU05fUkVUVCwgRlJWX0lOU05fUkVJLCBGUlZfSU5TTl9UUkEKLSAsIEZSVl9JTlNOX1ROTywgRlJWX0lOU05fVEVRLCBGUlZfSU5TTl9UTkUsIEZSVl9JTlNOX1RMRQotICwgRlJWX0lOU05fVEdULCBGUlZfSU5TTl9UTFQsIEZSVl9JTlNOX1RHRSwgRlJWX0lOU05fVExTCi0gLCBGUlZfSU5TTl9USEksIEZSVl9JTlNOX1RDLCBGUlZfSU5TTl9UTkMsIEZSVl9JTlNOX1ROCi0gLCBGUlZfSU5TTl9UUCwgRlJWX0lOU05fVFYsIEZSVl9JTlNOX1ROViwgRlJWX0lOU05fRlRSQQotICwgRlJWX0lOU05fRlROTywgRlJWX0lOU05fRlRORSwgRlJWX0lOU05fRlRFUSwgRlJWX0lOU05fRlRMRwotICwgRlJWX0lOU05fRlRVRSwgRlJWX0lOU05fRlRVTCwgRlJWX0lOU05fRlRHRSwgRlJWX0lOU05fRlRMVAotICwgRlJWX0lOU05fRlRVR0UsIEZSVl9JTlNOX0ZUVUcsIEZSVl9JTlNOX0ZUTEUsIEZSVl9JTlNOX0ZUR1QKLSAsIEZSVl9JTlNOX0ZUVUxFLCBGUlZfSU5TTl9GVFUsIEZSVl9JTlNOX0ZUTywgRlJWX0lOU05fVElSQQotICwgRlJWX0lOU05fVElOTywgRlJWX0lOU05fVElFUSwgRlJWX0lOU05fVElORSwgRlJWX0lOU05fVElMRQotICwgRlJWX0lOU05fVElHVCwgRlJWX0lOU05fVElMVCwgRlJWX0lOU05fVElHRSwgRlJWX0lOU05fVElMUwotICwgRlJWX0lOU05fVElISSwgRlJWX0lOU05fVElDLCBGUlZfSU5TTl9USU5DLCBGUlZfSU5TTl9USU4KLSAsIEZSVl9JTlNOX1RJUCwgRlJWX0lOU05fVElWLCBGUlZfSU5TTl9USU5WLCBGUlZfSU5TTl9GVElSQQotICwgRlJWX0lOU05fRlRJTk8sIEZSVl9JTlNOX0ZUSU5FLCBGUlZfSU5TTl9GVElFUSwgRlJWX0lOU05fRlRJTEcKLSAsIEZSVl9JTlNOX0ZUSVVFLCBGUlZfSU5TTl9GVElVTCwgRlJWX0lOU05fRlRJR0UsIEZSVl9JTlNOX0ZUSUxUCi0gLCBGUlZfSU5TTl9GVElVR0UsIEZSVl9JTlNOX0ZUSVVHLCBGUlZfSU5TTl9GVElMRSwgRlJWX0lOU05fRlRJR1QKLSAsIEZSVl9JTlNOX0ZUSVVMRSwgRlJWX0lOU05fRlRJVSwgRlJWX0lOU05fRlRJTywgRlJWX0lOU05fQlJFQUsKLSAsIEZSVl9JTlNOX01UUkFQLCBGUlZfSU5TTl9BTkRDUiwgRlJWX0lOU05fT1JDUiwgRlJWX0lOU05fWE9SQ1IKLSAsIEZSVl9JTlNOX05BTkRDUiwgRlJWX0lOU05fTk9SQ1IsIEZSVl9JTlNOX0FORE5DUiwgRlJWX0lOU05fT1JOQ1IKLSAsIEZSVl9JTlNOX05BTkROQ1IsIEZSVl9JTlNOX05PUk5DUiwgRlJWX0lOU05fTk9UQ1IsIEZSVl9JTlNOX0NLUkEKLSAsIEZSVl9JTlNOX0NLTk8sIEZSVl9JTlNOX0NLRVEsIEZSVl9JTlNOX0NLTkUsIEZSVl9JTlNOX0NLTEUKLSAsIEZSVl9JTlNOX0NLR1QsIEZSVl9JTlNOX0NLTFQsIEZSVl9JTlNOX0NLR0UsIEZSVl9JTlNOX0NLTFMKLSAsIEZSVl9JTlNOX0NLSEksIEZSVl9JTlNOX0NLQywgRlJWX0lOU05fQ0tOQywgRlJWX0lOU05fQ0tOCi0gLCBGUlZfSU5TTl9DS1AsIEZSVl9JTlNOX0NLViwgRlJWX0lOU05fQ0tOViwgRlJWX0lOU05fRkNLUkEKLSAsIEZSVl9JTlNOX0ZDS05PLCBGUlZfSU5TTl9GQ0tORSwgRlJWX0lOU05fRkNLRVEsIEZSVl9JTlNOX0ZDS0xHCi0gLCBGUlZfSU5TTl9GQ0tVRSwgRlJWX0lOU05fRkNLVUwsIEZSVl9JTlNOX0ZDS0dFLCBGUlZfSU5TTl9GQ0tMVAotICwgRlJWX0lOU05fRkNLVUdFLCBGUlZfSU5TTl9GQ0tVRywgRlJWX0lOU05fRkNLTEUsIEZSVl9JTlNOX0ZDS0dUCi0gLCBGUlZfSU5TTl9GQ0tVTEUsIEZSVl9JTlNOX0ZDS1UsIEZSVl9JTlNOX0ZDS08sIEZSVl9JTlNOX0NDS1JBCi0gLCBGUlZfSU5TTl9DQ0tOTywgRlJWX0lOU05fQ0NLRVEsIEZSVl9JTlNOX0NDS05FLCBGUlZfSU5TTl9DQ0tMRQotICwgRlJWX0lOU05fQ0NLR1QsIEZSVl9JTlNOX0NDS0xULCBGUlZfSU5TTl9DQ0tHRSwgRlJWX0lOU05fQ0NLTFMKLSAsIEZSVl9JTlNOX0NDS0hJLCBGUlZfSU5TTl9DQ0tDLCBGUlZfSU5TTl9DQ0tOQywgRlJWX0lOU05fQ0NLTgotICwgRlJWX0lOU05fQ0NLUCwgRlJWX0lOU05fQ0NLViwgRlJWX0lOU05fQ0NLTlYsIEZSVl9JTlNOX0NGQ0tSQQotICwgRlJWX0lOU05fQ0ZDS05PLCBGUlZfSU5TTl9DRkNLTkUsIEZSVl9JTlNOX0NGQ0tFUSwgRlJWX0lOU05fQ0ZDS0xHCi0gLCBGUlZfSU5TTl9DRkNLVUUsIEZSVl9JTlNOX0NGQ0tVTCwgRlJWX0lOU05fQ0ZDS0dFLCBGUlZfSU5TTl9DRkNLTFQKLSAsIEZSVl9JTlNOX0NGQ0tVR0UsIEZSVl9JTlNOX0NGQ0tVRywgRlJWX0lOU05fQ0ZDS0xFLCBGUlZfSU5TTl9DRkNLR1QKLSAsIEZSVl9JTlNOX0NGQ0tVTEUsIEZSVl9JTlNOX0NGQ0tVLCBGUlZfSU5TTl9DRkNLTywgRlJWX0lOU05fQ0pNUEwKLSAsIEZSVl9JTlNOX0NDQUxMTCwgRlJWX0lOU05fSUNJLCBGUlZfSU5TTl9EQ0ksIEZSVl9JTlNOX0lDRUkKLSAsIEZSVl9JTlNOX0RDRUksIEZSVl9JTlNOX0RDRiwgRlJWX0lOU05fRENFRiwgRlJWX0lOU05fV0lUTEIKLSAsIEZSVl9JTlNOX1dEVExCLCBGUlZfSU5TTl9JVExCSSwgRlJWX0lOU05fRFRMQkksIEZSVl9JTlNOX0lDUEwKLSAsIEZSVl9JTlNOX0RDUEwsIEZSVl9JTlNOX0lDVUwsIEZSVl9JTlNOX0RDVUwsIEZSVl9JTlNOX0JBUgotICwgRlJWX0lOU05fTUVNQkFSLCBGUlZfSU5TTl9DT1AxLCBGUlZfSU5TTl9DT1AyLCBGUlZfSU5TTl9DTFJHUgotICwgRlJWX0lOU05fQ0xSRlIsIEZSVl9JTlNOX0NMUkdBLCBGUlZfSU5TTl9DTFJGQSwgRlJWX0lOU05fQ09NTUlUR1IKLSAsIEZSVl9JTlNOX0NPTU1JVEZSLCBGUlZfSU5TTl9DT01NSVRHQSwgRlJWX0lOU05fQ09NTUlURkEsIEZSVl9JTlNOX0ZJVE9TCi0gLCBGUlZfSU5TTl9GU1RPSSwgRlJWX0lOU05fRklUT0QsIEZSVl9JTlNOX0ZEVE9JLCBGUlZfSU5TTl9GRElUT1MKLSAsIEZSVl9JTlNOX0ZEU1RPSSwgRlJWX0lOU05fTkZESVRPUywgRlJWX0lOU05fTkZEU1RPSSwgRlJWX0lOU05fQ0ZJVE9TCi0gLCBGUlZfSU5TTl9DRlNUT0ksIEZSVl9JTlNOX05GSVRPUywgRlJWX0lOU05fTkZTVE9JLCBGUlZfSU5TTl9GTU9WUwotICwgRlJWX0lOU05fRk1PVkQsIEZSVl9JTlNOX0ZETU9WUywgRlJWX0lOU05fQ0ZNT1ZTLCBGUlZfSU5TTl9GTkVHUwotICwgRlJWX0lOU05fRk5FR0QsIEZSVl9JTlNOX0ZETkVHUywgRlJWX0lOU05fQ0ZORUdTLCBGUlZfSU5TTl9GQUJTUwotICwgRlJWX0lOU05fRkFCU0QsIEZSVl9JTlNOX0ZEQUJTUywgRlJWX0lOU05fQ0ZBQlNTLCBGUlZfSU5TTl9GU1FSVFMKLSAsIEZSVl9JTlNOX0ZEU1FSVFMsIEZSVl9JTlNOX05GRFNRUlRTLCBGUlZfSU5TTl9GU1FSVEQsIEZSVl9JTlNOX0NGU1FSVFMKLSAsIEZSVl9JTlNOX05GU1FSVFMsIEZSVl9JTlNOX0ZBRERTLCBGUlZfSU5TTl9GU1VCUywgRlJWX0lOU05fRk1VTFMKLSAsIEZSVl9JTlNOX0ZESVZTLCBGUlZfSU5TTl9GQURERCwgRlJWX0lOU05fRlNVQkQsIEZSVl9JTlNOX0ZNVUxECi0gLCBGUlZfSU5TTl9GRElWRCwgRlJWX0lOU05fQ0ZBRERTLCBGUlZfSU5TTl9DRlNVQlMsIEZSVl9JTlNOX0NGTVVMUwotICwgRlJWX0lOU05fQ0ZESVZTLCBGUlZfSU5TTl9ORkFERFMsIEZSVl9JTlNOX05GU1VCUywgRlJWX0lOU05fTkZNVUxTCi0gLCBGUlZfSU5TTl9ORkRJVlMsIEZSVl9JTlNOX0ZDTVBTLCBGUlZfSU5TTl9GQ01QRCwgRlJWX0lOU05fQ0ZDTVBTCi0gLCBGUlZfSU5TTl9GRENNUFMsIEZSVl9JTlNOX0ZNQUREUywgRlJWX0lOU05fRk1TVUJTLCBGUlZfSU5TTl9GTUFEREQKLSAsIEZSVl9JTlNOX0ZNU1VCRCwgRlJWX0lOU05fRkRNQUREUywgRlJWX0lOU05fTkZETUFERFMsIEZSVl9JTlNOX0NGTUFERFMKLSAsIEZSVl9JTlNOX0NGTVNVQlMsIEZSVl9JTlNOX05GTUFERFMsIEZSVl9JTlNOX05GTVNVQlMsIEZSVl9JTlNOX0ZNQVMKLSAsIEZSVl9JTlNOX0ZNU1MsIEZSVl9JTlNOX0ZETUFTLCBGUlZfSU5TTl9GRE1TUywgRlJWX0lOU05fTkZETUFTCi0gLCBGUlZfSU5TTl9ORkRNU1MsIEZSVl9JTlNOX0NGTUFTLCBGUlZfSU5TTl9DRk1TUywgRlJWX0lOU05fRk1BRAotICwgRlJWX0lOU05fRk1TRCwgRlJWX0lOU05fTkZNQVMsIEZSVl9JTlNOX05GTVNTLCBGUlZfSU5TTl9GREFERFMKLSAsIEZSVl9JTlNOX0ZEU1VCUywgRlJWX0lOU05fRkRNVUxTLCBGUlZfSU5TTl9GRERJVlMsIEZSVl9JTlNOX0ZEU0FEUwotICwgRlJWX0lOU05fRkRNVUxDUywgRlJWX0lOU05fTkZETVVMQ1MsIEZSVl9JTlNOX05GREFERFMsIEZSVl9JTlNOX05GRFNVQlMKLSAsIEZSVl9JTlNOX05GRE1VTFMsIEZSVl9JTlNOX05GRERJVlMsIEZSVl9JTlNOX05GRFNBRFMsIEZSVl9JTlNOX05GRENNUFMKLSAsIEZSVl9JTlNOX01IU0VUTE9TLCBGUlZfSU5TTl9NSFNFVEhJUywgRlJWX0lOU05fTUhEU0VUUywgRlJWX0lOU05fTUhTRVRMT0gKLSAsIEZSVl9JTlNOX01IU0VUSElILCBGUlZfSU5TTl9NSERTRVRILCBGUlZfSU5TTl9NQU5ELCBGUlZfSU5TTl9NT1IKLSAsIEZSVl9JTlNOX01YT1IsIEZSVl9JTlNOX0NNQU5ELCBGUlZfSU5TTl9DTU9SLCBGUlZfSU5TTl9DTVhPUgotICwgRlJWX0lOU05fTU5PVCwgRlJWX0lOU05fQ01OT1QsIEZSVl9JTlNOX01ST1RMSSwgRlJWX0lOU05fTVJPVFJJCi0gLCBGUlZfSU5TTl9NV0NVVCwgRlJWX0lOU05fTVdDVVRJLCBGUlZfSU5TTl9NQ1VULCBGUlZfSU5TTl9NQ1VUSQotICwgRlJWX0lOU05fTUNVVFNTLCBGUlZfSU5TTl9NQ1VUU1NJLCBGUlZfSU5TTl9NRENVVFNTSSwgRlJWX0lOU05fTUFWRUgKLSAsIEZSVl9JTlNOX01TTExISSwgRlJWX0lOU05fTVNSTEhJLCBGUlZfSU5TTl9NU1JBSEksIEZSVl9JTlNOX01EUk9UTEkKLSAsIEZSVl9JTlNOX01DUExISSwgRlJWX0lOU05fTUNQTEksIEZSVl9JTlNOX01TQVRIUywgRlJWX0lOU05fTVFTQVRIUwotICwgRlJWX0lOU05fTVNBVEhVLCBGUlZfSU5TTl9NQ01QU0gsIEZSVl9JTlNOX01DTVBVSCwgRlJWX0lOU05fTUFCU0hTCi0gLCBGUlZfSU5TTl9NQURESFNTLCBGUlZfSU5TTl9NQURESFVTLCBGUlZfSU5TTl9NU1VCSFNTLCBGUlZfSU5TTl9NU1VCSFVTCi0gLCBGUlZfSU5TTl9DTUFEREhTUywgRlJWX0lOU05fQ01BRERIVVMsIEZSVl9JTlNOX0NNU1VCSFNTLCBGUlZfSU5TTl9DTVNVQkhVUwotICwgRlJWX0lOU05fTVFBRERIU1MsIEZSVl9JTlNOX01RQURESFVTLCBGUlZfSU5TTl9NUVNVQkhTUywgRlJWX0lOU05fTVFTVUJIVVMKLSAsIEZSVl9JTlNOX0NNUUFEREhTUywgRlJWX0lOU05fQ01RQURESFVTLCBGUlZfSU5TTl9DTVFTVUJIU1MsIEZSVl9JTlNOX0NNUVNVQkhVUwotICwgRlJWX0lOU05fTUFEREFDQ1MsIEZSVl9JTlNOX01TVUJBQ0NTLCBGUlZfSU5TTl9NREFEREFDQ1MsIEZSVl9JTlNOX01EU1VCQUNDUwotICwgRlJWX0lOU05fTUFTQUNDUywgRlJWX0lOU05fTURBU0FDQ1MsIEZSVl9JTlNOX01NVUxIUywgRlJWX0lOU05fTU1VTEhVCi0gLCBGUlZfSU5TTl9NTVVMWEhTLCBGUlZfSU5TTl9NTVVMWEhVLCBGUlZfSU5TTl9DTU1VTEhTLCBGUlZfSU5TTl9DTU1VTEhVCi0gLCBGUlZfSU5TTl9NUU1VTEhTLCBGUlZfSU5TTl9NUU1VTEhVLCBGUlZfSU5TTl9NUU1VTFhIUywgRlJWX0lOU05fTVFNVUxYSFUKLSAsIEZSVl9JTlNOX0NNUU1VTEhTLCBGUlZfSU5TTl9DTVFNVUxIVSwgRlJWX0lOU05fTU1BQ0hTLCBGUlZfSU5TTl9NTUFDSFUKLSAsIEZSVl9JTlNOX01NUkRIUywgRlJWX0lOU05fTU1SREhVLCBGUlZfSU5TTl9DTU1BQ0hTLCBGUlZfSU5TTl9DTU1BQ0hVCi0gLCBGUlZfSU5TTl9NUU1BQ0hTLCBGUlZfSU5TTl9NUU1BQ0hVLCBGUlZfSU5TTl9DTVFNQUNIUywgRlJWX0lOU05fQ01RTUFDSFUKLSAsIEZSVl9JTlNOX01RWE1BQ0hTLCBGUlZfSU5TTl9NUVhNQUNYSFMsIEZSVl9JTlNOX01RTUFDWEhTLCBGUlZfSU5TTl9NQ1BYUlMKLSAsIEZSVl9JTlNOX01DUFhSVSwgRlJWX0lOU05fTUNQWElTLCBGUlZfSU5TTl9NQ1BYSVUsIEZSVl9JTlNOX0NNQ1BYUlMKLSAsIEZSVl9JTlNOX0NNQ1BYUlUsIEZSVl9JTlNOX0NNQ1BYSVMsIEZSVl9JTlNOX0NNQ1BYSVUsIEZSVl9JTlNOX01RQ1BYUlMKLSAsIEZSVl9JTlNOX01RQ1BYUlUsIEZSVl9JTlNOX01RQ1BYSVMsIEZSVl9JTlNOX01RQ1BYSVUsIEZSVl9JTlNOX01FWFBESFcKLSAsIEZSVl9JTlNOX0NNRVhQREhXLCBGUlZfSU5TTl9NRVhQREhELCBGUlZfSU5TTl9DTUVYUERIRCwgRlJWX0lOU05fTVBBQ0tICi0gLCBGUlZfSU5TTl9NRFBBQ0tILCBGUlZfSU5TTl9NVU5QQUNLSCwgRlJWX0lOU05fTURVTlBBQ0tILCBGUlZfSU5TTl9NQlRPSAotICwgRlJWX0lOU05fQ01CVE9ILCBGUlZfSU5TTl9NSFRPQiwgRlJWX0lOU05fQ01IVE9CLCBGUlZfSU5TTl9NQlRPSEUKLSAsIEZSVl9JTlNOX0NNQlRPSEUsIEZSVl9JTlNOX01OT1AsIEZSVl9JTlNOX01DTFJBQ0NfMCwgRlJWX0lOU05fTUNMUkFDQ18xCi0gLCBGUlZfSU5TTl9NUkRBQ0MsIEZSVl9JTlNOX01SREFDQ0csIEZSVl9JTlNOX01XVEFDQywgRlJWX0lOU05fTVdUQUNDRwotICwgRlJWX0lOU05fTUNPUDEsIEZSVl9JTlNOX01DT1AyLCBGUlZfSU5TTl9GTk9QCisgLCBGUlZfSU5TTl9TVEYsIEZSVl9JTlNOX1NUQywgRlJWX0lOU05fU1RELCBGUlZfSU5TTl9TVERGCisgLCBGUlZfSU5TTl9TVERDLCBGUlZfSU5TTl9TVFEsIEZSVl9JTlNOX1NUUUYsIEZSVl9JTlNOX1NUUUMKKyAsIEZSVl9JTlNOX1NUQlUsIEZSVl9JTlNOX1NUSFUsIEZSVl9JTlNOX1NUVSwgRlJWX0lOU05fU1RCRlUKKyAsIEZSVl9JTlNOX1NUSEZVLCBGUlZfSU5TTl9TVEZVLCBGUlZfSU5TTl9TVENVLCBGUlZfSU5TTl9TVERVCisgLCBGUlZfSU5TTl9TVERGVSwgRlJWX0lOU05fU1REQ1UsIEZSVl9JTlNOX1NUUVUsIEZSVl9JTlNOX1NUUUZVCisgLCBGUlZfSU5TTl9TVFFDVSwgRlJWX0lOU05fQ0xEU0IsIEZSVl9JTlNOX0NMRFVCLCBGUlZfSU5TTl9DTERTSAorICwgRlJWX0lOU05fQ0xEVUgsIEZSVl9JTlNOX0NMRCwgRlJWX0lOU05fQ0xEQkYsIEZSVl9JTlNOX0NMREhGCisgLCBGUlZfSU5TTl9DTERGLCBGUlZfSU5TTl9DTERELCBGUlZfSU5TTl9DTERERiwgRlJWX0lOU05fQ0xEUQorICwgRlJWX0lOU05fQ0xEU0JVLCBGUlZfSU5TTl9DTERVQlUsIEZSVl9JTlNOX0NMRFNIVSwgRlJWX0lOU05fQ0xEVUhVCisgLCBGUlZfSU5TTl9DTERVLCBGUlZfSU5TTl9DTERCRlUsIEZSVl9JTlNOX0NMREhGVSwgRlJWX0lOU05fQ0xERlUKKyAsIEZSVl9JTlNOX0NMRERVLCBGUlZfSU5TTl9DTERERlUsIEZSVl9JTlNOX0NMRFFVLCBGUlZfSU5TTl9DU1RCCisgLCBGUlZfSU5TTl9DU1RILCBGUlZfSU5TTl9DU1QsIEZSVl9JTlNOX0NTVEJGLCBGUlZfSU5TTl9DU1RIRgorICwgRlJWX0lOU05fQ1NURiwgRlJWX0lOU05fQ1NURCwgRlJWX0lOU05fQ1NUREYsIEZSVl9JTlNOX0NTVFEKKyAsIEZSVl9JTlNOX0NTVEJVLCBGUlZfSU5TTl9DU1RIVSwgRlJWX0lOU05fQ1NUVSwgRlJWX0lOU05fQ1NUQkZVCisgLCBGUlZfSU5TTl9DU1RIRlUsIEZSVl9JTlNOX0NTVEZVLCBGUlZfSU5TTl9DU1REVSwgRlJWX0lOU05fQ1NUREZVCisgLCBGUlZfSU5TTl9TVEJJLCBGUlZfSU5TTl9TVEhJLCBGUlZfSU5TTl9TVEksIEZSVl9JTlNOX1NUQkZJCisgLCBGUlZfSU5TTl9TVEhGSSwgRlJWX0lOU05fU1RGSSwgRlJWX0lOU05fU1RESSwgRlJWX0lOU05fU1RERkkKKyAsIEZSVl9JTlNOX1NUUUksIEZSVl9JTlNOX1NUUUZJLCBGUlZfSU5TTl9TV0FQLCBGUlZfSU5TTl9TV0FQSQorICwgRlJWX0lOU05fQ1NXQVAsIEZSVl9JTlNOX01PVkdGLCBGUlZfSU5TTl9NT1ZGRywgRlJWX0lOU05fTU9WR0ZECisgLCBGUlZfSU5TTl9NT1ZGR0QsIEZSVl9JTlNOX01PVkdGUSwgRlJWX0lOU05fTU9WRkdRLCBGUlZfSU5TTl9DTU9WR0YKKyAsIEZSVl9JTlNOX0NNT1ZGRywgRlJWX0lOU05fQ01PVkdGRCwgRlJWX0lOU05fQ01PVkZHRCwgRlJWX0lOU05fTU9WR1MKKyAsIEZSVl9JTlNOX01PVlNHLCBGUlZfSU5TTl9CUkEsIEZSVl9JTlNOX0JOTywgRlJWX0lOU05fQkVRCisgLCBGUlZfSU5TTl9CTkUsIEZSVl9JTlNOX0JMRSwgRlJWX0lOU05fQkdULCBGUlZfSU5TTl9CTFQKKyAsIEZSVl9JTlNOX0JHRSwgRlJWX0lOU05fQkxTLCBGUlZfSU5TTl9CSEksIEZSVl9JTlNOX0JDCisgLCBGUlZfSU5TTl9CTkMsIEZSVl9JTlNOX0JOLCBGUlZfSU5TTl9CUCwgRlJWX0lOU05fQlYKKyAsIEZSVl9JTlNOX0JOViwgRlJWX0lOU05fRkJSQSwgRlJWX0lOU05fRkJOTywgRlJWX0lOU05fRkJORQorICwgRlJWX0lOU05fRkJFUSwgRlJWX0lOU05fRkJMRywgRlJWX0lOU05fRkJVRSwgRlJWX0lOU05fRkJVTAorICwgRlJWX0lOU05fRkJHRSwgRlJWX0lOU05fRkJMVCwgRlJWX0lOU05fRkJVR0UsIEZSVl9JTlNOX0ZCVUcKKyAsIEZSVl9JTlNOX0ZCTEUsIEZSVl9JTlNOX0ZCR1QsIEZSVl9JTlNOX0ZCVUxFLCBGUlZfSU5TTl9GQlUKKyAsIEZSVl9JTlNOX0ZCTywgRlJWX0lOU05fQkNUUkxSLCBGUlZfSU5TTl9CUkFMUiwgRlJWX0lOU05fQk5PTFIKKyAsIEZSVl9JTlNOX0JFUUxSLCBGUlZfSU5TTl9CTkVMUiwgRlJWX0lOU05fQkxFTFIsIEZSVl9JTlNOX0JHVExSCisgLCBGUlZfSU5TTl9CTFRMUiwgRlJWX0lOU05fQkdFTFIsIEZSVl9JTlNOX0JMU0xSLCBGUlZfSU5TTl9CSElMUgorICwgRlJWX0lOU05fQkNMUiwgRlJWX0lOU05fQk5DTFIsIEZSVl9JTlNOX0JOTFIsIEZSVl9JTlNOX0JQTFIKKyAsIEZSVl9JTlNOX0JWTFIsIEZSVl9JTlNOX0JOVkxSLCBGUlZfSU5TTl9GQlJBTFIsIEZSVl9JTlNOX0ZCTk9MUgorICwgRlJWX0lOU05fRkJFUUxSLCBGUlZfSU5TTl9GQk5FTFIsIEZSVl9JTlNOX0ZCTEdMUiwgRlJWX0lOU05fRkJVRUxSCisgLCBGUlZfSU5TTl9GQlVMTFIsIEZSVl9JTlNOX0ZCR0VMUiwgRlJWX0lOU05fRkJMVExSLCBGUlZfSU5TTl9GQlVHRUxSCisgLCBGUlZfSU5TTl9GQlVHTFIsIEZSVl9JTlNOX0ZCTEVMUiwgRlJWX0lOU05fRkJHVExSLCBGUlZfSU5TTl9GQlVMRUxSCisgLCBGUlZfSU5TTl9GQlVMUiwgRlJWX0lOU05fRkJPTFIsIEZSVl9JTlNOX0JDUkFMUiwgRlJWX0lOU05fQkNOT0xSCisgLCBGUlZfSU5TTl9CQ0VRTFIsIEZSVl9JTlNOX0JDTkVMUiwgRlJWX0lOU05fQkNMRUxSLCBGUlZfSU5TTl9CQ0dUTFIKKyAsIEZSVl9JTlNOX0JDTFRMUiwgRlJWX0lOU05fQkNHRUxSLCBGUlZfSU5TTl9CQ0xTTFIsIEZSVl9JTlNOX0JDSElMUgorICwgRlJWX0lOU05fQkNDTFIsIEZSVl9JTlNOX0JDTkNMUiwgRlJWX0lOU05fQkNOTFIsIEZSVl9JTlNOX0JDUExSCisgLCBGUlZfSU5TTl9CQ1ZMUiwgRlJWX0lOU05fQkNOVkxSLCBGUlZfSU5TTl9GQ0JSQUxSLCBGUlZfSU5TTl9GQ0JOT0xSCisgLCBGUlZfSU5TTl9GQ0JFUUxSLCBGUlZfSU5TTl9GQ0JORUxSLCBGUlZfSU5TTl9GQ0JMR0xSLCBGUlZfSU5TTl9GQ0JVRUxSCisgLCBGUlZfSU5TTl9GQ0JVTExSLCBGUlZfSU5TTl9GQ0JHRUxSLCBGUlZfSU5TTl9GQ0JMVExSLCBGUlZfSU5TTl9GQ0JVR0VMUgorICwgRlJWX0lOU05fRkNCVUdMUiwgRlJWX0lOU05fRkNCTEVMUiwgRlJWX0lOU05fRkNCR1RMUiwgRlJWX0lOU05fRkNCVUxFTFIKKyAsIEZSVl9JTlNOX0ZDQlVMUiwgRlJWX0lOU05fRkNCT0xSLCBGUlZfSU5TTl9KTVBMLCBGUlZfSU5TTl9DQUxMTAorICwgRlJWX0lOU05fSk1QSUwsIEZSVl9JTlNOX0NBTExJTCwgRlJWX0lOU05fQ0FMTCwgRlJWX0lOU05fUkVUVAorICwgRlJWX0lOU05fUkVJLCBGUlZfSU5TTl9UUkEsIEZSVl9JTlNOX1ROTywgRlJWX0lOU05fVEVRCisgLCBGUlZfSU5TTl9UTkUsIEZSVl9JTlNOX1RMRSwgRlJWX0lOU05fVEdULCBGUlZfSU5TTl9UTFQKKyAsIEZSVl9JTlNOX1RHRSwgRlJWX0lOU05fVExTLCBGUlZfSU5TTl9USEksIEZSVl9JTlNOX1RDCisgLCBGUlZfSU5TTl9UTkMsIEZSVl9JTlNOX1ROLCBGUlZfSU5TTl9UUCwgRlJWX0lOU05fVFYKKyAsIEZSVl9JTlNOX1ROViwgRlJWX0lOU05fRlRSQSwgRlJWX0lOU05fRlROTywgRlJWX0lOU05fRlRORQorICwgRlJWX0lOU05fRlRFUSwgRlJWX0lOU05fRlRMRywgRlJWX0lOU05fRlRVRSwgRlJWX0lOU05fRlRVTAorICwgRlJWX0lOU05fRlRHRSwgRlJWX0lOU05fRlRMVCwgRlJWX0lOU05fRlRVR0UsIEZSVl9JTlNOX0ZUVUcKKyAsIEZSVl9JTlNOX0ZUTEUsIEZSVl9JTlNOX0ZUR1QsIEZSVl9JTlNOX0ZUVUxFLCBGUlZfSU5TTl9GVFUKKyAsIEZSVl9JTlNOX0ZUTywgRlJWX0lOU05fVElSQSwgRlJWX0lOU05fVElOTywgRlJWX0lOU05fVElFUQorICwgRlJWX0lOU05fVElORSwgRlJWX0lOU05fVElMRSwgRlJWX0lOU05fVElHVCwgRlJWX0lOU05fVElMVAorICwgRlJWX0lOU05fVElHRSwgRlJWX0lOU05fVElMUywgRlJWX0lOU05fVElISSwgRlJWX0lOU05fVElDCisgLCBGUlZfSU5TTl9USU5DLCBGUlZfSU5TTl9USU4sIEZSVl9JTlNOX1RJUCwgRlJWX0lOU05fVElWCisgLCBGUlZfSU5TTl9USU5WLCBGUlZfSU5TTl9GVElSQSwgRlJWX0lOU05fRlRJTk8sIEZSVl9JTlNOX0ZUSU5FCisgLCBGUlZfSU5TTl9GVElFUSwgRlJWX0lOU05fRlRJTEcsIEZSVl9JTlNOX0ZUSVVFLCBGUlZfSU5TTl9GVElVTAorICwgRlJWX0lOU05fRlRJR0UsIEZSVl9JTlNOX0ZUSUxULCBGUlZfSU5TTl9GVElVR0UsIEZSVl9JTlNOX0ZUSVVHCisgLCBGUlZfSU5TTl9GVElMRSwgRlJWX0lOU05fRlRJR1QsIEZSVl9JTlNOX0ZUSVVMRSwgRlJWX0lOU05fRlRJVQorICwgRlJWX0lOU05fRlRJTywgRlJWX0lOU05fQlJFQUssIEZSVl9JTlNOX01UUkFQLCBGUlZfSU5TTl9BTkRDUgorICwgRlJWX0lOU05fT1JDUiwgRlJWX0lOU05fWE9SQ1IsIEZSVl9JTlNOX05BTkRDUiwgRlJWX0lOU05fTk9SQ1IKKyAsIEZSVl9JTlNOX0FORE5DUiwgRlJWX0lOU05fT1JOQ1IsIEZSVl9JTlNOX05BTkROQ1IsIEZSVl9JTlNOX05PUk5DUgorICwgRlJWX0lOU05fTk9UQ1IsIEZSVl9JTlNOX0NLUkEsIEZSVl9JTlNOX0NLTk8sIEZSVl9JTlNOX0NLRVEKKyAsIEZSVl9JTlNOX0NLTkUsIEZSVl9JTlNOX0NLTEUsIEZSVl9JTlNOX0NLR1QsIEZSVl9JTlNOX0NLTFQKKyAsIEZSVl9JTlNOX0NLR0UsIEZSVl9JTlNOX0NLTFMsIEZSVl9JTlNOX0NLSEksIEZSVl9JTlNOX0NLQworICwgRlJWX0lOU05fQ0tOQywgRlJWX0lOU05fQ0tOLCBGUlZfSU5TTl9DS1AsIEZSVl9JTlNOX0NLVgorICwgRlJWX0lOU05fQ0tOViwgRlJWX0lOU05fRkNLUkEsIEZSVl9JTlNOX0ZDS05PLCBGUlZfSU5TTl9GQ0tORQorICwgRlJWX0lOU05fRkNLRVEsIEZSVl9JTlNOX0ZDS0xHLCBGUlZfSU5TTl9GQ0tVRSwgRlJWX0lOU05fRkNLVUwKKyAsIEZSVl9JTlNOX0ZDS0dFLCBGUlZfSU5TTl9GQ0tMVCwgRlJWX0lOU05fRkNLVUdFLCBGUlZfSU5TTl9GQ0tVRworICwgRlJWX0lOU05fRkNLTEUsIEZSVl9JTlNOX0ZDS0dULCBGUlZfSU5TTl9GQ0tVTEUsIEZSVl9JTlNOX0ZDS1UKKyAsIEZSVl9JTlNOX0ZDS08sIEZSVl9JTlNOX0NDS1JBLCBGUlZfSU5TTl9DQ0tOTywgRlJWX0lOU05fQ0NLRVEKKyAsIEZSVl9JTlNOX0NDS05FLCBGUlZfSU5TTl9DQ0tMRSwgRlJWX0lOU05fQ0NLR1QsIEZSVl9JTlNOX0NDS0xUCisgLCBGUlZfSU5TTl9DQ0tHRSwgRlJWX0lOU05fQ0NLTFMsIEZSVl9JTlNOX0NDS0hJLCBGUlZfSU5TTl9DQ0tDCisgLCBGUlZfSU5TTl9DQ0tOQywgRlJWX0lOU05fQ0NLTiwgRlJWX0lOU05fQ0NLUCwgRlJWX0lOU05fQ0NLVgorICwgRlJWX0lOU05fQ0NLTlYsIEZSVl9JTlNOX0NGQ0tSQSwgRlJWX0lOU05fQ0ZDS05PLCBGUlZfSU5TTl9DRkNLTkUKKyAsIEZSVl9JTlNOX0NGQ0tFUSwgRlJWX0lOU05fQ0ZDS0xHLCBGUlZfSU5TTl9DRkNLVUUsIEZSVl9JTlNOX0NGQ0tVTAorICwgRlJWX0lOU05fQ0ZDS0dFLCBGUlZfSU5TTl9DRkNLTFQsIEZSVl9JTlNOX0NGQ0tVR0UsIEZSVl9JTlNOX0NGQ0tVRworICwgRlJWX0lOU05fQ0ZDS0xFLCBGUlZfSU5TTl9DRkNLR1QsIEZSVl9JTlNOX0NGQ0tVTEUsIEZSVl9JTlNOX0NGQ0tVCisgLCBGUlZfSU5TTl9DRkNLTywgRlJWX0lOU05fQ0pNUEwsIEZSVl9JTlNOX0NDQUxMTCwgRlJWX0lOU05fSUNJCisgLCBGUlZfSU5TTl9EQ0ksIEZSVl9JTlNOX0lDRUksIEZSVl9JTlNOX0RDRUksIEZSVl9JTlNOX0RDRgorICwgRlJWX0lOU05fRENFRiwgRlJWX0lOU05fV0lUTEIsIEZSVl9JTlNOX1dEVExCLCBGUlZfSU5TTl9JVExCSQorICwgRlJWX0lOU05fRFRMQkksIEZSVl9JTlNOX0lDUEwsIEZSVl9JTlNOX0RDUEwsIEZSVl9JTlNOX0lDVUwKKyAsIEZSVl9JTlNOX0RDVUwsIEZSVl9JTlNOX0JBUiwgRlJWX0lOU05fTUVNQkFSLCBGUlZfSU5TTl9MUkFJCisgLCBGUlZfSU5TTl9MUkFELCBGUlZfSU5TTl9UTEJQUiwgRlJWX0lOU05fQ09QMSwgRlJWX0lOU05fQ09QMgorICwgRlJWX0lOU05fQ0xSR1IsIEZSVl9JTlNOX0NMUkZSLCBGUlZfSU5TTl9DTFJHQSwgRlJWX0lOU05fQ0xSRkEKKyAsIEZSVl9JTlNOX0NPTU1JVEdSLCBGUlZfSU5TTl9DT01NSVRGUiwgRlJWX0lOU05fQ09NTUlUR0EsIEZSVl9JTlNOX0NPTU1JVEZBCisgLCBGUlZfSU5TTl9GSVRPUywgRlJWX0lOU05fRlNUT0ksIEZSVl9JTlNOX0ZJVE9ELCBGUlZfSU5TTl9GRFRPSQorICwgRlJWX0lOU05fRkRJVE9TLCBGUlZfSU5TTl9GRFNUT0ksIEZSVl9JTlNOX05GRElUT1MsIEZSVl9JTlNOX05GRFNUT0kKKyAsIEZSVl9JTlNOX0NGSVRPUywgRlJWX0lOU05fQ0ZTVE9JLCBGUlZfSU5TTl9ORklUT1MsIEZSVl9JTlNOX05GU1RPSQorICwgRlJWX0lOU05fRk1PVlMsIEZSVl9JTlNOX0ZNT1ZELCBGUlZfSU5TTl9GRE1PVlMsIEZSVl9JTlNOX0NGTU9WUworICwgRlJWX0lOU05fRk5FR1MsIEZSVl9JTlNOX0ZORUdELCBGUlZfSU5TTl9GRE5FR1MsIEZSVl9JTlNOX0NGTkVHUworICwgRlJWX0lOU05fRkFCU1MsIEZSVl9JTlNOX0ZBQlNELCBGUlZfSU5TTl9GREFCU1MsIEZSVl9JTlNOX0NGQUJTUworICwgRlJWX0lOU05fRlNRUlRTLCBGUlZfSU5TTl9GRFNRUlRTLCBGUlZfSU5TTl9ORkRTUVJUUywgRlJWX0lOU05fRlNRUlRECisgLCBGUlZfSU5TTl9DRlNRUlRTLCBGUlZfSU5TTl9ORlNRUlRTLCBGUlZfSU5TTl9GQUREUywgRlJWX0lOU05fRlNVQlMKKyAsIEZSVl9JTlNOX0ZNVUxTLCBGUlZfSU5TTl9GRElWUywgRlJWX0lOU05fRkFEREQsIEZSVl9JTlNOX0ZTVUJECisgLCBGUlZfSU5TTl9GTVVMRCwgRlJWX0lOU05fRkRJVkQsIEZSVl9JTlNOX0NGQUREUywgRlJWX0lOU05fQ0ZTVUJTCisgLCBGUlZfSU5TTl9DRk1VTFMsIEZSVl9JTlNOX0NGRElWUywgRlJWX0lOU05fTkZBRERTLCBGUlZfSU5TTl9ORlNVQlMKKyAsIEZSVl9JTlNOX05GTVVMUywgRlJWX0lOU05fTkZESVZTLCBGUlZfSU5TTl9GQ01QUywgRlJWX0lOU05fRkNNUEQKKyAsIEZSVl9JTlNOX0NGQ01QUywgRlJWX0lOU05fRkRDTVBTLCBGUlZfSU5TTl9GTUFERFMsIEZSVl9JTlNOX0ZNU1VCUworICwgRlJWX0lOU05fRk1BRERELCBGUlZfSU5TTl9GTVNVQkQsIEZSVl9JTlNOX0ZETUFERFMsIEZSVl9JTlNOX05GRE1BRERTCisgLCBGUlZfSU5TTl9DRk1BRERTLCBGUlZfSU5TTl9DRk1TVUJTLCBGUlZfSU5TTl9ORk1BRERTLCBGUlZfSU5TTl9ORk1TVUJTCisgLCBGUlZfSU5TTl9GTUFTLCBGUlZfSU5TTl9GTVNTLCBGUlZfSU5TTl9GRE1BUywgRlJWX0lOU05fRkRNU1MKKyAsIEZSVl9JTlNOX05GRE1BUywgRlJWX0lOU05fTkZETVNTLCBGUlZfSU5TTl9DRk1BUywgRlJWX0lOU05fQ0ZNU1MKKyAsIEZSVl9JTlNOX0ZNQUQsIEZSVl9JTlNOX0ZNU0QsIEZSVl9JTlNOX05GTUFTLCBGUlZfSU5TTl9ORk1TUworICwgRlJWX0lOU05fRkRBRERTLCBGUlZfSU5TTl9GRFNVQlMsIEZSVl9JTlNOX0ZETVVMUywgRlJWX0lOU05fRkRESVZTCisgLCBGUlZfSU5TTl9GRFNBRFMsIEZSVl9JTlNOX0ZETVVMQ1MsIEZSVl9JTlNOX05GRE1VTENTLCBGUlZfSU5TTl9ORkRBRERTCisgLCBGUlZfSU5TTl9ORkRTVUJTLCBGUlZfSU5TTl9ORkRNVUxTLCBGUlZfSU5TTl9ORkRESVZTLCBGUlZfSU5TTl9ORkRTQURTCisgLCBGUlZfSU5TTl9ORkRDTVBTLCBGUlZfSU5TTl9NSFNFVExPUywgRlJWX0lOU05fTUhTRVRISVMsIEZSVl9JTlNOX01IRFNFVFMKKyAsIEZSVl9JTlNOX01IU0VUTE9ILCBGUlZfSU5TTl9NSFNFVEhJSCwgRlJWX0lOU05fTUhEU0VUSCwgRlJWX0lOU05fTUFORAorICwgRlJWX0lOU05fTU9SLCBGUlZfSU5TTl9NWE9SLCBGUlZfSU5TTl9DTUFORCwgRlJWX0lOU05fQ01PUgorICwgRlJWX0lOU05fQ01YT1IsIEZSVl9JTlNOX01OT1QsIEZSVl9JTlNOX0NNTk9ULCBGUlZfSU5TTl9NUk9UTEkKKyAsIEZSVl9JTlNOX01ST1RSSSwgRlJWX0lOU05fTVdDVVQsIEZSVl9JTlNOX01XQ1VUSSwgRlJWX0lOU05fTUNVVAorICwgRlJWX0lOU05fTUNVVEksIEZSVl9JTlNOX01DVVRTUywgRlJWX0lOU05fTUNVVFNTSSwgRlJWX0lOU05fTURDVVRTU0kKKyAsIEZSVl9JTlNOX01BVkVILCBGUlZfSU5TTl9NU0xMSEksIEZSVl9JTlNOX01TUkxISSwgRlJWX0lOU05fTVNSQUhJCisgLCBGUlZfSU5TTl9NRFJPVExJLCBGUlZfSU5TTl9NQ1BMSEksIEZSVl9JTlNOX01DUExJLCBGUlZfSU5TTl9NU0FUSFMKKyAsIEZSVl9JTlNOX01RU0FUSFMsIEZSVl9JTlNOX01TQVRIVSwgRlJWX0lOU05fTUNNUFNILCBGUlZfSU5TTl9NQ01QVUgKKyAsIEZSVl9JTlNOX01BQlNIUywgRlJWX0lOU05fTUFEREhTUywgRlJWX0lOU05fTUFEREhVUywgRlJWX0lOU05fTVNVQkhTUworICwgRlJWX0lOU05fTVNVQkhVUywgRlJWX0lOU05fQ01BRERIU1MsIEZSVl9JTlNOX0NNQURESFVTLCBGUlZfSU5TTl9DTVNVQkhTUworICwgRlJWX0lOU05fQ01TVUJIVVMsIEZSVl9JTlNOX01RQURESFNTLCBGUlZfSU5TTl9NUUFEREhVUywgRlJWX0lOU05fTVFTVUJIU1MKKyAsIEZSVl9JTlNOX01RU1VCSFVTLCBGUlZfSU5TTl9DTVFBRERIU1MsIEZSVl9JTlNOX0NNUUFEREhVUywgRlJWX0lOU05fQ01RU1VCSFNTCisgLCBGUlZfSU5TTl9DTVFTVUJIVVMsIEZSVl9JTlNOX01RTENMUkhTLCBGUlZfSU5TTl9NUUxNVEhTLCBGUlZfSU5TTl9NUVNMTEhJCisgLCBGUlZfSU5TTl9NUVNSQUhJLCBGUlZfSU5TTl9NQUREQUNDUywgRlJWX0lOU05fTVNVQkFDQ1MsIEZSVl9JTlNOX01EQUREQUNDUworICwgRlJWX0lOU05fTURTVUJBQ0NTLCBGUlZfSU5TTl9NQVNBQ0NTLCBGUlZfSU5TTl9NREFTQUNDUywgRlJWX0lOU05fTU1VTEhTCisgLCBGUlZfSU5TTl9NTVVMSFUsIEZSVl9JTlNOX01NVUxYSFMsIEZSVl9JTlNOX01NVUxYSFUsIEZSVl9JTlNOX0NNTVVMSFMKKyAsIEZSVl9JTlNOX0NNTVVMSFUsIEZSVl9JTlNOX01RTVVMSFMsIEZSVl9JTlNOX01RTVVMSFUsIEZSVl9JTlNOX01RTVVMWEhTCisgLCBGUlZfSU5TTl9NUU1VTFhIVSwgRlJWX0lOU05fQ01RTVVMSFMsIEZSVl9JTlNOX0NNUU1VTEhVLCBGUlZfSU5TTl9NTUFDSFMKKyAsIEZSVl9JTlNOX01NQUNIVSwgRlJWX0lOU05fTU1SREhTLCBGUlZfSU5TTl9NTVJESFUsIEZSVl9JTlNOX0NNTUFDSFMKKyAsIEZSVl9JTlNOX0NNTUFDSFUsIEZSVl9JTlNOX01RTUFDSFMsIEZSVl9JTlNOX01RTUFDSFUsIEZSVl9JTlNOX0NNUU1BQ0hTCisgLCBGUlZfSU5TTl9DTVFNQUNIVSwgRlJWX0lOU05fTVFYTUFDSFMsIEZSVl9JTlNOX01RWE1BQ1hIUywgRlJWX0lOU05fTVFNQUNYSFMKKyAsIEZSVl9JTlNOX01DUFhSUywgRlJWX0lOU05fTUNQWFJVLCBGUlZfSU5TTl9NQ1BYSVMsIEZSVl9JTlNOX01DUFhJVQorICwgRlJWX0lOU05fQ01DUFhSUywgRlJWX0lOU05fQ01DUFhSVSwgRlJWX0lOU05fQ01DUFhJUywgRlJWX0lOU05fQ01DUFhJVQorICwgRlJWX0lOU05fTVFDUFhSUywgRlJWX0lOU05fTVFDUFhSVSwgRlJWX0lOU05fTVFDUFhJUywgRlJWX0lOU05fTVFDUFhJVQorICwgRlJWX0lOU05fTUVYUERIVywgRlJWX0lOU05fQ01FWFBESFcsIEZSVl9JTlNOX01FWFBESEQsIEZSVl9JTlNOX0NNRVhQREhECisgLCBGUlZfSU5TTl9NUEFDS0gsIEZSVl9JTlNOX01EUEFDS0gsIEZSVl9JTlNOX01VTlBBQ0tILCBGUlZfSU5TTl9NRFVOUEFDS0gKKyAsIEZSVl9JTlNOX01CVE9ILCBGUlZfSU5TTl9DTUJUT0gsIEZSVl9JTlNOX01IVE9CLCBGUlZfSU5TTl9DTUhUT0IKKyAsIEZSVl9JTlNOX01CVE9IRSwgRlJWX0lOU05fQ01CVE9IRSwgRlJWX0lOU05fTU5PUCwgRlJWX0lOU05fTUNMUkFDQ18wCisgLCBGUlZfSU5TTl9NQ0xSQUNDXzEsIEZSVl9JTlNOX01SREFDQywgRlJWX0lOU05fTVJEQUNDRywgRlJWX0lOU05fTVdUQUNDCisgLCBGUlZfSU5TTl9NV1RBQ0NHLCBGUlZfSU5TTl9NQ09QMSwgRlJWX0lOU05fTUNPUDIsIEZSVl9JTlNOX0ZOT1AKIH0gQ0dFTl9JTlNOX1RZUEU7CiAKIC8qIEluZGV4IG9mIGBpbnZhbGlkJyBpbnNuIHBsYWNlIGhvbGRlci4gICovCkBAIC0zMjksNiArMzI4LDExIEBACiAgIGxvbmcgZl9sYWJlbEg2OwogICBsb25nIGZfbGFiZWxMMTg7CiAgIGxvbmcgZl9sYWJlbDI0OworICBsb25nIGZfTFJBRTsKKyAgbG9uZyBmX0xSQUQ7CisgIGxvbmcgZl9MUkFTOworICBsb25nIGZfVExCUFJvcHg7CisgIGxvbmcgZl9UTEJQUkw7CiAgIGxvbmcgZl9JQ0NpXzFfbnVsbDsKICAgbG9uZyBmX0lDQ2lfMl9udWxsOwogICBsb25nIGZfSUNDaV8zX251bGw7CkBAIC0zNTgsNiArMzYyLDggQEAKICAgbG9uZyBmX21pc2NfbnVsbF85OwogICBsb25nIGZfbWlzY19udWxsXzEwOwogICBsb25nIGZfbWlzY19udWxsXzExOworICBsb25nIGZfTFJBX251bGw7CisgIGxvbmcgZl9UTEJQUl9udWxsOwogICBsb25nIGZfTElfb2ZmOwogICBsb25nIGZfTElfb247CiB9OwpkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9tMzJyLWFzbS5jIGIvb3Bjb2Rlcy9tMzJyLWFzbS5jCmluZGV4IDhjMmNjODEuLjg3YzMzZjAgMTAwNjQ0Ci0tLSBhL29wY29kZXMvbTMyci1hc20uYworKysgYi9vcGNvZGVzL20zMnItYXNtLmMKQEAgLTQsNyArNCw3IEBACiBUSElTIEZJTEUgSVMgTUFDSElORSBHRU5FUkFURUQgV0lUSCBDR0VOLgogLSB0aGUgcmVzdWx0YW50IGZpbGUgaXMgbWFjaGluZSBnZW5lcmF0ZWQsIGNnZW4tYXNtLmluIGlzbid0CiAKLUNvcHlyaWdodCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQmludXRpbHMgYW5kIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KIApAQCAtMTExLDcgKzExMSwxMCBAQAogICAgICAgKysqc3RycDsKICAgICAgIGlmIChlcnJtc2cgPT0gTlVMTAogCSAgJiYgcmVzdWx0X3R5cGUgPT0gQ0dFTl9QQVJTRV9PUEVSQU5EX1JFU1VMVF9OVU1CRVIpCi0JdmFsdWUgPSAodmFsdWUgPj4gMTYpICsgKHZhbHVlICYgMHg4MDAwID8gMSA6IDApOworICAgICAgICB7CisgICAgICAgICAgdmFsdWUgPSB2YWx1ZSArICh2YWx1ZSAmIDB4ODAwMCA/IDB4MTAwMDAgOiAwKTsKKyAgICAgICAgICB2YWx1ZSA+Pj0gMTY7CisgICAgICAgIH0KICAgICAgICp2YWx1ZXAgPSB2YWx1ZTsKICAgICAgIHJldHVybiBlcnJtc2c7CiAgICAgfQpkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9tcHctY29uZmlnLmluIGIvb3Bjb2Rlcy9tcHctY29uZmlnLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjliZTlkLi4wMDAwMDAwCi0tLSBhL29wY29kZXMvbXB3LWNvbmZpZy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLSMgQ29uZmlndXJhdGlvbiBmcmFnbWVudCBmb3Igb3Bjb2Rlcy4KLQotU2V0IHRhcmdldF9hcmNoIGBlY2hvIHt0YXJnZXRfY2Fub25pY2FsfSB8IHNlZCAtZSAncy8tLiotLiovLydgCi0KLVNldCBhcmNobmFtZSBBUkNIX3t0YXJnZXRfYXJjaH0KLQotSWYgInt0YXJnZXRfYXJjaH0iID1+IC9tNjhrLwotCVNldCBCRkRfTUFDSElORVMgICcie299Im02OGstZGlzLmMubyAie299Im02OGstb3BjLmMubycKLUVsc2UgSWYgInt0YXJnZXRfYXJjaH0iID1+IC9wb3dlcnBjLwotCVNldCBCRkRfTUFDSElORVMgICcie299InBwYy1kaXMuYy5vICJ7b30icHBjLW9wYy5jLm8nCi1FbHNlIElmICJ7dGFyZ2V0X2FyY2h9IiA9fiAvaTM4Ni8KLQlTZXQgQkZEX01BQ0hJTkVTICAnIntvfSJpMzg2LWRpcy5jLm8nCi1FbHNlIElmICJ7dGFyZ2V0X2FyY2h9IiA9fiAvbWlwcy8KLQlTZXQgQkZEX01BQ0hJTkVTICAnIntvfSJtaXBzLWRpcy5jLm8gIntvfSJtaXBzLW9wYy5jLm8nCi1FbHNlIElmICJ7dGFyZ2V0X2FyY2h9IiA9fiAvc2gvCi0JU2V0IEJGRF9NQUNISU5FUyAgJyJ7b30ic2gtZGlzLmMubycKLUVuZCBJZgotCi1FY2hvICcjIFN0YXJ0IGZyb20gbXB3LWNvbmZpZy5pbicJCQkgPiAie299Im1rLnRtcAotRWNobyAiQkZEX01BQ0hJTkVTID0gIiB7QkZEX01BQ0hJTkVTfQkJCT4+ICJ7b30ibWsudG1wCi1FY2hvICJBUkNIREVGUyA9IC1kIiB7YXJjaG5hbWV9CQkJCT4+ICJ7b30ibWsudG1wCi1FY2hvICcjIEVuZCBmcm9tIG1wdy1jb25maWcuaW4nCQkJCT4+ICJ7b30ibWsudG1wCi0KLUVjaG8gJy8qIGNvbmZpZy5oLiAgR2VuZXJhdGVkIGJ5IG1wdy1jb25maWd1cmUuICAqLycJID4gIntvfSJjb25maWcubmV3Ci1FY2hvICcjaW5jbHVkZSAibXB3LmgiJwkJIAkJCT4+ICJ7b30iY29uZmlnLm5ldwotCi1Nb3ZlSWZDaGFuZ2UgIntvfSJjb25maWcubmV3ICJ7b30iY29uZmlnLmgKZGlmZiAtLWdpdCBhL29wY29kZXMvbXB3LW1ha2Uuc2VkIGIvb3Bjb2Rlcy9tcHctbWFrZS5zZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNjA0ODYuLjAwMDAwMDAKLS0tIGEvb3Bjb2Rlcy9tcHctbWFrZS5zZWQKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0jIFNlZCBjb21tYW5kcyB0byBmaW5pc2ggdHJhbnNsYXRpbmcgdGhlIG9wY29kZXMgTWFrZWZpbGUuaW4gaW50byBNUFcgc3ludGF4LgotCi0jIEVtcHR5IEhERUZJTkVTLgotL0hERUZJTkVTL3MvQEhERUZJTkVTQC8vCi0KLSMgRml4IHBhdGhuYW1lcyB0byBpbmNsdWRlIGRpcmVjdG9yaWVzLgotL15JTkNESVIgPSAvcy9eSU5DRElSID0gLiokL0lOQ0RJUiA9ICJ7dG9wc3JjZGlyfSJpbmNsdWRlLwotL15DU0VBUkNIID0gL3MvJC8gLWkgIntJTkNESVJ9IjptcHc6IC1pIDo6ZXh0cmEtaW5jbHVkZTovCi0KLS9CRkRfTUFDSElORVMvcy9AQkZEX01BQ0hJTkVTQC97QkZEX01BQ0hJTkVTfS8KLS9hcmNoZGVmcy9zL0BhcmNoZGVmc0Ave0FSQ0hERUZTfS8KLQotIyBObyBQSUMgZm9vbGVyeSBpbiB0aGlzIGVudmlyb25tZW50LgotL0BBTExMSUJTQC9zL0BBTExMSUJTQC97VEFSR0VUTElCfS8KLS9AUElDTElTVEAvcy9AUElDTElTVEAvLwotL0BQSUNGTEFHQC9zL0BQSUNGTEFHQC8vCi0vXntPRklMRVN9IFxcT3B0aW9uLWYgc3RhbXAtcGljZGlyLywvXiQvZAotCi0jIFJlbW92ZSB0aGUgcGljIHRyaWNrZXJ5IGZyb20gdGhlIGRlZmF1bHQgYnVpbGQgcnVsZS4KLS9eXC5jXC5vIFxcT3B0aW9uLWYgLywvRW5kIElmL2NcCi0uYy5vIFxcT3B0aW9uLWYgLmMKLQotIyBSZW1vdmUgcGljIHRyaWNrZXJ5IGZyb20gb3RoZXIgcnVsZXMgLSBhaW1lZCBhdCB0aGUgcnVsZQotIyBmb3IgZGlzYXNzZW1ibGUubyBpbiBwYXJ0aWN1bGFyLgotLy1uICJ7UElDRkxBR30iLywvRW5kIElmL2QKZGlmZiAtLWdpdCBhL29wY29kZXMvcG8vUE9URklMRVMuaW4gYi9vcGNvZGVzL3BvL1BPVEZJTEVTLmluCmluZGV4IGYxNmE4N2IuLjMzM2M2MTIgMTAwNjQ0Ci0tLSBhL29wY29kZXMvcG8vUE9URklMRVMuaW4KKysrIGIvb3Bjb2Rlcy9wby9QT1RGSUxFUy5pbgpAQCAtMTgsNiArMTgsNyBAQAogZDMwdi1vcGMuYwogZGlzYXNzZW1ibGUuYwogZGlzLWJ1Zi5jCitkaXMtaW5pdC5jCiBkbHgtZGlzLmMKIGZyMzAtYXNtLmMKIGZyMzAtZGVzYy5jCmRpZmYgLS1naXQgYS9vcGNvZGVzL3BvL2RlLnBvIGIvb3Bjb2Rlcy9wby9kZS5wbwppbmRleCAyOTE0Nzc2Li5lODAyODIzIDEwMDY0NAotLS0gYS9vcGNvZGVzL3BvL2RlLnBvCisrKyBiL29wY29kZXMvcG8vZGUucG8KQEAgLTQsMTAgKzQsMTAgQEAKICMKIG1zZ2lkICIiCiBtc2dzdHIgIiIKLSJQcm9qZWN0LUlkLVZlcnNpb246IG9wY29kZXMgMi4xMi45MVxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDAyLTA3LTIzIDE1OjU1LTA0MDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDAyLTA5LTI0IDA3OjEzKzAyMDBcbiIKLSJMYXN0LVRyYW5zbGF0b3I6IE1hcnRpbiB2LiBMw7Z3aXMgPG1hcnRpbkB2LmxvZXdpcy5kZT5cbiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IG9wY29kZXMgMi4xNHJlbDAzMDcxMlxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDAzLTA3LTExIDEzOjU2KzA5MzBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDA0LTAyLTI4IDEyOjMwKzAxMDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IFJvbGFuZCBJbGxpZyA8cm9sYW5kLmlsbGlnQGdteC5kZT5cbiIKICJMYW5ndWFnZS1UZWFtOiBHZXJtYW4gPGRlQGxpLm9yZz5cbiIKICJNSU1FLVZlcnNpb246IDEuMFxuIgogIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOFxuIgpAQCAtMjUsNTYgKzI1LDYwIEBACiBtc2dpZCAiSWxsZWdhbCBsaW1tIHJlZmVyZW5jZSBpbiBsYXN0IGluc3RydWN0aW9uIVxuIgogbXNnc3RyICJVbmfDvGx0aWdlIGxpbW0tUmVmZXJlbnogaW4gZGVyIGxldHp0ZW4gQW53ZWlzdW5nIVxuIgogCi0jOiBhcm0tZGlzLmM6NTA3CisjOiBhcm0tZGlzLmM6NTU0CiBtc2dpZCAiPGlsbGVnYWwgcHJlY2lzaW9uPiIKLW1zZ3N0ciAiPHVuZ8O8bHRpZ2UgUHLDpHppc2lvbj4iCittc2dzdHIgIjx1bmfDvGx0aWdlIEdlbmF1aWdrZWl0PiIKIAotIzogYXJtLWRpcy5jOjEwMTAKKyM6IGFybS1kaXMuYzoxMTYyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucmVjb2duaXNlZCByZWdpc3RlciBuYW1lIHNldDogJXNcbiIKIG1zZ3N0ciAiVW5iZWthbm50ZSBSZWdpc3Rlcm5hbWVuc21lbmdlOiAlc1xuIgogCi0jOiBhcm0tZGlzLmM6MTAxNworIzogYXJtLWRpcy5jOjExNjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5yZWNvZ25pc2VkIGRpc2Fzc2VtYmxlciBvcHRpb246ICVzXG4iCiBtc2dzdHIgIlVuYmVrYW5udGUgRGlzYXNzZW1ibGVyLU9wdGlvbjogJXNcbiIKIAotIzogYXJtLWRpcy5jOjExOTEKKyM6IGFybS1kaXMuYzoxMzQzCiBtc2dpZCAiIgogIlxuIgogIlRoZSBmb2xsb3dpbmcgQVJNIHNwZWNpZmljIGRpc2Fzc2VtYmxlciBvcHRpb25zIGFyZSBzdXBwb3J0ZWQgZm9yIHVzZSB3aXRoXG4iCiAidGhlIC1NIHN3aXRjaDpcbiIKIG1zZ3N0ciAiIgorIlxuIgorIkRpZSBmb2xnZW5kZW4gQVJNLXNwZXppZmlzY2hlbiBEaXNhc3NlbWJsZXJvcHRpb25lbiB3ZXJkZW4gaW4gS29tYmluYXRpb25cbiIKKyJtaXQgZGVtIFNjaGFsdGVyIMK7LU3CqyB1bnRlcnN0w7x0enQ6XG4iCiAKLSM6IGF2ci1kaXMuYzoxMTggYXZyLWRpcy5jOjEyOAorIzogYXZyLWRpcy5jOjExNyBhdnItZGlzLmM6MTI3CiBtc2dpZCAidW5kZWZpbmVkIgogbXNnc3RyICJ1bmRlZmluaWVydCIKIAotIzogYXZyLWRpcy5jOjE4MAorIzogYXZyLWRpcy5jOjE3OQogbXNnaWQgIkludGVybmFsIGRpc2Fzc2VtYmxlciBlcnJvciIKIG1zZ3N0ciAiSW50ZXJuZXIgRGlzYXNzZW1ibGVyZmVobGVyLiIKIAotIzogYXZyLWRpcy5jOjIyOAorIzogYXZyLWRpcy5jOjIyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIGNvbnN0cmFpbnQgYCVjJyIKLW1zZ3N0ciAiIgorbXNnc3RyICJVbmJla2FubnRlIEVpbnNjaHLDpG5rdW5nIMK7JWPCqyIKIAotIzogY2dlbi1hc20uYzozNDYgZnIzMC1pYmxkLmM6MTk1IGZydi1pYmxkLmM6MTk1IG0zMnItaWJsZC5jOjE5NQotIzogb3BlbnJpc2MtaWJsZC5jOjE5NSB4c3Rvcm15MTYtaWJsZC5jOjE5NQorIzogY2dlbi1hc20uYzozNDggZnIzMC1pYmxkLmM6MTk1IGZydi1pYmxkLmM6MTk1IGlwMmstaWJsZC5jOjE5NQorIzogaXEyMDAwLWlibGQuYzoxOTUgbTMyci1pYmxkLmM6MTk1IG9wZW5yaXNjLWlibGQuYzoxOTUgeHN0b3JteTE2LWlibGQuYzoxOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAib3BlcmFuZCBvdXQgb2YgcmFuZ2UgKCVsZCBub3QgYmV0d2VlbiAlbGQgYW5kICVsZCkiCi1tc2dzdHIgIiIKK21zZ3N0ciAiT3BlcmFuZCBhdcOfZXJoYWxiIGRlcyBnw7xsdGlnZW4gQmVyZWljaHMgKCVsZCBpc3QgbmljaHQgendpc2NoZW4gJWxkIHVuZCAlbGQpIgogCi0jOiBjZ2VuLWFzbS5jOjM2NworIzogY2dlbi1hc20uYzozNjkKICMsIGMtZm9ybWF0CiBtc2dpZCAib3BlcmFuZCBvdXQgb2YgcmFuZ2UgKCVsdSBub3QgYmV0d2VlbiAlbHUgYW5kICVsdSkiCi1tc2dzdHIgIiIKK21zZ3N0ciAiT3BlcmFuZCBhdcOfZXJoYWxiIGRlcyBnw7xsdGlnZW4gQmVyZWljaHMgKCVsdSBpc3QgbmljaHQgendpc2NoZW4gJWx1IHVuZCAlbHUpIgogCiAjOiBkMzB2LWRpcy5jOjMxMgogIywgYy1mb3JtYXQKIG1zZ2lkICI8dW5rbm93biByZWdpc3RlciAlZD4iCiBtc2dzdHIgIjx1bmJla2FubnRlcyBSZWdpc3RlciAlZD4iCiAKKyMgIENhbid0IGhhcHBlbi4KICMuIENhbid0IGhhcHBlbi4KICM6IGRpcy1idWYuYzo1NwogIywgYy1mb3JtYXQKQEAgLTg0LDI4NiArODgsNjQxIEBACiAjOiBkaXMtYnVmLmM6NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWRkcmVzcyAweCV4IGlzIG91dCBvZiBib3VuZHMuXG4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiQWRyZXNzZSAweCV4IGlzdCBhdcOfZXJoYWxiIGRlcyBnw7xsdGlnZW4gQmVyZWljaHMuXG4iCiAKLSM6IGZyMzAtYXNtLmM6MzIzIGZydi1hc20uYzo1OTUgbTMyci1hc20uYzozMjUgb3BlbnJpc2MtYXNtLmM6MjQ0Ci0jOiB4c3Rvcm15MTYtYXNtLmM6MjMxCisjOiBmcjMwLWFzbS5jOjMyMyBmcnYtYXNtLmM6NjI2IGlwMmstYXNtLmM6NTc0IGlxMjAwMC1hc20uYzo0NjAgbTMyci1hc20uYzozMjUKKyM6IG9wZW5yaXNjLWFzbS5jOjI2MSB4c3Rvcm15MTYtYXNtLmM6Mjg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucmVjb2duaXplZCBmaWVsZCAlZCB3aGlsZSBwYXJzaW5nLlxuIgotbXNnc3RyICIiCittc2dzdHIgIlVuYmVrYW5udGVzIEZlbGQgJWQgYmVpbSBQYXJzZW4gZW50ZGVja3QuXG4iCiAKLSM6IGZyMzAtYXNtLmM6MzczIGZydi1hc20uYzo2NDUgbTMyci1hc20uYzozNzUgb3BlbnJpc2MtYXNtLmM6Mjk0Ci0jOiB4c3Rvcm15MTYtYXNtLmM6MjgxCisjOiBmcjMwLWFzbS5jOjM3MyBmcnYtYXNtLmM6Njc2IGlwMmstYXNtLmM6NjI0IGlxMjAwMC1hc20uYzo1MTAgbTMyci1hc20uYzozNzUKKyM6IG9wZW5yaXNjLWFzbS5jOjMxMSB4c3Rvcm15MTYtYXNtLmM6MzM0CiBtc2dpZCAibWlzc2luZyBtbmVtb25pYyBpbiBzeW50YXggc3RyaW5nIgotbXNnc3RyICIiCittc2dzdHIgIkZlaGxlbmRlciBNbmVtb25pYyBpbSBTeW50YXhzdHJpbmciCiAKKyMgIFdlIGNvdWxkbid0IHBhcnNlIGl0LgogIy4gV2UgY291bGRuJ3QgcGFyc2UgaXQuCi0jOiBmcjMwLWFzbS5jOjUwOSBmcjMwLWFzbS5jOjUxMyBmcjMwLWFzbS5jOjYwMCBmcjMwLWFzbS5jOjcwMiBmcnYtYXNtLmM6NzgxCi0jOiBmcnYtYXNtLmM6Nzg1IGZydi1hc20uYzo4NzIgZnJ2LWFzbS5jOjk3NCBtMzJyLWFzbS5jOjUxMSBtMzJyLWFzbS5jOjUxNQotIzogbTMyci1hc20uYzo2MDIgbTMyci1hc20uYzo3MDQgb3BlbnJpc2MtYXNtLmM6NDMwIG9wZW5yaXNjLWFzbS5jOjQzNAotIzogb3BlbnJpc2MtYXNtLmM6NTIxIG9wZW5yaXNjLWFzbS5jOjYyMyB4c3Rvcm15MTYtYXNtLmM6NDE3Ci0jOiB4c3Rvcm15MTYtYXNtLmM6NDIxIHhzdG9ybXkxNi1hc20uYzo1MDggeHN0b3JteTE2LWFzbS5jOjYxMAorIzogZnIzMC1hc20uYzo1MDkgZnIzMC1hc20uYzo1MTMgZnIzMC1hc20uYzo2MDAgZnIzMC1hc20uYzo3MDIgZnJ2LWFzbS5jOjgxMgorIzogZnJ2LWFzbS5jOjgxNiBmcnYtYXNtLmM6OTAzIGZydi1hc20uYzoxMDA1IGlwMmstYXNtLmM6NzYwIGlwMmstYXNtLmM6NzY0CisjOiBpcDJrLWFzbS5jOjg1MSBpcDJrLWFzbS5jOjk1MyBpcTIwMDAtYXNtLmM6NjQ2IGlxMjAwMC1hc20uYzo2NTAKKyM6IGlxMjAwMC1hc20uYzo3MzcgaXEyMDAwLWFzbS5jOjgzOSBtMzJyLWFzbS5jOjUxMSBtMzJyLWFzbS5jOjUxNQorIzogbTMyci1hc20uYzo2MDIgbTMyci1hc20uYzo3MDQgb3BlbnJpc2MtYXNtLmM6NDQ3IG9wZW5yaXNjLWFzbS5jOjQ1MQorIzogb3BlbnJpc2MtYXNtLmM6NTM4IG9wZW5yaXNjLWFzbS5jOjY0MCB4c3Rvcm15MTYtYXNtLmM6NDcwCisjOiB4c3Rvcm15MTYtYXNtLmM6NDc0IHhzdG9ybXkxNi1hc20uYzo1NjEgeHN0b3JteTE2LWFzbS5jOjY2MwogbXNnaWQgInVucmVjb2duaXplZCBpbnN0cnVjdGlvbiIKLW1zZ3N0ciAiIgorbXNnc3RyICJVbmJla2FubnRlciBCZWZlaGwiCiAKLSM6IGZyMzAtYXNtLmM6NTU2IGZydi1hc20uYzo4MjggbTMyci1hc20uYzo1NTggb3BlbnJpc2MtYXNtLmM6NDc3Ci0jOiB4c3Rvcm15MTYtYXNtLmM6NDY0CisjOiBmcjMwLWFzbS5jOjU1NiBmcnYtYXNtLmM6ODU5IGlwMmstYXNtLmM6ODA3IGlxMjAwMC1hc20uYzo2OTMgbTMyci1hc20uYzo1NTgKKyM6IG9wZW5yaXNjLWFzbS5jOjQ5NCB4c3Rvcm15MTYtYXNtLmM6NTE3CiAjLCBjLWZvcm1hdAogbXNnaWQgInN5bnRheCBlcnJvciAoZXhwZWN0ZWQgY2hhciBgJWMnLCBmb3VuZCBgJWMnKSIKIG1zZ3N0ciAiU3ludGF4ZmVobGVyIChlcndhcnRldGVzIFplaWNoZW4gwrslY8KrLCBnZWZ1bmRlbiDCuyVjwqspIgogCi0jOiBmcjMwLWFzbS5jOjU2NiBmcnYtYXNtLmM6ODM4IG0zMnItYXNtLmM6NTY4IG9wZW5yaXNjLWFzbS5jOjQ4NwotIzogeHN0b3JteTE2LWFzbS5jOjQ3NAorIzogZnIzMC1hc20uYzo1NjYgZnJ2LWFzbS5jOjg2OSBpcDJrLWFzbS5jOjgxNyBpcTIwMDAtYXNtLmM6NzAzIG0zMnItYXNtLmM6NTY4CisjOiBvcGVucmlzYy1hc20uYzo1MDQgeHN0b3JteTE2LWFzbS5jOjUyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJzeW50YXggZXJyb3IgKGV4cGVjdGVkIGNoYXIgYCVjJywgZm91bmQgZW5kIG9mIGluc3RydWN0aW9uKSIKLW1zZ3N0ciAiIgorbXNnc3RyICJTeW50YXhmZWhsZXIgKFplaWNoZW4gwrslY8KrIGVyd2FydGV0LCBCZWZlaGxzZW5kZSBiZWtvbW1lbikiCiAKLSM6IGZyMzAtYXNtLmM6NTk0IGZydi1hc20uYzo4NjYgbTMyci1hc20uYzo1OTYgb3BlbnJpc2MtYXNtLmM6NTE1Ci0jOiB4c3Rvcm15MTYtYXNtLmM6NTAyCisjOiBmcjMwLWFzbS5jOjU5NCBmcnYtYXNtLmM6ODk3IGlwMmstYXNtLmM6ODQ1IGlxMjAwMC1hc20uYzo3MzEgbTMyci1hc20uYzo1OTYKKyM6IG9wZW5yaXNjLWFzbS5jOjUzMiB4c3Rvcm15MTYtYXNtLmM6NTU1CiBtc2dpZCAianVuayBhdCBlbmQgb2YgbGluZSIKLW1zZ3N0ciAiIgorbXNnc3RyICJNw7xsbCBhbSBFbmRlIGRlciBaZWlsZSIKIAotIzogZnIzMC1hc20uYzo3MDEgZnJ2LWFzbS5jOjk3MyBtMzJyLWFzbS5jOjcwMyBvcGVucmlzYy1hc20uYzo2MjIKLSM6IHhzdG9ybXkxNi1hc20uYzo2MDkKKyM6IGZyMzAtYXNtLmM6NzAxIGZydi1hc20uYzoxMDA0IGlwMmstYXNtLmM6OTUyIGlxMjAwMC1hc20uYzo4MzgKKyM6IG0zMnItYXNtLmM6NzAzIG9wZW5yaXNjLWFzbS5jOjYzOSB4c3Rvcm15MTYtYXNtLmM6NjYyCiBtc2dpZCAidW5yZWNvZ25pemVkIGZvcm0gb2YgaW5zdHJ1Y3Rpb24iCi1tc2dzdHIgIiIKK21zZ3N0ciAiVW5iZWthbm50ZSBCZWZlaGxzZm9ybSIKIAotIzogZnIzMC1hc20uYzo3MTMgZnJ2LWFzbS5jOjk4NSBtMzJyLWFzbS5jOjcxNSBvcGVucmlzYy1hc20uYzo2MzQKLSM6IHhzdG9ybXkxNi1hc20uYzo2MjEKKyM6IGZyMzAtYXNtLmM6NzEzIGZydi1hc20uYzoxMDE2IGlwMmstYXNtLmM6OTY0IGlxMjAwMC1hc20uYzo4NTAKKyM6IG0zMnItYXNtLmM6NzE1IG9wZW5yaXNjLWFzbS5jOjY1MSB4c3Rvcm15MTYtYXNtLmM6Njc0CiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCBpbnN0cnVjdGlvbiBgJS41MHMuLi4nIgotbXNnc3RyICIiCittc2dzdHIgIkZhbHNjaGVyIEJlZmVobCDCuyUuNTBzLi4uwqsiCiAKLSM6IGZyMzAtYXNtLmM6NzE2IGZydi1hc20uYzo5ODggbTMyci1hc20uYzo3MTggb3BlbnJpc2MtYXNtLmM6NjM3Ci0jOiB4c3Rvcm15MTYtYXNtLmM6NjI0CisjOiBmcjMwLWFzbS5jOjcxNiBmcnYtYXNtLmM6MTAxOSBpcDJrLWFzbS5jOjk2NyBpcTIwMDAtYXNtLmM6ODUzCisjOiBtMzJyLWFzbS5jOjcxOCBvcGVucmlzYy1hc20uYzo2NTQgeHN0b3JteTE2LWFzbS5jOjY3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgaW5zdHJ1Y3Rpb24gYCUuNTBzJyIKLW1zZ3N0ciAiIgorbXNnc3RyICJGYWxzY2hlciBCZWZlaGwgwrslLjUwc8KrIgogCisjICBEZWZhdWx0IHRleHQgdG8gcHJpbnQgaWYgYW4gaW5zdHJ1Y3Rpb24gaXNuJ3QgcmVjb2duaXplZC4KICMuIERlZmF1bHQgdGV4dCB0byBwcmludCBpZiBhbiBpbnN0cnVjdGlvbiBpc24ndCByZWNvZ25pemVkLgotIzogZnIzMC1kaXMuYzozOSBmcnYtZGlzLmM6MzkgbTMyci1kaXMuYzozOSBtbWl4LWRpcy5jOjI4MiBvcGVucmlzYy1kaXMuYzozOQotIzogeHN0b3JteTE2LWRpcy5jOjM5CisjOiBmcjMwLWRpcy5jOjQxIGZydi1kaXMuYzo0MSBpcDJrLWRpcy5jOjQxIGlxMjAwMC1kaXMuYzo0MSBtMzJyLWRpcy5jOjQxCisjOiBtbWl4LWRpcy5jOjI4NCBvcGVucmlzYy1kaXMuYzo0MSB4c3Rvcm15MTYtZGlzLmM6NDEKIG1zZ2lkICIqdW5rbm93bioiCi1tc2dzdHIgIiIKK21zZ3N0ciAiKnVuYmVrYW5udCoiCiAKLSM6IGZyMzAtZGlzLmM6MzE4IGZydi1kaXMuYzozNjAgbTMyci1kaXMuYzoyNDkgb3BlbnJpc2MtZGlzLmM6MTM2Ci0jOiB4c3Rvcm15MTYtZGlzLmM6MTY5CisjOiBmcjMwLWRpcy5jOjMyMCBmcnYtZGlzLmM6MzcxIGlwMmstZGlzLmM6MzI5IGlxMjAwMC1kaXMuYzoxOTIgbTMyci1kaXMuYzoyNTEKKyM6IG9wZW5yaXNjLWRpcy5jOjEzOCB4c3Rvcm15MTYtZGlzLmM6MTcxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucmVjb2duaXplZCBmaWVsZCAlZCB3aGlsZSBwcmludGluZyBpbnNuLlxuIgotbXNnc3RyICIiCittc2dzdHIgIlVuYmVrYW5udGVzIEZlbGQgJWQgYmVpbSBTY2hyZWliZW4gZGVzIEJlZmVobHMuXG4iCiAKLSM6IGZyMzAtaWJsZC5jOjE2NiBmcnYtaWJsZC5jOjE2NiBtMzJyLWlibGQuYzoxNjYgb3BlbnJpc2MtaWJsZC5jOjE2NgotIzogeHN0b3JteTE2LWlibGQuYzoxNjYKKyM6IGZyMzAtaWJsZC5jOjE2NiBmcnYtaWJsZC5jOjE2NiBpcDJrLWlibGQuYzoxNjYgaXEyMDAwLWlibGQuYzoxNjYKKyM6IG0zMnItaWJsZC5jOjE2NiBvcGVucmlzYy1pYmxkLmM6MTY2IHhzdG9ybXkxNi1pYmxkLmM6MTY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9wZXJhbmQgb3V0IG9mIHJhbmdlICglbGQgbm90IGJldHdlZW4gJWxkIGFuZCAlbHUpIgotbXNnc3RyICIiCittc2dzdHIgIk9wZXJhbmQgYXXDn2VyaGFsYiBkZXMgZ8O8bHRpZ2VuIEJlcmVpY2hzICglbGQgaXN0IG5pY2h0IHp3aXNjaGVuICVsZCB1bmQgJWx1KSIKIAotIzogZnIzMC1pYmxkLmM6MTc5IGZydi1pYmxkLmM6MTc5IG0zMnItaWJsZC5jOjE3OSBvcGVucmlzYy1pYmxkLmM6MTc5Ci0jOiB4c3Rvcm15MTYtaWJsZC5jOjE3OQorIzogZnIzMC1pYmxkLmM6MTc5IGZydi1pYmxkLmM6MTc5IGlwMmstaWJsZC5jOjE3OSBpcTIwMDAtaWJsZC5jOjE3OQorIzogbTMyci1pYmxkLmM6MTc5IG9wZW5yaXNjLWlibGQuYzoxNzkgeHN0b3JteTE2LWlibGQuYzoxNzkKICMsIGMtZm9ybWF0CiBtc2dpZCAib3BlcmFuZCBvdXQgb2YgcmFuZ2UgKCVsdSBub3QgYmV0d2VlbiAwIGFuZCAlbHUpIgotbXNnc3RyICIiCittc2dzdHIgIk9wZXJhbmQgYXXDn2VyaGFsYiBkZXMgZ8O8bHRpZ2VuIEJlcmVpY2hzICglbHUgaXN0IG5pY2h0IHp3aXNjaGVuIDAgdW5kICVsdSkiCiAKLSM6IGZyMzAtaWJsZC5jOjczMCBmcnYtaWJsZC5jOjgyMCBtMzJyLWlibGQuYzo2NTkgb3BlbnJpc2MtaWJsZC5jOjYzMwotIzogeHN0b3JteTE2LWlibGQuYzo2NzgKKyM6IGZyMzAtaWJsZC5jOjczMCBmcnYtaWJsZC5jOjgyOSBpcDJrLWlibGQuYzo2MDcgaXEyMDAwLWlibGQuYzo3MTMKKyM6IG0zMnItaWJsZC5jOjY1OSBvcGVucmlzYy1pYmxkLmM6NjMzIHhzdG9ybXkxNi1pYmxkLmM6Njc4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucmVjb2duaXplZCBmaWVsZCAlZCB3aGlsZSBidWlsZGluZyBpbnNuLlxuIgotbXNnc3RyICIiCittc2dzdHIgIlVuYmVrYW5udGVzIEZlbGQgJWQgYmVpbSBFcnpldWdlbiBkZXMgQmVmZWhscy5cbiIKIAotIzogZnIzMC1pYmxkLmM6OTM3IGZydi1pYmxkLmM6MTEwMyBtMzJyLWlibGQuYzo3OTIgb3BlbnJpc2MtaWJsZC5jOjczNQotIzogeHN0b3JteTE2LWlibGQuYzo4MjYKKyM6IGZyMzAtaWJsZC5jOjkzNyBmcnYtaWJsZC5jOjExMjEgaXAyay1pYmxkLmM6Njg0IGlxMjAwMC1pYmxkLmM6ODkwCisjOiBtMzJyLWlibGQuYzo3OTIgb3BlbnJpc2MtaWJsZC5jOjczNSB4c3Rvcm15MTYtaWJsZC5jOjgyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbml6ZWQgZmllbGQgJWQgd2hpbGUgZGVjb2RpbmcgaW5zbi5cbiIKLW1zZ3N0ciAiIgorbXNnc3RyICJVbmJla2FubnRlZCBGZWxkICVkIGJlaW0gRGVjb2RpZXJlbiBkZXMgQmVmZWhscy5cbiIKIAotIzogZnIzMC1pYmxkLmM6MTA4NiBmcnYtaWJsZC5jOjEzNDggbTMyci1pYmxkLmM6OTAyIG9wZW5yaXNjLWlibGQuYzo4MTUKLSM6IHhzdG9ybXkxNi1pYmxkLmM6OTM5CisjOiBmcjMwLWlibGQuYzoxMDg2IGZydi1pYmxkLmM6MTM3NSBpcDJrLWlibGQuYzo3NjEgaXEyMDAwLWlibGQuYzoxMDI0CisjOiBtMzJyLWlibGQuYzo5MDIgb3BlbnJpc2MtaWJsZC5jOjgxNSB4c3Rvcm15MTYtaWJsZC5jOjkzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbml6ZWQgZmllbGQgJWQgd2hpbGUgZ2V0dGluZyBpbnQgb3BlcmFuZC5cbiIKLW1zZ3N0ciAiIgorbXNnc3RyICJVbmJla2FubnRlcyBGZWxkICVkIGJlaW0gSG9sZW4gZGVzIGludC1PcGVyYW5kZW4uXG4iCiAKLSM6IGZyMzAtaWJsZC5jOjEyMTUgZnJ2LWlibGQuYzoxNTczIG0zMnItaWJsZC5jOjk5MiBvcGVucmlzYy1pYmxkLmM6ODc1Ci0jOiB4c3Rvcm15MTYtaWJsZC5jOjEwMzIKKyM6IGZyMzAtaWJsZC5jOjEyMTUgZnJ2LWlibGQuYzoxNjA5IGlwMmstaWJsZC5jOjgxOCBpcTIwMDAtaWJsZC5jOjExMzgKKyM6IG0zMnItaWJsZC5jOjk5MiBvcGVucmlzYy1pYmxkLmM6ODc1IHhzdG9ybXkxNi1pYmxkLmM6MTAzMgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbml6ZWQgZmllbGQgJWQgd2hpbGUgZ2V0dGluZyB2bWEgb3BlcmFuZC5cbiIKLW1zZ3N0ciAiIgorbXNnc3RyICJVbmJla2FubnRlcyBGZWxkICVkIGJlaW0gSG9sZW4gZGVzIHZtYS1PcGVyYW5kZW4uXG4iCiAKLSM6IGZyMzAtaWJsZC5jOjEzNDkgZnJ2LWlibGQuYzoxODA3IG0zMnItaWJsZC5jOjEwOTAgb3BlbnJpc2MtaWJsZC5jOjk0NAotIzogeHN0b3JteTE2LWlibGQuYzoxMTM0CisjOiBmcjMwLWlibGQuYzoxMzQ5IGZydi1pYmxkLmM6MTg1MiBpcDJrLWlibGQuYzo4ODAgaXEyMDAwLWlibGQuYzoxMjYxCisjOiBtMzJyLWlibGQuYzoxMDkwIG9wZW5yaXNjLWlibGQuYzo5NDQgeHN0b3JteTE2LWlibGQuYzoxMTM0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucmVjb2duaXplZCBmaWVsZCAlZCB3aGlsZSBzZXR0aW5nIGludCBvcGVyYW5kLlxuIgotbXNnc3RyICIiCittc2dzdHIgIlVuYmVrYW5udGVzIEZlbGQgJWQgYmVpbSBTZXR6ZW4gZGVzIGludC1PcGVyYW5kZW4uXG4iCiAKLSM6IGZyMzAtaWJsZC5jOjE0NzEgZnJ2LWlibGQuYzoyMDI5IG0zMnItaWJsZC5jOjExNzYgb3BlbnJpc2MtaWJsZC5jOjEwMDEKLSM6IHhzdG9ybXkxNi1pYmxkLmM6MTIyNAorIzogZnIzMC1pYmxkLmM6MTQ3MSBmcnYtaWJsZC5jOjIwODMgaXAyay1pYmxkLmM6OTMwIGlxMjAwMC1pYmxkLmM6MTM3MgorIzogbTMyci1pYmxkLmM6MTE3NiBvcGVucmlzYy1pYmxkLmM6MTAwMSB4c3Rvcm15MTYtaWJsZC5jOjEyMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5yZWNvZ25pemVkIGZpZWxkICVkIHdoaWxlIHNldHRpbmcgdm1hIG9wZXJhbmQuXG4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiVW5iZWthbm50ZXMgRmVsZCAlZCBiZWltIEhvbGVuIGRlcyB2bWEtT3BlcmFuZGVuLlxuIgogCi0jOiBoODMwMC1kaXMuYzozODUKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiSG1tbW0gJXgiCi1tc2dzdHIgIiIKKyM6IGZydi1hc20uYzozNjUKK21zZ2lkICJyZWdpc3RlciBudW1iZXIgbXVzdCBiZSBldmVuIgorbXNnc3RyICJEaWUgUmVnaXN0ZXJudW1tZXIgbXVzcyBnZXJhZGUgc2Vpbi4iCiAKLSM6IGg4MzAwLWRpcy5jOjM5NgorIzogaDgzMDAtZGlzLmM6Mzc3CiAjLCBjLWZvcm1hdAotbXNnaWQgIkRvbid0IHVuZGVyc3RhbmQgJXggXG4iCi1tc2dzdHIgIiIKK21zZ2lkICJIbW1tbSAweCV4IgorbXNnc3RyICJIbW1tbSAweCV4IgorCisjOiBoODMwMC1kaXMuYzo3NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRG9uJ3QgdW5kZXJzdGFuZCAweCV4IFxuIgorbXNnc3RyICJJY2ggdmVyc3RlaGUgwrsweCV4wqsgbmljaHQuXG4iCiAKICM6IGg4NTAwLWRpcy5jOjE0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW4ndCBjb3BlIHdpdGggaW5zZXJ0ICVkXG4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiS2FubiBuaWNodCBtaXQgwrtpbnNlcnYgJWTCqyB1bWdlaGVuLlxuIgogCisjICBDb3VsZG4ndCB1bmRlcnN0YW5kIGFueXRoaW5nLgogIy4gQ291bGRuJ3QgdW5kZXJzdGFuZCBhbnl0aGluZy4KICM6IGg4NTAwLWRpcy5jOjM1MAogIywgYy1mb3JtYXQKIG1zZ2lkICIlMDJ4XHRcdCp1bmtub3duKiIKLW1zZ3N0ciAiIgorbXNnc3RyICIlMDJ4XHRcdCp1bmJla2FubnQqIgogCi0jOiBpMzg2LWRpcy5jOjE2NDkKKyM6IGkzODYtZGlzLmM6MTY5OQogbXNnaWQgIjxpbnRlcm5hbCBkaXNhc3NlbWJsZXIgZXJyb3I+IgotbXNnc3RyICIiCittc2dzdHIgIjxpbnRlcm5lciBEaXNhc3NlbWJsZXJmZWhsZXI+IgorCisjOiBpYTY0LWdlbi5jOjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogRXJyb3I6ICIKK21zZ3N0ciAiJXM6IEZlaGxlcjoiCisKKyM6IGlhNjQtZ2VuLmM6MzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBXYXJuaW5nOiAiCittc2dzdHIgIiVzOiBXYXJudW5nOiIKKworIzogaWE2NC1nZW4uYzo0OTQgaWE2NC1nZW4uYzo3MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAibXVsdGlwbGUgbm90ZSAlcyBub3QgaGFuZGxlZFxuIgorbXNnc3RyICJNZWhyZmFjaGUgQmVtZXJrdW5nIMK7JXPCqyBuaWNodCB2ZXJhcmJlaXRldC5cbiIKKworIzogaWE2NC1nZW4uYzo2MDUKK21zZ2lkICJjYW4ndCBmaW5kIGlhNjQtaWMudGJsIGZvciByZWFkaW5nXG4iCittc2dzdHIgIkthbm4gwrtpYTY0LWljLnRibMKrIG5pY2h0IHp1bSBMZXNlbiBmaW5kZW5cbiIKKworIzogaWE2NC1nZW4uYzo4MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2FuJ3QgZmluZCAlcyBmb3IgcmVhZGluZ1xuIgorbXNnc3RyICJLYW5uIMK7JXPCqyBuaWNodCB6dW0gTGVzZW4gZmluZGVuXG4iCisKKyM6IGlhNjQtZ2VuLmM6MTAzNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisibW9zdCByZWNlbnQgZm9ybWF0ICclcydcbiIKKyJhcHBlYXJzIG1vcmUgcmVzdHJpY3RpdmUgdGhhbiAnJXMnXG4iCittc2dzdHIgIkRhcyBsZXR6dGUgRm9ybWF0IMK7JXPCqyBzY2hlaW50IHN0cmVuZ2VyIHp1IHNlaW4gYWxzIMK7JXPCqy5cbiIKKworIzogaWE2NC1nZW4uYzoxMDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIm92ZXJsYXBwaW5nIGZpZWxkICVzLT4lc1xuIgorbXNnc3RyICLDnGJlcmxhcHBlbmRlcyBGZWxkIMK7JXMtPiVzwqsuXG4iCisKKyM6IGlhNjQtZ2VuLmM6MTIzNgorIywgYy1mb3JtYXQKK21zZ2lkICJvdmVyd3JpdGluZyBub3RlICVkIHdpdGggbm90ZSAlZCAoSUM6JXMpXG4iCittc2dzdHIgIsOcYmVyc2NocmVpYmUgQmVtZXJrdW5nICVkIG1pdCBCZW1lcmt1bmcgJWQgKElDOiVzKVxuIgorCisjOiBpYTY0LWdlbi5jOjE0MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZG9uJ3Qga25vdyBob3cgdG8gc3BlY2lmeSAlJSBkZXBlbmRlbmN5ICVzXG4iCittc2dzdHIgIktlaW5lIEFobnVuZywgd2llIGljaCBkaWUgQWJow6RuZ2lna2VpdCDCuyUlICVzwqsgYW5nZWJlbiBzb2xsLlxuIgorCisjOiBpYTY0LWdlbi5jOjE0NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRG9uJ3Qga25vdyBob3cgdG8gc3BlY2lmeSAjIGRlcGVuZGVuY3kgJXNcbiIKK21zZ3N0ciAiS2VpbmUgQWhudW5nLCB3aWUgaWNoIGRpZSBBYmjDpG5naWdrZWl0IMK7IyAlc8KrIGFuZ2ViZW4gc29sbC5cbiIKKworIzogaWE2NC1nZW4uYzoxNDk2CisjLCBjLWZvcm1hdAorbXNnaWQgIklDOiVzIFslc10gaGFzIG5vIHRlcm1pbmFscyBvciBzdWItY2xhc3Nlc1xuIgorbXNnc3RyICJJQzolcyBbJXNdIGhhdCB3ZWRlciBUZXJtaW5hbGUgbm9jaCBVbnRlcmtsYXNzZW5cbiIKKworIzogaWE2NC1nZW4uYzoxNDk5CisjLCBjLWZvcm1hdAorbXNnaWQgIklDOiVzIGhhcyBubyB0ZXJtaW5hbHMgb3Igc3ViLWNsYXNzZXNcbiIKK21zZ3N0ciAiSUM6JXMgaGF0IHdlZGVyIFRlcm1pbmFsZSBub2NoIFVudGVya2xhc3NlblxuIgorCisjOiBpYTY0LWdlbi5jOjE1MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAibm8gaW5zbnMgbWFwcGVkIGRpcmVjdGx5IHRvIHRlcm1pbmFsIElDICVzIFslc10iCittc2dzdHIgIktlaW4gQmVmZWhsIGlzdCBkZW0gVGVybWluYWwtSUMgwrslcyBbJXNdwqsgZGlyZWt0IHp1Z2VvcmRuZXQiCisKKyM6IGlhNjQtZ2VuLmM6MTUxMQorIywgYy1mb3JtYXQKK21zZ2lkICJubyBpbnNucyBtYXBwZWQgZGlyZWN0bHkgdG8gdGVybWluYWwgSUMgJXNcbiIKK21zZ3N0ciAiS2VpbiBCZWZlaGwgaXN0IGRlbSBUZXJtaW5hbC1JQyDCuyVzwqsgZGlyZWt0IHp1Z2VvcmRuZXQuXG4iCisKKyM6IGlhNjQtZ2VuLmM6MTUyMgorIywgYy1mb3JtYXQKK21zZ2lkICJjbGFzcyAlcyBpcyBkZWZpbmVkIGJ1dCBub3QgdXNlZFxuIgorbXNnc3RyICJEaWUgS2xhc3NlIMK7JXPCqyB3dXJkZSBkZWZpbmllcnQsIGFiZXIgbmljaHQgYmVudXR6dC5cbiIKKworIzogaWE2NC1nZW4uYzoxNTMzCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IHJzcmMgJXMgKCVzKSBoYXMgbm8gY2hrcyVzXG4iCittc2dzdHIgIldhcm51bmc6IERpZSBSZXNzb3VyY2UgwrslcyAoJXMpwqsgaGF0IGtlaW5lIMK7Y2hrcyVzwqsuXG4iCisKKyM6IGlhNjQtZ2VuLmM6MTUzNworIywgYy1mb3JtYXQKK21zZ2lkICJyc3JjICVzICglcykgaGFzIG5vIHJlZ3NcbiIKK21zZ3N0ciAiRGllIFJlc3NvdXJjZSDCuyVzICglcynCqyBoYXQga2VpbmUgUmVnaXN0ZXJcbiIKKworIzogaWE2NC1nZW4uYzoyNDM2CisjLCBjLWZvcm1hdAorbXNnaWQgIklDIG5vdGUgJWQgaW4gb3Bjb2RlICVzIChJQzolcykgY29uZmxpY3RzIHdpdGggcmVzb3VyY2UgJXMgbm90ZSAlZFxuIgorbXNnc3RyICJJQyBCZW1lcmt1bmcgJWQgaW4gT3Bjb2RlIMK7JXMgKElDOiVzKcKrIHZlcnRyw6RndCBzaWNoIG5pY2h0IG1pdCBSZXNzb3VyY2UgJXMgQmVtZXJrdW5nICVkLlxuIgorCisjOiBpYTY0LWdlbi5jOjI0NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSUMgbm90ZSAlZCBmb3Igb3Bjb2RlICVzIChJQzolcykgY29uZmxpY3RzIHdpdGggcmVzb3VyY2UgJXMgbm90ZSAlZFxuIgorbXNnc3RyICJJQyBCZW1lcmt1bmcgJWQgZsO8ciBPcGNvZGUgwrslcyAoSUM6JXMpwqsgdmVydHLDpGd0IHNpY2ggbmljaHQgbWl0IFJlc3NvdXJjZSAlcyBCZW1lcmt1bmcgJWQuXG4iCisKKyM6IGlhNjQtZ2VuLmM6MjQ3OAorIywgYy1mb3JtYXQKK21zZ2lkICJvcGNvZGUgJXMgaGFzIG5vIGNsYXNzIChvcHMgJWQgJWQgJWQpXG4iCittc2dzdHIgIk9wY29kZSAlcyBoYXQga2VpbmUgS2xhc3NlIChPcGVyYW5kZW4gJWQgJWQgJWQpXG4iCisKKyM6IGlhNjQtZ2VuLmM6Mjc4OQorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gY2hhbmdlIGRpcmVjdG9yeSB0byBcIiVzXCIsIGVycm5vID0gJXNcbiIKK21zZ3N0ciAiS2FubiBuaWNodCBpbiBkYXMgVmVyemVpY2huaXMgwrslc8KrIHdlY2hzZWxuLCBlcnJubyA9ICVzXG4iCisKKyMgIFdlJ3ZlIGJlZW4gcGFzc2VkIGEgdy4gIFJldHVybiB3aXRoIGFuIGVycm9yIG1lc3NhZ2Ugc28gdGhhdAorIyAgY2dlbiB3aWxsIHRyeSB0aGUgbmV4dCBwYXJzaW5nIG9wdGlvbi4KKyMuIFdlJ3ZlIGJlZW4gcGFzc2VkIGEgdy4gIFJldHVybiB3aXRoIGFuIGVycm9yIG1lc3NhZ2Ugc28gdGhhdAorIy4gY2dlbiB3aWxsIHRyeSB0aGUgbmV4dCBwYXJzaW5nIG9wdGlvbi4KKyM6IGlwMmstYXNtLmM6OTIKK21zZ2lkICJXIGtleXdvcmQgaW52YWxpZCBpbiBGUiBvcGVyYW5kIHNsb3QuIgorbXNnc3RyICJTY2hsw7xzc2Vsd29ydCDCu1fCqyBpc3QgaW0gT3BlcmFuZGVucGxhdHogwrtGUsKrIHVuZ8O8bHRpZy4iCisKKyMgIEludmFsaWQgb2Zmc2V0IHByZXNlbnQuCisjLiBJbnZhbGlkIG9mZnNldCBwcmVzZW50LgorIzogaXAyay1hc20uYzoxMjIKK21zZ2lkICJvZmZzZXQoSVApIGlzIG5vdCBhIHZhbGlkIGZvcm0iCittc2dzdHIgIsK7b2Zmc2V0KElQKcKrIGlzdCBrZWluZSBnw7xsdGlnZSBGb3JtLiIKKworIyAgRm91bmQgc29tZXRoaW5nIHRoZXJlIGluIGZyb250IG9mIChEUCkgYnV0IGl0J3Mgb3V0CisjICBvZiByYW5nZS4KKyMuIEZvdW5kIHNvbWV0aGluZyB0aGVyZSBpbiBmcm9udCBvZiAoRFApIGJ1dCBpdCdzIG91dAorIy4gb2YgcmFuZ2UuCisjOiBpcDJrLWFzbS5jOjE3NQorbXNnaWQgIihEUCkgb2Zmc2V0IG91dCBvZiByYW5nZS4iCittc2dzdHIgIihEUCkgT2Zmc2V0IGF1w59lcmhhbGIgZGVzIGfDvGx0aWdlbiBCZXJlaWNocy4iCisKKyMgIEZvdW5kIHNvbWV0aGluZyB0aGVyZSBpbiBmcm9udCBvZiAoU1ApIGJ1dCBpdCdzIG91dAorIyAgb2YgcmFuZ2UuCisjLiBGb3VuZCBzb21ldGhpbmcgdGhlcmUgaW4gZnJvbnQgb2YgKFNQKSBidXQgaXQncyBvdXQKKyMuIG9mIHJhbmdlLgorIzogaXAyay1hc20uYzoyMjEKK21zZ2lkICIoU1ApIG9mZnNldCBvdXQgb2YgcmFuZ2UuIgorbXNnc3RyICIoU1ApIE9mZnNldCBhdcOfZXJoYWxiIGRlcyBnw7xsdGlnZW4gQmVyZWljaHMuIgorCisjOiBpcDJrLWFzbS5jOjI0MQorbXNnaWQgImlsbGVnYWwgdXNlIG9mIHBhcmVudGhlc2VzIgorbXNnc3RyICJVbmVybGF1YnRlIEJlbnV0enVuZyB2b24gS2xhbW1lcm4uIgorCisjOiBpcDJrLWFzbS5jOjI0OAorbXNnaWQgIm9wZXJhbmQgb3V0IG9mIHJhbmdlIChub3QgYmV0d2VlbiAxIGFuZCAyNTUpIgorbXNnc3RyICJPcGVyYW5kIGF1w59lcmhhbGIgZGVzIGfDvGx0aWdlbiBCZXJlaWNocyAoMSBiaXMgMjU1KS4iCisKKyMgIFNvbWV0aGluZyBpcyB2ZXJ5IHdyb25nLiBvcGluZGV4IGhhcyB0byBiZSBvbmUgb2YgdGhlIGFib3ZlLgorIy4gU29tZXRoaW5nIGlzIHZlcnkgd3JvbmcuIG9waW5kZXggaGFzIHRvIGJlIG9uZSBvZiB0aGUgYWJvdmUuCisjOiBpcDJrLWFzbS5jOjI3MworbXNnaWQgInBhcnNlX2FkZHIxNjogaW52YWxpZCBvcGluZGV4LiIKK21zZ3N0ciAicGFyc2VfYWRkcjE2OiBVbmfDvGx0aWdlciBPcGVyYXRvcmluZGV4LiIKKworIzogaXAyay1hc20uYzozNTMKK21zZ2lkICJCeXRlIGFkZHJlc3MgcmVxdWlyZWQuIC0gbXVzdCBiZSBldmVuLiIKK21zZ3N0ciAiQnl0ZWFkcmVzc2UgYmVuw7Z0aWd0IC0tIG11c3MgZ2VyYWRlIHNlaW4uIgorCisjOiBpcDJrLWFzbS5jOjM2MgorbXNnaWQgImNnZW5fcGFyc2VfYWRkcmVzcyByZXR1cm5lZCBhIHN5bWJvbC4gTGl0ZXJhbCByZXF1aXJlZC4iCittc2dzdHIgImNnZW5fcGFyc2VfYWRkcmVzczogR2ViZSBTeW1ib2wgenVyw7xjay4gU29sbHRlIGVpZ2VudGxpY2ggZWluIExpdGVyYWwgc2Vpbi4iCisKKyM6IGlwMmstYXNtLmM6NDIwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVvcGVyYXRvciBvcGVyYW5kIGlzIG5vdCBhIHN5bWJvbCIKK21zZ3N0ciAiRGVyIE9wZXJhbmQgJW9wZXJhdG9yIG11c3MgZWluIFN5bWJvbCBzZWluLiIKKworIzogaXAyay1hc20uYzo0NzQKK21zZ2lkICJBdHRlbXB0IHRvIGZpbmQgYml0IGluZGV4IG9mIDAiCittc2dzdHIgIlZlcnN1Y2gsIGVpbiBnZXNldHp0ZXMgQml0IHZvbiAwIHp1IGJlc3RpbW1lbiIKKworIzogaXEyMDAwLWFzbS5jOjExMCBpcTIwMDAtYXNtLmM6MTQxCittc2dpZCAiaW1tZWRpYXRlIHZhbHVlIGNhbm5vdCBiZSByZWdpc3RlciIKK21zZ3N0ciAiRWluIERpcmVrdG9wZXJhbmQga2FubiBrZWluIFJlZ2lzdGVyIHNlaW4uIgorCisjOiBpcTIwMDAtYXNtLmM6MTIwIGlxMjAwMC1hc20uYzoxNTEKK21zZ2lkICJpbW1lZGlhdGUgdmFsdWUgb3V0IG9mIHJhbmdlIgorbXNnc3RyICJEaXJla3RvcGVyYW5kIGF1w59lcmhhbGIgZGVzIGfDvGx0aWdlbiBCZXJlaWNocy4iCisKKyM6IGlxMjAwMC1hc20uYzoxODAKK21zZ2lkICIyMS1iaXQgb2Zmc2V0IG91dCBvZiByYW5nZSIKK21zZ3N0ciAiMjEtQml0LU9mZnNldCBhdcOfZXJoYWxiIGRlcyBnw7xsdGlnZW4gQmVyZWljaHMiCisKKyM6IGlxMjAwMC1hc20uYzoyMDUgaXEyMDAwLWFzbS5jOjIzNSBpcTIwMDAtYXNtLmM6MjcyIGlxMjAwMC1hc20uYzozMDUKKyM6IG9wZW5yaXNjLWFzbS5jOjk2IG9wZW5yaXNjLWFzbS5jOjE1NQorbXNnaWQgIm1pc3NpbmcgYCknIgorbXNnc3RyICJGZWhsZW5kZSDCuynCqy4iCiAKICM6IG0xMDIwMC1kaXMuYzoxOTkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93blx0MHglMDJ4IgotbXNnc3RyICIiCittc2dzdHIgInVuYmVrYW5udFx0MHglMDJ4IgogCiAjOiBtMTAyMDAtZGlzLmM6MzM5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd25cdDB4JTA0bHgiCi1tc2dzdHIgIiIKK21zZ3N0ciAidW5iZWthbm50XHQweCUwNGx4IgogCi0jOiBtMTAzMDAtZGlzLmM6Njg1CisjOiBtMTAzMDAtZGlzLmM6NzY2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd25cdDB4JTA0eCIKLW1zZ3N0ciAiIgorbXNnc3RyICJ1bmJla2FubnRcdDB4JTA0eCIKIAogIzogbTY4ay1kaXMuYzo0MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiPGludGVybmFsIGVycm9yIGluIG9wY29kZSB0YWJsZTogJXMgJXM+XG4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiPGludGVybmVyIEZlaGxlciBpbiBkZXIgT3Bjb2RlLVRhYmVsbGU6ICVzICVzPlxuIgogCiAjOiBtNjhrLWRpcy5jOjEwMDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiPGZ1bmN0aW9uIGNvZGUgJWQ+IgotbXNnc3RyICIiCittc2dzdHIgIjxGdW5rdGlvbnNjb2RlICVkPiIKIAotIzogbTg4ay1kaXMuYzoyNTUKKyM6IG04OGstZGlzLmM6NzQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiMgPGRpcyBlcnJvcjogJTA4eD4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiIyA8RGlzYXNzZW1ibGllcnVuZ3NmZWhsZXI6ICUwOHg+IgogCi0jOiBtaXBzLWRpcy5jOjMzNworIzogbWlwcy1kaXMuYzo2OTkKK21zZ2lkICIjIGludGVybmFsIGVycm9yLCBpbmNvbXBsZXRlIGV4dGVuc2lvbiBzZXF1ZW5jZSAoKykiCittc2dzdHIgIiMgSW50ZXJuZXIgRmVobGVyLCB1bnZvbGxzdMOkbmRpZ2UgRXJ3ZWl0ZXJ1bmdzZm9sZ2UgKCspIgorCisjOiBtaXBzLWRpcy5jOjc0MgorIywgYy1mb3JtYXQKK21zZ2lkICIjIGludGVybmFsIGVycm9yLCB1bmRlZmluZWQgZXh0ZW5zaW9uIHNlcXVlbmNlICgrJWMpIgorbXNnc3RyICIjIEludGVybmVyIEZlaGxlciwgdW5kZWZpbmllcnRlIEVyd2VpdGVydW5nc2ZvbGdlICgrJWMpIgorCisjOiBtaXBzLWRpcy5jOjEwMDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIyBpbnRlcm5hbCBlcnJvciwgdW5kZWZpbmVkIG1vZGlmaWVyKCVjKSIKLW1zZ3N0ciAiIgorbXNnc3RyICIjIEludGVybmVyIEZlaGxlciwgdW5kZWZpbmllcnRlciBNb2RpZmlrYXRvciAoJWMpIgogCi0jOiBtaXBzLWRpcy5jOjEyMDkKKyM6IG1pcHMtZGlzLmM6MTc1MQogIywgYy1mb3JtYXQKIG1zZ2lkICIjIGludGVybmFsIGRpc2Fzc2VtYmxlciBlcnJvciwgdW5yZWNvZ25pc2VkIG1vZGlmaWVyICglYykiCittc2dzdHIgIiMgSW50ZXJuZXIgRmVobGVyIGltIERpc2Fzc2VtYmxlcjogdW5lcmthbm50ZXIgTW9kaWZpa2F0b3IgKCVjKSIKKworIzogbWlwcy1kaXMuYzoxNzYzCittc2dpZCAiIgorIlxuIgorIlRoZSBmb2xsb3dpbmcgTUlQUyBzcGVjaWZpYyBkaXNhc3NlbWJsZXIgb3B0aW9ucyBhcmUgc3VwcG9ydGVkIGZvciB1c2VcbiIKKyJ3aXRoIHRoZSAtTSBzd2l0Y2ggKG11bHRpcGxlIG9wdGlvbnMgc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBjb21tYXMpOlxuIgogbXNnc3RyICIiCisiXG4iCisiRGllIGZvbGdlbmRlbiBNSVBTLXNwZXppZmlzY2hlbiBEaXNhc3NlbWJsZXJvcHRpb25lbiB3ZXJkZW4genVzYW1tZW5cbiIKKyJtaXQgZGVtIFNjaGFsdGVyIMK7LU3CqyB1bnRlcnN0w7x0enQgKG1laHJlcmUgT3B0aW9uZW4gc29sbHRlbiBkdXJjaFxuIgorIktvbW1hdGEgZ2V0cmVubnQgd2VyZGVuKTpcbiIKKworIzogbWlwcy1kaXMuYzoxNzY3Cittc2dpZCAiIgorIlxuIgorIiAgZ3ByLW5hbWVzPUFCSSAgICAgICAgICAgIFByaW50IEdQUiBuYW1lcyBhY2NvcmRpbmcgdG8gIHNwZWNpZmllZCBBQkkuXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdDogYmFzZWQgb24gYmluYXJ5IGJlaW5nIGRpc2Fzc2VtYmxlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIiAgZ3ByLW5hbWVzPUFCSSAgICAgICAgICAgIEdpYiBHUFItTmFtZW4gZW50c3ByZWNoZW5kIGRlcyBhbmdlZ2ViZW5lbiBBQkkgYXVzLlxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkOiBhYmjDpG5naWcgdm9uIGRlciBCaW7DpHJkYXRlaSwgZGllXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYXNzZW1ibGllcnQgd2lyZC5cbiIKKworIzogbWlwcy1kaXMuYzoxNzcxCittc2dpZCAiIgorIlxuIgorIiAgZnByLW5hbWVzPUFCSSAgICAgICAgICAgIFByaW50IEZQUiBuYW1lcyBhY2NvcmRpbmcgdG8gc3BlY2lmaWVkIEFCSS5cbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0OiBudW1lcmljLlxuIgorbXNnc3RyICIiCisiXG4iCisiICBmcHItbmFtZXM9QUJJICAgICAgICAgICAgR2liIEZQUi1OYW1lbiBlbnRzcHJlY2hlbmQgZGVzIGFuZ2VnZWJlbmVuIEFCSSBhdXMuXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmQ6IG51bWVyaXNjaC5cbiIKKworIzogbWlwcy1kaXMuYzoxNzc1Cittc2dpZCAiIgorIlxuIgorIiAgY3AwLW5hbWVzPUFSQ0ggICAgICAgICAgIFByaW50IENQMCByZWdpc3RlciBuYW1lcyBhY2NvcmRpbmcgdG9cbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgYXJjaGl0ZWN0dXJlLlxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQ6IGJhc2VkIG9uIGJpbmFyeSBiZWluZyBkaXNhc3NlbWJsZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyIgIGNwMC1uYW1lcz1BUkNIICAgICAgICAgICBHaWIgQ1AwLVJlZ2lzdGVybmFtZW4gZW50c3ByZWNoZW5kIGRlciBhbmdlZ2ViZW5lblxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyY2hpdGVrdHVyIGF1cy5cbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZDogYWJow6RuZ2lnIHZvbiBkZXIgQmluw6RyZGF0ZWksIGRpZVxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2Fzc2VtYmxpZXJ0IHdpcmQuXG4iCisKKyM6IG1pcHMtZGlzLmM6MTc4MAorbXNnaWQgIiIKKyJcbiIKKyIgIGh3ci1uYW1lcz1BUkNIICAgICAgICAgICBQcmludCBIV1IgbmFtZXMgYWNjb3JkaW5nIHRvIHNwZWNpZmllZCBcbiIKKyJcdFx0XHQgICBhcmNoaXRlY3R1cmUuXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdDogYmFzZWQgb24gYmluYXJ5IGJlaW5nIGRpc2Fzc2VtYmxlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIiAgaHdyLW5hbWVzPUFSQ0ggICAgICAgICAgIEdpYiBIV1ItTmFtZW4gZW50c3ByZWNoZW5kIGRlciBhbmdlZ2ViZW5lblxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyY2hpdGVrdHVyIGF1cy5cbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZDogYWJow6RuZ2lnIHZvbiBkZXIgQmluw6RyZGF0ZWksIGRpZVxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmFyYmVpdGV0IHdpcmQuXG4iCisKKyM6IG1pcHMtZGlzLmM6MTc4NQorbXNnaWQgIiIKKyJcbiIKKyIgIHJlZy1uYW1lcz1BQkkgICAgICAgICAgICBQcmludCBHUFIgYW5kIEZQUiBuYW1lcyBhY2NvcmRpbmcgdG9cbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgQUJJLlxuIgorbXNnc3RyICIiCisiXG4iCisiICByZWctbmFtZXM9QUJJICAgICAgICAgICAgR2liIEdQUi0gdW5kIEZQUi1OYW1lbiBlbnRzcHJlY2hlbmQgZGVzXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nZWdlYmVuZW4gQUJJIGF1cy5cbiIKKworIzogbWlwcy1kaXMuYzoxNzg5Cittc2dpZCAiIgorIlxuIgorIiAgcmVnLW5hbWVzPUFSQ0ggICAgICAgICAgIFByaW50IENQMCByZWdpc3RlciBhbmQgSFdSIG5hbWVzIGFjY29yZGluZyB0b1xuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBhcmNoaXRlY3R1cmUuXG4iCittc2dzdHIgIiIKKyJcbiIKKyIgIHJlZy1uYW1lcz1BUkNIICAgICAgICAgICBHaWIgQ1AwLVJlZ2lzdGVyIHVuZCBIV1ItTmFtZW4gZW50c3ByZWNoZW5kIGRlclxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2VnZWJlbmVuIEFyY2hpdGVrdHVyIGF1cy5cbiIKKworIzogbWlwcy1kaXMuYzoxNzkzCittc2dpZCAiIgorIlxuIgorIiAgRm9yIHRoZSBvcHRpb25zIGFib3ZlLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkIGZvciBcIkFCSVwiOlxuIgorIiAgICIKK21zZ3N0ciAiIgorIlxuIgorIiAgRsO8ciBkaWUgb2JpZ2VuIE9wdGlvbmVuIHdlcmRlbiBkaWUgZm9sZ2VuZGVuIFdlcnRlIGbDvHIgwrtBQknCqyB1bnRlcnN0w7x0enQ6XG4iCisiICAgIgorCisjOiBtaXBzLWRpcy5jOjE3OTggbWlwcy1kaXMuYzoxODA2IG1pcHMtZGlzLmM6MTgwOAorbXNnaWQgIlxuIgorbXNnc3RyICJcbiIKKworIzogbWlwcy1kaXMuYzoxODAwCittc2dpZCAiIgorIlxuIgorIiAgRm9yIHRoZSBvcHRpb25zIGFib3ZlLCBUaGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkIGZvciBcIkFSQ0hcIjpcbiIKKyIgICAiCittc2dzdHIgIiIKKyJcbiIKKyIgIEbDvHIgZGllIG9iaWdlbiBPcHRpb25lbiB3ZXJkZW4gZGllIGZvbGdlbmRlbiBXZXJ0ZSBmw7xyIMK7QVJDSMKrIHVudGVyc3TDvHR6dDpcbiIKKyIgICAiCiAKICM6IG1taXgtZGlzLmM6MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIGNhc2UgJWQgKCVzKSBpbiAlczolZFxuIgotbXNnc3RyICIiCittc2dzdHIgIkludGVybmVyIEZlaGxlcjogY2FzZSAlZCAoJXMpIGluICVzOiVkXG4iCiAKICM6IG1taXgtZGlzLmM6NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW50ZXJuYWw6IE5vbi1kZWJ1Z2dlZCBjb2RlICh0ZXN0LWNhc2UgbWlzc2luZyk6ICVzOiVkIgotbXNnc3RyICIiCittc2dzdHIgIkludGVybjogTmljaHQgZ2VkZWJ1Z2d0ZXIgQ29kZSAoVGVzdGZhbGwgZmVobHQpOiAlczolZCIKIAogIzogbW1peC1kaXMuYzo1MwogbXNnaWQgIih1bmtub3duKSIKLW1zZ3N0ciAiIgorbXNnc3RyICIodW5iZWthbm50KSIKIAotIzogbW1peC1kaXMuYzo1MTcKKyM6IG1taXgtZGlzLmM6NTE5CiAjLCBjLWZvcm1hdAogbXNnaWQgIip1bmtub3duIG9wZXJhbmRzIHR5cGU6ICVkKiIKLW1zZ3N0ciAiIgorbXNnc3RyICJVbmJla2FubnRlciBPcGVyYW5kZW50eXA6ICVkKiIKIAorIyAgSSBhbmQgWiBhcmUgb3V0cHV0IG9wZXJhbmRzIGFuZCBjYW5gdCBiZSBpbW1lZGlhdGUKKyMgICogQSBpcyBhbiBhZGRyZXNzIGFuZCB3ZSBjYW5gdCBoYXZlIHRoZSBhZGRyZXNzIG9mCisjICAqIGFuIGltbWVkaWF0ZSBlaXRoZXIuIFdlIGRvbid0IGtub3cgaG93IG11Y2ggdG8gaW5jcmVhc2UKKyMgICogYW9mZnNldHAgYnkgc2luY2Ugd2hhdGV2ZXIgZ2VuZXJhdGVkIHRoaXMgaXMgYnJva2VuCisjICAqIGFueXdheSEKICMuIEkgYW5kIFogYXJlIG91dHB1dCBvcGVyYW5kcyBhbmQgY2FuYHQgYmUgaW1tZWRpYXRlCiAjLiAqIEEgaXMgYW4gYWRkcmVzcyBhbmQgd2UgY2FuYHQgaGF2ZSB0aGUgYWRkcmVzcyBvZgogIy4gKiBhbiBpbW1lZGlhdGUgZWl0aGVyLiBXZSBkb24ndCBrbm93IGhvdyBtdWNoIHRvIGluY3JlYXNlCiAjLiAqIGFvZmZzZXRwIGJ5IHNpbmNlIHdoYXRldmVyIGdlbmVyYXRlZCB0aGlzIGlzIGJyb2tlbgogIy4gKiBhbnl3YXkhCiAjLgotIzogbnMzMmstZGlzLmM6NjI4CisjOiBuczMyay1kaXMuYzo2MzEKIG1zZ2lkICIkPHVuZGVmaW5lZD4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiJDx1bmRlZmluaWVydD4iCiAKLSM6IHBwYy1vcGMuYzo3NzcgcHBjLW9wYy5jOjgxMAorIzogcHBjLW9wYy5jOjc4MSBwcGMtb3BjLmM6ODA5CiBtc2dpZCAiaW52YWxpZCBjb25kaXRpb25hbCBvcHRpb24iCi1tc2dzdHIgIiIKK21zZ3N0ciAiVW5nw7xsdGlnZSBiZWRpbmd0ZSBPcHRpb24iCiAKLSM6IHBwYy1vcGMuYzo4MTIKKyM6IHBwYy1vcGMuYzo4MTEKIG1zZ2lkICJhdHRlbXB0IHRvIHNldCB5IGJpdCB3aGVuIHVzaW5nICsgb3IgLSBtb2RpZmllciIKLW1zZ3N0ciAiIgorbXNnc3RyICJWZXJzdWNoLCBkYXMgeS1CaXQgenVzYW1tZW4gbWl0IGRlbSBNb2RpZmlrYXRvciDCuyvCqyBvZGVyIMK7LcKrIHp1IHNldHplbi4iCiAKLSM6IHBwYy1vcGMuYzo4NDQgcHBjLW9wYy5jOjg5NgorIzogcHBjLW9wYy5jOjg0MAorbXNnaWQgIm9mZnNldCBub3QgYSBtdWx0aXBsZSBvZiAxNiIKK21zZ3N0ciAiT2Zmc2V0IG11c3MgZWluIFZpZWxmYWNoZXMgdm9uIDE2IHNlaW4iCisKKyM6IHBwYy1vcGMuYzo4NjAKK21zZ2lkICJvZmZzZXQgbm90IGEgbXVsdGlwbGUgb2YgMiIKK21zZ3N0ciAiT2Zmc2V0IG11c3MgZWluIFZpZWxmYWNoZXMgdm9uIDIgc2VpbiIKKworIzogcHBjLW9wYy5jOjg2MgorbXNnaWQgIm9mZnNldCBncmVhdGVyIHRoYW4gNjIiCittc2dzdHIgIk9mZnNldCBkYXJmIG5pY2h0IGdyw7bDn2VyIGFscyA2MiBzZWluIgorCisjOiBwcGMtb3BjLmM6ODgxIHBwYy1vcGMuYzo5MjcgcHBjLW9wYy5jOjk3NQogbXNnaWQgIm9mZnNldCBub3QgYSBtdWx0aXBsZSBvZiA0IgotbXNnc3RyICIiCittc2dzdHIgIk9mZnNldCBtdXNzIGVpbiBWaWVsZmFjaGVzIHZvbiA0IHNlaW4iCiAKLSM6IHBwYy1vcGMuYzo4NjkKKyM6IHBwYy1vcGMuYzo4ODMKK21zZ2lkICJvZmZzZXQgZ3JlYXRlciB0aGFuIDEyNCIKK21zZ3N0ciAiT2Zmc2V0IGRhcmYgbmljaHQgZ3LDtsOfZXIgYWxzIDEyNCBzZWluIgorCisjOiBwcGMtb3BjLmM6OTAyCittc2dpZCAib2Zmc2V0IG5vdCBhIG11bHRpcGxlIG9mIDgiCittc2dzdHIgIk9mZnNldCBtdXNzIGVpbiBWaWVsZmFjaGVzIHZvbiA4IHNlaW4iCisKKyM6IHBwYy1vcGMuYzo5MDQKK21zZ2lkICJvZmZzZXQgZ3JlYXRlciB0aGFuIDI0OCIKK21zZ3N0ciAiT2Zmc2V0IGRhcmYgbmljaHQgZ3LDtsOfZXIgYWxzIDI0OCBzZWluIgorCisjOiBwcGMtb3BjLmM6OTUwCiBtc2dpZCAib2Zmc2V0IG5vdCBiZXR3ZWVuIC0yMDQ4IGFuZCAyMDQ3IgotbXNnc3RyICIiCittc2dzdHIgIk9mZnNldCBtdXNzIGltIEJlcmVpY2ggdm9uIC0yMDQ4IGJpcyAyMDQ3IGxpZWdlbiIKIAotIzogcHBjLW9wYy5jOjg5NAorIzogcHBjLW9wYy5jOjk3MwogbXNnaWQgIm9mZnNldCBub3QgYmV0d2VlbiAtODE5MiBhbmQgODE5MSIKLW1zZ3N0ciAiIgorbXNnc3RyICJPZmZzZXQgbXVzcyBpbSBCZXJlaWNoIHZvbiAtODE5MiBiaXMgODE5MSBsaWVnZW4iCiAKLSM6IHBwYy1vcGMuYzo5MjIKKyM6IHBwYy1vcGMuYzoxMDExCittc2dpZCAiaWdub3JpbmcgaW52YWxpZCBtZmNyIG1hc2siCittc2dzdHIgIklnbm9yaWVyZSB1bmfDvGx0aWdlIG1mY3ItTWFza2UuIgorCisjOiBwcGMtb3BjLmM6MTA1OQogbXNnaWQgImlnbm9yaW5nIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgaW4gYnJhbmNoIG9mZnNldCIKLW1zZ3N0ciAiIgorbXNnc3RyICJJZ25vcmllcmUgbmllZHJpZ3N0ZSBCaXRzIGltIFZlcnp3ZWlndW5nc29mZnNldCIKIAotIzogcHBjLW9wYy5jOjk1NiBwcGMtb3BjLmM6OTkzCisjOiBwcGMtb3BjLmM6MTA5MCBwcGMtb3BjLmM6MTEyNQogbXNnaWQgImlsbGVnYWwgYml0bWFzayIKLW1zZ3N0ciAiIgorbXNnc3RyICJVbmfDvGx0aWdlIEJpdG1hc2tlIgogCi0jOiBwcGMtb3BjLmM6MTA2NgorIzogcHBjLW9wYy5jOjExOTIKIG1zZ2lkICJ2YWx1ZSBvdXQgb2YgcmFuZ2UiCi1tc2dzdHIgIiIKK21zZ3N0ciAiV2VydCBhdcOfZXJoYWxiIGRlcyBnw7xsdGlnZW4gQmVyZWljaHMiCiAKLSM6IHBwYy1vcGMuYzoxMTQyCisjOiBwcGMtb3BjLmM6MTI2MgogbXNnaWQgImluZGV4IHJlZ2lzdGVyIGluIGxvYWQgcmFuZ2UiCi1tc2dzdHIgIiIKK21zZ3N0ciAiSW5kZXhyZWdpc3RlciBpbSBMYWRlYmVyZWljaCAobG9hZCByYW5nZSkiCiAKLSM6IHBwYy1vcGMuYzoxMTU4CisjOiBwcGMtb3BjLmM6MTI3OQorbXNnaWQgInNvdXJjZSBhbmQgdGFyZ2V0IHJlZ2lzdGVyIG9wZXJhbmRzIG11c3QgYmUgZGlmZmVyZW50IgorbXNnc3RyICJEaWUgT3BlcmFuZGVuIGbDvHIgZGFzIFF1ZWxsLSB1bmQgWmllbHJlZ2lzdGVyIG3DvHNzZW4gdmVyc2NoaWVkZW4gc2VpbiIKKworIzogcHBjLW9wYy5jOjEyOTQKIG1zZ2lkICJpbnZhbGlkIHJlZ2lzdGVyIG9wZXJhbmQgd2hlbiB1cGRhdGluZyIKLW1zZ3N0ciAiIgorbXNnc3RyICJVbmfDvGx0aWdlciBSZWdpc3Rlcm9wZXJhbmQgYmVpbSBBa3R1YWxpc2llcmVuIgogCi0jLiBNYXJrIGFzIG5vbi12YWxpZCBpbnN0cnVjdGlvbgotIzogc3BhcmMtZGlzLmM6NzUwCisjOiBwcGMtb3BjLmM6MTMzNQorbXNnaWQgInRhcmdldCByZWdpc3RlciBvcGVyYW5kIG11c3QgYmUgZXZlbiIKK21zZ3N0ciAiRGVyIFppZWxyZWdpc3Rlcm9wZXJhbmQgbXVzcyBnZXJhZGUgc2VpbiIKKworIzogcHBjLW9wYy5jOjEzNTAKK21zZ2lkICJzb3VyY2UgcmVnaXN0ZXIgb3BlcmFuZCBtdXN0IGJlIGV2ZW4iCittc2dzdHIgIkRlciBRdWVsbHJlZ2lzdGVyb3BlcmFuZCBtdXNzIGdlcmFkZSBzZWluIgorCisjICBNYXJrIGFzIG5vbi12YWxpZCBpbnN0cnVjdGlvbi4KKyMuIE1hcmsgYXMgbm9uLXZhbGlkIGluc3RydWN0aW9uLgorIzogc3BhcmMtZGlzLmM6NzYwCiBtc2dpZCAidW5rbm93biIKLW1zZ3N0ciAiIgorbXNnc3RyICJ1bmJla2FubnQiCiAKLSM6IHNwYXJjLWRpcy5jOjgyNQorIzogc3BhcmMtZGlzLmM6ODM1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludGVybmFsIGVycm9yOiAgYmFkIHNwYXJjLW9wY29kZS5oOiBcIiVzXCIsICUjLjhseCwgJSMuOGx4XG4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiSW50ZXJuZXIgRmVobGVyOiBVbmfDvGx0aWdlciBTUEFSQy1PcGNvZGU6IFwiJXNcIiwgJSMuOGx4LCAlIy44bHhcbiIKIAotIzogc3BhcmMtZGlzLmM6ODM2CisjOiBzcGFyYy1kaXMuYzo4NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGJhZCBzcGFyYy1vcGNvZGUuaDogXCIlc1wiLCAlIy44bHgsICUjLjhseFxuIgotbXNnc3RyICIiCittc2dzdHIgIkludGVybmVyIEZlaGxlcjogVW5nw7xsdGlnZXIgU1BBUkMtT3Bjb2RlOiBcIiVzXCIsICUjLjhseCwgJSMuOGx4XG4iCiAKLSM6IHNwYXJjLWRpcy5jOjg4NQorIzogc3BhcmMtZGlzLmM6ODk1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludGVybmFsIGVycm9yOiBiYWQgc3BhcmMtb3Bjb2RlLmg6IFwiJXNcIiA9PSBcIiVzXCJcbiIKLW1zZ3N0ciAiIgorbXNnc3RyICJJbnRlcm5lciBGZWhsZXI6IFVuZ8O8bHRpZ2VyIFNQQVJDLU9wY29kZTogXCIlc1wiID09IFwiJXNcIlxuIgogCi0jOiB2ODUwLWRpcy5jOjIyNAorIzogdjg1MC1kaXMuYzoyMjEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBvcGVyYW5kIHNoaWZ0OiAleFxuIgotbXNnc3RyICIiCittc2dzdHIgIlVuYmVrYW5udGUgT3BlcmFuZGVudmVyc2NoaWVidW5nOiAleFxuIgogCi0jOiB2ODUwLWRpcy5jOjIzNgorIzogdjg1MC1kaXMuYzoyMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBwb3AgcmVnOiAlZFxuIgotbXNnc3RyICIiCittc2dzdHIgIlVuYmVrYW5udGVzIHBvcC1SZWdpc3RlcjogJWRcbiIKIAorIyAgVGhlIGZ1bmN0aW9ucyB1c2VkIHRvIGluc2VydCBhbmQgZXh0cmFjdCBjb21wbGljYXRlZCBvcGVyYW5kcy4KKyMgIE5vdGU6IFRoZXJlIGlzIGEgY29uc3BpcmFjeSBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBhbmQKKyMgIHY4NTBfaW5zZXJ0X29wZXJhbmQoKSBpbiBnYXMvY29uZmlnL3RjLXY4NTAuYy4gIEVycm9yIG1lc3NhZ2VzCisjICBjb250YWluaW5nIHRoZSBzdHJpbmcgJ291dCBvZiByYW5nZScgd2lsbCBiZSBpZ25vcmVkIHVubGVzcyBhCisjICBzcGVjaWZpYyBjb21tYW5kIGxpbmUgb3B0aW9uIGlzIGdpdmVuIHRvIEdBUy4KICMuIFRoZSBmdW5jdGlvbnMgdXNlZCB0byBpbnNlcnQgYW5kIGV4dHJhY3QgY29tcGxpY2F0ZWQgb3BlcmFuZHMuCiAjLiBOb3RlOiBUaGVyZSBpcyBhIGNvbnNwaXJhY3kgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMgYW5kCiAjLiB2ODUwX2luc2VydF9vcGVyYW5kKCkgaW4gZ2FzL2NvbmZpZy90Yy12ODUwLmMuICBFcnJvciBtZXNzYWdlcwpAQCAtMzcxLDcyICs3MzAsODQgQEAKICMuIHNwZWNpZmljIGNvbW1hbmQgbGluZSBvcHRpb24gaXMgZ2l2ZW4gdG8gR0FTLgogIzogdjg1MC1vcGMuYzo2OAogbXNnaWQgImRpc3BsYWNlbWVudCB2YWx1ZSBpcyBub3QgaW4gcmFuZ2UgYW5kIGlzIG5vdCBhbGlnbmVkIgotbXNnc3RyICIiCittc2dzdHIgIkRlciBBYnN0YW5kc3dlcnQgaXN0IGF1w59lcmhhbGIgZGVzIGfDvGx0aWdlbiBCZXJlaWNocyB1bmQgbmljaHQgYXVzZ2VyaWNodGV0IgogCiAjOiB2ODUwLW9wYy5jOjY5CiBtc2dpZCAiZGlzcGxhY2VtZW50IHZhbHVlIGlzIG91dCBvZiByYW5nZSIKLW1zZ3N0ciAiIgorbXNnc3RyICJEZXIgQWJzdGFuZHN3ZXJ0IGlzdCBhdcOfZXJoYWxiIGRlcyBmw7xsdGlnZW4gQmVyZWljaHMuIgogCiAjOiB2ODUwLW9wYy5jOjcwCiBtc2dpZCAiZGlzcGxhY2VtZW50IHZhbHVlIGlzIG5vdCBhbGlnbmVkIgotbXNnc3RyICIiCittc2dzdHIgIkRlciBBYnN0YW5kc3dlcnQgaXN0IG5pY2h0IGF1c2dlcmljaHRldC4iCiAKICM6IHY4NTAtb3BjLmM6NzIKIG1zZ2lkICJpbW1lZGlhdGUgdmFsdWUgaXMgb3V0IG9mIHJhbmdlIgotbXNnc3RyICIiCittc2dzdHIgIkRpcmVrdHdlcnQgYXXDn2VyaGFsYiBkZXMgZ8O8bHRpZ2VuIEJlcmVpY2hzIgogCiAjOiB2ODUwLW9wYy5jOjgzCiBtc2dpZCAiYnJhbmNoIHZhbHVlIG5vdCBpbiByYW5nZSBhbmQgdG8gb2RkIG9mZnNldCIKLW1zZ3N0ciAiIgorbXNnc3RyICJWZXJ6d2VpZ3VuZ3N3ZXJ0IGF1w59lcmhhbGIgZGVzIGfDvGx0aWdlbiBCZXJlaWNocyB1bmQgenUgZWluZW0gdW5nZXJhZGVuIE9mZnNldC4iCiAKICM6IHY4NTAtb3BjLmM6ODUgdjg1MC1vcGMuYzoxMTcKIG1zZ2lkICJicmFuY2ggdmFsdWUgb3V0IG9mIHJhbmdlIgotbXNnc3RyICIiCittc2dzdHIgIlZlcnp3ZWlndW5nc3dlcnQgYXXDn2VyaGFsYiBkZXMgZ8O8bHRpZ2VuIEJlcmVpY2hzLiIKIAogIzogdjg1MC1vcGMuYzo4OCB2ODUwLW9wYy5jOjEyMAogbXNnaWQgImJyYW5jaCB0byBvZGQgb2Zmc2V0IgotbXNnc3RyICIiCittc2dzdHIgIlZlcnp3ZWlndW5nIGF1ZiB1bmdlcmFkZW4gT2Zmc2V0IgogCiAjOiB2ODUwLW9wYy5jOjExNQogbXNnaWQgImJyYW5jaCB2YWx1ZSBub3QgaW4gcmFuZ2UgYW5kIHRvIGFuIG9kZCBvZmZzZXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAiVmVyendlaWd1bmdzd2VydCBhdcOfZXJoYWxiIGRlcyBnw7xsdGlnZW4gQmVyZWljaHMgdW5kIHp1IGVpbmVtIHVuZ2VyYWRlbiBPZmZzZXQuIgogCiAjOiB2ODUwLW9wYy5jOjM0NgogbXNnaWQgImludmFsaWQgcmVnaXN0ZXIgZm9yIHN0YWNrIGFkanVzdG1lbnQiCi1tc2dzdHIgIiIKK21zZ3N0ciAiVW5nw7xsdGlnZXMgUmVnaXN0ZXIgZsO8ciBTdGFja2FucGFzc3VuZy4iCiAKICM6IHY4NTAtb3BjLmM6MzcwCiBtc2dpZCAiaW1tZWRpYXRlIHZhbHVlIG5vdCBpbiByYW5nZSBhbmQgbm90IGV2ZW4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiRGlyZWt0d2VydCBhdcOfZXJoYWxiIGRlcyBnw7xsdGlnZW4gQmVyZWljaHMgdW5kIG5pY2h0IGdlcmFkZSIKIAogIzogdjg1MC1vcGMuYzozNzUKIG1zZ2lkICJpbW1lZGlhdGUgdmFsdWUgbXVzdCBiZSBldmVuIgogbXNnc3RyICJEZXIgRGlyZWt0b3BlcmFuZCBtdXNzIGdlcmFkZSBzZWluLiIKIAotIzogeHN0b3JteTE2LWFzbS5jOjc0CisjOiB4c3Rvcm15MTYtYXNtLmM6NzYKIG1zZ2lkICJCYWQgcmVnaXN0ZXIgaW4gcHJlaW5jcmVtZW50IgotbXNnc3RyICIiCi0KLSM6IHhzdG9ybXkxNi1hc20uYzo3OQotbXNnaWQgIkJhZCByZWdpc3RlciBpbiBwb3N0aW5jcmVtZW50IgotbXNnc3RyICIiCittc2dzdHIgIlVuZ8O8bHRpZ2VzIFJlZ2lzdGVyIGJlaW0gUHJlLUluY3JlbWVudCIKIAogIzogeHN0b3JteTE2LWFzbS5jOjgxCittc2dpZCAiQmFkIHJlZ2lzdGVyIGluIHBvc3RpbmNyZW1lbnQiCittc2dzdHIgIlVuZ8O8bHRpZ2VzIFJlZ2lzdGVyIGJlaW0gUG9zdC1JbmNyZW1lbnQiCisKKyM6IHhzdG9ybXkxNi1hc20uYzo4MwogbXNnaWQgIkJhZCByZWdpc3RlciBuYW1lIgogbXNnc3RyICJGYWxzY2hlciBSZWdpc3Rlcm5hbWUuIgogCi0jOiB4c3Rvcm15MTYtYXNtLmM6ODUKKyM6IHhzdG9ybXkxNi1hc20uYzo4NwogbXNnaWQgIkxhYmVsIGNvbmZsaWN0cyB3aXRoIHJlZ2lzdGVyIG5hbWUiCi1tc2dzdHIgIiIKLQotIzogeHN0b3JteTE2LWFzbS5jOjg5Ci1tc2dpZCAiTGFiZWwgY29uZmxpY3RzIHdpdGggYFJ4JyIKLW1zZ3N0ciAiIgorbXNnc3RyICJTcHJ1bmdtYXJrZSB2ZXJ0csOkZ3Qgc2ljaCBuaWNodCBtaXQgZGVtIFJlZ2lzdGVybmFtZSIKIAogIzogeHN0b3JteTE2LWFzbS5jOjkxCi1tc2dpZCAiQmFkIGltbWVkaWF0ZSBleHByZXNzaW9uIgotbXNnc3RyICIiCittc2dpZCAiTGFiZWwgY29uZmxpY3RzIHdpdGggYFJ4JyIKK21zZ3N0ciAiU3BydW5nbWFya2UgdmVydHLDpGd0IHNpY2ggbmljaHQgbWl0IMK7UnjCqyIKIAotIzogeHN0b3JteTE2LWFzbS5jOjEyMAorIzogeHN0b3JteTE2LWFzbS5jOjkzCittc2dpZCAiQmFkIGltbWVkaWF0ZSBleHByZXNzaW9uIgorbXNnc3RyICJVbmfDvGx0aWdlciBEaXJla3RhdXNkcnVjayIKKworIzogeHN0b3JteTE2LWFzbS5jOjExNQorbXNnaWQgIk5vIHJlbG9jYXRpb24gZm9yIHNtYWxsIGltbWVkaWF0ZSIKK21zZ3N0ciAiS2VpbmUgVmVybGFnZXJ1bmcgZsO8ciBrbGVpbmUgRGlyZWt0d2VydGUiCisKKyM6IHhzdG9ybXkxNi1hc20uYzoxMjUKIG1zZ2lkICJTbWFsbCBvcGVyYW5kIHdhcyBub3QgYW4gaW1tZWRpYXRlIG51bWJlciIKLW1zZ3N0ciAiIgorbXNnc3RyICJLbGVpbmVyIE9wZXJhbmQgd2FyIGtlaW5lIERpcmVrdHphaGwuIgorCisjOiB4c3Rvcm15MTYtYXNtLmM6MTY0Cittc2dpZCAiT3BlcmFuZCBpcyBub3QgYSBzeW1ib2wiCittc2dzdHIgIk9wZXJhbmQgbXVzcyBlaW4gU3ltYm9sIHNlaW4iCisKKyM6IHhzdG9ybXkxNi1hc20uYzoxNzIKK21zZ2lkICJTeW50YXggZXJyb3I6IE5vIHRyYWlsaW5nICcpJyIKK21zZ3N0ciAiU3ludGF4ZmVobGVyOiBLZWluIGFic2NobGllw59lbmRlcyDCuynCqyIKZGlmZiAtLWdpdCBhL29wY29kZXMvcG8vb3Bjb2Rlcy5wb3QgYi9vcGNvZGVzL3BvL29wY29kZXMucG90CmluZGV4IDE1ZmRmZjAuLjlhYjg3OTAgMTAwNjQ0Ci0tLSBhL29wY29kZXMvcG8vb3Bjb2Rlcy5wb3QKKysrIGIvb3Bjb2Rlcy9wby9vcGNvZGVzLnBvdApAQCAtMSwxMiArMSwxNCBAQAogIyBTT01FIERFU0NSSVBUSVZFIFRJVExFLgotIyBDb3B5cmlnaHQgKEMpIFlFQVIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgWUVBUiBUSEUgUEFDS0FHRSdTIENPUFlSSUdIVCBIT0xERVIKKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIFBBQ0tBR0UgcGFja2FnZS4KICMgRklSU1QgQVVUSE9SIDxFTUFJTEBBRERSRVNTPiwgWUVBUi4KICMKICMsIGZ1enp5CiBtc2dpZCAiIgogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBQQUNLQUdFIFZFUlNJT05cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwMy0wNy0xNyAxNDo1NCswMTAwXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA0LTAzLTE5IDE0OjU5KzEwMzBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiBZRUFSLU1PLURBIEhPOk1JK1pPTkVcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEZVTEwgTkFNRSA8RU1BSUxAQUREUkVTUz5cbiIKICJMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPlxuIgpAQCAtMTQsMTEgKzE2LDExIEBACiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUNIQVJTRVRcbiIKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAKLSM6IGFscGhhLW9wYy5jOjMzNQorIzogYWxwaGEtb3BjLmM6MzMwCiBtc2dpZCAiYnJhbmNoIG9wZXJhbmQgdW5hbGlnbmVkIgogbXNnc3RyICIiCiAKLSM6IGFscGhhLW9wYy5jOjM1OCBhbHBoYS1vcGMuYzozODAKKyM6IGFscGhhLW9wYy5jOjM1MiBhbHBoYS1vcGMuYzozNzMKIG1zZ2lkICJqdW1wIGhpbnQgdW5hbGlnbmVkIgogbXNnc3RyICIiCiAKQEAgLTI2LDIxICsyOCwyNCBAQAogbXNnaWQgIklsbGVnYWwgbGltbSByZWZlcmVuY2UgaW4gbGFzdCBpbnN0cnVjdGlvbiFcbiIKIG1zZ3N0ciAiIgogCi0jOiBhcm0tZGlzLmM6NTU0CisjOiBhcm0tZGlzLmM6NTYzCiBtc2dpZCAiPGlsbGVnYWwgcHJlY2lzaW9uPiIKIG1zZ3N0ciAiIgogCi0jOiBhcm0tZGlzLmM6MTE2MgorIy4gWFhYIC0gc2hvdWxkIGJyZWFrICdvcHRpb24nIGF0IGZvbGxvd2luZyBkZWxpbWl0ZXIuCisjOiBhcm0tZGlzLmM6MTE5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbmlzZWQgcmVnaXN0ZXIgbmFtZSBzZXQ6ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYXJtLWRpcy5jOjExNjkKKyMuIFhYWCAtIHNob3VsZCBicmVhayAnb3B0aW9uJyBhdCBmb2xsb3dpbmcgZGVsaW1pdGVyLgorIzogYXJtLWRpcy5jOjEyMDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5yZWNvZ25pc2VkIGRpc2Fzc2VtYmxlciBvcHRpb246ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYXJtLWRpcy5jOjEzNDMKKyM6IGFybS1kaXMuYzoxMzc2CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICJUaGUgZm9sbG93aW5nIEFSTSBzcGVjaWZpYyBkaXNhc3NlbWJsZXIgb3B0aW9ucyBhcmUgc3VwcG9ydGVkIGZvciB1c2Ugd2l0aFxuIgpAQCAtNDgsMTAgKzUzLDEyIEBACiBtc2dzdHIgIiIKIAogIzogYXZyLWRpcy5jOjExNyBhdnItZGlzLmM6MTI3CisjLCBjLWZvcm1hdAogbXNnaWQgInVuZGVmaW5lZCIKIG1zZ3N0ciAiIgogCiAjOiBhdnItZGlzLmM6MTc5CisjLCBjLWZvcm1hdAogbXNnaWQgIkludGVybmFsIGRpc2Fzc2VtYmxlciBlcnJvciIKIG1zZ3N0ciAiIgogCkBAIC02MCwxMyArNjcsMTMgQEAKIG1zZ2lkICJ1bmtub3duIGNvbnN0cmFpbnQgYCVjJyIKIG1zZ3N0ciAiIgogCi0jOiBjZ2VuLWFzbS5jOjM0OCBmcjMwLWlibGQuYzoxOTUgZnJ2LWlibGQuYzoxOTUgaXAyay1pYmxkLmM6MTk1Ci0jOiBpcTIwMDAtaWJsZC5jOjE5NSBtMzJyLWlibGQuYzoxOTUgb3BlbnJpc2MtaWJsZC5jOjE5NSB4c3Rvcm15MTYtaWJsZC5jOjE5NQorIzogY2dlbi1hc20uYzozMzUgZnIzMC1pYmxkLmM6MTk3IGZydi1pYmxkLmM6MTk3IGlwMmstaWJsZC5jOjE5NworIzogaXEyMDAwLWlibGQuYzoxOTcgbTMyci1pYmxkLmM6MTk3IG9wZW5yaXNjLWlibGQuYzoxOTcgeHN0b3JteTE2LWlibGQuYzoxOTcKICMsIGMtZm9ybWF0CiBtc2dpZCAib3BlcmFuZCBvdXQgb2YgcmFuZ2UgKCVsZCBub3QgYmV0d2VlbiAlbGQgYW5kICVsZCkiCiBtc2dzdHIgIiIKIAotIzogY2dlbi1hc20uYzozNjkKKyM6IGNnZW4tYXNtLmM6MzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9wZXJhbmQgb3V0IG9mIHJhbmdlICglbHUgbm90IGJldHdlZW4gJWx1IGFuZCAlbHUpIgogbXNnc3RyICIiCkBAIC04Nyw1OCArOTQsNTggQEAKIG1zZ2lkICJBZGRyZXNzIDB4JXggaXMgb3V0IG9mIGJvdW5kcy5cbiIKIG1zZ3N0ciAiIgogCi0jOiBmcjMwLWFzbS5jOjMyMyBmcnYtYXNtLmM6NjI2IGlwMmstYXNtLmM6NTc0IGlxMjAwMC1hc20uYzo0NjAgbTMyci1hc20uYzozMjUKLSM6IG9wZW5yaXNjLWFzbS5jOjI0NCB4c3Rvcm15MTYtYXNtLmM6Mjg0CisjOiBmcjMwLWFzbS5jOjMyMyBmcnYtYXNtLmM6OTY3IGlwMmstYXNtLmM6NTc0IGlxMjAwMC1hc20uYzo0NjAgbTMyci1hc20uYzozMzUKKyM6IG9wZW5yaXNjLWFzbS5jOjI2MSB4c3Rvcm15MTYtYXNtLmM6Mjg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucmVjb2duaXplZCBmaWVsZCAlZCB3aGlsZSBwYXJzaW5nLlxuIgogbXNnc3RyICIiCiAKLSM6IGZyMzAtYXNtLmM6MzczIGZydi1hc20uYzo2NzYgaXAyay1hc20uYzo2MjQgaXEyMDAwLWFzbS5jOjUxMCBtMzJyLWFzbS5jOjM3NQotIzogb3BlbnJpc2MtYXNtLmM6Mjk0IHhzdG9ybXkxNi1hc20uYzozMzQKKyM6IGZyMzAtYXNtLmM6MzcyIGZydi1hc20uYzoxMDE2IGlwMmstYXNtLmM6NjIzIGlxMjAwMC1hc20uYzo1MDkKKyM6IG0zMnItYXNtLmM6Mzg0IG9wZW5yaXNjLWFzbS5jOjMxMCB4c3Rvcm15MTYtYXNtLmM6MzMzCiBtc2dpZCAibWlzc2luZyBtbmVtb25pYyBpbiBzeW50YXggc3RyaW5nIgogbXNnc3RyICIiCiAKICMuIFdlIGNvdWxkbid0IHBhcnNlIGl0LgotIzogZnIzMC1hc20uYzo1MDkgZnIzMC1hc20uYzo1MTMgZnIzMC1hc20uYzo2MDAgZnIzMC1hc20uYzo3MDIgZnJ2LWFzbS5jOjgxMgotIzogZnJ2LWFzbS5jOjgxNiBmcnYtYXNtLmM6OTAzIGZydi1hc20uYzoxMDA1IGlwMmstYXNtLmM6NzYwIGlwMmstYXNtLmM6NzY0Ci0jOiBpcDJrLWFzbS5jOjg1MSBpcDJrLWFzbS5jOjk1MyBpcTIwMDAtYXNtLmM6NjQ2IGlxMjAwMC1hc20uYzo2NTAKLSM6IGlxMjAwMC1hc20uYzo3MzcgaXEyMDAwLWFzbS5jOjgzOSBtMzJyLWFzbS5jOjUxMSBtMzJyLWFzbS5jOjUxNQotIzogbTMyci1hc20uYzo2MDIgbTMyci1hc20uYzo3MDQgb3BlbnJpc2MtYXNtLmM6NDMwIG9wZW5yaXNjLWFzbS5jOjQzNAotIzogb3BlbnJpc2MtYXNtLmM6NTIxIG9wZW5yaXNjLWFzbS5jOjYyMyB4c3Rvcm15MTYtYXNtLmM6NDcwCi0jOiB4c3Rvcm15MTYtYXNtLmM6NDc0IHhzdG9ybXkxNi1hc20uYzo1NjEgeHN0b3JteTE2LWFzbS5jOjY2MworIzogZnIzMC1hc20uYzo1MDcgZnIzMC1hc20uYzo1MTEgZnIzMC1hc20uYzo1OTggZnIzMC1hc20uYzo2OTkgZnJ2LWFzbS5jOjExNTEKKyM6IGZydi1hc20uYzoxMTU1IGZydi1hc20uYzoxMjQyIGZydi1hc20uYzoxMzQzIGlwMmstYXNtLmM6NzU4IGlwMmstYXNtLmM6NzYyCisjOiBpcDJrLWFzbS5jOjg0OSBpcDJrLWFzbS5jOjk1MCBpcTIwMDAtYXNtLmM6NjQ0IGlxMjAwMC1hc20uYzo2NDgKKyM6IGlxMjAwMC1hc20uYzo3MzUgaXEyMDAwLWFzbS5jOjgzNiBtMzJyLWFzbS5jOjUxOSBtMzJyLWFzbS5jOjUyMworIzogbTMyci1hc20uYzo2MTAgbTMyci1hc20uYzo3MTEgb3BlbnJpc2MtYXNtLmM6NDQ1IG9wZW5yaXNjLWFzbS5jOjQ0OQorIzogb3BlbnJpc2MtYXNtLmM6NTM2IG9wZW5yaXNjLWFzbS5jOjYzNyB4c3Rvcm15MTYtYXNtLmM6NDY4CisjOiB4c3Rvcm15MTYtYXNtLmM6NDcyIHhzdG9ybXkxNi1hc20uYzo1NTkgeHN0b3JteTE2LWFzbS5jOjY2MAogbXNnaWQgInVucmVjb2duaXplZCBpbnN0cnVjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBmcjMwLWFzbS5jOjU1NiBmcnYtYXNtLmM6ODU5IGlwMmstYXNtLmM6ODA3IGlxMjAwMC1hc20uYzo2OTMgbTMyci1hc20uYzo1NTgKLSM6IG9wZW5yaXNjLWFzbS5jOjQ3NyB4c3Rvcm15MTYtYXNtLmM6NTE3CisjOiBmcjMwLWFzbS5jOjU1NCBmcnYtYXNtLmM6MTE5OCBpcDJrLWFzbS5jOjgwNSBpcTIwMDAtYXNtLmM6NjkxCisjOiBtMzJyLWFzbS5jOjU2NiBvcGVucmlzYy1hc20uYzo0OTIgeHN0b3JteTE2LWFzbS5jOjUxNQogIywgYy1mb3JtYXQKIG1zZ2lkICJzeW50YXggZXJyb3IgKGV4cGVjdGVkIGNoYXIgYCVjJywgZm91bmQgYCVjJykiCiBtc2dzdHIgIiIKIAotIzogZnIzMC1hc20uYzo1NjYgZnJ2LWFzbS5jOjg2OSBpcDJrLWFzbS5jOjgxNyBpcTIwMDAtYXNtLmM6NzAzIG0zMnItYXNtLmM6NTY4Ci0jOiBvcGVucmlzYy1hc20uYzo0ODcgeHN0b3JteTE2LWFzbS5jOjUyNworIzogZnIzMC1hc20uYzo1NjQgZnJ2LWFzbS5jOjEyMDggaXAyay1hc20uYzo4MTUgaXEyMDAwLWFzbS5jOjcwMQorIzogbTMyci1hc20uYzo1NzYgb3BlbnJpc2MtYXNtLmM6NTAyIHhzdG9ybXkxNi1hc20uYzo1MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAic3ludGF4IGVycm9yIChleHBlY3RlZCBjaGFyIGAlYycsIGZvdW5kIGVuZCBvZiBpbnN0cnVjdGlvbikiCiBtc2dzdHIgIiIKIAotIzogZnIzMC1hc20uYzo1OTQgZnJ2LWFzbS5jOjg5NyBpcDJrLWFzbS5jOjg0NSBpcTIwMDAtYXNtLmM6NzMxIG0zMnItYXNtLmM6NTk2Ci0jOiBvcGVucmlzYy1hc20uYzo1MTUgeHN0b3JteTE2LWFzbS5jOjU1NQorIzogZnIzMC1hc20uYzo1OTIgZnJ2LWFzbS5jOjEyMzYgaXAyay1hc20uYzo4NDMgaXEyMDAwLWFzbS5jOjcyOQorIzogbTMyci1hc20uYzo2MDQgb3BlbnJpc2MtYXNtLmM6NTMwIHhzdG9ybXkxNi1hc20uYzo1NTMKIG1zZ2lkICJqdW5rIGF0IGVuZCBvZiBsaW5lIgogbXNnc3RyICIiCiAKLSM6IGZyMzAtYXNtLmM6NzAxIGZydi1hc20uYzoxMDA0IGlwMmstYXNtLmM6OTUyIGlxMjAwMC1hc20uYzo4MzgKLSM6IG0zMnItYXNtLmM6NzAzIG9wZW5yaXNjLWFzbS5jOjYyMiB4c3Rvcm15MTYtYXNtLmM6NjYyCisjOiBmcjMwLWFzbS5jOjY5OCBmcnYtYXNtLmM6MTM0MiBpcDJrLWFzbS5jOjk0OSBpcTIwMDAtYXNtLmM6ODM1CisjOiBtMzJyLWFzbS5jOjcxMCBvcGVucmlzYy1hc20uYzo2MzYgeHN0b3JteTE2LWFzbS5jOjY1OQogbXNnaWQgInVucmVjb2duaXplZCBmb3JtIG9mIGluc3RydWN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGZyMzAtYXNtLmM6NzEzIGZydi1hc20uYzoxMDE2IGlwMmstYXNtLmM6OTY0IGlxMjAwMC1hc20uYzo4NTAKLSM6IG0zMnItYXNtLmM6NzE1IG9wZW5yaXNjLWFzbS5jOjYzNCB4c3Rvcm15MTYtYXNtLmM6Njc0CisjOiBmcjMwLWFzbS5jOjcxMCBmcnYtYXNtLmM6MTM1NCBpcDJrLWFzbS5jOjk2MSBpcTIwMDAtYXNtLmM6ODQ3CisjOiBtMzJyLWFzbS5jOjcyMiBvcGVucmlzYy1hc20uYzo2NDggeHN0b3JteTE2LWFzbS5jOjY3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgaW5zdHJ1Y3Rpb24gYCUuNTBzLi4uJyIKIG1zZ3N0ciAiIgogCi0jOiBmcjMwLWFzbS5jOjcxNiBmcnYtYXNtLmM6MTAxOSBpcDJrLWFzbS5jOjk2NyBpcTIwMDAtYXNtLmM6ODUzCi0jOiBtMzJyLWFzbS5jOjcxOCBvcGVucmlzYy1hc20uYzo2MzcgeHN0b3JteTE2LWFzbS5jOjY3NworIzogZnIzMC1hc20uYzo3MTMgZnJ2LWFzbS5jOjEzNTcgaXAyay1hc20uYzo5NjQgaXEyMDAwLWFzbS5jOjg1MAorIzogbTMyci1hc20uYzo3MjUgb3BlbnJpc2MtYXNtLmM6NjUxIHhzdG9ybXkxNi1hc20uYzo2NzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIGluc3RydWN0aW9uIGAlLjUwcyciCiBtc2dzdHIgIiIKQEAgLTE0OSw3MCArMTU2LDcwIEBACiBtc2dpZCAiKnVua25vd24qIgogbXNnc3RyICIiCiAKLSM6IGZyMzAtZGlzLmM6MzIwIGZydi1kaXMuYzozNzEgaXAyay1kaXMuYzozMjkgaXEyMDAwLWRpcy5jOjE5MiBtMzJyLWRpcy5jOjI1MQotIzogb3BlbnJpc2MtZGlzLmM6MTM4IHhzdG9ybXkxNi1kaXMuYzoxNzEKKyM6IGZyMzAtZGlzLmM6MzE5IGZydi1kaXMuYzozODggaXAyay1kaXMuYzozMjggaXEyMDAwLWRpcy5jOjE5MSBtMzJyLWRpcy5jOjI2MgorIzogb3BlbnJpc2MtZGlzLmM6MTM3IHhzdG9ybXkxNi1kaXMuYzoxNzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5yZWNvZ25pemVkIGZpZWxkICVkIHdoaWxlIHByaW50aW5nIGluc24uXG4iCiBtc2dzdHIgIiIKIAotIzogZnIzMC1pYmxkLmM6MTY2IGZydi1pYmxkLmM6MTY2IGlwMmstaWJsZC5jOjE2NiBpcTIwMDAtaWJsZC5jOjE2NgotIzogbTMyci1pYmxkLmM6MTY2IG9wZW5yaXNjLWlibGQuYzoxNjYgeHN0b3JteTE2LWlibGQuYzoxNjYKKyM6IGZyMzAtaWJsZC5jOjE2OCBmcnYtaWJsZC5jOjE2OCBpcDJrLWlibGQuYzoxNjggaXEyMDAwLWlibGQuYzoxNjgKKyM6IG0zMnItaWJsZC5jOjE2OCBvcGVucmlzYy1pYmxkLmM6MTY4IHhzdG9ybXkxNi1pYmxkLmM6MTY4CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9wZXJhbmQgb3V0IG9mIHJhbmdlICglbGQgbm90IGJldHdlZW4gJWxkIGFuZCAlbHUpIgogbXNnc3RyICIiCiAKLSM6IGZyMzAtaWJsZC5jOjE3OSBmcnYtaWJsZC5jOjE3OSBpcDJrLWlibGQuYzoxNzkgaXEyMDAwLWlibGQuYzoxNzkKLSM6IG0zMnItaWJsZC5jOjE3OSBvcGVucmlzYy1pYmxkLmM6MTc5IHhzdG9ybXkxNi1pYmxkLmM6MTc5CisjOiBmcjMwLWlibGQuYzoxODEgZnJ2LWlibGQuYzoxODEgaXAyay1pYmxkLmM6MTgxIGlxMjAwMC1pYmxkLmM6MTgxCisjOiBtMzJyLWlibGQuYzoxODEgb3BlbnJpc2MtaWJsZC5jOjE4MSB4c3Rvcm15MTYtaWJsZC5jOjE4MQogIywgYy1mb3JtYXQKIG1zZ2lkICJvcGVyYW5kIG91dCBvZiByYW5nZSAoJWx1IG5vdCBiZXR3ZWVuIDAgYW5kICVsdSkiCiBtc2dzdHIgIiIKIAotIzogZnIzMC1pYmxkLmM6NzMwIGZydi1pYmxkLmM6ODI5IGlwMmstaWJsZC5jOjYwNyBpcTIwMDAtaWJsZC5jOjcxMwotIzogbTMyci1pYmxkLmM6NjU5IG9wZW5yaXNjLWlibGQuYzo2MzMgeHN0b3JteTE2LWlibGQuYzo2NzgKKyM6IGZyMzAtaWJsZC5jOjczMiBmcnYtaWJsZC5jOjg0OSBpcDJrLWlibGQuYzo2MDkgaXEyMDAwLWlibGQuYzo3MTUKKyM6IG0zMnItaWJsZC5jOjY2NyBvcGVucmlzYy1pYmxkLmM6NjM1IHhzdG9ybXkxNi1pYmxkLmM6NjgwCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucmVjb2duaXplZCBmaWVsZCAlZCB3aGlsZSBidWlsZGluZyBpbnNuLlxuIgogbXNnc3RyICIiCiAKLSM6IGZyMzAtaWJsZC5jOjkzNyBmcnYtaWJsZC5jOjExMjEgaXAyay1pYmxkLmM6Njg0IGlxMjAwMC1pYmxkLmM6ODkwCi0jOiBtMzJyLWlibGQuYzo3OTIgb3BlbnJpc2MtaWJsZC5jOjczNSB4c3Rvcm15MTYtaWJsZC5jOjgyNgorIzogZnIzMC1pYmxkLmM6OTM5IGZydi1pYmxkLmM6MTE1OSBpcDJrLWlibGQuYzo2ODYgaXEyMDAwLWlibGQuYzo4OTIKKyM6IG0zMnItaWJsZC5jOjgwNiBvcGVucmlzYy1pYmxkLmM6NzM3IHhzdG9ybXkxNi1pYmxkLmM6ODI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucmVjb2duaXplZCBmaWVsZCAlZCB3aGlsZSBkZWNvZGluZyBpbnNuLlxuIgogbXNnc3RyICIiCiAKLSM6IGZyMzAtaWJsZC5jOjEwODYgZnJ2LWlibGQuYzoxMzc1IGlwMmstaWJsZC5jOjc2MSBpcTIwMDAtaWJsZC5jOjEwMjQKLSM6IG0zMnItaWJsZC5jOjkwMiBvcGVucmlzYy1pYmxkLmM6ODE1IHhzdG9ybXkxNi1pYmxkLmM6OTM5CisjOiBmcjMwLWlibGQuYzoxMDg4IGZydi1pYmxkLmM6MTQzMSBpcDJrLWlibGQuYzo3NjMgaXEyMDAwLWlibGQuYzoxMDI2CisjOiBtMzJyLWlibGQuYzo5MjIgb3BlbnJpc2MtaWJsZC5jOjgxNyB4c3Rvcm15MTYtaWJsZC5jOjk0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbml6ZWQgZmllbGQgJWQgd2hpbGUgZ2V0dGluZyBpbnQgb3BlcmFuZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBmcjMwLWlibGQuYzoxMjE1IGZydi1pYmxkLmM6MTYwOSBpcDJrLWlibGQuYzo4MTggaXEyMDAwLWlibGQuYzoxMTM4Ci0jOiBtMzJyLWlibGQuYzo5OTIgb3BlbnJpc2MtaWJsZC5jOjg3NSB4c3Rvcm15MTYtaWJsZC5jOjEwMzIKKyM6IGZyMzAtaWJsZC5jOjEyMTcgZnJ2LWlibGQuYzoxNjgzIGlwMmstaWJsZC5jOjgyMCBpcTIwMDAtaWJsZC5jOjExNDAKKyM6IG0zMnItaWJsZC5jOjEwMTggb3BlbnJpc2MtaWJsZC5jOjg3NyB4c3Rvcm15MTYtaWJsZC5jOjEwMzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5yZWNvZ25pemVkIGZpZWxkICVkIHdoaWxlIGdldHRpbmcgdm1hIG9wZXJhbmQuXG4iCiBtc2dzdHIgIiIKIAotIzogZnIzMC1pYmxkLmM6MTM0OSBmcnYtaWJsZC5jOjE4NTIgaXAyay1pYmxkLmM6ODgwIGlxMjAwMC1pYmxkLmM6MTI2MQotIzogbTMyci1pYmxkLmM6MTA5MCBvcGVucmlzYy1pYmxkLmM6OTQ0IHhzdG9ybXkxNi1pYmxkLmM6MTEzNAorIzogZnIzMC1pYmxkLmM6MTM1MSBmcnYtaWJsZC5jOjE5NDQgaXAyay1pYmxkLmM6ODgyIGlxMjAwMC1pYmxkLmM6MTI2MworIzogbTMyci1pYmxkLmM6MTEyMiBvcGVucmlzYy1pYmxkLmM6OTQ2IHhzdG9ybXkxNi1pYmxkLmM6MTEzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnJlY29nbml6ZWQgZmllbGQgJWQgd2hpbGUgc2V0dGluZyBpbnQgb3BlcmFuZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBmcjMwLWlibGQuYzoxNDcxIGZydi1pYmxkLmM6MjA4MyBpcDJrLWlibGQuYzo5MzAgaXEyMDAwLWlibGQuYzoxMzcyCi0jOiBtMzJyLWlibGQuYzoxMTc2IG9wZW5yaXNjLWlibGQuYzoxMDAxIHhzdG9ybXkxNi1pYmxkLmM6MTIyNAorIzogZnIzMC1pYmxkLmM6MTQ3MyBmcnYtaWJsZC5jOjIxOTMgaXAyay1pYmxkLmM6OTMyIGlxMjAwMC1pYmxkLmM6MTM3NAorIzogbTMyci1pYmxkLmM6MTIxNCBvcGVucmlzYy1pYmxkLmM6MTAwMyB4c3Rvcm15MTYtaWJsZC5jOjEyMjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5yZWNvZ25pemVkIGZpZWxkICVkIHdoaWxlIHNldHRpbmcgdm1hIG9wZXJhbmQuXG4iCiBtc2dzdHIgIiIKIAotIzogZnJ2LWFzbS5jOjM2NQorIzogZnJ2LWFzbS5jOjY4OAogbXNnaWQgInJlZ2lzdGVyIG51bWJlciBtdXN0IGJlIGV2ZW4iCiBtc2dzdHIgIiIKIAotIzogaDgzMDAtZGlzLmM6Mzc3CisjOiBoODMwMC1kaXMuYzozNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiSG1tbW0gMHgleCIKIG1zZ3N0ciAiIgogCi0jOiBoODMwMC1kaXMuYzo3NjAKKyM6IGg4MzAwLWRpcy5jOjc0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJEb24ndCB1bmRlcnN0YW5kIDB4JXggXG4iCiBtc2dzdHIgIiIKQEAgLTIyOCw3ICsyMzUsNyBAQAogbXNnaWQgIiUwMnhcdFx0KnVua25vd24qIgogbXNnc3RyICIiCiAKLSM6IGkzODYtZGlzLmM6MTY5OQorIzogaTM4Ni1kaXMuYzoxNzEyCiBtc2dpZCAiPGludGVybmFsIGRpc2Fzc2VtYmxlciBlcnJvcj4iCiBtc2dzdHIgIiIKIApAQCAtNDA0LDYgKzQxMSw3IEBACiBtc2dzdHIgIiIKIAogIzogaXEyMDAwLWFzbS5jOjIwNSBpcTIwMDAtYXNtLmM6MjM1IGlxMjAwMC1hc20uYzoyNzIgaXEyMDAwLWFzbS5jOjMwNQorIzogb3BlbnJpc2MtYXNtLmM6OTYgb3BlbnJpc2MtYXNtLmM6MTU1CiBtc2dpZCAibWlzc2luZyBgKSciCiBtc2dzdHIgIiIKIApAQCAtNDIyLDEyICs0MzAsMTIgQEAKIG1zZ2lkICJ1bmtub3duXHQweCUwNHgiCiBtc2dzdHIgIiIKIAotIzogbTY4ay1kaXMuYzo0MjkKKyM6IG02OGstZGlzLmM6NDMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIjxpbnRlcm5hbCBlcnJvciBpbiBvcGNvZGUgdGFibGU6ICVzICVzPlxuIgogbXNnc3RyICIiCiAKLSM6IG02OGstZGlzLmM6MTAwNworIzogbTY4ay1kaXMuYzoxMDI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIjxmdW5jdGlvbiBjb2RlICVkPiIKIG1zZ3N0ciAiIgpAQCAtNDM3LDQ3ICs0NDUsNTEgQEAKIG1zZ2lkICIjIDxkaXMgZXJyb3I6ICUwOHg+IgogbXNnc3RyICIiCiAKLSM6IG1pcHMtZGlzLmM6NzAzCisjOiBtaXBzLWRpcy5jOjcwOQogbXNnaWQgIiMgaW50ZXJuYWwgZXJyb3IsIGluY29tcGxldGUgZXh0ZW5zaW9uIHNlcXVlbmNlICgrKSIKIG1zZ3N0ciAiIgogCi0jOiBtaXBzLWRpcy5jOjc0NgorIzogbWlwcy1kaXMuYzo3NjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIyBpbnRlcm5hbCBlcnJvciwgdW5kZWZpbmVkIGV4dGVuc2lvbiBzZXF1ZW5jZSAoKyVjKSIKIG1zZ3N0ciAiIgogCi0jOiBtaXBzLWRpcy5jOjEwMDQKKyM6IG1pcHMtZGlzLmM6MTAyNgogIywgYy1mb3JtYXQKIG1zZ2lkICIjIGludGVybmFsIGVycm9yLCB1bmRlZmluZWQgbW9kaWZpZXIoJWMpIgogbXNnc3RyICIiCiAKLSM6IG1pcHMtZGlzLmM6MTc1NQorIzogbWlwcy1kaXMuYzoxNzc3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiMgaW50ZXJuYWwgZGlzYXNzZW1ibGVyIGVycm9yLCB1bnJlY29nbmlzZWQgbW9kaWZpZXIgKCVjKSIKIG1zZ3N0ciAiIgogCi0jOiBtaXBzLWRpcy5jOjE3NjcKKyM6IG1pcHMtZGlzLmM6MTc4OQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiVGhlIGZvbGxvd2luZyBNSVBTIHNwZWNpZmljIGRpc2Fzc2VtYmxlciBvcHRpb25zIGFyZSBzdXBwb3J0ZWQgZm9yIHVzZVxuIgogIndpdGggdGhlIC1NIHN3aXRjaCAobXVsdGlwbGUgb3B0aW9ucyBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IGNvbW1hcyk6XG4iCiBtc2dzdHIgIiIKIAotIzogbWlwcy1kaXMuYzoxNzcxCisjOiBtaXBzLWRpcy5jOjE3OTMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiAgZ3ByLW5hbWVzPUFCSSAgICAgICAgICAgIFByaW50IEdQUiBuYW1lcyBhY2NvcmRpbmcgdG8gIHNwZWNpZmllZCBBQkkuXG4iCiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdDogYmFzZWQgb24gYmluYXJ5IGJlaW5nIGRpc2Fzc2VtYmxlZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBtaXBzLWRpcy5jOjE3NzUKKyM6IG1pcHMtZGlzLmM6MTc5NworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiICBmcHItbmFtZXM9QUJJICAgICAgICAgICAgUHJpbnQgRlBSIG5hbWVzIGFjY29yZGluZyB0byBzcGVjaWZpZWQgQUJJLlxuIgogIiAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQ6IG51bWVyaWMuXG4iCiBtc2dzdHIgIiIKIAotIzogbWlwcy1kaXMuYzoxNzc5CisjOiBtaXBzLWRpcy5jOjE4MDEKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiAgY3AwLW5hbWVzPUFSQ0ggICAgICAgICAgIFByaW50IENQMCByZWdpc3RlciBuYW1lcyBhY2NvcmRpbmcgdG9cbiIKQEAgLTQ4NSw3ICs0OTcsOCBAQAogIiAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQ6IGJhc2VkIG9uIGJpbmFyeSBiZWluZyBkaXNhc3NlbWJsZWQuXG4iCiBtc2dzdHIgIiIKIAotIzogbWlwcy1kaXMuYzoxNzg0CisjOiBtaXBzLWRpcy5jOjE4MDYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgogIiAgaHdyLW5hbWVzPUFSQ0ggICAgICAgICAgIFByaW50IEhXUiBuYW1lcyBhY2NvcmRpbmcgdG8gc3BlY2lmaWVkIFxuIgpAQCAtNDkzLDMyICs1MDYsMzcgQEAKICIgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0OiBiYXNlZCBvbiBiaW5hcnkgYmVpbmcgZGlzYXNzZW1ibGVkLlxuIgogbXNnc3RyICIiCiAKLSM6IG1pcHMtZGlzLmM6MTc4OQorIzogbWlwcy1kaXMuYzoxODExCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIgIHJlZy1uYW1lcz1BQkkgICAgICAgICAgICBQcmludCBHUFIgYW5kIEZQUiBuYW1lcyBhY2NvcmRpbmcgdG9cbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgQUJJLlxuIgogbXNnc3RyICIiCiAKLSM6IG1pcHMtZGlzLmM6MTc5MworIzogbWlwcy1kaXMuYzoxODE1CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIgIHJlZy1uYW1lcz1BUkNIICAgICAgICAgICBQcmludCBDUDAgcmVnaXN0ZXIgYW5kIEhXUiBuYW1lcyBhY2NvcmRpbmcgdG9cbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgYXJjaGl0ZWN0dXJlLlxuIgogbXNnc3RyICIiCiAKLSM6IG1pcHMtZGlzLmM6MTc5NworIzogbWlwcy1kaXMuYzoxODE5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIgIEZvciB0aGUgb3B0aW9ucyBhYm92ZSwgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHN1cHBvcnRlZCBmb3IgXCJBQklcIjpcbiIKICIgICAiCiBtc2dzdHIgIiIKIAotIzogbWlwcy1kaXMuYzoxODAyIG1pcHMtZGlzLmM6MTgxMCBtaXBzLWRpcy5jOjE4MTIKKyM6IG1pcHMtZGlzLmM6MTgyNCBtaXBzLWRpcy5jOjE4MzIgbWlwcy1kaXMuYzoxODM0CisjLCBjLWZvcm1hdAogbXNnaWQgIlxuIgogbXNnc3RyICIiCiAKLSM6IG1pcHMtZGlzLmM6MTgwNAorIzogbWlwcy1kaXMuYzoxODI2CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKICIgIEZvciB0aGUgb3B0aW9ucyBhYm92ZSwgVGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHN1cHBvcnRlZCBmb3IgXCJBUkNIXCI6XG4iCkBAIC01NTEsODYgKzU2OSw4NyBAQAogIy4gKiBhbnl3YXkhCiAjLgogIzogbnMzMmstZGlzLmM6NjMxCisjLCBjLWZvcm1hdAogbXNnaWQgIiQ8dW5kZWZpbmVkPiIKIG1zZ3N0ciAiIgogCi0jOiBwcGMtb3BjLmM6NzgxIHBwYy1vcGMuYzo4MDkKKyM6IHBwYy1vcGMuYzo3OTEgcHBjLW9wYy5jOjgxOQogbXNnaWQgImludmFsaWQgY29uZGl0aW9uYWwgb3B0aW9uIgogbXNnc3RyICIiCiAKLSM6IHBwYy1vcGMuYzo4MTEKKyM6IHBwYy1vcGMuYzo4MjEKIG1zZ2lkICJhdHRlbXB0IHRvIHNldCB5IGJpdCB3aGVuIHVzaW5nICsgb3IgLSBtb2RpZmllciIKIG1zZ3N0ciAiIgogCi0jOiBwcGMtb3BjLmM6ODQwCisjOiBwcGMtb3BjLmM6ODQ5CiBtc2dpZCAib2Zmc2V0IG5vdCBhIG11bHRpcGxlIG9mIDE2IgogbXNnc3RyICIiCiAKLSM6IHBwYy1vcGMuYzo4NjAKKyM6IHBwYy1vcGMuYzo4NjgKIG1zZ2lkICJvZmZzZXQgbm90IGEgbXVsdGlwbGUgb2YgMiIKIG1zZ3N0ciAiIgogCi0jOiBwcGMtb3BjLmM6ODYyCisjOiBwcGMtb3BjLmM6ODcwCiBtc2dpZCAib2Zmc2V0IGdyZWF0ZXIgdGhhbiA2MiIKIG1zZ3N0ciAiIgogCi0jOiBwcGMtb3BjLmM6ODgxIHBwYy1vcGMuYzo5MjcgcHBjLW9wYy5jOjk3NQorIzogcHBjLW9wYy5jOjg4OSBwcGMtb3BjLmM6OTM0IHBwYy1vcGMuYzo5NzgKIG1zZ2lkICJvZmZzZXQgbm90IGEgbXVsdGlwbGUgb2YgNCIKIG1zZ3N0ciAiIgogCi0jOiBwcGMtb3BjLmM6ODgzCisjOiBwcGMtb3BjLmM6ODkxCiBtc2dpZCAib2Zmc2V0IGdyZWF0ZXIgdGhhbiAxMjQiCiBtc2dzdHIgIiIKIAotIzogcHBjLW9wYy5jOjkwMgorIzogcHBjLW9wYy5jOjkxMAogbXNnaWQgIm9mZnNldCBub3QgYSBtdWx0aXBsZSBvZiA4IgogbXNnc3RyICIiCiAKLSM6IHBwYy1vcGMuYzo5MDQKKyM6IHBwYy1vcGMuYzo5MTIKIG1zZ2lkICJvZmZzZXQgZ3JlYXRlciB0aGFuIDI0OCIKIG1zZ3N0ciAiIgogCi0jOiBwcGMtb3BjLmM6OTUwCisjOiBwcGMtb3BjLmM6OTU1CiBtc2dpZCAib2Zmc2V0IG5vdCBiZXR3ZWVuIC0yMDQ4IGFuZCAyMDQ3IgogbXNnc3RyICIiCiAKLSM6IHBwYy1vcGMuYzo5NzMKKyM6IHBwYy1vcGMuYzo5NzYKIG1zZ2lkICJvZmZzZXQgbm90IGJldHdlZW4gLTgxOTIgYW5kIDgxOTEiCiBtc2dzdHIgIiIKIAotIzogcHBjLW9wYy5jOjEwMTEKKyM6IHBwYy1vcGMuYzoxMDE0CiBtc2dpZCAiaWdub3JpbmcgaW52YWxpZCBtZmNyIG1hc2siCiBtc2dzdHIgIiIKIAotIzogcHBjLW9wYy5jOjEwNTkKKyM6IHBwYy1vcGMuYzoxMDYxCiBtc2dpZCAiaWdub3JpbmcgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBpbiBicmFuY2ggb2Zmc2V0IgogbXNnc3RyICIiCiAKLSM6IHBwYy1vcGMuYzoxMDkwIHBwYy1vcGMuYzoxMTI1CisjOiBwcGMtb3BjLmM6MTA5MSBwcGMtb3BjLmM6MTEyNgogbXNnaWQgImlsbGVnYWwgYml0bWFzayIKIG1zZ3N0ciAiIgogCi0jOiBwcGMtb3BjLmM6MTE5MgorIzogcHBjLW9wYy5jOjExOTEKIG1zZ2lkICJ2YWx1ZSBvdXQgb2YgcmFuZ2UiCiBtc2dzdHIgIiIKIAotIzogcHBjLW9wYy5jOjEyNjIKKyM6IHBwYy1vcGMuYzoxMjU5CiBtc2dpZCAiaW5kZXggcmVnaXN0ZXIgaW4gbG9hZCByYW5nZSIKIG1zZ3N0ciAiIgogCi0jOiBwcGMtb3BjLmM6MTI3OQorIzogcHBjLW9wYy5jOjEyNzUKIG1zZ2lkICJzb3VyY2UgYW5kIHRhcmdldCByZWdpc3RlciBvcGVyYW5kcyBtdXN0IGJlIGRpZmZlcmVudCIKIG1zZ3N0ciAiIgogCi0jOiBwcGMtb3BjLmM6MTI5NAorIzogcHBjLW9wYy5jOjEyOTAKIG1zZ2lkICJpbnZhbGlkIHJlZ2lzdGVyIG9wZXJhbmQgd2hlbiB1cGRhdGluZyIKIG1zZ3N0ciAiIgogCi0jOiBwcGMtb3BjLmM6MTMzNQorIzogcHBjLW9wYy5jOjEzMjkKIG1zZ2lkICJ0YXJnZXQgcmVnaXN0ZXIgb3BlcmFuZCBtdXN0IGJlIGV2ZW4iCiBtc2dzdHIgIiIKIAotIzogcHBjLW9wYy5jOjEzNTAKKyM6IHBwYy1vcGMuYzoxMzQzCiBtc2dpZCAic291cmNlIHJlZ2lzdGVyIG9wZXJhbmQgbXVzdCBiZSBldmVuIgogbXNnc3RyICIiCiAKQEAgLTY1NCwxMiArNjczLDEyIEBACiBtc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGJhZCBzcGFyYy1vcGNvZGUuaDogXCIlc1wiID09IFwiJXNcIlxuIgogbXNnc3RyICIiCiAKLSM6IHY4NTAtZGlzLmM6MjIxCisjOiB2ODUwLWRpcy5jOjIyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIG9wZXJhbmQgc2hpZnQ6ICV4XG4iCiBtc2dzdHIgIiIKIAotIzogdjg1MC1kaXMuYzoyMzMKKyM6IHY4NTAtZGlzLmM6MjM3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gcG9wIHJlZzogJWRcbiIKIG1zZ3N0ciAiIgpkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9wcGMtb3BjLmMgYi9vcGNvZGVzL3BwYy1vcGMuYwppbmRleCBjNTEzY2I4Li4zNmZlNDU0IDEwMDY0NAotLS0gYS9vcGNvZGVzL3BwYy1vcGMuYworKysgYi9vcGNvZGVzL3BwYy1vcGMuYwpAQCAtMzQ4MCw3ICszNDgwLDcgQEAKIHsgIm10c3JpbiIsICBYKDMxLDI0MiksCVhSQV9NQVNLLAlQUEMzMiwJCXsgUlMsIFJCIH0gfSwKIHsgIm10c3JpIiwgICBYKDMxLDI0MiksCVhSQV9NQVNLLAlQT1dFUjMyLAl7IFJTLCBSQiB9IH0sCiAKLXsgImRjYnRzdCIsICBYKDMxLDI0NiksCVhSVF9NQVNLLAlQUEMsCQl7IENULCBSQSwgUkIgfSB9LAoreyAiZGNidHN0IiwgIFgoMzEsMjQ2KSwJWF9NQVNLLAlQUEMsCQkJeyBDVCwgUkEsIFJCIH0gfSwKIAogeyAic3RidXgiLCAgIFgoMzEsMjQ3KSwJWF9NQVNLLAkJQ09NLAkJeyBSUywgUkFTLCBSQiB9IH0sCiAKQEAgLTM1MTQsNyArMzUxNCw3IEBACiB7ICJsc2NieCIsICAgWFJDKDMxLDI3NywwKSwgWF9NQVNLLAlNNjAxLAkJeyBSVCwgUkEsIFJCIH0gfSwKIHsgImxzY2J4LiIsICBYUkMoMzEsMjc3LDEpLCBYX01BU0ssCU02MDEsCQl7IFJULCBSQSwgUkIgfSB9LAogCi17ICJkY2J0IiwgICAgWCgzMSwyNzgpLAlYUlRfTUFTSywJUFBDLAkJeyBDVCwgUkEsIFJCIH0gfSwKK3sgImRjYnQiLCAgICBYKDMxLDI3OCksCVhfTUFTSywJUFBDLAkJCXsgQ1QsIFJBLCBSQiB9IH0sCiAKIHsgImxoengiLCAgICBYKDMxLDI3OSksCVhfTUFTSywJCUNPTSwJCXsgUlQsIFJBMCwgUkIgfSB9LAogCkBAIC0zNjkxLDYgKzM2OTEsMTAgQEAKIHsgIm1mc3BlZnNjciIsICBYU1BSKDMxLDMzOSw1MTIpLCAgWFNQUl9NQVNLLCBQUENTUEUsCXsgUlQgfSB9LAogeyAibWZiYmVhciIsICAgIFhTUFIoMzEsMzM5LDUxMyksICBYU1BSX01BU0ssIFBQQ0JSTEssICB7IFJUIH0gfSwKIHsgIm1mYmJ0YXIiLCAgICBYU1BSKDMxLDMzOSw1MTQpLCAgWFNQUl9NQVNLLCBQUENCUkxLLCAgeyBSVCB9IH0sCit7ICJtZml2b3IzMiIsICAgWFNQUigzMSwzMzksNTI4KSwgIFhTUFJfTUFTSywgUFBDU1BFLAl7IFJUIH0gfSwKK3sgIm1maXZvcjMzIiwgICBYU1BSKDMxLDMzOSw1MjkpLCAgWFNQUl9NQVNLLCBQUENTUEUsCXsgUlQgfSB9LAoreyAibWZpdm9yMzQiLCAgIFhTUFIoMzEsMzM5LDUzMCksICBYU1BSX01BU0ssIFBQQ1NQRSwJeyBSVCB9IH0sCit7ICJtZml2b3IzNSIsICAgWFNQUigzMSwzMzksNTMxKSwgIFhTUFJfTUFTSywgUFBDUE1SLAl7IFJUIH0gfSwKIHsgIm1maWJhdHUiLCAgICBYU1BSKDMxLDMzOSw1MjgpLCAgWFNQUkJBVF9NQVNLLCBQUEMsCXsgUlQsIFNQUkJBVCB9IH0sCiB7ICJtZmliYXRsIiwgICAgWFNQUigzMSwzMzksNTI5KSwgIFhTUFJCQVRfTUFTSywgUFBDLAl7IFJULCBTUFJCQVQgfSB9LAogeyAibWZkYmF0dSIsICAgIFhTUFIoMzEsMzM5LDUzNiksICBYU1BSQkFUX01BU0ssIFBQQywJeyBSVCwgU1BSQkFUIH0gfSwKQEAgLTM3MDAsMTAgKzM3MDQsMTEgQEAKIHsgIm1maWNfZGF0IiwgICBYU1BSKDMxLDMzOSw1NjIpLCAgWFNQUl9NQVNLLCBQUEM4NjAsCXsgUlQgfSB9LAogeyAibWZkY19jc3QiLCAgIFhTUFIoMzEsMzM5LDU2OCksICBYU1BSX01BU0ssIFBQQzg2MCwJeyBSVCB9IH0sCiB7ICJtZmRjX2FkciIsICAgWFNQUigzMSwzMzksNTY5KSwgIFhTUFJfTUFTSywgUFBDODYwLAl7IFJUIH0gfSwKLXsgIm1mZGNfZGF0IiwgICBYU1BSKDMxLDMzOSw1NzApLCAgWFNQUl9NQVNLLCBQUEM4NjAsCXsgUlQgfSB9LAogeyAibWZtY3NycjAiLCAgIFhTUFIoMzEsMzM5LDU3MCksICBYU1BSX01BU0ssIFBQQ1JGTUNJLCB7IFJUIH0gfSwKK3sgIm1mZGNfZGF0IiwgICBYU1BSKDMxLDMzOSw1NzApLCAgWFNQUl9NQVNLLCBQUEM4NjAsCXsgUlQgfSB9LAogeyAibWZtY3NycjEiLCAgIFhTUFIoMzEsMzM5LDU3MSksICBYU1BSX01BU0ssIFBQQ1JGTUNJLCB7IFJUIH0gfSwKIHsgIm1mbWNzciIsICAgICBYU1BSKDMxLDMzOSw1NzIpLCAgWFNQUl9NQVNLLCBQUENSRk1DSSwgeyBSVCB9IH0sCit7ICJtZm1jYXIiLCAgICAgWFNQUigzMSwzMzksNTczKSwgIFhTUFJfTUFTSywgUFBDUkZNQ0ksIHsgUlQgfSB9LAogeyAibWZkcGRyIiwgICAgIFhTUFIoMzEsMzM5LDYzMCksICBYU1BSX01BU0ssIFBQQzg2MCwJeyBSVCB9IH0sCiB7ICJtZmRwaXIiLCAgICAgWFNQUigzMSwzMzksNjMxKSwgIFhTUFJfTUFTSywgUFBDODYwLAl7IFJUIH0gfSwKIHsgIm1maW1tciIsICAgICBYU1BSKDMxLDMzOSw2MzgpLCAgWFNQUl9NQVNLLCBQUEM4NjAsCXsgUlQgfSB9LApAQCAtMzk5Nyw2ICs0MDAyLDEwIEBACiB7ICJtdHNwZWZzY3IiLCAgWFNQUigzMSw0NjcsNTEyKSwgIFhTUFJfTUFTSywgUFBDU1BFLCAgIHsgUlMgfSB9LAogeyAibXRiYmVhciIsICAgWFNQUigzMSw0NjcsNTEzKSwgIFhTUFJfTUFTSywgUFBDQlJMSywgICB7IFJTIH0gfSwKIHsgIm10YmJ0YXIiLCAgIFhTUFIoMzEsNDY3LDUxNCksICBYU1BSX01BU0ssIFBQQ0JSTEssICB7IFJTIH0gfSwKK3sgIm10aXZvcjMyIiwgIFhTUFIoMzEsNDY3LDUyOCksICBYU1BSX01BU0ssIFBQQ1NQRSwJeyBSUyB9IH0sCit7ICJtdGl2b3IzMyIsICBYU1BSKDMxLDQ2Nyw1MjkpLCAgWFNQUl9NQVNLLCBQUENTUEUsCXsgUlMgfSB9LAoreyAibXRpdm9yMzQiLCAgWFNQUigzMSw0NjcsNTMwKSwgIFhTUFJfTUFTSywgUFBDU1BFLAl7IFJTIH0gfSwKK3sgIm10aXZvcjM1IiwgIFhTUFIoMzEsNDY3LDUzMSksICBYU1BSX01BU0ssIFBQQ1BNUiwJeyBSUyB9IH0sCiB7ICJtdGliYXR1IiwgICBYU1BSKDMxLDQ2Nyw1MjgpLCAgWFNQUkJBVF9NQVNLLCBQUEMsCXsgU1BSQkFULCBSUyB9IH0sCiB7ICJtdGliYXRsIiwgICBYU1BSKDMxLDQ2Nyw1MjkpLCAgWFNQUkJBVF9NQVNLLCBQUEMsCXsgU1BSQkFULCBSUyB9IH0sCiB7ICJtdGRiYXR1IiwgICBYU1BSKDMxLDQ2Nyw1MzYpLCAgWFNQUkJBVF9NQVNLLCBQUEMsCXsgU1BSQkFULCBSUyB9IH0sCmRpZmYgLS1naXQgYS9vcGNvZGVzL3NoLWRpcy5jIGIvb3Bjb2Rlcy9zaC1kaXMuYwppbmRleCA3MGZkZmZiLi44NDA4MjNlIDEwMDY0NAotLS0gYS9vcGNvZGVzL3NoLWRpcy5jCisrKyBiL29wY29kZXMvc2gtZGlzLmMKQEAgLTEsNSArMSw1IEBACiAvKiBEaXNhc3NlbWJsZSBTSCBpbnN0cnVjdGlvbnMuCi0gICBDb3B5cmlnaHQgMTk5MywgMTk5NCwgMTk5NSwgMTk5NywgMTk5OCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMworICAgQ29weXJpZ2h0IDE5OTMsIDE5OTQsIDE5OTUsIDE5OTcsIDE5OTgsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtNDMzLDggKzQzMywxMCBAQAogICAgIGNhc2UgYmZkX21hY2hfc2gzZToKICAgICAgIHRhcmdldF9hcmNoID0gYXJjaF9zaDNlOwogICAgICAgYnJlYWs7Ci0gICAgY2FzZSBiZmRfbWFjaF9zaDQ6CiAgICAgY2FzZSBiZmRfbWFjaF9zaDRfbm9mcHU6CisgICAgICB0YXJnZXRfYXJjaCA9IGFyY2hfc2g0X25vZnB1OworICAgICAgYnJlYWs7CisgICAgY2FzZSBiZmRfbWFjaF9zaDQ6CiAgICAgICB0YXJnZXRfYXJjaCA9IGFyY2hfc2g0OwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBiZmRfbWFjaF9zaDRhOgpAQCAtNDQ0LDYgKzQ0Niw5IEBACiAgICAgY2FzZSBiZmRfbWFjaF9zaDRhbF9kc3A6CiAgICAgICB0YXJnZXRfYXJjaCA9IGFyY2hfc2g0YWxfZHNwOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBiZmRfbWFjaF9zaDRfbm9tbXVfbm9mcHU6CisgICAgICB0YXJnZXRfYXJjaCA9IGFyY2hfc2g0X25vbW11X25vZnB1OworICAgICAgYnJlYWs7CiAgICAgY2FzZSBiZmRfbWFjaF9zaDU6CiAjaWZkZWYgSU5DTFVERV9TSE1FRElBCiAgICAgICBzdGF0dXMgPSBwcmludF9pbnNuX3NoNjQgKG1lbWFkZHIsIGluZm8pOwpAQCAtNTc3LDEyICs1ODIsMjEgQEAKIAkgICAgY2FzZSBJTU0xXzhCWTQ6CiAJICAgICAgaW1tID0gKChuaWJzWzJdIDw8IDQpIHwgbmlic1szXSkgPDwgMjsKIAkgICAgICBnb3RvIG9rOworCSAgICBjYXNlIFJFR19OX0Q6CisJICAgICAgaWYgKChuaWJzW25dICYgMSkgIT0gMCkKKwkJZ290byBmYWlsOworCSAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogCSAgICBjYXNlIFJFR19OOgogCSAgICAgIHJuID0gbmlic1tuXTsKIAkgICAgICBicmVhazsKIAkgICAgY2FzZSBSRUdfTToKIAkgICAgICBybSA9IG5pYnNbbl07CiAJICAgICAgYnJlYWs7CisJICAgIGNhc2UgUkVHX05fQjAxOgorCSAgICAgIGlmICgobmlic1tuXSAmIDB4MykgIT0gMSAvKiBiaW5hcnkgMDEgKi8pCisJCWdvdG8gZmFpbDsKKwkgICAgICBybiA9IChuaWJzW25dICYgMHhjKSA+PiAyOworCSAgICAgIGJyZWFrOwogCSAgICBjYXNlIFJFR19OTToKIAkgICAgICBybiA9IChuaWJzW25dICYgMHhjKSA+PiAyOwogCSAgICAgIHJtID0gKG5pYnNbbl0gJiAweDMpOwpkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9zaC1vcGMuaCBiL29wY29kZXMvc2gtb3BjLmgKaW5kZXggNGIwYjBhOC4uYTE4NzdiMyAxMDA2NDQKLS0tIGEvb3Bjb2Rlcy9zaC1vcGMuaAorKysgYi9vcGNvZGVzL3NoLW9wYy5oCkBAIC0xLDUgKzEsNSBAQAogLyogRGVmaW5pdGlvbnMgZm9yIFNIIG9wY29kZXMuCi0gICBDb3B5cmlnaHQgMTk5MywgMTk5NCwgMTk5NSwgMTk5NywgMTk5OSwgMjAwMCwgMjAwMworICAgQ29weXJpZ2h0IDE5OTMsIDE5OTQsIDE5OTUsIDE5OTcsIDE5OTksIDIwMDAsIDIwMDMsIDIwMDQKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMzcsNiArMzcsOCBAQAogICAgIEhFWF9YWDAwLAogICAgIEhFWF8wMFlZLAogICAgIFJFR19OLAorICAgIFJFR19OX0QsICAgICAvKiBubm4wICovCisgICAgUkVHX05fQjAxLCAgIC8qIG5uMDEgKi8KICAgICBSRUdfTSwKICAgICBTRFRfUkVHX04sCiAgICAgUkVHX05NLApAQCAtMTg2LDEyICsxODgsMTMgQEAKICNkZWZpbmUgYXJjaF9zaDRhbF9kc3AgMHgwNDAwCiAjZGVmaW5lIGFyY2hfc2g0X25vZnB1IDB4MTAwMAogI2RlZmluZSBhcmNoX3NoNGFfbm9mcHUgMHgyMDAwCisjZGVmaW5lIGFyY2hfc2g0X25vbW11X25vZnB1IDB4NDAwMCAgLyogbm8gbW11IG5vciBmcHUgKi8KIAogI2RlZmluZSBhcmNoX3NoMV91cCAgKGFyY2hfc2gxIHwgYXJjaF9zaDJfdXApCiAjZGVmaW5lIGFyY2hfc2gyX3VwICAoYXJjaF9zaDIgfCBhcmNoX3NoMmVfdXAgfCBhcmNoX3NoM191cCB8IGFyY2hfc2hfZHNwKQogI2RlZmluZSBhcmNoX3NoMmVfdXAgKGFyY2hfc2gyZSB8IGFyY2hfc2gzZV91cCkKICNkZWZpbmUgYXJjaF9zaDNfdXAgIChhcmNoX3NoMyB8IGFyY2hfc2gzZV91cCB8IGFyY2hfc2gzX2RzcF91cCBcCi0JCSAgICAgIHwgYXJjaF9zaDRfbm9mcF91cCkKKwkJICAgICAgfCBhcmNoX3NoNF9ub21tdV9ub2ZwdV91cCkKICNkZWZpbmUgYXJjaF9zaDNlX3VwIChhcmNoX3NoM2UgfCBhcmNoX3NoNF91cCkKICNkZWZpbmUgYXJjaF9zaDRfdXAgIChhcmNoX3NoNCB8IGFyY2hfc2g0YV91cCkKICNkZWZpbmUgYXJjaF9zaDRhX3VwIChhcmNoX3NoNGEpCkBAIC0yMDAsOSArMjAzLDE0IEBACiAjZGVmaW5lIGFyY2hfc2gzX2RzcF91cCAoYXJjaF9zaDNfZHNwIHwgYXJjaF9zaDRhbF9kc3BfdXApCiAjZGVmaW5lIGFyY2hfc2g0YWxfZHNwX3VwIChhcmNoX3NoNGFsX2RzcCkKIAorI2RlZmluZSBhcmNoX3NoNF9ub21tdV9ub2ZwdV91cCAoYXJjaF9zaDRfbm9tbXVfbm9mcHUgfCBhcmNoX3NoNF9ub2ZwX3VwKQorCiAjZGVmaW5lIGFyY2hfc2g0X25vZnBfdXAgKGFyY2hfc2g0X25vZnB1IHwgYXJjaF9zaDRfdXAgfCBhcmNoX3NoNGFfbm9mcF91cCkKICNkZWZpbmUgYXJjaF9zaDRhX25vZnBfdXAgKGFyY2hfc2g0YV9ub2ZwdSB8IGFyY2hfc2g0YV91cCB8IGFyY2hfc2g0YWxfZHNwX3VwKQogCisjZGVmaW5lIGFyY2hfc2hfYW55X3dpdGhfbW11IChhcmNoX3NoMyB8IGFyY2hfc2gzZV91cCB8IGFyY2hfc2gzX2RzcF91cCBcCisJfCBhcmNoX3NoNF9ub2ZwX3VwKSAgLyogYXJjaCBfc2gzX3VwIG9taXR0aW5nIGFyY2hfc2g0X25vbW11X25vZnB1ICovCisKIHR5cGVkZWYgc3RydWN0CiB7CiAgIGNoYXIgKm5hbWU7CkBAIC0yOTUsNiArMzAzLDggQEAKIAogLyogMDEwMG5ubm4wMDAxMTExMCBsZGMgPFJFR19OPixHQlIgICAgICoveyJsZGMiLHtBX1JFR19OLEFfR0JSfSx7SEVYXzQsUkVHX04sSEVYXzEsSEVYX0V9LCBhcmNoX3NoMV91cH0sCiAKKy8qIDAxMDBubm5uMDAxMTEwMTAgbGRjIDxSRUdfTj4sU0dSICAgICAqL3sibGRjIix7QV9SRUdfTixBX1NHUn0se0hFWF80LFJFR19OLEhFWF8zLEhFWF9BfSwgYXJjaF9zaDRfbm9tbXVfbm9mcHVfdXB9LAorCiAvKiAwMTAwbm5ubjAwMTAxMTEwIGxkYyA8UkVHX04+LFZCUiAgICAgKi97ImxkYyIse0FfUkVHX04sQV9WQlJ9LHtIRVhfNCxSRUdfTixIRVhfMixIRVhfRX0sIGFyY2hfc2gxX3VwfSwKIAogLyogMDEwMG5ubm4wMTAxMTExMCBsZGMgPFJFR19OPixNT0QgICAgICoveyJsZGMiLHtBX1JFR19OLEFfTU9EfSx7SEVYXzQsUkVHX04sSEVYXzUsSEVYX0V9LCBhcmNoX3NoX2RzcF91cH0sCkBAIC0zMDcsNyArMzE3LDcgQEAKIAogLyogMDEwMG5ubm4wMTAwMTExMCBsZGMgPFJFR19OPixTUEMgICAgICoveyJsZGMiLHtBX1JFR19OLEFfU1BDfSx7SEVYXzQsUkVHX04sSEVYXzQsSEVYX0V9LCBhcmNoX3NoM191cH0sCiAKLS8qIDAxMDBubm5uMTExMTEwMTAgbGRjIDxSRUdfTj4sREJSICAgICAqL3sibGRjIix7QV9SRUdfTixBX0RCUn0se0hFWF80LFJFR19OLEhFWF9GLEhFWF9BfSwgYXJjaF9zaDRfbm9mcF91cH0sCisvKiAwMTAwbm5ubjExMTExMDEwIGxkYyA8UkVHX04+LERCUiAgICAgKi97ImxkYyIse0FfUkVHX04sQV9EQlJ9LHtIRVhfNCxSRUdfTixIRVhfRixIRVhfQX0sIGFyY2hfc2g0X25vbW11X25vZnB1X3VwfSwKIAogLyogMDEwMG5ubm4xeHh4MTExMCBsZGMgPFJFR19OPixSbl9CQU5LICoveyJsZGMiLHtBX1JFR19OLEFfUkVHX0J9LHtIRVhfNCxSRUdfTixSRUdfQixIRVhfRX0sIGFyY2hfc2gzX3VwfSwKIApAQCAtMzE3LDYgKzMyNyw4IEBACiAKIC8qIDAxMDBubm5uMDAxMDAxMTEgbGRjLmwgQDxSRUdfTj4rLFZCUiAqL3sibGRjLmwiLHtBX0lOQ19OLEFfVkJSfSx7SEVYXzQsUkVHX04sSEVYXzIsSEVYXzd9LCBhcmNoX3NoMV91cH0sCiAKKy8qIDAxMDBubm5uMDAxMTAxMTAgbGRjLmwgQDxSRUdfTj4rLFNHUiAqL3sibGRjLmwiLHtBX0lOQ19OLEFfU0dSfSx7SEVYXzQsUkVHX04sSEVYXzMsSEVYXzZ9LCBhcmNoX3NoNF9ub21tdV9ub2ZwdV91cH0sCisKIC8qIDAxMDBubm5uMDEwMTAxMTEgbGRjLmwgQDxSRUdfTj4rLE1PRCAqL3sibGRjLmwiLHtBX0lOQ19OLEFfTU9EfSx7SEVYXzQsUkVHX04sSEVYXzUsSEVYXzd9LCBhcmNoX3NoX2RzcF91cH0sCiAKIC8qIDAxMDBubm5uMDExMTAxMTEgbGRjLmwgQDxSRUdfTj4rLFJFICoveyJsZGMubCIse0FfSU5DX04sQV9SRX0se0hFWF80LFJFR19OLEhFWF83LEhFWF83fSwgYXJjaF9zaF9kc3BfdXB9LApAQCAtMzI3LDcgKzMzOSw3IEBACiAKIC8qIDAxMDBubm5uMDEwMDAxMTEgbGRjLmwgQDxSRUdfTj4rLFNQQyAqL3sibGRjLmwiLHtBX0lOQ19OLEFfU1BDfSx7SEVYXzQsUkVHX04sSEVYXzQsSEVYXzd9LCBhcmNoX3NoM191cH0sCiAKLS8qIDAxMDBubm5uMTExMTAxMTAgbGRjLmwgQDxSRUdfTj4rLERCUiAqL3sibGRjLmwiLHtBX0lOQ19OLEFfREJSfSx7SEVYXzQsUkVHX04sSEVYX0YsSEVYXzZ9LCBhcmNoX3NoNF9ub2ZwX3VwfSwKKy8qIDAxMDBubm5uMTExMTAxMTAgbGRjLmwgQDxSRUdfTj4rLERCUiAqL3sibGRjLmwiLHtBX0lOQ19OLEFfREJSfSx7SEVYXzQsUkVHX04sSEVYX0YsSEVYXzZ9LCBhcmNoX3NoNF9ub21tdV9ub2ZwdV91cH0sCiAKIC8qIDAxMDBubm5uMXh4eDAxMTEgbGRjLmwgPFJFR19OPixSbl9CQU5LICoveyJsZGMubCIse0FfSU5DX04sQV9SRUdfQn0se0hFWF80LFJFR19OLFJFR19CLEhFWF83fSwgYXJjaF9zaDNfdXB9LAogCkBAIC0zODIsNyArMzk0LDcgQEAKICAgCiAvKiAwMTAwbm5ubjAxMTAwMTEwIGxkcy5sIEA8UkVHX00+KyxGUFNDUioveyJsZHMubCIse0FfSU5DX00sRlBTQ1JfTn0se0hFWF80LFJFR19NLEhFWF82LEhFWF82fSwgYXJjaF9zaDJlX3VwfSwKIAotLyogMDAwMDAwMDAwMDExMTAwMCBsZHRsYiAgICAgICAgICAgICAgICoveyJsZHRsYiIsezB9LHtIRVhfMCxIRVhfMCxIRVhfMyxIRVhfOH0sIGFyY2hfc2gzX3VwfSwKKy8qIDAwMDAwMDAwMDAxMTEwMDAgbGR0bGIgICAgICAgICAgICAgICAqL3sibGR0bGIiLHswfSx7SEVYXzAsSEVYXzAsSEVYXzMsSEVYXzh9LCBhcmNoX3NoX2FueV93aXRoX21tdX0sCiAKIC8qIDAxMDBubm5ubW1tbTExMTEgbWFjLncgQDxSRUdfTT4rLEA8UkVHX04+KyoveyJtYWMudyIse0FfSU5DX00sQV9JTkNfTn0se0hFWF80LFJFR19OLFJFR19NLEhFWF9GfSwgYXJjaF9zaDFfdXB9LAogCkBAIC00NTUsNyArNDY3LDcgQEAKIC8qIDExMDAwMDAxaTgqMi4uLi4gbW92LncgUjAsQCg8ZGlzcD4sR0JSKSoveyJtb3YudyIse0FfUjAsQV9ESVNQX0dCUn0se0hFWF9DLEhFWF8xLElNTTFfOEJZMn0sIGFyY2hfc2gxX3VwfSwKIAogLyogMTEwMDAxMTFpOHA0Li4uLiBtb3ZhIEAoPGRpc3A+LFBDKSxSMCoveyJtb3ZhIix7QV9ESVNQX1BDLEFfUjB9LHtIRVhfQyxIRVhfNyxQQ1JFTElNTV84Qlk0fSwgYXJjaF9zaDFfdXB9LAotLyogMDAwMG5ubm4xMTAwMDAxMSBtb3ZjYS5sIFIwLEA8UkVHX04+ICoveyJtb3ZjYS5sIix7QV9SMCxBX0lORF9OfSx7SEVYXzAsUkVHX04sSEVYX0MsSEVYXzN9LCBhcmNoX3NoNF9ub2ZwX3VwfSwKKy8qIDAwMDBubm5uMTEwMDAwMTEgbW92Y2EubCBSMCxAPFJFR19OPiAqL3sibW92Y2EubCIse0FfUjAsQV9JTkRfTn0se0hFWF8wLFJFR19OLEhFWF9DLEhFWF8zfSwgYXJjaF9zaDRfbm9tbXVfbm9mcHVfdXB9LAogCiAvKiAwMDAwbm5ubjAxMTEwMDExIG1vdmNvLmwgcjAsQDxSRUdfTj4gKi97Im1vdmNvLmwiLHtBX1IwLEFfSU5EX059LHtIRVhfMCxSRUdfTixIRVhfNyxIRVhfM30sIGFyY2hfc2g0YV9ub2ZwX3VwfSwKIC8qIDAwMDBtbW1tMDExMDAwMTEgbW92bGkubCBAPFJFR19NPixyMCAqL3sibW92bGkubCIse0FfSU5EX00sQV9SMH0se0hFWF8wLFJFR19NLEhFWF82LEhFWF8zfSwgYXJjaF9zaDRhX25vZnBfdXB9LApAQCAtNDgwLDExICs0OTIsMTEgQEAKIC8qIDAwMDAwMDAwMDAwMDEwMDEgbm9wICAgICAgICAgICAgICAgICAqL3sibm9wIix7MH0se0hFWF8wLEhFWF8wLEhFWF8wLEhFWF85fSwgYXJjaF9zaDFfdXB9LAogCiAvKiAwMTEwbm5ubm1tbW0wMTExIG5vdCA8UkVHX00+LDxSRUdfTj4gKi97Im5vdCIseyBBX1JFR19NLEFfUkVHX059LHtIRVhfNixSRUdfTixSRUdfTSxIRVhfN30sIGFyY2hfc2gxX3VwfSwKLS8qIDAwMDBubm5uMTAwMTAwMTEgb2NiaSBAPFJFR19OPiAgICAgICAqL3sib2NiaSIse0FfSU5EX059LHtIRVhfMCxSRUdfTixIRVhfOSxIRVhfM30sIGFyY2hfc2g0X25vZnBfdXB9LAorLyogMDAwMG5ubm4xMDAxMDAxMSBvY2JpIEA8UkVHX04+ICAgICAgICoveyJvY2JpIix7QV9JTkRfTn0se0hFWF8wLFJFR19OLEhFWF85LEhFWF8zfSwgYXJjaF9zaDRfbm9tbXVfbm9mcHVfdXB9LAogCi0vKiAwMDAwbm5ubjEwMTAwMDExIG9jYnAgQDxSRUdfTj4gICAgICAgKi97Im9jYnAiLHtBX0lORF9OfSx7SEVYXzAsUkVHX04sSEVYX0EsSEVYXzN9LCBhcmNoX3NoNF9ub2ZwX3VwfSwKKy8qIDAwMDBubm5uMTAxMDAwMTEgb2NicCBAPFJFR19OPiAgICAgICAqL3sib2NicCIse0FfSU5EX059LHtIRVhfMCxSRUdfTixIRVhfQSxIRVhfM30sIGFyY2hfc2g0X25vbW11X25vZnB1X3VwfSwKIAotLyogMDAwMG5ubm4xMDExMDAxMSBvY2J3YiBAPFJFR19OPiAgICAgICoveyJvY2J3YiIse0FfSU5EX059LHtIRVhfMCxSRUdfTixIRVhfQixIRVhfM30sIGFyY2hfc2g0X25vZnBfdXB9LAorLyogMDAwMG5ubm4xMDExMDAxMSBvY2J3YiBAPFJFR19OPiAgICAgICoveyJvY2J3YiIse0FfSU5EX059LHtIRVhfMCxSRUdfTixIRVhfQixIRVhfM30sIGFyY2hfc2g0X25vbW11X25vZnB1X3VwfSwKIAogCiAvKiAxMTAwMTAxMWk4KjEuLi4uIG9yICM8aW1tPixSMCAgICAgICAgKi97Im9yIix7QV9JTU0sQV9SMH0se0hFWF9DLEhFWF9CLElNTTBfOH0sIGFyY2hfc2gxX3VwfSwKQEAgLTQ5Myw3ICs1MDUsNyBAQAogCiAvKiAxMTAwMTExMWk4KjEuLi4uIG9yLmIgIzxpbW0+LEAoUjAsR0JSKSoveyJvci5iIix7QV9JTU0sQV9SMF9HQlJ9LHtIRVhfQyxIRVhfRixJTU0wXzh9LCBhcmNoX3NoMV91cH0sCiAKLS8qIDAwMDBubm5uMTAwMDAwMTEgcHJlZiBAPFJFR19OPiAgICAgICAqL3sicHJlZiIse0FfSU5EX059LHtIRVhfMCxSRUdfTixIRVhfOCxIRVhfM30sIGFyY2hfc2g0X25vZnBfdXB9LAorLyogMDAwMG5ubm4xMDAwMDAxMSBwcmVmIEA8UkVHX04+ICAgICAgICoveyJwcmVmIix7QV9JTkRfTn0se0hFWF8wLFJFR19OLEhFWF84LEhFWF8zfSwgYXJjaF9zaDRfbm9tbXVfbm9mcHVfdXB9LAogCiAvKiAwMDAwbm5ubjExMDEwMDExIHByZWZpIEA8UkVHX04+ICAgICAgKi97InByZWZpIix7QV9JTkRfTn0se0hFWF8wLFJFR19OLEhFWF9ELEhFWF8zfSwgYXJjaF9zaDRhX25vZnBfdXB9LAogCkBAIC01NjUsOSArNTc3LDkgQEAKIAogLyogMDAwMG5ubm4wMTAwMDAxMCBzdGMgU1BDLDxSRUdfTj4gICAgICoveyJzdGMiLHtBX1NQQyxBX1JFR19OfSx7SEVYXzAsUkVHX04sSEVYXzQsSEVYXzJ9LCBhcmNoX3NoM191cH0sCiAKLS8qIDAwMDBubm5uMDAxMTEwMTAgc3RjIFNHUiw8UkVHX04+ICAgICAqL3sic3RjIix7QV9TR1IsQV9SRUdfTn0se0hFWF8wLFJFR19OLEhFWF8zLEhFWF9BfSwgYXJjaF9zaDRfbm9mcF91cH0sCisvKiAwMDAwbm5ubjAwMTExMDEwIHN0YyBTR1IsPFJFR19OPiAgICAgKi97InN0YyIse0FfU0dSLEFfUkVHX059LHtIRVhfMCxSRUdfTixIRVhfMyxIRVhfQX0sIGFyY2hfc2g0X25vbW11X25vZnB1X3VwfSwKIAotLyogMDAwMG5ubm4xMTExMTAxMCBzdGMgREJSLDxSRUdfTj4gICAgICoveyJzdGMiLHtBX0RCUixBX1JFR19OfSx7SEVYXzAsUkVHX04sSEVYX0YsSEVYX0F9LCBhcmNoX3NoNF9ub2ZwX3VwfSwKKy8qIDAwMDBubm5uMTExMTEwMTAgc3RjIERCUiw8UkVHX04+ICAgICAqL3sic3RjIix7QV9EQlIsQV9SRUdfTn0se0hFWF8wLFJFR19OLEhFWF9GLEhFWF9BfSwgYXJjaF9zaDRfbm9tbXVfbm9mcHVfdXB9LAogCiAvKiAwMDAwbm5ubjF4eHgwMDEwIHN0YyBSbl9CQU5LLDxSRUdfTj4gKi97InN0YyIse0FfUkVHX0IsQV9SRUdfTn0se0hFWF8wLFJFR19OLFJFR19CLEhFWF8yfSwgYXJjaF9zaDNfdXB9LAogCkBAIC01ODcsOSArNTk5LDkgQEAKIAogLyogMDEwMG5ubm4wMDAxMDAxMSBzdGMubCBHQlIsQC08UkVHX04+ICoveyJzdGMubCIse0FfR0JSLEFfREVDX059LHtIRVhfNCxSRUdfTixIRVhfMSxIRVhfM30sIGFyY2hfc2gxX3VwfSwKIAotLyogMDEwMG5ubm4wMDExMDAxMCBzdGMubCBTR1IsQC08UkVHX04+ICoveyJzdGMubCIse0FfU0dSLEFfREVDX059LHtIRVhfNCxSRUdfTixIRVhfMyxIRVhfMn0sIGFyY2hfc2g0X25vZnBfdXB9LAorLyogMDEwMG5ubm4wMDExMDAxMCBzdGMubCBTR1IsQC08UkVHX04+ICoveyJzdGMubCIse0FfU0dSLEFfREVDX059LHtIRVhfNCxSRUdfTixIRVhfMyxIRVhfMn0sIGFyY2hfc2g0X25vbW11X25vZnB1X3VwfSwKIAotLyogMDEwMG5ubm4xMTExMDAxMCBzdGMubCBEQlIsQC08UkVHX04+ICoveyJzdGMubCIse0FfREJSLEFfREVDX059LHtIRVhfNCxSRUdfTixIRVhfRixIRVhfMn0sIGFyY2hfc2g0X25vZnBfdXB9LAorLyogMDEwMG5ubm4xMTExMDAxMCBzdGMubCBEQlIsQC08UkVHX04+ICoveyJzdGMubCIse0FfREJSLEFfREVDX059LHtIRVhfNCxSRUdfTixIRVhfRixIRVhfMn0sIGFyY2hfc2g0X25vbW11X25vZnB1X3VwfSwKIAogLyogMDEwMG5ubm4xeHh4MDAxMSBzdGMubCBSbl9CQU5LLEAtPFJFR19OPiAqL3sic3RjLmwiLHtBX1JFR19CLEFfREVDX059LHtIRVhfNCxSRUdfTixSRUdfQixIRVhfM30sIGFyY2hfc2gzX3VwfSwKIApAQCAtODQyLDcgKzg1NCw3IEBACiB7InBzd2FwIiwge0RTUF9SRUdfWSxEU1BfUkVHX059LHtQUEksUFBJQyxIRVhfQixIRVhfRCxIRVhfNH0sIGFyY2hfc2g0YWxfZHNwX3VwfSwKIAogLyogMTExMW5ubm4wMTAxMTEwMSBmYWJzIDxGX1JFR19OPiAgICAgKi97ImZhYnMiLHtGX1JFR19OfSx7SEVYX0YsUkVHX04sSEVYXzUsSEVYX0R9LCBhcmNoX3NoMmVfdXB9LAotLyogMTExMW5ubm4wMTAxMTEwMSBmYWJzIDxEX1JFR19OPiAgICAgKi97ImZhYnMiLHtEX1JFR19OfSx7SEVYX0YsUkVHX04sSEVYXzUsSEVYX0R9LCBhcmNoX3NoNF91cH0sCisvKiAxMTExbm5uMDAxMDExMTAxIGZhYnMgPERfUkVHX04+ICAgICAqL3siZmFicyIse0RfUkVHX059LHtIRVhfRixSRUdfTixIRVhfNSxIRVhfRH0sIGFyY2hfc2g0X3VwfSwKIAogLyogMTExMW5ubm5tbW1tMDAwMCBmYWRkIDxGX1JFR19NPiw8Rl9SRUdfTj4qL3siZmFkZCIse0ZfUkVHX00sRl9SRUdfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF8wfSwgYXJjaF9zaDJlX3VwfSwKIC8qIDExMTFubm4wbW1tMDAwMDAgZmFkZCA8RF9SRUdfTT4sPERfUkVHX04+Ki97ImZhZGQiLHtEX1JFR19NLERfUkVHX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfMH0sIGFyY2hfc2g0X3VwfSwKQEAgLTg1Myw5ICs4NjUsOSBAQAogLyogMTExMW5ubm5tbW1tMDEwMSBmY21wL2d0IDxGX1JFR19NPiw8Rl9SRUdfTj4qL3siZmNtcC9ndCIse0ZfUkVHX00sRl9SRUdfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF81fSwgYXJjaF9zaDJlX3VwfSwKIC8qIDExMTFubm4wbW1tMDAxMDEgZmNtcC9ndCA8RF9SRUdfTT4sPERfUkVHX04+Ki97ImZjbXAvZ3QiLHtEX1JFR19NLERfUkVHX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfNX0sIGFyY2hfc2g0X3VwfSwKIAotLyogMTExMW5ubjAxMDExMTEwMSBmY252ZHMgPERfUkVHX04+LEZQVUwqL3siZmNudmRzIix7RF9SRUdfTixGUFVMX019LHtIRVhfRixSRUdfTixIRVhfQixIRVhfRH0sIGFyY2hfc2g0X3VwfSwKKy8qIDExMTFubm4wMTAxMTExMDEgZmNudmRzIDxEX1JFR19OPixGUFVMKi97ImZjbnZkcyIse0RfUkVHX04sRlBVTF9NfSx7SEVYX0YsUkVHX05fRCxIRVhfQixIRVhfRH0sIGFyY2hfc2g0X3VwfSwKIAotLyogMTExMW5ubjAxMDEwMTEwMSBmY252c2QgRlBVTCw8RF9SRUdfTj4qL3siZmNudnNkIix7RlBVTF9NLERfUkVHX059LHtIRVhfRixSRUdfTixIRVhfQSxIRVhfRH0sIGFyY2hfc2g0X3VwfSwKKy8qIDExMTFubm4wMTAxMDExMDEgZmNudnNkIEZQVUwsPERfUkVHX04+Ki97ImZjbnZzZCIse0ZQVUxfTSxEX1JFR19OfSx7SEVYX0YsUkVHX05fRCxIRVhfQSxIRVhfRH0sIGFyY2hfc2g0X3VwfSwKIAogLyogMTExMW5ubm5tbW1tMDAxMSBmZGl2IDxGX1JFR19NPiw8Rl9SRUdfTj4qL3siZmRpdiIse0ZfUkVHX00sRl9SRUdfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF8zfSwgYXJjaF9zaDJlX3VwfSwKIC8qIDExMTFubm4wbW1tMDAwMTEgZmRpdiA8RF9SRUdfTT4sPERfUkVHX04+Ki97ImZkaXYiLHtEX1JFR19NLERfUkVHX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfM30sIGFyY2hfc2g0X3VwfSwKQEAgLTg2OSw0MiArODgxLDQyIEBACiAvKiAxMTExbm5ubjAwMDExMTAxIGZsZHMgPEZfUkVHX04+LEZQVUwqL3siZmxkcyIse0ZfUkVHX04sRlBVTF9NfSx7SEVYX0YsUkVHX04sSEVYXzEsSEVYX0R9LCBhcmNoX3NoMmVfdXB9LAogCiAvKiAxMTExbm5ubjAwMTAxMTAxIGZsb2F0IEZQVUwsPEZfUkVHX04+Ki97ImZsb2F0Iix7RlBVTF9NLEZfUkVHX059LHtIRVhfRixSRUdfTixIRVhfMixIRVhfRH0sIGFyY2hfc2gyZV91cH0sCi0vKiAxMTExbm5ubjAwMTAxMTAxIGZsb2F0IEZQVUwsPERfUkVHX04+Ki97ImZsb2F0Iix7RlBVTF9NLERfUkVHX059LHtIRVhfRixSRUdfTixIRVhfMixIRVhfRH0sIGFyY2hfc2g0X3VwfSwKKy8qIDExMTFubm4wMDAxMDExMDEgZmxvYXQgRlBVTCw8RF9SRUdfTj4qL3siZmxvYXQiLHtGUFVMX00sRF9SRUdfTn0se0hFWF9GLFJFR19OLEhFWF8yLEhFWF9EfSwgYXJjaF9zaDRfdXB9LAogCiAvKiAxMTExbm5ubm1tbW0xMTEwIGZtYWMgRlIwLDxGX1JFR19NPiw8Rl9SRUdfTj4qL3siZm1hYyIse0ZfRlIwLEZfUkVHX00sRl9SRUdfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF9FfSwgYXJjaF9zaDJlX3VwfSwKIAogLyogMTExMW5ubm5tbW1tMTEwMCBmbW92IDxGX1JFR19NPiw8Rl9SRUdfTj4qL3siZm1vdiIse0ZfUkVHX00sRl9SRUdfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF9DfSwgYXJjaF9zaDJlX3VwfSwKLS8qIDExMTFubm5ubW1tbTExMDAgZm1vdiA8RFhfUkVHX00+LDxEWF9SRUdfTj4qL3siZm1vdiIse0RYX1JFR19NLERYX1JFR19OfSx7SEVYX0YsUkVHX04sUkVHX00sSEVYX0N9LCBhcmNoX3NoNF91cH0sCisvKiAxMTExbm5uMW1tbW0xMTAwIGZtb3YgPERYX1JFR19NPiw8RFhfUkVHX04+Ki97ImZtb3YiLHtEWF9SRUdfTSxEWF9SRUdfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF9DfSwgYXJjaF9zaDRfdXB9LAogCiAvKiAxMTExbm5ubm1tbW0xMDAwIGZtb3YgQDxSRUdfTT4sPEZfUkVHX04+Ki97ImZtb3YiLHtBX0lORF9NLEZfUkVHX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfOH0sIGFyY2hfc2gyZV91cH0sCi0vKiAxMTExbm5ubm1tbW0xMDAwIGZtb3YgQDxSRUdfTT4sPERYX1JFR19OPioveyJmbW92Iix7QV9JTkRfTSxEWF9SRUdfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF84fSwgYXJjaF9zaDRfdXB9LAorLyogMTExMW5ubjFtbW1tMTAwMCBmbW92IEA8UkVHX00+LDxEWF9SRUdfTj4qL3siZm1vdiIse0FfSU5EX00sRFhfUkVHX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfOH0sIGFyY2hfc2g0X3VwfSwKIAogLyogMTExMW5ubm5tbW1tMTAxMCBmbW92IDxGX1JFR19NPixAPFJFR19OPioveyJmbW92Iix7Rl9SRUdfTSxBX0lORF9OfSx7SEVYX0YsUkVHX04sUkVHX00sSEVYX0F9LCBhcmNoX3NoMmVfdXB9LAotLyogMTExMW5ubm5tbW1tMTAxMCBmbW92IDxEWF9SRUdfTT4sQDxSRUdfTj4qL3siZm1vdiIse0RYX1JFR19NLEFfSU5EX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfQX0sIGFyY2hfc2g0X3VwfSwKKy8qIDExMTFubm5ubW1tMTEwMTAgZm1vdiA8RFhfUkVHX00+LEA8UkVHX04+Ki97ImZtb3YiLHtEWF9SRUdfTSxBX0lORF9OfSx7SEVYX0YsUkVHX04sUkVHX00sSEVYX0F9LCBhcmNoX3NoNF91cH0sCiAKIC8qIDExMTFubm5ubW1tbTEwMDEgZm1vdiBAPFJFR19NPissPEZfUkVHX04+Ki97ImZtb3YiLHtBX0lOQ19NLEZfUkVHX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfOX0sIGFyY2hfc2gyZV91cH0sCi0vKiAxMTExbm5ubm1tbW0xMDAxIGZtb3YgQDxSRUdfTT4rLDxEWF9SRUdfTj4qL3siZm1vdiIse0FfSU5DX00sRFhfUkVHX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfOX0sIGFyY2hfc2g0X3VwfSwKKy8qIDExMTFubm4xbW1tbTEwMDEgZm1vdiBAPFJFR19NPissPERYX1JFR19OPioveyJmbW92Iix7QV9JTkNfTSxEWF9SRUdfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF85fSwgYXJjaF9zaDRfdXB9LAogCiAvKiAxMTExbm5ubm1tbW0xMDExIGZtb3YgPEZfUkVHX00+LEAtPFJFR19OPioveyJmbW92Iix7Rl9SRUdfTSxBX0RFQ19OfSx7SEVYX0YsUkVHX04sUkVHX00sSEVYX0J9LCBhcmNoX3NoMmVfdXB9LAotLyogMTExMW5ubm5tbW1tMTAxMSBmbW92IDxEWF9SRUdfTT4sQC08UkVHX04+Ki97ImZtb3YiLHtEWF9SRUdfTSxBX0RFQ19OfSx7SEVYX0YsUkVHX04sUkVHX00sSEVYX0J9LCBhcmNoX3NoNF91cH0sCisvKiAxMTExbm5ubm1tbTExMDExIGZtb3YgPERYX1JFR19NPixALTxSRUdfTj4qL3siZm1vdiIse0RYX1JFR19NLEFfREVDX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfQn0sIGFyY2hfc2g0X3VwfSwKIAogLyogMTExMW5ubm5tbW1tMDExMCBmbW92IEAoUjAsPFJFR19NPiksPEZfUkVHX04+Ki97ImZtb3YiLHtBX0lORF9SMF9SRUdfTSxGX1JFR19OfSx7SEVYX0YsUkVHX04sUkVHX00sSEVYXzZ9LCBhcmNoX3NoMmVfdXB9LAotLyogMTExMW5ubm5tbW1tMDExMCBmbW92IEAoUjAsPFJFR19NPiksPERYX1JFR19OPioveyJmbW92Iix7QV9JTkRfUjBfUkVHX00sRFhfUkVHX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfNn0sIGFyY2hfc2g0X3VwfSwKKy8qIDExMTFubm4xbW1tbTAxMTAgZm1vdiBAKFIwLDxSRUdfTT4pLDxEWF9SRUdfTj4qL3siZm1vdiIse0FfSU5EX1IwX1JFR19NLERYX1JFR19OfSx7SEVYX0YsUkVHX04sUkVHX00sSEVYXzZ9LCBhcmNoX3NoNF91cH0sCiAKIC8qIDExMTFubm5ubW1tbTAxMTEgZm1vdiA8Rl9SRUdfTT4sQChSMCw8UkVHX04+KSoveyJmbW92Iix7Rl9SRUdfTSxBX0lORF9SMF9SRUdfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF83fSwgYXJjaF9zaDJlX3VwfSwKLS8qIDExMTFubm5ubW1tbTAxMTEgZm1vdiA8RFhfUkVHX00+LEAoUjAsPFJFR19OPikqL3siZm1vdiIse0RYX1JFR19NLEFfSU5EX1IwX1JFR19OfSx7SEVYX0YsUkVHX04sUkVHX00sSEVYXzd9LCBhcmNoX3NoNF91cH0sCisvKiAxMTExbm5ubm1tbTEwMTExIGZtb3YgPERYX1JFR19NPixAKFIwLDxSRUdfTj4pKi97ImZtb3YiLHtEWF9SRUdfTSxBX0lORF9SMF9SRUdfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF83fSwgYXJjaF9zaDRfdXB9LAogCi0vKiAxMTExbm5ubm1tbW0xMDAwIGZtb3YuZCBAPFJFR19NPiw8RFhfUkVHX04+Ki97ImZtb3YuZCIse0FfSU5EX00sRFhfUkVHX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfOH0sIGFyY2hfc2g0X3VwfSwKKy8qIDExMTFubm4xbW1tbTEwMDAgZm1vdi5kIEA8UkVHX00+LDxEWF9SRUdfTj4qL3siZm1vdi5kIix7QV9JTkRfTSxEWF9SRUdfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF84fSwgYXJjaF9zaDRfdXB9LAogCi0vKiAxMTExbm5ubm1tbW0xMDEwIGZtb3YuZCA8RFhfUkVHX00+LEA8UkVHX04+Ki97ImZtb3YuZCIse0RYX1JFR19NLEFfSU5EX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfQX0sIGFyY2hfc2g0X3VwfSwKKy8qIDExMTFubm5ubW1tMTEwMTAgZm1vdi5kIDxEWF9SRUdfTT4sQDxSRUdfTj4qL3siZm1vdi5kIix7RFhfUkVHX00sQV9JTkRfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF9BfSwgYXJjaF9zaDRfdXB9LAogCi0vKiAxMTExbm5ubm1tbW0xMDAxIGZtb3YuZCBAPFJFR19NPissPERYX1JFR19OPioveyJmbW92LmQiLHtBX0lOQ19NLERYX1JFR19OfSx7SEVYX0YsUkVHX04sUkVHX00sSEVYXzl9LCBhcmNoX3NoNF91cH0sCisvKiAxMTExbm5uMW1tbW0xMDAxIGZtb3YuZCBAPFJFR19NPissPERYX1JFR19OPioveyJmbW92LmQiLHtBX0lOQ19NLERYX1JFR19OfSx7SEVYX0YsUkVHX04sUkVHX00sSEVYXzl9LCBhcmNoX3NoNF91cH0sCiAKLS8qIDExMTFubm5ubW1tbTEwMTEgZm1vdi5kIDxEWF9SRUdfTT4sQC08UkVHX04+Ki97ImZtb3YuZCIse0RYX1JFR19NLEFfREVDX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfQn0sIGFyY2hfc2g0X3VwfSwKKy8qIDExMTFubm5ubW1tMTEwMTEgZm1vdi5kIDxEWF9SRUdfTT4sQC08UkVHX04+Ki97ImZtb3YuZCIse0RYX1JFR19NLEFfREVDX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfQn0sIGFyY2hfc2g0X3VwfSwKIAotLyogMTExMW5ubm5tbW1tMDExMCBmbW92LmQgQChSMCw8UkVHX00+KSw8RFhfUkVHX04+Ki97ImZtb3YuZCIse0FfSU5EX1IwX1JFR19NLERYX1JFR19OfSx7SEVYX0YsUkVHX04sUkVHX00sSEVYXzZ9LCBhcmNoX3NoNF91cH0sCisvKiAxMTExbm5uMW1tbW0wMTEwIGZtb3YuZCBAKFIwLDxSRUdfTT4pLDxEWF9SRUdfTj4qL3siZm1vdi5kIix7QV9JTkRfUjBfUkVHX00sRFhfUkVHX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfNn0sIGFyY2hfc2g0X3VwfSwKIAotLyogMTExMW5ubm5tbW1tMDExMSBmbW92LmQgPERYX1JFR19NPixAKFIwLDxSRUdfTj4pKi97ImZtb3YuZCIse0RYX1JFR19NLEFfSU5EX1IwX1JFR19OfSx7SEVYX0YsUkVHX04sUkVHX00sSEVYXzd9LCBhcmNoX3NoNF91cH0sCisvKiAxMTExbm5ubm1tbTEwMTExIGZtb3YuZCA8RFhfUkVHX00+LEAoUjAsPFJFR19OPikqL3siZm1vdi5kIix7RFhfUkVHX00sQV9JTkRfUjBfUkVHX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfN30sIGFyY2hfc2g0X3VwfSwKIAogLyogMTExMW5ubm5tbW1tMTAwMCBmbW92LnMgQDxSRUdfTT4sPEZfUkVHX04+Ki97ImZtb3YucyIse0FfSU5EX00sRl9SRUdfTn0se0hFWF9GLFJFR19OLFJFR19NLEhFWF84fSwgYXJjaF9zaDJlX3VwfSwKIApAQCAtOTIyLDIwICs5MzQsMjAgQEAKIC8qIDExMTFubm4wbW1tMDAwMTAgZm11bCA8RF9SRUdfTT4sPERfUkVHX04+Ki97ImZtdWwiLHtEX1JFR19NLERfUkVHX059LHtIRVhfRixSRUdfTixSRUdfTSxIRVhfMn0sIGFyY2hfc2g0X3VwfSwKIAogLyogMTExMW5ubm4wMTAwMTEwMSBmbmVnIDxGX1JFR19OPiAgICAgKi97ImZuZWciLHtGX1JFR19OfSx7SEVYX0YsUkVHX04sSEVYXzQsSEVYX0R9LCBhcmNoX3NoMmVfdXB9LAotLyogMTExMW5ubm4wMTAwMTEwMSBmbmVnIDxEX1JFR19OPiAgICAgKi97ImZuZWciLHtEX1JFR19OfSx7SEVYX0YsUkVHX04sSEVYXzQsSEVYX0R9LCBhcmNoX3NoNF91cH0sCisvKiAxMTExbm5uMDAxMDAxMTAxIGZuZWcgPERfUkVHX04+ICAgICAqL3siZm5lZyIse0RfUkVHX059LHtIRVhfRixSRUdfTixIRVhfNCxIRVhfRH0sIGFyY2hfc2g0X3VwfSwKIAogLyogMTExMTAxMTExMTExMTEwMSBmcGNoZyAgICAgICAgICAgICAgICoveyJmcGNoZyIsezB9LHtIRVhfRixIRVhfNyxIRVhfRixIRVhfRH0sIGFyY2hfc2g0YV91cH0sCiAKIC8qIDExMTExMDExMTExMTExMDEgZnJjaGcgICAgICAgICAgICAgICAqL3siZnJjaGciLHswfSx7SEVYX0YsSEVYX0IsSEVYX0YsSEVYX0R9LCBhcmNoX3NoNF91cH0sCiAKLS8qIDExMTFubm4wMTExMTExMDEgZnNjYSBGUFVMLDxGX1JFR19OPiAqL3siZnNjYSIse0ZQVUxfTSxEX1JFR19OfSx7SEVYX0YsUkVHX04sSEVYX0YsSEVYX0R9LCBhcmNoX3NoNGFfdXB9LAorLyogMTExMW5ubjAxMTExMTEwMSBmc2NhIEZQVUwsPERfUkVHX04+ICoveyJmc2NhIix7RlBVTF9NLERfUkVHX059LHtIRVhfRixSRUdfTl9ELEhFWF9GLEhFWF9EfSwgYXJjaF9zaDRfdXB9LAogCiAvKiAxMTExMDAxMTExMTExMTAxIGZzY2hnICAgICAgICAgICAgICAgKi97ImZzY2hnIix7MH0se0hFWF9GLEhFWF8zLEhFWF9GLEhFWF9EfSwgYXJjaF9zaDRfdXB9LAogCiAvKiAxMTExbm5ubjAxMTAxMTAxIGZzcXJ0IDxGX1JFR19OPiAgICAqL3siZnNxcnQiLHtGX1JFR19OfSx7SEVYX0YsUkVHX04sSEVYXzYsSEVYX0R9LCBhcmNoX3NoM2VfdXB9LAotLyogMTExMW5ubm4wMTEwMTEwMSBmc3FydCA8RF9SRUdfTj4gICAgKi97ImZzcXJ0Iix7RF9SRUdfTn0se0hFWF9GLFJFR19OLEhFWF82LEhFWF9EfSwgYXJjaF9zaDRfdXB9LAorLyogMTExMW5ubjAwMTEwMTEwMSBmc3FydCA8RF9SRUdfTj4gICAgKi97ImZzcXJ0Iix7RF9SRUdfTn0se0hFWF9GLFJFR19OLEhFWF82LEhFWF9EfSwgYXJjaF9zaDRfdXB9LAogCi0vKiAxMTExbm5ubjAxMTExMTAxIGZzcnJhIDxGX1JFR19OPiAgICAqL3siZnNycmEiLHtGX1JFR19OfSx7SEVYX0YsUkVHX04sSEVYXzcsSEVYX0R9LCBhcmNoX3NoNGFfdXB9LAorLyogMTExMW5ubm4wMTExMTEwMSBmc3JyYSA8Rl9SRUdfTj4gICAgKi97ImZzcnJhIix7Rl9SRUdfTn0se0hFWF9GLFJFR19OLEhFWF83LEhFWF9EfSwgYXJjaF9zaDRfdXB9LAogCiAvKiAxMTExbm5ubjAwMDAxMTAxIGZzdHMgRlBVTCw8Rl9SRUdfTj4qL3siZnN0cyIse0ZQVUxfTSxGX1JFR19OfSx7SEVYX0YsUkVHX04sSEVYXzAsSEVYX0R9LCBhcmNoX3NoMmVfdXB9LAogCkBAIC05NDUsNyArOTU3LDcgQEAKIC8qIDExMTFubm5uMDAxMTExMDEgZnRyYyA8Rl9SRUdfTj4sRlBVTCoveyJmdHJjIix7Rl9SRUdfTixGUFVMX019LHtIRVhfRixSRUdfTixIRVhfMyxIRVhfRH0sIGFyY2hfc2gyZV91cH0sCiAvKiAxMTExbm5ubjAwMTExMTAxIGZ0cmMgPERfUkVHX04+LEZQVUwqL3siZnRyYyIse0RfUkVHX04sRlBVTF9NfSx7SEVYX0YsUkVHX04sSEVYXzMsSEVYX0R9LCBhcmNoX3NoNF91cH0sCiAKLS8qIDExMTFubjAxMTExMTExMDEgZnRydiBYTVRSWF9NNCw8Vl9SRUdfbj4qL3siZnRydiIse1hNVFJYX000LFZfUkVHX059LHtIRVhfRixSRUdfTk0sSEVYX0YsSEVYX0R9LCBhcmNoX3NoNF91cH0sCisvKiAxMTExbm4wMTExMTExMTAxIGZ0cnYgWE1UUlhfTTQsPFZfUkVHX24+Ki97ImZ0cnYiLHtYTVRSWF9NNCxWX1JFR19OfSx7SEVYX0YsUkVHX05fQjAxLEhFWF9GLEhFWF9EfSwgYXJjaF9zaDRfdXB9LAogCiB7IDAsIHswfSwgezB9LCAwIH0gCiB9OwpkaWZmIC0tZ2l0IGEvc3JjLXJlbGVhc2UgYi9zcmMtcmVsZWFzZQppbmRleCA0MDNjZTE0Li40MmQ1YzIwIDEwMDY0NAotLS0gYS9zcmMtcmVsZWFzZQorKysgYi9zcmMtcmVsZWFzZQpAQCAtNDUsNyArNDUsNiBAQAogIyBkaXN0cmlidXRpb24gKHBlcmhhcHMgaXQgd291bGQgYmUgYmV0dGVyIHRvIGluY2x1ZGUgaXQgYW55d2F5KS4KIERFVk9fU1VQUE9SVD0gUkVBRE1FIE1ha2VmaWxlLmluIGNvbmZpZ3VyZSBjb25maWd1cmUuaW4gXAogCWNvbmZpZy5ndWVzcyBjb25maWcuaWYgY29uZmlnLnN1YiBjb25maWcgbW92ZS1pZi1jaGFuZ2UgXAotCW1wdy1SRUFETUUgbXB3LWJ1aWxkLmluIG1wdy1jb25maWcuaW4gbXB3LWNvbmZpZ3VyZSBtcHctaW5zdGFsbCBcCiAJQ09QWUlORyBDT1BZSU5HLkxJQiBpbnN0YWxsLXNoIGNvbmZpZy1tbC5pbiBzeW1saW5rLXRyZWUgXAogCW1raW5zdGFsbGRpcnMgbHRjb25maWcgbHRtYWluLnNoIG1pc3NpbmcgeWx3cmFwIFwKIAlsaWJ0b29sLm00IGdldHRleHQubTQgbHRjZi1jLnNoIGx0Y2YtY3h4LnNoIGx0Y2YtZ2NqLnNoIFwKQEAgLTIwOCwxMSArMjA3LDE0IEBACiAJLXJtIC1mICQoUEFDS0FHRSktJChWRVIpCiAJbG4gLXMgcHJvdG8tdG9wbGV2ICQoUEFDS0FHRSktJChWRVIpCiAKK0NWU19OQU1FUz0gXCggLW5hbWUgQ1ZTIC1vIC1uYW1lICcuY3ZzaWdub3JlJyBcKQorCiAuUEhPTlk6IGRvLXRhcgogZG8tdGFyOgogCWVjaG8gIj09PiBNYWtpbmcgJChQQUNLQUdFKS0kKFZFUikudGFyIgogCS1ybSAtZiAkKFBBQ0tBR0UpLSQoVkVSKS50YXIKLQlmaW5kICQoUEFDS0FHRSktJChWRVIpIC1mb2xsb3cgLW5hbWUgQ1ZTIC1wcnVuZSAtbyAtdHlwZSBmIC1wcmludCBcCisJZmluZCAkKFBBQ0tBR0UpLSQoVkVSKSAtZm9sbG93ICQoQ1ZTX05BTUVTKSAtcHJ1bmUgXAorCQkJLW8gLXR5cGUgZiAtcHJpbnQgXAogCQl8IHRhciBjVGZoIC0gJChQQUNLQUdFKS0kKFZFUikudGFyCiAKIC5QSE9OWTogZG8tYnoyCkBAIC0yMjQsNyArMjI2LDggQEAKIC5QSE9OWTogZG8tbWQ1c3VtCiBkby1tZDVzdW06CiAJZWNobyAiPT0+IEFkZGluZyBtZDUgY2hlY2tzdW0gdG8gdG9wLWxldmVsIGRpcmVjdG9yeSIKLQljZCBwcm90by10b3BsZXYgJiYgZmluZCAqIC1mb2xsb3cgLW5hbWUgQ1ZTIC1wcnVuZSAtbyAtdHlwZSBmIC1wcmludCBcCisJY2QgcHJvdG8tdG9wbGV2ICYmIGZpbmQgKiAtZm9sbG93ICQoQ1ZTX05BTUVTKSAtcHJ1bmUgXAorCQkJLW8gLXR5cGUgZiAtcHJpbnQgXAogCQl8IHhhcmdzICQoTUQ1UFJPRykgPiAuLi9tZDUuc3VtCiAJbXYgbWQ1LnN1bSBwcm90by10b3BsZXYKIApkaWZmIC0tZ2l0IGEvdGV4aW5mby90ZXhpbmZvLnRleCBiL3RleGluZm8vdGV4aW5mby50ZXgKaW5kZXggNTU1YTA3Ny4uNmYzMjJlYSAxMDA2NDQKLS0tIGEvdGV4aW5mby90ZXhpbmZvLnRleAorKysgYi90ZXhpbmZvL3RleGluZm8udGV4CkBAIC0zLDEwICszLDExIEBACiAlIExvYWQgcGxhaW4gaWYgbmVjZXNzYXJ5LCBpLmUuLCBpZiBydW5uaW5nIHVuZGVyIGluaXRleC4KIFxleHBhbmRhZnRlclxpZnhcY3NuYW1lIGZtdG5hbWVcZW5kY3NuYW1lXHJlbGF4XGlucHV0IHBsYWluXGZpCiAlCi1cZGVmXHRleGluZm92ZXJzaW9uezIwMDMtMDItMDMuMTZ9CitcZGVmXHRleGluZm92ZXJzaW9uezIwMDQtMDItMTkuMDl9CiAlCiAlIENvcHlyaWdodCAoQykgMTk4NSwgMTk4NiwgMTk4OCwgMTk5MCwgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwKLSUgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyUgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlCislIEZvdW5kYXRpb24sIEluYy4KICUKICUgVGhpcyB0ZXhpbmZvLnRleCBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogJSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwpAQCAtMjMsMjMgKzI0LDE4IEBACiAlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICUgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAlCi0lIEluIG90aGVyIHdvcmRzLCB5b3UgYXJlIHdlbGNvbWUgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZSB0aGlzIHByb2dyYW0uCi0lIFlvdSBhcmUgZm9yYmlkZGVuIHRvIGZvcmJpZCBhbnlvbmUgZWxzZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlCi0lIHdoYXQgeW91IGdpdmUgdGhlbS4gICBIZWxwIHN0YW1wIG91dCBzb2Z0d2FyZS1ob2FyZGluZyEKLSUKKyUgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hlbiB0aGlzIGZpbGUgaXMgcmVhZCBieSBUZVggd2hlbiBwcm9jZXNzaW5nCislIGEgVGV4aW5mbyBzb3VyY2UgZG9jdW1lbnQsIHlvdSBtYXkgdXNlIHRoZSByZXN1bHQgd2l0aG91dAorJSByZXN0cmljdGlvbi4gIChUaGlzIGhhcyBiZWVuIG91ciBpbnRlbnQgc2luY2UgVGV4aW5mbyB3YXMgaW52ZW50ZWQuKQorJSAKICUgUGxlYXNlIHRyeSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGV4aW5mby50ZXggYmVmb3JlIHN1Ym1pdHRpbmcgYnVnCiAlIHJlcG9ydHM7IHlvdSBjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tOgotJSAgIGZ0cDovL2Z0cC5nbnUub3JnL2dudS90ZXhpbmZvL3RleGluZm8udGV4Ci0lICAgICAoYW5kIGFsbCBHTlUgbWlycm9ycywgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9vcmRlci9mdHAuaHRtbCkKKyUgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGV4aW5mby8gKHRoZSBUZXhpbmZvIGhvbWUgcGFnZSksIG9yCiAlICAgZnRwOi8vdHVnLm9yZy90ZXgvdGV4aW5mby50ZXgKLSUgICAgIChhbmQgYWxsIENUQU4gbWlycm9ycywgc2VlIGh0dHA6Ly93d3cuY3Rhbi5vcmcpLAotJSAgIGFuZCAvaG9tZS9nZC9nbnUvZG9jL3RleGluZm8udGV4IG9uIHRoZSBHTlUgbWFjaGluZXMuCi0lIAotJSBUaGUgR05VIFRleGluZm8gaG9tZSBwYWdlIGlzIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90ZXhpbmZvLgotJSAKLSUgVGhlIHRleGluZm8udGV4IGluIGFueSBnaXZlbiBUZXhpbmZvIGRpc3RyaWJ1dGlvbiBjb3VsZCB3ZWxsIGJlIG91dAorJSAgICAgKGFuZCBhbGwgQ1RBTiBtaXJyb3JzLCBzZWUgaHR0cDovL3d3dy5jdGFuLm9yZykuCislIFRoZSB0ZXhpbmZvLnRleCBpbiBhbnkgZ2l2ZW4gZGlzdHJpYnV0aW9uIGNvdWxkIHdlbGwgYmUgb3V0CiAlIG9mIGRhdGUsIHNvIGlmIHRoYXQncyB3aGF0IHlvdSdyZSB1c2luZywgcGxlYXNlIGNoZWNrLgotJSAKKyUKICUgU2VuZCBidWcgcmVwb3J0cyB0byBidWctdGV4aW5mb0BnbnUub3JnLiAgUGxlYXNlIGluY2x1ZGUgaW5jbHVkaW5nIGEKICUgY29tcGxldGUgZG9jdW1lbnQgaW4gZWFjaCBidWcgcmVwb3J0IHdpdGggd2hpY2ggd2UgY2FuIHJlcHJvZHVjZSB0aGUKICUgcHJvYmxlbS4gIFBhdGNoZXMgYXJlLCBvZiBjb3Vyc2UsIGdyZWF0bHkgYXBwcmVjaWF0ZWQuCkBAIC01NSwxMCArNTEsMTMgQEAKICUgVGhlIGV4dHJhIFRlWCBydW5zIGdldCB0aGUgY3Jvc3MtcmVmZXJlbmNlIGluZm9ybWF0aW9uIGNvcnJlY3QuCiAlIFNvbWV0aW1lcyBvbmUgcnVuIGFmdGVyIHRleGluZGV4IHN1ZmZpY2VzLCBhbmQgc29tZXRpbWVzIHlvdSBuZWVkIG1vcmUKICUgdGhhbiB0d287IHRleGkyZHZpIGRvZXMgaXQgYXMgbWFueSB0aW1lcyBhcyBuZWNlc3NhcnkuCi0lIAorJQogJSBJdCBpcyBwb3NzaWJsZSB0byBhZGFwdCB0ZXhpbmZvLnRleCBmb3Igb3RoZXIgbGFuZ3VhZ2VzLCB0byBzb21lCiAlIGV4dGVudC4gIFlvdSBjYW4gZ2V0IHRoZSBleGlzdGluZyBsYW5ndWFnZS1zcGVjaWZpYyBmaWxlcyBmcm9tIHRoZQogJSBmdWxsIFRleGluZm8gZGlzdHJpYnV0aW9uLgorJSAKKyUgVGhlIEdOVSBUZXhpbmZvIGhvbWUgcGFnZSBpcyBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGV4aW5mby4KKwogCiBcbWVzc2FnZXtMb2FkaW5nIHRleGluZm8gW3ZlcnNpb24gXHRleGluZm92ZXJzaW9uXTp9CiAKQEAgLTcxLDExICs3MCwxMSBAQAogXG1lc3NhZ2V7QmFzaWNzLH0KIFxjaGFyZGVmXG90aGVyPTEyCiAKLSUgV2UgbmV2ZXIgd2FudCBwbGFpbidzIG91dGVyIFwrIGRlZmluaXRpb24gaW4gVGV4aW5mby4KKyUgV2UgbmV2ZXIgd2FudCBwbGFpbidzIFxvdXRlciBkZWZpbml0aW9uIG9mIFwrIGluIFRleGluZm8uCiAlIEZvciBAdGV4LCB3ZSBjYW4gdXNlIFx0YWJhbGlnbi4KIFxsZXRcKyA9IFxyZWxheAogCi0lIFNhdmUgc29tZSBwYXJ0cyBvZiBwbGFpbiB0ZXggd2hvc2UgbmFtZXMgd2Ugd2lsbCByZWRlZmluZS4KKyUgU2F2ZSBzb21lIHBsYWluIHRleCBtYWNyb3Mgd2hvc2UgbmFtZXMgd2Ugd2lsbCByZWRlZmluZS4KIFxsZXRccHRleGI9XGIKIFxsZXRccHRleGJ1bGxldD1cYnVsbGV0CiBcbGV0XHB0ZXhjPVxjCkBAIC04NSwxMyArODQsMTggQEAKIFxsZXRccHRleGVuZD1cZW5kCiBcbGV0XHB0ZXhlcXVpdj1cZXF1aXYKIFxsZXRccHRleGV4Y2xhbT1cIQorXGxldFxwdGV4Zm9vdG5vdGU9XGZvb3Rub3RlCiBcbGV0XHB0ZXhndHI9PgogXGxldFxwdGV4aGF0PV4KIFxsZXRccHRleGk9XGkKK1xsZXRccHRleGluZGVudD1caW5kZW50CitcbGV0XHB0ZXhub2luZGVudD1cbm9pbmRlbnQKK1xsZXRccHRleGluc2VydD1caW5zZXJ0CiBcbGV0XHB0ZXhsYnJhY2U9XHsKIFxsZXRccHRleGxlc3M9PAogXGxldFxwdGV4cGx1cz0rCiBcbGV0XHB0ZXhyYnJhY2U9XH0KK1xsZXRccHRleHNsYXNoPVwvCiBcbGV0XHB0ZXhzdGFyPVwqCiBcbGV0XHB0ZXh0PVx0CiAKQEAgLTk5LDYgKzEwMywxNSBAQAogJSBzdGFydHMgYSBuZXcgbGluZSBpbiB0aGUgb3V0cHV0LgogXG5ld2xpbmVjaGFyID0gYF5eSgogCislIFVzZSBUZVggMy4wJ3MgXGlucHV0bGluZW5vIHRvIGdldCB0aGUgbGluZSBudW1iZXIsIGZvciBiZXR0ZXIgZXJyb3IKKyUgbWVzc2FnZXMsIGJ1dCBpZiB3ZSdyZSB1c2luZyBhbiBvbGQgdmVyc2lvbiBvZiBUZVgsIGRvbid0IGRvIGFueXRoaW5nLgorJQorXGlmeFxpbnB1dGxpbmVub1x0aGlzaXN1bmRlZmluZWQKKyAgXGxldFxsaW5lbnVtYmVyID0gXGVtcHR5ICUgUHJlLTMuMC4KK1xlbHNlCisgIFxkZWZcbGluZW51bWJlcntsLlx0aGVcaW5wdXRsaW5lbm86XHNwYWNlfQorXGZpCisKICUgU2V0IHVwIGZpeGVkIHdvcmRzIGZvciBFbmdsaXNoIGlmIG5vdCBhbHJlYWR5IHNldC4KIFxpZnhccHV0d29yZEFwcGVuZGl4XHVuZGVmaW5lZCAgXGdkZWZccHV0d29yZEFwcGVuZGl4e0FwcGVuZGl4fVxmaQogXGlmeFxwdXR3b3JkQ2hhcHRlclx1bmRlZmluZWQgICBcZ2RlZlxwdXR3b3JkQ2hhcHRlcntDaGFwdGVyfVxmaQpAQCAtMTM3LDQyICsxNTAsNzkgQEAKIFxpZnhccHV0d29yZERlZnNwZWNcdW5kZWZpbmVkICAgXGdkZWZccHV0d29yZERlZnNwZWN7U3BlY2lhbCBGb3JtfVxmaQogXGlmeFxwdXR3b3JkRGVmdmFyXHVuZGVmaW5lZCAgICBcZ2RlZlxwdXR3b3JkRGVmdmFye1ZhcmlhYmxlfVxmaQogXGlmeFxwdXR3b3JkRGVmb3B0XHVuZGVmaW5lZCAgICBcZ2RlZlxwdXR3b3JkRGVmb3B0e1VzZXIgT3B0aW9ufVxmaQotXGlmeFxwdXR3b3JkRGVmdHlwZXZhclx1bmRlZmluZWRcZ2RlZlxwdXR3b3JkRGVmdHlwZXZhcntWYXJpYWJsZX1cZmkKIFxpZnhccHV0d29yZERlZmZ1bmNcdW5kZWZpbmVkICAgXGdkZWZccHV0d29yZERlZmZ1bmN7RnVuY3Rpb259XGZpCi1caWZ4XHB1dHdvcmREZWZ0eXBlZnVuXHVuZGVmaW5lZFxnZGVmXHB1dHdvcmREZWZ0eXBlZnVue0Z1bmN0aW9ufVxmaQogCiAlIEluIHNvbWUgbWFjcm9zLCB3ZSBjYW5ub3QgdXNlIHRoZSBgXD8gbm90YXRpb24tLS10aGUgbGVmdCBxdW90ZSBpcwogJSBpbiBzb21lIGNhc2VzIHRoZSBlc2NhcGUgY2hhci4KIFxjaGFyZGVmXGNvbG9uQ2hhciA9IGBcOgogXGNoYXJkZWZcY29tbWFDaGFyID0gYFwsCiBcY2hhcmRlZlxkb3RDaGFyICAgPSBgXC4KLVxjaGFyZGVmXGVxdWFsQ2hhciA9IGBcPQogXGNoYXJkZWZcZXhjbGFtQ2hhcj0gYFwhCiBcY2hhcmRlZlxxdWVzdENoYXIgPSBgXD8KIFxjaGFyZGVmXHNlbWlDaGFyICA9IGBcOwotXGNoYXJkZWZcc3BhY2VDaGFyID0gYFwgJQogXGNoYXJkZWZcdW5kZXJDaGFyID0gYFxfCiAKK1xjaGFyZGVmXHNwYWNlQ2hhciA9IGBcICUKK1xjaGFyZGVmXHNwYWNlY2F0ID0gMTAKK1xkZWZcc3BhY2Vpc3NwYWNle1xjYXRjb2RlXHNwYWNlQ2hhcj1cc3BhY2VjYXR9CisKICUgSWdub3JlIGEgdG9rZW4uCiAlCiBcZGVmXGdvYmJsZSMxe30KIAotJSBUcnVlIGlmICMxIGlzIHRoZSBlbXB0eSBzdHJpbmcsIGkuZS4sIGNhbGxlZCBsaWtlIGBcaWZlbXB0eXt9Jy4KLSUKLVxkZWZcaWZlbXB0eSMxe1xpZmVtcHR5eCAjMVxlbXB0eW1hcmtBXGVtcHR5bWFya0J9JQotXGRlZlxpZmVtcHR5eCMxIzJcZW1wdHltYXJrQntcaWZ4ICMxXGVtcHR5bWFya0F9JQorJSBUaGUgZm9sbG93aW5nIGlzIHVzZWQgaW5zaWRlIHNldmVyYWwgXGVkZWYncy4KK1xkZWZcbWFrZWNzbmFtZSMxe1xleHBhbmRhZnRlclxub2V4cGFuZFxjc25hbWUjMVxlbmRjc25hbWV9CiAKICUgSHlwaGVuYXRpb24gZml4ZXMuCi1caHlwaGVuYXRpb257YXAtcGVuLWRpeH0KLVxoeXBoZW5hdGlvbnttaW5pLWJ1Zi1mZXIgbWluaS1idWYtZmVyc30KLVxoeXBoZW5hdGlvbntlc2hlbGx9Ci1caHlwaGVuYXRpb257d2hpdGUtc3BhY2V9CitcaHlwaGVuYXRpb257CisgIEZsb3ItaS1kYSBHaG9zdC1zY3JpcHQgR2hvc3QtdmlldyBNYWMtT1MgYXAtcGVuLWRpeCBiaXQtbWFwIGJpdC1tYXBzCisgIGRhdGEtYmFzZSBkYXRhLWJhc2VzIGVzaGVsbCBmYWxsLWluZyBoYWxmLXdheSBsb25nLWVzdCBtYW4tdS1zY3JpcHQKKyAgbWFuLXUtc2NyaXB0cyBtaW5pLWJ1Zi1mZXIgbWluaS1idWYtZmVycyBvdmVyLXZpZXcgcGFyLWEtZGlnbQorICBwYXItYS1kaWdtcyByZWMtdGFuLWd1LWxhciByby1ib3QtaWNzIHNlLXZlcmUtbHkgc2V0LXVwIHNwYS1jZXMKKyAgc3RhbmQtYWxvbmUgc3Ryb25nLWVzdCB0aW1lLXN0YW1wIHRpbWUtc3RhbXBzIHdoaWNoLWV2ZXIgd2hpdGUtc3BhY2UKKyAgd2lkZS1zcHJlYWQgd3JhcC1hcm91bmQKK30KIAogJSBNYXJnaW4gdG8gYWRkIHRvIHJpZ2h0IG9mIGV2ZW4gcGFnZXMsIHRvIGxlZnQgb2Ygb2RkIHBhZ2VzLgogXG5ld2RpbWVuXGJpbmRpbmdvZmZzZXQKIFxuZXdkaW1lblxub3JtYWxvZmZzZXQKIFxuZXdkaW1lblxwYWdld2lkdGggXG5ld2RpbWVuXHBhZ2VoZWlnaHQKIAorJSBGb3IgYSBmaW5hbCBjb3B5LCB0YWtlIG91dCB0aGUgcmVjdGFuZ2xlcworJSB0aGF0IG1hcmsgb3ZlcmZ1bGwgYm94ZXMgKGluIGNhc2UgeW91IGhhdmUgZGVjaWRlZAorJSB0aGF0IHRoZSB0ZXh0IGxvb2tzIG9rIGV2ZW4gdGhvdWdoIGl0IHBhc3NlcyB0aGUgbWFyZ2luKS4KKyUKK1xkZWZcZmluYWxvdXR7XG92ZXJmdWxscnVsZT0wcHR9CisKKyUgQHwgaW5zZXJ0cyBhIGNoYW5nZWJhciB0byB0aGUgbGVmdCBvZiB0aGUgY3VycmVudCBsaW5lLiAgSXQgc2hvdWxkCislIHN1cnJvdW5kIGFueSBjaGFuZ2VkIHRleHQuICBUaGlzIGFwcHJvYWNoIGRvZXMgKm5vdCogd29yayBpZiB0aGUKKyUgY2hhbmdlIHNwYW5zIG1vcmUgdGhhbiB0d28gbGluZXMgb2Ygb3V0cHV0LiAgVG8gaGFuZGxlIHRoYXQsIHdlIHdvdWxkCislIGhhdmUgYWRvcHQgYSBtdWNoIG1vcmUgZGlmZmljdWx0IGFwcHJvYWNoIChwdXR0aW5nIG1hcmtzIGludG8gdGhlIG1haW4KKyUgdmVydGljYWwgbGlzdCBmb3IgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGVhY2ggY2hhbmdlKS4KKyUKK1xkZWZcfHslCisgICUgXHZhZGp1c3QgY2FuIG9ubHkgYmUgdXNlZCBpbiBob3Jpem9udGFsIG1vZGUuCisgIFxsZWF2ZXZtb2RlCisgICUKKyAgJSBBcHBlbmQgdGhpcyB2ZXJ0aWNhbCBtb2RlIG1hdGVyaWFsIGFmdGVyIHRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIG91dHB1dC4KKyAgXHZhZGp1c3R7JQorICAgICUgV2Ugd2FudCB0byBpbnNlcnQgYSBydWxlIHdpdGggdGhlIGhlaWdodCBhbmQgZGVwdGggb2YgdGhlIGN1cnJlbnQKKyAgICAlIGxlYWRpbmc7IHRoYXQgaXMgZXhhY3RseSB3aGF0IFxzdHJ1dGJveCBpcyBzdXBwb3NlZCB0byByZWNvcmQuCisgICAgXHZza2lwLVxiYXNlbGluZXNraXAKKyAgICAlCisgICAgJSBcdmFkanVzdC1pdGVtcyBhcmUgaW5zZXJ0ZWQgYXQgdGhlIGxlZnQgZWRnZSBvZiB0aGUgdHlwZS4gIFNvCisgICAgJSB0aGUgXGxsYXAgaGVyZSBtb3ZlcyBvdXQgaW50byB0aGUgbGVmdC1oYW5kIG1hcmdpbi4KKyAgICBcbGxhcHslCisgICAgICAlCisgICAgICAlIEZvciBhIHRoaWNrZXIgb3IgdGhpbm5lciBiYXIsIGNoYW5nZSB0aGUgYDFwdCcuCisgICAgICBcdnJ1bGUgaGVpZ2h0XGJhc2VsaW5lc2tpcCB3aWR0aDFwdAorICAgICAgJQorICAgICAgJSBUaGlzIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBiYXIgYW5kIHRoZSB0ZXh0LgorICAgICAgXGhza2lwIDEycHQKKyAgICB9JQorICB9JQorfQorCiAlIFNvbWV0aW1lcyBpdCBpcyBjb252ZW5pZW50IHRvIGhhdmUgZXZlcnl0aGluZyBpbiB0aGUgdHJhbnNjcmlwdCBmaWxlCiAlIGFuZCBub3RoaW5nIG9uIHRoZSB0ZXJtaW5hbC4gIFdlIGRvbid0IGp1c3QgY2FsbCBcdHJhY2luZ2FsbCBoZXJlLAogJSBzaW5jZSB0aGF0IHByb2R1Y2VzIHNvbWUgdXNlbGVzcyBvdXRwdXQgb24gdGhlIHRlcm1pbmFsLiAgV2UgYWxzbyBtYWtlCkBAIC0xOTcsMTIgKzI0NywxMiBAQAogICAgIFx0cmFjaW5nYXNzaWduczEKICAgXGZpCiAgIFx0cmFjaW5nY29tbWFuZHMzICAlIDMgZ2l2ZXMgdXMgbW9yZSBpbiBldGV4Ci0gIFxlcnJvcmNvbnRleHRsaW5lc1xtYXhkaW1lbgorICBcZXJyb3Jjb250ZXh0bGluZXMxNgogfSUKIAogJSBhZGQgY2hlY2sgZm9yIFxsYXN0cGVuYWx0eSB0byBwbGFpbidzIGRlZmluaXRpb25zLiAgSWYgdGhlIGxhc3QgdGhpbmcKICUgd2UgZGlkIHdhcyBhIFxub2JyZWFrLCB3ZSBkb24ndCB3YW50IHRvIGluc2VydCBtb3JlIHNwYWNlLgotJSAKKyUKIFxkZWZcc21hbGxicmVha3tcaWZudW1cbGFzdHBlbmFsdHk8MTAwMDBccGFyXGlmZGltXGxhc3Rza2lwPFxzbWFsbHNraXBhbW91bnQKICAgXHJlbW92ZWxhc3Rza2lwXHBlbmFsdHktNTBcc21hbGxza2lwXGZpXGZpfQogXGRlZlxtZWRicmVha3tcaWZudW1cbGFzdHBlbmFsdHk8MTAwMDBccGFyXGlmZGltXGxhc3Rza2lwPFxtZWRza2lwYW1vdW50CkBAIC0yNTUsNyArMzA1LDcgQEAKICAgICAgICAgICAgICAgICAgICAlIHRoZSBwYWdlIGJyZWFrIGhhcHBlbnMgdG8gYmUgaW4gdGhlIG1pZGRsZSBvZiBhbiBleGFtcGxlLgogICAgIFxzaGlwb3V0XHZib3h7JQogICAgICAgJSBEbyB0aGlzIGVhcmx5IHNvIHBkZiByZWZlcmVuY2VzIGdvIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhZ2UuCi0gICAgICBcaWZwZGZtYWtlcGFnZWRlc3QgXHBkZm1rZGVzdHtcdGhlXHBhZ2Vub30gXGZpCisgICAgICBcaWZwZGZtYWtlcGFnZWRlc3QgXHBkZmRlc3QgbmFtZXtcdGhlXHBhZ2Vub30geHl6XGZpCiAgICAgICAlCiAgICAgICBcaWZjcm9wbWFya3MgXHZib3ggdG8gXG91dGVydnNpemVcYmdyb3VwCiAgICAgICAgIFxoc2l6ZSA9IFxvdXRlcmhzaXplCkBAIC0zMzYsMTMyICszODYsMTYyIEBACiAlIHRoZSBpbnB1dCBsaW5lIChleGNlcHQgd2UgcmVtb3ZlIGEgdHJhaWxpbmcgY29tbWVudCkuICAjMSBzaG91bGQgYmUgYQogJSBtYWNybyB3aGljaCBleHBlY3RzIGFuIG9yZGluYXJ5IHVuZGVsaW1pdGVkIFRlWCBhcmd1bWVudC4KICUKLVxkZWZccGFyc2VhcmcjMXslCi0gIFxsZXRcbmV4dCA9ICMxJQorXGRlZlxwYXJzZWFyZ3tccGFyc2Vhcmd1c2luZ3t9fQorXGRlZlxwYXJzZWFyZ3VzaW5nIzEjMnslCisgIFxkZWZcbmV4dHsjMn0lCiAgIFxiZWdpbmdyb3VwCiAgICAgXG9iZXlsaW5lcwotICAgIFxmdXR1cmVsZXRcdGVtcFxwYXJzZWFyZ3gKKyAgICBcc3BhY2Vpc3NwYWNlCisgICAgIzElCisgICAgXHBhcnNlYXJnbGluZVxlbXB0eSUgSW5zZXJ0IHRoZSBcZW1wdHkgdG9rZW4sIHNlZSBcZmluaXNocGFyc2VhcmcgYmVsb3cuCiB9CiAKLSUgSWYgdGhlIG5leHQgdG9rZW4gaXMgYW4gb2JleWVkIHNwYWNlIChmcm9tIGFuIEBleGFtcGxlIGVudmlyb25tZW50IG9yCi0lIHRoZSBsaWtlKSwgcmVtb3ZlIGl0IGFuZCByZWN1cnNlLiAgT3RoZXJ3aXNlLCB3ZSdyZSBkb25lLgotXGRlZlxwYXJzZWFyZ3h7JQotICAlIFxvYmV5ZWRzcGFjZSBpcyBkZWZpbmVkIGZhciBiZWxvdywgYWZ0ZXIgdGhlIGRlZmluaXRpb24gb2YgXHNlcHNwYWNlcy4KLSAgXGlmeFxvYmV5ZWRzcGFjZVx0ZW1wCi0gICAgXGV4cGFuZGFmdGVyXHBhcnNlYXJnZGlzY2FyZHNwYWNlCi0gIFxlbHNlCi0gICAgXGV4cGFuZGFmdGVyXHBhcnNlYXJnbGluZQotICBcZmkKLX0KLQotJSBSZW1vdmUgYSBzaW5nbGUgc3BhY2UgKGFzIHRoZSBkZWxpbWl0ZXIgdG9rZW4gdG8gdGhlIG1hY3JvIGNhbGwpLgote1xvYmV5c3BhY2VzICUKLSBcZ2RlZlxwYXJzZWFyZ2Rpc2NhcmRzcGFjZSB7XGZ1dHVyZWxldFx0ZW1wXHBhcnNlYXJneH19Ci0KIHtcb2JleWxpbmVzICUKICAgXGdkZWZccGFyc2VhcmdsaW5lIzFeXk17JQogICAgIFxlbmRncm91cCAlIEVuZCBvZiB0aGUgZ3JvdXAgc3RhcnRlZCBpbiBccGFyc2VhcmcuCi0gICAgJQotICAgICUgRmlyc3QgcmVtb3ZlIGFueSBAYyBjb21tZW50LCB0aGVuIGFueSBAY29tbWVudC4KLSAgICAlIFJlc3VsdCBvZiBlYWNoIG1hY3JvIGlzIHB1dCBpbiBcdG9rczAuCi0gICAgXGFyZ3JlbW92ZWMgIzFcY1xyZWxheCAlCi0gICAgXGV4cGFuZGFmdGVyXGFyZ3JlbW92ZWNvbW1lbnQgXHRoZVx0b2tzMCBcY29tbWVudFxyZWxheCAlCi0gICAgJQotICAgICUgQ2FsbCB0aGUgY2FsbGVyJ3MgbWFjcm8sIHNhdmVkIGFzIFxuZXh0IGluIFxwYXJzZWFyZy4KLSAgICBcZXhwYW5kYWZ0ZXJcbmV4dFxleHBhbmRhZnRlcntcdGhlXHRva3MwfSUKKyAgICBcYXJncmVtb3ZlY29tbWVudCAjMVxjb21tZW50XEFyZ1Rlcm0lCiAgIH0lCiB9CiAKLSUgU2luY2UgYWxsIFxjeyxvbW1lbnR9IGRvZXMgaXMgdGhyb3cgYXdheSB0aGUgYXJndW1lbnQsIHdlIGNhbiBsZXQgVGVYCi0lIGRvIHRoYXQgZm9yIHVzLiAgVGhlIFxyZWxheCBoZXJlIGlzIG1hdGNoZWQgYnkgdGhlIFxyZWxheCBpbiB0aGUgY2FsbAotJSBpbiBccGFyc2VhcmdsaW5lOyBpdCBjb3VsZCBiZSBtb3JlIG9yIGxlc3MgYW55dGhpbmcsIGl0cyBwdXJwb3NlIGlzCi0lIGp1c3QgdG8gZGVsaW1pdCB0aGUgYXJndW1lbnQgdG8gdGhlIFxjLgotXGRlZlxhcmdyZW1vdmVjIzFcYyMyXHJlbGF4e1x0b2tzMCA9IHsjMX19Ci1cZGVmXGFyZ3JlbW92ZWNvbW1lbnQjMVxjb21tZW50IzJccmVsYXh7XHRva3MwID0geyMxfX0KKyUgRmlyc3QgcmVtb3ZlIGFueSBAY29tbWVudCwgdGhlbiBhbnkgQGMgY29tbWVudC4KK1xkZWZcYXJncmVtb3ZlY29tbWVudCMxXGNvbW1lbnQjMlxBcmdUZXJte1xhcmdyZW1vdmVjICMxXGNcQXJnVGVybX0KK1xkZWZcYXJncmVtb3ZlYyMxXGMjMlxBcmdUZXJte1xhcmdjaGVja3NwYWNlcyMxXF5eTVxBcmdUZXJtfQogCi0lIFxhcmdyZW1vdmVjeyxvbW1lbnR9IG1pZ2h0IGxlYXZlIHVzIHdpdGggdHJhaWxpbmcgc3BhY2VzLCB0aG91Z2g7IGUuZy4sCislIEVhY2ggb2NjdXJlbmNlIG9mIGBcXl5NJyBvciBgPHNwYWNlPlxeXk0nIGlzIHJlcGxhY2VkIGJ5IGEgc2luZ2xlIHNwYWNlLgorJQorJSBcYXJncmVtb3ZlYyBtaWdodCBsZWF2ZSB1cyB3aXRoIHRyYWlsaW5nIHNwYWNlLCBlLmcuLAogJSAgICBAZW5kIGl0ZW1pemUgIEBjIGZvbwotJSB3aWxsIGhhdmUgdHdvIGFjdGl2ZSBzcGFjZXMgYXMgcGFydCBvZiB0aGUgYXJndW1lbnQgd2l0aCB0aGUKLSUgYGl0ZW1pemUnLiAgSGVyZSB3ZSByZW1vdmUgYWxsIGFjdGl2ZSBzcGFjZXMgZnJvbSAjMSwgYW5kIGFzc2lnbiB0aGUKLSUgcmVzdWx0IHRvIFx0b2tzMC4KKyUgVGhpcyBzcGFjZSB0b2tlbiB1bmRlcmdvZXMgdGhlIHNhbWUgcHJvY2VkdXJlIGFuZCBpcyBldmVudHVhbGx5IHJlbW92ZWQKKyUgYnkgXGZpbmlzaHBhcnNlYXJnLgogJQotJSBUaGlzIGxvc2VzIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBhY3RpdmUgY2hhcmFjdGVycyBiZXNpZGVzIHNwYWNlcwotJSBpbiB0aGUgYXJndW1lbnQgLS0gXyBeICssIGZvciBleGFtcGxlIC0tIHNpbmNlIHRoZXkgZ2V0IGV4cGFuZGVkLgotJSBGb3J0dW5hdGVseSwgVGV4aW5mbyBkb2VzIG5vdCBkZWZpbmUgYW55IHN1Y2ggY29tbWFuZHMuICAoSWYgaXQgZXZlcgotJSBkb2VzLCB0aGUgY2F0Y29kZSBvZiB0aGUgY2hhcmFjdGVycyBpbiBxdWVzdGlvbndpbGwgaGF2ZSB0byBiZSBjaGFuZ2VkCi0lIGhlcmUuKSAgQnV0IHRoaXMgbWVhbnMgd2UgY2Fubm90IGNhbGwgXHJlbW92ZWFjdGl2ZXNwYWNlcyBhcyBwYXJ0IG9mCi0lIFxhcmdyZW1vdmVjeyxvbW1lbnR9LCBzaW5jZSBAYyB1c2VzIFxwYXJzZWFyZywgYW5kIHRodXMgdGhlIGFyZ3VtZW50Ci0lIHRoYXQgXHBhcnNlYXJnIGdldHMgbWlnaHQgd2VsbCBoYXZlIGFueSBjaGFyYWN0ZXIgYXQgYWxsIGluIGl0LgotJQotXGRlZlxyZW1vdmVhY3RpdmVzcGFjZXMjMXslCi0gIFxiZWdpbmdyb3VwCi0gICAgXGlnbm9yZWFjdGl2ZXNwYWNlcwotICAgIFxlZGVmXHRlbXB7IzF9JQotICAgIFxnbG9iYWxcdG9rczAgPSBcZXhwYW5kYWZ0ZXJ7XHRlbXB9JQotICBcZW5kZ3JvdXAKK1xkZWZcYXJnY2hlY2tzcGFjZXMjMVxeXk17XGFyZ2NoZWNrc3BhY2VzWCMxXF5eTSBcXl5NfQorXGRlZlxhcmdjaGVja3NwYWNlc1gjMSBcXl5Ne1xhcmdjaGVja3NwYWNlc1kjMVxeXk19CitcZGVmXGFyZ2NoZWNrc3BhY2VzWSMxXF5eTSMyXF5eTSMzXEFyZ1Rlcm17JQorICBcZGVmXHRlbXB7IzN9JQorICBcaWZ4XHRlbXBcZW1wdHkKKyAgICAlIFdlIGNhbm5vdCB1c2UgXG5leHQgaGVyZSwgYXMgaXQgaG9sZHMgdGhlIG1hY3JvIHRvIHJ1bjsKKyAgICAlIHRodXMgd2UgcmV1c2UgXHRlbXAuCisgICAgXGxldFx0ZW1wXGZpbmlzaHBhcnNlYXJnCisgIFxlbHNlCisgICAgXGxldFx0ZW1wXGFyZ2NoZWNrc3BhY2VzCisgIFxmaQorICAlIFB1dCB0aGUgc3BhY2UgdG9rZW4gaW46CisgIFx0ZW1wIzEgIzNcQXJnVGVybQogfQogCi0lIENoYW5nZSB0aGUgYWN0aXZlIHNwYWNlIHRvIGV4cGFuZCB0byBub3RoaW5nLgorJSBJZiBhIF9kZWxpbWl0ZWRfIGFyZ3VtZW50IGlzIGVuY2xvc2VkIGluIGJyYWNlcywgdGhleSBnZXQgc3RyaXBwZWQ7IHNvCislIHRvIGdldCBfZXhhY3RseV8gdGhlIHJlc3Qgb2YgdGhlIGxpbmUsIHdlIGhhZCB0byBwcmV2ZW50IHN1Y2ggc2l0dWF0aW9uLgorJSBXZSBwcmVwZW5kZWQgYW4gXGVtcHR5IHRva2VuIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBhbmQgd2UgZXhwYW5kIGl0IG5vdywKKyUganVzdCBiZWZvcmUgcGFzc2luZyB0aGUgY29udHJvbCB0byBcbmV4dC4KKyUgKFNpbWlsYXJpbHksIHdlIGhhdmUgdG8gdGhpbmsgYWJvdXQgIzMgb2YgXGFyZ2NoZWNrc3BhY2VzWSBhYm92ZTogaXQgaXMKKyUgZWl0aGVyIHRoZSBudWxsIHN0cmluZywgb3IgaXQgZW5kcyB3aXRoIFxeXk0tLS10aHVzIHRoZXJlIGlzIG5vIGRhbmdlcgorJSB0aGF0IGEgcGFpciBvZiBicmFjZXMgd291bGQgYmUgc3RyaXBwZWQuCiAlCi1cYmVnaW5ncm91cAorJSBCdXQgZmlyc3QsIHdlIGhhdmUgdG8gcmVtb3ZlIHRoZSB0cmFpbGluZyBzcGFjZSB0b2tlbi4KKyUKK1xkZWZcZmluaXNocGFyc2VhcmcjMSBcQXJnVGVybXtcZXhwYW5kYWZ0ZXJcbmV4dFxleHBhbmRhZnRlcnsjMX19CisKKyUgXHBhcnNlYXJnZGVmXGZvb3suLi59CislCWlzIHJvdWdobHkgZXF1aXZhbGVudCB0bworJSBcZGVmXGZvb3tccGFyc2VhcmdcWGZvb30KKyUgXGRlZlxYZm9vIzF7Li4ufQorJQorJSBBY3R1YWxseSwgSSB1c2UgXGNzbmFtZVxzdHJpbmdcZm9vXGVuZGNzbmFtZSwgaWUuIFxcZm9vLCBhcyBpdCBpcyBteQorJSBmYXZvdXJpdGUgVGVYIHRyaWNrLiAgLS1rYXNhbCwgMTZub3YwMworCitcZGVmXHBhcnNlYXJnZGVmIzF7JQorICBcZXhwYW5kYWZ0ZXIgXGRvcGFyc2VhcmdkZWYgXGNzbmFtZVxzdHJpbmcjMVxlbmRjc25hbWUgIzElCit9CitcZGVmXGRvcGFyc2VhcmdkZWYjMSMyeyUKKyAgXGRlZiMye1xwYXJzZWFyZyMxfSUKKyAgXGRlZiMxIyMxJQorfQorCislIFNldmVyYWwgdXRpbGl0eSBkZWZpbml0aW9ucyB3aXRoIGFjdGl2ZSBzcGFjZToKK3sKICAgXG9iZXlzcGFjZXMKLSAgXGdkZWZcaWdub3JlYWN0aXZlc3BhY2Vze1xvYmV5c3BhY2VzXGxldCA9XGVtcHR5fQotXGVuZGdyb3VwCisgIFxnZGVmXG9iZXllZHNwYWNleyB9CisKKyAgJSBNYWtlIGVhY2ggc3BhY2UgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCBwcm9kdWNlIGEgbm9ybWFsIGludGVyd29yZAorICAlIHNwYWNlIGluIHRoZSBvdXRwdXQuICBEb24ndCBhbGxvdyBhIGxpbmUgYnJlYWsgYXQgdGhpcyBzcGFjZSwgYXMgdGhpcworICAlIGlzIHVzZWQgb25seSBpbiBlbnZpcm9ubWVudHMgbGlrZSBAZXhhbXBsZSwgd2hlcmUgZWFjaCBsaW5lIG9mIGlucHV0CisgICUgc2hvdWxkIHByb2R1Y2UgYSBsaW5lIG9mIG91dHB1dCBhbnl3YXkuCisgICUKKyAgXGdkZWZcc2Vwc3BhY2Vze1xvYmV5c3BhY2VzXGxldCA9XHRpZX0KKworICAlIElmIGFuIGluZGV4IGNvbW1hbmQgaXMgdXNlZCBpbiBhbiBAZXhhbXBsZSBlbnZpcm9ubWVudCwgYW55IHNwYWNlcworICAlIHRoZXJlaW4gc2hvdWxkIGJlY29tZSByZWd1bGFyIHNwYWNlcyBpbiB0aGUgcmF3IGluZGV4IGZpbGUsIG5vdCB0aGUKKyAgJSBleHBhbnNpb24gb2YgXHRpZSAoXGxlYXZldm1vZGUgXHBlbmFsdHkgXEBNIFwgKS4KKyAgXGdkZWZcdW5zZXBzcGFjZXN7XGxldCA9XHNwYWNlfQorfQogCiAKIFxkZWZcZmx1c2hjcntcaWZ4XHBhclxsaXNwcGFyIFxkZWZcbmV4dCMjMXt9XGVsc2UgXGxldFxuZXh0PVxyZWxheCBcZmkgXG5leHR9CiAKLSUlIFRoZXNlIGFyZSB1c2VkIHRvIGtlZXAgQGJlZ2luL0BlbmQgbGV2ZWxzIGZyb20gcnVubmluZyBhd2F5Ci0lJSBDYWxsIFxpbkVOViB3aXRoaW4gZW52aXJvbm1lbnRzIChhZnRlciBhIFxiZWdpbmdyb3VwKQotXG5ld2lmXGlmRU5WIFxFTlZmYWxzZSBcZGVmXGluRU5We1xpZkVOVlxyZWxheFxlbHNlXEVOVnRydWVcZml9Ci1cZGVmXEVOVmNoZWNreyUKLVxpZkVOVlxlcnJtZXNzYWdle1N0aWxsIHdpdGhpbiBhbiBlbnZpcm9ubWVudDsgcHJlc3MgUkVUVVJOIHRvIGNvbnRpbnVlfQotXGVuZGdyb3VwXGZpfSAlIFRoaXMgaXMgbm90IHBlcmZlY3QsIGJ1dCBpdCBzaG91bGQgcmVkdWNlIGxvc3NhZ2UKKyUgRGVmaW5lIHRoZSBmcmFtZXdvcmsgZm9yIGVudmlyb25tZW50cyBpbiB0ZXhpbmZvLnRleC4gIEl0J3MgdXNlZCBsaWtlIHRoaXM6CislIAorJSAgIFxlbnZkZWZcZm9vey4uLn0KKyUgICBcZGVmXEVmb297Li4ufQorJSAgIAorJSBJdCdzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBcZW52ZGVmIHRvIGluc2VydCBcYmVnaW5ncm91cCBiZWZvcmUgdGhlCislIGFjdHVhbCBib2R5OyBAZW5kIGNsb3NlcyB0aGUgZ3JvdXAgYWZ0ZXIgY2FsbGluZyBcRWZvby4gIFxlbnZkZWYgYWxzbworJSBkZWZpbmVzIFx0aGlzZW52LCBzbyB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBrbm93bjsgQGVuZCBjaGVja3MKKyUgd2hldGhlciB0aGUgZW52aXJvbm1lbnQgbmFtZSBtYXRjaGVzLiAgVGhlIFxjaGVja2VudiBtYWNybyBjYW4gYWxzbyBiZQorJSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgdGhlIG9uZSBleHBlY3RlZC4KKyUgCislIE5vbi1mYWxzZSBjb25kaXRpb25hbHMgKEBpZnRleCwgQGlmc2V0KSBkb24ndCBmaXQgaW50byB0aGlzLCBzbyB0aGV5CislIGFyZSBub3QgdHJlYXRlZCBhcyBlbnZpcm9tZW50czsgdGhleSBkb24ndCBvcGVuIGEgZ3JvdXAuICAoVGhlCislIGltcGxlbWVudGF0aW9uIG9mIEBlbmQgdGFrZXMgY2FyZSBub3QgdG8gY2FsbCBcZW5kZ3JvdXAgaW4gdGhpcworJSBzcGVjaWFsIGNhc2UuKQogCi0lIEBiZWdpbiBmb28gIGlzIHRoZSBzYW1lIGFzIEBmb28sIGZvciBub3cuCi1cbmV3aGVscFxFTXNpbXBsZXtQcmVzcyBSRVRVUk4gdG8gY29udGludWUufQogCi1cb3V0ZXJcZGVmXGJlZ2lue1xwYXJzZWFyZ1xiZWdpbnh4eH0KKyUgQXQgcnVudGltZSwgZW52aXJvbm1lbnRzIHN0YXJ0IHdpdGggdGhpczoKK1xkZWZcc3RhcnRlbnZpcm9ubWVudCMxe1xiZWdpbmdyb3VwXGRlZlx0aGlzZW52eyMxfX0KKyUgaW5pdGlhbGl6ZQorXGxldFx0aGlzZW52XGVtcHR5CiAKLVxkZWZcYmVnaW54eHggIzF7JQotXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgIzFcZW5kY3NuYW1lXHJlbGF4Ci17XGVycmhlbHA9XEVNc2ltcGxlIFxlcnJtZXNzYWdle1VuZGVmaW5lZCBjb21tYW5kIEBiZWdpbiAjMX19XGVsc2UKLVxjc25hbWUgIzFcZW5kY3NuYW1lXGZpfQorJSAuLi4gYnV0IHRoZXkgZ2V0IGRlZmluZWQgdmlhIGBgXGVudmRlZlxmb297Li4ufScnOgorXGxvbmdcZGVmXGVudmRlZiMxIzJ7XGRlZiMxe1xzdGFydGVudmlyb25tZW50IzEjMn19CitcZGVmXGVudnBhcnNlYXJnZGVmIzEjMntccGFyc2VhcmdkZWYjMXtcc3RhcnRlbnZpcm9ubWVudCMxIzJ9fQogCi0lIEBlbmQgZm9vIGV4ZWN1dGVzIHRoZSBkZWZpbml0aW9uIG9mIFxFZm9vLgotJQotXGRlZlxlbmR7XHBhcnNlYXJnXGVuZHh4eH0KLVxkZWZcZW5keHh4ICMxeyUKLSAgXHJlbW92ZWFjdGl2ZXNwYWNlc3sjMX0lCi0gIFxlZGVmXGVuZHRoaW5ne1x0aGVcdG9rczB9JQotICAlCi0gIFxleHBhbmRhZnRlclxpZnhcY3NuYW1lIEVcZW5kdGhpbmdcZW5kY3NuYW1lXHJlbGF4Ci0gICAgXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgXGVuZHRoaW5nXGVuZGNzbmFtZVxyZWxheAotICAgICAgJSBUaGVyZSdzIG5vIFxmb28sIGkuZS4sIG5vIGBgZW52aXJvbm1lbnQnJyBmb28uCi0gICAgICBcZXJyaGVscCA9IFxFTXNpbXBsZQotICAgICAgXGVycm1lc3NhZ2V7VW5kZWZpbmVkIGNvbW1hbmQgYEBlbmQgXGVuZHRoaW5nJ30lCi0gICAgXGVsc2UKLSAgICAgIFx1bm1hdGNoZWRlbmRlcnJvclxlbmR0aGluZwotICAgIFxmaQorJSBDaGVjayB3aGV0aGVyIHdlJ3JlIGluIHRoZSByaWdodCBlbnZpcm9ubWVudDoKK1xkZWZcY2hlY2tlbnYjMXslCisgIFxkZWZcdGVtcHsjMX0lCisgIFxpZnhcdGhpc2Vudlx0ZW1wCiAgIFxlbHNlCi0gICAgJSBFdmVyeXRoaW5nJ3Mgb2s7IHRoZSByaWdodCBlbnZpcm9ubWVudCBoYXMgYmVlbiBzdGFydGVkLgotICAgIFxjc25hbWUgRVxlbmR0aGluZ1xlbmRjc25hbWUKKyAgICBcYmFkZW52ZXJyCiAgIFxmaQogfQogCi0lIFRoZXJlIGlzIGFuIGVudmlyb25tZW50ICMxLCBidXQgaXQgaGFzbid0IGJlZW4gc3RhcnRlZC4gIEdpdmUgYW4gZXJyb3IuCi0lCi1cZGVmXHVubWF0Y2hlZGVuZGVycm9yIzF7JQorJSBFdmlyb25tZW50IG1pc21hdGNoLCAjMSBleHBlY3RlZDoKK1xkZWZcYmFkZW52ZXJyeyUKICAgXGVycmhlbHAgPSBcRU1zaW1wbGUKLSAgXGVycm1lc3NhZ2V7VGhpcyBgQGVuZCAjMScgZG9lc24ndCBoYXZlIGEgbWF0Y2hpbmcgYEAjMSd9JQorICBcZXJybWVzc2FnZXtUaGlzIGNvbW1hbmQgY2FuIGFwcGVhciBvbmx5IFxpbmVudmlyb25tZW50XHRlbXAsCisgICAgbm90IFxpbmVudmlyb25tZW50XHRoaXNlbnZ9JQorfQorXGRlZlxpbmVudmlyb25tZW50IzF7JQorICBcaWZ4IzFcZW1wdHkKKyAgICBvdXQgb2YgYW55IGVudmlyb25tZW50JQorICBcZWxzZQorICAgIGluIGVudmlyb25tZW50IFxleHBhbmRhZnRlclxzdHJpbmcjMSUKKyAgXGZpCiB9CiAKLSUgRGVmaW5lIHRoZSBjb250cm9sIHNlcXVlbmNlIFxFIzEgdG8gZ2l2ZSBhbiB1bm1hdGNoZWQgQGVuZCBlcnJvci4KKyUgQGVuZCBmb28gZXhlY3V0ZXMgdGhlIGRlZmluaXRpb24gb2YgXEVmb28uCislIEJ1dCBmaXJzdCwgaXQgZXhlY3V0ZXMgYSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIFxjaGVja2VudgogJQotXGRlZlxkZWZpbmV1bm1hdGNoZWRlbmQjMXslCi0gIFxleHBhbmRhZnRlclxkZWZcY3NuYW1lIEUjMVxlbmRjc25hbWV7XHVubWF0Y2hlZGVuZGVycm9yeyMxfX0lCitccGFyc2VhcmdkZWZcZW5keyUKKyAgXGlmIDFcY3NuYW1lIGlzY29uZC4jMVxlbmRjc25hbWUKKyAgXGVsc2UKKyAgICAlIFRoZSBnZW5lcmFsIHdvcmRpbmcgb2YgXGJhZGVudmVyciBtYXkgbm90IGJlIGlkZWFsLCBidXQuLi4gLS1rYXNhbCwgMDZub3YwMworICAgIFxleHBhbmRhZnRlclxjaGVja2Vudlxjc25hbWUjMVxlbmRjc25hbWUKKyAgICBcY3NuYW1lIEUjMVxlbmRjc25hbWUKKyAgICBcZW5kZ3JvdXAKKyAgXGZpCiB9CiAKK1xuZXdoZWxwXEVNc2ltcGxle1ByZXNzIFJFVFVSTiB0byBjb250aW51ZS59CisKIAogJSUgU2ltcGxlIHNpbmdsZS1jaGFyYWN0ZXIgQCBjb21tYW5kcwogCkBAIC00OTMsNiArNTczLDkgQEAKICAgIWdkZWYhcmJyYWNlYXRjbWRbQH1dJQogIWVuZGdyb3VwCiAKKyUgQGNvbW1he30gdG8gYXZvaWQgLCBwYXJzaW5nIHByb2JsZW1zLgorXGxldFxjb21tYSA9ICwKKwogJSBBY2NlbnRzOiBALCBAZG90YWNjZW50IEByaW5nYWNjZW50IEB1YmFyYWNjZW50IEB1ZG90YWNjZW50CiAlIE90aGVycyBhcmUgZGVmaW5lZCBieSBwbGFpbiBUZVg6IEBgIEAnIEAiIEBeIEB+IEA9IEB1IEB2IEBILgogXGxldFwsID0gXGMKQEAgLTUwMiwxMCArNTg1LDEyIEBACiBcbGV0XHViYXJhY2NlbnQgPSBcYgogXGxldFx1ZG90YWNjZW50ID0gXGQKIAotJSBPdGhlciBzcGVjaWFsIGNoYXJhY3RlcnM6IEBxdWVzdGlvbmRvd24gQGV4Y2xhbWRvd24KKyUgT3RoZXIgc3BlY2lhbCBjaGFyYWN0ZXJzOiBAcXVlc3Rpb25kb3duIEBleGNsYW1kb3duIEBvcmRmIEBvcmRtCiAlIFBsYWluIFRlWCBkZWZpbmVzOiBAQUEgQEFFIEBPIEBPRSBATCAocGx1cyBsb3dlcmNhc2UgdmVyc2lvbnMpIEBzcy4KIFxkZWZccXVlc3Rpb25kb3duez9gfQogXGRlZlxleGNsYW1kb3dueyFgfQorXGRlZlxvcmRme1xsZWF2ZXZtb2RlXHJhaXNlMWV4XGhib3h7XHNlbGVjdGZvbnRzXGxsbHNpemUgXHVuZGVyYmFye2F9fX0KK1xkZWZcb3JkbXtcbGVhdmV2bW9kZVxyYWlzZTFleFxoYm94e1xzZWxlY3Rmb250c1xsbGxzaXplIFx1bmRlcmJhcntvfX19CiAKICUgRG90bGVzcyBpIGFuZCBkb3RsZXNzIGosIHVzZWQgZm9yIGFjY2VudHMuCiBcZGVmXGltYWNyb3tpfQpAQCAtNTE4LDYgKzYwMywyNSBAQAogICBcZmlcZmkKIH0KIAorJSBUaGUgXFRlWHt9IGxvZ28sIGFzIGluIHBsYWluLCBidXQgcmVzZXR0aW5nIHRoZSBzcGFjaW5nIHNvIHRoYXQgYQorJSBwZXJpb2QgZm9sbG93aW5nIGNvdW50cyBhcyBlbmRpbmcgYSBzZW50ZW5jZS4gIChJZGVhIGZvdW5kIGluIGxhdGV4LikKKyUgCitcZWRlZlxUZVh7XFRlWCBcc3BhY2VmYWN0b3I9MzAwMCB9CisKKyUgQExhVGVYe30gbG9nby4gIE5vdCBxdWl0ZSB0aGUgc2FtZSByZXN1bHRzIGFzIHRoZSBkZWZpbml0aW9uIGluCislIGxhdGV4Lmx0eCwgc2luY2Ugd2UgdXNlIGEgZGlmZmVyZW50IGZvbnQgZm9yIHRoZSByYWlzZWQgQTsgaXQncyBtb3N0CislIGNvbnZlbmllbnQgZm9yIHVzIHRvIHVzZSBhbiBleHBsaWNpdGx5IHNtYWxsZXIgZm9udCwgcmF0aGVyIHRoYW4gdXNpbmcKKyUgdGhlIFxzY3JpcHRzdHlsZSBmb250IChzaW5jZSB3ZSBkb24ndCByZXNldCBcc2NyaXB0c3R5bGUgYW5kCislIFxzY3JpcHRzY3JpcHRzdHlsZSkuCislIAorXGRlZlxMYVRlWHslCisgIExca2Vybi0uMzZlbQorICB7XHNldGJveDA9XGhib3h7VH0lCisgICBcdmJveCB0byBcaHQwe1xoYm94e1xzZWxlY3Rmb250c1xsbGxzaXplIEF9XHZzc319JQorICBca2Vybi0uMTVlbQorICBcVGVYCit9CisKICUgQmUgc3VyZSB3ZSdyZSBpbiBob3Jpem9udGFsIG1vZGUgd2hlbiBkb2luZyBhIHRpZSwgc2luY2Ugd2UgbWFrZSBzcGFjZQogJSBlcXVpdmFsZW50IHRvIHRoaXMgaW4gQGV4YW1wbGUtbGlrZSBlbnZpcm9ubWVudHMuIE90aGVyd2lzZSwgYSBzcGFjZQogJSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSB3aWxsIHN0YXJ0IHdpdGggXHBlbmFsdHkgLS0gYW5kCkBAIC01MzYsNiArNjQwLDkgQEAKICUgQCogZm9yY2VzIGEgbGluZSBicmVhay4KIFxkZWZcKntcaGZpbFxicmVha1xoYm94e31caWdub3Jlc3BhY2VzfQogCislIEAvIGFsbG93cyBhIGxpbmUgYnJlYWsuCitcbGV0XC89XGFsbG93YnJlYWsKKwogJSBALiBpcyBhbiBlbmQtb2Ytc2VudGVuY2UgcGVyaW9kLgogXGRlZlwuey5cc3BhY2VmYWN0b3I9MzAwMCB9CiAKQEAgLTU2NCw2MyArNjcxLDE4IEBACiAlIGV4cGxpY2l0IFx2ZmlsbCBzbyB0aGF0IHRoZSBleHRyYSBzcGFjZSBpcyBhdCB0aGUgYm90dG9tLiAgVGhlCiAlIHRocmVzaG9sZCBmb3IgZG9pbmcgdGhpcyBpcyBpZiB0aGUgZ3JvdXAgaXMgbW9yZSB0aGFuIFx2ZmlsbGxpbWl0CiAlIHBlcmNlbnQgb2YgYSBwYWdlIChcdmZpbGxsaW1pdCBjYW4gYmUgY2hhbmdlZCBpbnNpZGUgb2YgQHRleCkuCi0lIAorJQogXG5ld2JveFxncm91cGJveAogXGRlZlx2ZmlsbGxpbWl0ezAuN30KICUKLVxkZWZcZ3JvdXB7XGJlZ2luZ3JvdXAKLSAgXGlmbnVtXGNhdGNvZGUxMz1cYWN0aXZlIFxlbHNlCitcZW52ZGVmXGdyb3VweyUKKyAgXGlmbnVtXGNhdGNvZGVgXF5eTT1cYWN0aXZlIFxlbHNlCiAgICAgXGVycmhlbHAgPSBcZ3JvdXBpbnZhbGlkaGVscAogICAgIFxlcnJtZXNzYWdle0Bncm91cCBpbnZhbGlkIGluIGNvbnRleHQgd2hlcmUgZmlsbGluZyBpcyBlbmFibGVkfSUKICAgXGZpCi0gICUKLSAgJSBUaGUgXHZ0b3Agd2Ugc3RhcnQgYmVsb3cgcHJvZHVjZXMgYSBib3ggd2l0aCBub3JtYWwgaGVpZ2h0IGFuZCBsYXJnZQotICAlIGRlcHRoOyB0aHVzLCBUZVggcHV0cyBcYmFzZWxpbmVza2lwIGdsdWUgYmVmb3JlIGl0LCBhbmQgKHdoZW4gdGhlCi0gICUgbmV4dCBsaW5lIG9mIHRleHQgaXMgZG9uZSkgXGxpbmVza2lwIGdsdWUgYWZ0ZXIgaXQuICAoU2VlIHAuODIgb2YKLSAgJSB0aGUgVGVYYm9vay4pICBUaHVzLCBzcGFjZSBiZWxvdyBpcyBub3QgcXVpdGUgZXF1YWwgdG8gc3BhY2UKLSAgJSBhYm92ZS4gIEJ1dCBpdCdzIHByZXR0eSBjbG9zZS4KLSAgXGRlZlxFZ3JvdXB7JQotICAgIFxlZ3JvdXAgICAgICAgICAgICUgRW5kIHRoZSBcdnRvcC4KLSAgICAlIFxkaW1lbjAgaXMgdGhlIHZlcnRpY2FsIHNpemUgb2YgdGhlIGdyb3VwJ3MgYm94LgotICAgIFxkaW1lbjAgPSBcaHRcZ3JvdXBib3ggIFxhZHZhbmNlXGRpbWVuMCBieSBcZHBcZ3JvdXBib3gKLSAgICAlIFxkaW1lbjIgaXMgaG93IG11Y2ggc3BhY2UgaXMgbGVmdCBvbiB0aGUgcGFnZSAobW9yZSBvciBsZXNzKS4KLSAgICBcZGltZW4yID0gXHBhZ2VoZWlnaHQgICBcYWR2YW5jZVxkaW1lbjIgYnkgLVxwYWdldG90YWwKLSAgICAlIGlmIHRoZSBncm91cCBkb2Vzbid0IGZpdCBvbiB0aGUgY3VycmVudCBwYWdlLCBhbmQgaXQncyBhIGJpZyBiaWcKLSAgICAlIGdyb3VwLCBmb3JjZSBhIHBhZ2UgYnJlYWsuCi0gICAgXGlmZGltIFxkaW1lbjAgPiBcZGltZW4yCi0gICAgICBcaWZkaW0gXHBhZ2V0b3RhbCA8IFx2ZmlsbGxpbWl0XHBhZ2VoZWlnaHQKLSAgICAgICAgXHBhZ2UKLSAgICAgIFxmaQotICAgIFxmaQotICAgIFxjb3B5XGdyb3VwYm94Ci0gICAgXGVuZGdyb3VwICAgICAgICAgJSBFbmQgdGhlIFxncm91cC4KLSAgfSUKKyAgXHN0YXJ0c2F2aW5naW5zZXJ0cwogICAlCiAgIFxzZXRib3hcZ3JvdXBib3ggPSBcdnRvcFxiZ3JvdXAKLSAgICAlIFdlIGhhdmUgdG8gcHV0IGEgc3RydXQgb24gdGhlIGxhc3QgbGluZSBpbiBjYXNlIHRoZSBAZ3JvdXAgaXMgaW4KLSAgICAlIHRoZSBtaWRzdCBvZiBhbiBleGFtcGxlLCByYXRoZXIgdGhhbiBjb21wbGV0ZWx5IGVuY2xvc2luZyBpdC4KLSAgICAlIE90aGVyd2lzZSwgdGhlIGludGVybGluZSBzcGFjZSBiZXR3ZWVuIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGdyb3VwCi0gICAgJSBhbmQgdGhlIGZpcnN0IGxpbmUgYWZ0ZXJ3YXJkcyBpcyB0b28gc21hbGwuICBCdXQgd2UgY2FuJ3QgcHV0IHRoZQotICAgICUgc3RydXQgaW4gXEVncm91cCwgc2luY2UgdGhlcmUgaXQgd291bGQgYmUgb24gYSBsaW5lIGJ5IGl0c2VsZi4KLSAgICAlIEhlbmNlIHRoaXMganVzdCBpbnNlcnRzIGEgc3RydXQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIGxpbmUuCi0gICAgXGV2ZXJ5cGFyID0ge1xzdHJ1dH0lCi0gICAgJQotICAgICUgU2luY2Ugd2UgaGF2ZSBhIHN0cnV0IG9uIGV2ZXJ5IGxpbmUsIHdlIGRvbid0IG5lZWQgYW55IG9mIFRlWCdzCi0gICAgJSBub3JtYWwgaW50ZXJsaW5lIHNwYWNpbmcuCi0gICAgXG9mZmludGVybGluZXNraXAKLSAgICAlCi0gICAgJSBPSywgYnV0IG5vdyB3ZSBoYXZlIHRvIGRvIHNvbWV0aGluZyBhYm91dCBibGFuawotICAgICUgbGluZXMgaW4gdGhlIGlucHV0IGluIEBleGFtcGxlLWxpa2UgZW52aXJvbm1lbnRzLCB3aGljaCBub3JtYWxseQotICAgICUganVzdCB0dXJuIGludG8gXGxpc3BwYXIsIHdoaWNoIHdpbGwgaW5zZXJ0IG5vIHNwYWNlIG5vdyB0aGF0IHdlJ3ZlCi0gICAgJSB0dXJuZWQgb2ZmIHRoZSBpbnRlcmxpbmUgc3BhY2UuICBTaW1wbGVzdCBpcyB0byBtYWtlIHRoZW0gYmUgYW4KLSAgICAlIGVtcHR5IHBhcmFncmFwaC4KLSAgICBcaWZ4XHBhclxsaXNwcGFyCi0gICAgICBcZWRlZlxwYXJ7XGxlYXZldm1vZGUgXHBhcn0lCi0gICAgICAlCi0gICAgICAlIFJlc2V0IF5eTSdzIGRlZmluaXRpb24gdG8gbmV3IGRlZmluaXRpb24gb2YgXHBhci4KLSAgICAgIFxvYmV5bGluZXMKLSAgICBcZmkKLSAgICAlCiAgICAgJSBEbyBAY29tbWVudCBzaW5jZSB3ZSBhcmUgY2FsbGVkIGluc2lkZSBhbiBlbnZpcm9ubWVudCBzdWNoIGFzCiAgICAgJSBAZXhhbXBsZSwgd2hlcmUgZWFjaCBlbmQtb2YtbGluZSBpbiB0aGUgaW5wdXQgY2F1c2VzIGFuCiAgICAgJSBlbmQtb2YtbGluZSBpbiB0aGUgb3V0cHV0LiAgV2UgZG9uJ3Qgd2FudCB0aGUgZW5kLW9mLWxpbmUgYWZ0ZXIKQEAgLTYzMCw2ICs2OTIsMzIgQEAKICAgICBcY29tbWVudAogfQogJQorJSBUaGUgXHZ0b3AgcHJvZHVjZXMgYSBib3ggd2l0aCBub3JtYWwgaGVpZ2h0IGFuZCBsYXJnZSBkZXB0aDsgdGh1cywgVGVYIHB1dHMKKyUgXGJhc2VsaW5lc2tpcCBnbHVlIGJlZm9yZSBpdCwgYW5kICh3aGVuIHRoZSBuZXh0IGxpbmUgb2YgdGV4dCBpcyBkb25lKQorJSBcbGluZXNraXAgZ2x1ZSBhZnRlciBpdC4gIFRodXMsIHNwYWNlIGJlbG93IGlzIG5vdCBxdWl0ZSBlcXVhbCB0byBzcGFjZQorJSBhYm92ZS4gIEJ1dCBpdCdzIHByZXR0eSBjbG9zZS4KK1xkZWZcRWdyb3VweyUKKyAgICAlIFRvIGdldCBjb3JyZWN0IGludGVybGluZSBzcGFjZSBiZXR3ZWVuIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGdyb3VwCisgICAgJSBhbmQgdGhlIGZpcnN0IGxpbmUgYWZ0ZXJ3YXJkcywgd2UgaGF2ZSB0byBwcm9wYWdhdGUgXHByZXZkZXB0aC4KKyAgICBcZW5kZ3JhZiAlIE5vdCBccGFyLCBhcyBpdCBtYXkgaGF2ZSBiZWVuIHNldCB0byBcbGlzcHBhci4KKyAgICBcZ2xvYmFsXGRpbWVuMSA9IFxwcmV2ZGVwdGgKKyAgXGVncm91cCAgICAgICAgICAgJSBFbmQgdGhlIFx2dG9wLgorICAlIFxkaW1lbjAgaXMgdGhlIHZlcnRpY2FsIHNpemUgb2YgdGhlIGdyb3VwJ3MgYm94LgorICBcZGltZW4wID0gXGh0XGdyb3VwYm94ICBcYWR2YW5jZVxkaW1lbjAgYnkgXGRwXGdyb3VwYm94CisgICUgXGRpbWVuMiBpcyBob3cgbXVjaCBzcGFjZSBpcyBsZWZ0IG9uIHRoZSBwYWdlIChtb3JlIG9yIGxlc3MpLgorICBcZGltZW4yID0gXHBhZ2VoZWlnaHQgICBcYWR2YW5jZVxkaW1lbjIgYnkgLVxwYWdldG90YWwKKyAgJSBpZiB0aGUgZ3JvdXAgZG9lc24ndCBmaXQgb24gdGhlIGN1cnJlbnQgcGFnZSwgYW5kIGl0J3MgYSBiaWcgYmlnCisgICUgZ3JvdXAsIGZvcmNlIGEgcGFnZSBicmVhay4KKyAgXGlmZGltIFxkaW1lbjAgPiBcZGltZW4yCisgICAgXGlmZGltIFxwYWdldG90YWwgPCBcdmZpbGxsaW1pdFxwYWdlaGVpZ2h0CisgICAgICBccGFnZQorICAgIFxmaQorICBcZmkKKyAgXGJveFxncm91cGJveAorICBccHJldmRlcHRoID0gXGRpbWVuMQorICBcY2hlY2tpbnNlcnRzCit9CislCiAlIFRlWCBwdXRzIGluIGFuIFxlc2NhcGVjaGFyIChpLmUuLCBgQCcpIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGhlbHAKICUgbWVzc2FnZSwgc28gdGhpcyBlbmRzIHVwIHByaW50aW5nIGBAZ3JvdXAgY2FuIG9ubHkgLi4uJy4KICUKQEAgLTY0MiwxMCArNzMwLDggQEAKIAogXG5ld2RpbWVuXG1pbCAgXG1pbD0wLjAwMWluCiAKLVxkZWZcbmVlZHtccGFyc2VhcmdcbmVlZHh9Ci0KICUgT2xkIGRlZmluaXRpb24tLWRpZG4ndCB3b3JrLgotJVxkZWZcbmVlZHggIzF7XHBhciAlCislXHBhcnNlYXJnZGVmXG5lZWR7XHBhciAlCiAlJSBUaGlzIG1ldGhvZCB0cmllcyB0byBtYWtlIFRlWCBicmVhayB0aGUgcGFnZSBuYXR1cmFsbHkKICUlIGlmIHRoZSBkZXB0aCBvZiB0aGUgYm94IGRvZXMgbm90IGZpdC4KICV7XGJhc2VsaW5lc2tpcD0wcHQlCkBAIC02NTMsNyArNzM5LDcgQEAKICVccHJldmRlcHRoPS0xMDAwcHQKICV9fQogCi1cZGVmXG5lZWR4IzF7JQorXHBhcnNlYXJnZGVmXG5lZWR7JQogICAlIEVuc3VyZSB2ZXJ0aWNhbCBtb2RlLCBzbyB3ZSBkb24ndCBtYWtlIGEgYmlnIGJveCBpbiB0aGUgbWlkZGxlIG9mIGEKICAgJSBwYXJhZ3JhcGguCiAgIFxwYXIKQEAgLTY5MiwzNyArNzc4LDExIEBACiAgIFxmaQogfQogCi0lIEBiciAgIGZvcmNlcyBwYXJhZ3JhcGggYnJlYWsKKyUgQGJyICAgZm9yY2VzIHBhcmFncmFwaCBicmVhayAoYW5kIGlzIHVuZG9jdW1lbnRlZCkuCiAKIFxsZXRcYnIgPSBccGFyCiAKLSUgQGRvdHN7fSBvdXRwdXQgYW4gZWxsaXBzaXMgdXNpbmcgdGhlIGN1cnJlbnQgZm9udC4KLSUgV2UgZG8gLjVlbSBwZXIgcGVyaW9kIHNvIHRoYXQgaXQgaGFzIHRoZSBzYW1lIHNwYWNpbmcgaW4gYSB0eXBld3JpdGVyCi0lIGZvbnQgYXMgdGhyZWUgYWN0dWFsIHBlcmlvZCBjaGFyYWN0ZXJzLgotJQotXGRlZlxkb3RzeyUKLSAgXGxlYXZldm1vZGUKLSAgXGhib3ggdG8gMS41ZW17JQotICAgIFxoc2tpcCAwcHQgcGx1cyAwLjI1ZmlsIG1pbnVzIDAuMjVmaWwKLSAgICAuXGhzcy5caHNzLiUKLSAgICBcaHNraXAgMHB0IHBsdXMgMC41ZmlsIG1pbnVzIDAuNWZpbAotICB9JQotfQotCi0lIEBlbmRkb3Rze30gaXMgYW4gZW5kLW9mLXNlbnRlbmNlIGVsbGlwc2lzLgotJQotXGRlZlxlbmRkb3RzeyUKLSAgXGxlYXZldm1vZGUKLSAgXGhib3ggdG8gMmVteyUKLSAgICBcaHNraXAgMHB0IHBsdXMgMC4yNWZpbCBtaW51cyAwLjI1ZmlsCi0gICAgLlxoc3MuXGhzcy5caHNzLiUKLSAgICBcaHNraXAgMHB0IHBsdXMgMC41ZmlsIG1pbnVzIDAuNWZpbAotICB9JQotICBcc3BhY2VmYWN0b3I9MzAwMAotfQotCi0KLSUgQHBhZ2UgICAgZm9yY2VzIHRoZSBzdGFydCBvZiBhIG5ldyBwYWdlCislIEBwYWdlIGZvcmNlcyB0aGUgc3RhcnQgb2YgYSBuZXcgcGFnZS4KICUKIFxkZWZccGFnZXtccGFyXHZmaWxsXHN1cGVyZWplY3R9CiAKQEAgLTczNCwxMyArNzk0LDExIEBACiBcbmV3c2tpcFxleGRlbnRhbW91bnQKIAogJSBUaGlzIGRlZm4gaXMgdXNlZCBpbnNpZGUgZmlsbCBlbnZpcm9ubWVudHMgc3VjaCBhcyBAZGVmdW4uCi1cZGVmXGV4ZGVudHtccGFyc2VhcmdcZXhkZW50eXl5fQotXGRlZlxleGRlbnR5eXkgIzF7e1xoZmlsXGJyZWFrXGhib3h7XGtlcm4gLVxleGRlbnRhbW91bnR7XHJtIzF9fVxoZmlsXGJyZWFrfX0KK1xwYXJzZWFyZ2RlZlxleGRlbnR7XGhmaWxcYnJlYWtcaGJveHtca2VybiAtXGV4ZGVudGFtb3VudHtccm0jMX19XGhmaWxcYnJlYWt9CiAKICUgVGhpcyBkZWZuIGlzIHVzZWQgaW5zaWRlIG5vZmlsbCBlbnZpcm9ubWVudHMgc3VjaCBhcyBAZXhhbXBsZS4KLVxkZWZcbm9maWxsZXhkZW50e1xwYXJzZWFyZ1xub2ZpbGxleGRlbnR5eXl9Ci1cZGVmXG5vZmlsbGV4ZGVudHl5eSAjMXt7XGFkdmFuY2UgXGxlZnRza2lwIGJ5IC1cZXhkZW50YW1vdW50Ci1cbGVmdGxpbmV7XGhza2lwXGxlZnRza2lwe1xybSMxfX19fQorXHBhcnNlYXJnZGVmXG5vZmlsbGV4ZGVudHt7XGFkdmFuY2UgXGxlZnRza2lwIGJ5IC1cZXhkZW50YW1vdW50CisgIFxsZWZ0bGluZXtcaHNraXBcbGVmdHNraXB7XHJtIzF9fX19CiAKICUgQGlubWFyZ2lue1dISUNIfXtURVhUfSBwdXRzIFRFWFQgaW4gdGhlIFdISUNIIG1hcmdpbiBuZXh0IHRvIHRoZSBjdXJyZW50CiAlIHBhcmFncmFwaC4gIEZvciBtb3JlIGdlbmVyYWwgcHVycG9zZXMsIHVzZSB0aGUgXG1hcmdpbiBpbnNlcnRpb24KQEAgLTc3MSwxMCArODI5LDEwIEBACiAlIEBpbm1hcmdpbntURVhUIFssIFJJR0hULVRFWFRdfQogJSAoaWYgUklHSFQtVEVYVCBpcyBnaXZlbiwgdXNlIFRFWFQgZm9yIGxlZnQgcGFnZSwgUklHSFQtVEVYVCBmb3IgcmlnaHQ7CiAlIGVsc2UgdXNlIFRFWFQgZm9yIGJvdGgpLgotJSAKKyUKIFxkZWZcaW5tYXJnaW4jMXtccGFyc2Vpbm1hcmdpbiAjMSwsXGZpbmlzaH0KIFxkZWZccGFyc2Vpbm1hcmdpbiMxLCMyLCMzXGZpbmlzaHslIG5vdCBwZXJmZWN0LCBidXQgYmV0dGVyIHRoYW4gbm90aGluZy4KLSAgXHNldGJveDAgPSBcaGJveHtcaWdub3Jlc3BhY2VzICMyfSUgCisgIFxzZXRib3gwID0gXGhib3h7XGlnbm9yZXNwYWNlcyAjMn0lCiAgIFxpZmRpbVx3ZDAgPiAwcHQKICAgICBcZGVmXGxlZnR0ZXh0eyMxfSUgIGhhdmUgYm90aCB0ZXh0cwogICAgIFxkZWZccmlnaHR0ZXh0eyMyfSUKQEAgLTc5Miw4ICs4NTAsMTkgQEAKIH0KIAogJSBAaW5jbHVkZSBmaWxlICAgIGluc2VydCB0ZXh0IG9mIHRoYXQgZmlsZSBhcyBpbnB1dC4KLSUgQWxsb3cgbm9ybWFsIGNoYXJhY3RlcnMgdGhhdCAgd2UgbWFrZSBhY3RpdmUgaW4gdGhlIGFyZ3VtZW50IChhIGZpbGUgbmFtZSkuCi1cZGVmXGluY2x1ZGV7XGJlZ2luZ3JvdXAKKyUKK1xkZWZcaW5jbHVkZXtccGFyc2Vhcmd1c2luZ1xmaWxlbmFtZWNhdGNvZGVzXGluY2x1ZGV6enp9CitcZGVmXGluY2x1ZGV6enojMXslCisgIFxwdXNodGhpc2ZpbGVzdGFjaworICBcZGVmXHRoaXNmaWxleyMxfSUKKyAgeyUKKyAgICBcbWFrZXZhbHVlZXhwYW5kYWJsZQorICAgIFxkZWZcdGVtcHtcaW5wdXQgIzEgfSUKKyAgICBcZXhwYW5kYWZ0ZXIKKyAgfVx0ZW1wCisgIFxwb3B0aGlzZmlsZXN0YWNrCit9CitcZGVmXGZpbGVuYW1lY2F0Y29kZXN7JQogICBcY2F0Y29kZWBcXD1cb3RoZXIKICAgXGNhdGNvZGVgfj1cb3RoZXIKICAgXGNhdGNvZGVgXj1cb3RoZXIKQEAgLTgwMiwzMyArODcxLDUwIEBACiAgIFxjYXRjb2RlYDw9XG90aGVyCiAgIFxjYXRjb2RlYD49XG90aGVyCiAgIFxjYXRjb2RlYCs9XG90aGVyCi0gIFxwYXJzZWFyZ1xpbmNsdWRlenp6fQotJSBSZXN0b3JlIGFjdGl2ZSBjaGFycyBmb3IgaW5jbHVkZWQgZmlsZS4KLVxkZWZcaW5jbHVkZXp6eiMxe1xlbmRncm91cFxiZWdpbmdyb3VwCi0gICUgUmVhZCB0aGUgaW5jbHVkZWQgZmlsZSBpbiBhIGdyb3VwIHNvIG5lc3RlZCBAaW5jbHVkZSdzIHdvcmsuCi0gIFxkZWZcdGhpc2ZpbGV7IzF9JQotICBcbGV0XHZhbHVlPVxleHBhbmRhYmxldmFsdWUKLSAgXGlucHV0XHRoaXNmaWxlCi1cZW5kZ3JvdXB9CisgIFxjYXRjb2RlYC09XG90aGVyCit9CisKK1xkZWZccHVzaHRoaXNmaWxlc3RhY2t7JQorICBcZXhwYW5kYWZ0ZXJccHVzaHRoaXNmaWxlc3RhY2tYXHBvcHRoaXNmaWxlc3RhY2tcU3RhY2tUZXJtCit9CitcZGVmXHB1c2h0aGlzZmlsZXN0YWNrWHslCisgIFxleHBhbmRhZnRlclxwdXNodGhpc2ZpbGVzdGFja1lcdGhpc2ZpbGVcU3RhY2tUZXJtCit9CitcZGVmXHB1c2h0aGlzZmlsZXN0YWNrWSAjMVxTdGFja1Rlcm0gIzJcU3RhY2tUZXJtIHslCisgIFxnZGVmXHBvcHRoaXNmaWxlc3RhY2t7XGdkZWZcdGhpc2ZpbGV7IzF9XGdkZWZccG9wdGhpc2ZpbGVzdGFja3sjMn19JQorfQorCitcZGVmXHBvcHRoaXNmaWxlc3RhY2t7XGVycnRoaXNmaWxlc3RhY2tlbXB0eX0KK1xkZWZcZXJydGhpc2ZpbGVzdGFja2VtcHR5e1xlcnJtZXNzYWdle0ludGVybmFsIGVycm9yOgorICB0aGUgc3RhY2sgb2YgZmlsZW5hbWVzIGlzIGVtcHR5Ln19CiAKIFxkZWZcdGhpc2ZpbGV7fQogCiAlIEBjZW50ZXIgbGluZQogJSBvdXRwdXRzIHRoYXQgbGluZSwgY2VudGVyZWQuCiAlCi1cZGVmXGNlbnRlcntccGFyc2VhcmdcZG9jZW50ZXJ9Ci1cZGVmXGRvY2VudGVyIzF7eyUKLSAgXGlmaG1vZGUgXGhmaWxcYnJlYWsgXGZpCi0gIFxhZHZhbmNlXGhzaXplIGJ5IC1cbGVmdHNraXAKLSAgXGFkdmFuY2VcaHNpemUgYnkgLVxyaWdodHNraXAKLSAgXGxpbmV7XGhmaWwgXGlnbm9yZXNwYWNlcyMxXHVuc2tpcCBcaGZpbH0lCi0gIFxpZmhtb2RlIFxicmVhayBcZmkKLX19CitccGFyc2VhcmdkZWZcY2VudGVyeyUKKyAgXGlmaG1vZGUKKyAgICBcbGV0XG5leHRcY2VudGVySAorICBcZWxzZQorICAgIFxsZXRcbmV4dFxjZW50ZXJWCisgIFxmaQorICBcbmV4dHtcaGZpbCBcaWdub3Jlc3BhY2VzIzFcdW5za2lwIFxoZmlsfSUKK30KK1xkZWZcY2VudGVySCMxeyUKKyAgeyUKKyAgICBcaGZpbFxicmVhaworICAgIFxhZHZhbmNlXGhzaXplIGJ5IC1cbGVmdHNraXAKKyAgICBcYWR2YW5jZVxoc2l6ZSBieSAtXHJpZ2h0c2tpcAorICAgIFxsaW5leyMxfSUKKyAgICBcYnJlYWsKKyAgfSUKK30KK1xkZWZcY2VudGVyViMxe1xsaW5le1xrZXJuXGxlZnRza2lwICMxXGtlcm5ccmlnaHRza2lwfX0KIAogJSBAc3AgbiAgIG91dHB1dHMgbiBsaW5lcyBvZiB2ZXJ0aWNhbCBzcGFjZQogCi1cZGVmXHNwe1xwYXJzZWFyZ1xzcHh4eH0KLVxkZWZcc3B4eHggIzF7XHZza2lwICMxXGJhc2VsaW5lc2tpcH0KK1xwYXJzZWFyZ2RlZlxzcHtcdnNraXAgIzFcYmFzZWxpbmVza2lwfQogCiAlIEBjb21tZW50IC4uLmxpbmUgd2hpY2ggaXMgaWdub3JlZC4uLgogJSBAYyBpcyB0aGUgc2FtZSBhcyBAY29tbWVudApAQCAtODQzLDEzICs5MjksMTMgQEAKIAogJSBAcGFyYWdyYXBoaW5kZW50IE5DSEFSUwogJSBXZSdsbCB1c2UgZW1zIGZvciBOQ0hBUlMsIGNsb3NlIGVub3VnaC4KLSUgV2UgY2Fubm90IGltcGxlbWVudCBAcGFyYWdyYXBoaW5kZW50IGFzaXMsIHRob3VnaC4KLSUgCislIE5DSEFSUyBjYW4gYWxzbyBiZSB0aGUgd29yZCBgYXNpcycgb3IgYG5vbmUnLgorJSBXZSBjYW5ub3QgZmVhc2libHkgaW1wbGVtZW50IEBwYXJhZ3JhcGhpbmRlbnQgYXNpcywgdGhvdWdoLgorJQogXGRlZlxhc2lzd29yZHthc2lzfSAlIG5vIHRyYW5zbGF0aW9uLCB0aGVzZSBhcmUga2V5d29yZHMKIFxkZWZcbm9uZXdvcmR7bm9uZX0KICUKLVxkZWZccGFyYWdyYXBoaW5kZW50e1xwYXJzZWFyZ1xkb3BhcmFncmFwaGluZGVudH0KLVxkZWZcZG9wYXJhZ3JhcGhpbmRlbnQjMXslCitccGFyc2VhcmdkZWZccGFyYWdyYXBoaW5kZW50eyUKICAgXGRlZlx0ZW1weyMxfSUKICAgXGlmeFx0ZW1wXGFzaXN3b3JkCiAgIFxlbHNlCkBAIC04NjYsOCArOTUyLDcgQEAKICUgV2UnbGwgdXNlIGVtcyBmb3IgTkNIQVJTIGxpa2UgQHBhcmFncmFwaGluZGVudC4KICUgSXQgc2VlbXMgQGV4YW1wbGVpbmRlbnQgYXNpcyBpc24ndCBuZWNlc3NhcnksIGJ1dAogJSBJIHByZXNlcnZlIGl0IHRvIG1ha2UgaXQgc2ltaWxhciB0byBAcGFyYWdyYXBoaW5kZW50LgotXGRlZlxleGFtcGxlaW5kZW50e1xwYXJzZWFyZ1xkb2V4YW1wbGVpbmRlbnR9Ci1cZGVmXGRvZXhhbXBsZWluZGVudCMxeyUKK1xwYXJzZWFyZ2RlZlxleGFtcGxlaW5kZW50eyUKICAgXGRlZlx0ZW1weyMxfSUKICAgXGlmeFx0ZW1wXGFzaXN3b3JkCiAgIFxlbHNlCkBAIC04NzksNDggKzk2NCw5NyBAQAogICBcZmkKIH0KIAorJSBAZmlyc3RwYXJhZ3JhcGhpbmRlbnQgV09SRAorJSBJZiBXT1JEIGlzIGBub25lJywgdGhlbiBzdXBwcmVzcyBpbmRlbnRhdGlvbiBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoCislIGFmdGVyIGEgc2VjdGlvbiBoZWFkaW5nLiAgSWYgV09SRCBpcyBgaW5zZXJ0JywgdGhlbiBkbyBpbmRlbnQgYXQgc3VjaAorJSBwYXJhZ3JhcGhzLgorJQorJSBUaGUgcGFyYWdyYXBoIGluZGVudGF0aW9uIGlzIHN1cHByZXNzZWQgb3Igbm90IGJ5IGNhbGxpbmcKKyUgXHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnQsIHdoaWNoIHRoZSBzZWN0aW9uaW5nIGNvbW1hbmRzIGRvLgorJSBXZSBzd2l0Y2ggdGhlIGRlZmluaXRpb24gb2YgdGhpcyBiYWNrIGFuZCBmb3J0aCBhY2NvcmRpbmcgdG8gV09SRC4KKyUgQnkgZGVmYXVsdCwgd2Ugc3VwcHJlc3MgaW5kZW50YXRpb24uCislCitcZGVmXHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnR7XGRvc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudH0KK1xkZWZcaW5zZXJ0d29yZHtpbnNlcnR9CislCitccGFyc2VhcmdkZWZcZmlyc3RwYXJhZ3JhcGhpbmRlbnR7JQorICBcZGVmXHRlbXB7IzF9JQorICBcaWZ4XHRlbXBcbm9uZXdvcmQKKyAgICBcbGV0XHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnQgPSBcZG9zdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50CisgIFxlbHNlXGlmeFx0ZW1wXGluc2VydHdvcmQKKyAgICBcbGV0XHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnQgPSBccmVsYXgKKyAgXGVsc2UKKyAgICBcZXJyaGVscCA9IFxFTXNpbXBsZQorICAgIFxlcnJtZXNzYWdle1Vua25vd24gQGZpcnN0cGFyYWdyYXBoaW5kZW50IG9wdGlvbiBgXHRlbXAnfSUKKyAgXGZpXGZpCit9CisKKyUgSGVyZSBpcyBob3cgd2UgYWN0dWFsbHkgc3VwcHJlc3MgaW5kZW50YXRpb24uICBSZWRlZmluZSBcZXZlcnlwYXIgdG8KKyUgXGtlcm4gYmFja3dhcmRzIGJ5IFxwYXJpbmRlbnQsIGFuZCB0aGVuIHJlc2V0IGl0c2VsZiB0byBlbXB0eS4KKyUKKyUgV2UgYWxzbyBtYWtlIFxpbmRlbnQgaXRzZWxmIG5vdCBhY3R1YWxseSBkbyBhbnl0aGluZyB1bnRpbCB0aGUgbmV4dAorJSBwYXJhZ3JhcGguCislCitcZ2RlZlxkb3N1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnR7JQorICBcZ2RlZlxpbmRlbnR7JQorICAgIFxyZXN0b3JlZmlyc3RwYXJhZ3JhcGhpbmRlbnQKKyAgICBcaW5kZW50CisgIH0lCisgIFxnZGVmXG5vaW5kZW50eyUKKyAgICBccmVzdG9yZWZpcnN0cGFyYWdyYXBoaW5kZW50CisgICAgXG5vaW5kZW50CisgIH0lCisgIFxnbG9iYWxcZXZlcnlwYXIgPSB7JQorICAgIFxrZXJuIC1ccGFyaW5kZW50CisgICAgXHJlc3RvcmVmaXJzdHBhcmFncmFwaGluZGVudAorICB9JQorfQorCitcZ2RlZlxyZXN0b3JlZmlyc3RwYXJhZ3JhcGhpbmRlbnR7JQorICBcZ2xvYmFsIFxsZXQgXGluZGVudCA9IFxwdGV4aW5kZW50CisgIFxnbG9iYWwgXGxldCBcbm9pbmRlbnQgPSBccHRleG5vaW5kZW50CisgIFxnbG9iYWwgXGV2ZXJ5cGFyID0ge30lCit9CisKKwogJSBAYXNpcyBqdXN0IHlpZWxkcyBpdHMgYXJndW1lbnQuICBVc2VkIHdpdGggQHRhYmxlLCBmb3IgZXhhbXBsZS4KICUKIFxkZWZcYXNpcyMxeyMxfQogCiAlIEBtYXRoIG91dHB1dHMgaXRzIGFyZ3VtZW50IGluIG1hdGggbW9kZS4KLSUgV2UgZG9uJ3QgdXNlICQncyBkaXJlY3RseSBpbiB0aGUgZGVmaW5pdGlvbiBvZiBcbWF0aCBiZWNhdXNlIHdlIG5lZWQKLSUgdG8gc2V0IGNhdGNvZGVzIGFjY29yZGluZyB0byBwbGFpbiBUZVggZmlyc3QsIHRvIGFsbG93IGZvciBzdWJzY3JpcHRzLAotJSBzdXBlcnNjcmlwdHMsIHNwZWNpYWwgbWF0aCBjaGFycywgZXRjLgotJSAKLVxsZXRcaW1wbGljaXRtYXRoID0gJCUkIGZvbnQtbG9jayBmaXgKICUKICUgT25lIGNvbXBsaWNhdGlvbjogXyB1c3VhbGx5IG1lYW5zIHN1YnNjcmlwdHMsIGJ1dCBpdCBjb3VsZCBhbHNvIG1lYW4KICUgYW4gYWN0dWFsIF8gY2hhcmFjdGVyLCBhcyBpbiBAbWF0aHtAdmFye3NvbWVfdmFyaWFibGV9ICsgMX0uICBTbyBtYWtlCi0lIF8gd2l0aGluIEBtYXRoIGJlIGFjdGl2ZSAobWF0aGNvZGUgIjgwMDApLCBhbmQgZGlzdGluZ3Vpc2ggYnkgc2VlaW5nCi0lIGlmIHRoZSBjdXJyZW50IGZhbWlseSBpcyBcc2xmYW0sIHdoaWNoIGlzIHdoYXQgQHZhciB1c2VzLgotJSAKLXtcY2F0Y29kZVx1bmRlckNoYXIgPSBcYWN0aXZlCi1cZ2RlZlxtYXRodW5kZXJzY29yZXslCi0gIFxjYXRjb2RlXHVuZGVyQ2hhcj1cYWN0aXZlCi0gIFxkZWZfe1xpZm51bVxmYW09XHNsZmFtIFxfXGVsc2Vcc2JcZml9JQotfX0KLSUKKyUgXyBhY3RpdmUsIGFuZCBkaXN0aW5ndWlzaCBieSBzZWVpbmcgaWYgdGhlIGN1cnJlbnQgZmFtaWx5IGlzIFxzbGZhbSwKKyUgd2hpY2ggaXMgd2hhdCBAdmFyIHVzZXMuCit7CisgIFxjYXRjb2RlXHVuZGVyQ2hhciA9IFxhY3RpdmUKKyAgXGdkZWZcbWF0aHVuZGVyc2NvcmV7JQorICAgIFxjYXRjb2RlXHVuZGVyQ2hhcj1cYWN0aXZlCisgICAgXGRlZl97XGlmbnVtXGZhbT1cc2xmYW0gXF9cZWxzZVxzYlxmaX0lCisgIH0KK30KICUgQW5vdGhlciBjb21wbGljYXRpb246IHdlIHdhbnQgXFwgKGFuZCBAXCkgdG8gb3V0cHV0IGEgXCBjaGFyYWN0ZXIuCiAlIEZZSSwgcGxhaW4udGV4IHVzZXMgXFwgYXMgYSB0ZW1wb3JhcnkgY29udHJvbCBzZXF1ZW5jZSAod2h5PyksIGJ1dAogJSB0aGlzIGlzIG5vdCBhZHZlcnRpc2VkIGFuZCB3ZSBkb24ndCBjYXJlLiAgVGV4aW5mbyBkb2VzIG5vdAogJSBvdGhlcndpc2UgZGVmaW5lIEBcLgotJSAKKyUKICUgVGhlIFxtYXRoY2hhciBpcyBjbGFzcz0wPW9yZGluYXJ5LCBmYW1pbHk9Nz10dGZhbSwgcG9zaXRpb249NUM9XC4KIFxkZWZcbWF0aGJhY2tzbGFzaHtcaWZudW1cZmFtPVx0dGZhbSBcbWF0aGNoYXIiMDc1QyBcZWxzZVxiYWNrc2xhc2ggXGZpfQogJQogXGRlZlxtYXRoeyUKICAgXHRleAotICBcbWF0aGNvZGVgXF89IjgwMDAgXG1hdGh1bmRlcnNjb3JlCisgIFxtYXRodW5kZXJzY29yZQogICBcbGV0XFwgPSBcbWF0aGJhY2tzbGFzaAogICBcbWF0aGFjdGl2ZQotICBcaW1wbGljaXRtYXRoXGZpbmlzaG1hdGh9Ci1cZGVmXGZpbmlzaG1hdGgjMXsjMVxpbXBsaWNpdG1hdGhcRXRleH0KKyAgJFxmaW5pc2htYXRoCit9CitcZGVmXGZpbmlzaG1hdGgjMXsjMSRcZW5kZ3JvdXB9ICAlIENsb3NlIHRoZSBncm91cCBvcGVuZWQgYnkgXHRleC4KIAogJSBTb21lIGFjdGl2ZSBjaGFyYWN0ZXJzIChzdWNoIGFzIDwpIGFyZSBzcGFjZWQgZGlmZmVyZW50bHkgaW4gbWF0aC4KLSUgV2UgaGF2ZSB0byByZXNldCB0aGVpciBkZWZpbml0aW9ucyBpbiBjYXNlIHRoZSBAbWF0aCB3YXMgYW4KLSUgYXJndW1lbnQgdG8gYSBjb21tYW5kIHdoaWNoIHNldCB0aGUgY2F0Y29kZXMgKHN1Y2ggYXMgQGl0ZW0gb3IgQHNlY3Rpb24pLgotJSAKKyUgV2UgaGF2ZSB0byByZXNldCB0aGVpciBkZWZpbml0aW9ucyBpbiBjYXNlIHRoZSBAbWF0aCB3YXMgYW4gYXJndW1lbnQKKyUgdG8gYSBjb21tYW5kIHdoaWNoIHNldHMgdGhlIGNhdGNvZGVzIChzdWNoIGFzIEBpdGVtIG9yIEBzZWN0aW9uKS4KKyUKIHsKICAgXGNhdGNvZGVgXiA9IFxhY3RpdmUKICAgXGNhdGNvZGVgPCA9IFxhY3RpdmUKQEAgLTkzNSw4ICsxMDY5LDMzIEBACiB9CiAKICUgQGJ1bGxldCBhbmQgQG1pbnVzIG5lZWQgdGhlIHNhbWUgdHJlYXRtZW50IGFzIEBtYXRoLCBqdXN0IGFib3ZlLgotXGRlZlxidWxsZXR7XGltcGxpY2l0bWF0aFxwdGV4YnVsbGV0XGltcGxpY2l0bWF0aH0KLVxkZWZcbWludXN7XGltcGxpY2l0bWF0aC1caW1wbGljaXRtYXRofQorXGRlZlxidWxsZXR7JFxwdGV4YnVsbGV0JH0KK1xkZWZcbWludXN7JC0kfQorCislIEBkb3Rze30gb3V0cHV0cyBhbiBlbGxpcHNpcyB1c2luZyB0aGUgY3VycmVudCBmb250LgorJSBXZSBkbyAuNWVtIHBlciBwZXJpb2Qgc28gdGhhdCBpdCBoYXMgdGhlIHNhbWUgc3BhY2luZyBpbiBhIHR5cGV3cml0ZXIKKyUgZm9udCBhcyB0aHJlZSBhY3R1YWwgcGVyaW9kIGNoYXJhY3RlcnMuCislCitcZGVmXGRvdHN7JQorICBcbGVhdmV2bW9kZQorICBcaGJveCB0byAxLjVlbXslCisgICAgXGhza2lwIDBwdCBwbHVzIDAuMjVmaWwKKyAgICAuXGhmaWwuXGhmaWwuJQorICAgIFxoc2tpcCAwcHQgcGx1cyAwLjVmaWwKKyAgfSUKK30KKworJSBAZW5kZG90c3t9IGlzIGFuIGVuZC1vZi1zZW50ZW5jZSBlbGxpcHNpcy4KKyUKK1xkZWZcZW5kZG90c3slCisgIFxkb3RzCisgIFxzcGFjZWZhY3Rvcj0zMDAwCit9CisKKyUgQGNvbW1he30gaXMgc28gY29tbWFzIGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRleHQgd2l0aG91dCBtZXNzaW5nIHVwCislIFRleGluZm8ncyBwYXJzaW5nLgorJSAKK1xsZXRcY29tbWEgPSAsCiAKICUgQHJlZmlsbCBpcyBhIG5vLW9wLgogXGxldFxyZWZpbGw9XHJlbGF4CkBAIC05NTIsMjAgKzExMTEsMjAgQEAKICUgU28gb3BlbiBoZXJlIHRoZSBmaWxlcyB3ZSBuZWVkIHRvIGhhdmUgb3BlbiB3aGlsZSByZWFkaW5nIHRoZSBpbnB1dC4KICUgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBtYWtlIGEgLmZtdCBmaWxlIGZvciB0ZXhpbmZvLgogXGRlZlxzZXRmaWxlbmFtZXslCisgICBcZml4YmFja3NsYXNoICAlIFR1cm4gb2ZmIGhhY2sgdG8gc3dhbGxvdyBgXGlucHV0IHRleGluZm8nLgogICAgXGlmbGlua3MKLSAgICAgXHJlYWRhdXhmaWxlCisgICAgIFx0cnlhdXhmaWxlCisgICAgICUgT3BlbiB0aGUgbmV3IGF1eCBmaWxlLiAgVGVYIHdpbGwgY2xvc2UgaXQgYXV0b21hdGljYWxseSBhdCBleGl0LgorICAgICBcaW1tZWRpYXRlXG9wZW5vdXRcYXV4ZmlsZT1cam9ibmFtZS5hdXgKICAgIFxmaSAlIFxvcGVuaW5kaWNlcyBuZWVkcyB0byBkbyBzb21lIHdvcmsgaW4gYW55IGNhc2UuCiAgICBcb3BlbmluZGljZXMKLSAgIFxmaXhiYWNrc2xhc2ggICUgVHVybiBvZmYgaGFjayB0byBzd2FsbG93IGBcaW5wdXQgdGV4aW5mbycuCi0gICBcZ2xvYmFsXGxldFxzZXRmaWxlbmFtZT1cY29tbWVudCAlIElnbm9yZSBleHRyYSBAc2V0ZmlsZW5hbWUgY21kcy4KKyAgIFxsZXRcc2V0ZmlsZW5hbWU9XGNvbW1lbnQgJSBJZ25vcmUgZXh0cmEgQHNldGZpbGVuYW1lIGNtZHMuCiAgICAlCiAgICAlIElmIHRleGluZm8uY25mIGlzIHByZXNlbnQgb24gdGhlIHN5c3RlbSwgcmVhZCBpdC4KICAgICUgVXNlZnVsIGZvciBzaXRlLXdpZGUgQGFmb3VycGFwZXIsIGV0Yy4KLSAgICUgSnVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLCBjbG9zZSB0aGUgaW5wdXQgc3RyZWFtIGJlZm9yZSB0aGUgXGlucHV0LgogICAgXG9wZW5pbiAxIHRleGluZm8uY25mCi0gICBcaWZlb2YxIFxsZXRcdGVtcD1ccmVsYXggXGVsc2UgXGRlZlx0ZW1we1xpbnB1dCB0ZXhpbmZvLmNuZiB9XGZpCi0gICBcY2xvc2VpbjEKLSAgIFx0ZW1wCisgICBcaWZlb2YgMSBcZWxzZSBcaW5wdXQgdGV4aW5mby5jbmYgXGZpCisgICBcY2xvc2VpbiAxCiAgICAlCiAgICBcY29tbWVudCAlIElnbm9yZSB0aGUgYWN0dWFsIGZpbGVuYW1lLgogfQpAQCAtMTAxMiw2ICsxMTcxLDcgQEAKICAgXHBkZnRydWUKICAgXHBkZm91dHB1dCA9IDEKICAgXGlucHV0IHBkZmNvbG9yCisgIFxwZGZjYXRhbG9ney9QYWdlTW9kZSAvVXNlT3V0bGluZXN9JQogICBcZGVmXGRvcGRmaW1hZ2UjMSMyIzN7JQogICAgIFxkZWZcaW1hZ2V3aWR0aHsjMn0lCiAgICAgXGRlZlxpbWFnZWhlaWdodHsjM30lCkBAIC0xMDMyLDcgKzExOTIsMTMgQEAKICAgICBcaWZudW1ccGRmdGV4dmVyc2lvbiA8IDE0IFxlbHNlCiAgICAgICBccGRmcmVmeGltYWdlIFxwZGZsYXN0eGltYWdlCiAgICAgXGZpfQotICBcZGVmXHBkZm1rZGVzdCMxe3tcbm9ybWFsdHVybm9mZmFjdGl2ZSBccGRmZGVzdCBuYW1leyMxfSB4eXp9fQorICBcZGVmXHBkZm1rZGVzdCMxe3slCisgICAgJSBXZSBoYXZlIHRvIHNldCBkdW1taWVzIHNvIGNvbW1hbmRzIHN1Y2ggYXMgQGNvZGUgaW4gYSBzZWN0aW9uIHRpdGxlCisgICAgJSBhcmVuJ3QgZXhwYW5kZWQuCisgICAgXGF0ZHVtbWllcworICAgIFxub3JtYWx0dXJub2ZmYWN0aXZlCisgICAgXHBkZmRlc3QgbmFtZXsjMX0geHl6JQorICB9fQogICBcZGVmXHBkZm1rcGduIzF7IzF9CiAgIFxsZXRcbGlua2NvbG9yID0gXEJsdWUgICUgd2FzIEN5YW4sIGJ1dCB0aGF0IHNlZW1zIGxpZ2h0PwogICBcZGVmXGVuZGxpbmt7XEJsYWNrXHBkZmVuZGxpbmt9CkBAIC0xMDQxLDQ4ICsxMjA3LDk0IEBACiAgIFxkZWZcZXhwbnVtYmVyIzF7XGV4cGFuZGFmdGVyXGlmeFxjc25hbWUjMVxlbmRjc25hbWVccmVsYXggMCUKICAgICBcZWxzZSBcY3NuYW1lIzFcZW5kY3NuYW1lIFxmaX0KICAgXGRlZlxhZHZhbmNlbnVtYmVyIzF7XHRlbXBudW09XGV4cG51bWJlcnsjMX1ccmVsYXgKLSAgICBcYWR2YW5jZVx0ZW1wbnVtIGJ5MQorICAgIFxhZHZhbmNlXHRlbXBudW0gYnkgMQogICAgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSMxXGVuZGNzbmFtZXtcdGhlXHRlbXBudW19fQotICBcZGVmXHBkZm1ha2VvdXRsaW5lc3t7JQotICAgIFxvcGVuaW4gMSBcam9ibmFtZS50b2MKLSAgICBcaWZlb2YgMVxlbHNlXGJlZ2luZ3JvdXAKLSAgICAgIFxjbG9zZWluIDEgCi0gICAgICAlIFRoYW5oJ3MgaGFjayAvIHByb3BlciBicmFjZXMgaW4gYm9va21hcmtzICAKKyAgJQorICAlICMxIGlzIHRoZSBzZWN0aW9uIHRleHQuICAjMiBpcyB0aGUgcGRmIGV4cHJlc3Npb24gZm9yIHRoZSBudW1iZXIKKyAgJSBvZiBzdWJlbnRyaWVzIChvciBlbXB0eSwgZm9yIHN1YnN1YnNlY3Rpb25zKS4gICMzIGlzIHRoZSBub2RlCisgICUgdGV4dCwgd2hpY2ggbWlnaHQgYmUgZW1wdHkgaWYgdGhpcyB0b2MgZW50cnkgaGFkIG5vCisgICUgY29ycmVzcG9uZGluZyBub2RlLiAgIzQgaXMgdGhlIHBhZ2UgbnVtYmVyLgorICAlIAorICBcZGVmXGRvcGRmb3V0bGluZSMxIzIjMyM0eyUKKyAgICAlIEdlbmVyYXRlIGEgbGluayB0byB0aGUgbm9kZSB0ZXh0IGlmIHRoYXQgZXhpc3RzOyBlbHNlLCB1c2UgdGhlCisgICAgJSBwYWdlIG51bWJlci4gIFdlIGNvdWxkIGdlbmVyYXRlIGEgZGVzdGluYXRpb24gZm9yIHRoZSBzZWN0aW9uCisgICAgJSB0ZXh0IGluIHRoZSBjYXNlIHdoZXJlIGEgc2VjdGlvbiBoYXMgbm8gbm9kZSwgYnV0IGl0IGRvZXNuJ3QKKyAgICAlIHNlZW0gd29ydGh3aGlsZSwgc2luY2UgbW9zdCBkb2N1bWVudHMgYXJlIG5vcm1hbGx5IHN0cnVjdHVyZWQuCisgICAgXGRlZlxwZGZvdXRsaW5lZGVzdHsjM30lCisgICAgXGlmeFxwZGZvdXRsaW5lZGVzdFxlbXB0eSBcZGVmXHBkZm91dGxpbmVkZXN0eyM0fVxmaQorICAgICUKKyAgICBccGRmb3V0bGluZSBnb3RvIG5hbWV7XHBkZm1rcGdue1xwZGZvdXRsaW5lZGVzdH19IzJ7IzF9JQorICB9CisgICUKKyAgXGRlZlxwZGZtYWtlb3V0bGluZXN7JQorICAgIFxiZWdpbmdyb3VwCisgICAgICAlIFRoYW5oJ3MgaGFjayAvIHByb3BlciBicmFjZXMgaW4gYm9va21hcmtzCiAgICAgICBcZWRlZlxteWxicmFjZXtcaWZ0cnVlIFxzdHJpbmd7XGVsc2V9XGZpfVxsZXRcez1cbXlsYnJhY2UKICAgICAgIFxlZGVmXG15cmJyYWNle1xpZmZhbHNle1xlbHNlXHN0cmluZ31cZml9XGxldFx9PVxteXJicmFjZQogICAgICAgJQotICAgICAgXGRlZlxjaGFwZW50cnkgIyMxIyMyIyMze30KLSAgICAgIFxkZWZcc2VjZW50cnkgIyMxIyMyIyMzIyM0e1xhZHZhbmNlbnVtYmVye2NoYXAjIzJ9fQotICAgICAgXGRlZlxzdWJzZWNlbnRyeSAjIzEjIzIjIzMjIzQjIzV7XGFkdmFuY2VudW1iZXJ7c2VjIyMyLiMjM319Ci0gICAgICBcZGVmXHN1YnN1YnNlY2VudHJ5ICMjMSMjMiMjMyMjNCMjNSMjNntcYWR2YW5jZW51bWJlcntzdWJzZWMjIzIuIyMzLiMjNH19Ci0gICAgICBcbGV0XGFwcGVuZGl4ZW50cnkgPSBcY2hhcGVudHJ5Ci0gICAgICBcbGV0XHVubnVtYmNoYXBlbnRyeSA9IFxjaGFwZW50cnkKLSAgICAgIFxsZXRcdW5udW1ic2VjZW50cnkgPSBcc2VjZW50cnkKLSAgICAgIFxsZXRcdW5udW1ic3Vic2VjZW50cnkgPSBcc3Vic2VjZW50cnkKLSAgICAgIFxsZXRcdW5udW1ic3Vic3Vic2VjZW50cnkgPSBcc3Vic3Vic2VjZW50cnkKLSAgICAgIFxpbnB1dCBcam9ibmFtZS50b2MKLSAgICAgIFxkZWZcY2hhcGVudHJ5ICMjMSMjMiMjM3slCi0gICAgICAgIFxwZGZvdXRsaW5lIGdvdG8gbmFtZXtccGRmbWtwZ257IyMzfX1jb3VudC1cZXhwbnVtYmVye2NoYXAjIzJ9eyMjMX19Ci0gICAgICBcZGVmXHNlY2VudHJ5ICMjMSMjMiMjMyMjNHslCi0gICAgICAgIFxwZGZvdXRsaW5lIGdvdG8gbmFtZXtccGRmbWtwZ257IyM0fX1jb3VudC1cZXhwbnVtYmVye3NlYyMjMi4jIzN9eyMjMX19Ci0gICAgICBcZGVmXHN1YnNlY2VudHJ5ICMjMSMjMiMjMyMjNCMjNXslCi0gICAgICAgIFxwZGZvdXRsaW5lIGdvdG8gbmFtZXtccGRmbWtwZ257IyM1fX1jb3VudC1cZXhwbnVtYmVye3N1YnNlYyMjMi4jIzMuIyM0fXsjIzF9fQotICAgICAgXGRlZlxzdWJzdWJzZWNlbnRyeSAjIzEjIzIjIzMjIzQjIzUjIzZ7JQotICAgICAgICBccGRmb3V0bGluZSBnb3RvIG5hbWV7XHBkZm1rcGdueyMjNn19eyMjMX19Ci0gICAgICBcbGV0XGFwcGVuZGl4ZW50cnkgPSBcY2hhcGVudHJ5Ci0gICAgICBcbGV0XHVubnVtYmNoYXBlbnRyeSA9IFxjaGFwZW50cnkKLSAgICAgIFxsZXRcdW5udW1ic2VjZW50cnkgPSBcc2VjZW50cnkKLSAgICAgIFxsZXRcdW5udW1ic3Vic2VjZW50cnkgPSBcc3Vic2VjZW50cnkKLSAgICAgIFxsZXRcdW5udW1ic3Vic3Vic2VjZW50cnkgPSBcc3Vic3Vic2VjZW50cnkKKyAgICAgICUgUmVhZCB0b2Mgc2lsZW50bHksIHRvIGdldCBjb3VudHMgb2Ygc3ViZW50cmllcyBmb3IgXHBkZm91dGxpbmUuCisgICAgICBcZGVmXG51bWNoYXBlbnRyeSMjMSMjMiMjMyMjNHslCisJXGRlZlx0aGlzY2hhcG51bXsjIzJ9JQorCVxsZXRcdGhpc3NlY251bVxlbXB0eQorCVxsZXRcdGhpc3N1YnNlY251bVxlbXB0eQorICAgICAgfSUKKyAgICAgIFxkZWZcbnVtc2VjZW50cnkjIzEjIzIjIzMjIzR7JQorCVxhZHZhbmNlbnVtYmVye2NoYXBcdGhpc2NoYXBudW19JQorCVxkZWZcdGhpc3NlY251bXsjIzJ9JQorCVxsZXRcdGhpc3N1YnNlY251bVxlbXB0eQorICAgICAgfSUKKyAgICAgIFxkZWZcbnVtc3Vic2VjZW50cnkjIzEjIzIjIzMjIzR7JQorCVxhZHZhbmNlbnVtYmVye3NlY1x0aGlzc2VjbnVtfSUKKwlcZGVmXHRoaXNzdWJzZWNudW17IyMyfSUKKyAgICAgIH0lCisgICAgICBcZGVmXG51bXN1YnN1YnNlY2VudHJ5IyMxIyMyIyMzIyM0eyUKKwlcYWR2YW5jZW51bWJlcntzdWJzZWNcdGhpc3N1YnNlY251bX0lCisgICAgICB9JQorICAgICAgXGxldFx0aGlzY2hhcG51bVxlbXB0eQorICAgICAgXGxldFx0aGlzc2VjbnVtXGVtcHR5CisgICAgICBcbGV0XHRoaXNzdWJzZWNudW1cZW1wdHkKICAgICAgICUKLSAgICAgICUgTWFrZSBzcGVjaWFsIGNoYXJhY3RlcnMgbm9ybWFsIGZvciB3cml0aW5nIHRvIHRoZSBwZGYgZmlsZS4KKyAgICAgICUgdXNlIFxkZWYgcmF0aGVyIHRoYW4gXGxldCBoZXJlIGJlY2F1c2Ugd2UgcmVkZWZpbmUgXGNoYXBlbnRyeSBldAorICAgICAgJSBhbC4gYSBzZWNvbmQgdGltZSwgYmVsb3cuCisgICAgICBcZGVmXGFwcGVudHJ5e1xudW1jaGFwZW50cnl9JQorICAgICAgXGRlZlxhcHBzZWNlbnRyeXtcbnVtc2VjZW50cnl9JQorICAgICAgXGRlZlxhcHBzdWJzZWNlbnRyeXtcbnVtc3Vic2VjZW50cnl9JQorICAgICAgXGRlZlxhcHBzdWJzdWJzZWNlbnRyeXtcbnVtc3Vic3Vic2VjZW50cnl9JQorICAgICAgXGRlZlx1bm5jaGFwZW50cnl7XG51bWNoYXBlbnRyeX0lCisgICAgICBcZGVmXHVubnNlY2VudHJ5e1xudW1zZWNlbnRyeX0lCisgICAgICBcZGVmXHVubnN1YnNlY2VudHJ5e1xudW1zdWJzZWNlbnRyeX0lCisgICAgICBcZGVmXHVubnN1YnN1YnNlY2VudHJ5e1xudW1zdWJzdWJzZWNlbnRyeX0lCisgICAgICBcaW5wdXQgXGpvYm5hbWUudG9jCisgICAgICAlCisgICAgICAlIFJlYWQgdG9jIHNlY29uZCB0aW1lLCB0aGlzIHRpbWUgYWN0dWFsbHkgcHJvZHVjaW5nIHRoZSBvdXRsaW5lcy4KKyAgICAgICUgVGhlIGAtJyBtZWFucyB0YWtlIHRoZSBcZXhwbnVtYmVyIGFzIHRoZSBhYnNvbHV0ZSBudW1iZXIgb2YKKyAgICAgICUgc3ViZW50cmllcywgd2hpY2ggd2UgY2FsY3VsYXRlZCBvbiBvdXIgZmlyc3QgcmVhZCBvZiB0aGUgLnRvYyBhYm92ZS4KICAgICAgICUgCisgICAgICAlIFdlIHVzZSB0aGUgbm9kZSBuYW1lcyBhcyB0aGUgZGVzdGluYXRpb25zLgorICAgICAgXGRlZlxudW1jaGFwZW50cnkjIzEjIzIjIzMjIzR7JQorICAgICAgICBcZG9wZGZvdXRsaW5leyMjMX17Y291bnQtXGV4cG51bWJlcntjaGFwIyMyfX17IyMzfXsjIzR9fSUKKyAgICAgIFxkZWZcbnVtc2VjZW50cnkjIzEjIzIjIzMjIzR7JQorICAgICAgICBcZG9wZGZvdXRsaW5leyMjMX17Y291bnQtXGV4cG51bWJlcntzZWMjIzJ9fXsjIzN9eyMjNH19JQorICAgICAgXGRlZlxudW1zdWJzZWNlbnRyeSMjMSMjMiMjMyMjNHslCisgICAgICAgIFxkb3BkZm91dGxpbmV7IyMxfXtjb3VudC1cZXhwbnVtYmVye3N1YnNlYyMjMn19eyMjM317IyM0fX0lCisgICAgICBcZGVmXG51bXN1YnN1YnNlY2VudHJ5IyMxIyMyIyMzIyM0eyUgY291bnQgaXMgYWx3YXlzIHplcm8KKyAgICAgICAgXGRvcGRmb3V0bGluZXsjIzF9e317IyMzfXsjIzR9fSUKKyAgICAgICUKKyAgICAgICUgUERGIG91dGxpbmVzIGFyZSBkaXNwbGF5ZWQgdXNpbmcgc3lzdGVtIGZvbnRzLCBpbnN0ZWFkIG9mCisgICAgICAlIGRvY3VtZW50IGZvbnRzLiAgVGhlcmVmb3JlIHdlIGNhbm5vdCB1c2Ugc3BlY2lhbCBjaGFyYWN0ZXJzLAorICAgICAgJSBzaW5jZSB0aGUgZW5jb2RpbmcgaXMgdW5rbm93bi4gIEZvciBleGFtcGxlLCB0aGUgZW9nb25layBmcm9tCisgICAgICAlIExhdGluIDIgKDB4ZWEpIGdldHMgdHJhbnNsYXRlZCB0byBhIHwgY2hhcmFjdGVyLiAgSW5mbyBmcm9tCisgICAgICAlIFN0YXN6ZWsgV2F3cnlraWV3aWN6LCAxOSBKYW4gMjAwNCAwNDowOToyNCArMDEwMC4KKyAgICAgICUgCisgICAgICAlIHh4IHRvIGRvIHRoaXMgcmlnaHQsIHdlIGhhdmUgdG8gdHJhbnNsYXRlIDgtYml0IGNoYXJhY3RlcnMgdG8KKyAgICAgICUgdGhlaXIgImJlc3QiIGVxdWl2YWxlbnQsIGJhc2VkIG9uIHRoZSBAZG9jdW1lbnRlbmNvZGluZy4gIFJpZ2h0CisgICAgICAlIG5vdywgSSBndWVzcyB3ZSdsbCBqdXN0IGxldCB0aGUgcGRmIHJlYWRlciBoYXZlIGl0cyB3YXkuCiAgICAgICBcaW5kZXhub2ZvbnRzCi0gICAgICBcbGV0XHR0PVxyZWxheAogICAgICAgXHR1cm5vZmZhY3RpdmUKICAgICAgIFxpbnB1dCBcam9ibmFtZS50b2MKLSAgICBcZW5kZ3JvdXBcZmkKLSAgfX0KKyAgICBcZW5kZ3JvdXAKKyAgfQorICAlCiAgIFxkZWZcbWFrZWxpbmtzICMxLHslCiAgICAgXGRlZlxwYXJhbXN7IzF9XGRlZlxFe0VORH0lCiAgICAgXGlmeFxwYXJhbXNcRQpAQCAtMTA5MSw3ICsxMzAzLDcgQEAKICAgICAgIFxsZXRcbmV4dG1ha2VsaW5rcz1cbWFrZWxpbmtzCiAgICAgICBcaWZudW1cbG5rY291bnQ+MCxcZmkKICAgICAgIFxwaWNrbnVteyMxfSUKLSAgICAgIFxzdGFydGxpbmsgYXR0cnsvQm9yZGVyIFswIDAgMF19IAorICAgICAgXHN0YXJ0bGluayBhdHRyey9Cb3JkZXIgWzAgMCAwXX0KICAgICAgICAgZ290byBuYW1le1xwZGZta3BnbntcdGhlXHBnbn19JQogICAgICAgXGxpbmtjb2xvciAjMSUKICAgICAgIFxhZHZhbmNlXGxua2NvdW50IGJ5IDElCkBAIC0xMTEzLDcgKzEzMjUsNiBAQAogICBcZGVmXHBwbiMxe1xwZ249IzFcZ29iYmxlfQogICBcZGVmXHBwbm57XHBnbj1cZmlyc3R9CiAgIFxkZWZccGRmbWtsbmsjMXtcbG5rY291bnQ9MFxtYWtlbGlua3MgIzEsRU5ELH0KLSAgXGRlZlxhZGR0b2tlbnMjMSMye1xlZGVmXGFkZHRva3N7XG5vZXhwYW5kIzE9e1x0aGUjMSMyfX1cYWRkdG9rc30KICAgXGRlZlxza2lwc3BhY2VzIzF7XGRlZlxQUHsjMX1cZGVmXER7fH0lCiAgICAgXGlmeFxQUFxEXGxldFxuZXh0c3BccmVsYXgKICAgICBcZWxzZVxsZXRcbmV4dHNwXHNraXBzcGFjZXMKQEAgLTExMzEsMjIgKzEzNDIsMjEgQEAKICAgXGRlZlxwZGZ1cmwjMXslCiAgICAgXGJlZ2luZ3JvdXAKICAgICAgIFxub3JtYWx0dXJub2ZmYWN0aXZlXGRlZlxAe0B9JQotICAgICAgXGxldFx2YWx1ZT1cZXhwYW5kYWJsZXZhbHVlCisgICAgICBcbWFrZXZhbHVlZXhwYW5kYWJsZQogICAgICAgXGxlYXZldm1vZGVcUmVkCiAgICAgICBcc3RhcnRsaW5rIGF0dHJ7L0JvcmRlciBbMCAwIDBdfSUKICAgICAgICAgdXNlcnsvU3VidHlwZSAvTGluayAvQSA8PCAvUyAvVVJJIC9VUkkgKCMxKSA+Pn0lCi0gICAgICAgICUgIzEKICAgICBcZW5kZ3JvdXB9CiAgIFxkZWZccGRmZ2V0dG9rcyMxLntcc2V0Ym94XGJveEE9XGhib3h7XHRva3NBPXsjMS59XHRva3NCPXt9XG1ha2V0b2tzfX0KICAgXGRlZlxhZGR0b2tlbnMjMSMye1xlZGVmXGFkZHRva3N7XG5vZXhwYW5kIzE9e1x0aGUjMSMyfX1cYWRkdG9rc30KICAgXGRlZlxhZG4jMXtcYWRkdG9rZW5ze1x0b2tzQ317IzF9XGdsb2JhbFxjb3VudEE9MVxsZXRcbmV4dD1cbWFrZXRva3N9CiAgIFxkZWZccG9wdG9rcyMxIzJ8RU5EVE9LU3x7XGxldFxmaXJzdD0jMVx0b2tzRD17IzF9XHRva3NBPXsjMn19CiAgIFxkZWZcbWFrZXRva3N7JQotICAgIFxleHBhbmRhZnRlclxwb3B0b2tzXHRoZVx0b2tzQXxFTkRUT0tTfAorICAgIFxleHBhbmRhZnRlclxwb3B0b2tzXHRoZVx0b2tzQXxFTkRUT0tTfFxyZWxheAogICAgIFxpZnhcZmlyc3QwXGFkbjAKICAgICBcZWxzZVxpZnhcZmlyc3QxXGFkbjEgXGVsc2VcaWZ4XGZpcnN0MlxhZG4yIFxlbHNlXGlmeFxmaXJzdDNcYWRuMwogICAgIFxlbHNlXGlmeFxmaXJzdDRcYWRuNCBcZWxzZVxpZnhcZmlyc3Q1XGFkbjUgXGVsc2VcaWZ4XGZpcnN0NlxhZG42Ci0gICAgXGVsc2VcaWZ4XGZpcnN0N1xhZG43IFxlbHNlXGlmeFxmaXJzdDhcYWRuOCBcZWxzZVxpZnhcZmlyc3Q5XGFkbjkgCisgICAgXGVsc2VcaWZ4XGZpcnN0N1xhZG43IFxlbHNlXGlmeFxmaXJzdDhcYWRuOCBcZWxzZVxpZnhcZmlyc3Q5XGFkbjkKICAgICBcZWxzZQogICAgICAgXGlmbnVtMD1cY291bnRBXGVsc2VcbWFrZWxpbmtcZmkKICAgICAgIFxpZnhcZmlyc3QuXGxldFxuZXh0PVxkb25lXGVsc2UKQEAgLTExNjYsMTYgKzEzNzYsMzQgQEAKIAogCiBcbWVzc2FnZXtmb250cyx9Ci0lIEZvbnQtY2hhbmdlIGNvbW1hbmRzLgorCislIENoYW5nZSB0aGUgY3VycmVudCBmb250IHN0eWxlIHRvICMxLCByZW1lbWJlcmluZyBpdCBpbiBcY3VyZm9udHN0eWxlLgorJSBGb3Igbm93LCB3ZSBkbyBub3QgYWNjdW11bGF0ZSBmb250IHN0eWxlczogQGJ7QGl7Zm9vfX0gcHJpbnRzIGZvbyBpbgorJSBpdGFsaWNzLCBub3QgYm9sZCBpdGFsaWNzLgorJSAKK1xkZWZcc2V0Zm9udHN0eWxlIzF7JQorICBcZGVmXGN1cmZvbnRzdHlsZXsjMX0lIG5vdCBhcyBhIGNvbnRyb2wgc2VxdWVuY2UsIGJlY2F1c2Ugd2UgYXJlIFxlZGVmJ2QuCisgIFxjc25hbWUgdGVuIzFcZW5kY3NuYW1lICAlIGNoYW5nZSB0aGUgY3VycmVudCBmb250Cit9CisKKyUgU2VsZWN0ICMxIGZvbnRzIHdpdGggdGhlIGN1cnJlbnQgc3R5bGUuCislIAorXGRlZlxzZWxlY3Rmb250cyMxe1xjc25hbWUgIzFmb250c1xlbmRjc25hbWUgXGNzbmFtZVxjdXJmb250c3R5bGVcZW5kY3NuYW1lfQorCitcZGVmXHJte1xmYW09MCBcc2V0Zm9udHN0eWxle3JtfX0KK1xkZWZcaXR7XGZhbT1caXRmYW0gXHNldGZvbnRzdHlsZXtpdH19CitcZGVmXHNse1xmYW09XHNsZmFtIFxzZXRmb250c3R5bGV7c2x9fQorXGRlZlxiZntcZmFtPVxiZmZhbSBcc2V0Zm9udHN0eWxle2JmfX0KK1xkZWZcdHR7XGZhbT1cdHRmYW0gXHNldGZvbnRzdHlsZXt0dH19CiAKICUgVGV4aW5mbyBzb3J0IG9mIHN1cHBvcnRzIHRoZSBzYW5zIHNlcmlmIGZvbnQgc3R5bGUsIHdoaWNoIHBsYWluIFRlWCBkb2VzIG5vdC4KLSUgU28gd2Ugc2V0IHVwIGEgXHNmIGFuYWxvZ291cyB0byBwbGFpbidzIFxybSwgZXRjLgorJSBTbyB3ZSBzZXQgdXAgYSBcc2YuCiBcbmV3ZmFtXHNmZmFtCi1cZGVmXHNme1xmYW09XHNmZmFtIFx0ZW5zZn0KK1xkZWZcc2Z7XGZhbT1cc2ZmYW0gXHNldGZvbnRzdHlsZXtzZn19CiBcbGV0XGxpID0gXHNmICUgU29tZXRpbWVzIHdlIGNhbGwgaXQgXGxpLCBub3QgXHNmLgogCi0lIFdlIGRvbid0IG5lZWQgbWF0aCBmb3IgdGhpcyBvbmUuCi1cZGVmXHR0c2x7XHRlbnR0c2x9CislIFdlIGRvbid0IG5lZWQgbWF0aCBmb3IgdGhpcyBmb250IHN0eWxlLgorXGRlZlx0dHNse1xzZXRmb250c3R5bGV7dHRzbH19CiAKICUgRGVmYXVsdCBsZWFkaW5nLgogXG5ld2RpbWVuXHRleHRsZWFkaW5nICBcdGV4dGxlYWRpbmcgPSAxMy4ycHQKQEAgLTEyMjYsNiArMTQ1NCw3IEBACiBcZGVmXHNjc2hhcGV7Y3NjfQogXGRlZlxzY2JzaGFwZXtjc2N9CiAKKyUgVGV4dCBmb250cyAoMTEuMnB0LCBtYWdzdGVwMSkuCiBcbmV3Y291bnRcbWFpbm1hZ3N0ZXAKIFxpZnhcYmlnZ2VyXHJlbGF4CiAgICUgbm90IHJlYWxseSBzdXBwb3J0ZWQuCkBAIC0xMjM3LDEwICsxNDY2LDYgQEAKICAgXHNldGZvbnRcdGV4dHJtXHJtc2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KICAgXHNldGZvbnRcdGV4dHR0XHR0c2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KIFxmaQotJSBJbnN0ZWFkIG9mIGNtYjEwLCB5b3UgbWF5IHdhbnQgdG8gdXNlIGNtYngxMC4KLSUgY21ieDEwIGlzIGEgcHJldHRpZXIgZm9udCBvbiBpdHMgb3duLCBidXQgY21iMTAKLSUgbG9va3MgYmV0dGVyIHdoZW4gZW1iZWRkZWQgaW4gYSBsaW5lIHdpdGggY21yMTAKLSUgKGluIEJvYidzIG9waW5pb24pLgogXHNldGZvbnRcdGV4dGJmXGJmc2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KIFxzZXRmb250XHRleHRpdFxpdHNoYXBlezEwfXtcbWFpbm1hZ3N0ZXB9CiBcc2V0Zm9udFx0ZXh0c2xcc2xzaGFwZXsxMH17XG1haW5tYWdzdGVwfQpAQCAtMTI1MCwxMCArMTQ3NSwxMSBAQAogXGZvbnRcdGV4dGk9Y21taTEwIHNjYWxlZCBcbWFpbm1hZ3N0ZXAKIFxmb250XHRleHRzeT1jbXN5MTAgc2NhbGVkIFxtYWlubWFnc3RlcAogCi0lIEEgZmV3IGZvbnRzIGZvciBAZGVmdW4sIGV0Yy4KLVxzZXRmb250XGRlZmJmXGJ4c2hhcGV7MTB9e1xtYWdzdGVwMX0gJXdhcyAxMzE0CislIEEgZmV3IGZvbnRzIGZvciBAZGVmdW4gbmFtZXMgYW5kIGFyZ3MuCitcc2V0Zm9udFxkZWZiZlxiZnNoYXBlezEwfXtcbWFnc3RlcDF9CiBcc2V0Zm9udFxkZWZ0dFx0dHNoYXBlezEwfXtcbWFnc3RlcDF9Ci1cZGVmXGRme1xsZXRcdGVudHQ9XGRlZnR0IFxsZXRcdGVuYmYgPSBcZGVmYmYgXGJmfQorXHNldGZvbnRcZGVmdHRzbFx0dHNsc2hhcGV7MTB9e1xtYWdzdGVwMX0KK1xkZWZcZGZ7XGxldFx0ZW50dD1cZGVmdHQgXGxldFx0ZW5iZiA9IFxkZWZiZiBcbGV0XHRlbnR0c2w9XGRlZnR0c2wgXGJmfQogCiAlIEZvbnRzIGZvciBpbmRpY2VzLCBmb290bm90ZXMsIHNtYWxsIGV4YW1wbGVzICg5cHQpLgogXHNldGZvbnRcc21hbGxybVxybXNoYXBlezl9ezEwMDB9CkBAIC0xMjc5LDcgKzE1MDUsNyBAQAogXGZvbnRcc21hbGxlcmk9Y21taTgKIFxmb250XHNtYWxsZXJzeT1jbXN5OAogCi0lIEZvbnRzIGZvciB0aXRsZSBwYWdlOgorJSBGb250cyBmb3IgdGl0bGUgcGFnZSAoMjAuNHB0KToKIFxzZXRmb250XHRpdGxlcm1ccm1ic2hhcGV7MTJ9e1xtYWdzdGVwM30KIFxzZXRmb250XHRpdGxlaXRcaXRic2hhcGV7MTB9e1xtYWdzdGVwNH0KIFxzZXRmb250XHRpdGxlc2xcc2xic2hhcGV7MTB9e1xtYWdzdGVwNH0KQEAgLTEzMjUsMTEgKzE1NTEsMjEgQEAKIFxzZXRmb250XHNzZWN0dHNsXHR0c2xzaGFwZXsxMH17MTMxNX0KIFxzZXRmb250XHNzZWNzZlxzZmJzaGFwZXsxMn17XG1hZ3N0ZXBoYWxmfQogXGxldFxzc2VjYmZcc3NlY3JtCi1cc2V0Zm9udFxzc2Vjc2Ncc2Nic2hhcGV7MTB9e1xtYWdzdGVwMX0KK1xzZXRmb250XHNzZWNzY1xzY2JzaGFwZXsxMH17MTMxNX0KIFxmb250XHNzZWNpPWNtbWkxMiBzY2FsZWQgXG1hZ3N0ZXBoYWxmCiBcZm9udFxzc2Vjc3k9Y21zeTEwIHNjYWxlZCAxMzE1Ci0lIFRoZSBzbWFsbGNhcHMgYW5kIHN5bWJvbCBmb250cyBzaG91bGQgYWN0dWFsbHkgYmUgc2NhbGVkIFxtYWdzdGVwMS41LAotJSBidXQgdGhhdCBpcyBub3QgYSBzdGFuZGFyZCBtYWduaWZpY2F0aW9uLgorCislIFJlZHVjZWQgZm9udHMgZm9yIEBhY3JvIGluIHRleHQgKDEwcHQpLgorXHNldGZvbnRccmVkdWNlZHJtXHJtc2hhcGV7MTB9ezEwMDB9Citcc2V0Zm9udFxyZWR1Y2VkdHRcdHRzaGFwZXsxMH17MTAwMH0KK1xzZXRmb250XHJlZHVjZWRiZlxiZnNoYXBlezEwfXsxMDAwfQorXHNldGZvbnRccmVkdWNlZGl0XGl0c2hhcGV7MTB9ezEwMDB9Citcc2V0Zm9udFxyZWR1Y2Vkc2xcc2xzaGFwZXsxMH17MTAwMH0KK1xzZXRmb250XHJlZHVjZWRzZlxzZnNoYXBlezEwfXsxMDAwfQorXHNldGZvbnRccmVkdWNlZHNjXHNjc2hhcGV7MTB9ezEwMDB9Citcc2V0Zm9udFxyZWR1Y2VkdHRzbFx0dHNsc2hhcGV7MTB9ezEwMDB9CitcZm9udFxyZWR1Y2VkaT1jbW1pMTAKK1xmb250XHJlZHVjZWRzeT1jbXN5MTAKIAogJSBJbiBvcmRlciBmb3IgdGhlIGZvbnQgY2hhbmdlcyB0byBhZmZlY3QgbW9zdCBtYXRoIHN5bWJvbHMgYW5kIGxldHRlcnMsCiAlIHdlIGhhdmUgdG8gZGVmaW5lIHRoZSBcdGV4dGZvbnQgb2YgdGhlIHN0YW5kYXJkIGZhbWlsaWVzLiAgU2luY2UKQEAgLTEzNDQsNTAgKzE1ODAsNzIgQEAKIH0KIAogJSBUaGUgZm9udC1jaGFuZ2luZyBjb21tYW5kcyByZWRlZmluZSB0aGUgbWVhbmluZ3Mgb2YgXHRlblNUWUxFLCBpbnN0ZWFkCi0lIG9mIGp1c3QgXFNUWUxFLiAgV2UgZG8gdGhpcyBzbyB0aGF0IGZvbnQgY2hhbmdlcyB3aWxsIGNvbnRpbnVlIHRvIHdvcmsKLSUgaW4gbWF0aCBtb2RlLCB3aGVyZSBpdCBpcyB0aGUgY3VycmVudCBcZmFtIHRoYXQgaXMgcmVsZXZhbnQgaW4gbW9zdAotJSBjYXNlcywgbm90IHRoZSBjdXJyZW50IGZvbnQuICBQbGFpbiBUZVggZG9lcyBcZGVmXGJme1xmYW09XGJmZmFtCi0lIFx0ZW5iZn0sIGZvciBleGFtcGxlLiAgQnkgcmVkZWZpbmluZyBcdGVuYmYsIHdlIG9idmlhdGUgdGhlIG5lZWQgdG8KLSUgcmVkZWZpbmUgXGJmIGl0c2VsZi4KKyUgb2YganVzdCBcU1RZTEUuICBXZSBkbyB0aGlzIGJlY2F1c2UgXFNUWUxFIG5lZWRzIHRvIGFsc28gc2V0IHRoZQorJSBjdXJyZW50IFxmYW0gZm9yIG1hdGggbW9kZS4gIE91ciBcU1RZTEUgKGUuZy4sIFxybSkgY29tbWFuZHMgaGFyZHdpcmUKKyUgXHRlblNUWUxFIHRvIHNldCB0aGUgY3VycmVudCBmb250LgorJSAKKyUgRWFjaCBmb250LWNoYW5naW5nIGNvbW1hbmQgYWxzbyBzZXRzIHRoZSBuYW1lcyBcbHNpemUgKG9uZSBzaXplIGxvd2VyKQorJSBhbmQgXGxsbHNpemUgKHRocmVlIHNpemVzIGxvd2VyKS4gIFRoZXNlIHJlbGF0aXZlIGNvbW1hbmRzIGFyZSB1c2VkIGluCislIHRoZSBMYVRlWCBsb2dvIGFuZCBhY3Jvbnltcy4KKyUgCislIFRoaXMgYWxsIG5lZWRzIGdlbmVyYWxpemluZywgYmFkbHkuCislIAogXGRlZlx0ZXh0Zm9udHN7JQogICBcbGV0XHRlbnJtPVx0ZXh0cm0gXGxldFx0ZW5pdD1cdGV4dGl0IFxsZXRcdGVuc2w9XHRleHRzbAogICBcbGV0XHRlbmJmPVx0ZXh0YmYgXGxldFx0ZW50dD1cdGV4dHR0IFxsZXRcc21hbGxjYXBzPVx0ZXh0c2MKLSAgXGxldFx0ZW5zZj1cdGV4dHNmIFxsZXRcdGVuaT1cdGV4dGkgXGxldFx0ZW5zeT1cdGV4dHN5IFxsZXRcdGVudHRzbD1cdGV4dHR0c2wKKyAgXGxldFx0ZW5zZj1cdGV4dHNmIFxsZXRcdGVuaT1cdGV4dGkgXGxldFx0ZW5zeT1cdGV4dHN5CisgIFxsZXRcdGVudHRzbD1cdGV4dHR0c2wKKyAgXGRlZlxsc2l6ZXtyZWR1Y2VkfVxkZWZcbGxsc2l6ZXtzbWFsbGVyfSUKICAgXHJlc2V0bWF0aGZvbnRzIFxzZXRsZWFkaW5ne1x0ZXh0bGVhZGluZ319CiBcZGVmXHRpdGxlZm9udHN7JQogICBcbGV0XHRlbnJtPVx0aXRsZXJtIFxsZXRcdGVuaXQ9XHRpdGxlaXQgXGxldFx0ZW5zbD1cdGl0bGVzbAogICBcbGV0XHRlbmJmPVx0aXRsZWJmIFxsZXRcdGVudHQ9XHRpdGxldHQgXGxldFxzbWFsbGNhcHM9XHRpdGxlc2MKICAgXGxldFx0ZW5zZj1cdGl0bGVzZiBcbGV0XHRlbmk9XHRpdGxlaSBcbGV0XHRlbnN5PVx0aXRsZXN5CiAgIFxsZXRcdGVudHRzbD1cdGl0bGV0dHNsCisgIFxkZWZcbHNpemV7Y2hhcH1cZGVmXGxsbHNpemV7c3Vic2VjfSUKICAgXHJlc2V0bWF0aGZvbnRzIFxzZXRsZWFkaW5nezI1cHR9fQogXGRlZlx0aXRsZWZvbnQjMXt7XHRpdGxlZm9udHNccm0gIzF9fQogXGRlZlxjaGFwZm9udHN7JQogICBcbGV0XHRlbnJtPVxjaGFwcm0gXGxldFx0ZW5pdD1cY2hhcGl0IFxsZXRcdGVuc2w9XGNoYXBzbAogICBcbGV0XHRlbmJmPVxjaGFwYmYgXGxldFx0ZW50dD1cY2hhcHR0IFxsZXRcc21hbGxjYXBzPVxjaGFwc2MKICAgXGxldFx0ZW5zZj1cY2hhcHNmIFxsZXRcdGVuaT1cY2hhcGkgXGxldFx0ZW5zeT1cY2hhcHN5IFxsZXRcdGVudHRzbD1cY2hhcHR0c2wKKyAgXGRlZlxsc2l6ZXtzZWN9XGRlZlxsbGxzaXple3RleHR9JQogICBccmVzZXRtYXRoZm9udHMgXHNldGxlYWRpbmd7MTlwdH19CiBcZGVmXHNlY2ZvbnRzeyUKICAgXGxldFx0ZW5ybT1cc2Vjcm0gXGxldFx0ZW5pdD1cc2VjaXQgXGxldFx0ZW5zbD1cc2Vjc2wKICAgXGxldFx0ZW5iZj1cc2VjYmYgXGxldFx0ZW50dD1cc2VjdHQgXGxldFxzbWFsbGNhcHM9XHNlY3NjCi0gIFxsZXRcdGVuc2Y9XHNlY3NmIFxsZXRcdGVuaT1cc2VjaSBcbGV0XHRlbnN5PVxzZWNzeSBcbGV0XHRlbnR0c2w9XHNlY3R0c2wKKyAgXGxldFx0ZW5zZj1cc2Vjc2YgXGxldFx0ZW5pPVxzZWNpIFxsZXRcdGVuc3k9XHNlY3N5CisgIFxsZXRcdGVudHRzbD1cc2VjdHRzbAorICBcZGVmXGxzaXple3N1YnNlY31cZGVmXGxsbHNpemV7cmVkdWNlZH0lCiAgIFxyZXNldG1hdGhmb250cyBcc2V0bGVhZGluZ3sxNnB0fX0KIFxkZWZcc3Vic2VjZm9udHN7JQogICBcbGV0XHRlbnJtPVxzc2Vjcm0gXGxldFx0ZW5pdD1cc3NlY2l0IFxsZXRcdGVuc2w9XHNzZWNzbAogICBcbGV0XHRlbmJmPVxzc2VjYmYgXGxldFx0ZW50dD1cc3NlY3R0IFxsZXRcc21hbGxjYXBzPVxzc2Vjc2MKLSAgXGxldFx0ZW5zZj1cc3NlY3NmIFxsZXRcdGVuaT1cc3NlY2kgXGxldFx0ZW5zeT1cc3NlY3N5IFxsZXRcdGVudHRzbD1cc3NlY3R0c2wKKyAgXGxldFx0ZW5zZj1cc3NlY3NmIFxsZXRcdGVuaT1cc3NlY2kgXGxldFx0ZW5zeT1cc3NlY3N5CisgIFxsZXRcdGVudHRzbD1cc3NlY3R0c2wKKyAgXGRlZlxsc2l6ZXt0ZXh0fVxkZWZcbGxsc2l6ZXtzbWFsbH0lCiAgIFxyZXNldG1hdGhmb250cyBcc2V0bGVhZGluZ3sxNXB0fX0KLVxsZXRcc3Vic3Vic2VjZm9udHMgPSBcc3Vic2VjZm9udHMgJSBNYXliZSBtYWtlIHNzc2VjIGZvbnRzIHNjYWxlZCBtYWdzdGVwaGFsZj8KK1xsZXRcc3Vic3Vic2VjZm9udHMgPSBcc3Vic2VjZm9udHMKK1xkZWZccmVkdWNlZGZvbnRzeyUKKyAgXGxldFx0ZW5ybT1ccmVkdWNlZHJtIFxsZXRcdGVuaXQ9XHJlZHVjZWRpdCBcbGV0XHRlbnNsPVxyZWR1Y2Vkc2wKKyAgXGxldFx0ZW5iZj1ccmVkdWNlZGJmIFxsZXRcdGVudHQ9XHJlZHVjZWR0dCBcbGV0XHJlZHVjZWRjYXBzPVxyZWR1Y2Vkc2MKKyAgXGxldFx0ZW5zZj1ccmVkdWNlZHNmIFxsZXRcdGVuaT1ccmVkdWNlZGkgXGxldFx0ZW5zeT1ccmVkdWNlZHN5CisgIFxsZXRcdGVudHRzbD1ccmVkdWNlZHR0c2wKKyAgXGRlZlxsc2l6ZXtzbWFsbH1cZGVmXGxsbHNpemV7c21hbGxlcn0lCisgIFxyZXNldG1hdGhmb250cyBcc2V0bGVhZGluZ3sxMC41cHR9fQogXGRlZlxzbWFsbGZvbnRzeyUKICAgXGxldFx0ZW5ybT1cc21hbGxybSBcbGV0XHRlbml0PVxzbWFsbGl0IFxsZXRcdGVuc2w9XHNtYWxsc2wKICAgXGxldFx0ZW5iZj1cc21hbGxiZiBcbGV0XHRlbnR0PVxzbWFsbHR0IFxsZXRcc21hbGxjYXBzPVxzbWFsbHNjCiAgIFxsZXRcdGVuc2Y9XHNtYWxsc2YgXGxldFx0ZW5pPVxzbWFsbGkgXGxldFx0ZW5zeT1cc21hbGxzeQogICBcbGV0XHRlbnR0c2w9XHNtYWxsdHRzbAorICBcZGVmXGxzaXple3NtYWxsZXJ9XGRlZlxsbGxzaXple3NtYWxsZXJ9JQogICBccmVzZXRtYXRoZm9udHMgXHNldGxlYWRpbmd7MTAuNXB0fX0KIFxkZWZcc21hbGxlcmZvbnRzeyUKICAgXGxldFx0ZW5ybT1cc21hbGxlcnJtIFxsZXRcdGVuaXQ9XHNtYWxsZXJpdCBcbGV0XHRlbnNsPVxzbWFsbGVyc2wKICAgXGxldFx0ZW5iZj1cc21hbGxlcmJmIFxsZXRcdGVudHQ9XHNtYWxsZXJ0dCBcbGV0XHNtYWxsY2Fwcz1cc21hbGxlcnNjCiAgIFxsZXRcdGVuc2Y9XHNtYWxsZXJzZiBcbGV0XHRlbmk9XHNtYWxsZXJpIFxsZXRcdGVuc3k9XHNtYWxsZXJzeQogICBcbGV0XHRlbnR0c2w9XHNtYWxsZXJ0dHNsCisgIFxkZWZcbHNpemV7c21hbGxlcn1cZGVmXGxsbHNpemV7c21hbGxlcn0lCiAgIFxyZXNldG1hdGhmb250cyBcc2V0bGVhZGluZ3s5LjVwdH19CiAKICUgU2V0IHRoZSBmb250cyB0byB1c2Ugd2l0aCB0aGUgQHNtYWxsLi4uIGVudmlyb25tZW50cy4KQEAgLTEzOTYsMjIgKzE2NTQsMjEgQEAKICUgQWJvdXQgXHNtYWxsZXhhbXBsZWZvbnRzLiAgSWYgd2UgdXNlIFxzbWFsbGZvbnRzICg5cHQpLCBAc21hbGxleGFtcGxlCiAlIGNhbiBmaXQgdGhpcyBtYW55IGNoYXJhY3RlcnM6CiAlICAgOC41eDExPTg2ICAgc21hbGxib29rPTcyICBhND05MCAgYTU9NjkKLSUgSWYgd2UgdXNlIFxzbWFsbGVyZm9udHMgKDhwdCksIHRoZW4gd2UgY2FuIGZpdCB0aGlzIG1hbnkgY2hhcmFjdGVyczoKKyUgSWYgd2UgdXNlIFxzY3JpcHRmb250cyAoOHB0KSwgdGhlbiB3ZSBjYW4gZml0IHRoaXMgbWFueSBjaGFyYWN0ZXJzOgogJSAgIDguNXgxMT05MCsgIHNtYWxsYm9vaz04MCAgYTQ9OTArICBhNT03NwogJSBGb3IgbWUsIHN1YmplY3RpdmVseSwgdGhlIGZldyBleHRyYSBjaGFyYWN0ZXJzIHRoYXQgZml0IGFyZW4ndCB3b3J0aAogJSB0aGUgYWRkaXRpb25hbCBzbWFsbG5lc3Mgb2YgOHB0LiAgU28gSSdtIG1ha2luZyB0aGUgZGVmYXVsdCA5cHQuCi0lIAorJQogJSBCeSB0aGUgd2F5LCBmb3IgY29tcGFyaXNvbiwgaGVyZSdzIHdoYXQgZml0cyB3aXRoIEBleGFtcGxlICgxMHB0KToKICUgICA4LjV4MTE9NzEgIHNtYWxsYm9vaz02MCAgYTQ9NzUgIGE1PTU4Ci0lIAotJSBJIHdpc2ggd2UgdXNlZCBBNCBwYXBlciBvbiB0aGlzIHNpZGUgb2YgdGhlIEF0bGFudGljLgotJSAKKyUKKyUgSSB3aXNoIHRoZSBVU0EgdXNlZCBBNCBwYXBlci4KICUgLS1rYXJsLCAyNGphbjAzLgogCiAKICUgU2V0IHVwIHRoZSBkZWZhdWx0IGZvbnRzLCBzbyB3ZSBjYW4gdXNlIHRoZW0gZm9yIGNyZWF0aW5nIGJveGVzLgogJQotXHRleHRmb250cworXHRleHRmb250cyBccm0KIAogJSBEZWZpbmUgdGhlc2Ugc28gdGhleSBjYW4gYmUgZWFzaWx5IGNoYW5nZWQgZm9yIG90aGVyIGZvbnRzLgogXGRlZlxhbmdsZWxlZnR7JFxsYW5nbGUkfQpAQCAtMTQyMiw3ICsxNjc5LDcgQEAKIAogJSBGb250cyBmb3Igc2hvcnQgdGFibGUgb2YgY29udGVudHMuCiBcc2V0Zm9udFxzaG9ydGNvbnRybVxybXNoYXBlezEyfXsxMDAwfQotXHNldGZvbnRcc2hvcnRjb250YmZcYnhzaGFwZXsxMn17MTAwMH0KK1xzZXRmb250XHNob3J0Y29udGJmXGJmc2hhcGV7MTB9e1xtYWdzdGVwMX0gICUgbm8gY21iMTIKIFxzZXRmb250XHNob3J0Y29udHNsXHNsc2hhcGV7MTJ9ezEwMDB9CiBcc2V0Zm9udFxzaG9ydGNvbnR0dFx0dHNoYXBlezEyfXsxMDAwfQogCkBAIC0xNDMxLDE1ICsxNjg4LDIzIEBACiAKICUgXHNtYXJ0aXRhbGlje0FSR30gb3V0cHV0cyBhcmcgaW4gaXRhbGljcywgZm9sbG93ZWQgYnkgYW4gaXRhbGljIGNvcnJlY3Rpb24KICUgdW5sZXNzIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyIGlzIHN1Y2ggYXMgbm90IHRvIG5lZWQgb25lLgotXGRlZlxzbWFydGl0YWxpY3h7XGlmeFxuZXh0LFxlbHNlXGlmeFxuZXh0LVxlbHNlXGlmeFxuZXh0LlxlbHNlXC9cZmlcZmlcZml9CitcZGVmXHNtYXJ0aXRhbGljeHtcaWZ4XG5leHQsXGVsc2VcaWZ4XG5leHQtXGVsc2VcaWZ4XG5leHQuXGVsc2UKKyAgICAgICAgICAgICAgICAgICAgXHB0ZXhzbGFzaFxmaVxmaVxmaX0KIFxkZWZcc21hcnRzbGFudGVkIzF7e1xpZnVzaW5ndHRcdHRzbFxzbCAjMX1cZnV0dXJlbGV0XG5leHRcc21hcnRpdGFsaWN4fQogXGRlZlxzbWFydGl0YWxpYyMxe3tcaWZ1c2luZ3R0XHR0c2xcaXQgIzF9XGZ1dHVyZWxldFxuZXh0XHNtYXJ0aXRhbGljeH0KIAorJSBsaWtlIFxzbWFydHNsYW50ZWQgZXhjZXB0IHVuY29uZGl0aW9uYWxseSB1c2VzIFx0dHNsLgorJSBAdmFyIGlzIHNldCB0byB0aGlzIGZvciBkZWZ1biBhcmd1bWVudHMuCitcZGVmXHR0c2xhbnRlZCMxe3tcdHRzbCAjMX1cZnV0dXJlbGV0XG5leHRcc21hcnRpdGFsaWN4fQorCislIGxpa2UgXHNtYXJ0c2xhbnRlZCBleGNlcHQgdW5jb25kaXRpb25hbGx5IHVzZSBcc2wuICBXZSBuZXZlciB3YW50CislIHR0c2wgZm9yIGJvb2sgdGl0bGVzLCBkbyB3ZT8KK1xkZWZcY2l0ZSMxe3tcc2wgIzF9XGZ1dHVyZWxldFxuZXh0XHNtYXJ0aXRhbGljeH0KKwogXGxldFxpPVxzbWFydGl0YWxpYwogXGxldFx2YXI9XHNtYXJ0c2xhbnRlZAogXGxldFxkZm49XHNtYXJ0c2xhbnRlZAogXGxldFxlbXBoPVxzbWFydGl0YWxpYwotXGxldFxjaXRlPVxzbWFydHNsYW50ZWQKIAogXGRlZlxiIzF7e1xiZiAjMX19CiBcbGV0XHN0cm9uZz1cYgpAQCAtMTQ1NCw3ICsxNzE5LDcgQEAKICUgU2V0IHNmY29kZSB0byBub3JtYWwgZm9yIHRoZSBjaGFycyB0aGF0IHVzdWFsbHkgaGF2ZSBhbm90aGVyIHZhbHVlLgogJSBDYW4ndCB1c2UgcGxhaW4ncyBcZnJlbmNoc3BhY2luZyBiZWNhdXNlIGl0IHVzZXMgdGhlIGBceCBub3RhdGlvbiwgYW5kCiAlIHNvbWV0aW1lcyBceCBoYXMgYW4gYWN0aXZlIGRlZmluaXRpb24gdGhhdCBtZXNzZXMgdGhpbmdzIHVwLgotJSAKKyUKIFxjYXRjb2RlYEA9MTEKICAgXGRlZlxmcmVuY2hzcGFjaW5neyUKICAgICBcc2Zjb2RlXGRvdENoYXIgID1cQG0gXHNmY29kZVxxdWVzdENoYXI9XEBtIFxzZmNvZGVcZXhjbGFtQ2hhcj1cQG0KQEAgLTE0NjYsNyArMTczMSw2IEBACiAgIHtcdHQgXHJhd2JhY2tzbGFzaCBcZnJlbmNoc3BhY2luZyAjMX0lCiAgIFxudWxsCiB9Ci1cbGV0XHR0Zm9udD1cdAogXGRlZlxzYW1wIzF7YFx0Y2xvc2V7IzF9J1xudWxsfQogXHNldGZvbnRca2V5cm1ccm1zaGFwZXs4fXsxMDAwfQogXGZvbnRca2V5c3k9Y21zeTkKQEAgLTE1MDcsNyArMTc3MSw3IEBACiAgIFxudWxsCiB9CiAKLSUgV2UgKm11c3QqIHR1cm4gb24gaHlwaGVuYXRpb24gYXQgYC0nIGFuZCBgXycgaW4gXGNvZGUuCislIFdlICptdXN0KiB0dXJuIG9uIGh5cGhlbmF0aW9uIGF0IGAtJyBhbmQgYF8nIGluIEBjb2RlLgogJSBPdGhlcndpc2UsIGl0IGlzIHRvbyBoYXJkIHRvIGF2b2lkIG92ZXJmdWxsIGhib3hlcwogJSBpbiB0aGUgRW1hY3MgbWFudWFsLCB0aGUgTGlicmFyeSBtYW51YWwsIGV0Yy4KIApAQCAtMTUyNSwxMCArMTc4OSw2IEBACiAgICAgXGNhdGNvZGVgXF89XGFjdGl2ZSBcbGV0X1xjb2RldW5kZXIKICAgICBcY29kZXgKICAgfQotICAlCi0gICUgSWYgd2UgZW5kIHVwIHdpdGggYW55IGFjdGl2ZSAtIGNoYXJhY3RlcnMgd2hlbiBoYW5kbGluZyB0aGUgaW5kZXgsCi0gICUganVzdCB0cmVhdCB0aGVtIGFzIGEgbm9ybWFsIC0uCi0gIFxnbG9iYWxcZGVmXGluZGV4YnJlYWtze1xjYXRjb2RlYFwtPVxhY3RpdmUgXGxldC1ccmVhbGRhc2h9CiB9CiAKIFxkZWZccmVhbGRhc2h7LX0KQEAgLTE1NTIsOCArMTgxMiw3IEBACiAlIEBrYmRpbnB1dHN0eWxlIC0tIGFyZyBpcyBgZGlzdGluY3QnIChAa2JkIHVzZXMgc2xhbnRlZCB0dHkgZm9udCBhbHdheXMpLAogJSAgIGBleGFtcGxlJyAoQGtiZCB1c2VzIHR0c2wgb25seSBpbnNpZGUgb2YgQGV4YW1wbGUgYW5kIGZyaWVuZHMpLAogJSAgIG9yIGBjb2RlJyAoQGtiZCB1c2VzIG5vcm1hbCB0dHkgZm9udCBhbHdheXMpLgotXGRlZlxrYmRpbnB1dHN0eWxle1xwYXJzZWFyZ1xrYmRpbnB1dHN0eWxleHh4fQotXGRlZlxrYmRpbnB1dHN0eWxleHh4IzF7JQorXHBhcnNlYXJnZGVmXGtiZGlucHV0c3R5bGV7JQogICBcZGVmXGFyZ3sjMX0lCiAgIFxpZnhcYXJnXHdvcmRkaXN0aW5jdAogICAgIFxnZGVmXGtiZGV4YW1wbGVmb250e1x0dHNsfVxnZGVmXGtiZGZvbnR7XHR0c2x9JQpAQCAtMTU2Myw3ICsxODIyLDcgQEAKICAgICBcZ2RlZlxrYmRleGFtcGxlZm9udHtcdHR9XGdkZWZca2JkZm9udHtcdHR9JQogICBcZWxzZQogICAgIFxlcnJoZWxwID0gXEVNc2ltcGxlCi0gICAgXGVycm1lc3NhZ2V7VW5rbm93biBAa2JkaW5wdXRzdHlsZSBgXGFyZyd9JQorICAgIFxlcnJtZXNzYWdle1Vua25vd24gQGtiZGlucHV0c3R5bGUgb3B0aW9uIGBcYXJnJ30lCiAgIFxmaVxmaVxmaQogfQogXGRlZlx3b3JkZGlzdGluY3R7ZGlzdGluY3R9CkBAIC0xNjE0LDcgKzE4NzMsNyBAQAogCiAlIHJtcyBkb2VzIG5vdCBsaWtlIGFuZ2xlIGJyYWNrZXRzIC0ta2FybCwgMTdtYXk5Ny4KICUgU28gbm93IEBlbWFpbCBpcyBqdXN0IGxpa2UgQHVyZWYsIHVubGVzcyB3ZSBhcmUgcGRmLgotJSAKKyUKICVcZGVmXGVtYWlsIzF7XGFuZ2xlbGVmdHtcdHQgIzF9XGFuZ2xlcmlnaHR9CiBcaWZwZGYKICAgXGRlZlxlbWFpbCMxe1xkb2VtYWlsIzEsLFxmaW5pc2h9CkBAIC0xNjUzLDEyICsxOTEyLDI5IEBACiBcZGVmXHNjIzF7e1xzbWFsbGNhcHMjMX19ICAgICAgICUgc21hbGxjYXBzIGZvbnQKIFxkZWZcaWkjMXt7XGl0ICMxfX0gICAgICAgICAgICAgJSBpdGFsaWMgZm9udAogCi0lIEBhY3JvbnltIGRvd25jYXNlcyB0aGUgYXJndW1lbnQgYW5kIHByaW50cyBpbiBzbWFsbGNhcHMuCi1cZGVmXGFjcm9ueW0jMXt7XHNtYWxsY2FwcyBcbG93ZXJjYXNleyMxfX19CitcZGVmXGFjcm9ueW0jMXtcZG9hY3JvbnltICMxLCxcZmluaXNofQorXGRlZlxkb2Fjcm9ueW0jMSwjMiwjM1xmaW5pc2h7JQorICB7XHNlbGVjdGZvbnRzXGxzaXplICMxfSUKKyAgXGRlZlx0ZW1weyMyfSUKKyAgXGlmeFx0ZW1wXGVtcHR5IFxlbHNlCisgICAgXHNwYWNlICh7XHVuc2Vwc3BhY2VzIFxpZ25vcmVzcGFjZXMgXHRlbXAgXHVuc2tpcH0pJQorICBcZmkKK30KIAotJSBAcG91bmRze30gaXMgYSBzdGVybGluZyBzaWduLgorJSBAcG91bmRze30gaXMgYSBzdGVybGluZyBzaWduLCB3aGljaCBpcyBpbiB0aGUgQ00gaXRhbGljIGZvbnQuCislIAogXGRlZlxwb3VuZHN7e1xpdFwkfX0KIAorJSBAcmVnaXN0ZXJlZHN5bWJvbCAtIFIgaW4gYSBjaXJjbGUuICBUaGUgZm9udCBmb3IgdGhlIFIgc2hvdWxkIHJlYWxseQorJSBiZSBzbWFsbGVyIHlldCwgYnV0IGxsbHNpemUgaXMgdGhlIGJlc3Qgd2UgY2FuIGRvIGZvciBub3cuCislIEFkYXB0ZWQgZnJvbSB0aGUgcGxhaW4udGV4IGRlZmluaXRpb24gb2YgXGNvcHlyaWdodC4KKyUKK1xkZWZccmVnaXN0ZXJlZHN5bWJvbHslCisgICRee3tcb29hbGlnbntcaGZpbFxyYWlzZS4wN2V4XGhib3h7XHNlbGVjdGZvbnRzXGxsbHNpemUgUn0lCisgICAgICAgICAgICAgICBcaGZpbFxjcmNyXE9yYn19JQorICAgIH0kJQorfQorCiAKIFxtZXNzYWdle3BhZ2UgaGVhZGluZ3MsfQogCkBAIC0xNjc3LDg3ICsxOTUzLDEwMyBAQAogXG5ld2lmXGlmc2V0c2hvcnRjb250ZW50c2FmdGVydGl0bGVwYWdlCiAgXGxldFxzZXRzaG9ydGNvbnRlbnRzYWZ0ZXJ0aXRsZXBhZ2UgPSBcc2V0c2hvcnRjb250ZW50c2FmdGVydGl0bGVwYWdldHJ1ZQogCi1cZGVmXHNob3J0dGl0bGVwYWdle1xwYXJzZWFyZ1xzaG9ydHRpdGxlcGFnZXp6en0KLVxkZWZcc2hvcnR0aXRsZXBhZ2V6enogIzF7XGJlZ2luZ3JvdXBcaGJveHt9XHZza2lwIDEuNWluIFxjaGFwcm0gXGNlbnRlcmxpbmV7IzF9JQorXHBhcnNlYXJnZGVmXHNob3J0dGl0bGVwYWdle1xiZWdpbmdyb3VwXGhib3h7fVx2c2tpcCAxLjVpbiBcY2hhcHJtIFxjZW50ZXJsaW5leyMxfSUKICAgICAgICAgXGVuZGdyb3VwXHBhZ2VcaGJveHt9XHBhZ2V9CiAKLVxkZWZcdGl0bGVwYWdle1xiZWdpbmdyb3VwIFxwYXJpbmRlbnQ9MHB0IFx0ZXh0Zm9udHMKLSAgIFxsZXRcc3VidGl0bGVybT1cdGVucm0KLSAgIFxkZWZcc3VidGl0bGVmb250e1xzdWJ0aXRsZXJtIFxub3JtYWxiYXNlbGluZXNraXAgPSAxM3B0IFxub3JtYWxiYXNlbGluZXN9JQotICAgJQotICAgXGRlZlxhdXRob3Jmb250e1xhdXRob3JybSBcbm9ybWFsYmFzZWxpbmVza2lwID0gMTZwdCBcbm9ybWFsYmFzZWxpbmVzCi0gICAgICAgICAgICAgICAgICAgXGxldFx0dD1cYXV0aG9ydHR9JQotICAgJQotICAgJSBMZWF2ZSBzb21lIHNwYWNlIGF0IHRoZSB2ZXJ5IHRvcCBvZiB0aGUgcGFnZS4KLSAgIFx2Z2x1ZVx0aXRsZXBhZ2V0b3BnbHVlCi0gICAlCi0gICAlIE5vdyB5b3UgY2FuIHByaW50IHRoZSB0aXRsZSB1c2luZyBAdGl0bGUuCi0gICBcZGVmXHRpdGxle1xwYXJzZWFyZ1x0aXRsZXp6en0lCi0gICBcZGVmXHRpdGxlenp6IyMxe1xsZWZ0bGluZXtcdGl0bGVmb250c1xybSAjIzF9Ci0gICAgICAgICAgICAgICAgICAgICUgcHJpbnQgYSBydWxlIGF0IHRoZSBwYWdlIGJvdHRvbSBhbHNvLgotICAgICAgICAgICAgICAgICAgICBcZmluaXNoZWR0aXRsZXBhZ2VmYWxzZQotICAgICAgICAgICAgICAgICAgICBcdnNraXA0cHQgXGhydWxlIGhlaWdodCA0cHQgd2lkdGggXGhzaXplIFx2c2tpcDRwdH0lCi0gICAlIE5vIHJ1bGUgYXQgcGFnZSBib3R0b20gdW5sZXNzIHdlIHByaW50IG9uZSBhdCB0aGUgdG9wIHdpdGggQHRpdGxlLgotICAgXGZpbmlzaGVkdGl0bGVwYWdldHJ1ZQotICAgJQotICAgJSBOb3cgeW91IGNhbiBwdXQgdGV4dCB1c2luZyBAc3VidGl0bGUuCi0gICBcZGVmXHN1YnRpdGxle1xwYXJzZWFyZ1xzdWJ0aXRsZXp6en0lCi0gICBcZGVmXHN1YnRpdGxlenp6IyMxe3tcc3VidGl0bGVmb250IFxyaWdodGxpbmV7IyMxfX19JQotICAgJQotICAgJSBAYXV0aG9yIHNob3VsZCBjb21lIGxhc3QsIGJ1dCBtYXkgY29tZSBtYW55IHRpbWVzLgotICAgXGRlZlxhdXRob3J7XHBhcnNlYXJnXGF1dGhvcnp6en0lCi0gICBcZGVmXGF1dGhvcnp6eiMjMXtcaWZzZWVuYXV0aG9yXGVsc2VcdnNraXAgMHB0IHBsdXMgMWZpbGxsXHNlZW5hdXRob3J0cnVlXGZpCi0gICAgICB7XGF1dGhvcmZvbnQgXGxlZnRsaW5leyMjMX19fSUKLSAgICUKLSAgICUgTW9zdCB0aXRsZSBgYHBhZ2VzJycgYXJlIGFjdHVhbGx5IHR3byBwYWdlcyBsb25nLCB3aXRoIHNwYWNlCi0gICAlIGF0IHRoZSB0b3Agb2YgdGhlIHNlY29uZC4gIFdlIGRvbid0IHdhbnQgdGhlIHJhZ2dlZCBsZWZ0IG9uIHRoZSBzZWNvbmQuCi0gICBcbGV0XG9sZHBhZ2UgPSBccGFnZQotICAgXGRlZlxwYWdleyUKK1xlbnZkZWZcdGl0bGVwYWdleyUKKyAgJSBPcGVuIG9uZSBleHRyYSBncm91cCwgYXMgd2Ugd2FudCB0byBjbG9zZSBpdCBpbiB0aGUgbWlkZGxlIG9mIFxFdGl0bGVwYWdlLgorICBcYmVnaW5ncm91cAorICAgIFxwYXJpbmRlbnQ9MHB0IFx0ZXh0Zm9udHMKKyAgICAlIExlYXZlIHNvbWUgc3BhY2UgYXQgdGhlIHZlcnkgdG9wIG9mIHRoZSBwYWdlLgorICAgIFx2Z2x1ZVx0aXRsZXBhZ2V0b3BnbHVlCisgICAgJSBObyBydWxlIGF0IHBhZ2UgYm90dG9tIHVubGVzcyB3ZSBwcmludCBvbmUgYXQgdGhlIHRvcCB3aXRoIEB0aXRsZS4KKyAgICBcZmluaXNoZWR0aXRsZXBhZ2V0cnVlCisgICAgJQorICAgICUgTW9zdCB0aXRsZSBgYHBhZ2VzJycgYXJlIGFjdHVhbGx5IHR3byBwYWdlcyBsb25nLCB3aXRoIHNwYWNlCisgICAgJSBhdCB0aGUgdG9wIG9mIHRoZSBzZWNvbmQuICBXZSBkb24ndCB3YW50IHRoZSByYWdnZWQgbGVmdCBvbiB0aGUgc2Vjb25kLgorICAgIFxsZXRcb2xkcGFnZSA9IFxwYWdlCisgICAgXGRlZlxwYWdleyUKICAgICAgIFxpZmZpbmlzaGVkdGl0bGVwYWdlXGVsc2UKLSAgICAgICAgIFxmaW5pc2h0aXRsZXBhZ2UKKwkgXGZpbmlzaHRpdGxlcGFnZQogICAgICAgXGZpCi0gICAgICBcb2xkcGFnZQogICAgICAgXGxldFxwYWdlID0gXG9sZHBhZ2UKLSAgICAgIFxoYm94e319JQotJSAgIFxkZWZccGFnZXtcb2xkcGFnZSBcaGJveHt9fQorICAgICAgXHBhZ2UKKyAgICAgIFxudWxsCisgICAgfSUKIH0KIAogXGRlZlxFdGl0bGVwYWdleyUKLSAgIFxpZmZpbmlzaGVkdGl0bGVwYWdlXGVsc2UKLSAgICAgIFxmaW5pc2h0aXRsZXBhZ2UKLSAgIFxmaQotICAgJSBJdCBpcyBpbXBvcnRhbnQgdG8gZG8gdGhlIHBhZ2UgYnJlYWsgYmVmb3JlIGVuZGluZyB0aGUgZ3JvdXAsCi0gICAlIGJlY2F1c2UgdGhlIGhlYWRsaW5lIGFuZCBmb290bGluZSBhcmUgb25seSBlbXB0eSBpbnNpZGUgdGhlIGdyb3VwLgotICAgJSBJZiB3ZSB1c2UgdGhlIG5ldyBkZWZpbml0aW9uIG9mIFxwYWdlLCB3ZSBhbHdheXMgZ2V0IGEgYmxhbmsgcGFnZQotICAgJSBhZnRlciB0aGUgdGl0bGUgcGFnZSwgd2hpY2ggd2UgY2VydGFpbmx5IGRvbid0IHdhbnQuCi0gICBcb2xkcGFnZQotICAgXGVuZGdyb3VwCi0gICAlCi0gICAlIE5lZWQgdGhpcyBiZWZvcmUgdGhlIFwuLi5hZnRlcnRpdGxlcGFnZSBjaGVja3Mgc28gdGhhdCBpZiB0aGV5IGFyZQotICAgJSBpbiBlZmZlY3QgdGhlIHRvYyBwYWdlcyB3aWxsIGNvbWUgb3V0IHdpdGggcGFnZSBudW1iZXJzLgotICAgXEhFQURJTkdTb24KLSAgICUKLSAgICUgSWYgdGhleSB3YW50IHNob3J0LCB0aGV5IGNlcnRhaW5seSB3YW50IGxvbmcgdG9vLgotICAgXGlmc2V0c2hvcnRjb250ZW50c2FmdGVydGl0bGVwYWdlCi0gICAgIFxzaG9ydGNvbnRlbnRzCi0gICAgIFxjb250ZW50cwotICAgICBcZ2xvYmFsXGxldFxzaG9ydGNvbnRlbnRzID0gXHJlbGF4Ci0gICAgIFxnbG9iYWxcbGV0XGNvbnRlbnRzID0gXHJlbGF4Ci0gICBcZmkKLSAgICUKLSAgIFxpZnNldGNvbnRlbnRzYWZ0ZXJ0aXRsZXBhZ2UKLSAgICAgXGNvbnRlbnRzCi0gICAgIFxnbG9iYWxcbGV0XGNvbnRlbnRzID0gXHJlbGF4Ci0gICAgIFxnbG9iYWxcbGV0XHNob3J0Y29udGVudHMgPSBccmVsYXgKLSAgIFxmaQorICAgIFxpZmZpbmlzaGVkdGl0bGVwYWdlXGVsc2UKKwlcZmluaXNodGl0bGVwYWdlCisgICAgXGZpCisgICAgJSBJdCBpcyBpbXBvcnRhbnQgdG8gZG8gdGhlIHBhZ2UgYnJlYWsgYmVmb3JlIGVuZGluZyB0aGUgZ3JvdXAsCisgICAgJSBiZWNhdXNlIHRoZSBoZWFkbGluZSBhbmQgZm9vdGxpbmUgYXJlIG9ubHkgZW1wdHkgaW5zaWRlIHRoZSBncm91cC4KKyAgICAlIElmIHdlIHVzZSB0aGUgbmV3IGRlZmluaXRpb24gb2YgXHBhZ2UsIHdlIGFsd2F5cyBnZXQgYSBibGFuayBwYWdlCisgICAgJSBhZnRlciB0aGUgdGl0bGUgcGFnZSwgd2hpY2ggd2UgY2VydGFpbmx5IGRvbid0IHdhbnQuCisgICAgXG9sZHBhZ2UKKyAgXGVuZGdyb3VwCisgICUKKyAgJSBOZWVkIHRoaXMgYmVmb3JlIHRoZSBcLi4uYWZ0ZXJ0aXRsZXBhZ2UgY2hlY2tzIHNvIHRoYXQgaWYgdGhleSBhcmUKKyAgJSBpbiBlZmZlY3QgdGhlIHRvYyBwYWdlcyB3aWxsIGNvbWUgb3V0IHdpdGggcGFnZSBudW1iZXJzLgorICBcSEVBRElOR1NvbgorICAlCisgICUgSWYgdGhleSB3YW50IHNob3J0LCB0aGV5IGNlcnRhaW5seSB3YW50IGxvbmcgdG9vLgorICBcaWZzZXRzaG9ydGNvbnRlbnRzYWZ0ZXJ0aXRsZXBhZ2UKKyAgICBcc2hvcnRjb250ZW50cworICAgIFxjb250ZW50cworICAgIFxnbG9iYWxcbGV0XHNob3J0Y29udGVudHMgPSBccmVsYXgKKyAgICBcZ2xvYmFsXGxldFxjb250ZW50cyA9IFxyZWxheAorICBcZmkKKyAgJQorICBcaWZzZXRjb250ZW50c2FmdGVydGl0bGVwYWdlCisgICAgXGNvbnRlbnRzCisgICAgXGdsb2JhbFxsZXRcY29udGVudHMgPSBccmVsYXgKKyAgICBcZ2xvYmFsXGxldFxzaG9ydGNvbnRlbnRzID0gXHJlbGF4CisgIFxmaQogfQogCiBcZGVmXGZpbmlzaHRpdGxlcGFnZXslCi0gICBcdnNraXA0cHQgXGhydWxlIGhlaWdodCAycHQgd2lkdGggXGhzaXplCi0gICBcdnNraXBcdGl0bGVwYWdlYm90dG9tZ2x1ZQotICAgXGZpbmlzaGVkdGl0bGVwYWdldHJ1ZQorICBcdnNraXA0cHQgXGhydWxlIGhlaWdodCAycHQgd2lkdGggXGhzaXplCisgIFx2c2tpcFx0aXRsZXBhZ2Vib3R0b21nbHVlCisgIFxmaW5pc2hlZHRpdGxlcGFnZXRydWUKIH0KIAorJSUlIE1hY3JvcyB0byBiZSB1c2VkIHdpdGhpbiBAdGl0bGVwYWdlOgorCitcbGV0XHN1YnRpdGxlcm09XHRlbnJtCitcZGVmXHN1YnRpdGxlZm9udHtcc3VidGl0bGVybSBcbm9ybWFsYmFzZWxpbmVza2lwID0gMTNwdCBcbm9ybWFsYmFzZWxpbmVzfQorCitcZGVmXGF1dGhvcmZvbnR7XGF1dGhvcnJtIFxub3JtYWxiYXNlbGluZXNraXAgPSAxNnB0IFxub3JtYWxiYXNlbGluZXMKKwkJXGxldFx0dD1cYXV0aG9ydHR9CisKK1xwYXJzZWFyZ2RlZlx0aXRsZXslCisgIFxjaGVja2Vudlx0aXRsZXBhZ2UKKyAgXGxlZnRsaW5le1x0aXRsZWZvbnRzXHJtICMxfQorICAlIHByaW50IGEgcnVsZSBhdCB0aGUgcGFnZSBib3R0b20gYWxzby4KKyAgXGZpbmlzaGVkdGl0bGVwYWdlZmFsc2UKKyAgXHZza2lwNHB0IFxocnVsZSBoZWlnaHQgNHB0IHdpZHRoIFxoc2l6ZSBcdnNraXA0cHQKK30KKworXHBhcnNlYXJnZGVmXHN1YnRpdGxleyUKKyAgXGNoZWNrZW52XHRpdGxlcGFnZQorICB7XHN1YnRpdGxlZm9udCBccmlnaHRsaW5leyMxfX0lCit9CisKKyUgQGF1dGhvciBzaG91bGQgY29tZSBsYXN0LCBidXQgbWF5IGNvbWUgbWFueSB0aW1lcy4KKyUgSXQgY2FuIGFsc28gYmUgdXNlZCBpbnNpZGUgQHF1b3RhdGlvbi4KKyUgCitccGFyc2VhcmdkZWZcYXV0aG9yeyUKKyAgXGRlZlx0ZW1we1xxdW90YXRpb259JQorICBcaWZ4XHRoaXNlbnZcdGVtcAorICAgIFxkZWZccXVvdGF0aW9uYXV0aG9yeyMxfSUgcHJpbnRlZCBpbiBcRXF1b3RhdGlvbi4KKyAgXGVsc2UKKyAgICBcY2hlY2tlbnZcdGl0bGVwYWdlCisgICAgXGlmc2VlbmF1dGhvclxlbHNlIFx2c2tpcCAwcHQgcGx1cyAxZmlsbGwgXHNlZW5hdXRob3J0cnVlIFxmaQorICAgIHtcYXV0aG9yZm9udCBcbGVmdGxpbmV7IzF9fSUKKyAgXGZpCit9CisKKwogJSUlIFNldCB1cCBwYWdlIGhlYWRpbmdzIGFuZCBmb290aW5ncy4KIAogXGxldFx0aGlzcGFnZT1cZm9saW8KQEAgLTE3NjcsNyArMjA1OSw3IEBACiBcbmV3dG9rc1xldmVuZm9vdGxpbmUgICAgJSBmb290bGluZSBvbiBldmVuIHBhZ2VzCiBcbmV3dG9rc1xvZGRmb290bGluZSAgICAgJSBmb290bGluZSBvbiBvZGQgcGFnZXMKIAotJSBOb3cgbWFrZSBUZXggdXNlIHRob3NlIHZhcmlhYmxlcworJSBOb3cgbWFrZSBUZVggdXNlIHRob3NlIHZhcmlhYmxlcwogXGhlYWRsaW5lPXt7XHRleHRmb250c1xybSBcaWZvZGRccGFnZW5vIFx0aGVcb2RkaGVhZGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcZWxzZSBcdGhlXGV2ZW5oZWFkbGluZSBcZml9fQogXGZvb3RsaW5lPXt7XHRleHRmb250c1xybSBcaWZvZGRccGFnZW5vIFx0aGVcb2RkZm9vdGxpbmUKQEAgLTE3ODEsMzIgKzIwNzMsMjcgQEAKICUgQGV2ZW5mb290aW5nIEB0aGlzZmlsZXx8CiAlIEBvZGRmb290aW5nIHx8QHRoaXNmaWxlCiAKKwogXGRlZlxldmVuaGVhZGluZ3tccGFyc2VhcmdcZXZlbmhlYWRpbmd4eHh9Ci1cZGVmXG9kZGhlYWRpbmd7XHBhcnNlYXJnXG9kZGhlYWRpbmd4eHh9Ci1cZGVmXGV2ZXJ5aGVhZGluZ3tccGFyc2VhcmdcZXZlcnloZWFkaW5neHh4fQotCi1cZGVmXGV2ZW5mb290aW5ne1xwYXJzZWFyZ1xldmVuZm9vdGluZ3h4eH0KLVxkZWZcb2RkZm9vdGluZ3tccGFyc2Vhcmdcb2RkZm9vdGluZ3h4eH0KLVxkZWZcZXZlcnlmb290aW5ne1xwYXJzZWFyZ1xldmVyeWZvb3Rpbmd4eHh9Ci0KLXtcY2F0Y29kZWBcQD0wICUKLQotXGdkZWZcZXZlbmhlYWRpbmd4eHggIzF7XGV2ZW5oZWFkaW5neXl5ICMxQHxAfEB8QHxcZmluaXNofQotXGdkZWZcZXZlbmhlYWRpbmd5eXkgIzFAfCMyQHwjM0B8IzRcZmluaXNoeyUKK1xkZWZcZXZlbmhlYWRpbmd4eHggIzF7XGV2ZW5oZWFkaW5neXl5ICMxXHxcfFx8XHxcZmluaXNofQorXGRlZlxldmVuaGVhZGluZ3l5eSAjMVx8IzJcfCMzXHwjNFxmaW5pc2h7JQogXGdsb2JhbFxldmVuaGVhZGxpbmU9e1xybGFwe1xjZW50ZXJsaW5leyMyfX1cbGluZXsjMVxoZmlsIzN9fX0KIAotXGdkZWZcb2RkaGVhZGluZ3h4eCAjMXtcb2RkaGVhZGluZ3l5eSAjMUB8QHxAfEB8XGZpbmlzaH0KLVxnZGVmXG9kZGhlYWRpbmd5eXkgIzFAfCMyQHwjM0B8IzRcZmluaXNoeyUKK1xkZWZcb2RkaGVhZGluZ3tccGFyc2Vhcmdcb2RkaGVhZGluZ3h4eH0KK1xkZWZcb2RkaGVhZGluZ3h4eCAjMXtcb2RkaGVhZGluZ3l5eSAjMVx8XHxcfFx8XGZpbmlzaH0KK1xkZWZcb2RkaGVhZGluZ3l5eSAjMVx8IzJcfCMzXHwjNFxmaW5pc2h7JQogXGdsb2JhbFxvZGRoZWFkbGluZT17XHJsYXB7XGNlbnRlcmxpbmV7IzJ9fVxsaW5leyMxXGhmaWwjM319fQogCi1cZ2RlZlxldmVyeWhlYWRpbmd4eHgjMXtcb2RkaGVhZGluZ3h4eHsjMX1cZXZlbmhlYWRpbmd4eHh7IzF9fSUKK1xwYXJzZWFyZ2RlZlxldmVyeWhlYWRpbmd7XG9kZGhlYWRpbmd4eHh7IzF9XGV2ZW5oZWFkaW5neHh4eyMxfX0lCiAKLVxnZGVmXGV2ZW5mb290aW5neHh4ICMxe1xldmVuZm9vdGluZ3l5eSAjMUB8QHxAfEB8XGZpbmlzaH0KLVxnZGVmXGV2ZW5mb290aW5neXl5ICMxQHwjMkB8IzNAfCM0XGZpbmlzaHslCitcZGVmXGV2ZW5mb290aW5ne1xwYXJzZWFyZ1xldmVuZm9vdGluZ3h4eH0KK1xkZWZcZXZlbmZvb3Rpbmd4eHggIzF7XGV2ZW5mb290aW5neXl5ICMxXHxcfFx8XHxcZmluaXNofQorXGRlZlxldmVuZm9vdGluZ3l5eSAjMVx8IzJcfCMzXHwjNFxmaW5pc2h7JQogXGdsb2JhbFxldmVuZm9vdGxpbmU9e1xybGFwe1xjZW50ZXJsaW5leyMyfX1cbGluZXsjMVxoZmlsIzN9fX0KIAotXGdkZWZcb2RkZm9vdGluZ3h4eCAjMXtcb2RkZm9vdGluZ3l5eSAjMUB8QHxAfEB8XGZpbmlzaH0KLVxnZGVmXG9kZGZvb3Rpbmd5eXkgIzFAfCMyQHwjM0B8IzRcZmluaXNoeyUKK1xkZWZcb2RkZm9vdGluZ3tccGFyc2Vhcmdcb2RkZm9vdGluZ3h4eH0KK1xkZWZcb2RkZm9vdGluZ3h4eCAjMXtcb2RkZm9vdGluZ3l5eSAjMVx8XHxcfFx8XGZpbmlzaH0KK1xkZWZcb2RkZm9vdGluZ3l5eSAjMVx8IzJcfCMzXHwjNFxmaW5pc2h7JQogICBcZ2xvYmFsXG9kZGZvb3RsaW5lID0ge1xybGFwe1xjZW50ZXJsaW5leyMyfX1cbGluZXsjMVxoZmlsIzN9fSUKICAgJQogICAlIExlYXZlIHNvbWUgc3BhY2UgZm9yIHRoZSBmb290bGluZS4gIEhvcGVmdWxseSBvayB0byBhc3N1bWUKQEAgLTE4MTUsOSArMjEwMiw4IEBACiAgIFxnbG9iYWxcYWR2YW5jZVx2c2l6ZSBieSAtXGJhc2VsaW5lc2tpcAogfQogCi1cZ2RlZlxldmVyeWZvb3Rpbmd4eHgjMXtcb2RkZm9vdGluZ3h4eHsjMX1cZXZlbmZvb3Rpbmd4eHh7IzF9fQotJQotfSUgdW5iaW5kIHRoZSBjYXRjb2RlIG9mIEAuCitccGFyc2VhcmdkZWZcZXZlcnlmb290aW5ne1xvZGRmb290aW5neHh4eyMxfVxldmVuZm9vdGluZ3h4eHsjMX19CisKIAogJSBAaGVhZGluZ3MgZG91YmxlICAgICAgdHVybnMgaGVhZGluZ3Mgb24gZm9yIGRvdWJsZS1zaWRlZCBwcmludGluZy4KICUgQGhlYWRpbmdzIHNpbmdsZSAgICAgIHR1cm5zIGhlYWRpbmdzIG9uIGZvciBzaW5nbGUtc2lkZWQgcHJpbnRpbmcuCkBAIC0xODMxLDcgKzIxMTcsNyBAQAogCiBcZGVmXGhlYWRpbmdzICMxIHtcY3NuYW1lIEhFQURJTkdTIzFcZW5kY3NuYW1lfQogCi1cZGVmXEhFQURJTkdTb2ZmeworXGRlZlxIRUFESU5HU29mZnslCiBcZ2xvYmFsXGV2ZW5oZWFkbGluZT17XGhmaWx9IFxnbG9iYWxcZXZlbmZvb3RsaW5lPXtcaGZpbH0KIFxnbG9iYWxcb2RkaGVhZGxpbmU9e1xoZmlsfSBcZ2xvYmFsXG9kZGZvb3RsaW5lPXtcaGZpbH19CiBcSEVBRElOR1NvZmYKQEAgLTE4NDAsNyArMjEyNiw3IEBACiAlIGNoYXB0ZXIgbmFtZSBvbiBpbnNpZGUgdG9wIG9mIHJpZ2h0IGhhbmQgcGFnZXMsIGRvY3VtZW50CiAlIHRpdGxlIG9uIGluc2lkZSB0b3Agb2YgbGVmdCBoYW5kIHBhZ2VzLCBhbmQgcGFnZSBudW1iZXJzIG9uIG91dHNpZGUgdG9wCiAlIGVkZ2Ugb2YgYWxsIHBhZ2VzLgotXGRlZlxIRUFESU5HU2RvdWJsZXsKK1xkZWZcSEVBRElOR1Nkb3VibGV7JQogXGdsb2JhbFxwYWdlbm89MQogXGdsb2JhbFxldmVuZm9vdGxpbmU9e1xoZmlsfQogXGdsb2JhbFxvZGRmb290bGluZT17XGhmaWx9CkBAIC0xODUyLDcgKzIxMzgsNyBAQAogCiAlIEZvciBzaW5nbGUtc2lkZWQgcHJpbnRpbmcsIGNoYXB0ZXIgdGl0bGUgZ29lcyBhY3Jvc3MgdG9wIGxlZnQgb2YgcGFnZSwKICUgcGFnZSBudW1iZXIgb24gdG9wIHJpZ2h0LgotXGRlZlxIRUFESU5HU3NpbmdsZXsKK1xkZWZcSEVBRElOR1NzaW5nbGV7JQogXGdsb2JhbFxwYWdlbm89MQogXGdsb2JhbFxldmVuZm9vdGxpbmU9e1xoZmlsfQogXGdsb2JhbFxvZGRmb290bGluZT17XGhmaWx9CkBAIC0xODk5LDEyICsyMTg1LDExIEBACiAlIEBzZXR0aXRsZSBsaW5lLi4uICBzcGVjaWZpZXMgdGhlIHRpdGxlIG9mIHRoZSBkb2N1bWVudCwgZm9yIGhlYWRpbmdzLgogJSBJdCBnZW5lcmF0ZXMgbm8gb3V0cHV0IG9mIGl0cyBvd24uCiBcZGVmXHRoaXN0aXRsZXtccHV0d29yZE5vVGl0bGV9Ci1cZGVmXHNldHRpdGxle1xwYXJzZWFyZ1xzZXR0aXRsZXp6en0KLVxkZWZcc2V0dGl0bGV6enogIzF7XGdkZWZcdGhpc3RpdGxleyMxfX0KK1xkZWZcc2V0dGl0bGV7XHBhcnNlYXJne1xnZGVmXHRoaXN0aXRsZX19CiAKIAogXG1lc3NhZ2V7dGFibGVzLH0KLSUgVGFibGVzIC0tIEB0YWJsZSwgQGZ0YWJsZSwgQHZ0YWJsZSwgQGl0ZW0oeCksIEBraXRlbSh4KSwgQHhpdGVtKHgpLgorJSBUYWJsZXMgLS0gQHRhYmxlLCBAZnRhYmxlLCBAdnRhYmxlLCBAaXRlbSh4KS4KIAogJSBkZWZhdWx0IGluZGVudGF0aW9uIG9mIHRhYmxlIHRleHQKIFxuZXdkaW1lblx0YWJsZWluZGVudCBcdGFibGVpbmRlbnQ9LjhpbgpAQCAtMTkxNiw3ICsyMjAxLDcgQEAKICUgdXNlZCBpbnRlcm5hbGx5IGZvciBcaXRlbWluZGVudCBtaW51cyBcaXRlbW1hcmdpbgogXG5ld2RpbWVuXGl0ZW1tYXgKIAotJSBOb3RlIEB0YWJsZSwgQHZ0YWJsZSwgYW5kIEB2dGFibGUgZGVmaW5lIEBpdGVtLCBAaXRlbXgsIGV0Yy4sIHdpdGgKKyUgTm90ZSBAdGFibGUsIEBmdGFibGUsIGFuZCBAdnRhYmxlIGRlZmluZSBAaXRlbSwgQGl0ZW14LCBldGMuLCB3aXRoCiAlIHRoZXNlIGRlZnMuCiAlIFRoZXkgYWxzbyBkZWZpbmUgXGl0ZW1pbmRleAogJSB0byBpbmRleCB0aGUgaXRlbSBuYW1lIGluIHdoYXRldmVyIG1hbm5lciBpcyBkZXNpcmVkIChwZXJoYXBzIG5vbmUpLgpAQCAtMTkyOCwyMiArMjIxMywxMCBAQAogXGRlZlxpbnRlcm5hbEJpdGVte1xzbWFsbGJyZWFrIFxwYXJzZWFyZ1xpdGVtenp6fQogXGRlZlxpbnRlcm5hbEJpdGVteHtcaXRlbXhwYXIgXHBhcnNlYXJnXGl0ZW16enp9CiAKLVxkZWZcaW50ZXJuYWxCeGl0ZW0gIiMxIntcZGVmXHhpdGVtc3VidG9waXh7IzF9IFxzbWFsbGJyZWFrIFxwYXJzZWFyZ1x4aXRlbXp6en0KLVxkZWZcaW50ZXJuYWxCeGl0ZW14ICIjMSJ7XGRlZlx4aXRlbXN1YnRvcGl4eyMxfSBcaXRlbXhwYXIgXHBhcnNlYXJnXHhpdGVtenp6fQotCi1cZGVmXGludGVybmFsQmtpdGVte1xzbWFsbGJyZWFrIFxwYXJzZWFyZ1xraXRlbXp6en0KLVxkZWZcaW50ZXJuYWxCa2l0ZW14e1xpdGVteHBhciBccGFyc2Vhcmdca2l0ZW16enp9Ci0KLVxkZWZca2l0ZW16enogIzF7XGRvc3ViaW5kIHtrd317XGNvZGV7IzF9fXtmb3Ige1xiZiBcbGFzdGZ1bmN0aW9ufX0lCi0gICAgICAgICAgICAgICAgIFxpdGVtenp6IHsjMX19Ci0KLVxkZWZceGl0ZW16enogIzF7XGRvc3ViaW5kIHtrd317XGNvZGV7IzF9fXtmb3Ige1xiZiBceGl0ZW1zdWJ0b3BpY319JQotICAgICAgICAgICAgICAgICBcaXRlbXp6eiB7IzF9fQotCiBcZGVmXGl0ZW16enogIzF7XGJlZ2luZ3JvdXAgJQogICBcYWR2YW5jZVxoc2l6ZSBieSAtXHJpZ2h0c2tpcAogICBcYWR2YW5jZVxoc2l6ZSBieSAtXHRhYmxlaW5kZW50Ci0gIFxzZXRib3gwPVxoYm94e1xpdGVtZm9udHsjMX19JQorICBcc2V0Ym94MD1caGJveHtcaXRlbWluZGljYXRleyMxfX0lCiAgIFxpdGVtaW5kZXh7IzF9JQogICBcbm9icmVhayAlIFRoaXMgcHJldmVudHMgYSBicmVhayBiZWZvcmUgQGl0ZW14LgogICAlCkBAIC0xOTk3LDkyICsyMjcwLDk1IEBACiAgIFxmaQogfQogCi1cZGVmXGl0ZW17XGVycm1lc3NhZ2V7QGl0ZW0gd2hpbGUgbm90IGluIGEgdGFibGV9fQotXGRlZlxpdGVteHtcZXJybWVzc2FnZXtAaXRlbXggd2hpbGUgbm90IGluIGEgdGFibGV9fQotXGRlZlxraXRlbXtcZXJybWVzc2FnZXtAa2l0ZW0gd2hpbGUgbm90IGluIGEgdGFibGV9fQotXGRlZlxraXRlbXh7XGVycm1lc3NhZ2V7QGtpdGVteCB3aGlsZSBub3QgaW4gYSB0YWJsZX19Ci1cZGVmXHhpdGVte1xlcnJtZXNzYWdle0B4aXRlbSB3aGlsZSBub3QgaW4gYSB0YWJsZX19Ci1cZGVmXHhpdGVteHtcZXJybWVzc2FnZXtAeGl0ZW14IHdoaWxlIG5vdCBpbiBhIHRhYmxlfX0KLQotJSBDb250YWlucyBhIGtsdWRnZSB0byBnZXQgQGVuZFtkZXNjcmlwdGlvbl0gdG8gd29yay4KLVxkZWZcZGVzY3JpcHRpb257XHRhYmxlentcZG9udGluZGV4fXsxfXt9e317fXt9fQorXGRlZlxpdGVte1xlcnJtZXNzYWdle0BpdGVtIHdoaWxlIG5vdCBpbiBhIGxpc3QgZW52aXJvbm1lbnR9fQorXGRlZlxpdGVteHtcZXJybWVzc2FnZXtAaXRlbXggd2hpbGUgbm90IGluIGEgbGlzdCBlbnZpcm9ubWVudH19CiAKICUgQHRhYmxlLCBAZnRhYmxlLCBAdnRhYmxlLgotXGRlZlx0YWJsZXtcYmVnaW5ncm91cFxpbkVOVlxvYmV5bGluZXNcb2JleXNwYWNlc1x0YWJsZXh9Ci17XG9iZXlsaW5lc1xvYmV5c3BhY2VzJQotXGdkZWZcdGFibGV4ICMxXl5NeyUKLVx0YWJsZXlcZG9udGluZGV4IzEgICAgICAgIFxlbmR0YWJsZXl9fQotCi1cZGVmXGZ0YWJsZXtcYmVnaW5ncm91cFxpbkVOVlxvYmV5bGluZXNcb2JleXNwYWNlc1xmdGFibGV4fQote1xvYmV5bGluZXNcb2JleXNwYWNlcyUKLVxnZGVmXGZ0YWJsZXggIzFeXk17JQotXHRhYmxleVxmbml0ZW1pbmRleCMxICAgICAgICBcZW5kdGFibGV5Ci1cZGVmXEVmdGFibGV7XGVuZGdyYWZcYWZ0ZXJlbnZicmVha1xlbmRncm91cH0lCi1cbGV0XEV0YWJsZT1ccmVsYXh9fQotCi1cZGVmXHZ0YWJsZXtcYmVnaW5ncm91cFxpbkVOVlxvYmV5bGluZXNcb2JleXNwYWNlc1x2dGFibGV4fQote1xvYmV5bGluZXNcb2JleXNwYWNlcyUKLVxnZGVmXHZ0YWJsZXggIzFeXk17JQotXHRhYmxleVx2cml0ZW1pbmRleCMxICAgICAgICBcZW5kdGFibGV5Ci1cZGVmXEV2dGFibGV7XGVuZGdyYWZcYWZ0ZXJlbnZicmVha1xlbmRncm91cH0lCi1cbGV0XEV0YWJsZT1ccmVsYXh9fQotCi1cZGVmXGRvbnRpbmRleCAjMXt9Ci1cZGVmXGZuaXRlbWluZGV4ICMxe1xkb2luZCB7Zm59e1xjb2RleyMxfX19JQotXGRlZlx2cml0ZW1pbmRleCAjMXtcZG9pbmQge3ZyfXtcY29kZXsjMX19fSUKLQote1xvYmV5c3BhY2VzICUKLVxnZGVmXHRhYmxleSMxIzIgIzMgIzQgIzUgIzYgIzdcZW5kdGFibGV5e1xlbmRncm91cCUKLVx0YWJsZXp7IzF9eyMyfXsjM317IzR9eyM1fXsjNn19fQotCi1cZGVmXHRhYmxleiAjMSMyIzMjNCM1IzZ7JQotXGFib3ZlZW52YnJlYWsgJQotXGJlZ2luZ3JvdXAgJQotXGRlZlxFZGVzY3JpcHRpb257XEV0YWJsZX0lIE5lY2Vzc2FyeSBrbHVkZ2UuCi1cbGV0XGl0ZW1pbmRleD0jMSUKLVxpZm51bSAwIzM+MCBcYWR2YW5jZSBcbGVmdHNraXAgYnkgIzNcbWlsIFxmaSAlCi1caWZudW0gMCM0PjAgXHRhYmxlaW5kZW50PSM0XG1pbCBcZmkgJQotXGlmbnVtIDAjNT4wIFxhZHZhbmNlIFxyaWdodHNraXAgYnkgIzVcbWlsIFxmaSAlCi1cZGVmXGl0ZW1mb250eyMyfSUKLVxpdGVtbWF4PVx0YWJsZWluZGVudCAlCi1cYWR2YW5jZSBcaXRlbW1heCBieSAtXGl0ZW1tYXJnaW4gJQotXGFkdmFuY2UgXGxlZnRza2lwIGJ5IFx0YWJsZWluZGVudCAlCi1cZXhkZW50YW1vdW50PVx0YWJsZWluZGVudAotXHBhcmluZGVudCA9IDBwdAotXHBhcnNraXAgPSBcc21hbGxza2lwYW1vdW50Ci1caWZkaW0gXHBhcnNraXA9MHB0IFxwYXJza2lwPTJwdCBcZmklCi1cZGVmXEV0YWJsZXtcZW5kZ3JhZlxhZnRlcmVudmJyZWFrXGVuZGdyb3VwfSUKLVxsZXRcaXRlbSA9IFxpbnRlcm5hbEJpdGVtICUKLVxsZXRcaXRlbXggPSBcaW50ZXJuYWxCaXRlbXggJQotXGxldFxraXRlbSA9IFxpbnRlcm5hbEJraXRlbSAlCi1cbGV0XGtpdGVteCA9IFxpbnRlcm5hbEJraXRlbXggJQotXGxldFx4aXRlbSA9IFxpbnRlcm5hbEJ4aXRlbSAlCi1cbGV0XHhpdGVteCA9IFxpbnRlcm5hbEJ4aXRlbXggJQorXGVudmRlZlx0YWJsZXslCisgIFxsZXRcaXRlbWluZGV4XGdvYmJsZQorICBcdGFibGV4CiB9CitcZW52ZGVmXGZ0YWJsZXslCisgIFxkZWZcaXRlbWluZGV4ICMjMXtcZG9pbmQge2ZufXtcY29kZXsjIzF9fX0lCisgIFx0YWJsZXgKK30KK1xlbnZkZWZcdnRhYmxleyUKKyAgXGRlZlxpdGVtaW5kZXggIyMxe1xkb2luZCB7dnJ9e1xjb2RleyMjMX19fSUKKyAgXHRhYmxleAorfQorXGRlZlx0YWJsZXgjMXslCisgIFxkZWZcaXRlbWluZGljYXRleyMxfSUKKyAgXHBhcnNlYXJnXHRhYmxleQorfQorXGRlZlx0YWJsZXkjMXslCisgIHslCisgICAgXG1ha2V2YWx1ZWV4cGFuZGFibGUKKyAgICBcZWRlZlx0ZW1we1xub2V4cGFuZFx0YWJsZXogIzFcc3BhY2Vcc3BhY2Vcc3BhY2V9JQorICAgIFxleHBhbmRhZnRlcgorICB9XHRlbXAgXGVuZHRhYmxlegorfQorXGRlZlx0YWJsZXogIzEgIzIgIzMgIzRcZW5kdGFibGV6eyUKKyAgXGFib3ZlZW52YnJlYWsKKyAgXGlmbnVtIDAjMT4wIFxhZHZhbmNlIFxsZWZ0c2tpcCBieSAjMVxtaWwgXGZpCisgIFxpZm51bSAwIzI+MCBcdGFibGVpbmRlbnQ9IzJcbWlsIFxmaQorICBcaWZudW0gMCMzPjAgXGFkdmFuY2UgXHJpZ2h0c2tpcCBieSAjM1xtaWwgXGZpCisgIFxpdGVtbWF4PVx0YWJsZWluZGVudAorICBcYWR2YW5jZSBcaXRlbW1heCBieSAtXGl0ZW1tYXJnaW4KKyAgXGFkdmFuY2UgXGxlZnRza2lwIGJ5IFx0YWJsZWluZGVudAorICBcZXhkZW50YW1vdW50PVx0YWJsZWluZGVudAorICBccGFyaW5kZW50ID0gMHB0CisgIFxwYXJza2lwID0gXHNtYWxsc2tpcGFtb3VudAorICBcaWZkaW0gXHBhcnNraXA9MHB0IFxwYXJza2lwPTJwdCBcZmkKKyAgXGxldFxpdGVtID0gXGludGVybmFsQml0ZW0KKyAgXGxldFxpdGVteCA9IFxpbnRlcm5hbEJpdGVteAorfQorXGRlZlxFdGFibGV7XGVuZGdyYWZcYWZ0ZXJlbnZicmVha30KK1xsZXRcRWZ0YWJsZVxFdGFibGUKK1xsZXRcRXZ0YWJsZVxFdGFibGUKK1xsZXRcRWl0ZW1pemVcRXRhYmxlCitcbGV0XEVlbnVtZXJhdGVcRXRhYmxlCiAKICUgVGhpcyBpcyB0aGUgY291bnRlciB1c2VkIGJ5IEBlbnVtZXJhdGUsIHdoaWNoIGlzIHJlYWxseSBAaXRlbWl6ZQogCiBcbmV3Y291bnQgXGl0ZW1ubwogCi1cZGVmXGl0ZW1pemV7XHBhcnNlYXJnXGl0ZW1pemV6enp9CitcZW52ZGVmXGl0ZW1pemV7XHBhcnNlYXJnXGRvaXRlbWl6ZX0KIAotXGRlZlxpdGVtaXplenp6ICMxeyUKLSAgXGJlZ2luZ3JvdXAgJSBlbmRlZCBieSB0aGUgQGVuZCBpdGVtaXplCi0gIFxpdGVtaXpleSB7IzF9e1xFaXRlbWl6ZX0KK1xkZWZcZG9pdGVtaXplIzF7JQorICBcYWJvdmVlbnZicmVhaworICBcaXRlbW1heD1caXRlbWluZGVudAorICBcYWR2YW5jZVxpdGVtbWF4IGJ5IC1caXRlbW1hcmdpbgorICBcYWR2YW5jZVxsZWZ0c2tpcCBieSBcaXRlbWluZGVudAorICBcZXhkZW50YW1vdW50PVxpdGVtaW5kZW50CisgIFxwYXJpbmRlbnQ9MHB0CisgIFxwYXJza2lwPVxzbWFsbHNraXBhbW91bnQKKyAgXGlmZGltXHBhcnNraXA9MHB0IFxwYXJza2lwPTJwdCBcZmkKKyAgXGRlZlxpdGVtY29udGVudHN7IzF9JQorICAlIEBpdGVtaXplIHdpdGggbm8gYXJnIGlzIGVxdWl2YWxlbnQgdG8gQGl0ZW1pemUgQGJ1bGxldC4KKyAgXGlmeFxpdGVtY29udGVudHNcZW1wdHlcZGVmXGl0ZW1jb250ZW50c3tcYnVsbGV0fVxmaQorICBcbGV0XGl0ZW09XGl0ZW1pemVpdGVtCiB9CiAKLVxkZWZcaXRlbWl6ZXkgIzEjMnslCi1cYWJvdmVlbnZicmVhayAlCi1caXRlbW1heD1caXRlbWluZGVudCAlCi1cYWR2YW5jZSBcaXRlbW1heCBieSAtXGl0ZW1tYXJnaW4gJQotXGFkdmFuY2UgXGxlZnRza2lwIGJ5IFxpdGVtaW5kZW50ICUKLVxleGRlbnRhbW91bnQ9XGl0ZW1pbmRlbnQKLVxwYXJpbmRlbnQgPSAwcHQgJQotXHBhcnNraXAgPSBcc21hbGxza2lwYW1vdW50ICUKLVxpZmRpbSBccGFyc2tpcD0wcHQgXHBhcnNraXA9MnB0IFxmaSUKLVxkZWYjMntcZW5kZ3JhZlxhZnRlcmVudmJyZWFrXGVuZGdyb3VwfSUKLVxkZWZcaXRlbWNvbnRlbnRzeyMxfSUKLVxsZXRcaXRlbT1caXRlbWl6ZWl0ZW19CislIERlZmluaXRpb24gb2YgQGl0ZW0gd2hpbGUgaW5zaWRlIEBpdGVtaXplIGFuZCBAZW51bWVyYXRlLgorJQorXGRlZlxpdGVtaXplaXRlbXslCisgIFxhZHZhbmNlXGl0ZW1ubyBieSAxICAlIGZvciBlbnVtZXJhdGlvbnMKKyAge1xsZXRccGFyPVxlbmRncmFmIFxzbWFsbGJyZWFrfSUgcmVhc29uYWJsZSBwbGFjZSB0byBicmVhaworICB7JQorICAgJSBJZiB0aGUgZG9jdW1lbnQgaGFzIGFuIEBpdGVtaXplIGRpcmVjdGx5IGFmdGVyIGEgc2VjdGlvbiB0aXRsZSwgYQorICAgJSBcbm9icmVhayB3aWxsIGJlIGxhc3Qgb24gdGhlIGxpc3QsIGFuZCBcc2VjdGlvbmhlYWRpbmcgd2lsbCBoYXZlCisgICAlIGRvbmUgYSBcdnNraXAtXHBhcnNraXAuICBJbiB0aGF0IGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gemVybworICAgJSBwYXJza2lwLCBvciB0aGUgaXRlbSB0ZXh0IHdpbGwgY3Jhc2ggd2l0aCB0aGUgaGVhZGluZy4gIE9uIHRoZQorICAgJSBvdGhlciBoYW5kLCB3aGVuIHRoZXJlIGlzIG5vcm1hbCB0ZXh0IHByZWNlZGluZyB0aGUgaXRlbSAoYXMgdGhlcmUKKyAgICUgdXN1YWxseSBpcyksIHdlIGRvIHdhbnQgdG8gemVybyBwYXJza2lwLCBvciB0aGVyZSB3b3VsZCBiZSB0b28gbXVjaAorICAgJSBzcGFjZS4gIEluIHRoYXQgY2FzZSwgd2Ugd29uJ3QgaGF2ZSBhIFxub2JyZWFrIGJlZm9yZS4gIEF0IGxlYXN0CisgICAlIHRoYXQncyB0aGUgdGhlb3J5LgorICAgXGlmbnVtXGxhc3RwZW5hbHR5PDEwMDAwIFxwYXJza2lwPTBpbiBcZmkKKyAgIFxub2luZGVudAorICAgXGhib3ggdG8gMHB0e1xoc3MgXGl0ZW1jb250ZW50cyBca2VyblxpdGVtbWFyZ2lufSUKKyAgIFx2YWRqdXN0e1xwZW5hbHR5IDEyMDB9fSUgbm90IGdvb2QgdG8gYnJlYWsgYWZ0ZXIgZmlyc3QgbGluZSBvZiBpdGVtLgorICBcZmx1c2hjcgorfQogCiAlIFxzcGxpdG9mZiBUT0tFTlNcZW5kbWFyayBkZWZpbmVzIFxmaXJzdCB0byBiZSB0aGUgZmlyc3QgdG9rZW4gaW4KICUgVE9LRU5TLCBhbmQgXHJlc3QgdG8gYmUgdGhlIHJlbWFpbmRlci4KQEAgLTIwOTMsMTEgKzIzNjksOCBAQAogJSBvciBudW1iZXIsIHRvIHNwZWNpZnkgdGhlIGZpcnN0IGxhYmVsIGluIHRoZSBlbnVtZXJhdGVkIGxpc3QuICBObwogJSBhcmd1bWVudCBpcyB0aGUgc2FtZSBhcyBgMScuCiAlCi1cZGVmXGVudW1lcmF0ZXtccGFyc2VhcmdcZW51bWVyYXRlenp6fQotXGRlZlxlbnVtZXJhdGV6enogIzF7XGVudW1lcmF0ZXkgIzEgIFxlbmRlbnVtZXJhdGV5fQorXGVudnBhcnNlYXJnZGVmXGVudW1lcmF0ZXtcZW51bWVyYXRleSAjMSAgXGVuZGVudW1lcmF0ZXl9CiBcZGVmXGVudW1lcmF0ZXkgIzEgIzJcZW5kZW51bWVyYXRleXslCi0gIFxiZWdpbmdyb3VwICUgZW5kZWQgYnkgdGhlIEBlbmQgZW51bWVyYXRlCi0gICUKICAgJSBJZiB3ZSB3ZXJlIGdpdmVuIG5vIGFyZ3VtZW50LCBwcmV0ZW5kIHdlIHdlcmUgZ2l2ZW4gYDEnLgogICBcZGVmXHRoZWFyZ3sjMX0lCiAgIFxpZnhcdGhlYXJnXGVtcHR5IFxkZWZcdGhlYXJnezF9XGZpCkBAIC0yMTY4LDEzICsyNDQxLDEzIEBACiAgIH0lCiB9CiAKLSUgQ2FsbCBpdGVtaXpleSwgYWRkaW5nIGEgcGVyaW9kIHRvIHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgc3VwcGx5aW5nIHRoZQorJSBDYWxsIFxkb2l0ZW1pemUsIGFkZGluZyBhIHBlcmlvZCB0byB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIHN1cHBseWluZyB0aGUKICUgY29tbW9uIGxhc3QgdHdvIGFyZ3VtZW50cy4gIEFsc28gc3VidHJhY3Qgb25lIGZyb20gdGhlIGluaXRpYWwgdmFsdWUgaW4KICUgXGl0ZW1ubywgc2luY2UgQGl0ZW0gaW5jcmVtZW50cyBcaXRlbW5vLgogJQogXGRlZlxzdGFydGVudW1lcmF0aW9uIzF7JQogICBcYWR2YW5jZVxpdGVtbm8gYnkgLTEKLSAgXGl0ZW1pemV5eyMxLn1cRWVudW1lcmF0ZVxmbHVzaGNyCisgIFxkb2l0ZW1pemV7IzEufVxmbHVzaGNyCiB9CiAKICUgQGFscGhhZW51bWVyYXRlIGFuZCBAY2Fwc2VudW1lcmF0ZSBhcmUgYWJicmV2aWF0aW9ucyBmb3IgZ2l2aW5nIGFuIGFyZwpAQCAtMjE4NSwxNiArMjQ1OCw2IEBACiBcZGVmXEVhbHBoYWVudW1lcmF0ZXtcRWVudW1lcmF0ZX0KIFxkZWZcRWNhcHNlbnVtZXJhdGV7XEVlbnVtZXJhdGV9CiAKLSUgRGVmaW5pdGlvbiBvZiBAaXRlbSB3aGlsZSBpbnNpZGUgQGl0ZW1pemUuCi0KLVxkZWZcaXRlbWl6ZWl0ZW17JQotXGFkdmFuY2VcaXRlbW5vIGJ5IDEKLXtcbGV0XHBhcj1cZW5kZ3JhZiBcc21hbGxicmVha30lCi1caWZobW9kZSBcZXJybWVzc2FnZXtJbiBobW9kZSBhdCBpdGVtaXplaXRlbX1cZmkKLXtccGFyc2tpcD0waW4gXGhza2lwIDBwdAotXGhib3ggdG8gMHB0e1xoc3MgXGl0ZW1jb250ZW50c1xoc2tpcCBcaXRlbW1hcmdpbn0lCi1cdmFkanVzdHtccGVuYWx0eSAxMjAwfX0lCi1cZmx1c2hjcn0KIAogJSBAbXVsdGl0YWJsZSBtYWNyb3MKICUgQW15IEhlbmRyaWNrc29uLCA4LzE4Lzk0LCAzLzYvOTYKQEAgLTIyMjEsMjQgKzI0ODQsMTQgQEAKICUgICBAbXVsdGl0YWJsZSB7Q29sdW1uIDEgdGVtcGxhdGV9IHtDb2x1bW4gMiB0ZW1wbGF0ZX0ge0NvbHVtbiAzIHRlbXBsYXRlfQogJSAgIEBpdGVtIC4uLgogJSAgIHVzaW5nIHRoZSB3aWRlc3QgdGVybSBkZXNpcmVkIGluIGVhY2ggY29sdW1uLgotJQotJSBGb3IgdGhvc2Ugd2hvIHdhbnQgdG8gdXNlIG1vcmUgdGhhbiBvbmUgbGluZSdzIHdvcnRoIG9mIHdvcmRzIGluCi0lIHRoZSBwcmVhbWJsZSwgYnJlYWsgdGhlIGxpbmUgd2l0aGluIG9uZSBhcmd1bWVudCBhbmQgaXQKLSUgd2lsbCBwYXJzZSBjb3JyZWN0bHksIGkuZS4sCi0lCi0lICAgICBAbXVsdGl0YWJsZSB7Q29sdW1uIDEgdGVtcGxhdGV9IHtDb2x1bW4gMiB0ZW1wbGF0ZX0ge0NvbHVtbiAzCi0lICAgICAgdGVtcGxhdGV9Ci0lIE5vdDoKLSUgICAgIEBtdWx0aXRhYmxlIHtDb2x1bW4gMSB0ZW1wbGF0ZX0ge0NvbHVtbiAyIHRlbXBsYXRlfQotJSAgICAgIHtDb2x1bW4gMyB0ZW1wbGF0ZX0KIAogJSBFYWNoIG5ldyB0YWJsZSBsaW5lIHN0YXJ0cyB3aXRoIEBpdGVtLCBlYWNoIHN1YnNlcXVlbnQgbmV3IGNvbHVtbgogJSBzdGFydHMgd2l0aCBAdGFiLiBFbXB0eSBjb2x1bW5zIG1heSBiZSBwcm9kdWNlZCBieSBzdXBwbHlpbmcgQHRhYidzCiAlIHdpdGggbm90aGluZyBiZXR3ZWVuIHRoZW0gZm9yIGFzIG1hbnkgdGltZXMgYXMgZW1wdHkgY29sdW1ucyBhcmUgbmVlZGVkLAogJSBpZSwgQHRhYkB0YWJAdGFiIHdpbGwgcHJvZHVjZSB0d28gZW1wdHkgY29sdW1ucy4KIAotJSBAaXRlbSwgQHRhYiwgQG11bHRpdGFibGUgb3IgQGVuZCBtdWx0aXRhYmxlIGRvIG5vdCBuZWVkIHRvIGJlIG9uIHRoZWlyCi0lIG93biBsaW5lcywgYnV0IGl0IHdpbGwgbm90IGh1cnQgaWYgdGhleSBhcmUuCislIEBpdGVtLCBAdGFiIGRvIG5vdCBuZWVkIHRvIGJlIG9uIHRoZWlyIG93biBsaW5lcywgYnV0IGl0IHdpbGwgbm90IGh1cnQKKyUgaWYgdGhleSBhcmUuCiAKICUgU2FtcGxlIG11bHRpdGFibGU6CiAKQEAgLTIyODIsMTMgKzI1MzUsMTIgQEAKIFxkZWZceGNvbHVtbmZyYWN0aW9uc3tcY29sdW1uZnJhY3Rpb25zfQogXG5ld2lmXGlmc2V0cGVyY2VudAogCi0lICMxIGlzIHRoZSBwYXJ0IG9mIHRoZSBAY29sdW1uZnJhY3Rpb24gYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LCB3aGljaAotJSBpcyBwcmVzdW1hYmx5IGVpdGhlciAwIG9yIHRoZSBlbXB0eSBzdHJpbmcgKGJ1dCB3ZSBkb24ndCBjaGVjaywgd2UKLSUganVzdCB0aHJvdyBpdCBhd2F5KS4gICMyIGlzIHRoZSBkZWNpbWFsIHBhcnQsIHdoaWNoIHdlIHVzZSBhcyB0aGUKLSUgcGVyY2VudCBvZiBcaHNpemUgZm9yIHRoaXMgY29sdW1uLgotXGRlZlxwaWNrdXB3aG9sZWZyYWN0aW9uIzEuIzIgeyUKKyUgIzEgaXMgdGhlIEBjb2x1bW5mcmFjdGlvbiwgdXN1YWxseSBhIGRlY2ltYWwgbnVtYmVyIGxpa2UgLjUsIGJ1dCBtaWdodAorJSBiZSBqdXN0IDEuICBXZSBqdXN0IHVzZSBpdCwgd2hhdGV2ZXIgaXQgaXMuCislIAorXGRlZlxwaWNrdXB3aG9sZWZyYWN0aW9uIzEgeyUKICAgXGdsb2JhbFxhZHZhbmNlXGNvbGNvdW50IGJ5IDEKLSAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lIGNvbFx0aGVcY29sY291bnRcZW5kY3NuYW1ley4jMlxoc2l6ZX0lCisgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSBjb2xcdGhlXGNvbGNvdW50XGVuZGNzbmFtZXsjMVxoc2l6ZX0lCiAgIFxzZXR1cHRhYmxlCiB9CiAKQEAgLTIzMjEsMTggKzI1NzMsMzAgQEAKICAgXGdvCiB9CiAKKyUgbXVsdGl0YWJsZS1vbmx5IGNvbW1hbmRzLgorJQorJSBAaGVhZGl0ZW0gc3RhcnRzIGEgaGVhZGluZyByb3csIHdoaWNoIHdlIHR5cGVzZXQgaW4gYm9sZC4KKyUgQXNzaWdubWVudHMgaGF2ZSB0byBiZSBnbG9iYWwgc2luY2Ugd2UgYXJlIGluc2lkZSB0aGUgaW1wbGljaXQgZ3JvdXAKKyUgb2YgYW4gYWxpZ25tZW50IGVudHJ5LiAgTm90ZSB0aGF0IFxldmVyeWNyIHJlc2V0cyBcZXZlcnl0YWIuCitcZGVmXGhlYWRpdGVte1xjaGVja2VudlxtdWx0aXRhYmxlIFxjcmNyIFxnbG9iYWxcZXZlcnl0YWI9e1xiZn1cdGhlXGV2ZXJ5dGFifSUKKyUKKyUgQSBcdGFiIHVzZWQgdG8gaW5jbHVkZSBcaHNraXAxc3AuICBCdXQgdGhlbiB0aGUgc3BhY2UgaW4gYSB0ZW1wbGF0ZQorJSBsaW5lIGlzIG5vdCBlbm91Z2guICBUaGF0IGlzIGJhZC4gIFNvIGxldCdzIGdvIGJhY2sgdG8ganVzdCBgJicgdW50aWwKKyUgd2UgZW5jb3VudGVyIHRoZSBwcm9ibGVtIGl0IHdhcyBpbnRlbmRlZCB0byBzb2x2ZSBhZ2Fpbi4KKyUJCQkJCS0ta2FybCwgbmF0aGFuQGFjbS5vcmcsIDIwYXByOTkuCitcZGVmXHRhYntcY2hlY2tlbnZcbXVsdGl0YWJsZSAmXHRoZVxldmVyeXRhYn0lCisKICUgQG11bHRpdGFibGUgLi4uIEBlbmQgbXVsdGl0YWJsZSBkZWZpbml0aW9uczoKICUKLVxkZWZcbXVsdGl0YWJsZXtccGFyc2VhcmdcZG90YWJsZX0KLVxkZWZcZG90YWJsZSMxe1xiZ3JvdXAKK1xuZXd0b2tzXGV2ZXJ5dGFiICAlIGluc2VydCBhZnRlciBldmVyeSB0YWIuCislCitcZW52ZGVmXG11bHRpdGFibGV7JQogICBcdnNraXBccGFyc2tpcAotICBcbGV0XGl0ZW09XGNyY3J3aXRoZm9vdG5vdGVzCi0gICUgQSBcdGFiIHVzZWQgdG8gaW5jbHVkZSBcaHNraXAxc3AuICBCdXQgdGhlbiB0aGUgc3BhY2UgaW4gYSB0ZW1wbGF0ZQotICAlIGxpbmUgaXMgbm90IGVub3VnaC4gIFRoYXQgaXMgYmFkLiAgU28gbGV0J3MgZ28gYmFjayB0byBqdXN0ICYgdW50aWwKLSAgJSB3ZSBlbmNvdW50ZXIgdGhlIHByb2JsZW0gaXQgd2FzIGludGVuZGVkIHRvIHNvbHZlIGFnYWluLiAgLS1rYXJsLAotICAlIG5hdGhhbkBhY20ub3JnLCAyMGFwcjk5LgotICBcbGV0XHRhYj0mJQotICBcbGV0XHN0YXJ0Zm9vdGlucz1cc3RhcnRzYXZlZGZvb3Rub3RlCisgIFxzdGFydHNhdmluZ2luc2VydHMKKyAgJQorICAlIEBpdGVtIHdpdGhpbiBhIG11bHRpdGFibGUgc3RhcnRzIGEgbm9ybWFsIHJvdy4KKyAgXGxldFxpdGVtXGNyY3IKKyAgJQogICBcdG9sZXJhbmNlPTk1MDAKICAgXGhiYWRuZXNzPTk1MDAKICAgXHNldG11bHRpdGFibGVzcGFjaW5nCkBAIC0yMzQwLDcwICsyNjA0LDgwIEBACiAgIFxwYXJpbmRlbnQ9XG11bHRpdGFibGVwYXJpbmRlbnQKICAgXG92ZXJmdWxscnVsZT0wcHQKICAgXGdsb2JhbFxjb2xjb3VudD0wCi0gIFxkZWZcRW11bHRpdGFibGV7JQotICAgIFxnbG9iYWxcc2V0cGVyY2VudGZhbHNlCi0gICAgXGNyY3J3aXRoZm9vdG5vdGVzXGNyY3IKLSAgICBcZWdyb3VwXGVncm91cAorICAlCisgIFxldmVyeWNyID0geyUKKyAgICBcbm9hbGlnbnslCisgICAgICBcZ2xvYmFsXGV2ZXJ5dGFiPXt9JQorICAgICAgXGdsb2JhbFxjb2xjb3VudD0wICUgUmVzZXQgdGhlIGNvbHVtbiBjb3VudGVyLgorICAgICAgJSBDaGVjayBmb3Igc2F2ZWQgZm9vdG5vdGVzLCBldGMuCisgICAgICBcY2hlY2tpbnNlcnRzCisgICAgICAlIEtlZXBzIHVuZGVyZnVsbCBib3ggbWVzc2FnZXMgb2ZmIHdoZW4gdGFibGUgYnJlYWtzIG92ZXIgcGFnZXMuCisgICAgICAlXGZpbGJyZWFrCisJJSBNYXliZSBzbywgYnV0IGl0IGFsc28gY3JlYXRlcyByZWFsbHkgd2VpcmQgcGFnZSBicmVha3Mgd2hlbiB0aGUKKwklIHRhYmxlIGJyZWFrcyBvdmVyIHBhZ2VzLiBXb3VsZG4ndCBcdmZpbCBiZSBiZXR0ZXI/ICBXYWl0IHVudGlsIHRoZQorCSUgcHJvYmxlbSBtYW5pZmVzdHMgaXRzZWxmLCBzbyBpdCBjYW4gYmUgZml4ZWQgZm9yIHJlYWwgLS1rYXJsLgorICAgIH0lCiAgIH0lCiAgICUKKyAgXHBhcnNlYXJnXGRvbXVsdGl0YWJsZQorfQorXGRlZlxkb211bHRpdGFibGUjMXslCiAgICUgVG8gcGFyc2UgZXZlcnl0aGluZyBiZXR3ZWVuIEBtdWx0aXRhYmxlIGFuZCBAaXRlbToKICAgXHNldHVwdGFibGUjMSBcZW5kc2V0dXB0YWJsZQogICAlCi0gICUgXGV2ZXJ5Y3Igd2lsbCByZXNldCBjb2x1bW4gY291bnRlciwgXGNvbGNvdW50LCBhdCB0aGUgZW5kIG9mCi0gICUgZWFjaCBsaW5lLiBFdmVyeSBjb2x1bW4gZW50cnkgd2lsbCBjYXVzZSBcY29sY291bnQgdG8gYWR2YW5jZSBieSBvbmUuCi0gICUgVGhlIHRhYmxlIHByZWFtYmxlCi0gICUgbG9va3MgYXQgdGhlIGN1cnJlbnQgXGNvbGNvdW50IHRvIGZpbmQgdGhlIGNvcnJlY3QgY29sdW1uIHdpZHRoLgotICBcZXZlcnljcntcbm9hbGlnbnslCi0gICUKLSAgJSBcZmlsYnJlYWslJSBrZWVwcyB1bmRlcmZ1bGwgYm94IG1lc3NhZ2VzIG9mZiB3aGVuIHRhYmxlIGJyZWFrcyBvdmVyIHBhZ2VzLgotICAlIE1heWJlIHNvLCBidXQgaXQgYWxzbyBjcmVhdGVzIHJlYWxseSB3ZWlyZCBwYWdlIGJyZWFrcyB3aGVuIHRoZSB0YWJsZQotICAlIGJyZWFrcyBvdmVyIHBhZ2VzLiBXb3VsZG4ndCBcdmZpbCBiZSBiZXR0ZXI/ICBXYWl0IHVudGlsIHRoZSBwcm9ibGVtCi0gICUgbWFuaWZlc3RzIGl0c2VsZiwgc28gaXQgY2FuIGJlIGZpeGVkIGZvciByZWFsIC0ta2FybC4KLSAgICBcZ2xvYmFsXGNvbGNvdW50PTBccmVsYXh9fSUKLSAgJQogICAlIFRoaXMgcHJlYW1ibGUgc2V0cyB1cCBhIGdlbmVyaWMgY29sdW1uIGRlZmluaXRpb24sIHdoaWNoIHdpbGwKICAgJSBiZSB1c2VkIGFzIG1hbnkgdGltZXMgYXMgdXNlciBjYWxscyBmb3IgY29sdW1ucy4KICAgJSBcdnRvcCB3aWxsIHNldCBhIHNpbmdsZSBsaW5lIGFuZCB3aWxsIGFsc28gbGV0IHRleHQgd3JhcCBhbmQKICAgJSBjb250aW51ZSBmb3IgbWFueSBwYXJhZ3JhcGhzIGlmIGRlc2lyZWQuCi0gIFxoYWxpZ25cYmdyb3VwJlxnbG9iYWxcYWR2YW5jZVxjb2xjb3VudCBieSAxXHJlbGF4Ci0gICAgXG11bHRpc3RydXRcdnRvcHtcaHNpemU9XGV4cGFuZGFmdGVyXGNzbmFtZSBjb2xcdGhlXGNvbGNvdW50XGVuZGNzbmFtZQotICAlCi0gICUgSW4gb3JkZXIgdG8ga2VlcCBlbnRyaWVzIGZyb20gYnVtcGluZyBpbnRvIGVhY2ggb3RoZXIKLSAgJSB3ZSB3aWxsIGFkZCBhIFxsZWZ0c2tpcCBvZiBcbXVsdGl0YWJsZWNvbHNwYWNlIHRvIGFsbCBjb2x1bW5zIGFmdGVyCi0gICUgdGhlIGZpcnN0IG9uZS4KLSAgJQotICAlIElmIGEgdGVtcGxhdGUgaGFzIGJlZW4gdXNlZCwgd2Ugd2lsbCBhZGQgXG11bHRpdGFibGVjb2xzcGFjZQotICAlIHRvIHRoZSB3aWR0aCBvZiBlYWNoIHRlbXBsYXRlIGVudHJ5LgotICAlCi0gICUgSWYgdGhlIHVzZXIgaGFzIHNldCBwcmVhbWJsZSBpbiB0ZXJtcyBvZiBwZXJjZW50IG9mIFxoc2l6ZSB3ZSB3aWxsCi0gICUgdXNlIHRoYXQgZGltZW5zaW9uIGFzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLCBhbmQgdGhlIFxsZWZ0c2tpcAotICAlIHdpbGwga2VlcCBlbnRyaWVzIGZyb20gYnVtcGluZyBpbnRvIGVhY2ggb3RoZXIuICBUYWJsZSB3aWxsIHN0YXJ0IGF0Ci0gICUgbGVmdCBtYXJnaW4gYW5kIGZpbmFsIGNvbHVtbiB3aWxsIGp1c3RpZnkgYXQgcmlnaHQgbWFyZ2luLgotICAlCi0gICUgTWFrZSBzdXJlIHdlIGRvbid0IGluaGVyaXQgXHJpZ2h0c2tpcCBmcm9tIHRoZSBvdXRlciBlbnZpcm9ubWVudC4KLSAgXHJpZ2h0c2tpcD0wcHQKLSAgXGlmbnVtXGNvbGNvdW50PTEKLSAgICAlIFRoZSBmaXJzdCBjb2x1bW4gd2lsbCBiZSBpbmRlbnRlZCB3aXRoIHRoZSBzdXJyb3VuZGluZyB0ZXh0LgotICAgIFxhZHZhbmNlXGhzaXplIGJ5XGxlZnRza2lwCi0gIFxlbHNlCi0gICAgXGlmc2V0cGVyY2VudCBcZWxzZQotICAgICAgJSBJZiB1c2VyIGhhcyBub3Qgc2V0IHByZWFtYmxlIGluIHRlcm1zIG9mIHBlcmNlbnQgb2YgXGhzaXplCi0gICAgICAlIHdlIHdpbGwgYWR2YW5jZSBcaHNpemUgYnkgXG11bHRpdGFibGVjb2xzcGFjZS4KLSAgICAgIFxhZHZhbmNlXGhzaXplIGJ5IFxtdWx0aXRhYmxlY29sc3BhY2UKLSAgICBcZmkKLSAgICUgSW4gZWl0aGVyIGNhc2Ugd2Ugd2lsbCBtYWtlIFxsZWZ0c2tpcD1cbXVsdGl0YWJsZWNvbHNwYWNlOgotICBcbGVmdHNraXA9XG11bHRpdGFibGVjb2xzcGFjZQotICBcZmkKLSAgJSBJZ25vcmluZyBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgYXZvaWRzIGFuIG9jY2FzaW9uYWwgc3B1cmlvdXMKLSAgJSBibGFuayBsaW5lLCB3aGVuIFRlWCBkZWNpZGVzIHRvIGJyZWFrIHRoZSBsaW5lIGF0IHRoZSBzcGFjZSBiZWZvcmUgdGhlCi0gICUgYm94IGZyb20gdGhlIG11bHRpc3RydXQsIHNvIHRoZSBzdHJ1dCBlbmRzIHVwIG9uIGEgbGluZSBieSBpdHNlbGYuCi0gICUgRm9yIGV4YW1wbGU6Ci0gICUgQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMTEgLjg5Ci0gICUgQGl0ZW0gQGNvZGV7I30KLSAgJSBAdGFiIExlZ2FsIGhvbGlkYXkgd2hpY2ggaXMgdmFsaWQgaW4gbWFqb3IgcGFydHMgb2YgdGhlIHdob2xlIGNvdW50cnkuCi0gICUgSXMgYXV0b21hdGljYWxseSBwcm92aWRlZCB3aXRoIGhpZ2hsaWdodGluZyBzZXF1ZW5jZXMgcmVzcGVjdGl2ZWx5IG1hcmtpbmcKLSAgJSBjaGFyYWN0ZXJzLgotICBcbm9pbmRlbnRcaWdub3Jlc3BhY2VzIyNcdW5za2lwXG11bHRpc3RydXR9XGNyCisgIFxoYWxpZ25cYmdyb3VwICYlCisgICAgXGdsb2JhbFxhZHZhbmNlXGNvbGNvdW50IGJ5IDEKKyAgICBcbXVsdGlzdHJ1dAorICAgIFx2dG9weyUKKyAgICAgICUgVXNlIHRoZSBjdXJyZW50IFxjb2xjb3VudCB0byBmaW5kIHRoZSBjb3JyZWN0IGNvbHVtbiB3aWR0aDoKKyAgICAgIFxoc2l6ZT1cZXhwYW5kYWZ0ZXJcY3NuYW1lIGNvbFx0aGVcY29sY291bnRcZW5kY3NuYW1lCisgICAgICAlCisgICAgICAlIEluIG9yZGVyIHRvIGtlZXAgZW50cmllcyBmcm9tIGJ1bXBpbmcgaW50byBlYWNoIG90aGVyCisgICAgICAlIHdlIHdpbGwgYWRkIGEgXGxlZnRza2lwIG9mIFxtdWx0aXRhYmxlY29sc3BhY2UgdG8gYWxsIGNvbHVtbnMgYWZ0ZXIKKyAgICAgICUgdGhlIGZpcnN0IG9uZS4KKyAgICAgICUKKyAgICAgICUgSWYgYSB0ZW1wbGF0ZSBoYXMgYmVlbiB1c2VkLCB3ZSB3aWxsIGFkZCBcbXVsdGl0YWJsZWNvbHNwYWNlCisgICAgICAlIHRvIHRoZSB3aWR0aCBvZiBlYWNoIHRlbXBsYXRlIGVudHJ5LgorICAgICAgJQorICAgICAgJSBJZiB0aGUgdXNlciBoYXMgc2V0IHByZWFtYmxlIGluIHRlcm1zIG9mIHBlcmNlbnQgb2YgXGhzaXplIHdlIHdpbGwKKyAgICAgICUgdXNlIHRoYXQgZGltZW5zaW9uIGFzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLCBhbmQgdGhlIFxsZWZ0c2tpcAorICAgICAgJSB3aWxsIGtlZXAgZW50cmllcyBmcm9tIGJ1bXBpbmcgaW50byBlYWNoIG90aGVyLiAgVGFibGUgd2lsbCBzdGFydCBhdAorICAgICAgJSBsZWZ0IG1hcmdpbiBhbmQgZmluYWwgY29sdW1uIHdpbGwganVzdGlmeSBhdCByaWdodCBtYXJnaW4uCisgICAgICAlCisgICAgICAlIE1ha2Ugc3VyZSB3ZSBkb24ndCBpbmhlcml0IFxyaWdodHNraXAgZnJvbSB0aGUgb3V0ZXIgZW52aXJvbm1lbnQuCisgICAgICBccmlnaHRza2lwPTBwdAorICAgICAgXGlmbnVtXGNvbGNvdW50PTEKKwklIFRoZSBmaXJzdCBjb2x1bW4gd2lsbCBiZSBpbmRlbnRlZCB3aXRoIHRoZSBzdXJyb3VuZGluZyB0ZXh0LgorCVxhZHZhbmNlXGhzaXplIGJ5XGxlZnRza2lwCisgICAgICBcZWxzZQorCVxpZnNldHBlcmNlbnQgXGVsc2UKKwkgICUgSWYgdXNlciBoYXMgbm90IHNldCBwcmVhbWJsZSBpbiB0ZXJtcyBvZiBwZXJjZW50IG9mIFxoc2l6ZQorCSAgJSB3ZSB3aWxsIGFkdmFuY2UgXGhzaXplIGJ5IFxtdWx0aXRhYmxlY29sc3BhY2UuCisJICBcYWR2YW5jZVxoc2l6ZSBieSBcbXVsdGl0YWJsZWNvbHNwYWNlCisJXGZpCisgICAgICAgJSBJbiBlaXRoZXIgY2FzZSB3ZSB3aWxsIG1ha2UgXGxlZnRza2lwPVxtdWx0aXRhYmxlY29sc3BhY2U6CisgICAgICBcbGVmdHNraXA9XG11bHRpdGFibGVjb2xzcGFjZQorICAgICAgXGZpCisgICAgICAlIElnbm9yaW5nIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBhdm9pZHMgYW4gb2NjYXNpb25hbCBzcHVyaW91cworICAgICAgJSBibGFuayBsaW5lLCB3aGVuIFRlWCBkZWNpZGVzIHRvIGJyZWFrIHRoZSBsaW5lIGF0IHRoZSBzcGFjZSBiZWZvcmUgdGhlCisgICAgICAlIGJveCBmcm9tIHRoZSBtdWx0aXN0cnV0LCBzbyB0aGUgc3RydXQgZW5kcyB1cCBvbiBhIGxpbmUgYnkgaXRzZWxmLgorICAgICAgJSBGb3IgZXhhbXBsZToKKyAgICAgICUgQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMTEgLjg5CisgICAgICAlIEBpdGVtIEBjb2RleyN9CisgICAgICAlIEB0YWIgTGVnYWwgaG9saWRheSB3aGljaCBpcyB2YWxpZCBpbiBtYWpvciBwYXJ0cyBvZiB0aGUgd2hvbGUgY291bnRyeS4KKyAgICAgICUgSXMgYXV0b21hdGljYWxseSBwcm92aWRlZCB3aXRoIGhpZ2hsaWdodGluZyBzZXF1ZW5jZXMgcmVzcGVjdGl2ZWx5CisgICAgICAlIG1hcmtpbmcgY2hhcmFjdGVycy4KKyAgICAgIFxub2luZGVudFxpZ25vcmVzcGFjZXMjI1x1bnNraXBcbXVsdGlzdHJ1dAorICAgIH1cY3IKK30KK1xkZWZcRW11bHRpdGFibGV7JQorICBcY3JjcgorICBcZWdyb3VwICUgZW5kIHRoZSBcaGFsaWduCisgIFxnbG9iYWxcc2V0cGVyY2VudGZhbHNlCiB9CiAKIFxkZWZcc2V0bXVsdGl0YWJsZXNwYWNpbmd7JSB0ZXN0IHRvIHNlZSBpZiB1c2VyIGhhcyBzZXQgXG11bHRpdGFibGVsaW5lc3BhY2UuCkBAIC0yNDMzLDE2MyArMjcwNywzMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlJSB0aGFuIHNraXAgYmV0d2VlbiBsaW5lcyBpbiB0aGUgdGFibGUuCiBcZml9CiAKLSUgSW4gY2FzZSBhIEBmb290bm90ZSBhcHBlYXJzIGluc2lkZSBhbiBhbGlnbm1lbnQsIHNhdmUgdGhlIGZvb3Rub3RlCi0lIHRleHQgdG8gYSBib3ggYW5kIG1ha2UgdGhlIFxpbnNlcnQgd2hlbiBhIHJvdyBvZiB0aGUgdGFibGUgaXMKLSUgZmluaXNoZWQuICBPdGhlcndpc2UsIHRoZSBpbnNlcnRpb24gaXMgbG9zdCwgaXQgbmV2ZXIgbWlncmF0ZXMgdG8gdGhlCi0lIG1haW4gdmVydGljYWwgbGlzdC4gIC0ta2FzYWwsIDIyamFuMDMuCi0lCi1cbmV3Ym94XHNhdmVkZm9vdG5vdGVzCi0lCi0lIFxkb3RhYmxlIFxsZXQncyBcc3RhcnRmb290aW5zIHRvIHRoaXMsIHNvIHRoYXQgXGRvZm9vdG5vdGUgd2lsbCBjYWxsCi0lIGl0IGluc3RlYWQgb2Ygc3RhcnRpbmcgdGhlIGluc2VydGlvbiByaWdodCBhd2F5LgotXGRlZlxzdGFydHNhdmVkZm9vdG5vdGV7JQotICBcZ2xvYmFsXHNldGJveFxzYXZlZGZvb3Rub3RlcyA9IFx2Ym94XGJncm91cAotICAgIFx1bnZib3hcc2F2ZWRmb290bm90ZXMKLX0KLVxkZWZcY3JjcndpdGhmb290bm90ZXN7JQotICBcY3JjcgotICBcaWZ2b2lkXHNhdmVkZm9vdG5vdGVzIFxlbHNlCi0gICAgXG5vYWxpZ257XGluc2VydFxmb290aW5ze1xib3hcc2F2ZWRmb290bm90ZXN9fSUKLSAgXGZpCi19CiAKIFxtZXNzYWdle2NvbmRpdGlvbmFscyx9Ci0lIFByZXZlbnQgZXJyb3JzIGZvciBzZWN0aW9uIGNvbW1hbmRzLgotJSBVc2VkIGluIEBpZ25vcmUgYW5kIGluIGZhaWxpbmcgY29uZGl0aW9uYWxzLgotXGRlZlxpZ25vcmVzZWN0aW9uc3slCi0gIFxsZXRcY2hhcHRlcj1ccmVsYXgKLSAgXGxldFx1bm51bWJlcmVkPVxyZWxheAotICBcbGV0XHRvcD1ccmVsYXgKLSAgXGxldFx1bm51bWJlcmVkc2VjPVxyZWxheAotICBcbGV0XHVubnVtYmVyZWRzZWN0aW9uPVxyZWxheAotICBcbGV0XHVubnVtYmVyZWRzdWJzZWM9XHJlbGF4Ci0gIFxsZXRcdW5udW1iZXJlZHN1YnNlY3Rpb249XHJlbGF4Ci0gIFxsZXRcdW5udW1iZXJlZHN1YnN1YnNlYz1ccmVsYXgKLSAgXGxldFx1bm51bWJlcmVkc3Vic3Vic2VjdGlvbj1ccmVsYXgKLSAgXGxldFxzZWN0aW9uPVxyZWxheAotICBcbGV0XHN1YnNlYz1ccmVsYXgKLSAgXGxldFxzdWJzdWJzZWM9XHJlbGF4Ci0gIFxsZXRcc3Vic2VjdGlvbj1ccmVsYXgKLSAgXGxldFxzdWJzdWJzZWN0aW9uPVxyZWxheAotICBcbGV0XGFwcGVuZGl4PVxyZWxheAotICBcbGV0XGFwcGVuZGl4c2VjPVxyZWxheAotICBcbGV0XGFwcGVuZGl4c2VjdGlvbj1ccmVsYXgKLSAgXGxldFxhcHBlbmRpeHN1YnNlYz1ccmVsYXgKLSAgXGxldFxhcHBlbmRpeHN1YnNlY3Rpb249XHJlbGF4Ci0gIFxsZXRcYXBwZW5kaXhzdWJzdWJzZWM9XHJlbGF4Ci0gIFxsZXRcYXBwZW5kaXhzdWJzdWJzZWN0aW9uPVxyZWxheAotICBcbGV0XGNvbnRlbnRzPVxyZWxheAotICBcbGV0XHNtYWxsYm9vaz1ccmVsYXgKLSAgXGxldFx0aXRsZXBhZ2U9XHJlbGF4Ci19CiAKLSUgVXNlZCBpbiBuZXN0ZWQgY29uZGl0aW9uYWxzLCB3aGVyZSB3ZSBoYXZlIHRvIHBhcnNlIHRoZSBUZXhpbmZvIHNvdXJjZQotJSBhbmQgc28gd2FudCB0byB0dXJuIG9mZiBtb3N0IGNvbW1hbmRzLCBpbiBjYXNlIHRoZXkgYXJlIHVzZWQKLSUgaW5jb3JyZWN0bHkuCislIEBpZnRleCwgQGlmbm90ZG9jYm9vaywgQGlmbm90aHRtbCwgQGlmbm90aW5mbywgQGlmbm90cGxhaW50ZXh0LAorJSBAaWZub3R4bWwgYWx3YXlzIHN1Y2NlZWQuICBUaGV5IGN1cnJlbnRseSBkbyBub3RoaW5nOyB3ZSBkb24ndAorJSBhdHRlbXB0IHRvIGNoZWNrIHdoZXRoZXIgdGhlIGNvbmRpdGlvbmFscyBhcmUgcHJvcGVybHkgbmVzdGVkLiAgQnV0IHdlCislIGhhdmUgdG8gcmVtZW1iZXIgdGhhdCB0aGV5IGFyZSBjb25kaXRpb25hbHMsIHNvIHRoYXQgQGVuZCBkb2Vzbid0CislIGF0dGVtcHQgdG8gY2xvc2UgYW4gZW52aXJvbm1lbnQgZ3JvdXAuCiAlCi0lIFdlIHVzZSBcZW1wdHkgaW5zdGVhZCBvZiBccmVsYXggZm9yIHRoZSBAZGVmLi4uIGNvbW1hbmRzLCBzbyB0aGF0IFxlbmQKLSUgZG9lc24ndCB0aHJvdyBhbiBlcnJvci4gIEZvciBpbnN0YW5jZToKLSUgQGlnbm9yZQotJSBAZGVmZm4gLi4uCi0lIEBlbmQgZGVmZm4KLSUgQGVuZCBpZ25vcmUKLSUgCi0lIFRoZSBAZW5kIGRlZmZuIGlzIGdvaW5nIHRvIGdldCBleHBhbmRlZCwgYmVjYXVzZSB3ZSdyZSB0cnlpbmcgdG8gYWxsb3cKLSUgbmVzdGVkIGNvbmRpdGlvbmFscy4gIEJ1dCB3ZSBkb24ndCB3YW50IHRvIGV4cGFuZCB0aGUgYWN0dWFsIEBkZWZmbiwKLSUgc2luY2UgaXQgbWlnaHQgYmUgc3ludGFjdGljYWxseSBjb3JyZWN0IGFuZCBpbnRlbmRlZCB0byBiZSBpZ25vcmVkLgotJSBTaW5jZSBcZW5kIGNoZWNrcyBmb3IgXHJlbGF4LCB1c2luZyBcZW1wdHkgZG9lcyBub3QgY2F1c2UgYW4gZXJyb3IuCi0lIAotXGRlZlxpZ25vcmVtb3JlY29tbWFuZHN7JQotICBcbGV0XGRlZmNvZGVpbmRleCA9IFxyZWxheAotICBcbGV0XGRlZmN2ID0gXGVtcHR5Ci0gIFxsZXRcZGVmY3Z4ID0gXGVtcHR5Ci0gIFxsZXRcRWRlZmN2ID0gXGVtcHR5Ci0gIFxsZXRcZGVmZm4gPSBcZW1wdHkKLSAgXGxldFxkZWZmbnggPSBcZW1wdHkKLSAgXGxldFxFZGVmZm4gPSBcZW1wdHkKLSAgXGxldFxkZWZpbmRleCA9IFxyZWxheAotICBcbGV0XGRlZml2YXIgPSBcZW1wdHkKLSAgXGxldFxkZWZpdmFyeCA9IFxlbXB0eQotICBcbGV0XEVkZWZpdmFyID0gXGVtcHR5Ci0gIFxsZXRcZGVmbWFjID0gXGVtcHR5Ci0gIFxsZXRcZGVmbWFjeCA9IFxlbXB0eQotICBcbGV0XEVkZWZtYWMgPSBcZW1wdHkKLSAgXGxldFxkZWZtZXRob2QgPSBcZW1wdHkKLSAgXGxldFxkZWZtZXRob2R4ID0gXGVtcHR5Ci0gIFxsZXRcRWRlZm1ldGhvZCA9IFxlbXB0eQotICBcbGV0XGRlZm9wID0gXGVtcHR5Ci0gIFxsZXRcZGVmb3B4ID0gXGVtcHR5Ci0gIFxsZXRcRWRlZm9wID0gXGVtcHR5Ci0gIFxsZXRcZGVmb3B0ID0gXGVtcHR5Ci0gIFxsZXRcZGVmb3B0eCA9IFxlbXB0eQotICBcbGV0XEVkZWZvcHQgPSBcZW1wdHkKLSAgXGxldFxkZWZzcGVjID0gXGVtcHR5Ci0gIFxsZXRcZGVmc3BlY3ggPSBcZW1wdHkKLSAgXGxldFxFZGVmc3BlYyA9IFxlbXB0eQotICBcbGV0XGRlZnRwID0gXGVtcHR5Ci0gIFxsZXRcZGVmdHB4ID0gXGVtcHR5Ci0gIFxsZXRcRWRlZnRwID0gXGVtcHR5Ci0gIFxsZXRcZGVmdHlwZWZuID0gXGVtcHR5Ci0gIFxsZXRcZGVmdHlwZWZueCA9IFxlbXB0eQotICBcbGV0XEVkZWZ0eXBlZm4gPSBcZW1wdHkKLSAgXGxldFxkZWZ0eXBlZnVuID0gXGVtcHR5Ci0gIFxsZXRcZGVmdHlwZWZ1bnggPSBcZW1wdHkKLSAgXGxldFxFZGVmdHlwZWZ1biA9IFxlbXB0eQotICBcbGV0XGRlZnR5cGVpdmFyID0gXGVtcHR5Ci0gIFxsZXRcZGVmdHlwZWl2YXJ4ID0gXGVtcHR5Ci0gIFxsZXRcRWRlZnR5cGVpdmFyID0gXGVtcHR5Ci0gIFxsZXRcZGVmdHlwZW1ldGhvZCA9IFxlbXB0eQotICBcbGV0XGRlZnR5cGVtZXRob2R4ID0gXGVtcHR5Ci0gIFxsZXRcRWRlZnR5cGVtZXRob2QgPSBcZW1wdHkKLSAgXGxldFxkZWZ0eXBlb3AgPSBcZW1wdHkKLSAgXGxldFxkZWZ0eXBlb3B4ID0gXGVtcHR5Ci0gIFxsZXRcRWRlZnR5cGVvcCA9IFxlbXB0eQotICBcbGV0XGRlZnR5cGV2YXIgPSBcZW1wdHkKLSAgXGxldFxkZWZ0eXBldmFyeCA9IFxlbXB0eQotICBcbGV0XEVkZWZ0eXBldmFyID0gXGVtcHR5Ci0gIFxsZXRcZGVmdHlwZXZyID0gXGVtcHR5Ci0gIFxsZXRcZGVmdHlwZXZyeCA9IFxlbXB0eQotICBcbGV0XEVkZWZ0eXBldnIgPSBcZW1wdHkKLSAgXGxldFxkZWZ1biA9IFxlbXB0eQotICBcbGV0XGRlZnVueCA9IFxlbXB0eQotICBcbGV0XEVkZWZ1biA9IFxlbXB0eQotICBcbGV0XGRlZnZhciA9IFxlbXB0eQotICBcbGV0XGRlZnZhcnggPSBcZW1wdHkKLSAgXGxldFxFZGVmdmFyID0gXGVtcHR5Ci0gIFxsZXRcZGVmdnIgPSBcZW1wdHkKLSAgXGxldFxkZWZ2cnggPSBcZW1wdHkKLSAgXGxldFxFZGVmdnIgPSBcZW1wdHkKLSAgXGxldFxjbGVhciA9IFxyZWxheAotICBcbGV0XGRvd24gPSBccmVsYXgKLSAgXGxldFxldmVuZm9vdGluZyA9IFxyZWxheAotICBcbGV0XGV2ZW5oZWFkaW5nID0gXHJlbGF4Ci0gIFxsZXRcZXZlcnlmb290aW5nID0gXHJlbGF4Ci0gIFxsZXRcZXZlcnloZWFkaW5nID0gXHJlbGF4Ci0gIFxsZXRcaGVhZGluZ3MgPSBccmVsYXgKLSAgXGxldFxpbmNsdWRlID0gXHJlbGF4Ci0gIFxsZXRcaXRlbSA9IFxyZWxheAotICBcbGV0XGxvd2Vyc2VjdGlvbnMgPSBccmVsYXgKLSAgXGxldFxvZGRmb290aW5nID0gXHJlbGF4Ci0gIFxsZXRcb2RkaGVhZGluZyA9IFxyZWxheAotICBcbGV0XHByaW50aW5kZXggPSBccmVsYXgKLSAgXGxldFxweHJlZiA9IFxyZWxheAotICBcbGV0XHJhaXNlc2VjdGlvbnMgPSBccmVsYXgKLSAgXGxldFxyZWYgPSBccmVsYXgKLSAgXGxldFxzZXQgPSBccmVsYXgKLSAgXGxldFxzZXRjaGFwdGVybmV3cGFnZSA9IFxyZWxheAotICBcbGV0XHNldGNoYXB0ZXJzdHlsZSA9IFxyZWxheAotICBcbGV0XHNldHRpdGxlID0gXHJlbGF4Ci0gIFxsZXRcdXAgPSBccmVsYXgKLSAgXGxldFx2ZXJiYXRpbWluY2x1ZGUgPSBccmVsYXgKLSAgXGxldFx4cmVmID0gXHJlbGF4CitcZGVmXG1ha2Vjb25kIzF7JQorICBcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSAjMVxlbmRjc25hbWUgPSBccmVsYXgKKyAgXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgaXNjb25kLiMxXGVuZGNzbmFtZSA9IDEKIH0KK1xtYWtlY29uZHtpZnRleH0KK1xtYWtlY29uZHtpZm5vdGRvY2Jvb2t9CitcbWFrZWNvbmR7aWZub3RodG1sfQorXG1ha2Vjb25ke2lmbm90aW5mb30KK1xtYWtlY29uZHtpZm5vdHBsYWludGV4dH0KK1xtYWtlY29uZHtpZm5vdHhtbH0KIAogJSBJZ25vcmUgQGlnbm9yZSwgQGlmaHRtbCwgQGlmaW5mbywgYW5kIHRoZSBsaWtlLgogJQogXGRlZlxkaXJlbnRyeXtcZG9pZ25vcmV7ZGlyZW50cnl9fQotXGRlZlxkb2N1bWVudGRlc2NyaXB0aW9ud29yZHtkb2N1bWVudGRlc2NyaXB0aW9ufQogXGRlZlxkb2N1bWVudGRlc2NyaXB0aW9ue1xkb2lnbm9yZXtkb2N1bWVudGRlc2NyaXB0aW9ufX0KK1xkZWZcZG9jYm9va3tcZG9pZ25vcmV7ZG9jYm9va319CiBcZGVmXGh0bWx7XGRvaWdub3Jle2h0bWx9fQorXGRlZlxpZmRvY2Jvb2t7XGRvaWdub3Jle2lmZG9jYm9va319CiBcZGVmXGlmaHRtbHtcZG9pZ25vcmV7aWZodG1sfX0KIFxkZWZcaWZpbmZve1xkb2lnbm9yZXtpZmluZm99fQogXGRlZlxpZm5vdHRleHtcZG9pZ25vcmV7aWZub3R0ZXh9fQpAQCAtMjU5OSwxNDQgKzI3NDMsNzQgQEAKIFxkZWZcbWVudXtcZG9pZ25vcmV7bWVudX19CiBcZGVmXHhtbHtcZG9pZ25vcmV7eG1sfX0KIAotJSBAZGlyY2F0ZWdvcnkgQ0FURUdPUlkgIC0tIHNwZWNpZnkgYSBjYXRlZ29yeSBvZiB0aGUgZGlyIGZpbGUKLSUgd2hpY2ggdGhpcyBmaWxlIHNob3VsZCBiZWxvbmcgdG8uICBJZ25vcmUgdGhpcyBpbiBUZVguCi1cbGV0XGRpcmNhdGVnb3J5ID0gXGNvbW1lbnQKLQotJSBJZ25vcmUgdGV4dCB1bnRpbCBhIGxpbmUgYEBlbmQgIzEnLgorJSBJZ25vcmUgdGV4dCB1bnRpbCBhIGxpbmUgYEBlbmQgIzEnLCBrZWVwaW5nIHRyYWNrIG9mIG5lc3RlZCBjb25kaXRpb25hbHMuCiAlCislIEEgY291bnQgdG8gcmVtZW1iZXIgdGhlIGRlcHRoIG9mIG5lc3RpbmcuCitcbmV3Y291bnRcZG9pZ25vcmVjb3VudAorCiBcZGVmXGRvaWdub3JlIzF7XGJlZ2luZ3JvdXAKLSAgJSBEb24ndCBjb21wbGFpbiBhYm91dCBjb250cm9sIHNlcXVlbmNlcyB3ZSBoYXZlIGRlY2xhcmVkIFxvdXRlci4KLSAgXGlnbm9yZXNlY3Rpb25zCi0gICUKLSAgJSBEZWZpbmUgYSBjb21tYW5kIHRvIHN3YWxsb3cgdGV4dCB1bnRpbCB3ZSByZWFjaCBgQGVuZCAjMScuCi0gICUgVGhpcyBAIGlzIGEgY2F0Y29kZSAxMiB0b2tlbiAodGhhdCBpcyB0aGUgbm9ybWFsIGNhdGNvZGUgb2YgQCBpbgotICAlIHRoaXMgdGV4aW5mby50ZXggZmlsZSkuICBXZSBjaGFuZ2UgdGhlIGNhdGNvZGUgb2YgQCBiZWxvdyB0byBtYXRjaC4KLSAgXGxvbmdcZGVmXGRvaWdub3JldGV4dCMjMUBlbmQgIzF7XGVuZGRvaWdub3JlfSUKKyAgJSBTY2FuIGluIGBgdmVyYmF0aW0nJyBtb2RlOgorICBcY2F0Y29kZWBcQCA9IFxvdGhlcgorICBcY2F0Y29kZWBceyA9IFxvdGhlcgorICBcY2F0Y29kZWBcfSA9IFxvdGhlcgogICAlCiAgICUgTWFrZSBzdXJlIHRoYXQgc3BhY2VzIHR1cm4gaW50byB0b2tlbnMgdGhhdCBtYXRjaCB3aGF0IFxkb2lnbm9yZXRleHQgd2FudHMuCi0gIFxjYXRjb2RlXHNwYWNlQ2hhciA9IDEwCisgIFxzcGFjZWlzc3BhY2UKICAgJQotICAlIElnbm9yZSBicmFjZXMsIHRvbywgc28gbWlzbWF0Y2hlZCBicmFjZXMgZG9uJ3QgY2F1c2UgdHJvdWJsZS4KLSAgXGNhdGNvZGVgXHsgPSA5Ci0gIFxjYXRjb2RlYFx9ID0gOQorICAlIENvdW50IG51bWJlciBvZiAjMSdzIHRoYXQgd2UndmUgc2Vlbi4KKyAgXGRvaWdub3JlY291bnQgPSAwCiAgICUKLSAgJSBXZSBtdXN0IG5vdCBoYXZlIEBjIGludGVycHJldGVkIGFzIGEgY29udHJvbCBzZXF1ZW5jZS4KLSAgXGNhdGNvZGVgXEAgPSAxMgorICAlIFN3YWxsb3cgdGV4dCB1bnRpbCB3ZSByZWFjaCB0aGUgbWF0Y2hpbmcgYEBlbmQgIzEnLgorICBcZG9kb2lnbm9yZSB7IzF9JQorfQorCit7IFxjYXRjb2RlYF89MTEgJSBXZSB3YW50IHRvIHVzZSBcX1NUT1BfIHdoaWNoIGNhbm5vdCBhcHBlYXIgaW4gdGV4aW5mbyBzb3VyY2UuCisgIFxvYmV5bGluZXMgJQogICAlCi0gIFxkZWZcaWdub3Jld29yZHsjMX0lCi0gIFxpZnhcaWdub3Jld29yZFxkb2N1bWVudGRlc2NyaXB0aW9ud29yZAotICAgICUgVGhlIGMga2x1ZGdlIGJyZWFrcyBkb2N1bWVudGRlc2NyaXB0aW9uLCBzaW5jZQotICAgICUgYGRvY3VtZW50ZGVzY3JpcHRpb24nIGNvbnRhaW5zIGEgYGMnLiAgTWVhbnMgbm90IGV2ZXJ5dGhpbmcgd2lsbAotICAgICUgYmUgaWdub3JlZCBpbnNpZGUgQGRvY3VtZW50ZGVzY3JpcHRpb24sIGJ1dCBvaCB3ZWxsLi4uCi0gIFxlbHNlCi0gICAgJSBNYWtlIHRoZSBsZXR0ZXIgYyBhIGNvbW1lbnQgY2hhcmFjdGVyIHNvIHRoYXQgdGhlIHJlc3Qgb2YgdGhlIGxpbmUKLSAgICAlIHdpbGwgYmUgaWdub3JlZC4gVGhpcyB3YXksIHRoZSBkb2N1bWVudCBjYW4gaGF2ZSAoZm9yIGV4YW1wbGUpCi0gICAgJSAgIEBjIEBlbmQgaWZpbmZvCi0gICAgJSBhbmQgdGhlIEBlbmQgaWZpbmZvIHdpbGwgYmUgcHJvcGVybHkgaWdub3JlZC4KLSAgICAlIChXZSd2ZSBqdXN0IGNoYW5nZWQgQCB0byBjYXRjb2RlIDEyLikKLSAgICBcY2F0Y29kZWBcYyA9IDE0CisgIFxnZGVmXGRvZG9pZ25vcmUjMXslCisgICAgJSAjMSBjb250YWlucyB0aGUgc3RyaW5nIGBpZmluZm8nLgorICAgICUKKyAgICAlIERlZmluZSBhIGNvbW1hbmQgdG8gZmluZCB0aGUgbmV4dCBgQGVuZCAjMScsIHdoaWNoIG11c3QgYmUgb24gYSBsaW5lCisgICAgJSBieSBpdHNlbGYuCisgICAgXGxvbmdcZGVmXGRvaWdub3JldGV4dCMjMV5eTUBlbmQgIzF7XGRvaWdub3JldGV4dHl5eSMjMV5eTUAjMVxfU1RPUF99JQorICAgICUgQW5kIHRoaXMgY29tbWFuZCB0byBmaW5kIGFub3RoZXIgIzEgY29tbWFuZCwgYXQgdGhlIGJlZ2lubmluZyBvZiBhCisgICAgJSBsaW5lLiAgKE90aGVyd2lzZSwgd2Ugd291bGQgY29uc2lkZXIgYSBsaW5lIGBAYyBAaWZzZXQnLCBmb3IKKyAgICAlIGV4YW1wbGUsIHRvIGNvdW50IGFzIGFuIEBpZnNldCBmb3IgbmVzdGluZy4pCisgICAgXGxvbmdcZGVmXGRvaWdub3JldGV4dHl5eSMjMV5eTUAjMSMjMlxfU1RPUF97XGRvaWdub3JleXl5eyMjMn1cX1NUT1BffSUKKyAgICAlCisgICAgJSBBbmQgbm93IGV4cGFuZCB0aGF0IGNvbW1hbmQuCisgICAgXG9iZXlsaW5lcyAlCisgICAgXGRvaWdub3JldGV4dCBeXk0lCisgIH0lCit9CisKK1xkZWZcZG9pZ25vcmV5eXkjMXslCisgIFxkZWZcdGVtcHsjMX0lCisgIFxpZnhcdGVtcFxlbXB0eQkJCSUgTm90aGluZyBmb3VuZC4KKyAgICBcbGV0XG5leHRcZG9pZ25vcmV0ZXh0enp6CisgIFxlbHNlCQkJCQklIEZvdW5kIGEgbmVzdGVkIGNvbmRpdGlvbiwgLi4uCisgICAgXGFkdmFuY2VcZG9pZ25vcmVjb3VudCBieSAxCisgICAgXGxldFxuZXh0XGRvaWdub3JldGV4dHl5eQkJJSAuLi4sIGxvb2sgZm9yIGFub3RoZXIuCisgICAgJSBJZiB3ZSdyZSBoZXJlLCAjMSBlbmRzIHdpdGggXl5NXGlmaW5mbyAoZm9yIGV4YW1wbGUpLgogICBcZmkKLSAgJQotICAlIEFuZCBub3cgZXhwYW5kIHRoZSBjb21tYW5kIGRlZmluZWQgYWJvdmUuCi0gIFxkb2lnbm9yZXRleHQKKyAgXG5leHQgIzElIHRoZSB0b2tlbiBcX1NUT1BfIGlzIHByZXNlbnQganVzdCBhZnRlciB0aGlzIG1hY3JvLgogfQogCi0lIFdoYXQgd2UgZG8gdG8gZmluaXNoIG9mZiBpZ25vcmVkIHRleHQuCi0lCi1cZGVmXGVuZGRvaWdub3Jle1xlbmRncm91cFxpZ25vcmVzcGFjZXN9JQotCi1cbmV3aWZcaWZ3YXJuZWRvYnNcd2FybmVkb2JzZmFsc2UKLVxkZWZcb2JzdGV4d2FybnslCi0gIFxpZndhcm5lZG9ic1xyZWxheFxlbHNlCi0gICUgV2UgbmVlZCB0byB3YXJuIGZvbGtzIHRoYXQgdGhleSBtYXkgaGF2ZSB0cm91YmxlIHdpdGggVGVYIDMuMC4KLSAgJSBUaGlzIHVzZXMgXGltbWVkaWF0ZVx3cml0ZTE2IHJhdGhlciB0aGFuIFxtZXNzYWdlIHRvIGdldCBuZXdsaW5lcy4KLSAgICBcaW1tZWRpYXRlXHdyaXRlMTZ7fQotICAgIFxpbW1lZGlhdGVcd3JpdGUxNntXQVJOSU5HOiBmb3IgdXNlcnMgb2YgVW5peCBUZVggMy4wIX0KLSAgICBcaW1tZWRpYXRlXHdyaXRlMTZ7VGhpcyBtYW51YWwgdHJpcHMgYSBidWcgaW4gVGVYIHZlcnNpb24gMy4wICh0ZXggaGFuZ3MpLn0KLSAgICBcaW1tZWRpYXRlXHdyaXRlMTZ7SWYgeW91IGFyZSBydW5uaW5nIGFub3RoZXIgdmVyc2lvbiBvZiBUZVgsIHJlbGF4Ln0KLSAgICBcaW1tZWRpYXRlXHdyaXRlMTZ7SWYgeW91IGFyZSBydW5uaW5nIFVuaXggVGVYIDMuMCwga2lsbCB0aGlzIFRlWCBwcm9jZXNzLn0KLSAgICBcaW1tZWRpYXRlXHdyaXRlMTZ7ICBUaGVuIHVwZ3JhZGUgeW91ciBUZVggaW5zdGFsbGF0aW9uIGlmIHlvdSBjYW4ufQotICAgIFxpbW1lZGlhdGVcd3JpdGUxNnsgIChTZWUgZnRwOi8vZnRwLmdudS5vcmcvbm9uLWdudS9UZVguUkVBRE1FLil9Ci0gICAgXGltbWVkaWF0ZVx3cml0ZTE2e0lmIHlvdSBhcmUgc3R1Y2sgd2l0aCB2ZXJzaW9uIDMuMCwgcnVuIHRoZX0KLSAgICBcaW1tZWRpYXRlXHdyaXRlMTZ7ICBzY3JpcHQgYGB0ZXgzcGF0Y2gnJyBmcm9tIHRoZSBUZXhpbmZvIGRpc3RyaWJ1dGlvbn0KLSAgICBcaW1tZWRpYXRlXHdyaXRlMTZ7ICB0byB1c2UgYSB3b3JrYXJvdW5kLn0KLSAgICBcaW1tZWRpYXRlXHdyaXRlMTZ7fQotICAgIFxnbG9iYWxcd2FybmVkb2JzdHJ1ZQotICAgIFxmaQorJSBXZSBoYXZlIHRvIHN3YWxsb3cgdGhlIHJlbWFpbmluZyAiXF9TVE9QXyIuCislIAorXGRlZlxkb2lnbm9yZXRleHR6enojMXslCisgIFxpZm51bVxkb2lnbm9yZWNvdW50ID0gMAklIFdlIGhhdmUganVzdCBmb3VuZCB0aGUgb3V0ZXJtb3N0IEBlbmQuCisgICAgXGxldFxuZXh0XGVuZGRvaWdub3JlCisgIFxlbHNlCQkJCSUgU3RpbGwgaW5zaWRlIGEgbmVzdGVkIGNvbmRpdGlvbi4KKyAgICBcYWR2YW5jZVxkb2lnbm9yZWNvdW50IGJ5IC0xCisgICAgXGxldFxuZXh0XGRvaWdub3JldGV4dCAgICAgICUgTG9vayBmb3IgdGhlIG5leHQgQGVuZC4KKyAgXGZpCisgIFxuZXh0CiB9CiAKLSUgKipJbiBUZVggMy4wLCBzZXR0aW5nIHRleHQgaW4gXG51bGxmb250IGhhbmdzIHRleC4gIEZvciBhCi0lIHdvcmthcm91bmQgKHdoaWNoIHJlcXVpcmVzIHRoZSBmaWxlIGBgZHVtbXkudGZtJycgdG8gYmUgaW5zdGFsbGVkKSwKLSUgdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZToKLSUlJSUlXGZvbnRcbnVsbGZvbnQ9ZHVtbXlcbGV0XG9ic3RleHdhcm49XHJlbGF4CislIEZpbmlzaCBvZmYgaWdub3JlZCB0ZXh0LgorXGRlZlxlbmRkb2lnbm9yZXtcZW5kZ3JvdXBcaWdub3Jlc3BhY2VzfQogCi0lIElnbm9yZSB0ZXh0LCBleGNlcHQgdGhhdCB3ZSBrZWVwIHRyYWNrIG9mIGNvbmRpdGlvbmFsIGNvbW1hbmRzIGZvcgotJSBwdXJwb3NlcyBvZiBuZXN0aW5nLCB1cCB0byBhbiBgQGVuZCAjMScgY29tbWFuZC4KLSUKLVxkZWZcbmVzdGVkaWdub3JlIzF7JQotICBcb2JzdGV4d2FybgotICAlIFdlIG11c3QgYWN0dWFsbHkgZXhwYW5kIHRoZSBpZ25vcmVkIHRleHQgdG8gbG9vayBmb3IgdGhlIEBlbmQKLSAgJSBjb21tYW5kLCBzbyB0aGF0IG5lc3RlZCBpZ25vcmUgY29uc3RydWN0cyB3b3JrLiAgVGh1cywgd2UgcHV0IHRoZQotICAlIHRleHQgaW50byBhIFx2Ym94IGFuZCB0aGVuIGRvIG5vdGhpbmcgd2l0aCB0aGUgcmVzdWx0LiAgVG8gbWluaW1pemUKLSAgJSB0aGUgY2hhbmNlIG9mIG1lbW9yeSBvdmVyZmxvdywgd2UgZm9sbG93IHRoZSBhcHByb2FjaCBvdXRsaW5lZCBvbgotICAlIHBhZ2UgNDAxIG9mIHRoZSBUZVhib29rLgotICAlCi0gIFxzZXRib3gwID0gXHZib3hcYmdyb3VwCi0gICAgJSBEb24ndCBjb21wbGFpbiBhYm91dCBjb250cm9sIHNlcXVlbmNlcyB3ZSBoYXZlIGRlY2xhcmVkIFxvdXRlci4KLSAgICBcaWdub3Jlc2VjdGlvbnMKLSAgICAlCi0gICAgJSBEZWZpbmUgYEBlbmQgIzEnIHRvIGVuZCB0aGUgYm94LCB3aGljaCB3aWxsIGluIHR1cm4gdW5kZWZpbmUgdGhlCi0gICAgJSBAZW5kIGNvbW1hbmQgYWdhaW4uCi0gICAgXGV4cGFuZGFmdGVyXGRlZlxjc25hbWUgRSMxXGVuZGNzbmFtZXtcZWdyb3VwXGlnbm9yZXNwYWNlc30lCi0gICAgJQotICAgICUgV2UgYXJlIGdvaW5nIHRvIGJlIHBhcnNpbmcgVGV4aW5mbyBjb21tYW5kcy4gIE1vc3QgY2F1c2Ugbm8KLSAgICAlIHRyb3VibGUgd2hlbiB0aGV5IGFyZSB1c2VkIGluY29ycmVjdGx5LCBidXQgc29tZSBjb21tYW5kcyBkbwotICAgICUgY29tcGxpY2F0ZWQgYXJndW1lbnQgcGFyc2luZyBvciBvdGhlcndpc2UgZ2V0IGNvbmZ1c2VkLCBzbyB3ZQotICAgICUgdW5kZWZpbmUgdGhlbS4KLSAgICAlCi0gICAgJSBXZSBjYW4ndCBkbyBhbnl0aGluZyBhYm91dCBzdHJheSBALXNpZ25zLCB1bmZvcnR1bmF0ZWx5OwotICAgICUgdGhleSdsbCBwcm9kdWNlIGB1bmRlZmluZWQgY29udHJvbCBzZXF1ZW5jZScgZXJyb3JzLgotICAgIFxpZ25vcmVtb3JlY29tbWFuZHMKLSAgICAlCi0gICAgJSBTZXQgdGhlIGN1cnJlbnQgZm9udCB0byBiZSBcbnVsbGZvbnQsIGEgVGVYIHByaW1pdGl2ZSwgYW5kIGRlZmluZQotICAgICUgYWxsIHRoZSBmb250IGNvbW1hbmRzIHRvIGFsc28gdXNlIFxudWxsZm9udC4gIFdlIGRvbid0IHVzZQotICAgICUgZHVtbXkudGZtLCBhcyBzdWdnZXN0ZWQgaW4gdGhlIFRlWGJvb2ssIGJlY2F1c2Ugc29tZSBzaXRlcwotICAgICUgbWlnaHQgbm90IGhhdmUgdGhhdCBpbnN0YWxsZWQuICBUaGVyZWZvcmUsIG1hdGggbW9kZSB3aWxsIHN0aWxsCi0gICAgJSBwcm9kdWNlIG91dHB1dCwgYnV0IHRoYXQgc2hvdWxkIGJlIGFuIGV4dHJlbWVseSBzbWFsbCBhbW91bnQgb2YKLSAgICAlIHN0dWZmIGNvbXBhcmVkIHRvIHRoZSBtYWluIGlucHV0LgotICAgICUKLSAgICBcbnVsbGZvbnQKLSAgICBcbGV0XHRlbnJtPVxudWxsZm9udCBcbGV0XHRlbml0PVxudWxsZm9udCBcbGV0XHRlbnNsPVxudWxsZm9udAotICAgIFxsZXRcdGVuYmY9XG51bGxmb250IFxsZXRcdGVudHQ9XG51bGxmb250IFxsZXRcc21hbGxjYXBzPVxudWxsZm9udAotICAgIFxsZXRcdGVuc2Y9XG51bGxmb250Ci0gICAgJSBTaW1pbGFybHkgZm9yIGluZGV4IGZvbnRzLgotICAgIFxsZXRcc21hbGxybT1cbnVsbGZvbnQgXGxldFxzbWFsbGl0PVxudWxsZm9udCBcbGV0XHNtYWxsc2w9XG51bGxmb250Ci0gICAgXGxldFxzbWFsbGJmPVxudWxsZm9udCBcbGV0XHNtYWxsdHQ9XG51bGxmb250IFxsZXRcc21hbGxzYz1cbnVsbGZvbnQKLSAgICBcbGV0XHNtYWxsc2Y9XG51bGxmb250Ci0gICAgJSBTaW1pbGFybHkgZm9yIHNtYWxsZXhhbXBsZSBmb250cy4KLSAgICBcbGV0XHNtYWxsZXJybT1cbnVsbGZvbnQgXGxldFxzbWFsbGVyaXQ9XG51bGxmb250IFxsZXRcc21hbGxlcnNsPVxudWxsZm9udAotICAgIFxsZXRcc21hbGxlcmJmPVxudWxsZm9udCBcbGV0XHNtYWxsZXJ0dD1cbnVsbGZvbnQgXGxldFxzbWFsbGVyc2M9XG51bGxmb250Ci0gICAgXGxldFxzbWFsbGVyc2Y9XG51bGxmb250Ci0gICAgJQotICAgICUgRG9uJ3QgY29tcGxhaW4gd2hlbiBjaGFyYWN0ZXJzIGFyZSBtaXNzaW5nIGZyb20gdGhlIGZvbnRzLgotICAgIFx0cmFjaW5nbG9zdGNoYXJzID0gMAotICAgICUKLSAgICAlIERvbid0IGJvdGhlciB0byBkbyBzcGFjZSBmYWN0b3IgY2FsY3VsYXRpb25zLgotICAgIFxmcmVuY2hzcGFjaW5nCi0gICAgJQotICAgICUgRG9uJ3QgcmVwb3J0IHVuZGVyZnVsbCBoYm94ZXMuCi0gICAgXGhiYWRuZXNzID0gMTAwMDAKLSAgICAlCi0gICAgJSBEbyBtaW5pbWFsIGxpbmUtYnJlYWtpbmcuCi0gICAgXHByZXRvbGVyYW5jZSA9IDEwMDAwCi0gICAgJQotICAgICUgRG8gbm90IGV4ZWN1dGUgaW5zdHJ1Y3Rpb25zIGluIEB0ZXguCi0gICAgXGRlZlx0ZXh7XGRvaWdub3Jle3RleH19JQotICAgICUgRG8gbm90IGV4ZWN1dGUgbWFjcm8gZGVmaW5pdGlvbnMuCi0gICAgJSBgYycgaXMgYSBjb21tZW50IGNoYXJhY3Rlciwgc28gdGhlIHdvcmQgYG1hY3JvJyB3aWxsIGdldCBjdXQgb2ZmLgotICAgIFxkZWZcbWFjcm97XGRvaWdub3Jle21hfX0lCi19CiAKICUgQHNldCBWQVIgc2V0cyB0aGUgdmFyaWFibGUgVkFSIHRvIGFuIGVtcHR5IHZhbHVlLgogJSBAc2V0IFZBUiBSRVNULU9GLUxJTkUgc2V0cyBWQVIgdG8gdGhlIHZhbHVlIFJFU1QtT0YtTElORS4KQEAgLTI3NDQsNTMgKzI4MTgsNTggQEAKICUgU2luY2Ugd2Ugd2FudCB0byBzZXBhcmF0ZSBWQVIgZnJvbSBSRVNULU9GLUxJTkUgKHdoaWNoIG1pZ2h0IGJlCiAlIGVtcHR5KSwgd2UgY2FuJ3QganVzdCB1c2UgXHBhcnNlYXJnOyB3ZSBoYXZlIHRvIGluc2VydCBhIHNwYWNlIG9mIG91cgogJSBvd24gdG8gZGVsaW1pdCB0aGUgcmVzdCBvZiB0aGUgbGluZSwgYW5kIHRoZW4gdGFrZSBpdCBvdXQgYWdhaW4gaWYgd2UKLSUgZGlkbid0IG5lZWQgaXQuICBNYWtlIHN1cmUgdGhlIGNhdGNvZGUgb2Ygc3BhY2UgaXMgY29ycmVjdCB0byBhdm9pZAotJSBsb3NpbmcgaW5zaWRlIEBleGFtcGxlLCBmb3IgaW5zdGFuY2UuCislIGRpZG4ndCBuZWVkIGl0LgorJSBXZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgXHBhcnNlYXJnIHNldHMgXGNhdGNvZGVgXCA9MTAuCiAlCi1cZGVmXHNldHtcYmVnaW5ncm91cFxjYXRjb2RlYCA9MTAKLSAgXGNhdGNvZGVgXC09MTIgXGNhdGNvZGVgXF89MTIgJSBBbGxvdyAtIGFuZCBfIGluIFZBUi4KLSAgXHBhcnNlYXJnXHNldHh4eH0KLVxkZWZcc2V0eHh4IzF7XHNldHl5eSMxIFxlbmRzZXR5eXl9CitccGFyc2VhcmdkZWZcc2V0e1xzZXR5eXkjMSBcZW5kc2V0eXl5fQogXGRlZlxzZXR5eXkjMSAjMlxlbmRzZXR5eXl7JQotICBcZGVmXHRlbXB7IzJ9JQotICBcaWZ4XHRlbXBcZW1wdHkgXGdsb2JhbFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIFNFVCMxXGVuZGNzbmFtZSA9IFxlbXB0eQotICBcZWxzZSBcc2V0enp6eyMxfSMyXGVuZHNldHp6eiAlIFJlbW92ZSB0aGUgdHJhaWxpbmcgc3BhY2UgXHNldHh4eCBpbnNlcnRlZC4KLSAgXGZpCi0gIFxlbmRncm91cAorICB7JQorICAgIFxtYWtldmFsdWVleHBhbmRhYmxlCisgICAgXGRlZlx0ZW1weyMyfSUKKyAgICBcZWRlZlxuZXh0e1xnZGVmXG1ha2Vjc25hbWV7U0VUIzF9fSUKKyAgICBcaWZ4XHRlbXBcZW1wdHkKKyAgICAgIFxuZXh0e30lCisgICAgXGVsc2UKKyAgICAgIFxzZXR6enojMlxlbmRzZXR6enoKKyAgICBcZmkKKyAgfSUKIH0KLSUgQ2FuJ3QgdXNlIFx4ZGVmIHRvIHByZS1leHBhbmQgIzIgYW5kIHNhdmUgc29tZSB0aW1lLCBzaW5jZSBcdGVtcCBvcgotJSBcbmV4dCBvciBvdGhlciBjb250cm9sIHNlcXVlbmNlcyB0aGF0IHdlJ3ZlIGRlZmluZWQgbWlnaHQgZ2V0IHVzIGludG8KLSUgYW4gaW5maW5pdGUgbG9vcC4gQ29uc2lkZXIgYEBzZXQgZm9vIEBjaXRle2Jhcn0nLgotXGRlZlxzZXR6enojMSMyIFxlbmRzZXR6enp7XGV4cGFuZGFmdGVyXGdkZWZcY3NuYW1lIFNFVCMxXGVuZGNzbmFtZXsjMn19CislIFJlbW92ZSB0aGUgdHJhaWxpbmcgc3BhY2UgXHNldHh4eCBpbnNlcnRlZC4KK1xkZWZcc2V0enp6IzEgXGVuZHNldHp6entcbmV4dHsjMX19CiAKICUgQGNsZWFyIFZBUiBjbGVhcnMgKGkuZS4sIHVuc2V0cykgdGhlIHZhcmlhYmxlIFZBUi4KICUKLVxkZWZcY2xlYXJ7XHBhcnNlYXJnXGNsZWFyeHh4fQotXGRlZlxjbGVhcnh4eCMxe1xnbG9iYWxcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSBTRVQjMVxlbmRjc25hbWU9XHJlbGF4fQorXHBhcnNlYXJnZGVmXGNsZWFyeyUKKyAgeyUKKyAgICBcbWFrZXZhbHVlZXhwYW5kYWJsZQorICAgIFxnbG9iYWxcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSBTRVQjMVxlbmRjc25hbWU9XHJlbGF4CisgIH0lCit9CiAKICUgQHZhbHVle2Zvb30gZ2V0cyB0aGUgdGV4dCBzYXZlZCBpbiB2YXJpYWJsZSBmb28uCi17Ci0gIFxjYXRjb2RlYFxfID0gXGFjdGl2ZQotICAlCi0gICUgV2UgbWlnaHQgZW5kIHVwIHdpdGggYWN0aXZlIF8gb3IgLSBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudCBpZgotICAlIHdlJ3JlIGNhbGxlZCBmcm9tIEBjb2RlLCBhcyBAY29kZXtAdmFsdWV7Zm9vLWJhcl99fS4gIFNvIFxsZXQgYW55Ci0gICUgc3VjaCBhY3RpdmUgY2hhcmFjdGVycyB0byB0aGVpciBub3JtYWwgZXF1aXZhbGVudHMuCi0gIFxnZGVmXHZhbHVle1xiZWdpbmdyb3VwCi0gICAgXGNhdGNvZGVgXC09XG90aGVyIFxjYXRjb2RlYFxfPVxvdGhlcgotICAgIFxpbmRleGJyZWFrcyBcbGV0X1xub3JtYWx1bmRlcnNjb3JlCi0gICAgXHZhbHVleHh4fQotfQorXGRlZlx2YWx1ZXtcYmVnaW5ncm91cFxtYWtldmFsdWVleHBhbmRhYmxlXHZhbHVleHh4fQogXGRlZlx2YWx1ZXh4eCMxe1xleHBhbmRhYmxldmFsdWV7IzF9XGVuZGdyb3VwfQoreworICBcY2F0Y29kZWBcLSA9IFxhY3RpdmUgXGNhdGNvZGVgXF8gPSBcYWN0aXZlCisgICUKKyAgXGdkZWZcbWFrZXZhbHVlZXhwYW5kYWJsZXslCisgICAgXGxldFx2YWx1ZSA9IFxleHBhbmRhYmxldmFsdWUKKyAgICAlIFdlIGRvbid0IHdhbnQgdGhlc2UgY2hhcmFjdGVycyBhY3RpdmUsIC4uLgorICAgIFxjYXRjb2RlYFwtPVxvdGhlciBcY2F0Y29kZWBcXz1cb3RoZXIKKyAgICAlIC4uLiwgYnV0IHdlIG1pZ2h0IGVuZCB1cCB3aXRoIGFjdGl2ZSBvbmVzIGluIHRoZSBhcmd1bWVudCBpZgorICAgICUgd2UncmUgY2FsbGVkIGZyb20gQGNvZGUsIGFzIEBjb2Rle0B2YWx1ZXtmb28tYmFyX319LCB0aG91Z2guCisgICAgJSBTbyBcbGV0IHRoZW0gdG8gdGhlaXIgbm9ybWFsIGVxdWl2YWxlbnRzLgorICAgIFxsZXQtXHJlYWxkYXNoIFxsZXRfXG5vcm1hbHVuZGVyc2NvcmUKKyAgfQorfQogCiAlIFdlIGhhdmUgdGhpcyBzdWJyb3V0aW5lIHNvIHRoYXQgd2UgY2FuIGhhbmRsZSBhdCBsZWFzdCBzb21lIEB2YWx1ZSdzCi0lIHByb3Blcmx5IGluIGluZGV4ZXMgKHdlIFxsZXRcdmFsdWUgdG8gdGhpcyBpbiBcaW5kZXhkdW1taWVzKS4gIE9uZXMKLSUgd2hvc2UgbmFtZXMgY29udGFpbiAtIG9yIF8gc3RpbGwgd29uJ3Qgd29yaywgYnV0IHdlIGNhbid0IGRvIGFueXRoaW5nCi0lIGFib3V0IHRoYXQuICBUaGUgY29tbWFuZCBoYXMgdG8gYmUgZnVsbHkgZXhwYW5kYWJsZSAoaWYgdGhlIHZhcmlhYmxlCi0lIGlzIHNldCksIHNpbmNlIHRoZSByZXN1bHQgd2luZHMgdXAgaW4gdGhlIGluZGV4IGZpbGUuICBUaGlzIG1lYW5zIHRoYXQKLSUgaWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgY29udGFpbnMgb3RoZXIgVGV4aW5mbyBjb21tYW5kcywgaXQncyBhbG1vc3QKLSUgY2VydGFpbiBpdCB3aWxsIGZhaWwgKGFsdGhvdWdoIHBlcmhhcHMgd2UgY291bGQgZml4IHRoYXQgd2l0aAotJSBzdWZmaWNpZW50IHdvcmsgdG8gZG8gYSBvbmUtbGV2ZWwgZXhwYW5zaW9uIG9uIHRoZSByZXN1bHQsIGluc3RlYWQgb2YKLSUgY29tcGxldGUpLgorJSBwcm9wZXJseSBpbiBpbmRleGVzICh3ZSBjYWxsIFxtYWtldmFsdWVleHBhbmRhYmxlIGluIFxpbmRleGR1bW1pZXMpLgorJSBUaGUgY29tbWFuZCBoYXMgdG8gYmUgZnVsbHkgZXhwYW5kYWJsZSAoaWYgdGhlIHZhcmlhYmxlIGlzIHNldCksIHNpbmNlCislIHRoZSByZXN1bHQgd2luZHMgdXAgaW4gdGhlIGluZGV4IGZpbGUuICBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlCislIHZhcmlhYmxlJ3MgdmFsdWUgY29udGFpbnMgb3RoZXIgVGV4aW5mbyBjb21tYW5kcywgaXQncyBhbG1vc3QgY2VydGFpbgorJSBpdCB3aWxsIGZhaWwgKGFsdGhvdWdoIHBlcmhhcHMgd2UgY291bGQgZml4IHRoYXQgd2l0aCBzdWZmaWNpZW50IHdvcmsKKyUgdG8gZG8gYSBvbmUtbGV2ZWwgZXhwYW5zaW9uIG9uIHRoZSByZXN1bHQsIGluc3RlYWQgb2YgY29tcGxldGUpLgogJQogXGRlZlxleHBhbmRhYmxldmFsdWUjMXslCiAgIFxleHBhbmRhZnRlclxpZnhcY3NuYW1lIFNFVCMxXGVuZGNzbmFtZVxyZWxheApAQCAtMjgwNCw1NSArMjg4MywzNiBAQAogJSBAaWZzZXQgVkFSIC4uLiBAZW5kIGlmc2V0IHJlYWRzIHRoZSBgLi4uJyBpZmYgVkFSIGhhcyBiZWVuIGRlZmluZWQKICUgd2l0aCBAc2V0LgogJQotXGRlZlxpZnNldHtccGFyc2VhcmdcZG9pZnNldH0KLVxkZWZcZG9pZnNldCMxeyUKLSAgXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgU0VUIzFcZW5kY3NuYW1lXHJlbGF4Ci0gICAgXGxldFxuZXh0PVxpZnNldGZhaWwKLSAgXGVsc2UKLSAgICBcbGV0XG5leHQ9XGlmc2V0c3VjY2VlZAotICBcZmkKLSAgXG5leHQKKyUgVG8gZ2V0IHNwZWNpYWwgdHJlYXRtZW50IG9mIGBAZW5kIGlmc2V0LCcgY2FsbCBcbWFrZW9uZCBhbmQgdGhlIHJlZGVmaW5lLgorJQorXG1ha2Vjb25ke2lmc2V0fQorXGRlZlxpZnNldHtccGFyc2Vhcmd7XGRvaWZzZXR7XGxldFxuZXh0PVxpZnNldGZhaWx9fX0KK1xkZWZcZG9pZnNldCMxIzJ7JQorICB7JQorICAgIFxtYWtldmFsdWVleHBhbmRhYmxlCisgICAgXGxldFxuZXh0PVxlbXB0eQorICAgIFxleHBhbmRhZnRlclxpZnhcY3NuYW1lIFNFVCMyXGVuZGNzbmFtZVxyZWxheAorICAgICAgIzElIElmIG5vdCBzZXQsIHJlZGVmaW5lIFxuZXh0LgorICAgIFxmaQorICAgIFxleHBhbmRhZnRlcgorICB9XG5leHQKIH0KLVxkZWZcaWZzZXRzdWNjZWVke1xjb25kaXRpb25hbHN1Y2NlZWR7aWZzZXR9fQotXGRlZlxpZnNldGZhaWx7XG5lc3RlZGlnbm9yZXtpZnNldH19Ci1cZGVmaW5ldW5tYXRjaGVkZW5ke2lmc2V0fQorXGRlZlxpZnNldGZhaWx7XGRvaWdub3Jle2lmc2V0fX0KIAogJSBAaWZjbGVhciBWQVIgLi4uIEBlbmQgaWZjbGVhciByZWFkcyB0aGUgYC4uLicgaWZmIFZBUiBoYXMgbmV2ZXIgYmVlbgogJSBkZWZpbmVkIHdpdGggQHNldCwgb3IgaGFzIGJlZW4gdW5kZWZpbmVkIHdpdGggQGNsZWFyLgogJQotXGRlZlxpZmNsZWFye1xwYXJzZWFyZ1xkb2lmY2xlYXJ9Ci1cZGVmXGRvaWZjbGVhciMxeyUKLSAgXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgU0VUIzFcZW5kY3NuYW1lXHJlbGF4Ci0gICAgXGxldFxuZXh0PVxpZmNsZWFyc3VjY2VlZAotICBcZWxzZQotICAgIFxsZXRcbmV4dD1caWZjbGVhcmZhaWwKLSAgXGZpCi0gIFxuZXh0Ci19Ci1cZGVmXGlmY2xlYXJzdWNjZWVke1xjb25kaXRpb25hbHN1Y2NlZWR7aWZjbGVhcn19Ci1cZGVmXGlmY2xlYXJmYWlse1xuZXN0ZWRpZ25vcmV7aWZjbGVhcn19Ci1cZGVmaW5ldW5tYXRjaGVkZW5ke2lmY2xlYXJ9Ci0KLSUgQGlmdGV4LCBAaWZub3RodG1sLCBAaWZub3RpbmZvLCBAaWZub3RwbGFpbnRleHQgYWx3YXlzIHN1Y2NlZWQ7IHdlCi0lIHJlYWQgdGhlIHRleHQgZm9sbG93aW5nLCB0aHJvdWdoIHRoZSBmaXJzdCBAZW5kIGlmdGV4IChldGMuKS4gIE1ha2UKLSUgYEBlbmQgaWZ0ZXgnIChldGMuKSB2YWxpZCBvbmx5IGFmdGVyIGFuIEBpZnRleC4KKyUgVGhlIGBcZWxzZScgaW5zaWRlIHRoZSBgXGRvaWZzZXQnIHBhcmFtZXRlciBpcyBhIHRyaWNrIHRvIHJldXNlIHRoZQorJSBhYm92ZSBjb2RlOiBpZiB0aGUgdmFyaWFibGUgaXMgbm90IHNldCwgZG8gbm90aGluZywgaWYgaXQgaXMgc2V0LAorJSB0aGVuIHJlZGVmaW5lIFxuZXh0IHRvIFxpZmNsZWFyZmFpbC4KICUKLVxkZWZcaWZ0ZXh7XGNvbmRpdGlvbmFsc3VjY2VlZHtpZnRleH19Ci1cZGVmXGlmbm90aHRtbHtcY29uZGl0aW9uYWxzdWNjZWVke2lmbm90aHRtbH19Ci1cZGVmXGlmbm90aW5mb3tcY29uZGl0aW9uYWxzdWNjZWVke2lmbm90aW5mb319Ci1cZGVmXGlmbm90cGxhaW50ZXh0e1xjb25kaXRpb25hbHN1Y2NlZWR7aWZub3RwbGFpbnRleHR9fQotXGRlZmluZXVubWF0Y2hlZGVuZHtpZnRleH0KLVxkZWZpbmV1bm1hdGNoZWRlbmR7aWZub3RodG1sfQotXGRlZmluZXVubWF0Y2hlZGVuZHtpZm5vdGluZm99Ci1cZGVmaW5ldW5tYXRjaGVkZW5ke2lmbm90cGxhaW50ZXh0fQorXG1ha2Vjb25ke2lmY2xlYXJ9CitcZGVmXGlmY2xlYXJ7XHBhcnNlYXJne1xkb2lmc2V0e1xlbHNlIFxsZXRcbmV4dD1caWZjbGVhcmZhaWx9fX0KK1xkZWZcaWZjbGVhcmZhaWx7XGRvaWdub3Jle2lmY2xlYXJ9fQogCi0lIFRydWUgY29uZGl0aW9uYWwuICBTaW5jZSBcc2V0IGdsb2JhbGx5IGRlZmluZXMgaXRzIHZhcmlhYmxlcywgd2UgY2FuCi0lIGp1c3Qgc3RhcnQgYW5kIGVuZCBhIGdyb3VwICh0byBrZWVwIHRoZSBAZW5kIGRlZmluaXRpb24gdW5kZWZpbmVkIGF0Ci0lIHRoZSBvdXRlciBsZXZlbCkuCi0lCi1cZGVmXGNvbmRpdGlvbmFsc3VjY2VlZCMxe1xiZWdpbmdyb3VwCi0gIFxleHBhbmRhZnRlclxkZWZcY3NuYW1lIEUjMVxlbmRjc25hbWV7XGVuZGdyb3VwfSUKLX0KKyUgQGRpcmNhdGVnb3J5IENBVEVHT1JZICAtLSBzcGVjaWZ5IGEgY2F0ZWdvcnkgb2YgdGhlIGRpciBmaWxlCislIHdoaWNoIHRoaXMgZmlsZSBzaG91bGQgYmVsb25nIHRvLiAgSWdub3JlIHRoaXMgaW4gVGVYLgorXGxldFxkaXJjYXRlZ29yeT1cY29tbWVudAogCiAlIEBkZWZpbmluZm9lbmNsb3NlLgogXGxldFxkZWZpbmZvZW5jbG9zZT1cY29tbWVudApAQCAtMjkwMywxMCArMjk2MywxMCBAQAogCiAlIEBzeW5pbmRleCBmb28gYmFyICAgIG1ha2VzIGluZGV4IGZvbyBmZWVkIGludG8gaW5kZXggYmFyLgogJSBEbyB0aGlzIGluc3RlYWQgb2YgQGRlZmluZGV4IGZvbyBpZiB5b3UgZG9uJ3Qgd2FudCBpdCBhcyBhIHNlcGFyYXRlIGluZGV4LgotJSAKKyUKICUgQHN5bmNvZGVpbmRleCBmb28gYmFyICAgc2ltaWxhciwgYnV0IHB1dCBhbGwgZW50cmllcyBtYWRlIGZvciBpbmRleCBmb28KICUgaW5zaWRlIEBjb2RlLgotJSAKKyUKIFxkZWZcc3luaW5kZXgjMSAjMiB7XGRvc3luaW5kZXhcZG9pbmRleHsjMX17IzJ9fQogXGRlZlxzeW5jb2RlaW5kZXgjMSAjMiB7XGRvc3luaW5kZXhcZG9jb2RlaW5kZXh7IzF9eyMyfX0KIApAQCAtMjk0OCwxMyArMzAwOCwxMyBAQAogJSBUYWtlIGNhcmUgb2YgVGV4aW5mbyBjb21tYW5kcyB0aGF0IGNhbiBhcHBlYXIgaW4gYW4gaW5kZXggZW50cnkuCiAlIFNpbmNlIHRoZXJlIGFyZSBzb21lIGNvbW1hbmRzIHdlIHdhbnQgdG8gZXhwYW5kLCBhbmQgb3RoZXJzIHdlIGRvbid0LAogJSB3ZSBoYXZlIHRvIGxhYm9yaW91c2x5IHByZXZlbnQgZXhwYW5zaW9uIGZvciB0aG9zZSB0aGF0IHdlIGRvbid0LgotJSAKKyUKIFxkZWZcaW5kZXhkdW1taWVzeyUKICAgXGRlZlxAe0B9JSBjaGFuZ2UgdG8gQEAgd2hlbiB3ZSBzd2l0Y2ggdG8gQCBhcyBlc2NhcGUgY2hhciBpbiBpbmRleCBmaWxlcy4KICAgXGRlZlwge1xyZWFsYmFja3NsYXNoXHNwYWNlIH0lCiAgICUgTmVlZCB0aGVzZSBpbiBjYXNlIFx0ZXggaXMgaW4gZWZmZWN0IGFuZCBceyBpcyBhIFxkZWxpbWl0ZXIgYWdhaW4uCiAgICUgQnV0IGNhbid0IHVzZSBcbGJyYWNlY21kIGFuZCBccmJyYWNlY21kIGJlY2F1c2UgdGV4aW5kZXggYXNzdW1lcwotICAlIGJyYWNlcyBhbmQgYmFja3NsYXNoZXMgYXJlIHVzZWQgb25seSBhcyBkZWxpbWl0ZXJzLiAgCisgICUgYnJhY2VzIGFuZCBiYWNrc2xhc2hlcyBhcmUgdXNlZCBvbmx5IGFzIGRlbGltaXRlcnMuCiAgIFxsZXRceyA9IFxteWxicmFjZQogICBcbGV0XH0gPSBcbXlyYnJhY2UKICAgJQpAQCAtMjk2MywxNCArMzAyMywxNCBAQAogICAlIHdvcmRzLCBub3QgY29udHJvbCBsZXR0ZXJzLCBiZWNhdXNlIHRoZSBcc3BhY2Ugd291bGQgYmUgaW5jb3JyZWN0CiAgICUgZm9yIGNvbnRyb2wgY2hhcmFjdGVycywgYnV0IGlzIG5lZWRlZCB0byBzZXBhcmF0ZSB0aGUgY29udHJvbCB3b3JkCiAgICUgZnJvbSB3aGF0ZXZlciBmb2xsb3dzLgotICAlIAorICAlCiAgICUgRm9yIGNvbnRyb2wgbGV0dGVycywgd2UgaGF2ZSBcZGVmaW5lZHVtbXlsZXR0ZXIsIHdoaWNoIG9taXRzIHRoZQogICAlIHNwYWNlLgotICAlIAorICAlCiAgICUgVGhlc2UgY2FuIGJlIHVzZWQgYm90aCBmb3IgY29udHJvbCB3b3JkcyB0aGF0IHRha2UgYW4gYXJndW1lbnQgYW5kCiAgICUgdGhvc2UgdGhhdCBkbyBub3QuICBJZiBpdCBpcyBmb2xsb3dlZCBieSB7YXJnfSBpbiB0aGUgaW5wdXQsIHRoZW4KICAgJSB0aGF0IHdpbGwgZHV0aWZ1bGx5IGdldCB3cml0dGVuIHRvIHRoZSBpbmRleCAob3Igd2hlcmV2ZXIpLgotICAlIAorICAlCiAgIFxkZWZcZGVmaW5lZHVtbXl3b3JkIyMxeyUKICAgICBcZXhwYW5kYWZ0ZXJcZGVmXGNzbmFtZSAjIzFcZW5kY3NuYW1le1xyZWFsYmFja3NsYXNoICMjMVxzcGFjZX0lCiAgIH0lCkBAIC0yOTgzLDkgKzMwNDMsOSBAQAogfQogCiAlIEZvciB0aGUgYXV4IGZpbGUsIEAgaXMgdGhlIGVzY2FwZSBjaGFyYWN0ZXIuICBTbyB3ZSB3YW50IHRvIHJlZGVmaW5lCi0lIGV2ZXJ5dGhpbmcgdXNpbmcgQCBpbnN0ZWFkIG9mIFxyZWFsYmFja3NsYXNoLiAgV2hlbiBldmVyeXRoaW5nIHVzZXMgCislIGV2ZXJ5dGhpbmcgdXNpbmcgQCBpbnN0ZWFkIG9mIFxyZWFsYmFja3NsYXNoLiAgV2hlbiBldmVyeXRoaW5nIHVzZXMKICUgQCwgdGhpcyB3aWxsIGJlIHNpbXBsZXIuCi0lIAorJQogXGRlZlxhdGR1bW1pZXN7JQogICBcZGVmXEB7QEB9JQogICBcZGVmXCB7QCB9JQpAQCAtMzAwNiwzMSArMzA2NiwxNiBAQAogCiAlIENhbGxlZCBmcm9tIFxpbmRleGR1bW1pZXMgYW5kIFxhdGR1bW1pZXMuICBcZGVmaW5lZHVtbXl3b3JkIGFuZAogJSBcZGVmaW5lZHVtbXlsZXR0ZXIgbXVzdCBiZSBkZWZpbmVkIGZpcnN0LgotJSAKKyUKIFxkZWZcY29tbW9uZHVtbWllc3slCiAgICUKICAgXG5vcm1hbHR1cm5vZmZhY3RpdmUKICAgJQotICAlIENvbnRyb2wgbGV0dGVycyBhbmQgYWNjZW50cy4KLSAgXGRlZmluZWR1bW15bGV0dGVye199JQotICBcZGVmaW5lZHVtbXlsZXR0ZXJ7LH0lCi0gIFxkZWZpbmVkdW1teWxldHRlcnsifSUKLSAgXGRlZmluZWR1bW15bGV0dGVye2B9JQotICBcZGVmaW5lZHVtbXlsZXR0ZXJ7J30lCi0gIFxkZWZpbmVkdW1teWxldHRlcntefSUKLSAgXGRlZmluZWR1bW15bGV0dGVye359JQotICBcZGVmaW5lZHVtbXlsZXR0ZXJ7PX0lCi0gIFxkZWZpbmVkdW1teXdvcmR7dX0lCi0gIFxkZWZpbmVkdW1teXdvcmR7dn0lCi0gIFxkZWZpbmVkdW1teXdvcmR7SH0lCi0gIFxkZWZpbmVkdW1teXdvcmR7ZG90YWNjZW50fSUKLSAgXGRlZmluZWR1bW15d29yZHtyaW5nYWNjZW50fSUKLSAgXGRlZmluZWR1bW15d29yZHt0aWVhY2NlbnR9JQotICBcZGVmaW5lZHVtbXl3b3Jke3ViYXJhY2NlbnR9JQotICBcZGVmaW5lZHVtbXl3b3Jke3Vkb3RhY2NlbnR9JQotICBcZGVmaW5lZHVtbXl3b3Jke2RvdGxlc3N9JQorICBcY29tbW9uZHVtbWllc25vZm9udHMKICAgJQotICAlIE90aGVyIG5vbi1FbmdsaXNoIGxldHRlcnMuCisgIFxkZWZpbmVkdW1teWxldHRlcntffSUKKyAgJQorICAlIE5vbi1FbmdsaXNoIGxldHRlcnMuCiAgIFxkZWZpbmVkdW1teXdvcmR7QUF9JQogICBcZGVmaW5lZHVtbXl3b3Jke0FFfSUKICAgXGRlZmluZWR1bW15d29yZHtMfSUKQEAgLTMwNDIsNiArMzA4NywxMCBAQAogICBcZGVmaW5lZHVtbXl3b3Jke29lfSUKICAgXGRlZmluZWR1bW15d29yZHtvfSUKICAgXGRlZmluZWR1bW15d29yZHtzc30lCisgIFxkZWZpbmVkdW1teXdvcmR7ZXhjbGFtZG93bn0lCisgIFxkZWZpbmVkdW1teXdvcmR7cXVlc3Rpb25kb3dufSUKKyAgXGRlZmluZWR1bW15d29yZHtvcmRmfSUKKyAgXGRlZmluZWR1bW15d29yZHtvcmRtfSUKICAgJQogICAlIEFsdGhvdWdoIHRoZXNlIGludGVybmFsIGNvbW1hbmRzIHNob3VsZG4ndCBzaG93IHVwLCBzb21ldGltZXMgdGhleSBkby4KICAgXGRlZmluZWR1bW15d29yZHtiZn0lCkBAIC0zMDUzLDM3ICszMTAyLDEzIEBACiAgIFxkZWZpbmVkdW1teXdvcmR7dGNsb3NlfSUKICAgXGRlZmluZWR1bW15d29yZHt0dH0lCiAgICUKLSAgJSBUZXhpbmZvIGZvbnQgY29tbWFuZHMuCi0gIFxkZWZpbmVkdW1teXdvcmR7Yn0lCi0gIFxkZWZpbmVkdW1teXdvcmR7aX0lCi0gIFxkZWZpbmVkdW1teXdvcmR7cn0lCi0gIFxkZWZpbmVkdW1teXdvcmR7c2N9JQotICBcZGVmaW5lZHVtbXl3b3Jke3R9JQotICAlCisgIFxkZWZpbmVkdW1teXdvcmR7TGFUZVh9JQogICBcZGVmaW5lZHVtbXl3b3Jke1RlWH0lCi0gIFxkZWZpbmVkdW1teXdvcmR7YWNyb255bX0lCi0gIFxkZWZpbmVkdW1teXdvcmR7Y2l0ZX0lCi0gIFxkZWZpbmVkdW1teXdvcmR7Y29kZX0lCi0gIFxkZWZpbmVkdW1teXdvcmR7Y29tbWFuZH0lCi0gIFxkZWZpbmVkdW1teXdvcmR7ZGZufSUKLSAgXGRlZmluZWR1bW15d29yZHtkb3RzfSUKLSAgXGRlZmluZWR1bW15d29yZHtlbXBofSUKLSAgXGRlZmluZWR1bW15d29yZHtlbnZ9JQotICBcZGVmaW5lZHVtbXl3b3Jke2ZpbGV9JQotICBcZGVmaW5lZHVtbXl3b3Jke2tiZH0lCi0gIFxkZWZpbmVkdW1teXdvcmR7a2V5fSUKLSAgXGRlZmluZWR1bW15d29yZHttYXRofSUKLSAgXGRlZmluZWR1bW15d29yZHtvcHRpb259JQotICBcZGVmaW5lZHVtbXl3b3Jke3NhbXB9JQotICBcZGVmaW5lZHVtbXl3b3Jke3N0cm9uZ30lCi0gIFxkZWZpbmVkdW1teXdvcmR7dXJlZn0lCi0gIFxkZWZpbmVkdW1teXdvcmR7dXJsfSUKLSAgXGRlZmluZWR1bW15d29yZHt2YXJ9JQotICBcZGVmaW5lZHVtbXl3b3Jke3d9JQogICAlCiAgICUgQXNzb3J0ZWQgc3BlY2lhbCBjaGFyYWN0ZXJzLgogICBcZGVmaW5lZHVtbXl3b3Jke2J1bGxldH0lCiAgIFxkZWZpbmVkdW1teXdvcmR7Y29weXJpZ2h0fSUKKyAgXGRlZmluZWR1bW15d29yZHtyZWdpc3RlcmVkc3ltYm9sfSUKICAgXGRlZmluZWR1bW15d29yZHtkb3RzfSUKICAgXGRlZmluZWR1bW15d29yZHtlbmRkb3RzfSUKICAgXGRlZmluZWR1bW15d29yZHtlcXVpdn0lCkBAIC0zMDk1LDEwICszMTIwLDkgQEAKICAgXGRlZmluZWR1bW15d29yZHtwcmludH0lCiAgIFxkZWZpbmVkdW1teXdvcmR7cmVzdWx0fSUKICAgJQotICAlIEhhbmRsZSBzb21lIGNhc2VzIG9mIEB2YWx1ZSAtLSB3aGVyZSB0aGUgdmFyaWFibGUgbmFtZSBkb2VzIG5vdAotICAlIGNvbnRhaW4gLSBvciBfLCBhbmQgdGhlIHZhbHVlIGRvZXMgbm90IGNvbnRhaW4gYW55CisgICUgSGFuZGxlIHNvbWUgY2FzZXMgb2YgQHZhbHVlIC0tIHdoZXJlIGl0IGRvZXMgbm90IGNvbnRhaW4gYW55CiAgICUgKG5vbi1mdWxseS1leHBhbmRhYmxlKSBjb21tYW5kcy4KLSAgXGxldFx2YWx1ZSA9IFxleHBhbmRhYmxldmFsdWUKKyAgXG1ha2V2YWx1ZWV4cGFuZGFibGUKICAgJQogICAlIE5vcm1hbCBzcGFjZXMsIG5vdCBhY3RpdmUgb25lcy4KICAgXHVuc2Vwc3BhY2VzCkBAIC0zMTA3LDQ1ICszMTMxLDkxIEBACiAgIFx0dXJub2ZmbWFjcm9zCiB9CiAKLSUgSWYgYW4gaW5kZXggY29tbWFuZCBpcyB1c2VkIGluIGFuIEBleGFtcGxlIGVudmlyb25tZW50LCBhbnkgc3BhY2VzCi0lIHRoZXJlaW4gc2hvdWxkIGJlY29tZSByZWd1bGFyIHNwYWNlcyBpbiB0aGUgcmF3IGluZGV4IGZpbGUsIG5vdCB0aGUKLSUgZXhwYW5zaW9uIG9mIFx0aWUgKFxsZWF2ZXZtb2RlIFxwZW5hbHR5IFxATSBcICkuCi17XG9iZXlzcGFjZXMKLSBcZ2RlZlx1bnNlcHNwYWNlc3tcb2JleXNwYWNlc1xsZXQgPVxzcGFjZX19Ci0KKyUgXGNvbW1vbmR1bW1pZXNub2ZvbnRzOiBjb21tb24gdG8gXGNvbW1vbmR1bW1pZXMgYW5kIFxpbmRleG5vZm9udHMuCislCislIEJldHRlciBoYXZlIHRoaXMgd2l0aG91dCBhY3RpdmUgY2hhcnMuCit7CisgIFxjYXRjb2RlYFx+PVxvdGhlcgorICBcZ2RlZlxjb21tb25kdW1taWVzbm9mb250c3slCisgICAgJSBDb250cm9sIGxldHRlcnMgYW5kIGFjY2VudHMuCisgICAgXGRlZmluZWR1bW15bGV0dGVyeyF9JQorICAgIFxkZWZpbmVkdW1teWxldHRlcnsifSUKKyAgICBcZGVmaW5lZHVtbXlsZXR0ZXJ7J30lCisgICAgXGRlZmluZWR1bW15bGV0dGVyeyp9JQorICAgIFxkZWZpbmVkdW1teWxldHRlcnssfSUKKyAgICBcZGVmaW5lZHVtbXlsZXR0ZXJ7Ln0lCisgICAgXGRlZmluZWR1bW15bGV0dGVyey99JQorICAgIFxkZWZpbmVkdW1teWxldHRlcns6fSUKKyAgICBcZGVmaW5lZHVtbXlsZXR0ZXJ7PX0lCisgICAgXGRlZmluZWR1bW15bGV0dGVyez99JQorICAgIFxkZWZpbmVkdW1teWxldHRlcntefSUKKyAgICBcZGVmaW5lZHVtbXlsZXR0ZXJ7YH0lCisgICAgXGRlZmluZWR1bW15bGV0dGVye359JQorICAgIFxkZWZpbmVkdW1teXdvcmR7dX0lCisgICAgXGRlZmluZWR1bW15d29yZHt2fSUKKyAgICBcZGVmaW5lZHVtbXl3b3Jke0h9JQorICAgIFxkZWZpbmVkdW1teXdvcmR7ZG90YWNjZW50fSUKKyAgICBcZGVmaW5lZHVtbXl3b3Jke3JpbmdhY2NlbnR9JQorICAgIFxkZWZpbmVkdW1teXdvcmR7dGllYWNjZW50fSUKKyAgICBcZGVmaW5lZHVtbXl3b3Jke3ViYXJhY2NlbnR9JQorICAgIFxkZWZpbmVkdW1teXdvcmR7dWRvdGFjY2VudH0lCisgICAgXGRlZmluZWR1bW15d29yZHtkb3RsZXNzfSUKKyAgICAlCisgICAgJSBUZXhpbmZvIGZvbnQgY29tbWFuZHMuCisgICAgXGRlZmluZWR1bW15d29yZHtifSUKKyAgICBcZGVmaW5lZHVtbXl3b3Jke2l9JQorICAgIFxkZWZpbmVkdW1teXdvcmR7cn0lCisgICAgXGRlZmluZWR1bW15d29yZHtzY30lCisgICAgXGRlZmluZWR1bW15d29yZHt0fSUKKyAgICAlCisgICAgJSBDb21tYW5kcyB0aGF0IHRha2UgYXJndW1lbnRzLgorICAgIFxkZWZpbmVkdW1teXdvcmR7YWNyb255bX0lCisgICAgXGRlZmluZWR1bW15d29yZHtjaXRlfSUKKyAgICBcZGVmaW5lZHVtbXl3b3Jke2NvZGV9JQorICAgIFxkZWZpbmVkdW1teXdvcmR7Y29tbWFuZH0lCisgICAgXGRlZmluZWR1bW15d29yZHtkZm59JQorICAgIFxkZWZpbmVkdW1teXdvcmR7ZW1waH0lCisgICAgXGRlZmluZWR1bW15d29yZHtlbnZ9JQorICAgIFxkZWZpbmVkdW1teXdvcmR7ZmlsZX0lCisgICAgXGRlZmluZWR1bW15d29yZHtrYmR9JQorICAgIFxkZWZpbmVkdW1teXdvcmR7a2V5fSUKKyAgICBcZGVmaW5lZHVtbXl3b3Jke21hdGh9JQorICAgIFxkZWZpbmVkdW1teXdvcmR7b3B0aW9ufSUKKyAgICBcZGVmaW5lZHVtbXl3b3Jke3NhbXB9JQorICAgIFxkZWZpbmVkdW1teXdvcmR7c3Ryb25nfSUKKyAgICBcZGVmaW5lZHVtbXl3b3Jke3RpZX0lCisgICAgXGRlZmluZWR1bW15d29yZHt1cmVmfSUKKyAgICBcZGVmaW5lZHVtbXl3b3Jke3VybH0lCisgICAgXGRlZmluZWR1bW15d29yZHt2YXJ9JQorICAgIFxkZWZpbmVkdW1teXdvcmR7dmVyYn0lCisgICAgXGRlZmluZWR1bW15d29yZHt3fSUKKyAgfQorfQogCiAlIFxpbmRleG5vZm9udHMgaXMgdXNlZCB3aGVuIG91dHB1dHRpbmcgdGhlIHN0cmluZ3MgdG8gc29ydCB0aGUgaW5kZXgKICUgYnksIGFuZCB3aGVuIGNvbnN0cnVjdGluZyBjb250cm9sIHNlcXVlbmNlIG5hbWVzLiAgSXQgZWxpbWluYXRlcyBhbGwKICUgY29udHJvbCBzZXF1ZW5jZXMgYW5kIGp1c3Qgd3JpdGVzIHdoYXRldmVyIHRoZSBiZXN0IEFTQ0lJIHNvcnQgc3RyaW5nCiAlIHdvdWxkIGJlIGZvciBhIGdpdmVuIGNvbW1hbmQgKHVzdWFsbHkgaXRzIGFyZ3VtZW50KS4KICUKLVxkZWZcaW5kZXhkdW1teXRleHtUZVh9Ci1cZGVmXGluZGV4ZHVtbXlkb3Rzey4uLn0KLSUKIFxkZWZcaW5kZXhub2ZvbnRzeyUKKyAgXGRlZlxkZWZpbmVkdW1teXdvcmQjIzF7JQorICAgIFxleHBhbmRhZnRlclxsZXRcY3NuYW1lICMjMVxlbmRjc25hbWVcYXNpcworICB9JQorICBcbGV0XGRlZmluZWR1bW15bGV0dGVyPVxkZWZpbmVkdW1teXdvcmQKKyAgJQorICBcY29tbW9uZHVtbWllc25vZm9udHMKKyAgJQorICAlIERvbid0IG5vLW9wIFx0dCwgc2luY2UgaXQgaXNuJ3QgYSB1c2VyLWxldmVsIGNvbW1hbmQKKyAgJSBhbmQgaXMgdXNlZCBpbiB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIGFjdGl2ZSBjaGFycyBsaWtlIDwsID4sIHwsIGV0Yy4KKyAgJSBMaWtld2lzZSB3aXRoIHRoZSBvdGhlciBwbGFpbiB0ZXggZm9udCBjb21tYW5kcy4KKyAgJVxsZXRcdHQ9XGFzaXMKKyAgJQogICBcZGVmXCB7IH0lCiAgIFxkZWZcQHtAfSUKICAgJSBob3cgdG8gaGFuZGxlIGJyYWNlcz8KICAgXGRlZlxfe1xub3JtYWx1bmRlcnNjb3JlfSUKICAgJQotICBcbGV0XCw9XGFzaXMKLSAgXGxldFwiPVxhc2lzCi0gIFxsZXRcYD1cYXNpcwotICBcbGV0XCc9XGFzaXMKLSAgXGxldFxePVxhc2lzCi0gIFxsZXRcfj1cYXNpcwotICBcbGV0XD09XGFzaXMKLSAgXGxldFx1PVxhc2lzCi0gIFxsZXRcdj1cYXNpcwotICBcbGV0XEg9XGFzaXMKLSAgXGxldFxkb3RhY2NlbnQ9XGFzaXMKLSAgXGxldFxyaW5nYWNjZW50PVxhc2lzCi0gIFxsZXRcdGllYWNjZW50PVxhc2lzCi0gIFxsZXRcdWJhcmFjY2VudD1cYXNpcwotICBcbGV0XHVkb3RhY2NlbnQ9XGFzaXMKLSAgXGxldFxkb3RsZXNzPVxhc2lzCi0gICUKLSAgJSBPdGhlciBub24tRW5nbGlzaCBsZXR0ZXJzLgorICAlIE5vbi1FbmdsaXNoIGxldHRlcnMuCiAgIFxkZWZcQUF7QUF9JQogICBcZGVmXEFFe0FFfSUKICAgXGRlZlxMe0x9JQpAQCAtMzE1OSwxMzAgKzMyMjksMTY0IEBACiAgIFxkZWZcc3N7c3N9JQogICBcZGVmXGV4Y2xhbWRvd257IX0lCiAgIFxkZWZccXVlc3Rpb25kb3duez99JQorICBcZGVmXG9yZGZ7YX0lCisgIFxkZWZcb3JkbXtvfSUKICAgJQotICAlIERvbid0IG5vLW9wIFx0dCwgc2luY2UgaXQgaXNuJ3QgYSB1c2VyLWxldmVsIGNvbW1hbmQKLSAgJSBhbmQgaXMgdXNlZCBpbiB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIGFjdGl2ZSBjaGFycyBsaWtlIDwsID4sIHwsIGV0Yy4KLSAgJSBMaWtld2lzZSB3aXRoIHRoZSBvdGhlciBwbGFpbiB0ZXggZm9udCBjb21tYW5kcy4KLSAgJVxsZXRcdHQ9XGFzaXMKKyAgXGRlZlxMYVRlWHtMYVRlWH0lCisgIFxkZWZcVGVYe1RlWH0lCiAgICUKLSAgJSBUZXhpbmZvIGZvbnQgY29tbWFuZHMuCi0gIFxsZXRcYj1cYXNpcwotICBcbGV0XGk9XGFzaXMKLSAgXGxldFxyPVxhc2lzCi0gIFxsZXRcc2M9XGFzaXMKLSAgXGxldFx0PVxhc2lzCi0gICUKLSAgXGxldFxUZVg9XGluZGV4ZHVtbXl0ZXgKLSAgXGxldFxhY3JvbnltPVxhc2lzCi0gIFxsZXRcY2l0ZT1cYXNpcwotICBcbGV0XGNvZGU9XGFzaXMKLSAgXGxldFxjb21tYW5kPVxhc2lzCi0gIFxsZXRcZGZuPVxhc2lzCi0gIFxsZXRcZG90cz1caW5kZXhkdW1teWRvdHMKLSAgXGxldFxlbXBoPVxhc2lzCi0gIFxsZXRcZW52PVxhc2lzCi0gIFxsZXRcZmlsZT1cYXNpcwotICBcbGV0XGtiZD1cYXNpcwotICBcbGV0XGtleT1cYXNpcwotICBcbGV0XG1hdGg9XGFzaXMKLSAgXGxldFxvcHRpb249XGFzaXMKLSAgXGxldFxzYW1wPVxhc2lzCi0gIFxsZXRcc3Ryb25nPVxhc2lzCi0gIFxsZXRcdXJlZj1cYXNpcwotICBcbGV0XHVybD1cYXNpcwotICBcbGV0XHZhcj1cYXNpcwotICBcbGV0XHc9XGFzaXMKKyAgJSBBc3NvcnRlZCBzcGVjaWFsIGNoYXJhY3RlcnMuCisgICUgKFRoZSBmb2xsb3dpbmcge30gd2lsbCBlbmQgdXAgaW4gdGhlIHNvcnQgc3RyaW5nLCBidXQgdGhhdCdzIG9rLikKKyAgXGRlZlxidWxsZXR7YnVsbGV0fSUKKyAgXGRlZlxjb3B5cmlnaHR7Y29weXJpZ2h0fSUKKyAgXGRlZlxyZWdpc3RlcmVkc3ltYm9se1J9JQorICBcZGVmXGRvdHN7Li4ufSUKKyAgXGRlZlxlbmRkb3Rzey4uLn0lCisgIFxkZWZcZXF1aXZ7PT19JQorICBcZGVmXGVycm9ye2Vycm9yfSUKKyAgXGRlZlxleHBhbnNpb257PT0+fSUKKyAgXGRlZlxtaW51c3stfSUKKyAgXGRlZlxwb3VuZHN7cG91bmRzfSUKKyAgXGRlZlxwb2ludHsufSUKKyAgXGRlZlxwcmludHstfH0lCisgIFxkZWZccmVzdWx0ez0+fSUKIH0KIAogXGxldFxpbmRleGJhY2tzbGFzaD0wICAlb3ZlcnJpZGRlbiBkdXJpbmcgXHByaW50aW5kZXguCiBcbGV0XFNFVG1hcmdpbmluZGV4PVxyZWxheCAlIHB1dCBpbmRleCBlbnRyaWVzIGluIG1hcmdpbiAodW5kb2N1bWVudGVkKT8KIAotJSBGb3IgXGlmeCBjb21wYXJpc29ucy4KLVxkZWZcZW1wdHltYWNyb3tcZW1wdHl9Ci0KICUgTW9zdCBpbmRleCBlbnRyaWVzIGdvIHRocm91Z2ggaGVyZSwgYnV0IFxkb3N1YmluZCBpcyB0aGUgZ2VuZXJhbCBjYXNlLgotJQotXGRlZlxkb2luZCMxIzJ7XGRvc3ViaW5keyMxfXsjMn1cZW1wdHl9CislICMxIGlzIHRoZSBpbmRleCBuYW1lLCAjMiBpcyB0aGUgZW50cnkgdGV4dC4KK1xkZWZcZG9pbmQjMSMye1xkb3N1YmluZHsjMX17IzJ9e319CiAKICUgV29ya2hvcnNlIGZvciBhbGwgXGZvb2luZGV4ZXMuCiAlICMxIGlzIG5hbWUgb2YgaW5kZXgsICMyIGlzIHN0dWZmIHRvIHB1dCB0aGVyZSwgIzMgaXMgc3ViZW50cnkgLS0KLSUgXGVtcHR5IGlmIGNhbGxlZCBmcm9tIFxkb2luZCwgYXMgd2UgdXN1YWxseSBhcmUuICBUaGUgbWFpbiBleGNlcHRpb24KLSUgaXMgd2l0aCBkZWZ1bnMsIHdoaWNoIGNhbGwgdXMgZGlyZWN0bHkuCislIGVtcHR5IGlmIGNhbGxlZCBmcm9tIFxkb2luZCwgYXMgd2UgdXN1YWxseSBhcmUgKHRoZSBtYWluIGV4Y2VwdGlvbgorJSBpcyB3aXRoIG1vc3QgZGVmdW5zLCB3aGljaCBjYWxsIHVzIGRpcmVjdGx5KS4KICUKIFxkZWZcZG9zdWJpbmQjMSMyIzN7JQorICBcaWZsaW5rcworICB7JQorICAgICUgU3RvcmUgdGhlIG1haW4gaW5kZXggZW50cnkgdGV4dCAoaW5jbHVkaW5nIHRoZSB0aGlyZCBhcmcpLgorICAgIFx0b2tzMCA9IHsjMn0lCisgICAgJSBJZiB0aGlyZCBhcmcgaXMgcHJlc2VudCwgcHJlY2VkZSBpdCB3aXRoIGEgc3BhY2UuCisgICAgXGRlZlx0aGlyZGFyZ3sjM30lCisgICAgXGlmeFx0aGlyZGFyZ1xlbXB0eSBcZWxzZQorICAgICAgXHRva3MwID0gXGV4cGFuZGFmdGVye1x0aGVcdG9rczAgXHNwYWNlICMzfSUKKyAgICBcZmkKKyAgICAlCisgICAgXGVkZWZcd3JpdGV0b3tcY3NuYW1lIzFpbmRmaWxlXGVuZGNzbmFtZX0lCisgICAgJQorICAgIFxpZnZtb2RlCisgICAgICBcZG9zdWJpbmRzYW5pdGl6ZQorICAgIFxlbHNlCisgICAgICBcZG9zdWJpbmR3cml0ZQorICAgIFxmaQorICB9JQorICBcZmkKK30KKworJSBXcml0ZSB0aGUgZW50cnkgaW4gXHRva3MwIHRvIHRoZSBpbmRleCBmaWxlOgorJQorXGRlZlxkb3N1YmluZHdyaXRleyUKICAgJSBQdXQgdGhlIGluZGV4IGVudHJ5IGluIHRoZSBtYXJnaW4gaWYgZGVzaXJlZC4KICAgXGlmeFxTRVRtYXJnaW5pbmRleFxyZWxheFxlbHNlCi0gICAgXGluc2VydFxtYXJnaW57XGhib3h7XHZydWxlIGhlaWdodDhwdCBkZXB0aDNwdCB3aWR0aDBwdCAjMn19JQorICAgIFxpbnNlcnRcbWFyZ2lue1xoYm94e1x2cnVsZSBoZWlnaHQ4cHQgZGVwdGgzcHQgd2lkdGgwcHQgXHRoZVx0b2tzMH19JQogICBcZmkKLSAgeyUKLSAgICBcY291bnQyNTU9XGxhc3RwZW5hbHR5Ci0gICAgeyUKLSAgICAgIFxpbmRleGR1bW1pZXMgJSBNdXN0IGRvIHRoaXMgaGVyZSwgc2luY2UgXGJmLCBldGMgZXhwYW5kIGF0IHRoaXMgc3RhZ2UKLSAgICAgIFxlc2NhcGVjaGFyPWBcXAotICAgICAgeyUKLSAgICAgICAgXGxldFxmb2xpbyA9IDAlIFdlIHdpbGwgZXhwYW5kIGFsbCBtYWNyb3Mgbm93IEVYQ0VQVCBcZm9saW8uCi0gICAgICAgIFxkZWZccmF3YmFja3NsYXNoeHh7XGluZGV4YmFja3NsYXNofSUgXGluZGV4YmFja3NsYXNoIGlzbid0IGRlZmluZWQgbm93Ci0gICAgICAgICUgc28gaXQgd2lsbCBiZSBvdXRwdXQgYXMgaXM7IGFuZCBpdCB3aWxsIHByaW50IGFzIGJhY2tzbGFzaC4KLSAgICAgICAgJQotICAgICAgICAlIFRoZSBtYWluIGluZGV4IGVudHJ5IHRleHQuCi0gICAgICAgIFx0b2tzMCA9IHsjMn0lCi0gICAgICAgICUKLSAgICAgICAgJSBJZiB0aGlyZCBhcmcgaXMgcHJlc2VudCwgcHJlY2VkZSBpdCB3aXRoIHNwYWNlIGluIHNvcnQga2V5LgotICAgICAgICBcZGVmXHRoaXJkYXJneyMzfSUKLSAgICAgICAgXGlmeFx0aGlyZGFyZ1xlbXB0eW1hY3JvIFxlbHNlCi0gICAgICAgICAgICUgSWYgdGhlIHRoaXJkIChzdWJlbnRyeSkgYXJnIGlzIHByZXNlbnQsIGFkZCBpdCB0byB0aGUgaW5kZXgKLSAgICAgICAgICAgJSBsaW5lIHRvIHdyaXRlLgotICAgICAgICAgIFx0b2tzMCA9IFxleHBhbmRhZnRlcntcdGhlXHRva3MwIFxzcGFjZSAjM30lCi0gICAgICAgIFxmaQotICAgICAgICAlCi0gICAgICAgICUgUHJvY2VzcyB0aGUgaW5kZXggZW50cnkgd2l0aCBhbGwgZm9udCBjb21tYW5kcyB0dXJuZWQgb2ZmLCB0bwotICAgICAgICAlIGdldCB0aGUgc3RyaW5nIHRvIHNvcnQgYnkuCi0gICAgICAgIHtcaW5kZXhub2ZvbnRzCi0gICAgICAgICBcZWRlZlx0ZW1we1x0aGVcdG9rczB9JSBuZWVkIGZ1bGwgZXhwYW5zaW9uCi0gICAgICAgICBceGRlZlxpbmRleHNvcnR0bXB7XHRlbXB9JQotICAgICAgICB9JQotICAgICAgICAlCi0gICAgICAgICUgU2V0IHVwIHRoZSBjb21wbGV0ZSBpbmRleCBlbnRyeSwgd2l0aCBib3RoIHRoZSBzb3J0IGtleSBhbmQKLSAgICAgICAgJSB0aGUgb3JpZ2luYWwgdGV4dCwgaW5jbHVkaW5nIGFueSBmb250IGNvbW1hbmRzLiAgV2Ugd3JpdGUKLSAgICAgICAgJSB0aHJlZSBhcmd1bWVudHMgdG8gXGVudHJ5IHRvIHRoZSAuPz8gZmlsZSAoZm91ciBpbiB0aGUKLSAgICAgICAgJSBzdWJlbnRyeSBjYXNlKSwgdGV4aW5kZXggcmVkdWNlcyB0byB0d28gd2hlbiB3cml0aW5nIHRoZSAuPz9zCi0gICAgICAgICUgc29ydGVkIHJlc3VsdC4KLSAgICAgICAgXGVkZWZcdGVtcHslCi0gICAgICAgICAgXHdyaXRlXGNzbmFtZSMxaW5kZmlsZVxlbmRjc25hbWV7JQotICAgICAgICAgICAgXHJlYWxiYWNrc2xhc2ggZW50cnl7XGluZGV4c29ydHRtcH17XGZvbGlvfXtcdGhlXHRva3MwfX0lCi0gICAgICAgIH0lCi0gICAgICAgICUKLSAgICAgICAgJSBJZiBhIHNraXAgaXMgdGhlIGxhc3QgdGhpbmcgb24gdGhlIGxpc3Qgbm93LCBwcmVzZXJ2ZSBpdAotICAgICAgICAlIGJ5IGJhY2tpbmcgdXAgYnkgXGxhc3Rza2lwLCBkb2luZyB0aGUgXHdyaXRlLCB0aGVuIGluc2VydGluZwotICAgICAgICAlIHRoZSBza2lwIGFnYWluLiAgT3RoZXJ3aXNlLCB0aGUgd2hhdHNpdCBnZW5lcmF0ZWQgYnkgdGhlCi0gICAgICAgICUgXHdyaXRlIHdpbGwgbWFrZSBcbGFzdHNraXAgemVyby4gIFRoZSByZXN1bHQgaXMgdGhhdCBzZXF1ZW5jZXMKLSAgICAgICAgJSBsaWtlIHRoaXM6Ci0gICAgICAgICUgQGVuZCBkZWZ1bgotICAgICAgICAlIEB0aW5kZXggd2hhdGV2ZXIKLSAgICAgICAgJSBAZGVmdW4gLi4uCi0gICAgICAgICUgd2lsbCBoYXZlIGV4dHJhIHNwYWNlIGluc2VydGVkLCBiZWNhdXNlIHRoZSBcbWVkYnJlYWsgaW4gdGhlCi0gICAgICAgICUgc3RhcnQgb2YgdGhlIEBkZWZ1biB3b24ndCBzZWUgdGhlIHNraXAgaW5zZXJ0ZWQgYnkgdGhlIEBlbmQgb2YKLSAgICAgICAgJSB0aGUgcHJldmlvdXMgZGVmdW4uCi0gICAgICAgICUKLSAgICAgICAgJSBCdXQgZG9uJ3QgZG8gYW55IG9mIHRoaXMgaWYgd2UncmUgbm90IGluIHZlcnRpY2FsIG1vZGUuICBXZQotICAgICAgICAlIGRvbid0IHdhbnQgdG8gZG8gYSBcdnNraXAgYW5kIHByZW1hdHVyZWx5IGVuZCBhIHBhcmFncmFwaC4KLSAgICAgICAgJQotICAgICAgICAlIEF2b2lkIHBhZ2UgYnJlYWtzIGR1ZSB0byB0aGVzZSBleHRyYSBza2lwcywgdG9vLgotICAgICAgICAlCi0gICAgICAgIFxpZmxpbmtzCi0gICAgICAgICAgXGlmdm1vZGUKLSAgICAgICAgICAgIFxza2lwMCA9IFxsYXN0c2tpcAotICAgICAgICAgICAgXGlmZGltXGxhc3Rza2lwID0gMHB0IFxlbHNlIFxub2JyZWFrXHZza2lwLVxza2lwMCBcZmkKLSAgICAgICAgICBcZmkKLSAgICAgICAgICAlCi0gICAgICAgICAgXHRlbXAgJSBkbyB0aGUgd3JpdGUKLSAgICAgICAgICAlCi0gICAgICAgICAgXGlmdm1vZGUgXGlmZGltXHNraXAwID0gMHB0IFxlbHNlIFxub2JyZWFrXHZza2lwXHNraXAwIFxmaSBcZmkKLSAgICAgICAgXGZpCi0gICAgICB9JQotICAgIH0lCi0gICAgXHBlbmFsdHlcY291bnQyNTUKKyAgJQorICAlIFJlbWVtYmVyLCB3ZSBhcmUgd2l0aGluIGEgZ3JvdXAuCisgIFxpbmRleGR1bW1pZXMgJSBNdXN0IGRvIHRoaXMgaGVyZSwgc2luY2UgXGJmLCBldGMgZXhwYW5kIGF0IHRoaXMgc3RhZ2UKKyAgXGVzY2FwZWNoYXI9YFxcCisgIFxkZWZcYmFja3NsYXNoY3VyZm9udHtcaW5kZXhiYWNrc2xhc2h9JSBcaW5kZXhiYWNrc2xhc2ggaXNuJ3QgZGVmaW5lZCBub3cKKyAgICAgICUgc28gaXQgd2lsbCBiZSBvdXRwdXQgYXMgaXM7IGFuZCBpdCB3aWxsIHByaW50IGFzIGJhY2tzbGFzaC4KKyAgJQorICAlIFByb2Nlc3MgdGhlIGluZGV4IGVudHJ5IHdpdGggYWxsIGZvbnQgY29tbWFuZHMgdHVybmVkIG9mZiwgdG8KKyAgJSBnZXQgdGhlIHN0cmluZyB0byBzb3J0IGJ5LgorICB7XGluZGV4bm9mb250cworICAgXGVkZWZcdGVtcHtcdGhlXHRva3MwfSUgbmVlZCBmdWxsIGV4cGFuc2lvbgorICAgXHhkZWZcaW5kZXhzb3J0dG1we1x0ZW1wfSUKICAgfSUKKyAgJQorICAlIFNldCB1cCB0aGUgY29tcGxldGUgaW5kZXggZW50cnksIHdpdGggYm90aCB0aGUgc29ydCBrZXkgYW5kCisgICUgdGhlIG9yaWdpbmFsIHRleHQsIGluY2x1ZGluZyBhbnkgZm9udCBjb21tYW5kcy4gIFdlIHdyaXRlCisgICUgdGhyZWUgYXJndW1lbnRzIHRvIFxlbnRyeSB0byB0aGUgLj8/IGZpbGUgKGZvdXIgaW4gdGhlCisgICUgc3ViZW50cnkgY2FzZSksIHRleGluZGV4IHJlZHVjZXMgdG8gdHdvIHdoZW4gd3JpdGluZyB0aGUgLj8/cworICAlIHNvcnRlZCByZXN1bHQuCisgIFxlZGVmXHRlbXB7JQorICAgIFx3cml0ZVx3cml0ZXRveyUKKyAgICAgIFxzdHJpbmdcZW50cnl7XGluZGV4c29ydHRtcH17XG5vZXhwYW5kXGZvbGlvfXtcdGhlXHRva3MwfX0lCisgIH0lCisgIFx0ZW1wCit9CisKKyUgVGFrZSBjYXJlIG9mIHVud2FudGVkIHBhZ2UgYnJlYWtzOgorJQorJSBJZiBhIHNraXAgaXMgdGhlIGxhc3QgdGhpbmcgb24gdGhlIGxpc3Qgbm93LCBwcmVzZXJ2ZSBpdAorJSBieSBiYWNraW5nIHVwIGJ5IFxsYXN0c2tpcCwgZG9pbmcgdGhlIFx3cml0ZSwgdGhlbiBpbnNlcnRpbmcKKyUgdGhlIHNraXAgYWdhaW4uICBPdGhlcndpc2UsIHRoZSB3aGF0c2l0IGdlbmVyYXRlZCBieSB0aGUKKyUgXHdyaXRlIHdpbGwgbWFrZSBcbGFzdHNraXAgemVyby4gIFRoZSByZXN1bHQgaXMgdGhhdCBzZXF1ZW5jZXMKKyUgbGlrZSB0aGlzOgorJSBAZW5kIGRlZnVuCislIEB0aW5kZXggd2hhdGV2ZXIKKyUgQGRlZnVuIC4uLgorJSB3aWxsIGhhdmUgZXh0cmEgc3BhY2UgaW5zZXJ0ZWQsIGJlY2F1c2UgdGhlIFxtZWRicmVhayBpbiB0aGUKKyUgc3RhcnQgb2YgdGhlIEBkZWZ1biB3b24ndCBzZWUgdGhlIHNraXAgaW5zZXJ0ZWQgYnkgdGhlIEBlbmQgb2YKKyUgdGhlIHByZXZpb3VzIGRlZnVuLgorJQorJSBCdXQgZG9uJ3QgZG8gYW55IG9mIHRoaXMgaWYgd2UncmUgbm90IGluIHZlcnRpY2FsIG1vZGUuICBXZQorJSBkb24ndCB3YW50IHRvIGRvIGEgXHZza2lwIGFuZCBwcmVtYXR1cmVseSBlbmQgYSBwYXJhZ3JhcGguCislCislIEF2b2lkIHBhZ2UgYnJlYWtzIGR1ZSB0byB0aGVzZSBleHRyYSBza2lwcywgdG9vLgorJQorJSBCdXQgd2FpdCwgdGhlcmUgaXMgYSBjYXRjaCB0aGVyZToKKyUgV2UnbGwgaGF2ZSB0byBjaGVjayB3aGV0aGVyIFxsYXN0c2tpcCBpcyB6ZXJvIHNraXAuICBcaWZkaW0gaXMgbm90CislIHN1ZmZpY2llbnQgZm9yIHRoaXMgcHVycG9zZSwgYXMgaXQgaWdub3JlcyBzdHJldGNoIGFuZCBzaHJpbmsgcGFydHMKKyUgb2YgdGhlIHNraXAuICBUaGUgb25seSB3YXkgc2VlbXMgdG8gYmUgdG8gY2hlY2sgdGhlIHRleHR1YWwKKyUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNraXAuCislCislIFRoZSBmb2xsb3dpbmcgaXMgYWxtb3N0IGxpa2UgXGRlZlx6ZXJvc2tpcG1hY3JvezAuMHB0fSBleGNlcHQgdGhhdAorJSB0aGUgYGBwJycgYW5kIGBgdCcnIGNoYXJhY3RlcnMgaGF2ZSBjYXRjb2RlIFxvdGhlciwgbm90IDExIChsZXR0ZXIpLgorJQorXGVkZWZcemVyb3NraXBtYWNyb3tcZXhwYW5kYWZ0ZXJcdGhlXGNzbmFtZSB6QHNraXBcZW5kY3NuYW1lfQorJQorJSAuLi4sIHJlYWR5LCBHTzoKKyUKK1xkZWZcZG9zdWJpbmRzYW5pdGl6ZXslCisgICUgXGxhc3Rza2lwIGFuZCBcbGFzdHBlbmFsdHkgY2Fubm90IGJvdGggYmUgbm9uemVybyBzaW11bHRhbmVvdXNseS4KKyAgXHNraXAwID0gXGxhc3Rza2lwCisgIFxlZGVmXGxhc3Rza2lwbWFjcm97XHRoZVxsYXN0c2tpcH0lCisgIFxjb3VudDI1NSA9IFxsYXN0cGVuYWx0eQorICAlCisgICUgSWYgXGxhc3Rza2lwIGlzIG5vbnplcm8sIHRoYXQgbWVhbnMgdGhlIGxhc3QgaXRlbSB3YXMgYQorICAlIHNraXAuICBBbmQgc2luY2UgYSBza2lwIGlzIGRpc2NhcmRhYmxlLCB0aGF0IG1lYW5zIHRoaXMKKyAgJSAtXHNraXAwIGdsdWUgd2UncmUgaW5zZXJ0aW5nIGlzIHByZWNlZGVkIGJ5IGEKKyAgJSBub24tZGlzY2FyZGFibGUgaXRlbSwgdGhlcmVmb3JlIGl0IGlzIG5vdCBhIHBvdGVudGlhbAorICAlIGJyZWFrcG9pbnQsIHRoZXJlZm9yZSBubyBcbm9icmVhayBuZWVkZWQuCisgIFxpZnhcbGFzdHNraXBtYWNyb1x6ZXJvc2tpcG1hY3JvCisgIFxlbHNlCisgICAgXHZza2lwLVxza2lwMAorICBcZmkKKyAgJQorICBcZG9zdWJpbmR3cml0ZQorICAlCisgIFxpZnhcbGFzdHNraXBtYWNyb1x6ZXJvc2tpcG1hY3JvCisgICAgJSBpZiBcbGFzdHNraXAgd2FzIHplcm8sIHBlcmhhcHMgdGhlIGxhc3QgaXRlbSB3YXMgYQorICAgICUgcGVuYWx0eSwgYW5kIHBlcmhhcHMgaXQgd2FzID49MTAwMDAsIGUuZy4sIGEgXG5vYnJlYWsuCisgICAgJSBJbiB0aGF0IGNhc2UsIHdlIHdhbnQgdG8gcmUtaW5zZXJ0IHRoZSBwZW5hbHR5OyBzaW5jZSB3ZQorICAgICUganVzdCBpbnNlcnRlZCBhIG5vbi1kaXNjYXJkYWJsZSBpdGVtLCBhbnkgZm9sbG93aW5nIGdsdWUKKyAgICAlIChzdWNoIGFzIGEgXHBhcnNraXApIHdvdWxkIGJlIGEgYnJlYWtwb2ludC4gIEZvciBleGFtcGxlOgorICAgICUgICBAZGVmZm4gZGVmZm4td2hhdGV2ZXIKKyAgICAlICAgQHZpbmRleCBpbmRleC13aGF0ZXZlcgorICAgICUgICBEZXNjcmlwdGlvbi4KKyAgICAlIHdvdWxkIGFsbG93IGEgYnJlYWsgYmV0d2VlbiB0aGUgaW5kZXgtd2hhdGV2ZXIgd2hhdHNpdAorICAgICUgYW5kIHRoZSAiRGVzY3JpcHRpb24uIiBwYXJhZ3JhcGguCisgICAgXGlmbnVtXGNvdW50MjU1Pjk5OTkgXG5vYnJlYWsgXGZpCisgIFxlbHNlCisgICAgJSBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgd2UgaGFkIGEgbm9uemVybyBcbGFzdHNraXAsCisgICAgJSB0aGlzIG1ha2UtdXAgZ2x1ZSB3b3VsZCBiZSBwcmVjZWRlZCBieSBhIG5vbi1kaXNjYXJkYWJsZSBpdGVtCisgICAgJSAodGhlIHdoYXRzaXQgZnJvbSB0aGUgXHdyaXRlKSwgc28gd2UgbXVzdCBpbnNlcnQgYSBcbm9icmVhay4KKyAgICBcbm9icmVha1x2c2tpcFxza2lwMAorICBcZmkKIH0KIAogJSBUaGUgaW5kZXggZW50cnkgd3JpdHRlbiBpbiB0aGUgZmlsZSBhY3R1YWxseSBsb29rcyBsaWtlCkBAIC0zMzIwLDEzICszNDI0LDEyIEBACiAlIEBwcmludGluZGV4IGNhdXNlcyBhIHBhcnRpY3VsYXIgaW5kZXggKHRoZSA/P3MgZmlsZSkgdG8gZ2V0IHByaW50ZWQuCiAlIEl0IGRvZXMgbm90IHByaW50IGFueSBjaGFwdGVyIGhlYWRpbmcgKHVzdWFsbHkgYW4gQHVubnVtYmVyZWQpLgogJQotXGRlZlxwcmludGluZGV4e1xwYXJzZWFyZ1xkb3ByaW50aW5kZXh9Ci1cZGVmXGRvcHJpbnRpbmRleCMxe1xiZWdpbmdyb3VwCitccGFyc2VhcmdkZWZccHJpbnRpbmRleHtcYmVnaW5ncm91cAogICBcZG9icmVhayBcY2hhcGhlYWRpbmdza2lwezEwMDAwfSUKICAgJQogICBcc21hbGxmb250cyBccm0KICAgXHRvbGVyYW5jZSA9IDk1MDAKLSAgXGluZGV4YnJlYWtzCisgIFxldmVyeXBhciA9IHt9JSBkb24ndCB3YW50IHRoZSBca2VyblwtcGFyaW5kZW50IGZyb20gaW5kZW50YXRpb24gc3VwcHJlc3Npb24uCiAgICUKICAgJSBTZWUgaWYgdGhlIGluZGV4IGZpbGUgZXhpc3RzIGFuZCBpcyBub25lbXB0eS4KICAgJSBDaGFuZ2UgY2F0Y29kZSBvZiBAIGhlcmUgc28gdGhhdCBpZiB0aGUgaW5kZXggZmlsZSBjb250YWlucwpAQCAtMzM1Myw3ICszNDU2LDcgQEAKICAgICAgICUgSW5kZXggZmlsZXMgYXJlIGFsbW9zdCBUZXhpbmZvIHNvdXJjZSwgYnV0IHdlIHVzZSBcIGFzIHRoZSBlc2NhcGUKICAgICAgICUgY2hhcmFjdGVyLiAgSXQgd291bGQgYmUgYmV0dGVyIHRvIHVzZSBALCBidXQgdGhhdCdzIHRvbyBiaWcgYSBjaGFuZ2UKICAgICAgICUgdG8gbWFrZSByaWdodCBub3cuCi0gICAgICBcZGVmXGluZGV4YmFja3NsYXNoe1xyYXdiYWNrc2xhc2h4eH0lCisgICAgICBcZGVmXGluZGV4YmFja3NsYXNoe1xiYWNrc2xhc2hjdXJmb250fSUKICAgICAgIFxjYXRjb2RlYFxcID0gMAogICAgICAgXGVzY2FwZWNoYXIgPSBgXFwKICAgICAgIFxiZWdpbmRvdWJsZWNvbHVtbnMKQEAgLTMzOTEsNzQgKzM0OTQsOTUgQEAKICAgXG5vYnJlYWsKIH19CiAKLSUgVGhpcyB0eXBlc2V0cyBhIHBhcmFncmFwaCBjb25zaXN0aW5nIG9mICMxLCBkb3QgbGVhZGVycywgYW5kIHRoZW4gIzIKLSUgZmx1c2ggdG8gdGhlIHJpZ2h0IG1hcmdpbi4gIEl0IGlzIHVzZWQgZm9yIGluZGV4IGFuZCB0YWJsZSBvZiBjb250ZW50cwotJSBlbnRyaWVzLiAgVGhlIHBhcmFncmFwaCBpcyBpbmRlbnRlZCBieSBcbGVmdHNraXAuCislIFxlbnRyeSB0eXBlc2V0cyBhIHBhcmFncmFwaCBjb25zaXN0aW5nIG9mIHRoZSB0ZXh0ICgjMSksIGRvdCBsZWFkZXJzLCBhbmQKKyUgdGhlbiBwYWdlIG51bWJlciAoIzIpIGZsdXNoZWQgdG8gdGhlIHJpZ2h0IG1hcmdpbi4gIEl0IGlzIHVzZWQgZm9yIGluZGV4CislIGFuZCB0YWJsZSBvZiBjb250ZW50cyBlbnRyaWVzLiAgVGhlIHBhcmFncmFwaCBpcyBpbmRlbnRlZCBieSBcbGVmdHNraXAuCiAlCi1cZGVmXGVudHJ5IzEjMntcYmVnaW5ncm91cAotICAlCi0gICUgU3RhcnQgYSBuZXcgcGFyYWdyYXBoIGlmIG5lY2Vzc2FyeSwgc28gb3VyIGFzc2lnbm1lbnRzIGJlbG93IGNhbid0Ci0gICUgYWZmZWN0IHByZXZpb3VzIHRleHQuCi0gIFxwYXIKLSAgJQotICAlIERvIG5vdCBmaWxsIG91dCB0aGUgbGFzdCBsaW5lIHdpdGggd2hpdGUgc3BhY2UuCi0gIFxwYXJmaWxsc2tpcCA9IDBpbgotICAlCi0gICUgTm8gZXh0cmEgc3BhY2UgYWJvdmUgdGhpcyBwYXJhZ3JhcGguCi0gIFxwYXJza2lwID0gMGluCi0gICUKLSAgJSBEbyBub3QgcHJlZmVyIGEgc2VwYXJhdGUgbGluZSBlbmRpbmcgd2l0aCBhIGh5cGhlbiB0byBmZXdlciBsaW5lcy4KLSAgXGZpbmFsaHlwaGVuZGVtZXJpdHMgPSAwCi0gICUKLSAgJSBcaGFuZ2luZGVudCBpcyBvbmx5IHJlbGV2YW50IHdoZW4gdGhlIGVudHJ5IHRleHQgYW5kIHBhZ2UgbnVtYmVyCi0gICUgZG9uJ3QgYm90aCBmaXQgb24gb25lIGxpbmUuICBJbiB0aGF0IGNhc2UsIGJvYiBzdWdnZXN0cyBzdGFydGluZyB0aGUKLSAgJSBkb3RzIHByZXR0eSBmYXIgb3ZlciBvbiB0aGUgbGluZS4gIFVuZm9ydHVuYXRlbHksIGEgbGFyZ2UKLSAgJSBpbmRlbnRhdGlvbiBsb29rcyB3cm9uZyB3aGVuIHRoZSBlbnRyeSB0ZXh0IGl0c2VsZiBpcyBicm9rZW4gYWNyb3NzCi0gICUgbGluZXMuICBTbyB3ZSB1c2UgYSBzbWFsbCBpbmRlbnRhdGlvbiBhbmQgcHV0IHVwIHdpdGggbG9uZyBsZWFkZXJzLgotICAlCi0gICUgXGhhbmdhZnRlciBpcyByZXNldCB0byAxICh3aGljaCBpcyB0aGUgdmFsdWUgd2Ugd2FudCkgYXQgdGhlIHN0YXJ0Ci0gICUgb2YgZWFjaCBwYXJhZ3JhcGgsIHNvIHdlIG5lZWQgbm90IGRvIGFueXRoaW5nIHdpdGggdGhhdC4KLSAgXGhhbmdpbmRlbnQgPSAyZW0KLSAgJQotICAlIFdoZW4gdGhlIGVudHJ5IHRleHQgbmVlZHMgdG8gYmUgYnJva2VuLCBqdXN0IGZpbGwgb3V0IHRoZSBmaXJzdCBsaW5lCi0gICUgd2l0aCBibGFuayBzcGFjZS4KLSAgXHJpZ2h0c2tpcCA9IDBwdCBwbHVzMWZpbAotICAlCi0gICUgQSBiaXQgb2Ygc3RyZXRjaCBiZWZvcmUgZWFjaCBlbnRyeSBmb3IgdGhlIGJlbmVmaXQgb2YgYmFsYW5jaW5nIGNvbHVtbnMuCi0gIFx2c2tpcCAwcHQgcGx1czFwdAotICAlCi0gICUgU3RhcnQgYSBgYHBhcmFncmFwaCcnIGZvciB0aGUgaW5kZXggZW50cnkgc28gdGhlIGxpbmUgYnJlYWtpbmcKLSAgJSBwYXJhbWV0ZXJzIHdlJ3ZlIHNldCBhYm92ZSB3aWxsIGhhdmUgYW4gZWZmZWN0LgotICBcbm9pbmRlbnQKLSAgJQotICAlIEluc2VydCB0aGUgdGV4dCBvZiB0aGUgaW5kZXggZW50cnkuICBUZVggd2lsbCBkbyBsaW5lLWJyZWFraW5nIG9uIGl0LgotICAjMSUKLSAgJSBUaGUgZm9sbG93aW5nIGlzIGtsdWRnZWQgdG8gbm90IG91dHB1dCBhIGxpbmUgb2YgZG90cyBpbiB0aGUgaW5kZXggaWYKLSAgJSB0aGVyZSBhcmUgbm8gcGFnZSBudW1iZXJzLiAgVGhlIG5leHQgcGVyc29uIHdobyBicmVha3MgdGhpcyB3aWxsIGJlCi0gICUgY3Vyc2VkIGJ5IGEgVW5peCBkYWVtb24uCi0gIFxkZWZcdGVtcGF7e1xybSB9fSUKLSAgXGRlZlx0ZW1wYnsjMn0lCi0gIFxlZGVmXHRlbXBje1x0ZW1wYX0lCi0gIFxlZGVmXHRlbXBke1x0ZW1wYn0lCi0gIFxpZnhcdGVtcGNcdGVtcGRcIFxlbHNlJQorJSBBIHN0cmFpZ2h0Zm9yd2FyZCBpbXBsZW1lbnRhdGlvbiB3b3VsZCBzdGFydCBsaWtlIHRoaXM6CislCVxkZWZcZW50cnkjMSMyey4uLgorJSBCdXQgdGhpcyBmcm96ZXMgdGhlIGNhdGNvZGVzIGluIHRoZSBhcmd1bWVudCwgYW5kIGNhbiBjYXVzZSBwcm9ibGVtcyB0bworJSBAY29kZSwgd2hpY2ggc2V0cyAtIGFjdGl2ZS4gIFRoaXMgcHJvYmxlbSB3YXMgZml4ZWQgYnkgYSBrbHVkZ2UtLS0KKyUgYGAtJycgd2FzIGFjdGl2ZSB0aHJvdWdob3V0IHdob2xlIGluZGV4LCBidXQgdGhpcyBpc24ndCByZWFsbHkgcmlnaHQuCislIAorJSBUaGUgcmlnaHQgc29sdXRpb24gaXMgdG8gcHJldmVudCBcZW50cnkgZnJvbSBzd2FsbG93aW5nIHRoZSB3aG9sZSB0ZXh0LgorJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0ta2FzYWwsIDIxbm92MDMKK1xkZWZcZW50cnl7JQorICBcYmVnaW5ncm91cAogICAgICUKLSAgICAlIElmIHdlIG11c3QsIHB1dCB0aGUgcGFnZSBudW1iZXIgb24gYSBsaW5lIG9mIGl0cyBvd24sIGFuZCBmaWxsIG91dAotICAgICUgdGhpcyBsaW5lIHdpdGggYmxhbmsgc3BhY2UuICAoVGhlIFxoZmlsIGlzIG92ZXJ3aGVsbWVkIHdpdGggdGhlCi0gICAgJSBmaWxsIGxlYWRlcnMgZ2x1ZSBpbiBcaW5kZXhkb3RmaWxsIGlmIHRoZSBwYWdlIG51bWJlciBkb2VzIGZpdC4pCi0gICAgXGhmaWxccGVuYWx0eTUwCi0gICAgXG51bGxcbm9icmVha1xpbmRleGRvdGZpbGwgJSBIYXZlIGxlYWRlcnMgYmVmb3JlIHRoZSBwYWdlIG51bWJlci4KKyAgICAlIFN0YXJ0IGEgbmV3IHBhcmFncmFwaCBpZiBuZWNlc3NhcnksIHNvIG91ciBhc3NpZ25tZW50cyBiZWxvdyBjYW4ndAorICAgICUgYWZmZWN0IHByZXZpb3VzIHRleHQuCisgICAgXHBhcgogICAgICUKLSAgICAlIFRoZSBgXCAnIGhlcmUgaXMgcmVtb3ZlZCBieSB0aGUgaW1wbGljaXQgXHVuc2tpcCB0aGF0IFRlWCBkb2VzIGFzCi0gICAgJSBwYXJ0IG9mICh0aGUgcHJpbWl0aXZlKSBccGFyLiAgV2l0aG91dCBpdCwgYSBzcHVyaW91cyB1bmRlcmZ1bGwKLSAgICAlIFxoYm94IGVuc3Vlcy4KLSAgICBcaWZwZGYKLSAgICAgIFxwZGZnZXR0b2tzIzIuXCBcdGhlXHRva3NBICUgVGhlIHBhZ2UgbnVtYmVyIGVuZHMgdGhlIHBhcmFncmFwaC4KKyAgICAlIERvIG5vdCBmaWxsIG91dCB0aGUgbGFzdCBsaW5lIHdpdGggd2hpdGUgc3BhY2UuCisgICAgXHBhcmZpbGxza2lwID0gMGluCisgICAgJQorICAgICUgTm8gZXh0cmEgc3BhY2UgYWJvdmUgdGhpcyBwYXJhZ3JhcGguCisgICAgXHBhcnNraXAgPSAwaW4KKyAgICAlCisgICAgJSBEbyBub3QgcHJlZmVyIGEgc2VwYXJhdGUgbGluZSBlbmRpbmcgd2l0aCBhIGh5cGhlbiB0byBmZXdlciBsaW5lcy4KKyAgICBcZmluYWxoeXBoZW5kZW1lcml0cyA9IDAKKyAgICAlCisgICAgJSBcaGFuZ2luZGVudCBpcyBvbmx5IHJlbGV2YW50IHdoZW4gdGhlIGVudHJ5IHRleHQgYW5kIHBhZ2UgbnVtYmVyCisgICAgJSBkb24ndCBib3RoIGZpdCBvbiBvbmUgbGluZS4gIEluIHRoYXQgY2FzZSwgYm9iIHN1Z2dlc3RzIHN0YXJ0aW5nIHRoZQorICAgICUgZG90cyBwcmV0dHkgZmFyIG92ZXIgb24gdGhlIGxpbmUuICBVbmZvcnR1bmF0ZWx5LCBhIGxhcmdlCisgICAgJSBpbmRlbnRhdGlvbiBsb29rcyB3cm9uZyB3aGVuIHRoZSBlbnRyeSB0ZXh0IGl0c2VsZiBpcyBicm9rZW4gYWNyb3NzCisgICAgJSBsaW5lcy4gIFNvIHdlIHVzZSBhIHNtYWxsIGluZGVudGF0aW9uIGFuZCBwdXQgdXAgd2l0aCBsb25nIGxlYWRlcnMuCisgICAgJQorICAgICUgXGhhbmdhZnRlciBpcyByZXNldCB0byAxICh3aGljaCBpcyB0aGUgdmFsdWUgd2Ugd2FudCkgYXQgdGhlIHN0YXJ0CisgICAgJSBvZiBlYWNoIHBhcmFncmFwaCwgc28gd2UgbmVlZCBub3QgZG8gYW55dGhpbmcgd2l0aCB0aGF0LgorICAgIFxoYW5naW5kZW50ID0gMmVtCisgICAgJQorICAgICUgV2hlbiB0aGUgZW50cnkgdGV4dCBuZWVkcyB0byBiZSBicm9rZW4sIGp1c3QgZmlsbCBvdXQgdGhlIGZpcnN0IGxpbmUKKyAgICAlIHdpdGggYmxhbmsgc3BhY2UuCisgICAgXHJpZ2h0c2tpcCA9IDBwdCBwbHVzMWZpbAorICAgICUKKyAgICAlIEEgYml0IG9mIHN0cmV0Y2ggYmVmb3JlIGVhY2ggZW50cnkgZm9yIHRoZSBiZW5lZml0IG9mIGJhbGFuY2luZworICAgICUgY29sdW1ucy4KKyAgICBcdnNraXAgMHB0IHBsdXMxcHQKKyAgICAlCisgICAgJSBTd2FsbG93IHRoZSBsZWZ0IGJyYWNlIG9mIHRoZSB0ZXh0IChmaXJzdCBwYXJhbWV0ZXIpOgorICAgIFxhZnRlcmFzc2lnbm1lbnRcZG9lbnRyeQorICAgIFxsZXRcdGVtcCA9Cit9CitcZGVmXGRvZW50cnl7JQorICAgIFxiZ3JvdXAgJSBJbnN0ZWFkIG9mIHRoZSBzd2FsbG93ZWQgYnJhY2UuCisgICAgICBcbm9pbmRlbnQKKyAgICAgIFxhZnRlcmdyb3VwXGZpbmlzaGVudHJ5CisgICAgICAlIEFuZCBub3cgY29tZXMgdGhlIHRleHQgb2YgdGhlIGVudHJ5LgorfQorXGRlZlxmaW5pc2hlbnRyeSMxeyUKKyAgICAlICMxIGlzIHRoZSBwYWdlIG51bWJlci4KKyAgICAlCisgICAgJSBUaGUgZm9sbG93aW5nIGlzIGtsdWRnZWQgdG8gbm90IG91dHB1dCBhIGxpbmUgb2YgZG90cyBpbiB0aGUgaW5kZXggaWYKKyAgICAlIHRoZXJlIGFyZSBubyBwYWdlIG51bWJlcnMuICBUaGUgbmV4dCBwZXJzb24gd2hvIGJyZWFrcyB0aGlzIHdpbGwgYmUKKyAgICAlIGN1cnNlZCBieSBhIFVuaXggZGFlbW9uLgorICAgIFxkZWZcdGVtcGF7e1xybSB9fSUKKyAgICBcZGVmXHRlbXBieyMxfSUKKyAgICBcZWRlZlx0ZW1wY3tcdGVtcGF9JQorICAgIFxlZGVmXHRlbXBke1x0ZW1wYn0lCisgICAgXGlmeFx0ZW1wY1x0ZW1wZAorICAgICAgXCAlCiAgICAgXGVsc2UKLSAgICAgIFwgIzIlIFRoZSBwYWdlIG51bWJlciBlbmRzIHRoZSBwYXJhZ3JhcGguCisgICAgICAlCisgICAgICAlIElmIHdlIG11c3QsIHB1dCB0aGUgcGFnZSBudW1iZXIgb24gYSBsaW5lIG9mIGl0cyBvd24sIGFuZCBmaWxsIG91dAorICAgICAgJSB0aGlzIGxpbmUgd2l0aCBibGFuayBzcGFjZS4gIChUaGUgXGhmaWwgaXMgb3ZlcndoZWxtZWQgd2l0aCB0aGUKKyAgICAgICUgZmlsbCBsZWFkZXJzIGdsdWUgaW4gXGluZGV4ZG90ZmlsbCBpZiB0aGUgcGFnZSBudW1iZXIgZG9lcyBmaXQuKQorICAgICAgXGhmaWxccGVuYWx0eTUwCisgICAgICBcbnVsbFxub2JyZWFrXGluZGV4ZG90ZmlsbCAlIEhhdmUgbGVhZGVycyBiZWZvcmUgdGhlIHBhZ2UgbnVtYmVyLgorICAgICAgJQorICAgICAgJSBUaGUgYFwgJyBoZXJlIGlzIHJlbW92ZWQgYnkgdGhlIGltcGxpY2l0IFx1bnNraXAgdGhhdCBUZVggZG9lcyBhcworICAgICAgJSBwYXJ0IG9mICh0aGUgcHJpbWl0aXZlKSBccGFyLiAgV2l0aG91dCBpdCwgYSBzcHVyaW91cyB1bmRlcmZ1bGwKKyAgICAgICUgXGhib3ggZW5zdWVzLgorICAgICAgXGlmcGRmCisJXHBkZmdldHRva3MjMS4lCisJXCBcdGhlXHRva3NBCisgICAgICBcZWxzZQorCVwgIzElCisgICAgICBcZmkKICAgICBcZmkKLSAgXGZpJQotICBccGFyCi1cZW5kZ3JvdXB9CisgICAgXHBhcgorICBcZW5kZ3JvdXAKK30KIAogJSBMaWtlIFxkb3RmaWxsIGV4Y2VwdCB0YWtlcyBhdCBsZWFzdCAxIGVtLgogXGRlZlxpbmRleGRvdGZpbGx7XGNsZWFkZXJzCkBAIC0zNTY5LDcgKzM2OTMsNyBAQAogICBcd2QwPVxoc2l6ZSBcd2QyPVxoc2l6ZQogICBcaGJveCB0b1xwYWdld2lkdGh7XGJveDBcaGZpbFxib3gyfSUKIH0KLSUgCislCiAlIEFsbCBkb25lIHdpdGggZG91YmxlIGNvbHVtbnMuCiBcZGVmXGVuZGRvdWJsZWNvbHVtbnN7JQogICBcb3V0cHV0ID0geyUKQEAgLTM2MjcsNiArMzc1MSwxMiBAQAogXG1lc3NhZ2V7c2VjdGlvbmluZyx9CiAlIENoYXB0ZXJzLCBzZWN0aW9ucywgZXRjLgogCislIFx1bm51bWJlcmVkbm8gaXMgYW4gb3h5bW9yb24sIG9mIGNvdXJzZS4gIEJ1dCB3ZSBjb3VudCB0aGUgdW5udW1iZXJlZAorJSBzZWN0aW9ucyBzbyB0aGF0IHdlIGNhbiByZWZlciB0byB0aGVtIHVuYW1iaWd1b3VzbHkgaW4gdGhlIHBkZgorJSBvdXRsaW5lcyBieSB0aGVpciAic2VjdGlvbiBudW1iZXIiLiAgV2UgYXZvaWQgY29sbGlzaW9ucyB3aXRoIGNoYXB0ZXIKKyUgbnVtYmVycyBieSBzdGFydGluZyB0aGVtIGF0IDEwMDAwLiAgKElmIGEgZG9jdW1lbnQgZXZlciBoYXMgMTAwMDAKKyUgY2hhcHRlcnMsIHdlJ3JlIGluIHRyb3VibGUgYW55d2F5LCBJJ20gc3VyZS4pCitcbmV3Y291bnRcdW5udW1iZXJlZG5vIFx1bm51bWJlcmVkbm8gPSAxMDAwMAogXG5ld2NvdW50XGNoYXBubwogXG5ld2NvdW50XHNlY25vICAgICAgICBcc2Vjbm89MAogXG5ld2NvdW50XHN1YnNlY25vICAgICBcc3Vic2Vjbm89MApAQCAtMzYzNCw5ICszNzY0LDEyIEBACiAKICUgVGhpcyBjb3VudGVyIGlzIGZ1bm55IHNpbmNlIGl0IGNvdW50cyB0aHJvdWdoIGNoYXJjb2RlcyBvZiBsZXR0ZXJzIEEsIEIsIC4uLgogXG5ld2NvdW50XGFwcGVuZGl4bm8gIFxhcHBlbmRpeG5vID0gYFxACislCiAlIFxkZWZcYXBwZW5kaXhsZXR0ZXJ7XGNoYXJcdGhlXGFwcGVuZGl4bm99Ci0lIFdlIGRvIHRoZSBmb2xsb3dpbmcgZm9yIHRoZSBzYWtlIG9mIHBkZnRleCwgd2hpY2ggbmVlZHMgdGhlIGFjdHVhbAorJSBXZSBkbyB0aGUgZm9sbG93aW5nIHVnbHkgY29uZGl0aW9uYWwgaW5zdGVhZCBvZiB0aGUgYWJvdmUgc2ltcGxlCislIGNvbnN0cnVjdCBmb3IgdGhlIHNha2Ugb2YgcGRmdGV4LCB3aGljaCBuZWVkcyB0aGUgYWN0dWFsCiAlIGxldHRlciBpbiB0aGUgZXhwYW5zaW9uLCBub3QganVzdCB0eXBlc2V0LgorJSAKIFxkZWZcYXBwZW5kaXhsZXR0ZXJ7JQogICBcaWZudW1cYXBwZW5kaXhubz1gQSBBJQogICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBCIEIlCkBAIC0zNjc0LDExICszODA3LDEyIEBACiAKICUgRWFjaCBAY2hhcHRlciBkZWZpbmVzIHRoaXMgYXMgdGhlIG5hbWUgb2YgdGhlIGNoYXB0ZXIuCiAlIHBhZ2UgaGVhZGluZ3MgYW5kIGZvb3RpbmdzIGNhbiB1c2UgaXQuICBAc2VjdGlvbiBkb2VzIGxpa2V3aXNlLgorJSBIb3dldmVyLCB0aGV5IGFyZSBub3QgcmVsaWFibGUsIGJlY2F1c2Ugd2UgZG9uJ3QgdXNlIG1hcmtzLgogXGRlZlx0aGlzY2hhcHRlcnt9CiBcZGVmXHRoaXNzZWN0aW9ue30KIAogXG5ld2NvdW50XGFic3NlY2xldmVsICUgdXNlZCB0byBjYWxjdWxhdGUgcHJvcGVyIGhlYWRpbmcgbGV2ZWwKLVxuZXdjb3VudFxzZWNiYXNlXHNlY2Jhc2U9MCAlIEByYWlzZS9sb3dlcnNlY3Rpb25zIG1vZGlmeSB0aGlzIGNvdW50CitcbmV3Y291bnRcc2VjYmFzZVxzZWNiYXNlPTAgJSBAcmFpc2VzZWN0aW9ucy9AbG93ZXJzZWN0aW9ucyBtb2RpZnkgdGhpcyBjb3VudAogCiAlIEByYWlzZXNlY3Rpb25zOiB0cmVhdCBAc2VjdGlvbiBhcyBjaGFwdGVyLCBAc3Vic2VjdGlvbiBhcyBzZWN0aW9uLCBldGMuCiBcZGVmXHJhaXNlc2VjdGlvbnN7XGdsb2JhbFxhZHZhbmNlXHNlY2Jhc2UgYnkgLTF9CkBAIC0zNjkzLDExMyArMzgyNywxMDUgQEAKICUgIzIgaXMgdGV4dCBmb3IgaGVhZGluZwogXGRlZlxudW1oZWFkIzEjMntcYWJzc2VjbGV2ZWw9XHNlY2Jhc2VcYWR2YW5jZVxhYnNzZWNsZXZlbCBieSAjMQogXGlmY2FzZVxhYnNzZWNsZXZlbAotICBcY2hhcHRlcnp6ensjMn0KLVxvcgotICBcc2Vjenp6eyMyfQotXG9yCi0gIFxudW1iZXJlZHN1YnNlY3p6ensjMn0KLVxvcgotICBcbnVtYmVyZWRzdWJzdWJzZWN6enp7IzJ9Ci1cZWxzZQotICBcaWZudW0gXGFic3NlY2xldmVsPDAKLSAgICBcY2hhcHRlcnp6ensjMn0KKyAgICAgIFxjaGFwdGVyenp6eyMyfSUKKyAgXG9yIFxzZWN6enp7IzJ9JQorICBcb3IgXG51bWJlcmVkc3Vic2Vjenp6eyMyfSUKKyAgXG9yIFxudW1iZXJlZHN1YnN1YnNlY3p6ensjMn0lCiAgIFxlbHNlCi0gICAgXG51bWJlcmVkc3Vic3Vic2Vjenp6eyMyfQorICAgIFxpZm51bSBcYWJzc2VjbGV2ZWw8MCBcY2hhcHRlcnp6ensjMn0lCisgICAgXGVsc2UgXG51bWJlcmVkc3Vic3Vic2Vjenp6eyMyfSUKKyAgICBcZmkKICAgXGZpCi1cZmkKKyAgXHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnQKIH0KIAogJSBsaWtlIFxudW1oZWFkLCBidXQgY2hvb3NlcyBhcHBlbmRpeCBoZWFkaW5nIGxldmVscwogXGRlZlxhcHBoZWFkIzEjMntcYWJzc2VjbGV2ZWw9XHNlY2Jhc2VcYWR2YW5jZVxhYnNzZWNsZXZlbCBieSAjMQogXGlmY2FzZVxhYnNzZWNsZXZlbAotICBcYXBwZW5kaXh6enp7IzJ9Ci1cb3IKLSAgXGFwcGVuZGl4c2VjdGlvbnp6ensjMn0KLVxvcgotICBcYXBwZW5kaXhzdWJzZWN6enp7IzJ9Ci1cb3IKLSAgXGFwcGVuZGl4c3Vic3Vic2Vjenp6eyMyfQotXGVsc2UKLSAgXGlmbnVtIFxhYnNzZWNsZXZlbDwwCi0gICAgXGFwcGVuZGl4enp6eyMyfQorICAgICAgXGFwcGVuZGl4enp6eyMyfSUKKyAgXG9yIFxhcHBlbmRpeHNlY3Rpb256enp7IzJ9JQorICBcb3IgXGFwcGVuZGl4c3Vic2Vjenp6eyMyfSUKKyAgXG9yIFxhcHBlbmRpeHN1YnN1YnNlY3p6ensjMn0lCiAgIFxlbHNlCi0gICAgXGFwcGVuZGl4c3Vic3Vic2Vjenp6eyMyfQorICAgIFxpZm51bSBcYWJzc2VjbGV2ZWw8MCBcYXBwZW5kaXh6enp7IzJ9JQorICAgIFxlbHNlIFxhcHBlbmRpeHN1YnN1YnNlY3p6ensjMn0lCisgICAgXGZpCiAgIFxmaQotXGZpCisgIFxzdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50CiB9CiAKICUgbGlrZSBcbnVtaGVhZCwgYnV0IGNob29zZXMgbnVtYmVybGVzcyBoZWFkaW5nIGxldmVscwogXGRlZlx1bm5taGVhZCMxIzJ7XGFic3NlY2xldmVsPVxzZWNiYXNlXGFkdmFuY2VcYWJzc2VjbGV2ZWwgYnkgIzEKLVxpZmNhc2VcYWJzc2VjbGV2ZWwKLSAgXHVubnVtYmVyZWR6enp7IzJ9Ci1cb3IKLSAgXHVubnVtYmVyZWRzZWN6enp7IzJ9Ci1cb3IKLSAgXHVubnVtYmVyZWRzdWJzZWN6enp7IzJ9Ci1cb3IKLSAgXHVubnVtYmVyZWRzdWJzdWJzZWN6enp7IzJ9Ci1cZWxzZQotICBcaWZudW0gXGFic3NlY2xldmVsPDAKLSAgICBcdW5udW1iZXJlZHp6ensjMn0KKyAgXGlmY2FzZVxhYnNzZWNsZXZlbAorICAgICAgXHVubnVtYmVyZWR6enp7IzJ9JQorICBcb3IgXHVubnVtYmVyZWRzZWN6enp7IzJ9JQorICBcb3IgXHVubnVtYmVyZWRzdWJzZWN6enp7IzJ9JQorICBcb3IgXHVubnVtYmVyZWRzdWJzdWJzZWN6enp7IzJ9JQogICBcZWxzZQotICAgIFx1bm51bWJlcmVkc3Vic3Vic2Vjenp6eyMyfQorICAgIFxpZm51bSBcYWJzc2VjbGV2ZWw8MCBcdW5udW1iZXJlZHp6ensjMn0lCisgICAgXGVsc2UgXHVubnVtYmVyZWRzdWJzdWJzZWN6enp7IzJ9JQorICAgIFxmaQogICBcZmkKLVxmaQorICBcc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudAogfQogCi0lIEBjaGFwdGVyLCBAYXBwZW5kaXgsIEB1bm51bWJlcmVkLgotXGRlZlx0aGlzY2hhcHRlcm5hbWV7Tm8gQ2hhcHRlciBUaXRsZX0KLVxvdXRlclxkZWZcY2hhcHRlcntccGFyc2VhcmdcY2hhcHRlcnl5eX0KLVxkZWZcY2hhcHRlcnl5eSAjMXtcbnVtaGVhZDB7IzF9fSAlIG5vcm1hbGx5IG51bWhlYWQwIGNhbGxzIGNoYXB0ZXJ6enoKLVxkZWZcY2hhcHRlcnp6eiAjMXslCi0gIFxzZWNubz0wIFxzdWJzZWNubz0wIFxzdWJzdWJzZWNubz0wCi0gIFxnbG9iYWxcYWR2YW5jZSBcY2hhcG5vIGJ5IDEgXG1lc3NhZ2V7XHB1dHdvcmRDaGFwdGVyXHNwYWNlIFx0aGVcY2hhcG5vfSUKLSAgXGNoYXBtYWNybyB7IzF9e1x0aGVcY2hhcG5vfSUKLSAgXGdkZWZcdGhpc3NlY3Rpb257IzF9JQotICBcZ2RlZlx0aGlzY2hhcHRlcm5hbWV7IzF9JQotICAlIFdlIGRvbid0IHN1YnN0aXR1dGUgdGhlIGFjdHVhbCBjaGFwdGVyIG5hbWUgaW50byBcdGhpc2NoYXB0ZXIKLSAgJSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgaXRzIG1hY3JvcyBldmFsdWF0ZWQgbm93LgotICBceGRlZlx0aGlzY2hhcHRlcntccHV0d29yZENoYXB0ZXJ7fSBcdGhlXGNoYXBubzogXG5vZXhwYW5kXHRoaXNjaGFwdGVybmFtZX0lCi0gIFx3cml0ZXRvY2VudHJ5e2NoYXB9eyMxfXt7XHRoZVxjaGFwbm99fQotICBcZG9ub2RlcmVmCislIEBjaGFwdGVyLCBAYXBwZW5kaXgsIEB1bm51bWJlcmVkLiAgSW5jcmVtZW50IHRvcC1sZXZlbCBjb3VudGVyLCByZXNldAorJSBhbGwgbG93ZXItbGV2ZWwgc2VjdGlvbmluZyBjb3VudGVycyB0byB6ZXJvLgorJSAKKyUgQWxzbyBzZXQgXGNoYXBsZXZlbHByZWZpeCwgd2hpY2ggd2UgcHJlcGVuZCB0byBAZmxvYXQgc2VxdWVuY2UgbnVtYmVycworJSAoZS5nLiwgZmlndXJlcyksIHEudi4gIEJ5IGRlZmF1bHQgKGJlZm9yZSBhbnkgY2hhcHRlciksIHRoYXQgaXMgZW1wdHkuCitcbGV0XGNoYXBsZXZlbHByZWZpeCA9IFxlbXB0eQorJSAKK1xvdXRlclxwYXJzZWFyZ2RlZlxjaGFwdGVye1xudW1oZWFkMHsjMX19ICUgbm9ybWFsbHkgbnVtaGVhZDAgY2FsbHMgY2hhcHRlcnp6egorXGRlZlxjaGFwdGVyenp6IzF7JQorICAlIHNlY3Rpb24gcmVzZXR0aW5nIGlzIFxnbG9iYWwgaW4gY2FzZSB0aGUgY2hhcHRlciBpcyBpbiBhIGdyb3VwLCBzdWNoCisgICUgYXMgYW4gQGluY2x1ZGUgZmlsZS4KKyAgXGdsb2JhbFxzZWNubz0wIFxnbG9iYWxcc3Vic2Vjbm89MCBcZ2xvYmFsXHN1YnN1YnNlY25vPTAKKyAgICBcZ2xvYmFsXGFkdmFuY2VcY2hhcG5vIGJ5IDEKKyAgJQorICAlIFVzZWQgZm9yIFxmbG9hdC4KKyAgXGdkZWZcY2hhcGxldmVscHJlZml4e1x0aGVcY2hhcG5vLn0lCisgIFxyZXNldGFsbGZsb2F0bm9zCisgICUKKyAgXG1lc3NhZ2V7XHB1dHdvcmRDaGFwdGVyXHNwYWNlIFx0aGVcY2hhcG5vfSUKKyAgJQorICAlIFdyaXRlIHRoZSBhY3R1YWwgaGVhZGluZy4KKyAgXGNoYXBtYWNyb3sjMX17WW51bWJlcmVkfXtcdGhlXGNoYXBub30lCisgICUKKyAgJSBTbyBAc2VjdGlvbiBhbmQgdGhlIGxpa2UgYXJlIG51bWJlcmVkIHVuZGVybmVhdGggdGhpcyBjaGFwdGVyLgogICBcZ2xvYmFsXGxldFxzZWN0aW9uID0gXG51bWJlcmVkc2VjCiAgIFxnbG9iYWxcbGV0XHN1YnNlY3Rpb24gPSBcbnVtYmVyZWRzdWJzZWMKICAgXGdsb2JhbFxsZXRcc3Vic3Vic2VjdGlvbiA9IFxudW1iZXJlZHN1YnN1YnNlYwogfQogCi0lIHdlIHVzZSBcY2hhcG5vIHRvIGF2b2lkIGluZGVudGluZyBiYWNrCi1cZGVmXGFwcGVuZGl4Ym94IzF7JQotICBcc2V0Ym94MCA9IFxoYm94e1xwdXR3b3JkQXBwZW5kaXh7fSBcdGhlXGNoYXBub30lCi0gIFxoYm94IHRvIFx3ZDB7IzFcaHNzfX0KLQotXG91dGVyXGRlZlxhcHBlbmRpeHtccGFyc2VhcmdcYXBwZW5kaXh5eXl9Ci1cZGVmXGFwcGVuZGl4eXl5ICMxe1xhcHBoZWFkMHsjMX19ICUgbm9ybWFsbHkgYXBwaGVhZDAgY2FsbHMgYXBwZW5kaXh6enoKLVxkZWZcYXBwZW5kaXh6enogIzF7JQotICBcc2Vjbm89MCBcc3Vic2Vjbm89MCBcc3Vic3Vic2Vjbm89MAotICBcZ2xvYmFsXGFkdmFuY2UgXGFwcGVuZGl4bm8gYnkgMQotICBcbWVzc2FnZXtccHV0d29yZEFwcGVuZGl4XHNwYWNlIFxhcHBlbmRpeGxldHRlcn0lCi0gIFxjaGFwbWFjcm8geyMxfXtcYXBwZW5kaXhib3h7XHB1dHdvcmRBcHBlbmRpeHt9IFxhcHBlbmRpeGxldHRlcn19JQotICBcZ2RlZlx0aGlzc2VjdGlvbnsjMX0lCi0gIFxnZGVmXHRoaXNjaGFwdGVybmFtZXsjMX0lCi0gIFx4ZGVmXHRoaXNjaGFwdGVye1xwdXR3b3JkQXBwZW5kaXh7fSBcYXBwZW5kaXhsZXR0ZXI6IFxub2V4cGFuZFx0aGlzY2hhcHRlcm5hbWV9JQotICBcd3JpdGV0b2NlbnRyeXthcHBlbmRpeH17IzF9e3tcYXBwZW5kaXhsZXR0ZXJ9fQotICBcYXBwZW5kaXhub2RlcmVmCitcb3V0ZXJccGFyc2VhcmdkZWZcYXBwZW5kaXh7XGFwcGhlYWQweyMxfX0gJSBub3JtYWxseSBhcHBoZWFkMCBjYWxscyBhcHBlbmRpeHp6egorXGRlZlxhcHBlbmRpeHp6eiMxeyUKKyAgXGdsb2JhbFxzZWNubz0wIFxnbG9iYWxcc3Vic2Vjbm89MCBcZ2xvYmFsXHN1YnN1YnNlY25vPTAKKyAgICBcZ2xvYmFsXGFkdmFuY2VcYXBwZW5kaXhubyBieSAxCisgIFxnZGVmXGNoYXBsZXZlbHByZWZpeHtcYXBwZW5kaXhsZXR0ZXIufSUKKyAgXHJlc2V0YWxsZmxvYXRub3MKKyAgJQorICBcZGVmXGFwcGVuZGl4bnVte1xwdXR3b3JkQXBwZW5kaXhcc3BhY2UgXGFwcGVuZGl4bGV0dGVyfSUKKyAgXG1lc3NhZ2V7XGFwcGVuZGl4bnVtfSUKKyAgJQorICBcY2hhcG1hY3JveyMxfXtZYXBwZW5kaXh9e1xhcHBlbmRpeGxldHRlcn0lCisgICUKICAgXGdsb2JhbFxsZXRcc2VjdGlvbiA9IFxhcHBlbmRpeHNlYwogICBcZ2xvYmFsXGxldFxzdWJzZWN0aW9uID0gXGFwcGVuZGl4c3Vic2VjCiAgIFxnbG9iYWxcbGV0XHN1YnN1YnNlY3Rpb24gPSBcYXBwZW5kaXhzdWJzdWJzZWMKIH0KIAogJSBAY2VudGVyY2hhcCBpcyBsaWtlIEB1bm51bWJlcmVkLCBidXQgdGhlIGhlYWRpbmcgaXMgY2VudGVyZWQuCi1cb3V0ZXJcZGVmXGNlbnRlcmNoYXB7XHBhcnNlYXJnXGNlbnRlcmNoYXB5eXl9Ci1cZGVmXGNlbnRlcmNoYXB5eXkgIzF7e1xsZXRcdW5udW1iY2hhcG1hY3JvPVxjZW50ZXJjaGFwbWFjcm8gXHVubnVtYmVyZWR5eXl7IzF9fX0KK1xvdXRlclxwYXJzZWFyZ2RlZlxjZW50ZXJjaGFwe3tcdW5udW1iZXJlZHl5eXsjMX19fQogCi0lIEB0b3AgaXMgbGlrZSBAdW5udW1iZXJlZC4KLVxvdXRlclxkZWZcdG9we1xwYXJzZWFyZ1x1bm51bWJlcmVkeXl5fQotCi1cb3V0ZXJcZGVmXHVubnVtYmVyZWR7XHBhcnNlYXJnXHVubnVtYmVyZWR5eXl9Ci1cZGVmXHVubnVtYmVyZWR5eXkgIzF7XHVubm1oZWFkMHsjMX19ICUgbm9ybWFsbHkgdW5ubWhlYWQwIGNhbGxzIHVubnVtYmVyZWR6enoKLVxkZWZcdW5udW1iZXJlZHp6eiAjMXslCi0gIFxzZWNubz0wIFxzdWJzZWNubz0wIFxzdWJzdWJzZWNubz0wCitcb3V0ZXJccGFyc2VhcmdkZWZcdW5udW1iZXJlZHtcdW5ubWhlYWQweyMxfX0gJSBub3JtYWxseSB1bm5taGVhZDAgY2FsbHMgdW5udW1iZXJlZHp6egorXGRlZlx1bm51bWJlcmVkenp6IzF7JQorICBcZ2xvYmFsXHNlY25vPTAgXGdsb2JhbFxzdWJzZWNubz0wIFxnbG9iYWxcc3Vic3Vic2Vjbm89MAorICAgIFxnbG9iYWxcYWR2YW5jZVx1bm51bWJlcmVkbm8gYnkgMQorICAlCisgICUgU2luY2UgYW4gdW5udW1iZXJlZCBoYXMgbm8gbnVtYmVyLCBubyBwcmVmaXggZm9yIGZpZ3VyZXMuCisgIFxnbG9iYWxcbGV0XGNoYXBsZXZlbHByZWZpeCA9IFxlbXB0eQorICBccmVzZXRhbGxmbG9hdG5vcwogICAlCiAgICUgVGhpcyB1c2VkIHRvIGJlIHNpbXBseSBcbWVzc2FnZXsjMX0sIGJ1dCBUZVggZnVsbHkgZXhwYW5kcyB0aGUKICAgJSBhcmd1bWVudCB0byBcbWVzc2FnZS4gIFRoZXJlZm9yZSwgaWYgIzEgY29udGFpbmVkIEAtY29tbWFuZHMsIFRlWApAQCAtMzgxMiwxMTIgKzM5MzgsODQgQEAKICAgJSBcdGhlPHRva3MgcmVnaXN0ZXI+IHRvIGFjaGlldmUgdGhpczogVGVYIGV4cGFuZHMgXHRoZTx0b2tzPiBvbmx5IG9uY2UsCiAgICUgc2ltcGx5IHlpZWxkaW5nIHRoZSBjb250ZW50cyBvZiA8dG9rcyByZWdpc3Rlcj4uICAoV2UgYWxzbyBkbyB0aGlzIGZvcgogICAlIHRoZSB0b2MgZW50cmllcy4pCi0gIFx0b2tzMCA9IHsjMX1cbWVzc2FnZXsoXHRoZVx0b2tzMCl9JQorICBcdG9rczAgPSB7IzF9JQorICBcbWVzc2FnZXsoXHRoZVx0b2tzMCl9JQogICAlCi0gIFx1bm51bWJjaGFwbWFjcm8geyMxfSUKLSAgXGdkZWZcdGhpc2NoYXB0ZXJ7IzF9XGdkZWZcdGhpc3NlY3Rpb257IzF9JQotICBcd3JpdGV0b2NlbnRyeXt1bm51bWJjaGFwfXsjMX17e1x0aGVcY2hhcG5vfX0KLSAgXHVubnVtYm5vZGVyZWYKKyAgXGNoYXBtYWNyb3sjMX17WW5vdGhpbmd9e1x0aGVcdW5udW1iZXJlZG5vfSUKKyAgJQogICBcZ2xvYmFsXGxldFxzZWN0aW9uID0gXHVubnVtYmVyZWRzZWMKICAgXGdsb2JhbFxsZXRcc3Vic2VjdGlvbiA9IFx1bm51bWJlcmVkc3Vic2VjCiAgIFxnbG9iYWxcbGV0XHN1YnN1YnNlY3Rpb24gPSBcdW5udW1iZXJlZHN1YnN1YnNlYwogfQogCislIEB0b3AgaXMgbGlrZSBAdW5udW1iZXJlZC4KK1xsZXRcdG9wXHVubnVtYmVyZWQKKwogJSBTZWN0aW9ucy4KLVxvdXRlclxkZWZcbnVtYmVyZWRzZWN7XHBhcnNlYXJnXHNlY3l5eX0KLVxkZWZcc2VjeXl5ICMxe1xudW1oZWFkMXsjMX19ICUgbm9ybWFsbHkgY2FsbHMgc2Vjenp6Ci1cZGVmXHNlY3p6eiAjMXslCi0gIFxzdWJzZWNubz0wIFxzdWJzdWJzZWNubz0wIFxnbG9iYWxcYWR2YW5jZSBcc2Vjbm8gYnkgMSAlCi0gIFxnZGVmXHRoaXNzZWN0aW9ueyMxfVxzZWNoZWFkaW5nIHsjMX17XHRoZVxjaGFwbm99e1x0aGVcc2Vjbm99JQotICBcd3JpdGV0b2NlbnRyeXtzZWN9eyMxfXt7XHRoZVxjaGFwbm99e1x0aGVcc2Vjbm99fQotICBcZG9ub2RlcmVmCi0gIFxub2JyZWFrCitcb3V0ZXJccGFyc2VhcmdkZWZcbnVtYmVyZWRzZWN7XG51bWhlYWQxeyMxfX0gJSBub3JtYWxseSBjYWxscyBzZWN6enoKK1xkZWZcc2Vjenp6IzF7JQorICBcZ2xvYmFsXHN1YnNlY25vPTAgXGdsb2JhbFxzdWJzdWJzZWNubz0wICBcZ2xvYmFsXGFkdmFuY2Vcc2Vjbm8gYnkgMQorICBcc2VjdGlvbmhlYWRpbmd7IzF9e3NlY317WW51bWJlcmVkfXtcdGhlXGNoYXBuby5cdGhlXHNlY25vfSUKIH0KIAotXG91dGVyXGRlZlxhcHBlbmRpeHNlY3Rpb257XHBhcnNlYXJnXGFwcGVuZGl4c2VjeXl5fQotXG91dGVyXGRlZlxhcHBlbmRpeHNlY3tccGFyc2VhcmdcYXBwZW5kaXhzZWN5eXl9Ci1cZGVmXGFwcGVuZGl4c2VjeXl5ICMxe1xhcHBoZWFkMXsjMX19ICUgbm9ybWFsbHkgY2FsbHMgYXBwZW5kaXhzZWN0aW9uenp6Ci1cZGVmXGFwcGVuZGl4c2VjdGlvbnp6eiAjMXslCi0gIFxzdWJzZWNubz0wIFxzdWJzdWJzZWNubz0wIFxnbG9iYWxcYWR2YW5jZSBcc2Vjbm8gYnkgMSAlCi0gIFxnZGVmXHRoaXNzZWN0aW9ueyMxfVxzZWNoZWFkaW5nIHsjMX17XGFwcGVuZGl4bGV0dGVyfXtcdGhlXHNlY25vfSUKLSAgXHdyaXRldG9jZW50cnl7c2VjfXsjMX17e1xhcHBlbmRpeGxldHRlcn17XHRoZVxzZWNub319Ci0gIFxhcHBlbmRpeG5vZGVyZWYKLSAgXG5vYnJlYWsKK1xvdXRlclxwYXJzZWFyZ2RlZlxhcHBlbmRpeHNlY3Rpb257XGFwcGhlYWQxeyMxfX0gJSBub3JtYWxseSBjYWxscyBhcHBlbmRpeHNlY3Rpb256enoKK1xkZWZcYXBwZW5kaXhzZWN0aW9uenp6IzF7JQorICBcZ2xvYmFsXHN1YnNlY25vPTAgXGdsb2JhbFxzdWJzdWJzZWNubz0wICBcZ2xvYmFsXGFkdmFuY2Vcc2Vjbm8gYnkgMQorICBcc2VjdGlvbmhlYWRpbmd7IzF9e3NlY317WWFwcGVuZGl4fXtcYXBwZW5kaXhsZXR0ZXIuXHRoZVxzZWNub30lCiB9CitcbGV0XGFwcGVuZGl4c2VjXGFwcGVuZGl4c2VjdGlvbgogCi1cb3V0ZXJcZGVmXHVubnVtYmVyZWRzZWN7XHBhcnNlYXJnXHVubnVtYmVyZWRzZWN5eXl9Ci1cZGVmXHVubnVtYmVyZWRzZWN5eXkgIzF7XHVubm1oZWFkMXsjMX19ICUgbm9ybWFsbHkgY2FsbHMgdW5udW1iZXJlZHNlY3p6egotXGRlZlx1bm51bWJlcmVkc2Vjenp6ICMxeyUKLSAgXHBsYWluc2VjaGVhZGluZyB7IzF9XGdkZWZcdGhpc3NlY3Rpb257IzF9JQotICBcd3JpdGV0b2NlbnRyeXt1bm51bWJzZWN9eyMxfXt7XHRoZVxjaGFwbm99e1x0aGVcc2Vjbm99fQotICBcdW5udW1ibm9kZXJlZgotICBcbm9icmVhaworXG91dGVyXHBhcnNlYXJnZGVmXHVubnVtYmVyZWRzZWN7XHVubm1oZWFkMXsjMX19ICUgbm9ybWFsbHkgY2FsbHMgdW5udW1iZXJlZHNlY3p6egorXGRlZlx1bm51bWJlcmVkc2Vjenp6IzF7JQorICBcZ2xvYmFsXHN1YnNlY25vPTAgXGdsb2JhbFxzdWJzdWJzZWNubz0wICBcZ2xvYmFsXGFkdmFuY2Vcc2Vjbm8gYnkgMQorICBcc2VjdGlvbmhlYWRpbmd7IzF9e3NlY317WW5vdGhpbmd9e1x0aGVcdW5udW1iZXJlZG5vLlx0aGVcc2Vjbm99JQogfQogCiAlIFN1YnNlY3Rpb25zLgotXG91dGVyXGRlZlxudW1iZXJlZHN1YnNlY3tccGFyc2VhcmdcbnVtYmVyZWRzdWJzZWN5eXl9Ci1cZGVmXG51bWJlcmVkc3Vic2VjeXl5ICMxe1xudW1oZWFkMnsjMX19ICUgbm9ybWFsbHkgY2FsbHMgbnVtYmVyZWRzdWJzZWN6enoKLVxkZWZcbnVtYmVyZWRzdWJzZWN6enogIzF7JQotICBcZ2RlZlx0aGlzc2VjdGlvbnsjMX1cc3Vic3Vic2Vjbm89MCBcZ2xvYmFsXGFkdmFuY2UgXHN1YnNlY25vIGJ5IDEgJQotICBcc3Vic2VjaGVhZGluZyB7IzF9e1x0aGVcY2hhcG5vfXtcdGhlXHNlY25vfXtcdGhlXHN1YnNlY25vfSUKLSAgXHdyaXRldG9jZW50cnl7c3Vic2VjfXsjMX17e1x0aGVcY2hhcG5vfXtcdGhlXHNlY25vfXtcdGhlXHN1YnNlY25vfX0KLSAgXGRvbm9kZXJlZgotICBcbm9icmVhaworXG91dGVyXHBhcnNlYXJnZGVmXG51bWJlcmVkc3Vic2Vje1xudW1oZWFkMnsjMX19ICUgbm9ybWFsbHkgY2FsbHMgbnVtYmVyZWRzdWJzZWN6enoKK1xkZWZcbnVtYmVyZWRzdWJzZWN6enojMXslCisgIFxnbG9iYWxcc3Vic3Vic2Vjbm89MCAgXGdsb2JhbFxhZHZhbmNlXHN1YnNlY25vIGJ5IDEKKyAgXHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzZWN9e1ludW1iZXJlZH17XHRoZVxjaGFwbm8uXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vfSUKIH0KIAotXG91dGVyXGRlZlxhcHBlbmRpeHN1YnNlY3tccGFyc2VhcmdcYXBwZW5kaXhzdWJzZWN5eXl9Ci1cZGVmXGFwcGVuZGl4c3Vic2VjeXl5ICMxe1xhcHBoZWFkMnsjMX19ICUgbm9ybWFsbHkgY2FsbHMgYXBwZW5kaXhzdWJzZWN6enoKLVxkZWZcYXBwZW5kaXhzdWJzZWN6enogIzF7JQotICBcZ2RlZlx0aGlzc2VjdGlvbnsjMX1cc3Vic3Vic2Vjbm89MCBcZ2xvYmFsXGFkdmFuY2UgXHN1YnNlY25vIGJ5IDEgJQotICBcc3Vic2VjaGVhZGluZyB7IzF9e1xhcHBlbmRpeGxldHRlcn17XHRoZVxzZWNub317XHRoZVxzdWJzZWNub30lCi0gIFx3cml0ZXRvY2VudHJ5e3N1YnNlY317IzF9e3tcYXBwZW5kaXhsZXR0ZXJ9e1x0aGVcc2Vjbm99e1x0aGVcc3Vic2Vjbm99fQotICBcYXBwZW5kaXhub2RlcmVmCi0gIFxub2JyZWFrCitcb3V0ZXJccGFyc2VhcmdkZWZcYXBwZW5kaXhzdWJzZWN7XGFwcGhlYWQyeyMxfX0gJSBub3JtYWxseSBjYWxscyBhcHBlbmRpeHN1YnNlY3p6egorXGRlZlxhcHBlbmRpeHN1YnNlY3p6eiMxeyUKKyAgXGdsb2JhbFxzdWJzdWJzZWNubz0wICBcZ2xvYmFsXGFkdmFuY2Vcc3Vic2Vjbm8gYnkgMQorICBcc2VjdGlvbmhlYWRpbmd7IzF9e3N1YnNlY317WWFwcGVuZGl4fSUKKyAgICAgICAgICAgICAgICAge1xhcHBlbmRpeGxldHRlci5cdGhlXHNlY25vLlx0aGVcc3Vic2Vjbm99JQogfQogCi1cb3V0ZXJcZGVmXHVubnVtYmVyZWRzdWJzZWN7XHBhcnNlYXJnXHVubnVtYmVyZWRzdWJzZWN5eXl9Ci1cZGVmXHVubnVtYmVyZWRzdWJzZWN5eXkgIzF7XHVubm1oZWFkMnsjMX19ICVub3JtYWxseSBjYWxscyB1bm51bWJlcmVkc3Vic2Vjenp6Ci1cZGVmXHVubnVtYmVyZWRzdWJzZWN6enogIzF7JQotICBccGxhaW5zdWJzZWNoZWFkaW5nIHsjMX1cZ2RlZlx0aGlzc2VjdGlvbnsjMX0lCi0gIFx3cml0ZXRvY2VudHJ5e3VubnVtYnN1YnNlY317IzF9e3tcdGhlXGNoYXBub317XHRoZVxzZWNub317XHRoZVxzdWJzZWNub319Ci0gIFx1bm51bWJub2RlcmVmCi0gIFxub2JyZWFrCitcb3V0ZXJccGFyc2VhcmdkZWZcdW5udW1iZXJlZHN1YnNlY3tcdW5ubWhlYWQyeyMxfX0gJW5vcm1hbGx5IGNhbGxzIHVubnVtYmVyZWRzdWJzZWN6enoKK1xkZWZcdW5udW1iZXJlZHN1YnNlY3p6eiMxeyUKKyAgXGdsb2JhbFxzdWJzdWJzZWNubz0wICBcZ2xvYmFsXGFkdmFuY2Vcc3Vic2Vjbm8gYnkgMQorICBcc2VjdGlvbmhlYWRpbmd7IzF9e3N1YnNlY317WW5vdGhpbmd9JQorICAgICAgICAgICAgICAgICB7XHRoZVx1bm51bWJlcmVkbm8uXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vfSUKIH0KIAogJSBTdWJzdWJzZWN0aW9ucy4KLVxvdXRlclxkZWZcbnVtYmVyZWRzdWJzdWJzZWN7XHBhcnNlYXJnXG51bWJlcmVkc3Vic3Vic2VjeXl5fQotXGRlZlxudW1iZXJlZHN1YnN1YnNlY3l5eSAjMXtcbnVtaGVhZDN7IzF9fSAlIG5vcm1hbGx5IG51bWJlcmVkc3Vic3Vic2Vjenp6Ci1cZGVmXG51bWJlcmVkc3Vic3Vic2Vjenp6ICMxeyUKLSAgXGdkZWZcdGhpc3NlY3Rpb257IzF9XGdsb2JhbFxhZHZhbmNlIFxzdWJzdWJzZWNubyBieSAxICUKLSAgXHN1YnN1YnNlY2hlYWRpbmcgeyMxfQotICAgIHtcdGhlXGNoYXBub317XHRoZVxzZWNub317XHRoZVxzdWJzZWNub317XHRoZVxzdWJzdWJzZWNub30lCi0gIFx3cml0ZXRvY2VudHJ5e3N1YnN1YnNlY317IzF9e3tcdGhlXGNoYXBub317XHRoZVxzZWNub317XHRoZVxzdWJzZWNub317XHRoZVxzdWJzdWJzZWNub319Ci0gIFxkb25vZGVyZWYKLSAgXG5vYnJlYWsKK1xvdXRlclxwYXJzZWFyZ2RlZlxudW1iZXJlZHN1YnN1YnNlY3tcbnVtaGVhZDN7IzF9fSAlIG5vcm1hbGx5IG51bWJlcmVkc3Vic3Vic2Vjenp6CitcZGVmXG51bWJlcmVkc3Vic3Vic2Vjenp6IzF7JQorICBcZ2xvYmFsXGFkdmFuY2Vcc3Vic3Vic2Vjbm8gYnkgMQorICBcc2VjdGlvbmhlYWRpbmd7IzF9e3N1YnN1YnNlY317WW51bWJlcmVkfSUKKyAgICAgICAgICAgICAgICAge1x0aGVcY2hhcG5vLlx0aGVcc2Vjbm8uXHRoZVxzdWJzZWNuby5cdGhlXHN1YnN1YnNlY25vfSUKIH0KIAotXG91dGVyXGRlZlxhcHBlbmRpeHN1YnN1YnNlY3tccGFyc2VhcmdcYXBwZW5kaXhzdWJzdWJzZWN5eXl9Ci1cZGVmXGFwcGVuZGl4c3Vic3Vic2VjeXl5ICMxe1xhcHBoZWFkM3sjMX19ICUgbm9ybWFsbHkgYXBwZW5kaXhzdWJzdWJzZWN6enoKLVxkZWZcYXBwZW5kaXhzdWJzdWJzZWN6enogIzF7JQotICBcZ2RlZlx0aGlzc2VjdGlvbnsjMX1cZ2xvYmFsXGFkdmFuY2UgXHN1YnN1YnNlY25vIGJ5IDEgJQotICBcc3Vic3Vic2VjaGVhZGluZyB7IzF9Ci0gICAge1xhcHBlbmRpeGxldHRlcn17XHRoZVxzZWNub317XHRoZVxzdWJzZWNub317XHRoZVxzdWJzdWJzZWNub30lCi0gIFx3cml0ZXRvY2VudHJ5e3N1YnN1YnNlY317IzF9e3tcYXBwZW5kaXhsZXR0ZXJ9e1x0aGVcc2Vjbm99e1x0aGVcc3Vic2Vjbm99e1x0aGVcc3Vic3Vic2Vjbm99fQotICBcYXBwZW5kaXhub2RlcmVmCi0gIFxub2JyZWFrCitcb3V0ZXJccGFyc2VhcmdkZWZcYXBwZW5kaXhzdWJzdWJzZWN7XGFwcGhlYWQzeyMxfX0gJSBub3JtYWxseSBhcHBlbmRpeHN1YnN1YnNlY3p6egorXGRlZlxhcHBlbmRpeHN1YnN1YnNlY3p6eiMxeyUKKyAgXGdsb2JhbFxhZHZhbmNlXHN1YnN1YnNlY25vIGJ5IDEKKyAgXHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzdWJzZWN9e1lhcHBlbmRpeH0lCisgICAgICAgICAgICAgICAgIHtcYXBwZW5kaXhsZXR0ZXIuXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vLlx0aGVcc3Vic3Vic2Vjbm99JQogfQogCi1cb3V0ZXJcZGVmXHVubnVtYmVyZWRzdWJzdWJzZWN7XHBhcnNlYXJnXHVubnVtYmVyZWRzdWJzdWJzZWN5eXl9Ci1cZGVmXHVubnVtYmVyZWRzdWJzdWJzZWN5eXkgIzF7XHVubm1oZWFkM3sjMX19ICVub3JtYWxseSB1bm51bWJlcmVkc3Vic3Vic2Vjenp6Ci1cZGVmXHVubnVtYmVyZWRzdWJzdWJzZWN6enogIzF7JQotICBccGxhaW5zdWJzdWJzZWNoZWFkaW5nIHsjMX1cZ2RlZlx0aGlzc2VjdGlvbnsjMX0lCi0gIFx3cml0ZXRvY2VudHJ5e3VubnVtYnN1YnN1YnNlY317IzF9e3tcdGhlXGNoYXBub317XHRoZVxzZWNub317XHRoZVxzdWJzZWNub317XHRoZVxzdWJzdWJzZWNub319Ci0gIFx1bm51bWJub2RlcmVmCi0gIFxub2JyZWFrCitcb3V0ZXJccGFyc2VhcmdkZWZcdW5udW1iZXJlZHN1YnN1YnNlY3tcdW5ubWhlYWQzeyMxfX0gJW5vcm1hbGx5IHVubnVtYmVyZWRzdWJzdWJzZWN6enoKK1xkZWZcdW5udW1iZXJlZHN1YnN1YnNlY3p6eiMxeyUKKyAgXGdsb2JhbFxhZHZhbmNlXHN1YnN1YnNlY25vIGJ5IDEKKyAgXHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzdWJzZWN9e1lub3RoaW5nfSUKKyAgICAgICAgICAgICAgICAge1x0aGVcdW5udW1iZXJlZG5vLlx0aGVcc2Vjbm8uXHRoZVxzdWJzZWNuby5cdGhlXHN1YnN1YnNlY25vfSUKIH0KIAogJSBUaGVzZSBhcmUgdmFyaWFudHMgd2hpY2ggYXJlIG5vdCAib3V0ZXIiLCBzbyB0aGV5IGNhbiBhcHBlYXIgaW4gQGlmaW5mby4KLSUgQWN0dWFsbHksIHRoZXkgc2hvdWxkIG5vdyBiZSBvYnNvbGV0ZTsgb3JkaW5hcnkgc2VjdGlvbiBjb21tYW5kcyBzaG91bGQgd29yay4KKyUgQWN0dWFsbHksIHRoZXkgYXJlIG5vdyBiZSBvYnNvbGV0ZTsgb3JkaW5hcnkgc2VjdGlvbiBjb21tYW5kcyBzaG91bGQgd29yay4KIFxkZWZcaW5mb3RvcHtccGFyc2VhcmdcdW5udW1iZXJlZHp6en0KIFxkZWZcaW5mb3VubnVtYmVyZWR7XHBhcnNlYXJnXHVubnVtYmVyZWR6enp9CiBcZGVmXGluZm91bm51bWJlcmVkc2Vje1xwYXJzZWFyZ1x1bm51bWJlcmVkc2Vjenp6fQpAQCAtMzkzNyw5ICs0MDM1LDkgQEAKICUgVGhlc2UgbWFjcm9zIGNvbnRyb2wgd2hhdCB0aGUgc2VjdGlvbiBjb21tYW5kcyBkbywgYWNjb3JkaW5nCiAlIHRvIHdoYXQga2luZCBvZiBjaGFwdGVyIHdlIGFyZSBpbiAob3JkaW5hcnksIGFwcGVuZGl4LCBvciB1bm51bWJlcmVkKS4KICUgRGVmaW5lIHRoZW0gYnkgZGVmYXVsdCBmb3IgYSBudW1iZXJlZCBjaGFwdGVyLgotXGdsb2JhbFxsZXRcc2VjdGlvbiA9IFxudW1iZXJlZHNlYwotXGdsb2JhbFxsZXRcc3Vic2VjdGlvbiA9IFxudW1iZXJlZHN1YnNlYwotXGdsb2JhbFxsZXRcc3Vic3Vic2VjdGlvbiA9IFxudW1iZXJlZHN1YnN1YnNlYworXGxldFxzZWN0aW9uID0gXG51bWJlcmVkc2VjCitcbGV0XHN1YnNlY3Rpb24gPSBcbnVtYmVyZWRzdWJzZWMKK1xsZXRcc3Vic3Vic2VjdGlvbiA9IFxudW1iZXJlZHN1YnN1YnNlYwogCiAlIERlZmluZSBAbWFqb3JoZWFkaW5nLCBAaGVhZGluZyBhbmQgQHN1YmhlYWRpbmcKIApAQCAtMzk1MiwyMyArNDA1MCwyNyBAQAogJSAgICAgICAgICBpZiBqdXN0aWZpY2F0aW9uIGlzIG5vdCBhdHRlbXB0ZWQuICBIZW5jZSBccmFnZ2VkcmlnaHQuCiAKIAotXGRlZlxtYWpvcmhlYWRpbmd7XHBhcnNlYXJnXG1ham9yaGVhZGluZ3p6en0KLVxkZWZcbWFqb3JoZWFkaW5nenp6ICMxeyUKK1xkZWZcbWFqb3JoZWFkaW5neyUKICAge1xhZHZhbmNlXGNoYXBoZWFkaW5nc2tpcCBieSAxMHB0IFxjaGFwYnJlYWsgfSUKLSAge1xjaGFwZm9udHMgXHZib3h7XGh5cGhlbnBlbmFsdHk9MTAwMDBcdG9sZXJhbmNlPTUwMDAKLSAgICAgICAgICAgICAgICAgICAgXHBhcmluZGVudD0wcHRccmFnZ2VkcmlnaHQKLSAgICAgICAgICAgICAgICAgICAgXHJtICMxXGhmaWxsfX1cYmlnc2tpcCBccGFyXHBlbmFsdHkgMjAwfQorICBccGFyc2VhcmdcY2hhcGhlYWRpbmd6enoKK30KIAotXGRlZlxjaGFwaGVhZGluZ3tccGFyc2VhcmdcY2hhcGhlYWRpbmd6enp9Ci1cZGVmXGNoYXBoZWFkaW5nenp6ICMxe1xjaGFwYnJlYWsgJQorXGRlZlxjaGFwaGVhZGluZ3tcY2hhcGJyZWFrIFxwYXJzZWFyZ1xjaGFwaGVhZGluZ3p6en0KK1xkZWZcY2hhcGhlYWRpbmd6enojMXslCiAgIHtcY2hhcGZvbnRzIFx2Ym94e1xoeXBoZW5wZW5hbHR5PTEwMDAwXHRvbGVyYW5jZT01MDAwCiAgICAgICAgICAgICAgICAgICAgIFxwYXJpbmRlbnQ9MHB0XHJhZ2dlZHJpZ2h0Ci0gICAgICAgICAgICAgICAgICAgIFxybSAjMVxoZmlsbH19XGJpZ3NraXAgXHBhclxwZW5hbHR5IDIwMH0KKyAgICAgICAgICAgICAgICAgICAgXHJtICMxXGhmaWxsfX0lCisgIFxiaWdza2lwIFxwYXJccGVuYWx0eSAyMDBccmVsYXgKKyAgXHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnQKK30KIAogJSBAaGVhZGluZywgQHN1YmhlYWRpbmcsIEBzdWJzdWJoZWFkaW5nLgotXGRlZlxoZWFkaW5ne1xwYXJzZWFyZ1xwbGFpbnNlY2hlYWRpbmd9Ci1cZGVmXHN1YmhlYWRpbmd7XHBhcnNlYXJnXHBsYWluc3Vic2VjaGVhZGluZ30KLVxkZWZcc3Vic3ViaGVhZGluZ3tccGFyc2VhcmdccGxhaW5zdWJzdWJzZWNoZWFkaW5nfQorXHBhcnNlYXJnZGVmXGhlYWRpbmd7XHNlY3Rpb25oZWFkaW5neyMxfXtzZWN9e1lvbWl0ZnJvbXRvY317fQorICBcc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudH0KK1xwYXJzZWFyZ2RlZlxzdWJoZWFkaW5ne1xzZWN0aW9uaGVhZGluZ3sjMX17c3Vic2VjfXtZb21pdGZyb210b2N9e30KKyAgXHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnR9CitccGFyc2VhcmdkZWZcc3Vic3ViaGVhZGluZ3tcc2VjdGlvbmhlYWRpbmd7IzF9e3N1YnN1YnNlY317WW9taXRmcm9tdG9jfXt9CisgIFxzdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50fQogCiAlIFRoZXNlIG1hY3JvcyBnZW5lcmF0ZSBhIGNoYXB0ZXIsIHNlY3Rpb24sIGV0Yy4gaGVhZGluZyBvbmx5CiAlIChpbmNsdWRpbmcgd2hpdGVzcGFjZSwgbGluZWJyZWFraW5nLCBldGMuIGFyb3VuZCBpdCksCkBAIC00MDAxLDcgKzQxMDMsNyBAQAogXGdsb2JhbFxsZXRccGFnZWFsaWdubWFjcm89XGNoYXBwYWdlcgogXGdsb2JhbFxkZWZcSEVBRElOR1NvbntcSEVBRElOR1NzaW5nbGV9fQogCi1cZGVmXENIQVBQQUdvZGR7CitcZGVmXENIQVBQQUdvZGR7JQogXGdsb2JhbFxsZXRcY29udGVudHNhbGlnbm1hY3JvID0gXGNoYXBvZGRwYWdlCiBcZ2xvYmFsXGxldFxwY2hhcHNlcG1hY3JvPVxjaGFwb2RkcGFnZQogXGdsb2JhbFxsZXRccGFnZWFsaWdubWFjcm89XGNoYXBvZGRwYWdlCkBAIC00MDA5LDMwICs0MTExLDc5IEBACiAKIFxDSEFQUEFHb24KIAotXGRlZlxDSEFQRnBsYWlueworXGRlZlxDSEFQRnBsYWlueyUKIFxnbG9iYWxcbGV0XGNoYXBtYWNybz1cY2hmcGxhaW4KLVxnbG9iYWxcbGV0XHVubnVtYmNoYXBtYWNybz1cdW5uY2hmcGxhaW4KIFxnbG9iYWxcbGV0XGNlbnRlcmNoYXBtYWNybz1cY2VudGVyY2hmcGxhaW59CiAKLSUgUGxhaW4gY2hhcHRlciBvcGVuaW5nLgotJSAjMSBpcyB0aGUgdGV4dCwgIzIgdGhlIGNoYXB0ZXIgbnVtYmVyIG9yIGVtcHR5IGlmIHVubnVtYmVyZWQuCi1cZGVmXGNoZnBsYWluIzEjMnslCislIE5vcm1hbCBjaGFwdGVyIG9wZW5pbmcuCislIAorJSAjMSBpcyB0aGUgdGV4dCwgIzIgaXMgdGhlIHNlY3Rpb24gdHlwZSAoWW51bWJlcmVkLCBZbm90aGluZywKKyUgWWFwcGVuZGl4LCBZb21pdGZyb210b2MpLCAjMyB0aGUgY2hhcHRlciBudW1iZXIuCislIAorJSBUbyB0ZXN0IGFnYWluc3Qgb3VyIGFyZ3VtZW50LgorXGRlZlxZbm90aGluZ2tleXdvcmR7WW5vdGhpbmd9CitcZGVmXFlvbWl0ZnJvbXRvY2tleXdvcmR7WW9taXRmcm9tdG9jfQorXGRlZlxZYXBwZW5kaXhrZXl3b3Jke1lhcHBlbmRpeH0KKyUKK1xkZWZcY2hmcGxhaW4jMSMyIzN7JQogICBccGNoYXBzZXBtYWNybwogICB7JQogICAgIFxjaGFwZm9udHMgXHJtCi0gICAgXGRlZlxjaGFwbnVteyMyfSUKLSAgICBcc2V0Ym94MCA9IFxoYm94eyMyXGlmeFxjaGFwbnVtXGVtcHR5XGVsc2VcZW5zcGFjZVxmaX0lCisgICAgJQorICAgICUgSGF2ZSB0byBkZWZpbmUgXHRoaXNzZWN0aW9uIGJlZm9yZSBjYWxsaW5nIFxkb25vZGVyZWYsIGJlY2F1c2UgdGhlCisgICAgJSB4cmVmIGNvZGUgZXZlbnR1YWxseSB1c2VzIGl0LiAgT24gdGhlIG90aGVyIGhhbmQsIGl0IGhhcyB0byBiZSBjYWxsZWQKKyAgICAlIGFmdGVyIFxwY2hhcHNlcG1hY3JvLCBvciB0aGUgaGVhZGxpbmUgd2lsbCBjaGFuZ2UgdG9vIHNvb24uCisgICAgXGdkZWZcdGhpc3NlY3Rpb257IzF9JQorICAgIFxnZGVmXHRoaXNjaGFwdGVybmFtZXsjMX0lCisgICAgJQorICAgICUgT25seSBpbnNlcnQgdGhlIHNlcGFyYXRpbmcgc3BhY2UgaWYgd2UgaGF2ZSBhIGNoYXB0ZXIvYXBwZW5kaXgKKyAgICAlIG51bWJlciwgYW5kIGRvbid0IHByaW50IHRoZSB1bm51bWJlcmVkIGBgbnVtYmVyJycuCisgICAgXGRlZlx0ZW1wdHlwZXsjMn0lCisgICAgXGlmeFx0ZW1wdHlwZVxZbm90aGluZ2tleXdvcmQKKyAgICAgIFxzZXRib3gwID0gXGhib3h7fSUKKyAgICAgIFxkZWZcdG9jdHlwZXt1bm5jaGFwfSUKKyAgICAgIFxkZWZcdGhpc2NoYXB0ZXJ7IzF9JQorICAgIFxlbHNlXGlmeFx0ZW1wdHlwZVxZb21pdGZyb210b2NrZXl3b3JkCisgICAgICBcc2V0Ym94MCA9IFxoYm94e30lIGNvbnRlbnRzIGxpa2UgdW5udW1iZXJlZCwgYnV0IG5vIHRvYyBlbnRyeQorICAgICAgXGRlZlx0b2N0eXBle29taXR9JQorICAgICAgXHhkZWZcdGhpc2NoYXB0ZXJ7fSUKKyAgICBcZWxzZVxpZnhcdGVtcHR5cGVcWWFwcGVuZGl4a2V5d29yZAorICAgICAgXHNldGJveDAgPSBcaGJveHtccHV0d29yZEFwcGVuZGl4e30gIzNcZW5zcGFjZX0lCisgICAgICBcZGVmXHRvY3R5cGV7YXBwfSUKKyAgICAgICUgV2UgZG9uJ3Qgc3Vic3RpdHV0ZSB0aGUgYWN0dWFsIGNoYXB0ZXIgbmFtZSBpbnRvIFx0aGlzY2hhcHRlcgorICAgICAgJSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgaXRzIG1hY3JvcyBldmFsdWF0ZWQgbm93LiAgQW5kIHdlIGRvbid0CisgICAgICAlIHVzZSBcdGhpc3NlY3Rpb24gYmVjYXVzZSB0aGF0IGNoYW5nZXMgd2l0aCBlYWNoIHNlY3Rpb24uCisgICAgICAlCisgICAgICBceGRlZlx0aGlzY2hhcHRlcntccHV0d29yZEFwcGVuZGl4e30gXGFwcGVuZGl4bGV0dGVyOgorICAgICAgICAgICAgICAgICAgICAgICAgXG5vZXhwYW5kXHRoaXNjaGFwdGVybmFtZX0lCisgICAgXGVsc2UKKyAgICAgIFxzZXRib3gwID0gXGhib3h7IzNcZW5zcGFjZX0lCisgICAgICBcZGVmXHRvY3R5cGV7bnVtY2hhcH0lCisgICAgICBceGRlZlx0aGlzY2hhcHRlcntccHV0d29yZENoYXB0ZXJ7fSBcdGhlXGNoYXBubzoKKyAgICAgICAgICAgICAgICAgICAgICAgIFxub2V4cGFuZFx0aGlzY2hhcHRlcm5hbWV9JQorICAgIFxmaVxmaVxmaQorICAgICUKKyAgICAlIFdyaXRlIHRoZSB0b2MgZW50cnkgZm9yIHRoaXMgY2hhcHRlci4gIE11c3QgY29tZSBiZWZvcmUgdGhlCisgICAgJSBcZG9ub2RlcmVmLCBiZWNhdXNlIHdlIGluY2x1ZGUgdGhlIGN1cnJlbnQgbm9kZSBuYW1lIGluIHRoZSB0b2MKKyAgICAlIGVudHJ5LCBhbmQgXGRvbm9kZXJlZiByZXNldHMgaXQgdG8gZW1wdHkuCisgICAgXHdyaXRldG9jZW50cnl7XHRvY3R5cGV9eyMxfXsjM30lCisgICAgJQorICAgICUgRm9yIHBkZnRleCwgd2UgaGF2ZSB0byB3cml0ZSBvdXQgdGhlIG5vZGUgZGVmaW5pdGlvbiAoYWthLCBtYWtlCisgICAgJSB0aGUgcGRmZGVzdCkgYWZ0ZXIgYW55IHBhZ2UgYnJlYWssIGJ1dCBiZWZvcmUgdGhlIGFjdHVhbCB0ZXh0IGhhcworICAgICUgYmVlbiB0eXBlc2V0LiAgSWYgdGhlIGRlc3RpbmF0aW9uIGZvciB0aGUgcGRmIG91dGxpbmUgaXMgYWZ0ZXIgdGhlCisgICAgJSB0ZXh0LCB0aGVuIGp1bXBpbmcgZnJvbSB0aGUgb3V0bGluZSBtYXkgd2luZCB1cCB3aXRoIHRoZSB0ZXh0IG5vdAorICAgICUgYmVpbmcgdmlzaWJsZSwgZm9yIGluc3RhbmNlIHVuZGVyIGhpZ2ggbWFnbmlmaWNhdGlvbi4KKyAgICBcZG9ub2RlcmVmeyMyfSUKKyAgICAlCisgICAgJSBUeXBlc2V0IHRoZSBhY3R1YWwgaGVhZGluZy4KICAgICBcdmJveHtcaHlwaGVucGVuYWx0eT0xMDAwMCBcdG9sZXJhbmNlPTUwMDAgXHBhcmluZGVudD0wcHQgXHJhZ2dlZHJpZ2h0Ci0gICAgICAgICAgXGhhbmdpbmRlbnQgPSBcd2QwIFxjZW50ZXJwYXJhbWV0ZXJzbWF5YmUKKyAgICAgICAgICBcaGFuZ2luZGVudD1cd2QwIFxjZW50ZXJwYXJhbWV0ZXJzbWF5YmUKICAgICAgICAgICBcdW5oYm94MCAjMVxwYXJ9JQogICB9JQogICBcbm9icmVha1xiaWdza2lwICUgbm8gcGFnZSBicmVhayBhZnRlciBhIGNoYXB0ZXIgdGl0bGUKICAgXG5vYnJlYWsKIH0KIAotJSBQbGFpbiBvcGVuaW5nIGZvciB1bm51bWJlcmVkLgotXGRlZlx1bm5jaGZwbGFpbiMxe1xjaGZwbGFpbnsjMX17fX0KLQogJSBAY2VudGVyY2hhcCAtLSBjZW50ZXJlZCBhbmQgdW5udW1iZXJlZC4KIFxsZXRcY2VudGVycGFyYW1ldGVyc21heWJlID0gXHJlbGF4CiBcZGVmXGNlbnRlcmNoZnBsYWluIzF7eyUKQEAgLTQwNDEsMTEgKzQxOTIsMTQgQEAKICAgICBcbGVmdHNraXAgPSBccmlnaHRza2lwCiAgICAgXHBhcmZpbGxza2lwID0gMHB0CiAgIH0lCi0gIFxjaGZwbGFpbnsjMX17fSUKKyAgXGNoZnBsYWlueyMxfXtZbm90aGluZ317fSUKIH19CiAKIFxDSEFQRnBsYWluICUgVGhlIGRlZmF1bHQKIAorJSBJIGRvbid0IHRoaW5rIHRoaXMgY2hhcHRlciBzdHlsZSBpcyBzdXBwb3J0ZWQgYW55IG1vcmUsIHNvIEknbSBub3QKKyUgdXBkYXRpbmcgaXQgd2l0aCB0aGUgbmV3IG5vZGVyZWYgc3R1ZmYuICBXZSdsbCBzZWUuICAtLWthcmwsIDExYXVnMDMuCislIAogXGRlZlx1bm5jaGZvcGVuICMxeyUKIFxjaGFwb2RkcGFnZSB7XGNoYXBmb250cyBcdmJveHtcaHlwaGVucGVuYWx0eT0xMDAwMFx0b2xlcmFuY2U9NTAwMAogICAgICAgICAgICAgICAgICAgICAgICBccGFyaW5kZW50PTBwdFxyYWdnZWRyaWdodApAQCAtNDA2Myw2MSArNDIxNyw5NSBAQAogICAgICAgICAgICAgICAgICAgICAgICBcaGZpbGwge1xybSAjMX1caGZpbGx9fVxiaWdza2lwIFxwYXJcbm9icmVhawogfQogCi1cZGVmXENIQVBGb3BlbnsKK1xkZWZcQ0hBUEZvcGVueyUKIFxnbG9iYWxcbGV0XGNoYXBtYWNybz1cY2hmb3BlbgotXGdsb2JhbFxsZXRcdW5udW1iY2hhcG1hY3JvPVx1bm5jaGZvcGVuCiBcZ2xvYmFsXGxldFxjZW50ZXJjaGFwbWFjcm89XGNlbnRlcmNoZm9wZW59CiAKIAotJSBTZWN0aW9uIHRpdGxlcy4KKyUgU2VjdGlvbiB0aXRsZXMuICBUaGVzZSBtYWNyb3MgY29tYmluZSB0aGUgc2VjdGlvbiBudW1iZXIgcGFydHMgYW5kCislIGNhbGwgdGhlIGdlbmVyaWMgXHNlY3Rpb25oZWFkaW5nIHRvIGRvIHRoZSBwcmludGluZy4KKyUgCiBcbmV3c2tpcFxzZWNoZWFkaW5nc2tpcAotXGRlZlxzZWNoZWFkaW5nYnJlYWt7XGRvYnJlYWsgXHNlY2hlYWRpbmdza2lwIHstMTAwMH19Ci1cZGVmXHNlY2hlYWRpbmcjMSMyIzN7XHNlY3Rpb25oZWFkaW5ne3NlY317IzIuIzN9eyMxfX0KLVxkZWZccGxhaW5zZWNoZWFkaW5nIzF7XHNlY3Rpb25oZWFkaW5ne3NlY317fXsjMX19CitcZGVmXHNlY2hlYWRpbmdicmVha3tcZG9icmVhayBcc2VjaGVhZGluZ3NraXB7LTEwMDB9fQogCiAlIFN1YnNlY3Rpb24gdGl0bGVzLgotXG5ld3NraXAgXHN1YnNlY2hlYWRpbmdza2lwCi1cZGVmXHN1YnNlY2hlYWRpbmdicmVha3tcZG9icmVhayBcc3Vic2VjaGVhZGluZ3NraXAgey01MDB9fQotXGRlZlxzdWJzZWNoZWFkaW5nIzEjMiMzIzR7XHNlY3Rpb25oZWFkaW5ne3N1YnNlY317IzIuIzMuIzR9eyMxfX0KLVxkZWZccGxhaW5zdWJzZWNoZWFkaW5nIzF7XHNlY3Rpb25oZWFkaW5ne3N1YnNlY317fXsjMX19CitcbmV3c2tpcFxzdWJzZWNoZWFkaW5nc2tpcAorXGRlZlxzdWJzZWNoZWFkaW5nYnJlYWt7XGRvYnJlYWsgXHN1YnNlY2hlYWRpbmdza2lwey01MDB9fQogCiAlIFN1YnN1YnNlY3Rpb24gdGl0bGVzLgotXGxldFxzdWJzdWJzZWNoZWFkaW5nc2tpcCA9IFxzdWJzZWNoZWFkaW5nc2tpcAotXGxldFxzdWJzdWJzZWNoZWFkaW5nYnJlYWsgPSBcc3Vic2VjaGVhZGluZ2JyZWFrCi1cZGVmXHN1YnN1YnNlY2hlYWRpbmcjMSMyIzMjNCM1e1xzZWN0aW9uaGVhZGluZ3tzdWJzdWJzZWN9eyMyLiMzLiM0LiM1fXsjMX19Ci1cZGVmXHBsYWluc3Vic3Vic2VjaGVhZGluZyMxe1xzZWN0aW9uaGVhZGluZ3tzdWJzdWJzZWN9e317IzF9fQorXGRlZlxzdWJzdWJzZWNoZWFkaW5nc2tpcHtcc3Vic2VjaGVhZGluZ3NraXB9CitcZGVmXHN1YnN1YnNlY2hlYWRpbmdicmVha3tcc3Vic2VjaGVhZGluZ2JyZWFrfQogCiAKLSUgUHJpbnQgYW55IHNpemUgc2VjdGlvbiB0aXRsZS4KLSUKLSUgIzEgaXMgdGhlIHNlY3Rpb24gdHlwZSAoc2VjL3N1YnNlYy9zdWJzdWJzZWMpLCAjMiBpcyB0aGUgc2VjdGlvbgotJSBudW1iZXIgKG1heWJlIGVtcHR5KSwgIzMgdGhlIHRleHQuCi1cZGVmXHNlY3Rpb25oZWFkaW5nIzEjMiMzeyUKLSAgeyUKLSAgICBcZXhwYW5kYWZ0ZXJcYWR2YW5jZVxjc25hbWUgIzFoZWFkaW5nc2tpcFxlbmRjc25hbWUgYnkgXHBhcnNraXAKLSAgICBcY3NuYW1lICMxaGVhZGluZ2JyZWFrXGVuZGNzbmFtZQotICB9JQorJSBQcmludCBhbnkgc2l6ZSwgYW55IHR5cGUsIHNlY3Rpb24gdGl0bGUuCislIAorJSAjMSBpcyB0aGUgdGV4dCwgIzIgaXMgdGhlIHNlY3Rpb24gbGV2ZWwgKHNlYy9zdWJzZWMvc3Vic3Vic2VjKSwgIzMgaXMKKyUgdGhlIHNlY3Rpb24gdHlwZSBmb3IgeHJlZnMgKFludW1iZXJlZCwgWW5vdGhpbmcsIFlhcHBlbmRpeCksICM0IGlzIHRoZQorJSBzZWN0aW9uIG51bWJlci4KKyUgCitcZGVmXHNlY3Rpb25oZWFkaW5nIzEjMiMzIzR7JQogICB7JQogICAgICUgU3dpdGNoIHRvIHRoZSByaWdodCBzZXQgb2YgZm9udHMuCi0gICAgXGNzbmFtZSAjMWZvbnRzXGVuZGNzbmFtZSBccm0KKyAgICBcY3NuYW1lICMyZm9udHNcZW5kY3NuYW1lIFxybQogICAgICUKLSAgICAlIE9ubHkgaW5zZXJ0IHRoZSBzZXBhcmF0aW5nIHNwYWNlIGlmIHdlIGhhdmUgYSBzZWN0aW9uIG51bWJlci4KLSAgICBcZGVmXHNlY251bXsjMn0lCi0gICAgXHNldGJveDAgPSBcaGJveHsjMlxpZnhcc2VjbnVtXGVtcHR5XGVsc2VcZW5zcGFjZVxmaX0lCisgICAgJSBJbnNlcnQgc3BhY2UgYWJvdmUgdGhlIGhlYWRpbmcuCisgICAgXGNzbmFtZSAjMmhlYWRpbmdicmVha1xlbmRjc25hbWUKICAgICAlCisgICAgJSBPbmx5IGluc2VydCB0aGUgc3BhY2UgYWZ0ZXIgdGhlIG51bWJlciBpZiB3ZSBoYXZlIGEgc2VjdGlvbiBudW1iZXIuCisgICAgXGRlZlxzZWN0aW9ubGV2ZWx7IzJ9JQorICAgIFxkZWZcdGVtcHR5cGV7IzN9JQorICAgICUKKyAgICBcaWZ4XHRlbXB0eXBlXFlub3RoaW5na2V5d29yZAorICAgICAgXHNldGJveDAgPSBcaGJveHt9JQorICAgICAgXGRlZlx0b2N0eXBle3Vubn0lCisgICAgICBcZ2RlZlx0aGlzc2VjdGlvbnsjMX0lCisgICAgXGVsc2VcaWZ4XHRlbXB0eXBlXFlvbWl0ZnJvbXRvY2tleXdvcmQKKyAgICAgICUgZm9yIEBoZWFkaW5ncyAtLSBubyBzZWN0aW9uIG51bWJlciwgZG9uJ3QgaW5jbHVkZSBpbiB0b2MsCisgICAgICAlIGFuZCBkb24ndCByZWRlZmluZSBcdGhpc3NlY3Rpb24uCisgICAgICBcc2V0Ym94MCA9IFxoYm94e30lCisgICAgICBcZGVmXHRvY3R5cGV7b21pdH0lCisgICAgICBcbGV0XHNlY3Rpb25sZXZlbD1cZW1wdHkKKyAgICBcZWxzZVxpZnhcdGVtcHR5cGVcWWFwcGVuZGl4a2V5d29yZAorICAgICAgXHNldGJveDAgPSBcaGJveHsjNFxlbnNwYWNlfSUKKyAgICAgIFxkZWZcdG9jdHlwZXthcHB9JQorICAgICAgXGdkZWZcdGhpc3NlY3Rpb257IzF9JQorICAgIFxlbHNlCisgICAgICBcc2V0Ym94MCA9IFxoYm94eyM0XGVuc3BhY2V9JQorICAgICAgXGRlZlx0b2N0eXBle251bX0lCisgICAgICBcZ2RlZlx0aGlzc2VjdGlvbnsjMX0lCisgICAgXGZpXGZpXGZpCisgICAgJQorICAgICUgV3JpdGUgdGhlIHRvYyBlbnRyeSAoYmVmb3JlIFxkb25vZGVyZWYpLiAgU2VlIGNvbW1lbnRzIGluIFxjaGZwbGFpbi4KKyAgICBcd3JpdGV0b2NlbnRyeXtcdG9jdHlwZVxzZWN0aW9ubGV2ZWx9eyMxfXsjNH0lCisgICAgJQorICAgICUgV3JpdGUgdGhlIG5vZGUgcmVmZXJlbmNlICg9IHBkZiBkZXN0aW5hdGlvbiBmb3IgcGRmdGV4KS4KKyAgICAlIEFnYWluLCBzZWUgY29tbWVudHMgaW4gXGNoZnBsYWluLgorICAgIFxkb25vZGVyZWZ7IzN9JQorICAgICUKKyAgICAlIE91dHB1dCB0aGUgYWN0dWFsIHNlY3Rpb24gaGVhZGluZy4KICAgICBcdmJveHtcaHlwaGVucGVuYWx0eT0xMDAwMCBcdG9sZXJhbmNlPTUwMDAgXHBhcmluZGVudD0wcHQgXHJhZ2dlZHJpZ2h0Ci0gICAgICAgICAgXGhhbmdpbmRlbnQgPSBcd2QwICUgemVybyBpZiBubyBzZWN0aW9uIG51bWJlcgotICAgICAgICAgIFx1bmhib3gwICMzfSUKKyAgICAgICAgICBcaGFuZ2luZGVudD1cd2QwICAlIHplcm8gaWYgbm8gc2VjdGlvbiBudW1iZXIKKyAgICAgICAgICBcdW5oYm94MCAjMX0lCiAgIH0lCi0gICUgQWRkIGV4dHJhIHNwYWNlIGFmdGVyIHRoZSBoZWFkaW5nIC0tIGVpdGhlciBhIGxpbmUgc3BhY2Ugb3IgYQotICAlIHBhcmFncmFwaCBzcGFjZSwgd2hpY2hldmVyIGlzIG1vcmUuICAoU29tZSBwZW9wbGUgbGlrZSB0byBzZXQKLSAgJSBccGFyc2tpcCB0byBsYXJnZSB2YWx1ZXMgZm9yIHNvbWUgcmVhc29uLikgIERvbid0IGFsbG93IHN0cmV0Y2gsIHRob3VnaC4KKyAgJSBBZGQgZXh0cmEgc3BhY2UgYWZ0ZXIgdGhlIGhlYWRpbmcgLS0gaGFsZiBvZiB3aGF0ZXZlciBjYW1lIGFib3ZlIGl0LgorICAlIERvbid0IGFsbG93IHN0cmV0Y2gsIHRob3VnaC4KKyAgXGtlcm4gLjUgXGNzbmFtZSAjMmhlYWRpbmdza2lwXGVuZGNzbmFtZQorICAlCisgICUgRG8gbm90IGxldCB0aGUga2VybiBiZSBhIHBvdGVudGlhbCBicmVha3BvaW50LCBhcyBpdCB3b3VsZCBiZSBpZiBpdAorICAlIHdhcyBmb2xsb3dlZCBieSBnbHVlLgogICBcbm9icmVhawotICBcaWZkaW1ccGFyc2tpcD5cbm9ybWFsYmFzZWxpbmVza2lwCi0gICAgXGtlcm5ccGFyc2tpcAotICBcZWxzZQotICAgIFxrZXJuXG5vcm1hbGJhc2VsaW5lc2tpcAotICBcZmkKKyAgJQorICAlIFdlJ2xsIGFsbW9zdCBjZXJ0YWlubHkgc3RhcnQgYSBwYXJhZ3JhcGggbmV4dCwgc28gZG9uJ3QgbGV0IHRoYXQKKyAgJSBnbHVlIGFjY3VtdWxhdGUuICAoTm90IGEgYnJlYWtwb2ludCBiZWNhdXNlIGl0J3MgcHJlY2VkZWQgYnkgYQorICAlIGRpc2NhcmRhYmxlIGl0ZW0uKQorICBcdnNraXAtXHBhcnNraXAKKyAgJQorICAlIFRoaXMgXG5vYnJlYWsgaXMgcHVyZWx5IHNvIHRoZSBsYXN0IGl0ZW0gb24gdGhlIGxpc3QgaXMgYSBccGVuYWx0eQorICAlIG9mIDEwMDAwLiAgVGhpcyBpcyBzbyBvdGhlciBjb2RlLCBmb3IgaW5zdGFuY2UgXHBhcnNlYm9keWNvbW1vbiwgY2FuCisgICUgY2hlY2sgZm9yIGFuZCBhdm9pZCBhbGxvd2luZyBicmVha3BvaW50cy4gIE90aGVyd2lzZSwgaXQgd291bGQKKyAgJSBpbnNlcnQgYSB2YWxpZCBicmVha3BvaW50IGJldHdlZW46CisgICUgICBAc2VjdGlvbiBzZWMtd2hhdGV2ZXIKKyAgJSAgIEBkZWZmbiBkZWYtd2hhdGV2ZXIKICAgXG5vYnJlYWsKIH0KIApAQCAtNDEyNywxNDggKzQzMTUsMTM3IEBACiBcbmV3d3JpdGVcdG9jZmlsZQogCiAlIFdyaXRlIGFuIGVudHJ5IHRvIHRoZSB0b2MgZmlsZSwgb3BlbmluZyBpdCBpZiBuZWNlc3NhcnkuCi0lIENhbGxlZCBmcm9tIEBjaGFwdGVyLCBldGMuICBXZSBzdXBwbHkge1xmb2xpb30gYXQgdGhlIGVuZCBvZiB0aGUKLSUgYXJndW1lbnQsIHdoaWNoIHdpbGwgZW5kIHVwIGFzIHRoZSBsYXN0IGFyZ3VtZW50IHRvIHRoZSBcLi4uZW50cnkgbWFjcm8uCi0lCi0lIFVzYWdlOiBcd3JpdGV0b2NlbnRyeXtjaGFwfXtUaGUgTmFtZSBvZiBUaGUgR2FtZX17e1x0aGVcY2hhcG5vfX0KKyUgQ2FsbGVkIGZyb20gQGNoYXB0ZXIsIGV0Yy4gIAorJSAKKyUgRXhhbXBsZSB1c2FnZTogXHdyaXRldG9jZW50cnl7c2VjfXtTZWN0aW9uIE5hbWV9e1x0aGVcY2hhcG5vLlx0aGVcc2Vjbm99CislIFdlIGFwcGVuZCB0aGUgY3VycmVudCBub2RlIG5hbWUgKGlmIGFueSkgYW5kIHBhZ2UgbnVtYmVyIGFzIGFkZGl0aW9uYWwKKyUgYXJndW1lbnRzIGZvciB0aGUgXHtjaGFwLHNlYywuLi59ZW50cnkgbWFjcm9zIHdoaWNoIHdpbGwgZXZlbnR1YWxseQorJSByZWFkIHRoaXMuICBUaGUgbm9kZSBuYW1lIGlzIHVzZWQgaW4gdGhlIHBkZiBvdXRsaW5lcyBhcyB0aGUKKyUgZGVzdGluYXRpb24gdG8ganVtcCB0by4KKyUgCiAlIFdlIG9wZW4gdGhlIC50b2MgZmlsZSBmb3Igd3JpdGluZyBoZXJlIGluc3RlYWQgb2YgYXQgQHNldGZpbGVuYW1lIChvcgogJSBhbnkgb3RoZXIgZml4ZWQgdGltZSkgc28gdGhhdCBAY29udGVudHMgY2FuIGJlIGFueXdoZXJlIGluIHRoZSBkb2N1bWVudC4KKyUgQnV0IGlmICMxIGlzIGBvbWl0JywgdGhlbiB3ZSBkb24ndCBkbyBhbnl0aGluZy4gIFRoaXMgaXMgdXNlZCBmb3IgdGhlCislIHRhYmxlIG9mIGNvbnRlbnRzIGNoYXB0ZXIgb3BlbmluZ3MgdGhlbXNlbHZlcy4KICUKIFxuZXdpZlxpZnRvY2ZpbGVvcGVuZWQKK1xkZWZcb21pdGtleXdvcmR7b21pdH0lCislCiBcZGVmXHdyaXRldG9jZW50cnkjMSMyIzN7JQotICBcaWZ0b2NmaWxlb3BlbmVkXGVsc2UKLSAgICBcaW1tZWRpYXRlXG9wZW5vdXRcdG9jZmlsZSA9IFxqb2JuYW1lLnRvYwotICAgIFxnbG9iYWxcdG9jZmlsZW9wZW5lZHRydWUKKyAgXGVkZWZcd3JpdGV0b2N0eXBleyMxfSUKKyAgXGlmeFx3cml0ZXRvY3R5cGVcb21pdGtleXdvcmQgXGVsc2UKKyAgICBcaWZ0b2NmaWxlb3BlbmVkXGVsc2UKKyAgICAgIFxpbW1lZGlhdGVcb3Blbm91dFx0b2NmaWxlID0gXGpvYm5hbWUudG9jCisgICAgICBcZ2xvYmFsXHRvY2ZpbGVvcGVuZWR0cnVlCisgICAgXGZpCisgICAgJQorICAgIFxpZmxpbmtzCisgICAgICBcdG9rczAgPSB7IzJ9JQorICAgICAgXHRva3MyID0gXGV4cGFuZGFmdGVye1xsYXN0bm9kZX0lCisgICAgICBcZWRlZlx0ZW1we1x3cml0ZVx0b2NmaWxle1xyZWFsYmFja3NsYXNoICMxZW50cnl7XHRoZVx0b2tzMH17IzN9JQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcdGhlXHRva3MyfXtcbm9leHBhbmRcZm9saW99fX0lCisgICAgICBcdGVtcAorICAgIFxmaQogICBcZmkKICAgJQotICBcaWZsaW5rcwotICAgIFx0b2tzMCA9IHsjMn0lCi0gICAgXGVkZWZcdGVtcHtcd3JpdGVcdG9jZmlsZXtccmVhbGJhY2tzbGFzaCAjMWVudHJ5e1x0aGVcdG9rczB9IzN7XGZvbGlvfX19JQotICAgIFx0ZW1wCi0gIFxmaQotICAlCi0gICUgVGVsbCBcc2hpcG91dCB0byBjcmVhdGUgYSBwYWdlIGRlc3RpbmF0aW9uIGlmIHdlJ3JlIGRvaW5nIHBkZiwgd2hpY2gKLSAgJSB3aWxsIGJlIHRoZSB0YXJnZXQgb2YgdGhlIGxpbmtzIGluIHRoZSB0YWJsZSBvZiBjb250ZW50cy4gIFdlIGNhbid0Ci0gICUganVzdCBkbyBpdCBvbiBldmVyeSBwYWdlIGJlY2F1c2UgdGhlIHRpdGxlIHBhZ2VzIGFyZSBudW1iZXJlZCAxIGFuZAotICAlIDIgKHRoZSBwYWdlIG51bWJlcnMgYXJlbid0IHByaW50ZWQpLCBhbmQgc28gYXJlIHRoZSBmaXJzdCB0d28gcGFnZXMKLSAgJSBvZiB0aGUgZG9jdW1lbnQuICBUaHVzLCB3ZSdkIGhhdmUgdHdvIGRlc3RpbmF0aW9ucyBuYW1lZCBgMScsIGFuZAotICAlIHR3byBuYW1lZCBgMicuCi0gIFxpZnBkZiBccGRmbWFrZXBhZ2VkZXN0dHJ1ZSBcZmkKKyAgJSBUZWxsIFxzaGlwb3V0IHRvIGNyZWF0ZSBhIHBkZiBkZXN0aW5hdGlvbiBvbiBlYWNoIHBhZ2UsIGlmIHdlJ3JlCisgICUgd3JpdGluZyBwZGYuICBUaGVzZSBhcmUgdXNlZCBpbiB0aGUgdGFibGUgb2YgY29udGVudHMuICBXZSBjYW4ndAorICAlIGp1c3Qgd3JpdGUgb25lIG9uIGV2ZXJ5IHBhZ2UgYmVjYXVzZSB0aGUgdGl0bGUgcGFnZXMgYXJlIG51bWJlcmVkCisgICUgMSBhbmQgMiAodGhlIHBhZ2UgbnVtYmVycyBhcmVuJ3QgcHJpbnRlZCksIGFuZCBzbyBhcmUgdGhlIGZpcnN0CisgICUgdHdvIHBhZ2VzIG9mIHRoZSBkb2N1bWVudC4gIFRodXMsIHdlJ2QgaGF2ZSB0d28gZGVzdGluYXRpb25zIG5hbWVkCisgICUgYDEnLCBhbmQgdHdvIG5hbWVkIGAyJy4KKyAgXGlmcGRmIFxnbG9iYWxccGRmbWFrZXBhZ2VkZXN0dHJ1ZSBcZmkKIH0KIAogXG5ld3NraXBcY29udGVudHNyaWdodG1hcmdpbiBcY29udGVudHNyaWdodG1hcmdpbj0xaW4KIFxuZXdjb3VudFxzYXZlcGFnZW5vCiBcbmV3Y291bnRcbGFzdG5lZ2F0aXZlcGFnZW5vIFxsYXN0bmVnYXRpdmVwYWdlbm8gPSAtMQogCi0lIEZpbmlzaCB1cCB0aGUgbWFpbiB0ZXh0IGFuZCBwcmVwYXJlIHRvIHJlYWQgd2hhdCB3ZSd2ZSB3cml0dGVuCi0lIHRvIFx0b2NmaWxlLgorJSBQcmVwYXJlIHRvIHJlYWQgd2hhdCB3ZSd2ZSB3cml0dGVuIHRvIFx0b2NmaWxlLgogJQogXGRlZlxzdGFydGNvbnRlbnRzIzF7JQotICAgJSBJZiBAc2V0Y2hhcHRlcm5ld3BhZ2Ugb24sIGFuZCBAaGVhZGluZ3MgZG91YmxlLCB0aGUgY29udGVudHMgc2hvdWxkCi0gICAlIHN0YXJ0IG9uIGFuIG9kZCBwYWdlLCB1bmxpa2UgY2hhcHRlcnMuICBUaHVzLCB3ZSBtYWludGFpbgotICAgJSBcY29udGVudHNhbGlnbm1hY3JvIGluIHBhcmFsbGVsIHdpdGggXHBhZ2VhbGlnbm1hY3JvLgotICAgJSBGcm9tOiBUb3Jiam9ybiBHcmFubHVuZCA8dGVnZUBtYXRlbWF0aWsuc3Uuc2U+Ci0gICBcY29udGVudHNhbGlnbm1hY3JvCi0gICBcaW1tZWRpYXRlXGNsb3Nlb3V0XHRvY2ZpbGUKLSAgICUKLSAgICUgRG9uJ3QgbmVlZCB0byBwdXQgYENvbnRlbnRzJyBvciBgU2hvcnQgQ29udGVudHMnIGluIHRoZSBoZWFkbGluZS4KLSAgICUgSXQgaXMgYWJ1bmRhbnRseSBjbGVhciB3aGF0IHRoZXkgYXJlLgotICAgXHVubnVtYmNoYXBtYWNyb3sjMX1cZGVmXHRoaXNjaGFwdGVye30lCi0gICBcc2F2ZXBhZ2VubyA9IFxwYWdlbm8KLSAgIFxiZWdpbmdyb3VwICAgICAgICAgICAgICAgICAgJSBTZXQgdXAgdG8gaGFuZGxlIGNvbnRlbnRzIGZpbGVzIHByb3Blcmx5LgotICAgICAgXGNhdGNvZGVgXFw9MCAgXGNhdGNvZGVgXHs9MSAgXGNhdGNvZGVgXH09MiAgXGNhdGNvZGVgXEA9MTEKLSAgICAgICUgV2UgY2FuJ3QgZG8gdGhpcywgYmVjYXVzZSB0aGVuIGFuIGFjdHVhbCBeIGluIGEgc2VjdGlvbgotICAgICAgJSB0aXRsZSBmYWlscywgZS5nLiwgQGNoYXB0ZXIgXiAtLSBleHBvbmVudGlhdGlvbi4gIC0ta2FybCwgOWp1bDk3LgotICAgICAgJVxjYXRjb2RlYFxePTcgJSB0byBzZWUgXl5lNCBhcyBcImEgZXRjLiBqdWhhQHBpdWhhLnlkaS52dHQuZmkKLSAgICAgIFxyYWdnZWRib3R0b20gICAgICAgICAgICAgJSBXb3JyeSBtb3JlIGFib3V0IGJyZWFrcG9pbnRzIHRoYW4gdGhlIGJvdHRvbS4KLSAgICAgIFxhZHZhbmNlXGhzaXplIGJ5IC1cY29udGVudHNyaWdodG1hcmdpbiAlIERvbid0IHVzZSB0aGUgZnVsbCBsaW5lIGxlbmd0aC4KLSAgICAgICUKLSAgICAgICUgUm9tYW4gbnVtZXJhbHMgZm9yIHBhZ2UgbnVtYmVycy4KLSAgICAgIFxpZm51bSBccGFnZW5vPjAgXGdsb2JhbFxwYWdlbm8gPSBcbGFzdG5lZ2F0aXZlcGFnZW5vIFxmaQorICAlIElmIEBzZXRjaGFwdGVybmV3cGFnZSBvbiwgYW5kIEBoZWFkaW5ncyBkb3VibGUsIHRoZSBjb250ZW50cyBzaG91bGQKKyAgJSBzdGFydCBvbiBhbiBvZGQgcGFnZSwgdW5saWtlIGNoYXB0ZXJzLiAgVGh1cywgd2UgbWFpbnRhaW4KKyAgJSBcY29udGVudHNhbGlnbm1hY3JvIGluIHBhcmFsbGVsIHdpdGggXHBhZ2VhbGlnbm1hY3JvLgorICAlIEZyb206IFRvcmJqb3JuIEdyYW5sdW5kIDx0ZWdlQG1hdGVtYXRpay5zdS5zZT4KKyAgXGNvbnRlbnRzYWxpZ25tYWNybworICBcaW1tZWRpYXRlXGNsb3Nlb3V0XHRvY2ZpbGUKKyAgJQorICAlIERvbid0IG5lZWQgdG8gcHV0IGBDb250ZW50cycgb3IgYFNob3J0IENvbnRlbnRzJyBpbiB0aGUgaGVhZGxpbmUuCisgICUgSXQgaXMgYWJ1bmRhbnRseSBjbGVhciB3aGF0IHRoZXkgYXJlLgorICBcZGVmXHRoaXNjaGFwdGVye30lCisgIFxjaGFwbWFjcm97IzF9e1lvbWl0ZnJvbXRvY317fSUKKyAgJQorICBcc2F2ZXBhZ2VubyA9IFxwYWdlbm8KKyAgXGJlZ2luZ3JvdXAgICAgICAgICAgICAgICAgICAlIFNldCB1cCB0byBoYW5kbGUgY29udGVudHMgZmlsZXMgcHJvcGVybHkuCisgICAgXGNhdGNvZGVgXFw9MCAgXGNhdGNvZGVgXHs9MSAgXGNhdGNvZGVgXH09MiAgXGNhdGNvZGVgXEA9MTEKKyAgICAlIFdlIGNhbid0IGRvIHRoaXMsIGJlY2F1c2UgdGhlbiBhbiBhY3R1YWwgXiBpbiBhIHNlY3Rpb24KKyAgICAlIHRpdGxlIGZhaWxzLCBlLmcuLCBAY2hhcHRlciBeIC0tIGV4cG9uZW50aWF0aW9uLiAgLS1rYXJsLCA5anVsOTcuCisgICAgJVxjYXRjb2RlYFxePTcgJSB0byBzZWUgXl5lNCBhcyBcImEgZXRjLiBqdWhhQHBpdWhhLnlkaS52dHQuZmkKKyAgICBccmFnZ2VkYm90dG9tICAgICAgICAgICAgICUgV29ycnkgbW9yZSBhYm91dCBicmVha3BvaW50cyB0aGFuIHRoZSBib3R0b20uCisgICAgXGFkdmFuY2VcaHNpemUgYnkgLVxjb250ZW50c3JpZ2h0bWFyZ2luICUgRG9uJ3QgdXNlIHRoZSBmdWxsIGxpbmUgbGVuZ3RoLgorICAgICUKKyAgICAlIFJvbWFuIG51bWVyYWxzIGZvciBwYWdlIG51bWJlcnMuCisgICAgXGlmbnVtIFxwYWdlbm8+MCBcZ2xvYmFsXHBhZ2VubyA9IFxsYXN0bmVnYXRpdmVwYWdlbm8gXGZpCiB9CiAKIAogJSBOb3JtYWwgKGxvbmcpIHRvYy4KIFxkZWZcY29udGVudHN7JQotICAgXHN0YXJ0Y29udGVudHN7XHB1dHdvcmRUT0N9JQotICAgICBcb3BlbmluIDEgXGpvYm5hbWUudG9jCi0gICAgIFxpZmVvZiAxIFxlbHNlCi0gICAgICAgXGNsb3NlaW4gMQotICAgICAgIFxpbnB1dCBcam9ibmFtZS50b2MKLSAgICAgXGZpCi0gICAgIFx2ZmlsbCBcZWplY3QKLSAgICAgXGNvbnRlbnRzYWxpZ25tYWNybyAlIGluIGNhc2UgQHNldGNoYXB0ZXJuZXdwYWdlIG9kZCBpcyBpbiBlZmZlY3QKLSAgICAgXHBkZm1ha2VvdXRsaW5lcwotICAgXGVuZGdyb3VwCi0gICBcbGFzdG5lZ2F0aXZlcGFnZW5vID0gXHBhZ2VubwotICAgXGdsb2JhbFxwYWdlbm8gPSBcc2F2ZXBhZ2VubworICBcc3RhcnRjb250ZW50c3tccHV0d29yZFRPQ30lCisgICAgXG9wZW5pbiAxIFxqb2JuYW1lLnRvYworICAgIFxpZmVvZiAxIFxlbHNlCisgICAgICBcaW5wdXQgXGpvYm5hbWUudG9jCisgICAgXGZpCisgICAgXHZmaWxsIFxlamVjdAorICAgIFxjb250ZW50c2FsaWdubWFjcm8gJSBpbiBjYXNlIEBzZXRjaGFwdGVybmV3cGFnZSBvZGQgaXMgaW4gZWZmZWN0CisgICAgXGlmZW9mIDEgXGVsc2UKKyAgICAgIFxwZGZtYWtlb3V0bGluZXMKKyAgICBcZmkKKyAgICBcY2xvc2VpbiAxCisgIFxlbmRncm91cAorICBcbGFzdG5lZ2F0aXZlcGFnZW5vID0gXHBhZ2VubworICBcZ2xvYmFsXHBhZ2VubyA9IFxzYXZlcGFnZW5vCiB9CiAKICUgQW5kIGp1c3QgdGhlIGNoYXB0ZXJzLgogXGRlZlxzdW1tYXJ5Y29udGVudHN7JQotICAgXHN0YXJ0Y29udGVudHN7XHB1dHdvcmRTaG9ydFRPQ30lCi0gICAgICAlCi0gICAgICBcbGV0XGNoYXBlbnRyeSA9IFxzaG9ydGNoYXBlbnRyeQotICAgICAgXGxldFxhcHBlbmRpeGVudHJ5ID0gXHNob3J0YXBwZW5kaXhlbnRyeQotICAgICAgXGxldFx1bm51bWJjaGFwZW50cnkgPSBcc2hvcnR1bm51bWJlcmVkZW50cnkKLSAgICAgICUgV2Ugd2FudCBhIHRydWUgcm9tYW4gaGVyZSBmb3IgdGhlIHBhZ2UgbnVtYmVycy4KLSAgICAgIFxzZWNmb250cwotICAgICAgXGxldFxybT1cc2hvcnRjb250cm0gXGxldFxiZj1cc2hvcnRjb250YmYKLSAgICAgIFxsZXRcc2w9XHNob3J0Y29udHNsIFxsZXRcdHQ9XHNob3J0Y29udHR0Ci0gICAgICBccm0KLSAgICAgIFxoeXBoZW5wZW5hbHR5ID0gMTAwMDAKLSAgICAgIFxhZHZhbmNlXGJhc2VsaW5lc2tpcCBieSAxcHQgJSBPcGVuIGl0IHVwIGEgbGl0dGxlLgotICAgICAgXGRlZlxzZWNlbnRyeSAjIzEjIzIjIzMjIzR7fQotICAgICAgXGRlZlxzdWJzZWNlbnRyeSAjIzEjIzIjIzMjIzQjIzV7fQotICAgICAgXGRlZlxzdWJzdWJzZWNlbnRyeSAjIzEjIzIjIzMjIzQjIzUjIzZ7fQotICAgICAgXGxldFx1bm51bWJzZWNlbnRyeSA9IFxzZWNlbnRyeQotICAgICAgXGxldFx1bm51bWJzdWJzZWNlbnRyeSA9IFxzdWJzZWNlbnRyeQotICAgICAgXGxldFx1bm51bWJzdWJzdWJzZWNlbnRyeSA9IFxzdWJzdWJzZWNlbnRyeQotICAgICAgXG9wZW5pbiAxIFxqb2JuYW1lLnRvYwotICAgICAgXGlmZW9mIDEgXGVsc2UKLSAgICAgICAgXGNsb3NlaW4gMQotICAgICAgICBcaW5wdXQgXGpvYm5hbWUudG9jCi0gICAgICBcZmkKLSAgICAgXHZmaWxsIFxlamVjdAotICAgICBcY29udGVudHNhbGlnbm1hY3JvICUgaW4gY2FzZSBAc2V0Y2hhcHRlcm5ld3BhZ2Ugb2RkIGlzIGluIGVmZmVjdAotICAgXGVuZGdyb3VwCi0gICBcbGFzdG5lZ2F0aXZlcGFnZW5vID0gXHBhZ2VubwotICAgXGdsb2JhbFxwYWdlbm8gPSBcc2F2ZXBhZ2VubworICBcc3RhcnRjb250ZW50c3tccHV0d29yZFNob3J0VE9DfSUKKyAgICAlCisgICAgXGxldFxudW1jaGFwZW50cnkgPSBcc2hvcnRjaGFwZW50cnkKKyAgICBcbGV0XGFwcGVudHJ5ID0gXHNob3J0Y2hhcGVudHJ5CisgICAgXGxldFx1bm5jaGFwZW50cnkgPSBcc2hvcnR1bm5jaGFwZW50cnkKKyAgICAlIFdlIHdhbnQgYSB0cnVlIHJvbWFuIGhlcmUgZm9yIHRoZSBwYWdlIG51bWJlcnMuCisgICAgXHNlY2ZvbnRzCisgICAgXGxldFxybT1cc2hvcnRjb250cm0gXGxldFxiZj1cc2hvcnRjb250YmYKKyAgICBcbGV0XHNsPVxzaG9ydGNvbnRzbCBcbGV0XHR0PVxzaG9ydGNvbnR0dAorICAgIFxybQorICAgIFxoeXBoZW5wZW5hbHR5ID0gMTAwMDAKKyAgICBcYWR2YW5jZVxiYXNlbGluZXNraXAgYnkgMXB0ICUgT3BlbiBpdCB1cCBhIGxpdHRsZS4KKyAgICBcZGVmXG51bXNlY2VudHJ5IyMxIyMyIyMzIyM0e30KKyAgICBcbGV0XGFwcHNlY2VudHJ5ID0gXG51bXNlY2VudHJ5CisgICAgXGxldFx1bm5zZWNlbnRyeSA9IFxudW1zZWNlbnRyeQorICAgIFxsZXRcbnVtc3Vic2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICBcbGV0XGFwcHN1YnNlY2VudHJ5ID0gXG51bXNlY2VudHJ5CisgICAgXGxldFx1bm5zdWJzZWNlbnRyeSA9IFxudW1zZWNlbnRyeQorICAgIFxsZXRcbnVtc3Vic3Vic2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICBcbGV0XGFwcHN1YnN1YnNlY2VudHJ5ID0gXG51bXNlY2VudHJ5CisgICAgXGxldFx1bm5zdWJzdWJzZWNlbnRyeSA9IFxudW1zZWNlbnRyeQorICAgIFxvcGVuaW4gMSBcam9ibmFtZS50b2MKKyAgICBcaWZlb2YgMSBcZWxzZQorICAgICAgXGlucHV0IFxqb2JuYW1lLnRvYworICAgIFxmaQorICAgIFxjbG9zZWluIDEKKyAgICBcdmZpbGwgXGVqZWN0CisgICAgXGNvbnRlbnRzYWxpZ25tYWNybyAlIGluIGNhc2UgQHNldGNoYXB0ZXJuZXdwYWdlIG9kZCBpcyBpbiBlZmZlY3QKKyAgXGVuZGdyb3VwCisgIFxsYXN0bmVnYXRpdmVwYWdlbm8gPSBccGFnZW5vCisgIFxnbG9iYWxccGFnZW5vID0gXHNhdmVwYWdlbm8KIH0KIFxsZXRcc2hvcnRjb250ZW50cyA9IFxzdW1tYXJ5Y29udGVudHMKIAotXGlmcGRmCi0gIFxwZGZjYXRhbG9ney9QYWdlTW9kZSAvVXNlT3V0bGluZXN9JQotXGZpCi0KLSUgVGhlc2UgbWFjcm9zIGdlbmVyYXRlIGluZGl2aWR1YWwgZW50cmllcyBpbiB0aGUgdGFibGUgb2YgY29udGVudHMuCi0lIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgY2hhcHRlciBvciBzZWN0aW9uIG5hbWUuCi0lIFRoZSBsYXN0IGFyZ3VtZW50IGlzIHRoZSBwYWdlIG51bWJlci4KLSUgVGhlIGFyZ3VtZW50cyBpbiBiZXR3ZWVuIGFyZSB0aGUgY2hhcHRlciBudW1iZXIsIHNlY3Rpb24gbnVtYmVyLCAuLi4KLQotJSBDaGFwdGVycywgaW4gdGhlIG1haW4gY29udGVudHMuCi1cZGVmXGNoYXBlbnRyeSMxIzIjM3tcZG9jaGFwZW50cnl7IzJcbGFiZWxzcGFjZSMxfXsjM319Ci0lCi0lIENoYXB0ZXJzLCBpbiB0aGUgc2hvcnQgdG9jLgotJSBTZWUgY29tbWVudHMgaW4gXGRvY2hhcGVudHJ5IHJlIHZib3ggYW5kIHJlbGF0ZWQgc2V0dGluZ3MuCi1cZGVmXHNob3J0Y2hhcGVudHJ5IzEjMiMzeyUKLSAgXHRvY2VudHJ5e1xzaG9ydGNoYXBsYWJlbHsjMn1cbGFiZWxzcGFjZSAjMX17XGRvc2hvcnRwYWdlbm9cYmdyb3VwIzNcZWdyb3VwfSUKLX0KLQotJSBBcHBlbmRpY2VzLCBpbiB0aGUgbWFpbiBjb250ZW50cy4KLVxkZWZcYXBwZW5kaXhlbnRyeSMxIzIjM3slCi0gIFxkb2NoYXBlbnRyeXtcYXBwZW5kaXhib3h7XHB1dHdvcmRBcHBlbmRpeHt9ICMyfVxsYWJlbHNwYWNlIzF9eyMzfX0KLSUKLSUgQXBwZW5kaWNlcywgaW4gdGhlIHNob3J0IHRvYy4KLVxsZXRcc2hvcnRhcHBlbmRpeGVudHJ5ID0gXHNob3J0Y2hhcGVudHJ5Ci0KICUgVHlwZXNldCB0aGUgbGFiZWwgZm9yIGEgY2hhcHRlciBvciBhcHBlbmRpeCBmb3IgdGhlIHNob3J0IGNvbnRlbnRzLgotJSBUaGUgYXJnIGlzLCBlLmcuLCBgQXBwZW5kaXggQScgZm9yIGFuIGFwcGVuZGl4LCBvciBgMycgZm9yIGEgY2hhcHRlci4KLSUgV2UgY291bGQgc2ltcGxpZnkgdGhlIGNvZGUgaGVyZSBieSB3cml0aW5nIG91dCBhbiBcYXBwZW5kaXhlbnRyeQotJSBjb21tYW5kIGluIHRoZSB0b2MgZmlsZSBmb3IgYXBwZW5kaWNlcywgaW5zdGVhZCBvZiB1c2luZyBcY2hhcGVudHJ5Ci0lIGZvciBib3RoLCBidXQgaXQgZG9lc24ndCBzZWVtIHdvcnRoIGl0LgotJQotXG5ld2RpbWVuXHNob3J0YXBwZW5kaXh3aWR0aAorJSBUaGUgYXJnIGlzLCBlLmcuLCBgQScgZm9yIGFuIGFwcGVuZGl4LCBvciBgMycgZm9yIGEgY2hhcHRlci4KICUKIFxkZWZcc2hvcnRjaGFwbGFiZWwjMXslCiAgICUgVGhpcyBzcGFjZSBzaG91bGQgYmUgZW5vdWdoLCBzaW5jZSBhIHNpbmdsZSBudW1iZXIgaXMgLjVlbSwgYW5kIHRoZQpAQCAtNDI3NiwyOSArNDQ1Myw2MSBAQAogICAlIEJ1dCB1c2UgXGhzcyBqdXN0IGluIGNhc2UuCiAgICUgKFRoaXMgc3BhY2UgZG9lc24ndCBpbmNsdWRlIHRoZSBleHRyYSBzcGFjZSB0aGF0IGdldHMgYWRkZWQgYWZ0ZXIKICAgJSB0aGUgbGFiZWw7IHRoYXQgZ2V0cyBwdXQgaW4gYnkgXHNob3J0Y2hhcGVudHJ5IGFib3ZlLikKLSAgXGRpbWVuMCA9IDFlbQotICBcaGJveCB0byBcZGltZW4weyMxXGhzc30lCisgICUgCisgICUgV2UnZCBsaWtlIHRvIHJpZ2h0LWp1c3RpZnkgY2hhcHRlciBudW1iZXJzLCBidXQgdGhhdCBsb29rcyBzdHJhbmdlCisgICUgd2l0aCBhcHBlbmRpeCBsZXR0ZXJzLiAgQW5kIHJpZ2h0LWp1c3RpZnlpbmcgbnVtYmVycyBhbmQKKyAgJSBsZWZ0LWp1c3RpZnlpbmcgbGV0dGVycyBsb29rcyBzdHJhbmdlIHdoZW4gdGhlcmUgaXMgbGVzcyB0aGFuIDEwCisgICUgY2hhcHRlcnMuICBIYXZlIHRvIHJlYWQgdGhlIHdob2xlIHRvYyBvbmNlIHRvIGtub3cgaG93IG1hbnkgY2hhcHRlcnMKKyAgJSB0aGVyZSBhcmUgYmVmb3JlIGRlY2lkaW5nIC4uLgorICBcaGJveCB0byAxZW17IzFcaHNzfSUKIH0KIAorJSBUaGVzZSBtYWNyb3MgZ2VuZXJhdGUgaW5kaXZpZHVhbCBlbnRyaWVzIGluIHRoZSB0YWJsZSBvZiBjb250ZW50cy4KKyUgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBjaGFwdGVyIG9yIHNlY3Rpb24gbmFtZS4KKyUgVGhlIGxhc3QgYXJndW1lbnQgaXMgdGhlIHBhZ2UgbnVtYmVyLgorJSBUaGUgYXJndW1lbnRzIGluIGJldHdlZW4gYXJlIHRoZSBjaGFwdGVyIG51bWJlciwgc2VjdGlvbiBudW1iZXIsIC4uLgorCislIENoYXB0ZXJzLCBpbiB0aGUgbWFpbiBjb250ZW50cy4KK1xkZWZcbnVtY2hhcGVudHJ5IzEjMiMzIzR7XGRvY2hhcGVudHJ5eyMyXGxhYmVsc3BhY2UjMX17IzR9fQorJQorJSBDaGFwdGVycywgaW4gdGhlIHNob3J0IHRvYy4KKyUgU2VlIGNvbW1lbnRzIGluIFxkb2NoYXBlbnRyeSByZSB2Ym94IGFuZCByZWxhdGVkIHNldHRpbmdzLgorXGRlZlxzaG9ydGNoYXBlbnRyeSMxIzIjMyM0eyUKKyAgXHRvY2VudHJ5e1xzaG9ydGNoYXBsYWJlbHsjMn1cbGFiZWxzcGFjZSAjMX17XGRvc2hvcnRwYWdlbm9cYmdyb3VwIzRcZWdyb3VwfSUKK30KKworJSBBcHBlbmRpY2VzLCBpbiB0aGUgbWFpbiBjb250ZW50cy4KKyUgTmVlZCB0aGUgd29yZCBBcHBlbmRpeCwgYW5kIGEgZml4ZWQtc2l6ZSBib3guCislIAorXGRlZlxhcHBlbmRpeGJveCMxeyUKKyAgJSBXZSB1c2UgTSBzaW5jZSBpdCdzIHByb2JhYmx5IHRoZSB3aWRlc3QgbGV0dGVyLgorICBcc2V0Ym94MCA9IFxoYm94e1xwdXR3b3JkQXBwZW5kaXh7fSBNfSUKKyAgXGhib3ggdG8gXHdkMHtccHV0d29yZEFwcGVuZGl4e30gIzFcaHNzfX0KKyUKK1xkZWZcYXBwZW50cnkjMSMyIzMjNHtcZG9jaGFwZW50cnl7XGFwcGVuZGl4Ym94eyMyfVxsYWJlbHNwYWNlIzF9eyM0fX0KKwogJSBVbm51bWJlcmVkIGNoYXB0ZXJzLgotXGRlZlx1bm51bWJjaGFwZW50cnkjMSMyIzN7XGRvY2hhcGVudHJ5eyMxfXsjM319Ci1cZGVmXHNob3J0dW5udW1iZXJlZGVudHJ5IzEjMiMze1x0b2NlbnRyeXsjMX17XGRvc2hvcnRwYWdlbm9cYmdyb3VwIzNcZWdyb3VwfX0KK1xkZWZcdW5uY2hhcGVudHJ5IzEjMiMzIzR7XGRvY2hhcGVudHJ5eyMxfXsjNH19CitcZGVmXHNob3J0dW5uY2hhcGVudHJ5IzEjMiMzIzR7XHRvY2VudHJ5eyMxfXtcZG9zaG9ydHBhZ2Vub1xiZ3JvdXAjNFxlZ3JvdXB9fQogCiAlIFNlY3Rpb25zLgotXGRlZlxzZWNlbnRyeSMxIzIjMyM0e1xkb3NlY2VudHJ5eyMyLiMzXGxhYmVsc3BhY2UjMX17IzR9fQotXGRlZlx1bm51bWJzZWNlbnRyeSMxIzIjMyM0e1xkb3NlY2VudHJ5eyMxfXsjNH19CitcZGVmXG51bXNlY2VudHJ5IzEjMiMzIzR7XGRvc2VjZW50cnl7IzJcbGFiZWxzcGFjZSMxfXsjNH19CitcbGV0XGFwcHNlY2VudHJ5PVxudW1zZWNlbnRyeQorXGRlZlx1bm5zZWNlbnRyeSMxIzIjMyM0e1xkb3NlY2VudHJ5eyMxfXsjNH19CiAKICUgU3Vic2VjdGlvbnMuCi1cZGVmXHN1YnNlY2VudHJ5IzEjMiMzIzQjNXtcZG9zdWJzZWNlbnRyeXsjMi4jMy4jNFxsYWJlbHNwYWNlIzF9eyM1fX0KLVxkZWZcdW5udW1ic3Vic2VjZW50cnkjMSMyIzMjNCM1e1xkb3N1YnNlY2VudHJ5eyMxfXsjNX19CitcZGVmXG51bXN1YnNlY2VudHJ5IzEjMiMzIzR7XGRvc3Vic2VjZW50cnl7IzJcbGFiZWxzcGFjZSMxfXsjNH19CitcbGV0XGFwcHN1YnNlY2VudHJ5PVxudW1zdWJzZWNlbnRyeQorXGRlZlx1bm5zdWJzZWNlbnRyeSMxIzIjMyM0e1xkb3N1YnNlY2VudHJ5eyMxfXsjNH19CiAKICUgQW5kIHN1YnN1YnNlY3Rpb25zLgotXGRlZlxzdWJzdWJzZWNlbnRyeSMxIzIjMyM0IzUjNnslCi0gIFxkb3N1YnN1YnNlY2VudHJ5eyMyLiMzLiM0LiM1XGxhYmVsc3BhY2UjMX17IzZ9fQotXGRlZlx1bm51bWJzdWJzdWJzZWNlbnRyeSMxIzIjMyM0IzUjNntcZG9zdWJzdWJzZWNlbnRyeXsjMX17IzZ9fQorXGRlZlxudW1zdWJzdWJzZWNlbnRyeSMxIzIjMyM0e1xkb3N1YnN1YnNlY2VudHJ5eyMyXGxhYmVsc3BhY2UjMX17IzR9fQorXGxldFxhcHBzdWJzdWJzZWNlbnRyeT1cbnVtc3Vic3Vic2VjZW50cnkKK1xkZWZcdW5uc3Vic3Vic2VjZW50cnkjMSMyIzMjNHtcZG9zdWJzdWJzZWNlbnRyeXsjMX17IzR9fQogCiAlIFRoaXMgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgdmFyaW91cyBsZXZlbHMuCi1cbmV3ZGltZW5cdG9jaW5kZW50IFx0b2NpbmRlbnQgPSAzcGMKKyUgU2FtZSBhcyBcZGVmYXVsdHBhcmluZGVudC4KK1xuZXdkaW1lblx0b2NpbmRlbnQgXHRvY2luZGVudCA9IDE1cHQKIAogJSBOb3cgZm9yIHRoZSBhY3R1YWwgdHlwZXNldHRpbmcuIEluIGFsbCB0aGVzZSwgIzEgaXMgdGhlIHRleHQgYW5kICMyIGlzIHRoZQogJSBwYWdlIG51bWJlci4KQEAgLTQzMjksMTcgKzQ1MzgsOCBAQAogICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQogXGVuZGdyb3VwfQogCi0lIEZpbmFsIHR5cGVzZXR0aW5nIG9mIGEgdG9jIGVudHJ5OyB3ZSB1c2UgdGhlIHNhbWUgXGVudHJ5IG1hY3JvIGFzIGZvcgotJSB0aGUgaW5kZXggZW50cmllcywgYnV0IHdlIHdhbnQgdG8gc3VwcHJlc3MgaHlwaGVuYXRpb24gaGVyZS4gIChXZQotJSBjYW4ndCBkbyB0aGF0IGluIHRoZSBcZW50cnkgbWFjcm8sIHNpbmNlIGluZGV4IGVudHJpZXMgbWlnaHQgY29uc2lzdAotJSBvZiBoeXBoZW5hdGVkLWlkZW50aWZpZXJzLXRoYXQtZG8tbm90LWZpdC1vbi1hLWxpbmUtYW5kLW5vdGhpbmctZWxzZS4pCi1cZGVmXHRvY2VudHJ5IzEjMntcYmVnaW5ncm91cAotICBcdnNraXAgMHB0IHBsdXMxcHQgJSBhbGxvdyBhIGxpdHRsZSBzdHJldGNoIGZvciB0aGUgc2FrZSBvZiBuaWNlIHBhZ2UgYnJlYWtzCi0gICUgRG8gbm90IHVzZSBcdHVybm9mZmFjdGl2ZSBpbiB0aGVzZSBhcmd1bWVudHMuICBTaW5jZSB0aGUgdG9jIGlzCi0gICUgdHlwZXNldCBpbiBjbXIsIGNoYXJhY3RlcnMgc3VjaCBhcyBfIHdvdWxkIGNvbWUgb3V0IHdyb25nOyB3ZQotICAlIGhhdmUgdG8gZG8gdGhlIHVzdWFsIHRyYW5zbGF0aW9uIHRyaWNrcy4KLSAgXGVudHJ5eyMxfXsjMn0lCi1cZW5kZ3JvdXB9CislIFdlIHVzZSB0aGUgc2FtZSBcZW50cnkgbWFjcm8gYXMgZm9yIHRoZSBpbmRleCBlbnRyaWVzLgorXGxldFx0b2NlbnRyeSA9IFxlbnRyeQogCiAlIFNwYWNlIGJldHdlZW4gY2hhcHRlciAob3Igd2hhdGV2ZXIpIG51bWJlciBhbmQgdGhlIHRpdGxlLgogXGRlZlxsYWJlbHNwYWNle1xoc2tpcDFlbSBccmVsYXh9CkBAIC00MzQ5LDE1ICs0NTQ5LDE1IEBACiAKIFxkZWZcY2hhcGVudHJ5Zm9udHN7XHNlY2ZvbnRzIFxybX0KIFxkZWZcc2VjZW50cnlmb250c3tcdGV4dGZvbnRzfQotXGxldFxzdWJzZWNlbnRyeWZvbnRzID0gXHRleHRmb250cwotXGxldFxzdWJzdWJzZWNlbnRyeWZvbnRzID0gXHRleHRmb250cworXGRlZlxzdWJzZWNlbnRyeWZvbnRze1x0ZXh0Zm9udHN9CitcZGVmXHN1YnN1YnNlY2VudHJ5Zm9udHN7XHRleHRmb250c30KIAogCiBcbWVzc2FnZXtlbnZpcm9ubWVudHMsfQogJSBAZm9vIC4uLiBAZW5kIGZvby4KIAogJSBAcG9pbnR7fSwgQHJlc3VsdHt9LCBAZXhwYW5zaW9ue30sIEBwcmludHt9LCBAZXF1aXZ7fS4KLSUgCislCiAlIFNpbmNlIHRoZXNlIGNoYXJhY3RlcnMgYXJlIHVzZWQgaW4gZXhhbXBsZXMsIGl0IHNob3VsZCBiZSBhbiBldmVuIG51bWJlciBvZgogJSBcdHQgd2lkdGhzLiBFYWNoIFx0dCBjaGFyYWN0ZXIgaXMgMWVuLCBzbyB0d28gbWFrZXMgaXQgMWVtLgogJQpAQCAtNDM2OSw3ICs0NTY5LDcgQEAKIAogJSBUaGUgQGVycm9ye30gY29tbWFuZC4KICUgQWRhcHRlZCBmcm9tIHRoZSBUZVhib29rJ3MgXGJveGl0LgotJSAKKyUKIFxuZXdib3hcZXJyb3Jib3gKICUKIHtcdGVudHQgXGdsb2JhbFxkaW1lbjAgPSAzZW19JSBXaWR0aCBvZiB0aGUgYm94LgpAQCAtNDM3NywxMCArNDU3NywxMCBAQAogJSBUaGUgdGV4dC4gKGByJyBpcyBvcGVuIG9uIHRoZSByaWdodCwgYGUnIHNvbWV3aGF0IGxlc3Mgc28gb24gdGhlIGxlZnQuKQogXHNldGJveDAgPSBcaGJveHtca2Vybi0uNzVwdCBcdGVuc2YgZXJyb3Jca2Vybi0xLjVwdH0KICUKLVxnbG9iYWxcc2V0Ym94XGVycm9yYm94PVxoYm94IHRvIFxkaW1lbjB7XGhmaWwKK1xzZXRib3hcZXJyb3Jib3g9XGhib3ggdG8gXGRpbWVuMHtcaGZpbAogICAgXGhzaXplID0gXGRpbWVuMCBcYWR2YW5jZVxoc2l6ZSBieSAtNS44cHQgJSBTcGFjZSB0byBsZWZ0K3JpZ2h0LgogICAgXGFkdmFuY2VcaHNpemUgYnkgLTJcZGltZW4yICUgUnVsZXMuCi0gICBcdmJveHsKKyAgIFx2Ym94eyUKICAgICAgIFxocnVsZSBoZWlnaHRcZGltZW4yCiAgICAgICBcaGJveHtcdnJ1bGUgd2lkdGhcZGltZW4yIFxrZXJuM3B0ICAgICAgICAgICUgU3BhY2UgdG8gbGVmdCBvZiB0ZXh0LgogICAgICAgICAgXHZ0b3B7XGtlcm4yLjRwdCBcYm94MCBca2VybjIuNHB0fSUgU3BhY2UgYWJvdmUvYmVsb3cuCkBAIC00Mzk0LDE0ICs0NTk0LDEzIEBACiAlIE9uZSBleGNlcHRpb246IEAgaXMgc3RpbGwgYW4gZXNjYXBlIGNoYXJhY3Rlciwgc28gdGhhdCBAZW5kIHRleCB3b3Jrcy4KICUgQnV0IFxAIG9yIEBAIHdpbGwgZ2V0IGEgcGxhaW4gdGV4IEAgY2hhcmFjdGVyLgogCi1cZGVmXHRleHtcYmVnaW5ncm91cAorXGVudmRlZlx0ZXh7JQogICBcY2F0Y29kZSBgXFw9MCBcY2F0Y29kZSBgXHs9MSBcY2F0Y29kZSBgXH09MgogICBcY2F0Y29kZSBgXCQ9MyBcY2F0Y29kZSBgXCY9NCBcY2F0Y29kZSBgXCM9NgogICBcY2F0Y29kZSBgXF49NyBcY2F0Y29kZSBgXF89OCBcY2F0Y29kZSBgXH49XGFjdGl2ZSBcbGV0fj1cdGllCiAgIFxjYXRjb2RlIGBcJT0xNAogICBcY2F0Y29kZSBgXCs9XG90aGVyCiAgIFxjYXRjb2RlIGBcIj1cb3RoZXIKLSAgXGNhdGNvZGUgYFw9PVxvdGhlcgogICBcY2F0Y29kZSBgXHw9XG90aGVyCiAgIFxjYXRjb2RlIGBcPD1cb3RoZXIKICAgXGNhdGNvZGUgYFw+PVxvdGhlcgpAQCAtNDQxNiwxOSArNDYxNSwyMyBAQAogICBcbGV0XGVxdWl2PVxwdGV4ZXF1aXYKICAgXGxldFwhPVxwdGV4ZXhjbGFtCiAgIFxsZXRcaT1ccHRleGkKKyAgXGxldFxpbmRlbnQ9XHB0ZXhpbmRlbnQKKyAgXGxldFxub2luZGVudD1ccHRleG5vaW5kZW50CiAgIFxsZXRcez1ccHRleGxicmFjZQogICBcbGV0XCs9XHRhYmFsaWduCiAgIFxsZXRcfT1ccHRleHJicmFjZQorICBcbGV0XC89XHB0ZXhzbGFzaAogICBcbGV0XCo9XHB0ZXhzdGFyCiAgIFxsZXRcdD1ccHRleHQKICAgJQogICBcZGVmXGVuZGxkb3Rze1xtYXRoaW5uZXJ7XGxkb3RzXGxkb3RzXGxkb3RzXGxkb3RzfX0lCiAgIFxkZWZcZW5kZG90c3tccmVsYXhcaWZtbW9kZVxlbmRsZG90c1xlbHNlJFxtYXRoc3Vycm91bmQ9MHB0IFxlbmRsZG90c1wsJFxmaX0lCiAgIFxkZWZcQHtAfSUKLVxsZXRcRXRleD1cZW5kZ3JvdXB9Cit9CislIFRoZXJlIGlzIG5vIG5lZWQgdG8gZGVmaW5lIFxFdGV4LgogCiAlIERlZmluZSBAbGlzcCAuLi4gQGVuZCBsaXNwLgotJSBAbGlzcCBkb2VzIGEgXGJlZ2luZ3JvdXAgc28gaXQgY2FuIHJlYmluZCB0aGluZ3MsCislIEBsaXNwIGVudmlyb25tZW50IGZvcm1zIGEgZ3JvdXAgc28gaXQgY2FuIHJlYmluZCB0aGluZ3MsCiAlIGluY2x1ZGluZyB0aGUgZGVmaW5pdGlvbiBvZiBAZW5kIGxpc3AgKHdoaWNoIG5vcm1hbGx5IGlzIGVycm9uZW91cykuCiAKICUgQW1vdW50IHRvIG5hcnJvdyB0aGUgbWFyZ2lucyBieSBmb3IgQGxpc3AuCkBAIC00NDM5LDE5ICs0NjQyLDYgQEAKICUgaGF2ZSBhbnkgd2lkdGguCiBcZGVmXGxpc3BwYXJ7XG51bGxcZW5kZ3JhZn0KIAotJSBNYWtlIGVhY2ggc3BhY2UgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCBwcm9kdWNlIGEgbm9ybWFsIGludGVyd29yZAotJSBzcGFjZSBpbiB0aGUgb3V0cHV0LiAgRG9uJ3QgYWxsb3cgYSBsaW5lIGJyZWFrIGF0IHRoaXMgc3BhY2UsIGFzIHRoaXMKLSUgaXMgdXNlZCBvbmx5IGluIGVudmlyb25tZW50cyBsaWtlIEBleGFtcGxlLCB3aGVyZSBlYWNoIGxpbmUgb2YgaW5wdXQKLSUgc2hvdWxkIHByb2R1Y2UgYSBsaW5lIG9mIG91dHB1dCBhbnl3YXkuCi0lCi17XG9iZXlzcGFjZXMgJQotXGdkZWZcc2Vwc3BhY2Vze1xvYmV5c3BhY2VzXGxldCA9XHRpZX19Ci0KLSUgRGVmaW5lIFxvYmV5ZWRzcGFjZSB0byBiZSBvdXIgYWN0aXZlIHNwYWNlLCB3aGF0ZXZlciBpdCBpcy4gIFRoaXMgaXMKLSUgZm9yIHVzZSBpbiBccGFyc2VhcmcuCi17XHNlcHNwYWNlcyUKLVxnbG9iYWxcbGV0XG9iZXllZHNwYWNlPSB9Ci0KICUgVGhpcyBzcGFjZSBpcyBhbHdheXMgcHJlc2VudCBhYm92ZSBhbmQgYmVsb3cgZW52aXJvbm1lbnRzLgogXG5ld3NraXBcZW52c2tpcGFtb3VudCBcZW52c2tpcGFtb3VudCA9IDBwdAogCkBAIC00NDY5LDcgKzQ2NTksNyBAQAogICAgICAgXHJlbW92ZWxhc3Rza2lwCiAgICAgICAlIGl0J3Mgbm90IGEgZ29vZCBwbGFjZSB0byBicmVhayBpZiB0aGUgbGFzdCBwZW5hbHR5IHdhcyBcbm9icmVhawogICAgICAgJSBvciBiZXR0ZXIgLi4uCi0gICAgICBcaWZudW1cbGFzdHBlbmFsdHk+MTAwMDAgXGVsc2UgXHBlbmFsdHktNTAgXGZpCisgICAgICBcaWZudW1cbGFzdHBlbmFsdHk8MTAwMDAgXHBlbmFsdHktNTAgXGZpCiAgICAgICBcdnNraXBcZW52c2tpcGFtb3VudAogICAgIFxmaQogICBcZmkKQEAgLTQ1MDEsNTIgKzQ2OTEsNTIgQEAKICUKIFxuZXdza2lwXGxza2lwXG5ld3NraXBccnNraXAKIAotXGRlZlxjYXJ0b3VjaGV7JQotXHBhciAgJSBjYW4ndCBiZSBpbiB0aGUgbWlkc3Qgb2YgYSBwYXJhZ3JhcGguCi1cYmVnaW5ncm91cAotICAgICAgICBcbHNraXA9XGxlZnRza2lwIFxyc2tpcD1ccmlnaHRza2lwCi0gICAgICAgIFxsZWZ0c2tpcD0wcHRccmlnaHRza2lwPTBwdCAld2Ugd2FudCB0aGVzZSAqb3V0c2lkZSouCi0gICAgICAgIFxjYXJ0aW5uZXI9XGhzaXplIFxhZHZhbmNlXGNhcnRpbm5lciBieS1cbHNraXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXGFkdmFuY2VcY2FydGlubmVyIGJ5LVxyc2tpcAotICAgICAgICBcY2FydG91dGVyPVxoc2l6ZQotICAgICAgICBcYWR2YW5jZVxjYXJ0b3V0ZXIgYnkgMTguNHB0ICUgYWxsb3cgZm9yIDNwdCBrZXJucyBvbiBlaXRoZXIKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlLCBhbmQgZm9yIDZwdCB3YXN0ZSBmcm9tCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFjaCBjb3JuZXIgY2hhciwgYW5kIHJ1bGUgdGhpY2tuZXNzCi0gICAgICAgIFxub3JtYnNraXA9XGJhc2VsaW5lc2tpcCBcbm9ybXBza2lwPVxwYXJza2lwIFxub3JtbHNraXA9XGxpbmVza2lwCi0gICAgICAgICUgRmxhZyB0byB0ZWxsIEBsaXNwLCBldGMuLCBub3QgdG8gbmFycm93IG1hcmdpbi4KLSAgICAgICAgXGxldFxub25hcnJvd2luZz1cY29tbWVudAotICAgICAgICBcdmJveFxiZ3JvdXAKLSAgICAgICAgICAgICAgICBcYmFzZWxpbmVza2lwPTBwdFxwYXJza2lwPTBwdFxsaW5lc2tpcD0wcHQKLSAgICAgICAgICAgICAgICBcY2FydHRvcAotICAgICAgICAgICAgICAgIFxoYm94XGJncm91cAotICAgICAgICAgICAgICAgICAgICAgICAgXGhza2lwXGxza2lwCi0gICAgICAgICAgICAgICAgICAgICAgICBcdnJ1bGVca2VybjNwdAotICAgICAgICAgICAgICAgICAgICAgICAgXHZib3hcYmdyb3VwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxoc2l6ZT1cY2FydGlubmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxrZXJuM3B0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxiZWdpbmdyb3VwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGJhc2VsaW5lc2tpcD1cbm9ybWJza2lwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGxpbmVza2lwPVxub3JtbHNraXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBccGFyc2tpcD1cbm9ybXBza2lwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHZza2lwIC1ccGFyc2tpcAorXGVudmRlZlxjYXJ0b3VjaGV7JQorICBcaWZobW9kZVxwYXJcZmkgICUgY2FuJ3QgYmUgaW4gdGhlIG1pZHN0IG9mIGEgcGFyYWdyYXBoLgorICBcc3RhcnRzYXZpbmdpbnNlcnRzCisgIFxsc2tpcD1cbGVmdHNraXAgXHJza2lwPVxyaWdodHNraXAKKyAgXGxlZnRza2lwPTBwdFxyaWdodHNraXA9MHB0ICUgd2Ugd2FudCB0aGVzZSAqb3V0c2lkZSouCisgIFxjYXJ0aW5uZXI9XGhzaXplIFxhZHZhbmNlXGNhcnRpbm5lciBieS1cbHNraXAKKyAgXGFkdmFuY2VcY2FydGlubmVyIGJ5LVxyc2tpcAorICBcY2FydG91dGVyPVxoc2l6ZQorICBcYWR2YW5jZVxjYXJ0b3V0ZXIgYnkgMTguNHB0CSUgYWxsb3cgZm9yIDNwdCBrZXJucyBvbiBlaXRoZXIKKwkJCQklIHNpZGUsIGFuZCBmb3IgNnB0IHdhc3RlIGZyb20KKwkJCQklIGVhY2ggY29ybmVyIGNoYXIsIGFuZCBydWxlIHRoaWNrbmVzcworICBcbm9ybWJza2lwPVxiYXNlbGluZXNraXAgXG5vcm1wc2tpcD1ccGFyc2tpcCBcbm9ybWxza2lwPVxsaW5lc2tpcAorICAlIEZsYWcgdG8gdGVsbCBAbGlzcCwgZXRjLiwgbm90IHRvIG5hcnJvdyBtYXJnaW4uCisgIFxsZXRcbm9uYXJyb3dpbmc9XGNvbW1lbnQKKyAgXHZib3hcYmdyb3VwCisgICAgICBcYmFzZWxpbmVza2lwPTBwdFxwYXJza2lwPTBwdFxsaW5lc2tpcD0wcHQKKyAgICAgIFxjYXJ0dG9wCisgICAgICBcaGJveFxiZ3JvdXAKKwkgIFxoc2tpcFxsc2tpcAorCSAgXHZydWxlXGtlcm4zcHQKKwkgIFx2Ym94XGJncm91cAorCSAgICAgIFxrZXJuM3B0CisJICAgICAgXGhzaXplPVxjYXJ0aW5uZXIKKwkgICAgICBcYmFzZWxpbmVza2lwPVxub3JtYnNraXAKKwkgICAgICBcbGluZXNraXA9XG5vcm1sc2tpcAorCSAgICAgIFxwYXJza2lwPVxub3JtcHNraXAKKwkgICAgICBcdnNraXAgLVxwYXJza2lwCisJICAgICAgXGNvbW1lbnQgJSBGb3IgZXhwbGFuYXRpb24sIHNlZSB0aGUgZW5kIG9mIFxkZWZcZ3JvdXAuCit9CiBcZGVmXEVjYXJ0b3VjaGV7JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcZW5kZ3JvdXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGtlcm4zcHQKLSAgICAgICAgICAgICAgICAgICAgICAgIFxlZ3JvdXAKLSAgICAgICAgICAgICAgICAgICAgICAgIFxrZXJuM3B0XHZydWxlCi0gICAgICAgICAgICAgICAgICAgICAgICBcaHNraXBccnNraXAKLSAgICAgICAgICAgICAgICBcZWdyb3VwCi0gICAgICAgICAgICAgICAgXGNhcnRib3QKLSAgICAgICAgXGVncm91cAotXGVuZGdyb3VwCi19fQorICAgICAgICAgICAgICBcaWZobW9kZVxwYXJcZmkKKwkgICAgICBca2VybjNwdAorCSAgXGVncm91cAorCSAgXGtlcm4zcHRcdnJ1bGUKKwkgIFxoc2tpcFxyc2tpcAorICAgICAgXGVncm91cAorICAgICAgXGNhcnRib3QKKyAgXGVncm91cAorICBcY2hlY2tpbnNlcnRzCit9CiAKIAogJSBUaGlzIG1hY3JvIGlzIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFsbCB0aGUgQGV4YW1wbGUgdmFyaWFudHMsCiAlIGluc2lkZSBhIGdyb3VwLgogXGRlZlxub25maWxsc3RhcnR7JQogICBcYWJvdmVlbnZicmVhawotICBcaW5FTlYgJSBUaGlzIGdyb3VwIGVuZHMgYXQgdGhlIGVuZCBvZiB0aGUgYm9keQogICBcaGZ1enogPSAxMnB0ICUgRG9uJ3QgYmUgZnVzc3kKICAgXHNlcHNwYWNlcyAlIE1ha2Ugc3BhY2VzIGJlIHdvcmQtc2VwYXJhdG9ycyByYXRoZXIgdGhhbiBzcGFjZSB0b2tlbnMuCiAgIFxsZXRccGFyID0gXGxpc3BwYXIgJSBkb24ndCBpZ25vcmUgYmxhbmsgbGluZXMKQEAgLTQ1NTksMTAzICs0NzQ5LDk5IEBACiAgIFxpZnhcbm9uYXJyb3dpbmdccmVsYXgKICAgICBcYWR2YW5jZSBcbGVmdHNraXAgYnkgXGxpc3BuYXJyb3dpbmcKICAgICBcZXhkZW50YW1vdW50PVxsaXNwbmFycm93aW5nCi0gICAgXGxldFxleGRlbnQ9XG5vZmlsbGV4ZGVudAotICAgIFxsZXRcbm9uYXJyb3dpbmc9XHJlbGF4CisgIFxmaQorICBcbGV0XGV4ZGVudD1cbm9maWxsZXhkZW50Cit9CisKKyUgSWYgeW91IHdhbnQgYWxsIGV4YW1wbGVzIGV0Yy4gc21hbGw6IEBzZXQgZGlzcGVudnNpemUgc21hbGwuCislIElmIHlvdSB3YW50IGV2ZW4gc21hbGwgZXhhbXBsZXMgdGhlIGZ1bGwgc2l6ZTogQHNldCBkaXNwZW52c2l6ZSBub3NtYWxsLgorJSBUaGlzIGFmZmVjdHMgdGhlIGZvbGxvd2luZyBkaXNwbGF5ZWQgZW52aXJvbm1lbnRzOgorJSAgICBAZXhhbXBsZSwgQGRpc3BsYXksIEBmb3JtYXQsIEBsaXNwCislCitcZGVmXHNtYWxsd29yZHtzbWFsbH0KK1xkZWZcbm9zbWFsbHdvcmR7bm9zbWFsbH0KK1xsZXRcU0VUZGlzcGVudnNpemVccmVsYXgKK1xkZWZcc2V0bm9ybWFsZGlzcGVudnslCisgIFxpZnhcU0VUZGlzcGVudnNpemVcc21hbGx3b3JkCisgICAgXHNtYWxsZXhhbXBsZWZvbnRzIFxybQorICBcZmkKK30KK1xkZWZcc2V0c21hbGxkaXNwZW52eyUKKyAgXGlmeFxTRVRkaXNwZW52c2l6ZVxub3NtYWxsd29yZAorICBcZWxzZQorICAgIFxzbWFsbGV4YW1wbGVmb250cyBccm0KICAgXGZpCiB9CiAKLSUgRGVmaW5lIHRoZSBcRS4uLiBjb250cm9sIHNlcXVlbmNlIG9ubHkgaWYgd2UgYXJlIGluc2lkZSB0aGUgcGFydGljdWxhcgotJSBlbnZpcm9ubWVudCwgc28gdGhlIGVycm9yIGNoZWNraW5nIGluIFxlbmQgd2lsbCB3b3JrLgotJQotJSBUbyBlbmQgYW4gQGV4YW1wbGUtbGlrZSBlbnZpcm9ubWVudCwgd2UgZmlyc3QgZW5kIHRoZSBwYXJhZ3JhcGggKHZpYQotJSBcYWZ0ZXJlbnZicmVhaydzIHZlcnRpY2FsIGdsdWUpLCBhbmQgdGhlbiB0aGUgZ3JvdXAuICBUaGF0IHdheSB3ZSBrZWVwCi0lIHRoZSB6ZXJvIFxwYXJza2lwIHRoYXQgdGhlIGVudmlyb25tZW50cyBzZXQgLS0gXHBhcnNraXAgZ2x1ZSB3aWxsIGJlCi0lIGluc2VydGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgcGFyYWdyYXBoIGluIHRoZSBkb2N1bWVudCwgYWZ0ZXIKLSUgdGhlIGVudmlyb25tZW50LgotJQotXGRlZlxub25maWxsZmluaXNoe1xhZnRlcmVudmJyZWFrXGVuZGdyb3VwfQorJSBXZSBvZnRlbiBkZWZpbmUgdHdvIGVudmlyb25tZW50cywgQGZvbyBhbmQgQHNtYWxsZm9vLgorJSBMZXQncyBkbyBpdCBieSBvbmUgY29tbWFuZDoKK1xkZWZcbWFrZWRpc3BlbnYgIzEjMnsKKyAgXGV4cGFuZGFmdGVyXGVudmRlZlxjc25hbWUjMVxlbmRjc25hbWUge1xzZXRub3JtYWxkaXNwZW52ICMyfQorICBcZXhwYW5kYWZ0ZXJcZW52ZGVmXGNzbmFtZSBzbWFsbCMxXGVuZGNzbmFtZSB7XHNldHNtYWxsZGlzcGVudiAjMn0KKyAgXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgRSMxXGVuZGNzbmFtZSBcYWZ0ZXJlbnZicmVhaworICBcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSBFc21hbGwjMVxlbmRjc25hbWUgXGFmdGVyZW52YnJlYWsKK30KIAotJSBAbGlzcDogaW5kZW50ZWQsIG5hcnJvd2VkLCB0eXBld3JpdGVyIGZvbnQuCi1cZGVmXGxpc3B7XGJlZ2luZ3JvdXAKKyUgRGVmaW5lIHR3byBzeW5vbnltczoKK1xkZWZcbWFrZXR3b2Rpc3BlbnZzICMxIzIjM3sKKyAgXG1ha2VkaXNwZW52eyMxfXsjM30KKyAgXG1ha2VkaXNwZW52eyMyfXsjM30KK30KKworJSBAbGlzcDogaW5kZW50ZWQsIG5hcnJvd2VkLCB0eXBld3JpdGVyIGZvbnQ7IEBleGFtcGxlOiBzYW1lIGFzIEBsaXNwLgorJQorJSBAc21hbGxleGFtcGxlIGFuZCBAc21hbGxsaXNwOiB1c2Ugc21hbGxlciBmb250cy4KKyUgT3JpZ2luYWxseSBjb250cmlidXRlZCBieSBQYXZlbEB4ZXJveC4KKyUKK1xtYWtldHdvZGlzcGVudnMge2xpc3B9e2V4YW1wbGV9eyUKICAgXG5vbmZpbGxzdGFydAotICBcbGV0XEVsaXNwID0gXG5vbmZpbGxmaW5pc2gKICAgXHR0CiAgIFxsZXRca2JkZm9udCA9IFxrYmRleGFtcGxlZm9udCAlIEFsbG93IEBrYmQgdG8gZG8gc29tZXRoaW5nIHNwZWNpYWwuCiAgIFxnb2JibGUgICAgICAgJSBlYXQgcmV0dXJuCiB9CiAKLSUgQGV4YW1wbGU6IFNhbWUgYXMgQGxpc3AuCi1cZGVmXGV4YW1wbGV7XGJlZ2luZ3JvdXAgXGRlZlxFZXhhbXBsZXtcbm9uZmlsbGZpbmlzaFxlbmRncm91cH1cbGlzcH0KLQotJSBAc21hbGxleGFtcGxlIGFuZCBAc21hbGxsaXNwOiB1c2Ugc21hbGxlciBmb250cy4KLSUgT3JpZ2luYWxseSBjb250cmlidXRlZCBieSBQYXZlbEB4ZXJveC4KLVxkZWZcc21hbGxsaXNwe1xiZWdpbmdyb3VwCi0gIFxkZWZcRXNtYWxsbGlzcHtcbm9uZmlsbGZpbmlzaFxlbmRncm91cH0lCi0gIFxkZWZcRXNtYWxsZXhhbXBsZXtcbm9uZmlsbGZpbmlzaFxlbmRncm91cH0lCi0gIFxzbWFsbGV4YW1wbGVmb250cwotICBcbGlzcAotfQotXGxldFxzbWFsbGV4YW1wbGUgPSBcc21hbGxsaXNwCi0KLQotJSBAZGlzcGxheTogc2FtZSBhcyBAbGlzcCBleGNlcHQga2VlcCBjdXJyZW50IGZvbnQuCislIEBkaXNwbGF5L0BzbWFsbGRpc3BsYXk6IHNhbWUgYXMgQGxpc3AgZXhjZXB0IGtlZXAgY3VycmVudCBmb250LgogJQotXGRlZlxkaXNwbGF5e1xiZWdpbmdyb3VwCitcbWFrZWRpc3BlbnYge2Rpc3BsYXl9eyUKICAgXG5vbmZpbGxzdGFydAotICBcbGV0XEVkaXNwbGF5ID0gXG5vbmZpbGxmaW5pc2gKICAgXGdvYmJsZQogfQotJQotJSBAc21hbGxkaXNwbGF5OiBAZGlzcGxheSBwbHVzIHNtYWxsZXIgZm9udHMuCi0lCi1cZGVmXHNtYWxsZGlzcGxheXtcYmVnaW5ncm91cAotICBcZGVmXEVzbWFsbGRpc3BsYXl7XG5vbmZpbGxmaW5pc2hcZW5kZ3JvdXB9JQotICBcc21hbGxleGFtcGxlZm9udHMgXHJtCi0gIFxkaXNwbGF5Ci19CiAKLSUgQGZvcm1hdDogc2FtZSBhcyBAZGlzcGxheSBleGNlcHQgZG9uJ3QgbmFycm93IG1hcmdpbnMuCislIEBmb3JtYXQvQHNtYWxsZm9ybWF0OiBzYW1lIGFzIEBkaXNwbGF5IGV4Y2VwdCBkb24ndCBuYXJyb3cgbWFyZ2lucy4KICUKLVxkZWZcZm9ybWF0e1xiZWdpbmdyb3VwCi0gIFxsZXRcbm9uYXJyb3dpbmcgPSB0CitcbWFrZWRpc3BlbnZ7Zm9ybWF0fXslCisgIFxsZXRcbm9uYXJyb3dpbmcgPSB0JQogICBcbm9uZmlsbHN0YXJ0Ci0gIFxsZXRcRWZvcm1hdCA9IFxub25maWxsZmluaXNoCiAgIFxnb2JibGUKIH0KLSUKLSUgQHNtYWxsZm9ybWF0OiBAZm9ybWF0IHBsdXMgc21hbGxlciBmb250cy4KLSUKLVxkZWZcc21hbGxmb3JtYXR7XGJlZ2luZ3JvdXAKLSAgXGRlZlxFc21hbGxmb3JtYXR7XG5vbmZpbGxmaW5pc2hcZW5kZ3JvdXB9JQotICBcc21hbGxleGFtcGxlZm9udHMgXHJtCi0gIFxmb3JtYXQKLX0KIAotJSBAZmx1c2hsZWZ0IChzYW1lIGFzIEBmb3JtYXQpLgotJQotXGRlZlxmbHVzaGxlZnR7XGJlZ2luZ3JvdXAgXGRlZlxFZmx1c2hsZWZ0e1xub25maWxsZmluaXNoXGVuZGdyb3VwfVxmb3JtYXR9CislIEBmbHVzaGxlZnQ6IHNhbWUgYXMgQGZvcm1hdCwgYnV0IGRvZXNuJ3Qgb2JleSBcU0VUZGlzcGVudnNpemUuCitcZW52ZGVmXGZsdXNobGVmdHslCisgIFxsZXRcbm9uYXJyb3dpbmcgPSB0JQorICBcbm9uZmlsbHN0YXJ0CisgIFxnb2JibGUKK30KK1xsZXRcRWZsdXNobGVmdCA9IFxhZnRlcmVudmJyZWFrCiAKICUgQGZsdXNocmlnaHQuCiAlCi1cZGVmXGZsdXNocmlnaHR7XGJlZ2luZ3JvdXAKLSAgXGxldFxub25hcnJvd2luZyA9IHQKK1xlbnZkZWZcZmx1c2hyaWdodHslCisgIFxsZXRcbm9uYXJyb3dpbmcgPSB0JQogICBcbm9uZmlsbHN0YXJ0Ci0gIFxsZXRcRWZsdXNocmlnaHQgPSBcbm9uZmlsbGZpbmlzaAogICBcYWR2YW5jZVxsZWZ0c2tpcCBieSAwcHQgcGx1cyAxZmlsbAogICBcZ29iYmxlCiB9CitcbGV0XEVmbHVzaHJpZ2h0ID0gXGFmdGVyZW52YnJlYWsKIAogCiAlIEBxdW90YXRpb24gZG9lcyBub3JtYWwgbGluZWJyZWFraW5nIChoZW5jZSB3ZSBjYW4ndCB1c2UgXG5vbmZpbGxzdGFydCkKLSUgYW5kIG5hcnJvd3MgdGhlIG1hcmdpbnMuCislIGFuZCBuYXJyb3dzIHRoZSBtYXJnaW5zLiAgV2Uga2VlcCBccGFyc2tpcCBub256ZXJvIGluIGdlbmVyYWwsIHNpbmNlCislIHdlJ3JlIGRvaW5nIG5vcm1hbCBmaWxsaW5nLiAgU28sIHdoZW4gdXNpbmcgXGFib3ZlZW52YnJlYWsgYW5kCislIFxhZnRlcmVudmJyZWFrLCB0ZW1wb3JhcmlseSBtYWtlIFxwYXJza2lwIDAuCiAlCi1cZGVmXHF1b3RhdGlvbnslCi0gIFxiZWdpbmdyb3VwXGluRU5WICVUaGlzIGdyb3VwIGVuZHMgYXQgdGhlIGVuZCBvZiB0aGUgQHF1b3RhdGlvbiBib2R5CitcZW52ZGVmXHF1b3RhdGlvbnslCiAgIHtccGFyc2tpcD0wcHQgXGFib3ZlZW52YnJlYWt9JSBiZWNhdXNlIFxhYm92ZWVudmJyZWFrIGluc2VydHMgXHBhcnNraXAKICAgXHBhcmluZGVudD0wcHQKLSAgJSBXZSBoYXZlIHJldGFpbmVkIGEgbm9uemVybyBwYXJza2lwIGZvciB0aGUgZW52aXJvbm1lbnQsIHNpbmNlIHdlJ3JlCi0gICUgZG9pbmcgbm9ybWFsIGZpbGxpbmcuIFNvIHRvIGF2b2lkIGV4dHJhIHNwYWNlIGJlbG93IHRoZSBlbnZpcm9ubWVudC4uLgotICBcZGVmXEVxdW90YXRpb257XHBhcnNraXAgPSAwcHQgXG5vbmZpbGxmaW5pc2h9JQogICAlCiAgICUgQGNhcnRvdWNoZSBkZWZpbmVzIFxub25hcnJvd2luZyB0byBpbmhpYml0IG5hcnJvd2luZyBhdCBuZXh0IGxldmVsIGRvd24uCiAgIFxpZnhcbm9uYXJyb3dpbmdccmVsYXgKQEAgLTQ2NjQsMTEgKzQ4NTAsMzIgQEAKICAgICBcZXhkZW50YW1vdW50ID0gXGxpc3BuYXJyb3dpbmcKICAgICBcbGV0XG5vbmFycm93aW5nID0gXHJlbGF4CiAgIFxmaQorICBccGFyc2VhcmdccXVvdGF0aW9ubGFiZWwKK30KKworJSBXZSBoYXZlIHJldGFpbmVkIGEgbm9uemVybyBwYXJza2lwIGZvciB0aGUgZW52aXJvbm1lbnQsIHNpbmNlIHdlJ3JlCislIGRvaW5nIG5vcm1hbCBmaWxsaW5nLgorJSAKK1xkZWZcRXF1b3RhdGlvbnslCisgIFxwYXIKKyAgXGlmeFxxdW90YXRpb25hdXRob3JcdW5kZWZpbmVkXGVsc2UKKyAgICAlIGluZGVudCBhIGJpdC4KKyAgICBcbGVmdGxpbmV7XGtlcm4gMlxsZWZ0c2tpcCBcc2wgLS0tXHF1b3RhdGlvbmF1dGhvcn0lCisgIFxmaQorICB7XHBhcnNraXA9MHB0IFxhZnRlcmVudmJyZWFrfSUKK30KKworJSBJZiB3ZSdyZSBnaXZlbiBhbiBhcmd1bWVudCwgdHlwZXNldCBpdCBpbiBib2xkIHdpdGggYSBjb2xvbiBhZnRlci4KK1xkZWZccXVvdGF0aW9ubGFiZWwjMXslCisgIFxkZWZcdGVtcHsjMX0lCisgIFxpZnhcdGVtcFxlbXB0eSBcZWxzZQorICAgIHtcYmYgIzE6IH0lCisgIFxmaQogfQogCiAKICUgTGFUZVgtbGlrZSBAdmVyYmF0aW0uLi5AZW5kIHZlcmJhdGltIGFuZCBAdmVyYns8Y2hhcj4uLi48Y2hhcj59Ci0lIElmIHdlIHdhbnQgdG8gYWxsb3cgYW55IDxjaGFyPiBhcyBkZWxpbWl0ZXIsIAorJSBJZiB3ZSB3YW50IHRvIGFsbG93IGFueSA8Y2hhcj4gYXMgZGVsaW1pdGVyLAogJSB3ZSBuZWVkIHRoZSBjdXJseSBicmFjZXMgc28gdGhhdCBtYWtlaW5mbyBzZWVzIHRoZSBAdmVyYiBjb21tYW5kLCBlZzoKICUgYEB2ZXJieC4uLngnIHdvdWxkIGxvb2sgbGlrZSB0aGUgJ0B2ZXJieCcgY29tbWFuZC4gIC0tamFubmVrZUBnbnUub3JnCiAlCkBAIC00Njg1LDcgKzQ4OTIsNyBAQAogJQogJSBbS251dGhdIHAuIDM4MAogXGRlZlx1bmNhdGNvZGVzcGVjaWFsc3slCi0gIFxkZWZcZG8jIzF7XGNhdGNvZGVgIyMxPTEyfVxkb3NwZWNpYWxzfQorICBcZGVmXGRvIyMxe1xjYXRjb2RlYCMjMT1cb3RoZXJ9XGRvc3BlY2lhbHN9CiAlCiAlIFtLbnV0aF0gcHAuIDM4MCwzODEsMzkxCiAlIERpc2FibGUgU3BhbmlzaCBsaWdhdHVyZXMgP2AgYW5kICFgIG9mIFx0dCBmb250CkBAIC00NzMzLDYgKzQ5NDAsOCBAQAogICB9CiBcZW5kZ3JvdXAKIFxkZWZcc2V0dXB2ZXJiYXRpbXslCisgIFxub25maWxsc3RhcnQKKyAgXGFkdmFuY2VcbGVmdHNraXAgYnkgLVxkZWZib2R5aW5kZW50CiAgICUgRWFzaWVzdCAoYW5kIGNvbnZlbnRpb25hbGx5IHVzZWQpIGZvbnQgZm9yIHZlcmJhdGltCiAgIFx0dAogICBcZGVmXHBhcntcbGVhdmV2bW9kZVxlZ3JvdXBcYm94MFxlbmRncmFmfSUKQEAgLTQ3NDYsMTUgKzQ5NTUsMTUgQEAKICAgXGV2ZXJ5cGFye1xzdGFydHRhYmJveH0lCiB9CiAKLSUgRG8gdGhlIEB2ZXJiIG1hZ2ljOiB2ZXJiYXRpbSB0ZXh0IGlzIHF1b3RlZCBieSB1bmlxdWUgCi0lIGRlbGltaXRlciBjaGFyYWN0ZXJzLiAgQmVmb3JlIGZpcnN0IGRlbGltaXRlciBleHBlY3QgYSAKKyUgRG8gdGhlIEB2ZXJiIG1hZ2ljOiB2ZXJiYXRpbSB0ZXh0IGlzIHF1b3RlZCBieSB1bmlxdWUKKyUgZGVsaW1pdGVyIGNoYXJhY3RlcnMuICBCZWZvcmUgZmlyc3QgZGVsaW1pdGVyIGV4cGVjdCBhCiAlIHJpZ2h0IGJyYWNlLCBhZnRlciBsYXN0IGRlbGltaXRlciBleHBlY3QgY2xvc2luZyBicmFjZToKICUKICUgICAgXGRlZlxkb3ZlcmIneyc8Y2hhcj4jMTxjaGFyPid9J3sjMX0KICUKICUgW0tudXRoXSBwLiAzODI7IG9ubHkgZWF0IG91dGVyIHt9CiBcYmVnaW5ncm91cAotICBcY2F0Y29kZWBbPTFcY2F0Y29kZWBdPTJcY2F0Y29kZWBcez0xMlxjYXRjb2RlYFx9PTEyCisgIFxjYXRjb2RlYFs9MVxjYXRjb2RlYF09MlxjYXRjb2RlYFx7PVxvdGhlclxjYXRjb2RlYFx9PVxvdGhlcgogICBcZ2RlZlxkb3ZlcmJ7IzFbXGRlZlxuZXh0IyMxIzF9WyMjMVxlbmRncm91cF1cbmV4dF0KIFxlbmRncm91cAogJQpAQCAtNDc2NiwxOCArNDk3NSwxMSBAQAogJQogJSAgICAgXGRlZlxkb3ZlcmJhdGltIzFAZW5kIHZlcmJhdGlteyMxfQogJQotJSBGb3IgVGV4aW5mbyBpdCdzIGEgbG90IGVhc2llciB0aGFuIGZvciBMYVRlWCwgCislIEZvciBUZXhpbmZvIGl0J3MgYSBsb3QgZWFzaWVyIHRoYW4gZm9yIExhVGVYLAogJSBiZWNhdXNlIHRleGluZm8ncyBcdmVyYmF0aW0gZG9lc24ndCBzdG9wIGF0ICdcZW5ke3ZlcmJhdGltfSc6CiAlIHdlIG5lZWQgbm90IHJlZGVmaW5lICdcJywgJ3snIGFuZCAnfScuCiAlCiAlIEluc3BpcmVkIGJ5IExhVGVYJ3MgdmVyYmF0aW0gY29tbWFuZCBzZXQgW2xhdGV4Lmx0eF0KLSUlIEluY2x1ZGUgTGFUZVggaGFjayBmb3IgY29tcGxldGVuZXNzIC0tIG5ldmVyIGtub3cKLSUlIFxiZWdpbmdyb3VwCi0lJSBcY2F0Y29kZWB8PTAgXGNhdGNvZGVgWz0xCi0lJSBcY2F0Y29kZWBdPTJcY2F0Y29kZWBcez0xMlxjYXRjb2RlYFx9PTEyXGNhdGNvZGVgXCA9XGFjdGl2ZQotJSUgXGNhdGNvZGVgXFw9MTJ8Z2RlZnxkb3ZlcmJhdGltIzFAZW5kIHZlcmJhdGltWwotJSUgIzF8ZW5kZ3JvdXB8ZGVmfEV2ZXJiYXRpbVtdfGVuZFt2ZXJiYXRpbV1dCi0lJSB8ZW5kZ3JvdXAKICUKIFxiZWdpbmdyb3VwCiAgIFxjYXRjb2RlYFwgPVxhY3RpdmUKQEAgLTQ3ODUsNjIgKzQ5ODcsNDEgQEAKICAgJSBpZ25vcmUgZXZlcnl0aGluZyB1cCB0byB0aGUgZmlyc3QgXl5NLCB0aGF0J3MgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZAogICAlIG9mIHRoZSBAdmVyYmF0aW0gaW5wdXQgbGluZSBpdHNlbGYuICBPdGhlcndpc2Ugd2UgZ2V0IGFuIGV4dHJhIGJsYW5rCiAgICUgbGluZSBpbiB0aGUgb3V0cHV0LgotICBcZ2RlZlxkb3ZlcmJhdGltIzFeXk0jMkBlbmQgdmVyYmF0aW17IzJcZW5ke3ZlcmJhdGltfX0lCisgIFx4ZGVmXGRvdmVyYmF0aW0jMV5eTSMyQGVuZCB2ZXJiYXRpbXsjMlxub2V4cGFuZFxlbmRcZ29iYmxlIHZlcmJhdGltfSUKKyAgJSBXZSByZWFsbHkgd2FudCB7Li4uXGVuZCB2ZXJiYXRpbX0gaW4gdGhlIGJvZHkgb2YgdGhlIG1hY3JvLCBidXQKKyAgJSB3aXRob3V0IHRoZSBhY3RpdmUgc3BhY2U7IHRodXMgd2UgaGF2ZSB0byB1c2UgXHhkZWYgYW5kIFxnb2JibGUuCiBcZW5kZ3JvdXAKICUKLVxkZWZcdmVyYmF0aW17JQotICBcZGVmXEV2ZXJiYXRpbXtcbm9uZmlsbGZpbmlzaFxlbmRncm91cH0lCi0gIFxiZWdpbmdyb3VwCi0gICAgXG5vbmZpbGxzdGFydAotICAgIFxhZHZhbmNlXGxlZnRza2lwIGJ5IC1cZGVmYm9keWluZGVudAotICAgIFxiZWdpbmdyb3VwXHNldHVwdmVyYmF0aW1cZG92ZXJiYXRpbQorXGVudmRlZlx2ZXJiYXRpbXslCisgICAgXHNldHVwdmVyYmF0aW1cZG92ZXJiYXRpbQogfQorXGxldFxFdmVyYmF0aW0gPSBcYWZ0ZXJlbnZicmVhaworCiAKICUgQHZlcmJhdGltaW5jbHVkZSBGSUxFIC0gaW5zZXJ0IHRleHQgb2YgZmlsZSBpbiB2ZXJiYXRpbSBlbnZpcm9ubWVudC4KICUKLSUgQWxsb3cgbm9ybWFsIGNoYXJhY3RlcnMgdGhhdCB3ZSBtYWtlIGFjdGl2ZSBpbiB0aGUgYXJndW1lbnQgKGEgZmlsZSBuYW1lKS4KLVxkZWZcdmVyYmF0aW1pbmNsdWRleyUKLSAgXGJlZ2luZ3JvdXAKLSAgICBcY2F0Y29kZWBcXD1cb3RoZXIKLSAgICBcY2F0Y29kZWB+PVxvdGhlcgotICAgIFxjYXRjb2RlYF49XG90aGVyCi0gICAgXGNhdGNvZGVgXz1cb3RoZXIKLSAgICBcY2F0Y29kZWB8PVxvdGhlcgotICAgIFxjYXRjb2RlYDw9XG90aGVyCi0gICAgXGNhdGNvZGVgPj1cb3RoZXIKLSAgICBcY2F0Y29kZWArPVxvdGhlcgotICAgIFxwYXJzZWFyZ1xkb3ZlcmJhdGltaW5jbHVkZQotfQotXGRlZlxzZXR1cHZlcmJhdGltaW5jbHVkZXslCi0gIFxiZWdpbmdyb3VwCi0gICAgXG5vbmZpbGxzdGFydAotICAgIFxhZHZhbmNlXGxlZnRza2lwIGJ5IC1cZGVmYm9keWluZGVudAotICAgIFxiZWdpbmdyb3VwXHNldHVwdmVyYmF0aW0KLX0KK1xkZWZcdmVyYmF0aW1pbmNsdWRle1xwYXJzZWFyZ3VzaW5nXGZpbGVuYW1lY2F0Y29kZXNcZG92ZXJiYXRpbWluY2x1ZGV9CiAlCiBcZGVmXGRvdmVyYmF0aW1pbmNsdWRlIzF7JQotICAgICAlIFJlc3RvcmUgYWN0aXZlIGNoYXJzIGZvciBpbmNsdWRlZCBmaWxlLgotICBcZW5kZ3JvdXAKLSAgXGJlZ2luZ3JvdXAKLSAgICBcbGV0XHZhbHVlPVxleHBhbmRhYmxldmFsdWUKLSAgICBcZGVmXHRoaXNmaWxleyMxfSUKLSAgICBcZXhwYW5kYWZ0ZXJcZXhwYW5kYWZ0ZXJcc2V0dXB2ZXJiYXRpbWluY2x1ZGVcaW5wdXRcdGhpc2ZpbGUKLSAgXGVuZGdyb3VwCi0gIFxub25maWxsZmluaXNoCi0gIFxlbmRncm91cAorICB7JQorICAgIFxtYWtldmFsdWVleHBhbmRhYmxlCisgICAgXHNldHVwdmVyYmF0aW0KKyAgICBcaW5wdXQgIzEKKyAgICBcYWZ0ZXJlbnZicmVhaworICB9JQogfQogCiAlIEBjb3B5aW5nIC4uLiBAZW5kIGNvcHlpbmcuCiAlIFNhdmUgdGhlIHRleHQgYXdheSBmb3IgQGluc2VydGNvcHlpbmcgbGF0ZXIuICBNYW55IGNvbW1hbmRzIHdvbid0IGJlCiAlIGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LCBidXQgdGhhdCdzIG9rLgotJSAKKyUKICUgV2Ugc2F2ZSB0aGUgdW5pbnRlcnByZXRlZCB0b2tlbnMsIHJhdGhlciB0aGFuIGNyZWF0aW5nIGEgYm94LgogJSBTYXZpbmcgdGhlIHRleHQgaW4gYSBib3ggd291bGQgYmUgbXVjaCBlYXNpZXIsIGJ1dCB0aGVuIGFsbCB0aGUKICUgdHlwZXNldHRpbmcgY29tbWFuZHMgKEBzbWFsbGJvb2ssIGZvbnQgY2hhbmdlcywgZXRjLikgaGF2ZSB0byBiZSBkb25lCiAlIGJlZm9yZWhhbmQgLS0gYW5kIGEpIHdlIHdhbnQgQGNvcHlpbmcgdG8gYmUgZG9uZSBmaXJzdCBpbiB0aGUgc291cmNlCiAlIGZpbGU7IGIpIGxldHRpbmcgdXNlcnMgZGVmaW5lIHRoZSBmcm9udG1hdHRlciBpbiBhcyBmbGV4aWJsZSBvcmRlciBhcwogJSBwb3NzaWJsZSBpcyB2ZXJ5IGRlc2lyYWJsZS4KLSUgCislCiBcZGVmXGNvcHlpbmd7XGJlZ2luZ3JvdXAKICAgJSBEZWZpbmUgYSBjb21tYW5kIHRvIHN3YWxsb3cgdGV4dCB1bnRpbCB3ZSByZWFjaCBgQGVuZCBjb3B5aW5nJy4KICAgJSBcIGlzIHRoZSBlc2NhcGUgY2hhciBpbiB0aGlzIHRleGluZm8udGV4IGZpbGUsIHNvIGl0IGlzIHRoZQpAQCAtNDg2MywxNSArNTA0NCwxNSBAQAogJSBlbmQtb2YtbGluZSB0byBiZSBhIFxwYXIsIGFzIHdvdWxkIGhhcHBlbiB3aXRoIHRoZSBub3JtYWwgYWN0aXZlCiAlIGRlZmluaXRpb24gb2YgXl5NLiAgT24gdGhlIHRoaXJkIGhhbmQsIHR3byBeXk0ncyBpbiBhIHJvdyBzaG91bGQgc3RpbGwKICUgZ2VuZXJhdGUgYSBccGFyLgotJSAKKyUKICUgT3VyIGFwcHJvYWNoIGlzIHRvIG1ha2UgXl5NIGluc2VydCBhIHNwYWNlIGFuZCBhIHBlbmFsdHkxIG5vcm1hbGx5OwogJSB0aGVuIGl0IGNhbiBhbHNvIGNoZWNrIGlmIFxsYXN0cGVuYWx0eT0xLiAgSWYgaXQgZG9lcywgdGhlbiBtYW51YWxseQogJSBkbyBccGFyLgotJSAKKyUKICUgVGhpcyBtZXNzZXMgdXAgdGhlIG5vcm1hbCBkZWZpbml0aW9ucyBvZiBAY1tvbW1lbnRdLCBzbyB3ZSByZWRlZmluZQogJSBpdC4gIFNpbWlsYXJseSBmb3IgQGlnbm9yZS4gIChUaGVzZSBjb21tYW5kcyBhcmUgdXNlZCBpbiB0aGUgZ2NjCiAlIG1hbnVhbCBmb3IgbWFuIHBhZ2UgZ2VuZXJhdGlvbi4pCi0lIAorJQogJSBTZWVtcyBwcmV0dHkgZnJhZ2lsZSwgbW9zdCBsaW5lLW9yaWVudGVkIGNvbW1hbmRzIHdpbGwgcHJlc3VtYWJseQogJSBmYWlsLCBidXQgZm9yIHRoZSBsaW1pdGVkIHVzZSBvZiBnZXR0aW5nIHRoZSBjb3B5aW5nIHRleHQgKHdoaWNoCiAlIHNob3VsZCBiZSBxdWl0ZSBzaW1wbGUpIGluc2VydGVkLCB3ZSBjYW4gaG9wZSBpdCdzIG9rLgpAQCAtNDkwMiw1ODEgKzUwODMsMzM2IEBACiBcbWVzc2FnZXtkZWZ1bnMsfQogJSBAZGVmdW4gZXRjLgogCi0lIEFsbG93IHVzZXIgdG8gY2hhbmdlIGRlZmluaXRpb24gb2JqZWN0IGZvbnQgKFxkZikgaW50ZXJuYWxseQotXGRlZlxzZXRkZWZmb250IzEge1xjc25hbWUgREVGIzFcZW5kY3NuYW1lfQotCiBcbmV3c2tpcFxkZWZib2R5aW5kZW50IFxkZWZib2R5aW5kZW50PS40aW4KIFxuZXdza2lwXGRlZmFyZ3NpbmRlbnQgXGRlZmFyZ3NpbmRlbnQ9NTBwdAogXG5ld3NraXBcZGVmbGFzdGFyZ21hcmdpbiBcZGVmbGFzdGFyZ21hcmdpbj0xOHB0CiAKLVxuZXdjb3VudFxwYXJlbmNvdW50Ci0KLSUgV2Ugd2FudCAoKSZbXSB0byBwcmludCBzcGVjaWFsbHkgb24gdGhlIGRlZnVuIGxpbmUuCi0lIAotXGRlZlxhY3RpdmVwYXJlbnN7JQotICBcY2F0Y29kZWBcKD1cYWN0aXZlIFxjYXRjb2RlYFwpPVxhY3RpdmUKLSAgXGNhdGNvZGVgXCY9XGFjdGl2ZQotICBcY2F0Y29kZWBcWz1cYWN0aXZlIFxjYXRjb2RlYFxdPVxhY3RpdmUKLX0KLQotJSBNYWtlIGNvbnRyb2wgc2VxdWVuY2VzIHdoaWNoIGFjdCBsaWtlIG5vcm1hbCBwYXJlbnRoZXNpcyBjaGFycy4KLVxsZXRcbHBhcmVuID0gKCBcbGV0XHJwYXJlbiA9ICkKLQote1xhY3RpdmVwYXJlbnMgJSBOb3csIHNtYXJ0IHBhcmVucyBkb24ndCB0dXJuIG9uIHVudGlsICZmb28gKHNlZSBcYW1wcm0pCi0KLSUgQmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGEgZGVmaW5pdGlvbiBmb3IgYCgnLCBldGMuICBGb3IgZXhhbXBsZSwKLSUgaWYgdGhlIGZuIG5hbWUgaGFzIHBhcmVucyBpbiBpdCwgXGJvbGRicmF4IHdpbGwgbm90IGJlIGluIGVmZmVjdCB5ZXQsCi0lIHNvIFRlWCB3b3VsZCBvdGhlcndpc2UgY29tcGxhaW4gYWJvdXQgdW5kZWZpbmVkIGNvbnRyb2wgc2VxdWVuY2UuCi1cZ2xvYmFsXGxldCg9XGxwYXJlbiBcZ2xvYmFsXGxldCk9XHJwYXJlbgotXGdsb2JhbFxsZXRbPVxsYnJhY2sgXGdsb2JhbFxsZXRdPVxyYnJhY2sKLQotXGdkZWZcZnVuY3Rpb25wYXJlbnN7XGJvbGRicmF4XGxldCY9XGFtcHJtXHBhcmVuY291bnQ9MCB9Ci1cZ2RlZlxib2xkYnJheHtcbGV0KD1cb3BuclxsZXQpPVxjbG5yXGxldFs9XGxicmJcbGV0XT1ccmJyYn0KLSUgVGhpcyBpcyB1c2VkIHRvIHR1cm4gb24gc3BlY2lhbCBwYXJlbnMKLSUgYnV0IG1ha2UgJiBhY3Qgb3JkaW5hcnkgKGdpdmVuIHRoYXQgaXQncyBhY3RpdmUpLgotXGdkZWZcYm9sZGJyYXhub2FtcHtcbGV0KD1cb3BuclxsZXQpPVxjbG5yXGxldFs9XGxicmJcbGV0XT1ccmJyYlxsZXQmPVxhbXBucn0KLQotJSBEZWZpbml0aW9ucyBvZiAoLCApIGFuZCAmIHVzZWQgaW4gYXJncyBmb3IgZnVuY3Rpb25zLgotJSBUaGlzIGlzIHRoZSBkZWZpbml0aW9uIG9mICggb3V0c2lkZSBvZiBhbGwgcGFyZW50aGVzZXMuCi1cZ2RlZlxvcHJtIzEge3tccm1cY2hhcmBcKH0jMSBcYmYgXGxldCg9XG9wbmVzdGVkCi0gIFxnbG9iYWxcYWR2YW5jZVxwYXJlbmNvdW50IGJ5IDEKLX0KLSUKLSUgVGhpcyBpcyB0aGUgZGVmaW5pdGlvbiBvZiAoIHdoZW4gYWxyZWFkeSBpbnNpZGUgYSBsZXZlbCBvZiBwYXJlbnMuCi1cZ2RlZlxvcG5lc3RlZHtcY2hhcmBcKFxnbG9iYWxcYWR2YW5jZVxwYXJlbmNvdW50IGJ5IDEgfQotJQotXGdkZWZcY2xybXslIFByaW50IGEgcGFyZW4gaW4gcm9tYW4gaWYgaXQgaXMgdGFraW5nIHVzIGJhY2sgdG8gZGVwdGggb2YgMC4KLSAgJSBhbHNvIGluIHRoYXQgY2FzZSByZXN0b3JlIHRoZSBvdXRlci1sZXZlbCBkZWZpbml0aW9uIG9mICguCi0gIFxpZm51bSBccGFyZW5jb3VudD0xIHtccm0gXGNoYXIgYFwpfVxzbCBcbGV0KD1cb3BybSBcZWxzZSBcY2hhciBgXCkgXGZpCi0gIFxnbG9iYWxcYWR2YW5jZSBccGFyZW5jb3VudCBieSAtMSB9Ci0lIElmIHdlIGVuY291bnRlciAmZm9vLCB0aGVuIHR1cm4gb24gKCktaGFja2luZyBhZnRlcndhcmRzCi1cZ2RlZlxhbXBybSMxIHt7XHJtXCYjMX1cbGV0KD1cb3BybSBcbGV0KT1cY2xybVwgfQotJQotXGdkZWZcbm9ybWFscGFyZW5ze1xib2xkYnJheFxsZXQmPVxhbXBucn0KLX0gJSBFbmQgb2YgZGVmaW5pdGlvbiBpbnNpZGUgXGFjdGl2ZXBhcmVucwotJSUgVGhlc2UgcGFyZW5zIChpbiBcYm9sZGJyYXgpIGFjdHVhbGx5IGFyZSBhIGxpdHRsZSBib2xkZXIgdGhhbiB0aGUKLSUlIGNvbnRhaW5lZCB0ZXh0LiAgVGhpcyBpcyBlc3BlY2lhbGx5IG5lZWRlZCBmb3IgWyBhbmQgXQotXGRlZlxvcG5ye3tcc2ZcY2hhcmBcKH1cZ2xvYmFsXGFkdmFuY2VccGFyZW5jb3VudCBieSAxIH0KLVxkZWZcY2xucnt7XHNmXGNoYXJgXCl9XGdsb2JhbFxhZHZhbmNlXHBhcmVuY291bnQgYnkgLTEgfQotXGxldFxhbXBuciA9IFwmCi1cZGVmXGxicmJ7e1xiZlxjaGFyYFxbfX0KLVxkZWZccmJyYnt7XGJmXGNoYXJgXF19fQotCi0lIEFjdGl2ZSAmJ3Mgc25lYWsgaW50byB0aGUgaW5kZXggYXJndW1lbnRzLCBzbyBtYWtlIHN1cmUgaXQncyBkZWZpbmVkLgotewotICBcY2F0Y29kZWAmID0gXGFjdGl2ZQotICBcZ2xvYmFsXGxldCYgPSBcYW1wbnIKLX0KLQotJSBcZGVmbmFtZSwgd2hpY2ggZm9ybWF0cyB0aGUgbmFtZSBvZiB0aGUgQGRlZiAobm90IHRoZSBhcmdzKS4KLSUgIzEgaXMgdGhlIGZ1bmN0aW9uIG5hbWUuCi0lICMyIGlzIHRoZSB0eXBlIG9mIGRlZmluaXRpb24sIHN1Y2ggYXMgIkZ1bmN0aW9uIi4KLSUKLVxkZWZcZGVmbmFtZSMxIzJ7JQotICAlIEhvdyB3ZSdsbCBvdXRwdXQgdGhlIHR5cGUgbmFtZS4gIFB1dHRpbmcgaXQgaW4gYnJhY2tldHMgaGVscHMKLSAgJSBkaXN0aW5ndWlzaCBpdCBmcm9tIHRoZSBib2R5IHRleHQgdGhhdCBtYXkgZW5kIHVwIG9uIHRoZSBuZXh0IGxpbmUKLSAgJSBqdXN0IGJlbG93IGl0LgotICBcaWZlbXB0eXsjMn0lCi0gICAgXGRlZlxkZWZuYW1ldHlwZXt9JQorJSBTdGFydCB0aGUgcHJvY2Vzc2luZyBvZiBAZGVmZm46CitcZGVmXHN0YXJ0ZGVmdW57JQorICBcaWZudW1cbGFzdHBlbmFsdHk8MTAwMDAKKyAgICBcbWVkYnJlYWsKICAgXGVsc2UKLSAgICBcZGVmXGRlZm5hbWV0eXBle1tccm0gIzJdfSUKKyAgICAlIElmIHRoZXJlIGFyZSB0d28gQGRlZiBjb21tYW5kcyBpbiBhIHJvdywgd2UnbGwgaGF2ZSBhIFxub2JyZWFrLAorICAgICUgd2hpY2ggaXMgdGhlcmUgdG8ga2VlcCB0aGUgZnVuY3Rpb24gZGVzY3JpcHRpb24gdG9nZXRoZXIgd2l0aCBpdHMKKyAgICAlIGhlYWRlci4gIEJ1dCBpZiB0aGVyZSdzIG5vdGhpbmcgYnV0IGhlYWRlcnMsIHdlIG5lZWQgdG8gYWxsb3cgYQorICAgICUgYnJlYWsgc29tZXdoZXJlLiAgQ2hlY2sgZm9yIHBlbmFsdHkgMTAwMDIgKGluc2VydGVkIGJ5CisgICAgJSBcZGVmYXJnc2NvbW1vbmVuZGluZykgaW5zdGVhZCBvZiAxMDAwMCwgc2luY2UgdGhlIHNlY3Rpb25pbmcKKyAgICAlIGNvbW1hbmRzIGluc2VydCBhIFxwZW5hbHR5MTAwMDAsIGFuZCB3ZSBkb24ndCB3YW50IHRvIGFsbG93IGEgYnJlYWsKKyAgICAlIGJldHdlZW4gYSBzZWN0aW9uIGhlYWRpbmcgYW5kIGEgZGVmdW4uCisgICAgXGlmbnVtXGxhc3RwZW5hbHR5PTEwMDAyIFxwZW5hbHR5MjAwMCBcZmkKKyAgICAlCisgICAgJSBTaW1pbGFybHksIGFmdGVyIGEgc2VjdGlvbiBoZWFkaW5nLCBkbyBub3QgYWxsb3cgYSBicmVhay4KKyAgICAlIEJ1dCBkbyBpbnNlcnQgdGhlIGdsdWUuCisgICAgXG1lZHNraXAgICUgcHJlY2VkZWQgYnkgZGlzY2FyZGFibGUgcGVuYWx0eSwgc28gbm90IGEgYnJlYWtwb2ludAogICBcZmkKICAgJQotICAlIEdldCB0aGUgdmFsdWVzIG9mIFxsZWZ0c2tpcCBhbmQgXHJpZ2h0c2tpcCBhcyB0aGV5IHdlcmUgb3V0c2lkZSB0aGUgQGRlZi4uLgotICBcZGltZW4yPVxsZWZ0c2tpcAotICBcYWR2YW5jZVxkaW1lbjIgYnkgLVxkZWZib2R5aW5kZW50Ci0gICUKLSAgJSBGaWd1cmUgb3V0IHZhbHVlcyBmb3IgdGhlIHBhcmFncmFwaCBzaGFwZS4KLSAgXHNldGJveDA9XGhib3h7XGhza2lwIFxkZWZsYXN0YXJnbWFyZ2lue1xkZWZuYW1ldHlwZX19JQotICBcZGltZW4wPVxoc2l6ZSBcYWR2YW5jZSBcZGltZW4wIGJ5IC1cd2QwICAlIGNvbXB1dGUgc2l6ZSBmb3IgZmlyc3QgbGluZQotICBcZGltZW4xPVxoc2l6ZSBcYWR2YW5jZSBcZGltZW4xIGJ5IC1cZGVmYXJnc2luZGVudCAgJSBzaXplIGZvciBjb250aW51YXRpb25zCi0gIFxwYXJzaGFwZSAyIDBpbiBcZGltZW4wIFxkZWZhcmdzaW5kZW50IFxkaW1lbjEKLSAgJQotICAlIE91dHB1dCBhcmcgMiAoIkZ1bmN0aW9uIiBvciBzb21lIHN1Y2gpIGJ1dCBzdHVjayBpbnNpZGUgYSBib3ggb2YKLSAgJSB3aWR0aCAwIHNvIGl0IGRvZXMgbm90IGludGVyZmVyZSB3aXRoIGxpbmVicmVha2luZy4KLSAgXG5vaW5kZW50Ci0gICUKLSAgeyUgQWRqdXN0IFxoc2l6ZSB0byBleGNsdWRlIHRoZSBhbWJpZW50IG1hcmdpbnMsCi0gICAlIHNvIHRoYXQgXHJpZ2h0bGluZSB3aWxsIG9iZXkgdGhlbS4KLSAgIFxhZHZhbmNlIFxoc2l6ZSBieSAtXGRpbWVuMgotICAgXGRpbWVuMyA9IDBwdCAgJSB3YXMgLTEuMjVwYwotICAgXHJsYXB7XHJpZ2h0bGluZXtcZGVmbmFtZXR5cGVca2VyblxkaW1lbjN9fSUKLSAgfSUKLSAgJQotICAlIEFsbG93IGFsbCBsaW5lcyB0byBiZSB1bmRlcmZ1bGwgd2l0aG91dCBjb21wbGFpbnQ6Ci0gIFx0b2xlcmFuY2U9MTAwMDAgXGhiYWRuZXNzPTEwMDAwCi0gIFxhZHZhbmNlXGxlZnRza2lwIGJ5IC1cZGVmYm9keWluZGVudAotICBcZXhkZW50YW1vdW50PVxkZWZib2R5aW5kZW50Ci0gIHtcZGYgIzF9XGVuc2tpcCAgICAgICAgJSBvdXRwdXQgZnVuY3Rpb24gbmFtZQotICAlIFxkZWZ1bmFyZ3Mgd2lsbCBiZSBjYWxsZWQgbmV4dCB0byBvdXRwdXQgdGhlIGFyZ3VtZW50cywgaWYgYW55LgotfQotCi0lIENvbW1vbiBwaWVjZXMgdG8gc3RhcnQgYW55IEBkZWYuLi4KLSUgIzEgaXMgdGhlIFxFLi4uIGNvbnRyb2wgc2VxdWVuY2UgdG8gZW5kIHRoZSBkZWZpbml0aW9uICh3aGljaCB3ZSBkZWZpbmUpLgotJSAjMiBpcyB0aGUgXC4uLnggY29udHJvbCBzZXF1ZW5jZSAod2hpY2ggb3VyIGNhbGxlciBkZWZpbmVzKS4KLSUgIzMgaXMgdGhlIGNvbnRyb2wgc2VxdWVuY2UgdG8gcHJvY2VzcyB0aGUgaGVhZGVyLCBzdWNoIGFzIFxkZWZ1bmhlYWRlci4KLSUgCi1cZGVmXHBhcnNlYm9keWNvbW1vbiMxIzIjM3slCi0gIFxiZWdpbmdyb3VwXGluRU5WCi0gICUgSWYgdGhlcmUgYXJlIHR3byBAZGVmIGNvbW1hbmRzIGluIGEgcm93LCB3ZSdsbCBoYXZlIGEgXG5vYnJlYWssCi0gICUgd2hpY2ggaXMgdGhlcmUgdG8ga2VlcCB0aGUgZnVuY3Rpb24gZGVzY3JpcHRpb24gdG9nZXRoZXIgd2l0aCBpdHMKLSAgJSBoZWFkZXIuICBCdXQgaWYgdGhlcmUncyBub3RoaW5nIGJ1dCBoZWFkZXJzLCB3ZSB3YW50IHRvIGFsbG93IGEKLSAgJSBicmVhayBhZnRlciBhbGwuICBDaGVjayBmb3IgcGVuYWx0eSAxMDAwMiAoaW5zZXJ0ZWQgYnkKLSAgJSBcZGVmYXJnc2NvbW1vbmVuZGluZykgaW5zdGVhZCBvZiAxMDAwMCwgc2luY2UgdGhlIHNlY3Rpb25pbmcKLSAgJSBjb21tYW5kcyBpbnNlcnQgYSBccGVuYWx0eTEwMDAwLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBhbGxvdyBhIGJyZWFrCi0gICUgYmV0d2VlbiBhIHNlY3Rpb24gaGVhZGluZyBhbmQgYSBkZWZ1bi4KLSAgXGlmbnVtXGxhc3RwZW5hbHR5PTEwMDAyIFxwZW5hbHR5MCBcZmkKLSAgXG1lZGJyZWFrCi0gICUKLSAgJSBEZWZpbmUgdGhlIFxFLi4uIGVuZCB0b2tlbiB0aGF0IHRoaXMgZGVmaW5pbmcgY29uc3RydWN0IHNwZWNpZmllcwotICAlIHNvIHRoYXQgaXQgd2lsbCBleGl0IHRoaXMgZ3JvdXAuCi0gIFxkZWYjMXtcZW5kZ3JhZlxlbmRncm91cFxtZWRicmVha30lCi0gICUKICAgXHBhcmluZGVudD0waW4KICAgXGFkdmFuY2VcbGVmdHNraXAgYnkgXGRlZmJvZHlpbmRlbnQKICAgXGV4ZGVudGFtb3VudD1cZGVmYm9keWluZGVudAogfQogCi0lIENvbW1vbiBwYXJ0IG9mIHRoZSBcLi4ueCBkZWZpbml0aW9ucy4KLSUgCi1cZGVmXGRlZnhib2R5Y29tbW9ueyUKLSAgJSBBcyB3aXRoIFxwYXJzZWJvZHljb21tb24gYWJvdmUsIGFsbG93IGxpbmUgYnJlYWsgaWYgd2UgaGF2ZSBtdWx0aXBsZQotICAlIHggaGVhZGVycyBpbiBhIHJvdy4gIEl0J3Mgbm90IGEgZ3JlYXQgcGxhY2UsIHRob3VnaC4KLSAgXGlmbnVtXGxhc3RwZW5hbHR5PTEwMDAwIFxwZW5hbHR5MTAwMCBcZmkKK1xkZWZcZG9kZWZ1bngjMXslCisgICUgRmlyc3QsIGNoZWNrIHdoZXRoZXIgd2UgYXJlIGluIHRoZSByaWdodCBlbnZpcm9ubWVudDoKKyAgXGNoZWNrZW52IzElCiAgICUKLSAgXGJlZ2luZ3JvdXBcb2JleWxpbmVzCisgICUgQXMgYWJvdmUsIGFsbG93IGxpbmUgYnJlYWsgaWYgd2UgaGF2ZSBtdWx0aXBsZSB4IGhlYWRlcnMgaW4gYSByb3cuCisgICUgSXQncyBub3QgYSBncmVhdCBwbGFjZSwgdGhvdWdoLgorICBcaWZudW1cbGFzdHBlbmFsdHk9MTAwMDIgXHBlbmFsdHkzMDAwIFxmaQorICAlCisgICUgQW5kIG5vdywgaXQncyB0aW1lIHRvIHJldXNlIHRoZSBib2R5IG9mIHRoZSBvcmlnaW5hbCBkZWZ1bjoKKyAgXGV4cGFuZGFmdGVyXGdvYmJsZWRlZnVuIzElCiB9CitcZGVmXGdvYmJsZWRlZnVuIzFcc3RhcnRkZWZ1bnt9CiAKLSUgUHJvY2VzcyBib2R5IG9mIEBkZWZ1biwgQGRlZmZuLCBAZGVmbWFjLCBldGMuCislIFxwcmludGRlZnVubGluZSBcZGVmZm5oZWFkZXJ7dGV4dH0KICUKLVxkZWZcZGVmcGFyc2Vib2R5IzEjMiMzeyUKLSAgXHBhcnNlYm9keWNvbW1vbnsjMX17IzJ9eyMzfSUKLSAgXGRlZiMye1xkZWZ4Ym9keWNvbW1vbiBcYWN0aXZlcGFyZW5zIFxzcGFjZXNwbGl0IzN9JQotICBcY2F0Y29kZVxlcXVhbENoYXI9XGFjdGl2ZQotICBcYmVnaW5ncm91cFxvYmV5bGluZXNcYWN0aXZlcGFyZW5zCi0gIFxzcGFjZXNwbGl0IzMlCitcZGVmXHByaW50ZGVmdW5saW5lIzEjMnslCisgIFxiZWdpbmdyb3VwCisgICAgJSBjYWxsIFxkZWZmbmhlYWRlcjoKKyAgICAjMSMyIFxlbmRoZWFkZXIKKyAgICAlIGNvbW1vbiBlbmRpbmc6CisgICAgXGludGVybGluZXBlbmFsdHkgPSAxMDAwMAorICAgIFxhZHZhbmNlXHJpZ2h0c2tpcCBieSAwcHQgcGx1cyAxZmlsCisgICAgXGVuZGdyYWYKKyAgICBcbm9icmVha1x2c2tpcCAtXHBhcnNraXAKKyAgICBccGVuYWx0eSAxMDAwMiAgJSBzaWduYWwgdG8gXHN0YXJ0ZGVmdW4gYW5kIFxkb2RlZnVueAorICAgICUgU29tZSBvZiB0aGUgQGRlZnVuLXR5cGUgdGFncyBkbyBub3QgZW5hYmxlIG1hZ2ljIHBhcmVudGhlc2VzLAorICAgICUgcmVuZGVyaW5nIHRoZSBmb2xsb3dpbmcgY2hlY2sgcmVkdW5kYW50LiAgQnV0IHdlIGRvbid0IG9wdGltaXplLgorICAgIFxjaGVja3BhcmVuY291bnRzCisgIFxlbmRncm91cAogfQogCi0lICMxLCAjMiwgIzMgYXJlIHRoZSBjb21tb24gYXJndW1lbnRzIChzZWUgXHBhcnNlYm9keWNvbW1vbiBhYm92ZSkuCi0lICM0LCBkZWxpbWl0ZWQgYnkgdGhlIHNwYWNlLCBpcyB0aGUgY2xhc3MgbmFtZS4KK1xkZWZcRWRlZnVue1xlbmRncmFmXG1lZGJyZWFrfQorCislIFxtYWtlZGVmdW57ZGVmZm59IGNyZWF0ZXMgXGRlZmZuLCBcZGVmZm54IGFuZCBcRWRlZmZuOworJSB0aGUgb25seSB0aGluZyByZW1haW5uaWcgaXMgdG8gZGVmaW5lIFxkZWZmbmhlYWRlci4KICUKLVxkZWZcZGVmbWV0aHBhcnNlYm9keSMxIzIjMyM0IHslCi0gIFxwYXJzZWJvZHljb21tb257IzF9eyMyfXsjM30lCi0gIFxkZWYjMiMjMSB7XGRlZnhib2R5Y29tbW9uIFxhY3RpdmVwYXJlbnMgXHNwYWNlc3BsaXR7IzN7IyMxfX19JQotICBcYmVnaW5ncm91cFxvYmV5bGluZXNcYWN0aXZlcGFyZW5zCi0gICUgVGhlIFxlbXB0eSBoZXJlIHByZXZlbnRzIG1pc2ludGVycHJldGF0aW9uIG9mIGEgY29uc3RydWN0IHN1Y2ggYXMKLSAgJSAgIEBkZWZmbiB7d2hhdGV2ZXJ9IHtFbmhhcm1vbmljIGNvbW1hfQotICAlIFNlZSBjb21tZW50cyBhdCBcZGVmdHBwYXJzZWJvZHksIGFsdGhvdWdoIGluIG91ciBjYXNlIHdlIGRvbid0IGhhdmUKLSAgJSB0byByZW1vdmUgdGhlIFxlbXB0eSBhZnRlcndhcmRzLCBzaW5jZSBpdCBpcyBlbXB0eS4KLSAgXHNwYWNlc3BsaXR7IzN7IzR9fVxlbXB0eQorXGRlZlxtYWtlZGVmdW4jMXslCisgIFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIEUjMVxlbmRjc25hbWUgPSBcRWRlZnVuCisgIFxlZGVmXHRlbXB7XG5vZXhwYW5kXGRvbWFrZWRlZnVuCisgICAgXG1ha2Vjc25hbWV7IzF9XG1ha2Vjc25hbWV7IzF4fVxtYWtlY3NuYW1leyMxaGVhZGVyfX0lCisgIFx0ZW1wCiB9CiAKLSUgVXNlZCBmb3IgQGRlZnR5cGVtZXRob2QgYW5kIEBkZWZ0eXBlaXZhci4KLSUgIzEsICMyLCAjMyBhcmUgdGhlIGNvbW1vbiBhcmd1bWVudHMgKHNlZSBcZGVmcGFyc2Vib2R5KS4KLSUgIzQsIGRlbGltaXRlZCBieSBhIHNwYWNlLCBpcyB0aGUgY2xhc3MgbmFtZS4KLSUgIzUgaXMgdGhlIG1ldGhvZCdzIHJldHVybiB0eXBlLgorJSBcZG9tYWtlZGVmdW4gXGRlZmZuIFxkZWZmbnggXGRlZmZuaGVhZGVyCiAlCi1cZGVmXGRlZnR5cGVtZXRocGFyc2Vib2R5IzEjMiMzIzQgIzUgeyUKLSAgXHBhcnNlYm9keWNvbW1vbnsjMX17IzJ9eyMzfSUKLSAgXGRlZiMyIyMxICMjMiB7XGRlZnhib2R5Y29tbW9uIFxhY3RpdmVwYXJlbnMgXHNwYWNlc3BsaXR7IzN7IyMxfXsjIzJ9fX0lCi0gIFxiZWdpbmdyb3VwXG9iZXlsaW5lc1xhY3RpdmVwYXJlbnMKLSAgXHNwYWNlc3BsaXR7IzN7IzR9eyM1fX0lCislIERlZmluZSBcZGVmZm4gYW5kIFxkZWZmbngsIHdpdGhvdXQgcGFyYW1ldGVycy4KKyUgXGRlZmZuaGVhZGVyIGhhcyB0byBiZSBkZWZpbmVkIGV4cGxpY2l0bHkuCislCitcZGVmXGRvbWFrZWRlZnVuIzEjMiMzeyUKKyAgXGVudmRlZiMxeyUKKyAgICBcc3RhcnRkZWZ1bgorICAgIFxwYXJzZWFyZ3VzaW5nXGFjdGl2ZXBhcmVuc3tccHJpbnRkZWZ1bmxpbmUjM30lCisgIH0lCisgIFxkZWYjMntcZG9kZWZ1bngjMX0lCisgIFxkZWYjMyUKIH0KIAotJSBVc2VkIGZvciBAZGVmdHlwZW9wLiAgVGhlIGNoYW5nZSBmcm9tIFxkZWZ0eXBlbWV0aHBhcnNlYm9keSBpcyBhbgotJSBleHRyYSBhcmd1bWVudCBhdCB0aGUgYmVnaW5uaW5nIHdoaWNoIGlzIHRoZSBgY2F0ZWdvcnknLCBpbnN0ZWFkIG9mIGl0Ci0lIGJlaW5nIHRoZSBoYXJkd2lyZWQgc3RyaW5nIGBNZXRob2QnIG9yIGBJbnN0YW5jZSBWYXJpYWJsZScuICBXZSBoYXZlCi0lIHRvIGFjY291bnQgZm9yIHRoaXMgYm90aCBpbiB0aGUgXC4uLnggZGVmaW5pdGlvbiBhbmQgaW4gcGFyc2luZyB0aGUKLSUgaW5wdXQgYXQgaGFuZC4gIFRodXMgYWxzbyBuZWVkIGEgY29udHJvbCBzZXF1ZW5jZSAocGFzc2VkIGFzICM1KSBmb3IKLSUgdGhlIFxFLi4uIGRlZmluaXRpb24gdG8gYXNzaWduIHRoZSBjYXRlZ29yeSBuYW1lIHRvLgorJSUlIFVudHlwZWQgZnVuY3Rpb25zOgorCislIEBkZWZmbiBjYXRlZ29yeSBuYW1lIGFyZ3MKK1xtYWtlZGVmdW57ZGVmZm59e1xkZWZmbmdlbmVyYWx7fX0KKworJSBAZGVmZm4gY2F0ZWdvcnkgY2xhc3MgbmFtZSBhcmdzCitcbWFrZWRlZnVue2RlZm9wfSMxIHtcZGVmb3BvbnsjMVwgXHB1dHdvcmRvbn19CisKKyUgXGRlZm9wb24ge2NhdGVnb3J5IG9ufWNsYXNzIG5hbWUgYXJncworXGRlZlxkZWZvcG9uIzEjMiB7XGRlZmZuZ2VuZXJhbHtccHV0d29yZG9uXCBcY29kZXsjMn19eyMxXCBcY29kZXsjMn19IH0KKworJSBcZGVmZm5nZW5lcmFsIHtzdWJpbmR9Y2F0ZWdvcnkgbmFtZSBhcmdzCislCitcZGVmXGRlZmZuZ2VuZXJhbCMxIzIgIzMgIzRcZW5kaGVhZGVyeyUKKyAgJSBSZW1lbWJlciB0aGF0IFxkb3N1YmluZHtmbn17Zm9vfXt9IGlzIGVxdWl2YWxlbnQgdG8gXGRvaW5ke2ZufXtmb299LgorICBcZG9zdWJpbmR7Zm59e1xjb2RleyMzfX17IzF9JQorICBcZGVmbmFtZXsjMn17fXsjM31cbWFnaWNhbXBcZGVmdW5hcmdzeyM0XHVuc2tpcH0lCit9CisKKyUlJSBUeXBlZCBmdW5jdGlvbnM6CisKKyUgQGRlZnR5cGVmbiBjYXRlZ29yeSB0eXBlIG5hbWUgYXJncworXG1ha2VkZWZ1bntkZWZ0eXBlZm59e1xkZWZ0eXBlZm5nZW5lcmFse319CisKKyUgQGRlZnR5cGVvcCBjYXRlZ29yeSBjbGFzcyB0eXBlIG5hbWUgYXJncworXG1ha2VkZWZ1bntkZWZ0eXBlb3B9IzEge1xkZWZ0eXBlb3BvbnsjMVwgXHB1dHdvcmRvbn19CisKKyUgXGRlZnR5cGVvcG9uIHtjYXRlZ29yeSBvbn1jbGFzcyB0eXBlIG5hbWUgYXJncworXGRlZlxkZWZ0eXBlb3BvbiMxIzIge1xkZWZ0eXBlZm5nZW5lcmFse1xwdXR3b3Jkb25cIFxjb2RleyMyfX17IzFcIFxjb2RleyMyfX0gfQorCislIFxkZWZ0eXBlZm5nZW5lcmFsIHtzdWJpbmR9Y2F0ZWdvcnkgdHlwZSBuYW1lIGFyZ3MKKyUKK1xkZWZcZGVmdHlwZWZuZ2VuZXJhbCMxIzIgIzMgIzQgIzVcZW5kaGVhZGVyeyUKKyAgXGRvc3ViaW5ke2ZufXtcY29kZXsjNH19eyMxfSUKKyAgXGRlZm5hbWV7IzJ9eyMzfXsjNH1cZGVmdW5hcmdzeyM1XHVuc2tpcH0lCit9CisKKyUlJSBUeXBlZCB2YXJpYWJsZXM6CisKKyUgQGRlZnR5cGV2ciBjYXRlZ29yeSB0eXBlIHZhciBhcmdzCitcbWFrZWRlZnVue2RlZnR5cGV2cn17XGRlZnR5cGVjdmdlbmVyYWx7fX0KKworJSBAZGVmdHlwZWN2IGNhdGVnb3J5IGNsYXNzIHR5cGUgdmFyIGFyZ3MKK1xtYWtlZGVmdW57ZGVmdHlwZWN2fSMxIHtcZGVmdHlwZWN2b2Z7IzFcIFxwdXR3b3Jkb2Z9fQorCislIFxkZWZ0eXBlY3ZvZiB7Y2F0ZWdvcnkgb2Z9Y2xhc3MgdHlwZSB2YXIgYXJncworXGRlZlxkZWZ0eXBlY3ZvZiMxIzIge1xkZWZ0eXBlY3ZnZW5lcmFse1xwdXR3b3Jkb2ZcIFxjb2RleyMyfX17IzFcIFxjb2RleyMyfX0gfQorCislIFxkZWZ0eXBlY3ZnZW5lcmFsIHtzdWJpbmR9Y2F0ZWdvcnkgdHlwZSB2YXIgYXJncworJQorXGRlZlxkZWZ0eXBlY3ZnZW5lcmFsIzEjMiAjMyAjNCAjNVxlbmRoZWFkZXJ7JQorICBcZG9zdWJpbmR7dnJ9e1xjb2RleyM0fX17IzF9JQorICBcZGVmbmFtZXsjMn17IzN9eyM0fVxkZWZ1bmFyZ3N7IzVcdW5za2lwfSUKK30KKworJSUlIFVudHlwZWQgdmFyaWFibGVzOgorCislIEBkZWZ2ciBjYXRlZ29yeSB2YXIgYXJncworXG1ha2VkZWZ1bntkZWZ2cn0jMSB7XGRlZnR5cGV2cmhlYWRlcnsjMX0ge30gfQorCislIEBkZWZjdiBjYXRlZ29yeSBjbGFzcyB2YXIgYXJncworXG1ha2VkZWZ1bntkZWZjdn0jMSB7XGRlZmN2b2Z7IzFcIFxwdXR3b3Jkb2Z9fQorCislIFxkZWZjdm9mIHtjYXRlZ29yeSBvZn1jbGFzcyB2YXIgYXJncworXGRlZlxkZWZjdm9mIzEjMiB7XGRlZnR5cGVjdm9meyMxfSMyIHt9IH0KKworJSUlIFR5cGU6CislIEBkZWZ0cCBjYXRlZ29yeSBuYW1lIGFyZ3MKK1xtYWtlZGVmdW57ZGVmdHB9IzEgIzIgIzNcZW5kaGVhZGVyeyUKKyAgXGRvaW5ke3RwfXtcY29kZXsjMn19JQorICBcZGVmbmFtZXsjMX17fXsjMn1cZGVmdW5hcmdzeyMzXHVuc2tpcH0lCit9CisKKyUgUmVtYWluaW5nIEBkZWZ1bi1saWtlIHNob3J0Y3V0czoKK1xtYWtlZGVmdW57ZGVmdW59e1xkZWZmbmhlYWRlcntccHV0d29yZERlZmZ1bmN9IH0KK1xtYWtlZGVmdW57ZGVmbWFjfXtcZGVmZm5oZWFkZXJ7XHB1dHdvcmREZWZtYWN9IH0KK1xtYWtlZGVmdW57ZGVmc3BlY317XGRlZmZuaGVhZGVye1xwdXR3b3JkRGVmc3BlY30gfQorXG1ha2VkZWZ1bntkZWZ0eXBlZnVufXtcZGVmdHlwZWZuaGVhZGVye1xwdXR3b3JkRGVmZnVuY30gfQorXG1ha2VkZWZ1bntkZWZ2YXJ9e1xkZWZ2cmhlYWRlcntccHV0d29yZERlZnZhcn0gfQorXG1ha2VkZWZ1bntkZWZvcHR9e1xkZWZ2cmhlYWRlcntccHV0d29yZERlZm9wdH0gfQorXG1ha2VkZWZ1bntkZWZ0eXBldmFyfXtcZGVmdHlwZXZyaGVhZGVye1xwdXR3b3JkRGVmdmFyfSB9CitcbWFrZWRlZnVue2RlZm1ldGhvZH17XGRlZm9wb25ccHV0d29yZE1ldGhvZG9ufQorXG1ha2VkZWZ1bntkZWZ0eXBlbWV0aG9kfXtcZGVmdHlwZW9wb25ccHV0d29yZE1ldGhvZG9ufQorXG1ha2VkZWZ1bntkZWZpdmFyfXtcZGVmY3ZvZlxwdXR3b3JkSW5zdGFuY2VWYXJpYWJsZW9mfQorXG1ha2VkZWZ1bntkZWZ0eXBlaXZhcn17XGRlZnR5cGVjdm9mXHB1dHdvcmRJbnN0YW5jZVZhcmlhYmxlb2Z9CisKKyUgXGRlZm5hbWUsIHdoaWNoIGZvcm1hdHMgdGhlIG5hbWUgb2YgdGhlIEBkZWYgKG5vdCB0aGUgYXJncykuCislICMxIGlzIHRoZSBjYXRlZ29yeSwgc3VjaCBhcyAiRnVuY3Rpb24iLgorJSAjMiBpcyB0aGUgcmV0dXJuIHR5cGUsIGlmIGFueS4KKyUgIzMgaXMgdGhlIGZ1bmN0aW9uIG5hbWUuCiAlIAotXGRlZlxkZWZ0eXBlb3BwYXJzZWJvZHkjMSMyIzMjNCM1ICM2IHslCi0gIFxwYXJzZWJvZHljb21tb257IzF9eyMyfXsjM30lCi0gIFxkZWYjMiMjMSAjIzIgIyMzIHtcZGVmIzR7IyMxfSUKLSAgICBcZGVmeGJvZHljb21tb24gXGFjdGl2ZXBhcmVucyBcc3BhY2VzcGxpdHsjM3sjIzJ9eyMjM319fSUKLSAgXGJlZ2luZ3JvdXBcb2JleWxpbmVzXGFjdGl2ZXBhcmVucwotICBcc3BhY2VzcGxpdHsjM3sjNX17IzZ9fSUKLX0KLQotJSBGb3IgQGRlZm9wLgotXGRlZlxkZWZvcHBhcnNlYm9keSAjMSMyIzMjNCM1IHslCi0gIFxwYXJzZWJvZHljb21tb257IzF9eyMyfXsjM30lCi0gIFxkZWYjMiMjMSAjIzIge1xkZWYjNHsjIzF9JQotICAgIFxkZWZ4Ym9keWNvbW1vbiBcYWN0aXZlcGFyZW5zIFxzcGFjZXNwbGl0eyMzeyMjMn19fSUKLSAgXGJlZ2luZ3JvdXBcb2JleWxpbmVzXGFjdGl2ZXBhcmVucwotICBcc3BhY2VzcGxpdHsjM3sjNX19JQotfQotCi0lIFRoZXNlIHBhcnNpbmcgZnVuY3Rpb25zIGFyZSBzaW1pbGFyIHRvIHRoZSBwcmVjZWRpbmcgb25lcwotJSBleGNlcHQgdGhhdCB0aGV5IGRvIG5vdCBtYWtlIHBhcmVucyBpbnRvIGFjdGl2ZSBjaGFyYWN0ZXJzLgotJSBUaGVzZSBhcmUgdXNlZCBmb3IgInZhcmlhYmxlcyIgc2luY2UgdGhleSBoYXZlIG5vIGFyZ3VtZW50cy4KKyUgV2UgYXJlIGZvbGxvd2VkIGJ5IChidXQgbm90IHBhc3NlZCkgdGhlIGFyZ3VtZW50cywgaWYgYW55LgogJQotXGRlZlxkZWZ2YXJwYXJzZWJvZHkgIzEjMiMzeyUKLSAgXHBhcnNlYm9keWNvbW1vbnsjMX17IzJ9eyMzfSUKLSAgXGRlZiMye1xkZWZ4Ym9keWNvbW1vbiBcc3BhY2VzcGxpdCMzfSUKLSAgXGNhdGNvZGVcZXF1YWxDaGFyPVxhY3RpdmUKLSAgXGJlZ2luZ3JvdXBcb2JleWxpbmVzCi0gIFxzcGFjZXNwbGl0IzMlCitcZGVmXGRlZm5hbWUjMSMyIzN7JQorICAlIEdldCB0aGUgdmFsdWVzIG9mIFxsZWZ0c2tpcCBhbmQgXHJpZ2h0c2tpcCBhcyB0aGV5IHdlcmUgb3V0c2lkZSB0aGUgQGRlZi4uLgorICBcYWR2YW5jZVxsZWZ0c2tpcCBieSAtXGRlZmJvZHlpbmRlbnQKKyAgJQorICAlIEhvdyB3ZSdsbCBmb3JtYXQgdGhlIHR5cGUgbmFtZS4gIFB1dHRpbmcgaXQgaW4gYnJhY2tldHMgaGVscHMKKyAgJSBkaXN0aW5ndWlzaCBpdCBmcm9tIHRoZSBib2R5IHRleHQgdGhhdCBtYXkgZW5kIHVwIG9uIHRoZSBuZXh0IGxpbmUKKyAgJSBqdXN0IGJlbG93IGl0LgorICBcZGVmXHRlbXB7IzF9JQorICBcc2V0Ym94MD1caGJveHtca2VyblxkZWZsYXN0YXJnbWFyZ2luIFxpZnhcdGVtcFxlbXB0eVxlbHNlIFtccm1cdGVtcF1cZml9CisgICUKKyAgJSBGaWd1cmUgb3V0IGxpbmUgc2l6ZXMgZm9yIHRoZSBwYXJhZ3JhcGggc2hhcGUuCisgICUgVGhlIGZpcnN0IGxpbmUgbmVlZHMgc3BhY2UgZm9yIFxib3gwOyBidXQgaWYgXHJpZ2h0c2tpcCBpcyBub256ZXJvLAorICAlIHdlIG5lZWQgb25seSBzcGFjZSBmb3IgdGhlIHBhcnQgb2YgXGJveDAgd2hpY2ggZXhjZWVkcyBpdDoKKyAgXGRpbWVuMD1caHNpemUgIFxhZHZhbmNlXGRpbWVuMCBieSAtXHdkMCAgXGFkdmFuY2VcZGltZW4wIGJ5IFxyaWdodHNraXAKKyAgJSBUaGUgY29udGludWF0aW9uczoKKyAgXGRpbWVuMj1caHNpemUgIFxhZHZhbmNlXGRpbWVuMiBieSAtXGRlZmFyZ3NpbmRlbnQKKyAgJSAocGxhaW4udGV4IHNheXMgdGhhdCBcZGltZW4xIHNob3VsZCBiZSB1c2VkIG9ubHkgYXMgZ2xvYmFsLikKKyAgXHBhcnNoYXBlIDIgMGluIFxkaW1lbjAgXGRlZmFyZ3NpbmRlbnQgXGRpbWVuMgorICAlCisgICUgUHV0IHRoZSB0eXBlIG5hbWUgdG8gdGhlIHJpZ2h0IG1hcmdpbi4KKyAgXG5vaW5kZW50CisgIFxoYm94IHRvIDBwdHslCisgICAgXGhmaWxcYm94MCBca2Vybi1caHNpemUKKyAgICAlIFxoc2l6ZSBoYXMgdG8gYmUgc2hvcnRlbmVkIHRoaXMgd2F5OgorICAgIFxrZXJuXGxlZnRza2lwCisgICAgJSBJbnRlbnRpb25hbGx5IGRvIG5vdCByZXNwZWN0IFxyaWdodHNraXAsIHNpbmNlIHdlIG5lZWQgdGhlIHNwYWNlLgorICB9JQorICAlCisgICUgQWxsb3cgYWxsIGxpbmVzIHRvIGJlIHVuZGVyZnVsbCB3aXRob3V0IGNvbXBsYWludDoKKyAgXHRvbGVyYW5jZT0xMDAwMCBcaGJhZG5lc3M9MTAwMDAKKyAgXGV4ZGVudGFtb3VudD1cZGVmYm9keWluZGVudAorICB7JQorICAgICUgZGVmdW4gZm9udHMuIFdlIHVzZSB0eXBld3JpdGVyIGJ5IGRlZmF1bHQgKHVzZWQgdG8gYmUgYm9sZCkgYmVjYXVzZToKKyAgICAlIC4gd2UncmUgcHJpbnRpbmcgaWRlbnRpZmllcnMsIHRoZXkgc2hvdWxkIGJlIGluIHR0IGluIHByaW5jaXBsZS4KKyAgICAlIC4gaW4gbGFuZ3VhZ2VzIHdpdGggbWFueSBhY2NlbnRzLCBzdWNoIGFzIEN6ZWNoIG9yIEZyZW5jaCwgaXQncworICAgICUgICBjb21tb24gdG8gbGVhdmUgYWNjZW50cyBvZmYgaWRlbnRpZmllcnMuICBUaGUgcmVzdWx0IGxvb2tzIG9rIGluCisgICAgJSAgIHR0LCBidXQgZXhjZWVkaW5nbHkgc3RyYW5nZSBpbiBybS4KKyAgICAlIC4gd2UgZG9uJ3Qgd2FudCAtLSBhbmQgLS0tIHRvIGJlIHRyZWF0ZWQgYXMgbGlnYXR1cmVzLgorICAgICUgLiB0aGlzIHN0aWxsIGRvZXMgbm90IGZpeCB0aGUgP2AgYW5kICFgIGxpZ2F0dXJlcywgYnV0IHNvIGZhciBubworICAgICUgICBvbmUgaGFzIG1hZGUgaWRlbnRpZmllcnMgdXNpbmcgdGhlbSA6KS4KKyAgICBcZGYgXHR0CisgICAgXGRlZlx0ZW1weyMyfSUgcmV0dXJuIHZhbHVlIHR5cGUKKyAgICBcaWZ4XHRlbXBcZW1wdHlcZWxzZSBcdGNsb3Nle1x0ZW1wfSBcZmkKKyAgICAjMyUgb3V0cHV0IGZ1bmN0aW9uIG5hbWUKKyAgfSUKKyAge1xybVxlbnNraXB9JSBoc2tpcCAwLjUgZW0gb2YgXHRlbnJtCisgICUKKyAgXGJvbGRicmF4CisgICUgYXJndW1lbnRzIHdpbGwgYmUgb3V0cHV0IG5leHQsIGlmIGFueS4KIH0KIAotJSBAZGVmb3B2YXIuCi1cZGVmXGRlZm9wdmFycGFyc2Vib2R5ICMxIzIjMyM0IzUgeyUKLSAgXHBhcnNlYm9keWNvbW1vbnsjMX17IzJ9eyMzfSUKLSAgXGRlZiMyIyMxICMjMiB7XGRlZiM0eyMjMX0lCi0gICAgXGRlZnhib2R5Y29tbW9uIFxzcGFjZXNwbGl0eyMzeyMjMn19fSUKLSAgXGJlZ2luZ3JvdXBcb2JleWxpbmVzCi0gIFxzcGFjZXNwbGl0eyMzeyM1fX0lCi19Ci0KLVxkZWZcZGVmdnJwYXJzZWJvZHkjMSMyIzMjNCB7JQotICBccGFyc2Vib2R5Y29tbW9ueyMxfXsjMn17IzN9JQotICBcZGVmIzIjIzEge1xkZWZ4Ym9keWNvbW1vbiBcc3BhY2VzcGxpdHsjM3sjIzF9fX0lCi0gIFxiZWdpbmdyb3VwXG9iZXlsaW5lcwotICBcc3BhY2VzcGxpdHsjM3sjNH19JQotfQotCi0lIFRoaXMgbG9zZXMgb24gYEBkZWZ0cCB7RGF0YSBUeXBlfSB7c3RydWN0IHRlcm1pb3N9JyAtLSBpdCB0aGlua3MgdGhlCi0lIHR5cGUgaXMganVzdCBgc3RydWN0JywgYmVjYXVzZSB3ZSBsb3NlIHRoZSBicmFjZXMgaW4gYHtzdHJ1Y3QKLSUgdGVybWlvc30nIHdoZW4gXHNwYWNlc3BsaXQgcmVhZHMgaXRzIHVuZGVsaW1pdGVkIGFyZ3VtZW50LiAgU2lnaC4KLSUgXGxldFxkZWZ0cHBhcnNlYm9keT1cZGVmdnJwYXJzZWJvZHkKLSUKLSUgU28sIHRvIGdldCBhcm91bmQgdGhpcywgd2UgcHV0IFxlbXB0eSBpbiB3aXRoIHRoZSB0eXBlIG5hbWUuICBUaGF0Ci0lIHdheSwgVGVYIHdvbid0IGZpbmQgZXhhY3RseSBgey4uLn0nIGFzIGFuIHVuZGVsaW1pdGVkIGFyZ3VtZW50LCBhbmQKLSUgd29uJ3Qgc3RyaXAgb2ZmIHRoZSBicmFjZXMuCi0lCi1cZGVmXGRlZnRwcGFyc2Vib2R5ICMxIzIjMyM0IHslCi0gIFxwYXJzZWJvZHljb21tb257IzF9eyMyfXsjM30lCi0gIFxkZWYjMiMjMSB7XGRlZnhib2R5Y29tbW9uIFxzcGFjZXNwbGl0eyMzeyMjMX19fSUKLSAgXGJlZ2luZ3JvdXBcb2JleWxpbmVzCi0gIFxzcGFjZXNwbGl0e1xwYXJzZXRwaGVhZGVybGluZXsjM3sjNH19fVxlbXB0eQotfQotCi0lIEZpbmUsIGJ1dCB0aGVuIHdlIGhhdmUgdG8gZXZlbnR1YWxseSByZW1vdmUgdGhlIFxlbXB0eSAqYW5kKiB0aGUKLSUgYnJhY2VzIChpZiBhbnkpLiAgVGhhdCdzIHdoYXQgdGhpcyBkb2VzLgotJQotXGRlZlxyZW1vdmVlbXB0eWJyYWNlc1xlbXB0eSMxXHJlbGF4eyMxfQotCi0lIEFmdGVyIFxzcGFjZXNwbGl0IGhhcyBkb25lIGl0cyB3b3JrLCB0aGlzIGlzIGNhbGxlZCAtLSAjMSBpcyB0aGUgZmluYWwKLSUgdGhpbmcgdG8gY2FsbCwgIzIgdGhlIHR5cGUgbmFtZSAod2hpY2ggc3RhcnRzIHdpdGggXGVtcHR5KSwgYW5kICMzCi0lICh3aGljaCBtaWdodCBiZSBlbXB0eSkgdGhlIGFyZ3VtZW50cy4KLSUKLVxkZWZccGFyc2V0cGhlYWRlcmxpbmUjMSMyIzN7JQotICAjMXtccmVtb3ZlZW1wdHlicmFjZXMjMlxyZWxheH17IzN9JQotfSUKLQotJSBTcGxpdCB1cCAjMiAodGhlIHJlc3Qgb2YgdGhlIGlucHV0IGxpbmUpIGF0IHRoZSBmaXJzdCBzcGFjZSB0b2tlbi4KLSUgY2FsbCAjMSB3aXRoIHR3byBhcmd1bWVudHM6Ci0lICB0aGUgZmlyc3QgaXMgYWxsIG9mICMyIGJlZm9yZSB0aGUgc3BhY2UgdG9rZW4sCi0lICB0aGUgc2Vjb25kIGlzIGFsbCBvZiAjMiBhZnRlciB0aGF0IHNwYWNlIHRva2VuLgotJSBJZiAjMiBjb250YWlucyBubyBzcGFjZSB0b2tlbiwgYWxsIG9mIGl0IGlzIHBhc3NlZCBhcyB0aGUgZmlyc3QgYXJnCi0lIGFuZCB0aGUgc2Vjb25kIGlzIHBhc3NlZCBhcyBlbXB0eS4KLSUKLXtcb2JleWxpbmVzICUKLSBcZ2RlZlxzcGFjZXNwbGl0IzEjMl5eTXtcZW5kZ3JvdXBcc3BhY2VzcGxpdHh7IzF9IzIgXHJlbGF4XHNwYWNlc3BsaXR4fSUKLSBcbG9uZ1xnZGVmXHNwYWNlc3BsaXR4IzEjMiAjMyM0XHNwYWNlc3BsaXR4eyUKLSAgIFxpZnhccmVsYXggIzMlCi0gICAgICMxeyMyfXt9JQotICAgXGVsc2UgJQotICAgICAjMXsjMn17IzMjNH0lCi0gICBcZml9JQotfQotCi0lIERlZmluZSBAZGVmdW4uCi0KLSUgVGhpcyBpcyBjYWxsZWQgdG8gZW5kIHRoZSBhcmd1bWVudHMgcHJvY2Vzc2luZyBmb3IgYWxsIHRoZSBAZGVmLi4uIGNvbW1hbmRzLgotJQotXGRlZlxkZWZhcmdzY29tbW9uZW5kaW5neyUKLSAgXGludGVybGluZXBlbmFsdHkgPSAxMDAwMAotICBcYWR2YW5jZVxyaWdodHNraXAgYnkgMHB0IHBsdXMgMWZpbAotICBcZW5kZ3JhZgotICBcbm9icmVha1x2c2tpcCAtXHBhcnNraXAKLSAgXHBlbmFsdHkgMTAwMDIgICUgc2lnbmFsIHRvIFxwYXJzZWJvZHljb21tb24uCi19Ci0KLSUgVGhpcyBleHBhbmRzIHRoZSBhcmdzIGFuZCB0ZXJtaW5hdGVzIHRoZSBwYXJhZ3JhcGggdGhleSBjb21wcmlzZS4KKyUgUHJpbnQgYXJndW1lbnRzIGluIHNsYW50ZWQgcm9tYW4gKG5vdCB0dHNsKSwgaW5jb25zaXN0ZW50bHkgd2l0aCB1c2luZworJSB0dCBmb3IgdGhlIG5hbWUuICBUaGlzIGlzIGJlY2F1c2UgbGl0ZXJhbCB0ZXh0IGlzIHNvbWV0aW1lcyBuZWVkZWQgaW4KKyUgdGhlIGFyZ3VtZW50IGxpc3QgKGdyb2ZmIG1hbnVhbCksIGFuZCB0dHNsIGFuZCB0dCBhcmUgbm90IHZlcnkKKyUgZGlzdGluZ3Vpc2hhYmxlLiAgUHJldmVudCBoeXBoZW5hdGlvbiBhdCBgLScgY2hhcnMuCiAlIAotXGRlZlxkZWZ1bmFyZ3MjMXtcZnVuY3Rpb25wYXJlbnMgXHNsCi0lIEV4cGFuZCwgcHJldmVudGluZyBoeXBoZW5hdGlvbiBhdCBgLScgY2hhcnMuCi0lIE5vdGUgdGhhdCBncm91cHMgZG9uJ3QgYWZmZWN0IGNoYW5nZXMgaW4gXGh5cGhlbmNoYXIuCi0lIFNldCB0aGUgZm9udCB0ZW1wb3JhcmlseSBhbmQgdXNlIFxmb250IGluIGNhc2UgXHNldGZvbnQgbWFkZSBcdGVuc2wgYSBtYWNyby4KLXtcdGVuc2xcaHlwaGVuY2hhclxmb250PTB9JQotIzElCi17XHRlbnNsXGh5cGhlbmNoYXJcZm9udD00NX0lCi1caWZudW1ccGFyZW5jb3VudD0wIFxlbHNlIFxlcnJtZXNzYWdle1VuYmFsYW5jZWQgcGFyZW50aGVzZXMgaW4gQGRlZn1cZmklCi0gIFxkZWZhcmdzY29tbW9uZW5kaW5nCitcZGVmXGRlZnVuYXJncyMxeyUKKyAgJSB1c2Ugc2wgYnkgZGVmYXVsdCAobm90IHR0c2wpLCAKKyAgJSB0dCBmb3IgdGhlIG5hbWVzLgorICBcZGYgXHNsIFxoeXBoZW5jaGFyXGZvbnQ9MAorICAlCisgICUgT24gdGhlIG90aGVyIGhhbmQsIGlmIGFuIGFyZ3VtZW50IGhhcyB0d28gZGFzaGVzIChmb3IgaW5zdGFuY2UpLCB3ZQorICAlIHdhbnQgYSB3YXkgdG8gZ2V0IHR0c2wuICBMZXQncyB0cnkgQHZhciBmb3IgdGhhdC4KKyAgXGxldFx2YXI9XHR0c2xhbnRlZAorICAjMSUKKyAgXHNsXGh5cGhlbmNoYXJcZm9udD00NQogfQogCi1cZGVmXGRlZnR5cGVmdW5hcmdzICMxeyUKLSUgRXhwYW5kLCBwcmV2ZW50aW5nIGh5cGhlbmF0aW9uIGF0IGAtJyBjaGFycy4KLSUgTm90ZSB0aGF0IGdyb3VwcyBkb24ndCBhZmZlY3QgY2hhbmdlcyBpbiBcaHlwaGVuY2hhci4KLSUgVXNlIFxib2xkYnJheG5vYW1wLCBub3QgXGZ1bmN0aW9ucGFyZW5zLCBzbyB0aGF0ICYgaXMgbm90IHNwZWNpYWwuCi1cYm9sZGJyYXhub2FtcAotXHRjbG9zZXsjMX0lIGF2b2lkIFxjb2RlIGJlY2F1c2Ugb2Ygc2lkZSBlZmZlY3RzIG9uIGFjdGl2ZSBjaGFycwotICBcZGVmYXJnc2NvbW1vbmVuZGluZwotfQotCi0lIERvIGNvbXBsZXRlIHByb2Nlc3Npbmcgb2Ygb25lIEBkZWZ1biBvciBAZGVmdW54IGxpbmUgYWxyZWFkeSBwYXJzZWQuCi0KLSUgQGRlZmZuIENvbW1hbmQgZm9yd2FyZC1jaGFyIG5jaGFycwotCi1cZGVmXGRlZmZue1xkZWZtZXRocGFyc2Vib2R5XEVkZWZmblxkZWZmbnhcZGVmZm5oZWFkZXJ9Ci0KLVxkZWZcZGVmZm5oZWFkZXIgIzEjMiMze1xkb2luZCB7Zm59e1xjb2RleyMyfX0lCi1cYmVnaW5ncm91cFxkZWZuYW1lIHsjMn17IzF9XGRlZnVuYXJnc3sjM31cZW5kZ3JvdXAgJQotXGNhdGNvZGVcZXF1YWxDaGFyPVxvdGhlciAlIFR1cm4gb2ZmIGNoYW5nZSBtYWRlIGluIFxkZWZwYXJzZWJvZHkKLX0KLQotJSBAZGVmdW4gPT0gQGRlZmZuIEZ1bmN0aW9uCi0KLVxkZWZcZGVmdW57XGRlZnBhcnNlYm9keVxFZGVmdW5cZGVmdW54XGRlZnVuaGVhZGVyfQotCi1cZGVmXGRlZnVuaGVhZGVyICMxIzJ7XGRvaW5kIHtmbn17XGNvZGV7IzF9fSUgTWFrZSBlbnRyeSBpbiBmdW5jdGlvbiBpbmRleAotXGJlZ2luZ3JvdXBcZGVmbmFtZSB7IzF9e1xwdXR3b3JkRGVmZnVuY30lCi1cZGVmdW5hcmdzIHsjMn1cZW5kZ3JvdXAgJQotXGNhdGNvZGVcZXF1YWxDaGFyPVxvdGhlciAlIFR1cm4gb2ZmIGNoYW5nZSBtYWRlIGluIFxkZWZwYXJzZWJvZHkKLX0KLQotJSBAZGVmdHlwZWZ1biBpbnQgZm9vYmFyIChpbnQgQHZhcntmb299LCBmbG9hdCBAdmFye2Jhcn0pCi0KLVxkZWZcZGVmdHlwZWZ1bntcZGVmcGFyc2Vib2R5XEVkZWZ0eXBlZnVuXGRlZnR5cGVmdW54XGRlZnR5cGVmdW5oZWFkZXJ9Ci0KLSUgIzEgaXMgdGhlIGRhdGEgdHlwZS4gICMyIGlzIHRoZSBuYW1lIGFuZCBhcmdzLgotXGRlZlxkZWZ0eXBlZnVuaGVhZGVyICMxIzJ7XGRlZnR5cGVmdW5oZWFkZXJ4eyMxfSMyIFxyZWxheH0KLSUgIzEgaXMgdGhlIGRhdGEgdHlwZSwgIzIgdGhlIG5hbWUsICMzIHRoZSBhcmdzLgotXGRlZlxkZWZ0eXBlZnVuaGVhZGVyeCAjMSMyICMzXHJlbGF4eyUKLVxkb2luZCB7Zm59e1xjb2RleyMyfX0lIE1ha2UgZW50cnkgaW4gZnVuY3Rpb24gaW5kZXgKLVxiZWdpbmdyb3VwXGRlZm5hbWUge1xkZWZoZWFkZXJ4Y29uZCMxXHJlbGF4JC4kIzJ9e1xwdXR3b3JkRGVmdHlwZWZ1bn0lCi1cZGVmdHlwZWZ1bmFyZ3MgeyMzfVxlbmRncm91cCAlCi1cY2F0Y29kZVxlcXVhbENoYXI9XG90aGVyICUgVHVybiBvZmYgY2hhbmdlIG1hZGUgaW4gXGRlZnBhcnNlYm9keQotfQotCi0lIEBkZWZ0eXBlZm4ge0xpYnJhcnkgRnVuY3Rpb259IGludCBmb29iYXIgKGludCBAdmFye2Zvb30sIGZsb2F0IEB2YXJ7YmFyfSkKLQotXGRlZlxkZWZ0eXBlZm57XGRlZm1ldGhwYXJzZWJvZHlcRWRlZnR5cGVmblxkZWZ0eXBlZm54XGRlZnR5cGVmbmhlYWRlcn0KLQotJSBcZGVmaGVhZGVyeGNvbmQjMVxyZWxheCQuJAotJSBwdXRzICMxIGluIEBjb2RlLCBmb2xsb3dlZCBieSBhIHNwYWNlLCBidXQgZG9lcyBub3RoaW5nIGlmICMxIGlzIG51bGwuCi1cZGVmXGRlZmhlYWRlcnhjb25kIzEjMiQuJHtcaWZ4IzFccmVsYXhcZWxzZVxjb2RleyMxIzJ9IFxmaX0KLQotJSAjMSBpcyB0aGUgY2xhc3NpZmljYXRpb24uICAjMiBpcyB0aGUgZGF0YSB0eXBlLiAgIzMgaXMgdGhlIG5hbWUgYW5kIGFyZ3MuCi1cZGVmXGRlZnR5cGVmbmhlYWRlciAjMSMyIzN7XGRlZnR5cGVmbmhlYWRlcnh7IzF9eyMyfSMzIFxyZWxheH0KLSUgIzEgaXMgdGhlIGNsYXNzaWZpY2F0aW9uLCAjMiB0aGUgZGF0YSB0eXBlLCAjMyB0aGUgbmFtZSwgIzQgdGhlIGFyZ3MuCi1cZGVmXGRlZnR5cGVmbmhlYWRlcnggIzEjMiMzICM0XHJlbGF4eyUKLVxkb2luZCB7Zm59e1xjb2RleyMzfX0lIE1ha2UgZW50cnkgaW4gZnVuY3Rpb24gaW5kZXgKLVxiZWdpbmdyb3VwCi1cbm9ybWFscGFyZW5zICUgbm90YWJseSwgdHVybiBvZmYgYCYnIG1hZ2ljLCB3aGljaCBwcmV2ZW50cwotJSAgICAgICAgICAgICAgIGF0IGxlYXN0IHNvbWUgQysrIHRleHQgZnJvbSB3b3JraW5nCi1cZGVmbmFtZSB7XGRlZmhlYWRlcnhjb25kIzJccmVsYXgkLiQjM317IzF9JQotXGRlZnR5cGVmdW5hcmdzIHsjNH1cZW5kZ3JvdXAgJQotXGNhdGNvZGVcZXF1YWxDaGFyPVxvdGhlciAlIFR1cm4gb2ZmIGNoYW5nZSBtYWRlIGluIFxkZWZwYXJzZWJvZHkKLX0KLQotJSBAZGVmbWFjID09IEBkZWZmbiBNYWNybwotCi1cZGVmXGRlZm1hY3tcZGVmcGFyc2Vib2R5XEVkZWZtYWNcZGVmbWFjeFxkZWZtYWNoZWFkZXJ9Ci0KLVxkZWZcZGVmbWFjaGVhZGVyICMxIzJ7XGRvaW5kIHtmbn17XGNvZGV7IzF9fSUgTWFrZSBlbnRyeSBpbiBmdW5jdGlvbiBpbmRleAotXGJlZ2luZ3JvdXBcZGVmbmFtZSB7IzF9e1xwdXR3b3JkRGVmbWFjfSUKLVxkZWZ1bmFyZ3MgeyMyfVxlbmRncm91cCAlCi1cY2F0Y29kZVxlcXVhbENoYXI9XG90aGVyICUgVHVybiBvZmYgY2hhbmdlIG1hZGUgaW4gXGRlZnBhcnNlYm9keQotfQotCi0lIEBkZWZzcGVjID09IEBkZWZmbiBTcGVjaWFsIEZvcm0KLQotXGRlZlxkZWZzcGVje1xkZWZwYXJzZWJvZHlcRWRlZnNwZWNcZGVmc3BlY3hcZGVmc3BlY2hlYWRlcn0KLQotXGRlZlxkZWZzcGVjaGVhZGVyICMxIzJ7XGRvaW5kIHtmbn17XGNvZGV7IzF9fSUgTWFrZSBlbnRyeSBpbiBmdW5jdGlvbiBpbmRleAotXGJlZ2luZ3JvdXBcZGVmbmFtZSB7IzF9e1xwdXR3b3JkRGVmc3BlY30lCi1cZGVmdW5hcmdzIHsjMn1cZW5kZ3JvdXAgJQotXGNhdGNvZGVcZXF1YWxDaGFyPVxvdGhlciAlIFR1cm4gb2ZmIGNoYW5nZSBtYWRlIGluIFxkZWZwYXJzZWJvZHkKLX0KLQotJSBAZGVmb3AgQ0FURUdPUlkgQ0xBU1MgT1BFUkFUSU9OIEFSRy4uLgorJSBXZSB3YW50ICgpJltdIHRvIHByaW50IHNwZWNpYWxseSBvbiB0aGUgZGVmdW4gbGluZS4KICUKLVxkZWZcZGVmb3AgIzEge1xkZWZcZGVmb3B0eXBleyMxfSUKLVxkZWZvcHBhcnNlYm9keVxFZGVmb3BcZGVmb3B4XGRlZm9waGVhZGVyXGRlZm9wdHlwZX0KLSUKLVxkZWZcZGVmb3BoZWFkZXIjMSMyIzN7JQotICBcZG9zdWJpbmR7Zm59e1xjb2RleyMyfX17XHB1dHdvcmRvblwgXGNvZGV7IzF9fSUgZnVuY3Rpb24gaW5kZXggZW50cnkKLSAgXGJlZ2luZ3JvdXAKLSAgICBcZGVmbmFtZXsjMn17XGRlZm9wdHlwZVwgXHB1dHdvcmRvblwgIzF9JQotICAgIFxkZWZ1bmFyZ3N7IzN9JQotICBcZW5kZ3JvdXAKK1xkZWZcYWN0aXZlcGFyZW5zeyUKKyAgXGNhdGNvZGVgXCg9XGFjdGl2ZSBcY2F0Y29kZWBcKT1cYWN0aXZlCisgIFxjYXRjb2RlYFxbPVxhY3RpdmUgXGNhdGNvZGVgXF09XGFjdGl2ZQorICBcY2F0Y29kZWBcJj1cYWN0aXZlCiB9CiAKLSUgQGRlZnR5cGVvcCBDQVRFR09SWSBDTEFTUyBUWVBFIE9QRVJBVElPTiBBUkcuLi4KLSUKLVxkZWZcZGVmdHlwZW9wICMxIHtcZGVmXGRlZnR5cGVvcGNhdGVnb3J5eyMxfSUKLSAgXGRlZnR5cGVvcHBhcnNlYm9keVxFZGVmdHlwZW9wXGRlZnR5cGVvcHhcZGVmdHlwZW9waGVhZGVyCi0gICAgICAgICAgICAgICAgICAgICAgIFxkZWZ0eXBlb3BjYXRlZ29yeX0KLSUKLSUgIzEgaXMgdGhlIGNsYXNzIG5hbWUsICMyIHRoZSBkYXRhIHR5cGUsICMzIHRoZSBvcGVyYXRpb24gbmFtZSwgIzQgdGhlIGFyZ3MuCi1cZGVmXGRlZnR5cGVvcGhlYWRlciMxIzIjMyM0eyUKLSAgXGRvc3ViaW5ke2ZufXtcY29kZXsjM319e1xwdXR3b3Jkb25cIFxjb2RleyMxfX0lIGVudHJ5IGluIGZ1bmN0aW9uIGluZGV4Ci0gIFxiZWdpbmdyb3VwCi0gICAgXGRlZm5hbWV7XGRlZmhlYWRlcnhjb25kIzJccmVsYXgkLiQjM30KLSAgICAgICAgICAgIHtcZGVmdHlwZW9wY2F0ZWdvcnlcIFxwdXR3b3Jkb25cIFxjb2RleyMxfX0lCi0gICAgXGRlZnR5cGVmdW5hcmdzeyM0fSUKLSAgXGVuZGdyb3VwCislIE1ha2UgY29udHJvbCBzZXF1ZW5jZXMgd2hpY2ggYWN0IGxpa2Ugbm9ybWFsIHBhcmVudGhlc2lzIGNoYXJzLgorXGxldFxscGFyZW4gPSAoIFxsZXRccnBhcmVuID0gKQorCislIEJlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBhIGRlZmluaXRpb24gZm9yIGAoJywgZXRjLiAgRm9yIGV4YW1wbGUsCislIGlmIHRoZSBmbiBuYW1lIGhhcyBwYXJlbnMgaW4gaXQsIFxib2xkYnJheCB3aWxsIG5vdCBiZSBpbiBlZmZlY3QgeWV0LAorJSBzbyBUZVggd291bGQgb3RoZXJ3aXNlIGNvbXBsYWluIGFib3V0IHVuZGVmaW5lZCBjb250cm9sIHNlcXVlbmNlLgoreworICBcYWN0aXZlcGFyZW5zCisgIFxnbG9iYWxcbGV0KD1cbHBhcmVuIFxnbG9iYWxcbGV0KT1ccnBhcmVuCisgIFxnbG9iYWxcbGV0Wz1cbGJyYWNrIFxnbG9iYWxcbGV0XT1ccmJyYWNrCisgIFxnbG9iYWxcbGV0JiA9IFwmCisKKyAgXGdkZWZcYm9sZGJyYXh7XGxldCg9XG9wbnJcbGV0KT1cY2xuclxsZXRbPVxsYnJiXGxldF09XHJicmJ9CisgIFxnZGVmXG1hZ2ljYW1we1xsZXQmPVxhbXBybX0KIH0KIAotJSBAZGVmdHlwZW1ldGhvZCBDTEFTUyBUWVBFIE1FVEhPRCBBUkcuLi4KLSUKLVxkZWZcZGVmdHlwZW1ldGhvZHslCi0gIFxkZWZ0eXBlbWV0aHBhcnNlYm9keVxFZGVmdHlwZW1ldGhvZFxkZWZ0eXBlbWV0aG9keFxkZWZ0eXBlbWV0aG9kaGVhZGVyfQotJQotJSAjMSBpcyB0aGUgY2xhc3MgbmFtZSwgIzIgdGhlIGRhdGEgdHlwZSwgIzMgdGhlIG1ldGhvZCBuYW1lLCAjNCB0aGUgYXJncy4KLVxkZWZcZGVmdHlwZW1ldGhvZGhlYWRlciMxIzIjMyM0eyUKLSAgXGRvc3ViaW5ke2ZufXtcY29kZXsjM319e1xwdXR3b3Jkb25cIFxjb2RleyMxfX0lIGVudHJ5IGluIGZ1bmN0aW9uIGluZGV4Ci0gIFxiZWdpbmdyb3VwCi0gICAgXGRlZm5hbWV7XGRlZmhlYWRlcnhjb25kIzJccmVsYXgkLiQjM317XHB1dHdvcmRNZXRob2RvblwgXGNvZGV7IzF9fSUKLSAgICBcZGVmdHlwZWZ1bmFyZ3N7IzR9JQotICBcZW5kZ3JvdXAKK1xuZXdjb3VudFxwYXJlbmNvdW50CisKKyUgSWYgd2UgZW5jb3VudGVyICZmb28sIHRoZW4gdHVybiBvbiAoKS1oYWNraW5nIGFmdGVyd2FyZHMKK1xuZXdpZlxpZmFtcHNlZW4KK1xkZWZcYW1wcm0jMSB7XGFtcHNlZW50cnVle1xiZlwmIzEgfX0KKworXGRlZlxwYXJlbmZvbnR7JQorICBcaWZhbXBzZWVuCisgICAgJSBBdCB0aGUgZmlyc3QgbGV2ZWwsIHByaW50IHBhcmVucyBpbiByb21hbiwKKyAgICAlIG90aGVyd2lzZSB1c2UgdGhlIGRlZmF1bHQgZm9udC4KKyAgICBcaWZudW0gXHBhcmVuY291bnQ9MSBccm0gXGZpCisgIFxlbHNlCisgICAgJSBUaGUgXHNmIHBhcmVucyAoaW4gXGJvbGRicmF4KSBhY3R1YWxseSBhcmUgYSBsaXR0bGUgYm9sZGVyIHRoYW4KKyAgICAlIHRoZSBjb250YWluZWQgdGV4dC4gIFRoaXMgaXMgZXNwZWNpYWxseSBuZWVkZWQgZm9yIFsgYW5kIF0gLgorICAgIFxzZgorICBcZmkKK30KK1xkZWZcaW5maXJzdGxldmVsIzF7JQorICBcaWZhbXBzZWVuCisgICAgXGlmbnVtXHBhcmVuY291bnQ9MQorICAgICAgIzElCisgICAgXGZpCisgIFxmaQorfQorXGRlZlxiZmFmdGVyd29yZCMxIHsjMSBcYmZ9CisKK1xkZWZcb3BucnslCisgIFxnbG9iYWxcYWR2YW5jZVxwYXJlbmNvdW50IGJ5IDEKKyAge1xwYXJlbmZvbnQofSUKKyAgXGluZmlyc3RsZXZlbCBcYmZhZnRlcndvcmQKK30KK1xkZWZcY2xucnslCisgIHtccGFyZW5mb250KX0lCisgIFxpbmZpcnN0bGV2ZWwgXHNsCisgIFxnbG9iYWxcYWR2YW5jZVxwYXJlbmNvdW50IGJ5IC0xCiB9CiAKLSUgQGRlZnR5cGVpdmFyIENMQVNTIFRZUEUgVkFSTkFNRQotJQotXGRlZlxkZWZ0eXBlaXZhcnslCi0gIFxkZWZ0eXBlbWV0aHBhcnNlYm9keVxFZGVmdHlwZWl2YXJcZGVmdHlwZWl2YXJ4XGRlZnR5cGVpdmFyaGVhZGVyfQotJQotJSAjMSBpcyB0aGUgY2xhc3MgbmFtZSwgIzIgdGhlIGRhdGEgdHlwZSwgIzMgdGhlIHZhcmlhYmxlIG5hbWUuCi1cZGVmXGRlZnR5cGVpdmFyaGVhZGVyIzEjMiMzeyUKLSAgXGRvc3ViaW5ke3ZyfXtcY29kZXsjM319e1xwdXR3b3Jkb2ZcIFxjb2RleyMxfX0lIGVudHJ5IGluIHZhcmlhYmxlIGluZGV4Ci0gIFxiZWdpbmdyb3VwCi0gICAgXGRlZm5hbWV7XGRlZmhlYWRlcnhjb25kIzJccmVsYXgkLiQjM30KLSAgICAgICAgICAgIHtccHV0d29yZEluc3RhbmNlVmFyaWFibGVvZlwgXGNvZGV7IzF9fSUKLSAgICBcZGVmdmFyYXJnc3sjM30lCi0gIFxlbmRncm91cAorXG5ld2NvdW50XGJyYWNrY291bnQKK1xkZWZcbGJyYnslCisgIFxnbG9iYWxcYWR2YW5jZVxicmFja2NvdW50IGJ5IDEKKyAge1xiZlt9JQorfQorXGRlZlxyYnJieyUKKyAge1xiZl19JQorICBcZ2xvYmFsXGFkdmFuY2VcYnJhY2tjb3VudCBieSAtMQogfQogCi0lIEBkZWZtZXRob2QgPT0gQGRlZm9wIE1ldGhvZAotJQotXGRlZlxkZWZtZXRob2R7XGRlZm1ldGhwYXJzZWJvZHlcRWRlZm1ldGhvZFxkZWZtZXRob2R4XGRlZm1ldGhvZGhlYWRlcn0KLSUKLSUgIzEgaXMgdGhlIGNsYXNzIG5hbWUsICMyIHRoZSBtZXRob2QgbmFtZSwgIzMgdGhlIGFyZ3MuCi1cZGVmXGRlZm1ldGhvZGhlYWRlciMxIzIjM3slCi0gIFxkb3N1YmluZHtmbn17XGNvZGV7IzJ9fXtccHV0d29yZG9uXCBcY29kZXsjMX19JSBlbnRyeSBpbiBmdW5jdGlvbiBpbmRleAotICBcYmVnaW5ncm91cAotICAgIFxkZWZuYW1leyMyfXtccHV0d29yZE1ldGhvZG9uXCBcY29kZXsjMX19JQotICAgIFxkZWZ1bmFyZ3N7IzN9JQotICBcZW5kZ3JvdXAKK1xkZWZcY2hlY2twYXJlbmNvdW50c3slCisgIFxpZm51bVxwYXJlbmNvdW50PTAgXGVsc2UgXGJhZHBhcmVuY291bnQgXGZpCisgIFxpZm51bVxicmFja2NvdW50PTAgXGVsc2UgXGJhZGJyYWNrY291bnQgXGZpCiB9Ci0KLSUgQGRlZmN2IHtDbGFzcyBPcHRpb259IGZvby1jbGFzcyBmb28tZmxhZwotCi1cZGVmXGRlZmN2ICMxIHtcZGVmXGRlZmN2dHlwZXsjMX0lCi1cZGVmb3B2YXJwYXJzZWJvZHlcRWRlZmN2XGRlZmN2eFxkZWZjdmFyaGVhZGVyXGRlZmN2dHlwZX0KLQotXGRlZlxkZWZjdmFyaGVhZGVyICMxIzIjM3slCi0gIFxkb3N1YmluZHt2cn17XGNvZGV7IzJ9fXtccHV0d29yZG9mXCBcY29kZXsjMX19JSB2YXJpYWJsZSBpbmRleCBlbnRyeQotICBcYmVnaW5ncm91cAotICAgIFxkZWZuYW1leyMyfXtcZGVmY3Z0eXBlXCBccHV0d29yZG9mXCAjMX0lCi0gICAgXGRlZnZhcmFyZ3N7IzN9JQotICBcZW5kZ3JvdXAKK1xkZWZcYmFkcGFyZW5jb3VudHslCisgIFxlcnJtZXNzYWdle1VuYmFsYW5jZWQgcGFyZW50aGVzZXMgaW4gQGRlZn0lCisgIFxnbG9iYWxccGFyZW5jb3VudD0wCiB9Ci0KLSUgQGRlZml2YXIgQ0xBU1MgVkFSTkFNRSA9PSBAZGVmY3Yge0luc3RhbmNlIFZhcmlhYmxlfSBDTEFTUyBWQVJOQU1FCi0lCi1cZGVmXGRlZml2YXJ7XGRlZnZycGFyc2Vib2R5XEVkZWZpdmFyXGRlZml2YXJ4XGRlZml2YXJoZWFkZXJ9Ci0lCi1cZGVmXGRlZml2YXJoZWFkZXIjMSMyIzN7JQotICBcZG9zdWJpbmR7dnJ9e1xjb2RleyMyfX17XHB1dHdvcmRvZlwgXGNvZGV7IzF9fSUgZW50cnkgaW4gdmFyIGluZGV4Ci0gIFxiZWdpbmdyb3VwCi0gICAgXGRlZm5hbWV7IzJ9e1xwdXR3b3JkSW5zdGFuY2VWYXJpYWJsZW9mXCAjMX0lCi0gICAgXGRlZnZhcmFyZ3N7IzN9JQotICBcZW5kZ3JvdXAKK1xkZWZcYmFkYnJhY2tjb3VudHslCisgIFxlcnJtZXNzYWdle1VuYmFsYW5jZWQgc3F1YXJlIGJyYWNlcyBpbiBAZGVmfSUKKyAgXGdsb2JhbFxicmFja2NvdW50PTAKIH0KIAotJSBAZGVmdmFyCi0lIEZpcnN0LCBkZWZpbmUgdGhlIHByb2Nlc3NpbmcgdGhhdCBpcyB3YW50ZWQgZm9yIGFyZ3VtZW50cyBvZiBAZGVmdmFyLgotJSBUaGlzIGlzIGFjdHVhbGx5IHNpbXBsZToganVzdCBwcmludCB0aGVtIGluIHJvbWFuLgotJSBUaGlzIG11c3QgZXhwYW5kIHRoZSBhcmdzIGFuZCB0ZXJtaW5hdGUgdGhlIHBhcmFncmFwaCB0aGV5IG1ha2UgdXAKLVxkZWZcZGVmdmFyYXJncyAjMXtcbm9ybWFscGFyZW5zICMxJQotICBcZGVmYXJnc2NvbW1vbmVuZGluZwotfQotCi0lIEBkZWZ2ciBDb3VudGVyIGZvby1jb3VudAotCi1cZGVmXGRlZnZye1xkZWZ2cnBhcnNlYm9keVxFZGVmdnJcZGVmdnJ4XGRlZnZyaGVhZGVyfQotCi1cZGVmXGRlZnZyaGVhZGVyICMxIzIjM3tcZG9pbmQge3ZyfXtcY29kZXsjMn19JQotXGJlZ2luZ3JvdXBcZGVmbmFtZSB7IzJ9eyMxfVxkZWZ2YXJhcmdzeyMzfVxlbmRncm91cH0KLQotJSBAZGVmdmFyID09IEBkZWZ2ciBWYXJpYWJsZQotCi1cZGVmXGRlZnZhcntcZGVmdmFycGFyc2Vib2R5XEVkZWZ2YXJcZGVmdmFyeFxkZWZ2YXJoZWFkZXJ9Ci0KLVxkZWZcZGVmdmFyaGVhZGVyICMxIzJ7XGRvaW5kIHt2cn17XGNvZGV7IzF9fSUgTWFrZSBlbnRyeSBpbiB2YXIgaW5kZXgKLVxiZWdpbmdyb3VwXGRlZm5hbWUgeyMxfXtccHV0d29yZERlZnZhcn0lCi1cZGVmdmFyYXJncyB7IzJ9XGVuZGdyb3VwICUKLX0KLQotJSBAZGVmb3B0ID09IEBkZWZ2ciB7VXNlciBPcHRpb259Ci0KLVxkZWZcZGVmb3B0e1xkZWZ2YXJwYXJzZWJvZHlcRWRlZm9wdFxkZWZvcHR4XGRlZm9wdGhlYWRlcn0KLQotXGRlZlxkZWZvcHRoZWFkZXIgIzEjMntcZG9pbmQge3ZyfXtcY29kZXsjMX19JSBNYWtlIGVudHJ5IGluIHZhciBpbmRleAotXGJlZ2luZ3JvdXBcZGVmbmFtZSB7IzF9e1xwdXR3b3JkRGVmb3B0fSUKLVxkZWZ2YXJhcmdzIHsjMn1cZW5kZ3JvdXAgJQotfQotCi0lIEBkZWZ0eXBldmFyIGludCBmb29iYXIKLQotXGRlZlxkZWZ0eXBldmFye1xkZWZ2YXJwYXJzZWJvZHlcRWRlZnR5cGV2YXJcZGVmdHlwZXZhcnhcZGVmdHlwZXZhcmhlYWRlcn0KLQotJSAjMSBpcyB0aGUgZGF0YSB0eXBlLiAgIzIgaXMgdGhlIG5hbWUsIHBlcmhhcHMgZm9sbG93ZWQgYnkgdGV4dCB0aGF0Ci0lIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGRhdGEgdHlwZSwgd2hpY2ggc2hvdWxkIG5vdCBiZSBwdXQgaW50byB0aGUgaW5kZXguCi1cZGVmXGRlZnR5cGV2YXJoZWFkZXIgIzEjMnslCi1cZG92YXJpbmQjMiBccmVsYXglIE1ha2UgZW50cnkgaW4gdmFyaWFibGVzIGluZGV4Ci1cYmVnaW5ncm91cFxkZWZuYW1lIHtcZGVmaGVhZGVyeGNvbmQjMVxyZWxheCQuJCMyfXtccHV0d29yZERlZnR5cGV2YXJ9JQotICBcZGVmYXJnc2NvbW1vbmVuZGluZwotXGVuZGdyb3VwfQotXGRlZlxkb3ZhcmluZCMxICMyXHJlbGF4e1xkb2luZHt2cn17XGNvZGV7IzF9fX0KLQotJSBAZGVmdHlwZXZyIHtHbG9iYWwgRmxhZ30gaW50IGVuYWJsZQotCi1cZGVmXGRlZnR5cGV2cntcZGVmdnJwYXJzZWJvZHlcRWRlZnR5cGV2clxkZWZ0eXBldnJ4XGRlZnR5cGV2cmhlYWRlcn0KLQotXGRlZlxkZWZ0eXBldnJoZWFkZXIgIzEjMiMze1xkb3ZhcmluZCMzIFxyZWxheCUKLVxiZWdpbmdyb3VwXGRlZm5hbWUge1xkZWZoZWFkZXJ4Y29uZCMyXHJlbGF4JC4kIzN9eyMxfQotICBcZGVmYXJnc2NvbW1vbmVuZGluZwotXGVuZGdyb3VwfQotCi0lIE5vdyBkZWZpbmUgQGRlZnRwCi0lIEFyZ3MgYXJlIHByaW50ZWQgaW4gYm9sZCwgYSBzbGlnaHQgZGlmZmVyZW5jZSBmcm9tIEBkZWZ2YXIuCi0KLVxkZWZcZGVmdHBhcmdzICMxe1xiZiBcZGVmdmFyYXJnc3sjMX19Ci0KLSUgQGRlZnRwIENsYXNzIHdpbmRvdyBoZWlnaHQgd2lkdGggLi4uCi0KLVxkZWZcZGVmdHB7XGRlZnRwcGFyc2Vib2R5XEVkZWZ0cFxkZWZ0cHhcZGVmdHBoZWFkZXJ9Ci0KLVxkZWZcZGVmdHBoZWFkZXIgIzEjMiMze1xkb2luZCB7dHB9e1xjb2RleyMyfX0lCi1cYmVnaW5ncm91cFxkZWZuYW1lIHsjMn17IzF9XGRlZnRwYXJnc3sjM31cZW5kZ3JvdXB9Ci0KLSUgVGhlc2UgZGVmaW5pdGlvbnMgYXJlIHVzZWQgaWYgeW91IHVzZSBAZGVmdW54IChldGMuKQotJSBhbnl3aGVyZSBvdGhlciB0aGFuIGltbWVkaWF0ZWx5IGFmdGVyIGEgQGRlZnVuIG9yIEBkZWZ1bnguCi0lIAotXGRlZlxkZWZjdngjMSB7XGVycm1lc3NhZ2V7QGRlZmN2eCBpbiBpbnZhbGlkIGNvbnRleHR9fQotXGRlZlxkZWZmbngjMSB7XGVycm1lc3NhZ2V7QGRlZmZueCBpbiBpbnZhbGlkIGNvbnRleHR9fQotXGRlZlxkZWZpdmFyeCMxIHtcZXJybWVzc2FnZXtAZGVmaXZhcnggaW4gaW52YWxpZCBjb250ZXh0fX0KLVxkZWZcZGVmbWFjeCMxIHtcZXJybWVzc2FnZXtAZGVmbWFjeCBpbiBpbnZhbGlkIGNvbnRleHR9fQotXGRlZlxkZWZtZXRob2R4IzEge1xlcnJtZXNzYWdle0BkZWZtZXRob2R4IGluIGludmFsaWQgY29udGV4dH19Ci1cZGVmXGRlZm9wdHggIzEge1xlcnJtZXNzYWdle0BkZWZvcHR4IGluIGludmFsaWQgY29udGV4dH19Ci1cZGVmXGRlZm9weCMxIHtcZXJybWVzc2FnZXtAZGVmb3B4IGluIGludmFsaWQgY29udGV4dH19Ci1cZGVmXGRlZnNwZWN4IzEge1xlcnJtZXNzYWdle0BkZWZzcGVjeCBpbiBpbnZhbGlkIGNvbnRleHR9fQotXGRlZlxkZWZ0cHgjMSB7XGVycm1lc3NhZ2V7QGRlZnRweCBpbiBpbnZhbGlkIGNvbnRleHR9fQotXGRlZlxkZWZ0eXBlZm54IzEge1xlcnJtZXNzYWdle0BkZWZ0eXBlZm54IGluIGludmFsaWQgY29udGV4dH19Ci1cZGVmXGRlZnR5cGVmdW54IzEge1xlcnJtZXNzYWdle0BkZWZ0eXBlZnVueCBpbiBpbnZhbGlkIGNvbnRleHR9fQotXGRlZlxkZWZ0eXBlaXZhcngjMSB7XGVycm1lc3NhZ2V7QGRlZnR5cGVpdmFyeCBpbiBpbnZhbGlkIGNvbnRleHR9fQotXGRlZlxkZWZ0eXBlbWV0aG9keCMxIHtcZXJybWVzc2FnZXtAZGVmdHlwZW1ldGhvZHggaW4gaW52YWxpZCBjb250ZXh0fX0KLVxkZWZcZGVmdHlwZW9weCMxIHtcZXJybWVzc2FnZXtAZGVmdHlwZW9weCBpbiBpbnZhbGlkIGNvbnRleHR9fQotXGRlZlxkZWZ0eXBldmFyeCMxIHtcZXJybWVzc2FnZXtAZGVmdHlwZXZhcnggaW4gaW52YWxpZCBjb250ZXh0fX0KLVxkZWZcZGVmdHlwZXZyeCMxIHtcZXJybWVzc2FnZXtAZGVmdHlwZXZyeCBpbiBpbnZhbGlkIGNvbnRleHR9fQotXGRlZlxkZWZ1bngjMSB7XGVycm1lc3NhZ2V7QGRlZnVueCBpbiBpbnZhbGlkIGNvbnRleHR9fQotXGRlZlxkZWZ2YXJ4IzEge1xlcnJtZXNzYWdle0BkZWZ2YXJ4IGluIGludmFsaWQgY29udGV4dH19Ci1cZGVmXGRlZnZyeCMxIHtcZXJybWVzc2FnZXtAZGVmdnJ4IGluIGludmFsaWQgY29udGV4dH19Ci0KIAogXG1lc3NhZ2V7bWFjcm9zLH0KICUgQG1hY3JvLgpAQCAtNTQ4NCwyOCArNTQyMCwzMyBAQAogJSBUbyBkbyB0aGlzIHJpZ2h0IHdlIG5lZWQgYSBmZWF0dXJlIG9mIGUtVGVYLCBcc2NhbnRva2VucywKICUgd2hpY2ggd2UgYXJyYW5nZSB0byBlbXVsYXRlIHdpdGggYSB0ZW1wb3JhcnkgZmlsZSBpbiBvcmRpbmFyeSBUZVguCiBcaWZ4XGVUZVh2ZXJzaW9uXHVuZGVmaW5lZAotIFxuZXd3cml0ZVxtYWNzY3JpYmJsZQotIFxkZWZcc2Nhbm1hY3JvIzF7JQotICAgXGJlZ2luZ3JvdXAgXG5ld2xpbmVjaGFyYFxeXk0KLSAgICUgVW5kbyBjYXRjb2RlIGNoYW5nZXMgb2YgXHN0YXJ0Y29udGVudHMgYW5kIFxkb3ByaW50aW5kZXgKLSAgIFxjYXRjb2RlYFxAPTAgXGNhdGNvZGVgXFw9XG90aGVyIFxlc2NhcGVjaGFyPWBcQAotICAgJSBBcHBlbmQgXGVuZGlucHV0IHRvIG1ha2Ugc3VyZSB0aGF0IFRlWCBkb2VzIG5vdCBzZWUgdGhlIGVuZGluZyBuZXdsaW5lLgotICAgXHRva3MwPXsjMVxlbmRpbnB1dH0lCi0gICBcaW1tZWRpYXRlXG9wZW5vdXRcbWFjc2NyaWJibGU9XGpvYm5hbWUudG1wCi0gICBcaW1tZWRpYXRlXHdyaXRlXG1hY3NjcmliYmxle1x0aGVcdG9rczB9JQotICAgXGltbWVkaWF0ZVxjbG9zZW91dFxtYWNzY3JpYmJsZQotICAgXGxldFx4ZWF0c3BhY2VzXGVhdHNwYWNlcwotICAgXGlucHV0IFxqb2JuYW1lLnRtcAotICAgXGVuZGdyb3VwCi19Ci1cZWxzZQotXGRlZlxzY2FubWFjcm8jMXslCi1cYmVnaW5ncm91cCBcbmV3bGluZWNoYXJgXF5eTQotJSBVbmRvIGNhdGNvZGUgY2hhbmdlcyBvZiBcc3RhcnRjb250ZW50cyBhbmQgXGRvcHJpbnRpbmRleAotXGNhdGNvZGVgXEA9MCBcY2F0Y29kZWBcXD1cb3RoZXIgXGVzY2FwZWNoYXI9YFxACi1cbGV0XHhlYXRzcGFjZXNcZWF0c3BhY2VzXHNjYW50b2tlbnN7IzFcZW5kaW5wdXR9XGVuZGdyb3VwfQorICBcbmV3d3JpdGVcbWFjc2NyaWJibGUKKyAgXGRlZlxzY2FudG9rZW5zIzF7JQorICAgIFx0b2tzMD17IzFcZW5kaW5wdXR9JQorICAgIFxpbW1lZGlhdGVcb3Blbm91dFxtYWNzY3JpYmJsZT1cam9ibmFtZS50bXAKKyAgICBcaW1tZWRpYXRlXHdyaXRlXG1hY3NjcmliYmxle1x0aGVcdG9rczB9JQorICAgIFxpbW1lZGlhdGVcY2xvc2VvdXRcbWFjc2NyaWJibGUKKyAgICBcaW5wdXQgXGpvYm5hbWUudG1wCisgIH0KIFxmaQogCitcZGVmXHNjYW5tYWNybyMxeyUKKyAgXGJlZ2luZ3JvdXAKKyAgICBcbmV3bGluZWNoYXJgXF5eTQorICAgIFxsZXRceGVhdHNwYWNlc1xlYXRzcGFjZXMKKyAgICAlIFVuZG8gY2F0Y29kZSBjaGFuZ2VzIG9mIFxzdGFydGNvbnRlbnRzIGFuZCBcZG9wcmludGluZGV4CisgICAgXGNhdGNvZGVgXEA9MCBcY2F0Y29kZWBcXD1cb3RoZXIgXGVzY2FwZWNoYXI9YFxACisgICAgJSAuLi4gYW5kIFxleGFtcGxlCisgICAgXHNwYWNlaXNzcGFjZQorICAgICUKKyAgICAlIEFwcGVuZCBcZW5kaW5wdXQgdG8gbWFrZSBzdXJlIHRoYXQgVGVYIGRvZXMgbm90IHNlZSB0aGUgZW5kaW5nIG5ld2xpbmUuCisgICAgJQorICAgICUgSSd2ZSB2ZXJpZmllZCB0aGF0IGl0IGlzIG5lY2Vzc2FyeSBib3RoIGZvciBlLVRlWCBhbmQgZm9yIG9yZGluYXJ5IFRlWAorICAgICUJCQkJCQkJLS1rYXNhbCwgMjlub3YwMworICAgIFxzY2FudG9rZW5zeyMxXGVuZGlucHV0fSUKKyAgXGVuZGdyb3VwCit9CisKIFxuZXdjb3VudFxwYXJhbW5vICAgJSBDb3VudCBvZiBwYXJhbWV0ZXJzCiBcbmV3dG9rc1xtYWNuYW1lICAgICUgTWFjcm8gbmFtZQogXG5ld2lmXGlmcmVjdXJzaXZlICAlIElzIGl0IHJlY3Vyc2l2ZT8KQEAgLTU1MTMsNyArNTQ1NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICUgXGRvXG1hY3JvMVxkb1xtYWNybzIuLi4KIAogJSBVdGlsaXR5IHJvdXRpbmVzLgotJSBUaGlzZG9lcyBcbGV0ICMxID0gIzIsIGV4Y2VwdCB3aXRoIFxjc25hbWVzLgorJSBUaGlzIGRvZXMgXGxldCAjMSA9ICMyLCBleGNlcHQgd2l0aCBcY3NuYW1lcy4KIFxkZWZcY3NsZXQjMSMyeyUKIFxleHBhbmRhZnRlclxleHBhbmRhZnRlcgogXGV4cGFuZGFmdGVyXGxldApAQCAtNTYxMCw4ICs1NTUxLDcgQEAKICAgXGVsc2UgXGV4cGFuZGFmdGVyXHBhcnNlbWFjYm9keQogICBcZml9CiAKLVxkZWZcdW5tYWNyb3tccGFyc2VhcmdcZG91bm1hY3JvfQotXGRlZlxkb3VubWFjcm8jMXslCitccGFyc2VhcmdkZWZcdW5tYWNyb3slCiAgIFxpZjFcY3NuYW1lIGlzbWFjcm8uIzFcZW5kY3NuYW1lCiAgICAgXGdsb2JhbFxjc2xldHsjMX17bWFjc2F2ZS4jMX0lCiAgICAgXGdsb2JhbFxleHBhbmRhZnRlclxsZXQgXGNzbmFtZSBpc21hY3JvLiMxXGVuZGNzbmFtZT0wJQpAQCAtNTYyOCw3ICs1NTY4LDcgQEAKIAogJSBDYWxsZWQgYnkgXGRvIGZyb20gXGRvdW5tYWNybyBvbiBlYWNoIG1hY3JvLiAgVGhlIGlkZWEgaXMgdG8gb21pdCBhbnkKICUgbWFjcm8gZGVmaW5pdGlvbnMgdGhhdCBoYXZlIGJlZW4gY2hhbmdlZCB0byBccmVsYXguCi0lIAorJQogXGRlZlx1bm1hY3JvZG8jMXslCiAgIFxpZngjMVxyZWxheAogICAgICUgcmVtb3ZlIHRoaXMKQEAgLTU3NjEsMTYgKzU3MDEsMTggQEAKICUgQGFsaWFzLgogJSBXZSBuZWVkIHNvbWUgdHJpY2tlcnkgdG8gcmVtb3ZlIHRoZSBvcHRpb25hbCBzcGFjZXMgYXJvdW5kIHRoZSBlcXVhbAogJSBzaWduLiAgSnVzdCBtYWtlIHRoZW0gYWN0aXZlIGFuZCB0aGVuIGV4cGFuZCB0aGVtIGFsbCB0byBub3RoaW5nLgotXGRlZlxhbGlhc3tcYmVnaW5ncm91cFxvYmV5c3BhY2VzXHBhcnNlYXJnXGFsaWFzeHh4fQorXGRlZlxhbGlhc3tccGFyc2Vhcmd1c2luZ1xvYmV5c3BhY2VzXGFsaWFzeHh4fQogXGRlZlxhbGlhc3h4eCAjMXtcYWxpYXN5eXkjMVxyZWxheH0KLVxkZWZcYWxpYXN5eXkgIzE9IzJccmVsYXh7XGlnbm9yZWFjdGl2ZXNwYWNlcwotXGVkZWZcbmV4dHtcZ2xvYmFsXGxldFxleHBhbmRhZnRlclxub2V4cGFuZFxjc25hbWUjMVxlbmRjc25hbWU9JQotICAgICAgICAgICBcZXhwYW5kYWZ0ZXJcbm9leHBhbmRcY3NuYW1lIzJcZW5kY3NuYW1lfSUKLVxleHBhbmRhZnRlclxlbmRncm91cFxuZXh0fQorXGRlZlxhbGlhc3l5eSAjMT0jMlxyZWxheHslCisgIHslCisgICAgXGV4cGFuZGFmdGVyXGxldFxvYmV5ZWRzcGFjZT1cZW1wdHkKKyAgICBceGRlZlxuZXh0e1xnbG9iYWxcbGV0XG1ha2Vjc25hbWV7IzF9PVxtYWtlY3NuYW1leyMyfX0lCisgIH0lCisgIFxuZXh0Cit9CiAKIAogXG1lc3NhZ2V7Y3Jvc3MgcmVmZXJlbmNlcyx9Ci0lIEB4cmVmIGV0Yy4KIAogXG5ld3dyaXRlXGF1eGZpbGUKIApAQCAtNTc4Miw2NCArNTcyNCw2MSBAQAogXGRlZlxpbmZvcmVmenp6ICMxLCMyLCMzLCM0Kip7XHB1dHdvcmRTZWV7fSBccHV0d29yZEluZm97fSBccHV0d29yZGZpbGV7fSBcZmlsZXtcaWdub3Jlc3BhY2VzICMze319LAogICBub2RlIFxzYW1we1xpZ25vcmVzcGFjZXMjMXt9fX0KIAotJSBAbm9kZSdzIGpvYiBpcyB0byBkZWZpbmUgXGxhc3Rub2RlLgotXGRlZlxub2Rle1xFTlZjaGVja1xwYXJzZWFyZ1xub2Rlenp6fQotXGRlZlxub2Rlenp6IzF7XG5vZGV4eHggWyMxLF19Ci1cZGVmXG5vZGV4eHhbIzEsIzJde1xnZGVmXGxhc3Rub2RleyMxfX0KKyUgQG5vZGUncyBvbmx5IGpvYiBpbiBUZVggaXMgdG8gZGVmaW5lIFxsYXN0bm9kZSwgd2hpY2ggaXMgdXNlZCBpbgorJSBjcm9zcy1yZWZlcmVuY2VzLgorXHBhcnNlYXJnZGVmXG5vZGV7XGNoZWNrZW52e31cbm9kZXh4eCAjMSxcZmluaXNobm9kZXBhcnNlfQorXGRlZlxub2RleHh4IzEsIzJcZmluaXNobm9kZXBhcnNle1xnZGVmXGxhc3Rub2RleyMxfX0KIFxsZXRcbndub2RlPVxub2RlCi1cbGV0XGxhc3Rub2RlPVxyZWxheAorXGxldFxsYXN0bm9kZT1cZW1wdHkKIAotJSBUaGUgc2VjdGlvbmluZyBjb21tYW5kcyAoQGNoYXB0ZXIsIGV0Yy4pIGNhbGwgdGhlc2UuCi1cZGVmXGRvbm9kZXJlZnslCi0gIFxpZnhcbGFzdG5vZGVccmVsYXhcZWxzZQotICAgIFxleHBhbmRhZnRlclxleHBhbmRhZnRlclxleHBhbmRhZnRlclxzZXRyZWZ7XGxhc3Rub2RlfSUKLSAgICAgIHtZc2VjdGlvbm51bWJlcmFuZHR5cGV9JQotICAgIFxnbG9iYWxcbGV0XGxhc3Rub2RlPVxyZWxheAorJSBXcml0ZSBhIGNyb3NzLXJlZmVyZW5jZSBkZWZpbml0aW9uIGZvciB0aGUgY3VycmVudCBub2RlLiAgIzEgaXMgdGhlCislIHR5cGUgKFludW1iZXJlZCwgWWFwcGVuZGl4LCBZbm90aGluZykuCislIAorXGRlZlxkb25vZGVyZWYjMXslCisgIFxpZnhcbGFzdG5vZGVcZW1wdHlcZWxzZQorICAgIFxzZXRyZWZ7XGxhc3Rub2RlfXsjMX0lCisgICAgXGdsb2JhbFxsZXRcbGFzdG5vZGU9XGVtcHR5CiAgIFxmaQogfQotXGRlZlx1bm51bWJub2RlcmVmeyUKLSAgXGlmeFxsYXN0bm9kZVxyZWxheFxlbHNlCi0gICAgXGV4cGFuZGFmdGVyXGV4cGFuZGFmdGVyXGV4cGFuZGFmdGVyXHNldHJlZntcbGFzdG5vZGV9e1lub3RoaW5nfSUKLSAgICBcZ2xvYmFsXGxldFxsYXN0bm9kZT1ccmVsYXgKLSAgXGZpCi19Ci1cZGVmXGFwcGVuZGl4bm9kZXJlZnslCi0gIFxpZnhcbGFzdG5vZGVccmVsYXhcZWxzZQotICAgIFxleHBhbmRhZnRlclxleHBhbmRhZnRlclxleHBhbmRhZnRlclxzZXRyZWZ7XGxhc3Rub2RlfSUKLSAgICAgIHtZYXBwZW5kaXhsZXR0ZXJhbmR0eXBlfSUKLSAgICBcZ2xvYmFsXGxldFxsYXN0bm9kZT1ccmVsYXgKLSAgXGZpCi19Ci0KIAogJSBAYW5jaG9ye05BTUV9IC0tIGRlZmluZSB4cmVmIHRhcmdldCBhdCBhcmJpdHJhcnkgcG9pbnQuCiAlCiBcbmV3Y291bnRcc2F2ZXNmcmVnaXN0ZXIKLVxnZGVmXHNhdmVzZntccmVsYXggXGlmaG1vZGUgXHNhdmVzZnJlZ2lzdGVyPVxzcGFjZWZhY3RvciBcZml9Ci1cZ2RlZlxyZXN0b3Jlc2Z7XHJlbGF4IFxpZmhtb2RlIFxzcGFjZWZhY3Rvcj1cc2F2ZXNmcmVnaXN0ZXIgXGZpfQotXGdkZWZcYW5jaG9yIzF7XHNhdmVzZiBcc2V0cmVmeyMxfXtZbm90aGluZ31ccmVzdG9yZXNmIFxpZ25vcmVzcGFjZXN9CislCitcZGVmXHNhdmVzZntccmVsYXggXGlmaG1vZGUgXHNhdmVzZnJlZ2lzdGVyPVxzcGFjZWZhY3RvciBcZml9CitcZGVmXHJlc3RvcmVzZntccmVsYXggXGlmaG1vZGUgXHNwYWNlZmFjdG9yPVxzYXZlc2ZyZWdpc3RlciBcZml9CitcZGVmXGFuY2hvciMxe1xzYXZlc2YgXHNldHJlZnsjMX17WW5vdGhpbmd9XHJlc3RvcmVzZiBcaWdub3Jlc3BhY2VzfQogCiAlIFxzZXRyZWZ7TkFNRX17U05UfSBkZWZpbmVzIGEgY3Jvc3MtcmVmZXJlbmNlIHBvaW50IE5BTUUgKGEgbm9kZSBvciBhbgotJSBhbmNob3IpLCBuYW1lbHkgTkFNRS10aXRsZSAodGhlIGNvcnJlc3BvbmRpbmcgQGNoYXB0ZXIvZXRjLiBuYW1lKSwKLSUgTkFNRS1wZyAodGhlIHBhZ2UgbnVtYmVyKSwgYW5kIE5BTUUtc250IChzZWN0aW9uIG51bWJlciBhbmQgdHlwZSkuCi0lIENhbGxlZCBmcm9tIFxmb29ub2RlcmVmLgorJSBhbmNob3IpLCB3aGljaCBjb25zaXN0cyBvZiB0aHJlZSBwYXJ0czoKKyUgMSkgTkFNRS10aXRsZSAtIHRoZSBjdXJyZW50IHNlY3Rpb25pbmcgbmFtZSB0YWtlbiBmcm9tIFx0aGlzc2VjdGlvbiwKKyUgICAgICAgICAgICAgICAgIG9yIHRoZSBhbmNob3IgbmFtZS4KKyUgMikgTkFNRS1zbnQgICAtIHNlY3Rpb24gbnVtYmVyIGFuZCB0eXBlLCBwYXNzZWQgYXMgdGhlIFNOVCBhcmcsIG9yCislICAgICAgICAgICAgICAgICBlbXB0eSBmb3IgYW5jaG9ycy4KKyUgMykgTkFNRS1wZyAgICAtIHRoZSBwYWdlIG51bWJlci4KICUgCi0lIFdlIGhhdmUgdG8gc2V0IFxpbmRleGR1bW1pZXMgc28gY29tbWFuZHMgc3VjaCBhcyBAY29kZSBpbiBhIHNlY3Rpb24KLSUgdGl0bGUgYXJlbid0IGV4cGFuZGVkLiAgSXQgd291bGQgYmUgbmljZXIgbm90IHRvIGV4cGFuZCB0aGUgdGl0bGVzIGluCi0lIHRoZSBmaXJzdCBwbGFjZSwgYnV0IHRoZXJlJ3Mgc28gbWFueSBsYXllcnMgdGhhdCB0aGF0IGlzIGhhcmQgdG8gZG8uCi0lCi0lIExpa2V3aXNlLCB1c2UgXHR1cm5vZmZhY3RpdmUgc28gdGhhdCBwdW5jdHVhdGlvbiBjaGFycyBzdWNoIGFzIHVuZGVyc2NvcmUKLSUgYW5kIGJhY2tzbGFzaCB3b3JrIGluIG5vZGUgbmFtZXMuCislIFRoaXMgaXMgY2FsbGVkIGZyb20gXGRvbm9kZXJlZiwgXGFuY2hvciwgYW5kIFxkb2Zsb2F0LiAgSW4gdGhlIGNhc2Ugb2YKKyUgZmxvYXRzLCB0aGVyZSBpcyBhbiBhZGRpdGlvbmFsIHBhcnQsIHdoaWNoIGlzIG5vdCB3cml0dGVuIGhlcmU6CislIDQpIE5BTUUtbG9mICAgLSB0aGUgdGV4dCBhcyBpdCBzaG91bGQgYXBwZWFyIGluIGEgQGxpc3RvZmZsb2F0cy4KICUgCi1cZGVmXHNldHJlZiMxIzJ7eyUKLSAgXGF0ZHVtbWllcworXGRlZlxzZXRyZWYjMSMyeyUKICAgXHBkZm1rZGVzdHsjMX0lCi0gICUKLSAgXHR1cm5vZmZhY3RpdmUKLSAgXGRvc2V0cXsjMS10aXRsZX17WXRpdGxlfSUKLSAgXGRvc2V0cXsjMS1wZ317WXBhZ2VudW1iZXJ9JQotICBcZG9zZXRxeyMxLXNudH17IzJ9JQotfX0KKyAgXGlmbGlua3MKKyAgICB7JQorICAgICAgXGF0ZHVtbWllcyAgJSBwcmVzZXJ2ZSBjb21tYW5kcywgYnV0IGRvbid0IGV4cGFuZCB0aGVtCisgICAgICBcdHVybm9mZmFjdGl2ZQorICAgICAgXG90aGVyYmFja3NsYXNoCisgICAgICBcZWRlZlx3cml0ZXhyZGVmIyMxIyMyeyUKKwlcd3JpdGVcYXV4ZmlsZXtAeHJkZWZ7IzEtJSAjMSBvZiBcc2V0cmVmLCBleHBhbmRlZCBieSB0aGUgXGVkZWYKKwkgICMjMX17IyMyfX0lIHRoZXNlIGFyZSBwYXJhbWV0ZXJzIG9mIFx3cml0ZXhyZGVmCisgICAgICB9JQorICAgICAgXHRva3MwID0gXGV4cGFuZGFmdGVye1x0aGlzc2VjdGlvbn0lCisgICAgICBcaW1tZWRpYXRlIFx3cml0ZXhyZGVme3RpdGxlfXtcdGhlXHRva3MwIH0lCisgICAgICBcaW1tZWRpYXRlIFx3cml0ZXhyZGVme3NudH17XGNzbmFtZSAjMlxlbmRjc25hbWV9JSBcWW51bWJlcmVkIGV0Yy4KKyAgICAgIFx3cml0ZXhyZGVme3BnfXtcZm9saW99JSB3aWxsIGJlIHdyaXR0ZW4gbGF0ZXIsIGR1cmluZyBcc2hpcG91dAorICAgIH0lCisgIFxmaQorfQogCiAlIEB4cmVmLCBAcHhyZWYsIGFuZCBAcmVmIGdlbmVyYXRlIGNyb3NzLXJlZmVyZW5jZXMuICBGb3IgXHhyZWZYLCAjMSBpcwogJSB0aGUgbm9kZSBuYW1lLCAjMiB0aGUgbmFtZSBvZiB0aGUgSW5mbyBjcm9zcy1yZWZlcmVuY2UsICMzIHRoZSBwcmludGVkCkBAIC01ODUyLDM4ICs1NzkxLDMzIEBACiBcZGVmXHhyZWZYWyMxLCMyLCMzLCM0LCM1LCM2XXtcYmVnaW5ncm91cAogICBcdW5zZXBzcGFjZXMKICAgXGRlZlxwcmludGVkbWFudWFse1xpZ25vcmVzcGFjZXMgIzV9JQotICBcZGVmXHByaW50ZWRub2RlbmFtZXtcaWdub3Jlc3BhY2VzICMzfSUKLSAgXHNldGJveDE9XGhib3h7XHByaW50ZWRtYW51YWx9JQotICBcc2V0Ym94MD1caGJveHtccHJpbnRlZG5vZGVuYW1lfSUKKyAgXGRlZlxwcmludGVkcmVmbmFtZXtcaWdub3Jlc3BhY2VzICMzfSUKKyAgXHNldGJveDE9XGhib3h7XHByaW50ZWRtYW51YWxcdW5za2lwfSUKKyAgXHNldGJveDA9XGhib3h7XHByaW50ZWRyZWZuYW1lXHVuc2tpcH0lCiAgIFxpZmRpbSBcd2QwID0gMHB0CiAgICAgJSBObyBwcmludGVkIG5vZGUgbmFtZSB3YXMgZXhwbGljaXRseSBnaXZlbi4KICAgICBcZXhwYW5kYWZ0ZXJcaWZ4XGNzbmFtZSBTRVR4cmVmLWF1dG9tYXRpYy1zZWN0aW9uLXRpdGxlXGVuZGNzbmFtZVxyZWxheAogICAgICAgJSBVc2UgdGhlIG5vZGUgbmFtZSBpbnNpZGUgdGhlIHNxdWFyZSBicmFja2V0cy4KLSAgICAgIFxkZWZccHJpbnRlZG5vZGVuYW1le1xpZ25vcmVzcGFjZXMgIzF9JQorICAgICAgXGRlZlxwcmludGVkcmVmbmFtZXtcaWdub3Jlc3BhY2VzICMxfSUKICAgICBcZWxzZQogICAgICAgJSBVc2UgdGhlIGFjdHVhbCBjaGFwdGVyL3NlY3Rpb24gdGl0bGUgYXBwZWFyIGluc2lkZQogICAgICAgJSB0aGUgc3F1YXJlIGJyYWNrZXRzLiAgVXNlIHRoZSByZWFsIHNlY3Rpb24gdGl0bGUgaWYgd2UgaGF2ZSBpdC4KICAgICAgIFxpZmRpbSBcd2QxID4gMHB0CiAgICAgICAgICUgSXQgaXMgaW4gYW5vdGhlciBtYW51YWwsIHNvIHdlIGRvbid0IGhhdmUgaXQuCi0gICAgICAgIFxkZWZccHJpbnRlZG5vZGVuYW1le1xpZ25vcmVzcGFjZXMgIzF9JQorICAgICAgICBcZGVmXHByaW50ZWRyZWZuYW1le1xpZ25vcmVzcGFjZXMgIzF9JQogICAgICAgXGVsc2UKICAgICAgICAgXGlmaGF2ZXhyZWZzCiAgICAgICAgICAgJSBXZSBrbm93IHRoZSByZWFsIHRpdGxlIGlmIHdlIGhhdmUgdGhlIHhyZWYgdmFsdWVzLgotICAgICAgICAgIFxkZWZccHJpbnRlZG5vZGVuYW1le1xyZWZ4eyMxLXRpdGxlfXt9fSUKKyAgICAgICAgICBcZGVmXHByaW50ZWRyZWZuYW1le1xyZWZ4eyMxLXRpdGxlfXt9fSUKICAgICAgICAgXGVsc2UKICAgICAgICAgICAlIE90aGVyd2lzZSBqdXN0IGNvcHkgdGhlIEluZm8gbm9kZSBuYW1lLgotICAgICAgICAgIFxkZWZccHJpbnRlZG5vZGVuYW1le1xpZ25vcmVzcGFjZXMgIzF9JQorICAgICAgICAgIFxkZWZccHJpbnRlZHJlZm5hbWV7XGlnbm9yZXNwYWNlcyAjMX0lCiAgICAgICAgIFxmaSUKICAgICAgIFxmaQogICAgIFxmaQogICBcZmkKICAgJQotICAlIElmIHdlIHVzZSBcdW5oYm94MCBhbmQgXHVuaGJveDEgdG8gcHJpbnQgdGhlIG5vZGUgbmFtZXMsIFRlWCBkb2VzIG5vdAotICAlIGluc2VydCBlbXB0eSBkaXNjcmV0aW9uYXJpZXMgYWZ0ZXIgaHlwaGVucywgd2hpY2ggbWVhbnMgdGhhdCBpdCB3aWxsCi0gICUgbm90IGZpbmQgYSBsaW5lIGJyZWFrIGF0IGEgaHlwaGVuIGluIGEgbm9kZSBuYW1lcy4gIFNpbmNlIHNvbWUgbWFudWFscwotICAlIGFyZSBiZXN0IHdyaXR0ZW4gd2l0aCBmYWlybHkgbG9uZyBub2RlIG5hbWVzLCBjb250YWluaW5nIGh5cGhlbnMsIHRoaXMKLSAgJSBpcyBhIGxvc3MuICBUaGVyZWZvcmUsIHdlIGdpdmUgdGhlIHRleHQgb2YgdGhlIG5vZGUgbmFtZSBhZ2Fpbiwgc28gaXQKLSAgJSBpcyBhcyBpZiBUZVggaXMgc2VlaW5nIGl0IGZvciB0aGUgZmlyc3QgdGltZS4KKyAgJSBNYWtlIGxpbmsgaW4gcGRmIG91dHB1dC4KICAgXGlmcGRmCiAgICAgXGxlYXZldm1vZGUKICAgICBcZ2V0ZmlsZW5hbWV7IzR9JQpAQCAtNTg5Myw1MyArNTgyNyw4NiBAQAogICAgICAgICAgZ290byBmaWxle1x0aGVcZmlsZW5hbWUucGRmfSBuYW1leyMxfSUKICAgICAgXGVsc2UKICAgICAgICBcc3RhcnRsaW5rIGF0dHJ7L0JvcmRlciBbMCAwIDBdfSUKLSAgICAgICAgIGdvdG8gbmFtZXsjMX0lCisgICAgICAgICBnb3RvIG5hbWV7XHBkZm1rcGdueyMxfX0lCiAgICAgIFxmaQogICAgIH0lCiAgICAgXGxpbmtjb2xvcgogICBcZmkKICAgJQotICBcaWZkaW0gXHdkMSA+IDBwdAotICAgIFxwdXR3b3Jkc2VjdGlvbnt9IGBgXHByaW50ZWRub2RlbmFtZScnIFxwdXR3b3JkaW57fSBcY2l0ZXtccHJpbnRlZG1hbnVhbH0lCisgICUgRmxvYXQgcmVmZXJlbmNlcyBhcmUgcHJpbnRlZCBjb21wbGV0ZWx5IGRpZmZlcmVudGx5OiAiRmlndXJlIDEuMiIKKyAgJSBpbnN0ZWFkIG9mICJbc29tZW5vZGVdLCBwLjMiLiAgV2UgZGlzdGluZ3Vpc2ggdGhlbSBieSB0aGUKKyAgJSBMQUJFTC10aXRsZSBiZWluZyBzZXQgdG8gYSBtYWdpYyBzdHJpbmcuCisgIHslCisgICAgJSBIYXZlIHRvIG90aGVyaWZ5IGV2ZXJ5dGhpbmcgc3BlY2lhbCB0byBhbGxvdyB0aGUgXGNzbmFtZSB0bworICAgICUgaW5jbHVkZSBhbiBfIGluIHRoZSB4cmVmIG5hbWUsIGV0Yy4KKyAgICBcaW5kZXhub2ZvbnRzCisgICAgXHR1cm5vZmZhY3RpdmUKKyAgICBcb3RoZXJiYWNrc2xhc2gKKyAgICBcZXhwYW5kYWZ0ZXJcZ2xvYmFsXGV4cGFuZGFmdGVyXGxldFxleHBhbmRhZnRlclxYdGhpc3JlZnRpdGxlCisgICAgICBcY3NuYW1lIFhSIzEtdGl0bGVcZW5kY3NuYW1lCisgIH0lCisgIFxpZmZsb2F0XFh0aGlzcmVmdGl0bGUKKyAgICAlIElmIHRoZSB1c2VyIHNwZWNpZmllZCB0aGUgcHJpbnQgbmFtZSAodGhpcmQgYXJnKSB0byB0aGUgcmVmLAorICAgICUgcHJpbnQgaXQgaW5zdGVhZCBvZiBvdXIgdXN1YWwgIkZpZ3VyZSAxLjIiLgorICAgIFxpZmRpbVx3ZDAgPSAwcHQKKyAgICAgIFxyZWZ4eyMxLXNudH0lCisgICAgXGVsc2UKKyAgICAgIFxwcmludGVkcmVmbmFtZQorICAgIFxmaQorICAgICUKKyAgICAlIGlmIHRoZSB1c2VyIGFsc28gZ2F2ZSB0aGUgcHJpbnRlZCBtYW51YWwgbmFtZSAoZmlmdGggYXJnKSwgYXBwZW5kCisgICAgJSAiaW4gTUFOVUFMTkFNRSIuIAorICAgIFxpZmRpbSBcd2QxID4gMHB0CisgICAgICBcc3BhY2UgXHB1dHdvcmRpbnt9IFxjaXRle1xwcmludGVkbWFudWFsfSUKKyAgICBcZmkKICAgXGVsc2UKLSAgICAlIF8gKGZvciBleGFtcGxlKSBoYXMgdG8gYmUgdGhlIGNoYXJhY3RlciBfIGZvciB0aGUgcHVycG9zZXMgb2YgdGhlCi0gICAgJSBjb250cm9sIHNlcXVlbmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5vZGUsIGJ1dCBpdCBoYXMgdG8gZXhwYW5kCi0gICAgJSBpbnRvIHRoZSB1c3VhbCBcbGVhdmV2bW9kZS4uLlx2cnVsZSBzdHVmZiBmb3IgcHVycG9zZXMgb2YKLSAgICAlIHByaW50aW5nLiBTbyB3ZSBcdHVybm9mZmFjdGl2ZSBmb3IgdGhlIFxyZWZ4LXNudCwgYmFjayBvbiBmb3IgdGhlCi0gICAgJSBwcmludGluZywgYmFjayBvZmYgZm9yIHRoZSBccmVmeC1wZy4KLSAgICB7XHR1cm5vZmZhY3RpdmUgXG90aGVyYmFja3NsYXNoCi0gICAgICUgT25seSBvdXRwdXQgYSBmb2xsb3dpbmcgc3BhY2UgaWYgdGhlIC1zbnQgcmVmIGlzIG5vbmVtcHR5OyBmb3IKLSAgICAgJSBAdW5udW1iZXJlZCBhbmQgQGFuY2hvciwgaXQgd29uJ3QgYmUuCi0gICAgIFxzZXRib3gyID0gXGhib3h7XGlnbm9yZXNwYWNlcyBccmVmeHsjMS1zbnR9e319JQotICAgICBcaWZkaW0gXHdkMiA+IDBwdCBccmVmeHsjMS1zbnR9XHNwYWNlXGZpCi0gICAgfSUKLSAgICAlIFtteW5vZGVdLAotICAgIFtccHJpbnRlZG5vZGVuYW1lXSxcc3BhY2UKLSAgICAlIHBhZ2UgMwotICAgIFx0dXJub2ZmYWN0aXZlIFxvdGhlcmJhY2tzbGFzaCBccHV0d29yZHBhZ2VcdGllXHJlZnh7IzEtcGd9e30lCisgICAgJSBub2RlL2FuY2hvciAobm9uLWZsb2F0KSByZWZlcmVuY2VzLgorICAgICUgCisgICAgJSBJZiB3ZSB1c2UgXHVuaGJveDAgYW5kIFx1bmhib3gxIHRvIHByaW50IHRoZSBub2RlIG5hbWVzLCBUZVggZG9lcyBub3QKKyAgICAlIGluc2VydCBlbXB0eSBkaXNjcmV0aW9uYXJpZXMgYWZ0ZXIgaHlwaGVucywgd2hpY2ggbWVhbnMgdGhhdCBpdCB3aWxsCisgICAgJSBub3QgZmluZCBhIGxpbmUgYnJlYWsgYXQgYSBoeXBoZW4gaW4gYSBub2RlIG5hbWVzLiAgU2luY2Ugc29tZSBtYW51YWxzCisgICAgJSBhcmUgYmVzdCB3cml0dGVuIHdpdGggZmFpcmx5IGxvbmcgbm9kZSBuYW1lcywgY29udGFpbmluZyBoeXBoZW5zLCB0aGlzCisgICAgJSBpcyBhIGxvc3MuICBUaGVyZWZvcmUsIHdlIGdpdmUgdGhlIHRleHQgb2YgdGhlIG5vZGUgbmFtZSBhZ2Fpbiwgc28gaXQKKyAgICAlIGlzIGFzIGlmIFRlWCBpcyBzZWVpbmcgaXQgZm9yIHRoZSBmaXJzdCB0aW1lLgorICAgIFxpZmRpbSBcd2QxID4gMHB0CisgICAgICBccHV0d29yZHNlY3Rpb257fSBgYFxwcmludGVkcmVmbmFtZScnIFxwdXR3b3JkaW57fSBcY2l0ZXtccHJpbnRlZG1hbnVhbH0lCisgICAgXGVsc2UKKyAgICAgICUgXyAoZm9yIGV4YW1wbGUpIGhhcyB0byBiZSB0aGUgY2hhcmFjdGVyIF8gZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGUKKyAgICAgICUgY29udHJvbCBzZXF1ZW5jZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBub2RlLCBidXQgaXQgaGFzIHRvIGV4cGFuZAorICAgICAgJSBpbnRvIHRoZSB1c3VhbCBcbGVhdmV2bW9kZS4uLlx2cnVsZSBzdHVmZiBmb3IgcHVycG9zZXMgb2YKKyAgICAgICUgcHJpbnRpbmcuIFNvIHdlIFx0dXJub2ZmYWN0aXZlIGZvciB0aGUgXHJlZngtc250LCBiYWNrIG9uIGZvciB0aGUKKyAgICAgICUgcHJpbnRpbmcsIGJhY2sgb2ZmIGZvciB0aGUgXHJlZngtcGcuCisgICAgICB7XHR1cm5vZmZhY3RpdmUgXG90aGVyYmFja3NsYXNoCisgICAgICAgJSBPbmx5IG91dHB1dCBhIGZvbGxvd2luZyBzcGFjZSBpZiB0aGUgLXNudCByZWYgaXMgbm9uZW1wdHk7IGZvcgorICAgICAgICUgQHVubnVtYmVyZWQgYW5kIEBhbmNob3IsIGl0IHdvbid0IGJlLgorICAgICAgIFxzZXRib3gyID0gXGhib3h7XGlnbm9yZXNwYWNlcyBccmVmeHsjMS1zbnR9e319JQorICAgICAgIFxpZmRpbSBcd2QyID4gMHB0IFxyZWZ4eyMxLXNudH1cc3BhY2VcZmkKKyAgICAgIH0lCisgICAgICAlIG91dHB1dCB0aGUgYFtteW5vZGVdJyB2aWEgYSBtYWNybyBzbyBpdCBjYW4gYmUgb3ZlcnJpZGRlbi4KKyAgICAgIFx4cmVmcHJpbnRub2RlbmFtZVxwcmludGVkcmVmbmFtZQorICAgICAgJQorICAgICAgJSBCdXQgd2UgYWx3YXlzIHdhbnQgYSBjb21tYSBhbmQgYSBzcGFjZToKKyAgICAgICxcc3BhY2UKKyAgICAgICUKKyAgICAgICUgb3V0cHV0IHRoZSBgcGFnZSAzJy4KKyAgICAgIFx0dXJub2ZmYWN0aXZlIFxvdGhlcmJhY2tzbGFzaCBccHV0d29yZHBhZ2VcdGllXHJlZnh7IzEtcGd9e30lCisgICAgXGZpCiAgIFxmaQogICBcZW5kbGluawogXGVuZGdyb3VwfQogCi0lIFxkb3NldHEgaXMgY2FsbGVkIGZyb20gXHNldHJlZiB0byBkbyB0aGUgYWN0dWFsIFx3cml0ZSAoXGlmbGlua3MpLgorJSBUaGlzIG1hY3JvIGlzIGNhbGxlZCBmcm9tIFx4cmVmWCBmb3IgdGhlIGBbbm9kZW5hbWVdJyBwYXJ0IG9mIHhyZWYKKyUgb3V0cHV0LiAgSXQncyBhIHNlcGFyYXRlIG1hY3JvIG9ubHkgc28gaXQgY2FuIGJlIGNoYW5nZWQgbW9yZSBlYXNpbHksCislIHNpbmNlIHNxdWFyZSBicmFja2V0cyBkb24ndCB3b3JrIHdlbGwgaW4gc29tZSBkb2N1bWVudHMuICBQYXJ0aWN1bGFybHkKKyUgb25lIHRoYXQgQm9iIGlzIHdvcmtpbmcgb24gOikuCiAlCi1cZGVmXGRvc2V0cSMxIzJ7JQotICB7XGxldFxmb2xpbz0wJQotICAgXGVkZWZcbmV4dHtcd3JpdGVcYXV4ZmlsZXtcaW50ZXJuYWxzZXRxeyMxfXsjMn19fSUKLSAgIFxpZmxpbmtzIFxuZXh0IFxmaQotICB9JQotfQorXGRlZlx4cmVmcHJpbnRub2RlbmFtZSMxe1sjMV19CiAKLSUgXGludGVybmFsc2V0cXtmb299e3BhZ2V9IGV4cGFuZHMgaW50bwotJSAgIENIQVJBQ1RFUlMgQHhyZGVme2Zvb317Li4uZXhwYW5zaW9uIG9mIFxwYWdlLi4ufQotXGRlZlxpbnRlcm5hbHNldHEjMSMye0B4cmRlZnsjMX17XGNzbmFtZSAjMlxlbmRjc25hbWV9fQotCi0lIFRoaW5ncyB0byBiZSBleHBhbmRlZCBieSBcaW50ZXJuYWxzZXRxLgotJSAKLVxkZWZcWXBhZ2VudW1iZXJ7XGZvbGlvfQotXGRlZlxZdGl0bGV7XHRoaXNzZWN0aW9ufQorJSBUaGluZ3MgcmVmZXJyZWQgdG8gYnkgXHNldHJlZi4KKyUKIFxkZWZcWW5vdGhpbmd7fQotXGRlZlxZc2VjdGlvbm51bWJlcmFuZHR5cGV7JQorXGRlZlxZb21pdGZyb210b2N7fQorXGRlZlxZbnVtYmVyZWR7JQogICBcaWZudW1cc2Vjbm89MAogICAgIFxwdXR3b3JkQ2hhcHRlckB0aWUgXHRoZVxjaGFwbm8KICAgXGVsc2UgXGlmbnVtXHN1YnNlY25vPTAKQEAgLTU5NTAsOCArNTkxNyw3IEBACiAgICAgXHB1dHdvcmRTZWN0aW9uQHRpZSBcdGhlXGNoYXBuby5cdGhlXHNlY25vLlx0aGVcc3Vic2Vjbm8uXHRoZVxzdWJzdWJzZWNubwogICBcZmlcZmlcZmkKIH0KLQotXGRlZlxZYXBwZW5kaXhsZXR0ZXJhbmR0eXBleyUKK1xkZWZcWWFwcGVuZGl4eyUKICAgXGlmbnVtXHNlY25vPTAKICAgICAgXHB1dHdvcmRBcHBlbmRpeEB0aWUgQGNoYXJcdGhlXGFwcGVuZGl4bm97fSUKICAgXGVsc2UgXGlmbnVtXHN1YnNlY25vPTAKQEAgLTU5NjQsMTUgKzU5MzAsNiBAQAogICBcZmlcZmlcZmkKIH0KIAotJSBVc2UgVGVYIDMuMCdzIFxpbnB1dGxpbmVubyB0byBnZXQgdGhlIGxpbmUgbnVtYmVyLCBmb3IgYmV0dGVyIGVycm9yCi0lIG1lc3NhZ2VzLCBidXQgaWYgd2UncmUgdXNpbmcgYW4gb2xkIHZlcnNpb24gb2YgVGVYLCBkb24ndCBkbyBhbnl0aGluZy4KLSUKLVxpZnhcaW5wdXRsaW5lbm9cdGhpc2lzdW5kZWZpbmVkCi0gIFxsZXRcbGluZW51bWJlciA9IFxlbXB0eSAlIFByZS0zLjAuCi1cZWxzZQotICBcZGVmXGxpbmVudW1iZXJ7XHRoZVxpbnB1dGxpbmVubzpcc3BhY2V9Ci1cZmkKLQogJSBEZWZpbmUgXHJlZnh7TkFNRX17U1VGRklYfSB0byByZWZlcmVuY2UgYSBjcm9zcy1yZWZlcmVuY2Ugc3RyaW5nIG5hbWVkIE5BTUUuCiAlIElmIGl0cyB2YWx1ZSBpcyBub25lbXB0eSwgU1VGRklYIGlzIG91dHB1dCBhZnRlcndhcmQuCiAlCkBAIC01OTgxLDcgKzU5MzgsNyBAQAogICAgIFxpbmRleG5vZm9udHMKICAgICBcb3RoZXJiYWNrc2xhc2gKICAgICBcZXhwYW5kYWZ0ZXJcZ2xvYmFsXGV4cGFuZGFmdGVyXGxldFxleHBhbmRhZnRlclx0aGlzcmVmWAotICAgICAgXGNzbmFtZSBYIzFcZW5kY3NuYW1lCisgICAgICBcY3NuYW1lIFhSIzFcZW5kY3NuYW1lCiAgIH0lCiAgIFxpZnhcdGhpc3JlZlhccmVsYXgKICAgICAlIElmIG5vdCBkZWZpbmVkLCBzYXkgc29tZXRoaW5nIGF0IGxlYXN0LgpAQCAtNjAwMywxMSArNTk2MCw0NCBAQAogICAjMiUgT3V0cHV0IHRoZSBzdWZmaXggaW4gYW55IGNhc2UuCiB9CiAKLSUgVGhpcyBpcyB0aGUgbWFjcm8gaW52b2tlZCBieSBlbnRyaWVzIGluIHRoZSBhdXggZmlsZS4KKyUgVGhpcyBpcyB0aGUgbWFjcm8gaW52b2tlZCBieSBlbnRyaWVzIGluIHRoZSBhdXggZmlsZS4gIFVzdWFsbHkgaXQncworJSBqdXN0IGEgXGRlZiAod2UgcHJlcGVuZCBYUiB0byB0aGUgY29udHJvbCBzZXF1ZW5jZSBuYW1lIHRvIGF2b2lkCislIGNvbGxpc2lvbnMpLiAgQnV0IGlmIHRoaXMgaXMgYSBmbG9hdCB0eXBlLCB3ZSBoYXZlIG1vcmUgd29yayB0byBkby4KICUKLVxkZWZceHJkZWYjMXtcZXhwYW5kYWZ0ZXJcZ2RlZlxjc25hbWUgWCMxXGVuZGNzbmFtZX0KK1xkZWZceHJkZWYjMSMyeyUKKyAgXGV4cGFuZGFmdGVyXGdkZWZcY3NuYW1lIFhSIzFcZW5kY3NuYW1leyMyfSUgcmVtZW1iZXIgdGhpcyB4cmVmIHZhbHVlLgorICAlCisgICUgV2FzIHRoYXQgeHJlZiBjb250cm9sIHNlcXVlbmNlIHRoYXQgd2UganVzdCBkZWZpbmVkIGZvciBhIGZsb2F0PworICBcZXhwYW5kYWZ0ZXJcaWZmbG9hdFxjc25hbWUgWFIjMVxlbmRjc25hbWUKKyAgICAlIGl0IHdhcyBhIGZsb2F0LCBhbmQgd2UgaGF2ZSB0aGUgKHNhZmUpIGZsb2F0IHR5cGUgaW4gXGlmZmxvYXR0eXBlLgorICAgIFxleHBhbmRhZnRlclxsZXRcZXhwYW5kYWZ0ZXJcZmxvYXRsaXN0CisgICAgICBcY3NuYW1lIGZsb2F0bGlzdFxpZmZsb2F0dHlwZVxlbmRjc25hbWUKKyAgICAlIAorICAgICUgSXMgdGhpcyB0aGUgZmlyc3QgdGltZSB3ZSd2ZSBzZWVuIHRoaXMgZmxvYXQgdHlwZT8KKyAgICBcZXhwYW5kYWZ0ZXJcaWZ4XGZsb2F0bGlzdFxyZWxheAorICAgICAgXHRva3MwID0ge1xkb30lIHllcywgc28ganVzdCBcZG8KKyAgICBcZWxzZQorICAgICAgJSBoYWQgaXQgYmVmb3JlLCBzbyBwcmVzZXJ2ZSBwcmV2aW91cyBlbGVtZW50cyBpbiBsaXN0LgorICAgICAgXHRva3MwID0gXGV4cGFuZGFmdGVye1xmbG9hdGxpc3RcZG99JQorICAgIFxmaQorICAgICUKKyAgICAlIFJlbWVtYmVyIHRoaXMgeHJlZiBpbiB0aGUgY29udHJvbCBzZXF1ZW5jZSBcZmxvYXRsaXN0RkxPQVRUWVBFLAorICAgICUgZm9yIGxhdGVyIHVzZSBpbiBcbGlzdG9mZmxvYXRzLgorICAgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSBmbG9hdGxpc3RcaWZmbG9hdHR5cGVcZW5kY3NuYW1le1x0aGVcdG9rczB7IzF9fSUKKyAgXGZpCit9CiAKICUgUmVhZCB0aGUgbGFzdCBleGlzdGluZyBhdXggZmlsZSwgaWYgYW55LiAgTm8gZXJyb3IgaWYgbm9uZSBleGlzdHMuCislIAorXGRlZlx0cnlhdXhmaWxleyUKKyAgXG9wZW5pbiAxIFxqb2JuYW1lLmF1eAorICBcaWZlb2YgMSBcZWxzZQorICAgIFxyZWFkYXV4ZmlsZQorICAgIFxnbG9iYWxcaGF2ZXhyZWZzdHJ1ZQorICBcZmkKKyAgXGNsb3NlaW4gMQorfQorCiBcZGVmXHJlYWRhdXhmaWxle1xiZWdpbmdyb3VwCiAgIFxjYXRjb2RlYFxeXkA9XG90aGVyCiAgIFxjYXRjb2RlYFxeXkE9XG90aGVyCkBAIC02MDY2LDcgKzYwNTYsMTYgQEAKICAgXGNhdGNvZGVgXCU9XG90aGVyCiAgIFxjYXRjb2RlYCs9XG90aGVyICUgYXZvaWQgXCsgZm9yIHBhcmFub2lhIGV2ZW4gdGhvdWdoIHdlJ3ZlIHR1cm5lZCBpdCBvZmYKICAgJQotICAlIE1ha2UgdGhlIGNoYXJhY3RlcnMgMTI4LTI1NSBiZSBwcmludGluZyBjaGFyYWN0ZXJzCisgICUgVGhpcyBpcyB0byBzdXBwb3J0IFwgaW4gbm9kZSBuYW1lcyBhbmQgdGl0bGVzLCBzaW5jZSB0aGUgXAorICAlIGNoYXJhY3RlcnMgZW5kIHVwIGluIGEgXGNzbmFtZS4gIEl0J3MgZWFzaWVyIHRoYW4KKyAgJSBsZWF2aW5nIGl0IGFjdGl2ZSBhbmQgbWFraW5nIGl0cyBhY3RpdmUgZGVmaW5pdGlvbiBhbiBhY3R1YWwgXAorICAlIGNoYXJhY3Rlci4gIFdoYXQgSSBkb24ndCB1bmRlcnN0YW5kIGlzIHdoeSBpdCB3b3JrcyBpbiB0aGUgKnZhbHVlKgorICAlIG9mIHRoZSB4cmRlZi4gIFNlZW1zIGxpa2UgaXQgc2hvdWxkIGJlIGEgY2F0Y29kZTEyIFwsIGFuZCB0aGF0CisgICUgc2hvdWxkIG5vdCB0eXBlc2V0IHByb3Blcmx5LiAgQnV0IGl0IHdvcmtzLCBzbyBJJ20gbW92aW5nIG9uIGZvcgorICAlIG5vdy4gIC0ta2FybCwgMTVqYW4wNC4KKyAgXGNhdGNvZGVgXFw9XG90aGVyCisgICUKKyAgJSBNYWtlIHRoZSBjaGFyYWN0ZXJzIDEyOC0yNTUgYmUgcHJpbnRpbmcgY2hhcmFjdGVycy4KICAgeyUKICAgICBcY291bnQgMT0xMjgKICAgICBcZGVmXGxvb3B7JQpAQCAtNjA3NiwzMSArNjA3NSwxNyBAQAogICAgIH0lCiAgIH0lCiAgICUKLSAgJSBUdXJuIG9mZiBcIGFzIGFuIGVzY2FwZSBzbyB3ZSBkbyBub3QgbG9zZSBvbgotICAlIGVudHJpZXMgd2hpY2ggd2VyZSBkdW1wZWQgd2l0aCBjb250cm9sIHNlcXVlbmNlcyBpbiB0aGVpciBuYW1lcy4KLSAgJSBGb3IgZXhhbXBsZSwgQHhyZGVmeyRcbGVxICQtZnVufXtwYWdlIC4uLn0gbWFkZSBieSBAZGVmdW4gXl4KLSAgJSBSZWZlcmVuY2UgdG8gc3VjaCBlbnRyaWVzIHN0aWxsIGRvZXMgbm90IHdvcmsgdGhlIHdheSBvbmUgd291bGQgd2lzaCwKLSAgJSBidXQgYXQgbGVhc3QgdGhleSBkbyBub3QgYm9tYiBvdXQgd2hlbiB0aGUgYXV4IGZpbGUgaXMgcmVhZCBpbi4KLSAgXGNhdGNvZGVgXFw9XG90aGVyCi0gICUKLSAgJSBAIGlzIG91ciBlc2NhcGUgY2hhcmFjdGVyIGluIC5hdXggZmlsZXMuCisgICUgQCBpcyBvdXIgZXNjYXBlIGNoYXJhY3RlciBpbiAuYXV4IGZpbGVzLCBhbmQgd2UgbmVlZCBicmFjZXMuCiAgIFxjYXRjb2RlYFx7PTEKICAgXGNhdGNvZGVgXH09MgogICBcY2F0Y29kZWBcQD0wCiAgICUKLSAgXG9wZW5pbiAxIFxqb2JuYW1lLmF1eAotICBcaWZlb2YgMSBcZWxzZQotICAgIFxjbG9zZWluIDEKLSAgICBcaW5wdXQgXGpvYm5hbWUuYXV4Ci0gICAgXGdsb2JhbFxoYXZleHJlZnN0cnVlCi0gICAgXGdsb2JhbFx3YXJuZWRvYnN0cnVlCi0gIFxmaQotICAlIE9wZW4gdGhlIG5ldyBhdXggZmlsZS4gIFRlWCB3aWxsIGNsb3NlIGl0IGF1dG9tYXRpY2FsbHkgYXQgZXhpdC4KLSAgXG9wZW5vdXRcYXV4ZmlsZT1cam9ibmFtZS5hdXgKKyAgXGlucHV0IFxqb2JuYW1lLmF1eAogXGVuZGdyb3VwfQogCiAKLSUgRm9vdG5vdGVzLgorXG1lc3NhZ2V7aW5zZXJ0aW9ucyx9CislIGluY2x1ZGluZyBmb290bm90ZXMuCiAKIFxuZXdjb3VudCBcZm9vdG5vdGVubwogCkBAIC02MTE0LDE5ICs2MDk5LDE5IEBACiAlIEBmb290bm90ZXN0eWxlIGlzIG1lYW5pbmdmdWwgZm9yIGluZm8gb3V0cHV0IG9ubHkuCiBcbGV0XGZvb3Rub3Rlc3R5bGU9XGNvbW1lbnQKIAotXGxldFxwdGV4Zm9vdG5vdGU9XGZvb3Rub3RlCi0KIHtcY2F0Y29kZSBgXEA9MTEKICUKICUgQXV0by1udW1iZXIgZm9vdG5vdGVzLiAgT3RoZXJ3aXNlIGxpa2UgcGxhaW4uCiBcZ2RlZlxmb290bm90ZXslCisgIFxsZXRcaW5kZW50PVxwdGV4aW5kZW50CisgIFxsZXRcbm9pbmRlbnQ9XHB0ZXhub2luZGVudAogICBcZ2xvYmFsXGFkdmFuY2VcZm9vdG5vdGVubyBieSBcQG5lCiAgIFxlZGVmXHRoaXNmb290bm97JF57XHRoZVxmb290bm90ZW5vfSR9JQogICAlCiAgICUgSW4gY2FzZSB0aGUgZm9vdG5vdGUgY29tZXMgYXQgdGhlIGVuZCBvZiBhIHNlbnRlbmNlLCBwcmVzZXJ2ZSB0aGUKICAgJSBleHRyYSBzcGFjaW5nIGFmdGVyIHdlIGRvIHRoZSBmb290bm90ZSBudW1iZXIuCiAgIFxsZXRcQHNmXGVtcHR5Ci0gIFxpZmhtb2RlXGVkZWZcQHNme1xzcGFjZWZhY3Rvclx0aGVcc3BhY2VmYWN0b3J9XC9cZmkKKyAgXGlmaG1vZGVcZWRlZlxAc2Z7XHNwYWNlZmFjdG9yXHRoZVxzcGFjZWZhY3Rvcn1ccHRleHNsYXNoXGZpCiAgICUKICAgJSBSZW1vdmUgaW5hZHZlcnRlbnQgYmxhbmsgc3BhY2UgYmVmb3JlIHR5cGVzZXR0aW5nIHRoZSBmb290bm90ZSBudW1iZXIuCiAgIFx1bnNraXAKQEAgLTYxMzcsMTcgKzYxMjIsMTIgQEAKICUgRG9uJ3QgYm90aGVyIHdpdGggdGhlIHRyaWNrZXJ5IGluIHBsYWluLnRleCB0byBub3QgcmVxdWlyZSB0aGUKICUgZm9vdG5vdGUgdGV4dCBhcyBhIHBhcmFtZXRlci4gIE91ciBmb290bm90ZXMgZG9uJ3QgbmVlZCB0byBiZSBzbyBnZW5lcmFsLgogJQotJSBPaCB5ZXMsIHRoZXkgZG87IG90aGVyd2lzZSwgQGlmc2V0IGFuZCBhbnl0aGluZyBlbHNlIHRoYXQgdXNlcwotJSBccGFyc2VhcmdsaW5lIGZhaWwgaW5zaWRlIGZvb3Rub3RlcyBiZWNhdXNlIHRoZSB0b2tlbnMgYXJlIGZpeGVkIHdoZW4KKyUgT2ggeWVzLCB0aGV5IGRvOyBvdGhlcndpc2UsIEBpZnNldCAoYW5kIGFueXRoaW5nIGVsc2UgdGhhdCB1c2VzCislIFxwYXJzZWFyZ2xpbmUpIGZhaWxzIGluc2lkZSBmb290bm90ZXMgYmVjYXVzZSB0aGUgdG9rZW5zIGFyZSBmaXhlZCB3aGVuCiAlIHRoZSBmb290bm90ZSBpcyByZWFkLiAgLS1rYXJsLCAxNm5vdjk2LgogJQotJSBUaGUgc3RhcnQgb2YgdGhlIGZvb3Rub3RlIGxvb2tzIHVzdWFsbHkgbGlrZSB0aGlzOgotXGdkZWZcc3RhcnRmb290aW5ze1xpbnNlcnRcZm9vdGluc1xiZ3JvdXB9Ci0lCi0lIC4uLiBidXQgdGhpcyBtYWNybyBpcyByZWRlZmluZWQgaW5zaWRlIEBtdWx0aXRhYmxlLgotJQogXGdkZWZcZG9mb290bm90ZXslCi0gIFxzdGFydGZvb3RpbnMKKyAgXGluc2VydFxmb290aW5zXGJncm91cAogICAlIFdlIHdhbnQgdG8gdHlwZXNldCB0aGlzIHRleHQgYXMgYSBub3JtYWwgcGFyYWdyYXBoLCBldmVuIGlmIHRoZQogICAlIGZvb3Rub3RlIHJlZmVyZW5jZSBvY2N1cnMgaW4gKGZvciBleGFtcGxlKSBhIGRpc3BsYXkgZW52aXJvbm1lbnQuCiAgICUgU28gcmVzZXQgc29tZSBwYXJhbWV0ZXJzLgpAQCAtNjE4Myw0MCArNjE2Myw2NiBAQAogfQogfSVlbmQgXGNhdGNvZGUgYFxAPTExCiAKLSUgQHwgaW5zZXJ0cyBhIGNoYW5nZWJhciB0byB0aGUgbGVmdCBvZiB0aGUgY3VycmVudCBsaW5lLiAgSXQgc2hvdWxkCi0lIHN1cnJvdW5kIGFueSBjaGFuZ2VkIHRleHQuICBUaGlzIGFwcHJvYWNoIGRvZXMgKm5vdCogd29yayBpZiB0aGUKLSUgY2hhbmdlIHNwYW5zIG1vcmUgdGhhbiB0d28gbGluZXMgb2Ygb3V0cHV0LiAgVG8gaGFuZGxlIHRoYXQsIHdlIHdvdWxkCi0lIGhhdmUgYWRvcHQgYSBtdWNoIG1vcmUgZGlmZmljdWx0IGFwcHJvYWNoIChwdXR0aW5nIG1hcmtzIGludG8gdGhlIG1haW4KLSUgdmVydGljYWwgbGlzdCBmb3IgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGVhY2ggY2hhbmdlKS4KKyUgSW4gY2FzZSBhIEBmb290bm90ZSBhcHBlYXJzIGluIGEgdmJveCwgc2F2ZSB0aGUgZm9vdG5vdGUgdGV4dCBhbmQgY3JlYXRlCislIHRoZSByZWFsIFxpbnNlcnQganVzdCBhZnRlciB0aGUgdmJveCBmaW5pc2hlZC4gIE90aGVyd2lzZSwgdGhlIGluc2VydGlvbgorJSB3b3VsZCBiZSBsb3N0LgorJSBTaW1pbGFyaWx5LCBpZiBhIEBmb290bm90ZSBhcHBlYXJzIGluc2lkZSBhbiBhbGlnbm1lbnQsIHNhdmUgdGhlIGZvb3Rub3RlCislIHRleHQgdG8gYSBib3ggYW5kIG1ha2UgdGhlIFxpbnNlcnQgd2hlbiBhIHJvdyBvZiB0aGUgdGFibGUgaXMgZmluaXNoZWQuCislIEFuZCB0aGUgc2FtZSBjYW4gYmUgZG9uZSBmb3Igb3RoZXIgaW5zZXJ0IGNsYXNzZXMuICAtLWthc2FsLCAxNm5vdjAzLgorCislIFJlcGxhY2UgdGhlIFxpbnNlcnQgcHJpbWl0aXZlIGJ5IGEgY2hlYXRpbmcgbWFjcm8uCislIERlZXBlciBpbnNpZGUsIGp1c3QgbWFrZSBzdXJlIHRoYXQgdGhlIHNhdmVkIGluc2VydGlvbnMgYXJlIG5vdCBzcGlsbGVkCislIG91dCBwcmVtYXR1cmVseS4KICUKLVxkZWZcfHslCi0gICUgXHZhZGp1c3QgY2FuIG9ubHkgYmUgdXNlZCBpbiBob3Jpem9udGFsIG1vZGUuCi0gIFxsZWF2ZXZtb2RlCi0gICUKLSAgJSBBcHBlbmQgdGhpcyB2ZXJ0aWNhbCBtb2RlIG1hdGVyaWFsIGFmdGVyIHRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIG91dHB1dC4KLSAgXHZhZGp1c3R7JQotICAgICUgV2Ugd2FudCB0byBpbnNlcnQgYSBydWxlIHdpdGggdGhlIGhlaWdodCBhbmQgZGVwdGggb2YgdGhlIGN1cnJlbnQKLSAgICAlIGxlYWRpbmc7IHRoYXQgaXMgZXhhY3RseSB3aGF0IFxzdHJ1dGJveCBpcyBzdXBwb3NlZCB0byByZWNvcmQuCi0gICAgXHZza2lwLVxiYXNlbGluZXNraXAKLSAgICAlCi0gICAgJSBcdmFkanVzdC1pdGVtcyBhcmUgaW5zZXJ0ZWQgYXQgdGhlIGxlZnQgZWRnZSBvZiB0aGUgdHlwZS4gIFNvCi0gICAgJSB0aGUgXGxsYXAgaGVyZSBtb3ZlcyBvdXQgaW50byB0aGUgbGVmdC1oYW5kIG1hcmdpbi4KLSAgICBcbGxhcHslCi0gICAgICAlCi0gICAgICAlIEZvciBhIHRoaWNrZXIgb3IgdGhpbm5lciBiYXIsIGNoYW5nZSB0aGUgYDFwdCcuCi0gICAgICBcdnJ1bGUgaGVpZ2h0XGJhc2VsaW5lc2tpcCB3aWR0aDFwdAotICAgICAgJQotICAgICAgJSBUaGlzIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBiYXIgYW5kIHRoZSB0ZXh0LgotICAgICAgXGhza2lwIDEycHQKLSAgICB9JQotICB9JQorXGRlZlxzdGFydHNhdmluZ2luc2VydHN7JQorICBcaWZ4IFxpbnNlcnRccHRleGluc2VydAorICAgIFxsZXRcaW5zZXJ0XHNhdmVpbnNlcnQKKyAgXGVsc2UKKyAgICBcbGV0XGNoZWNraW5zZXJ0c1xyZWxheAorICBcZmkKIH0KIAotJSBGb3IgYSBmaW5hbCBjb3B5LCB0YWtlIG91dCB0aGUgcmVjdGFuZ2xlcwotJSB0aGF0IG1hcmsgb3ZlcmZ1bGwgYm94ZXMgKGluIGNhc2UgeW91IGhhdmUgZGVjaWRlZAotJSB0aGF0IHRoZSB0ZXh0IGxvb2tzIG9rIGV2ZW4gdGhvdWdoIGl0IHBhc3NlcyB0aGUgbWFyZ2luKS4KKyUgVGhpcyBcaW5zZXJ0IHJlcGxhY2VtZW50IHdvcmtzIGZvciBib3RoIFxpbnNlcnRcZm9vdGluc3tmb299IGFuZAorJSBcaW5zZXJ0XGZvb3RpbnNcYmdyb3VwIGZvb1xlZ3JvdXAsIGJ1dCBpdCBkb2Vzbid0IHdvcmsgZm9yIFxpbnNlcnQyN3tmb299LgogJQotXGRlZlxmaW5hbG91dHtcb3ZlcmZ1bGxydWxlPTBwdH0KK1xkZWZcc2F2ZWluc2VydCMxeyUKKyAgXGVkZWZcbmV4dHtcbm9leHBhbmRcc2F2ZXRvYm94IFxtYWtlU0FWRW5hbWUjMX0lCisgIFxhZnRlcmFzc2lnbm1lbnRcbmV4dAorICAlIHN3YWxsb3cgdGhlIGxlZnQgYnJhY2UKKyAgXGxldFx0ZW1wID0KK30KK1xkZWZcbWFrZVNBVkVuYW1lIzF7XG1ha2Vjc25hbWV7U0FWRVxleHBhbmRhZnRlclxnb2JibGVcc3RyaW5nIzF9fQorXGRlZlxzYXZldG9ib3gjMXtcZ2xvYmFsXHNldGJveCMxID0gXHZib3hcYmdyb3VwIFx1bnZib3gjMX0KKworXGRlZlxjaGVja3NhdmVpbnMjMXtcaWZ2b2lkIzFcZWxzZSBccGxhY2VzYXZlaW5zIzFcZml9CisKK1xkZWZccGxhY2VzYXZlaW5zIzF7JQorICBccHRleGluc2VydCBcY3NuYW1lXGV4cGFuZGFmdGVyXGdvYmJsZXNhdmVcc3RyaW5nIzFcZW5kY3NuYW1lCisgICAge1xib3gjMX0lCit9CisKKyUgZWF0IEBTQVZFIC0tIGJld2FyZSwgYWxsIG9mIHRoZW0gaGF2ZSBjYXRjb2RlIFxvdGhlcjoKK3sKKyAgXGRlZlxkb3NwZWNpYWxze1xkbyBTXGRvIEFcZG8gVlxkbyBFfSBcdW5jYXRjb2Rlc3BlY2lhbHMgICUgIDstKQorICBcZ2RlZlxnb2JibGVzYXZlIEBTQVZFe30KK30KKworJSBpbml0aWFsaXphdGlvbjoKK1xkZWZcbmV3c2F2ZWlucyAjMXslCisgIFxlZGVmXG5leHR7XG5vZXhwYW5kXG5ld3NhdmVpbnNYIFxtYWtlU0FWRW5hbWUjMX0lCisgIFxuZXh0Cit9CitcZGVmXG5ld3NhdmVpbnNYICMxeyUKKyAgXGNzbmFtZSBuZXdib3hcZW5kY3NuYW1lICMxJQorICBcZXhwYW5kYWZ0ZXJcZGVmXGV4cGFuZGFmdGVyXGNoZWNraW5zZXJ0c1xleHBhbmRhZnRlcntcY2hlY2tpbnNlcnRzCisgICAgXGNoZWNrc2F2ZWlucyAjMX0lCit9CisKKyUgaW5pdGlhbGl6ZToKK1xsZXRcY2hlY2tpbnNlcnRzXGVtcHR5CitcbmV3c2F2ZWluc1xmb290aW5zCitcbmV3c2F2ZWluc1xtYXJnaW4KKwogCiAlIEBpbWFnZS4gIFdlIHVzZSB0aGUgbWFjcm9zIGZyb20gZXBzZi50ZXggdG8gc3VwcG9ydCB0aGlzLgogJSBJZiBlcHNmLnRleCBpcyBub3QgaW5zdGFsbGVkIGFuZCBAaW1hZ2UgaXMgdXNlZCwgd2UgY29tcGxhaW4uCkBAIC02MjI2LDEyICs2MjMyLDEyIEBACiAlIHVuZG9uZSBhbmQgdGhlIG5leHQgaW1hZ2Ugd291bGQgZmFpbC4KIFxvcGVuaW4gMSA9IGVwc2YudGV4CiBcaWZlb2YgMSBcZWxzZQotICBcY2xvc2VpbiAxCiAgICUgRG8gbm90IGJvdGhlciBzaG93aW5nIGJhbm5lciB3aXRoIGVwc2YudGV4IHYyLjdrIChhdmFpbGFibGUgaW4KICAgJSBkb2MvZXBzZi50ZXggYW5kIG9uIGN0YW4pLgogICBcZGVmXGVwc2Zhbm5vdW5jZXtcdG9rczAgPSB9JQogICBcaW5wdXQgZXBzZi50ZXgKIFxmaQorXGNsb3NlaW4gMQogJQogJSBXZSB3aWxsIG9ubHkgY29tcGxhaW4gb25jZSBhYm91dCBsYWNrIG9mIGVwc2YudGV4LgogXG5ld2lmXGlmd2FybmVkbm9lcHNmCkBAIC02MjY3LDcgKzYyNzMsNyBAQAogICAgIFxub2JyZWFrXGJpZ3NraXAKICAgICAlIFVzdWFsbHkgd2UnbGwgaGF2ZSB0ZXh0IGFmdGVyIHRoZSBpbWFnZSB3aGljaCB3aWxsIGluc2VydAogICAgICUgXHBhcnNraXAgZ2x1ZSwgc28gaW5zZXJ0IGl0IGhlcmUgdG9vIHRvIGVxdWFsaXplIHRoZSBzcGFjZQotICAgICUgYWJvdmUgYW5kIGJlbG93LiAKKyAgICAlIGFib3ZlIGFuZCBiZWxvdy4KICAgICBcbm9icmVha1x2c2tpcFxwYXJza2lwCiAgICAgXG5vYnJlYWsKICAgICBcbGluZVxiZ3JvdXBcaHNzCkBAIC02Mjg3LDYgKzYyOTMsMjQ5IEBACiBcZW5kZ3JvdXB9CiAKIAorJSBAZmxvYXQgRkxPQVRUWVBFLExPQyAuLi4gQGVuZCBmbG9hdCBmb3IgZGlzcGxheWVkIGZpZ3VyZXMsIHRhYmxlcywgZXRjLgorJSBXZSBkb24ndCBhY3R1YWxseSBpbXBsZW1lbnQgZmxvYXRpbmcgeWV0LCB3ZSBqdXN0IHBsb3AgdGhlIGZsb2F0ICJoZXJlIi4KKyUgQnV0IGl0IHNlZW1lZCB0aGUgYmVzdCBuYW1lIGZvciB0aGUgZnV0dXJlLgorJSAKK1xlbnZwYXJzZWFyZ2RlZlxmbG9hdHtcZG9mbG9hdCAjMSwsLFxmaW5pc2h9CisKKyUgIzEgaXMgdGhlIG9wdGlvbmFsIEZMT0FUVFlQRSwgdGhlIHRleHQgbGFiZWwgZm9yIHRoaXMgZmxvYXQsIHR5cGljYWxseQorJSAiRmlndXJlIiwgIlRhYmxlIiwgIkV4YW1wbGUiLCBldGMuICBDYW4ndCBjb250YWluIGNvbW1hcy4gIElmIG9taXR0ZWQsCislIHRoaXMgZmxvYXQgd2lsbCBub3QgYmUgbnVtYmVyZWQgYW5kIGNhbm5vdCBiZSByZWZlcnJlZCB0by4KKyUgCislICMyIGlzIHRoZSBvcHRpb25hbCB4cmVmIGxhYmVsLiAgQWxzbyBtdXN0IGJlIHByZXNlbnQgZm9yIHRoZSBmbG9hdCB0bworJSBiZSByZWZlcmFibGUuCislIAorJSAjMyBpcyB0aGUgb3B0aW9uYWwgcG9zaXRpb25pbmcgYXJndW1lbnQ7IGZvciBub3csIGl0IGlzIGlnbm9yZWQuICBJdAorJSB3aWxsIHNvbWVob3cgc3BlY2lmeSB0aGUgcG9zaXRpb25zIGFsbG93ZWQgdG8gZmxvYXQgdG8gKGhlcmUsIHRvcCwgYm90dG9tKS4KKyUgCislIFdlIGtlZXAgYSBzZXBhcmF0ZSBjb3VudGVyIGZvciBlYWNoIEZMT0FUVFlQRSwgd2hpY2ggd2UgcmVzZXQgYXQgZWFjaAorJSBjaGFwdGVyLWxldmVsIGNvbW1hbmQuCitcbGV0XHJlc2V0YWxsZmxvYXRub3M9XGVtcHR5CislCitcZGVmXGRvZmxvYXQjMSwjMiwjMywjNFxmaW5pc2h7JQorICBcbGV0XHRoaXNjYXB0aW9uPVxlbXB0eQorICBcbGV0XHRoaXNzaG9ydGNhcHRpb249XGVtcHR5CisgICUKKyAgJSBkb24ndCBsb3NlIGZvb3Rub3RlcyBpbnNpZGUgQGZsb2F0LgorICBcc3RhcnRzYXZpbmdpbnNlcnRzCisgICUKKyAgXHZ0b3BcYmdyb3VwCisgICAgXGRlZlxmbG9hdHR5cGV7IzF9JQorICAgIFxkZWZcZmxvYXRsYWJlbHsjMn0lCisgICAgXGRlZlxmbG9hdGxvY3sjM30lIHdlIGRvIG5vdGhpbmcgd2l0aCB0aGlzIHlldC4KKyAgICAlCisgICAgXGlmeFxmbG9hdHR5cGVcZW1wdHkKKyAgICAgIFxsZXRcc2FmZWZsb2F0dHlwZT1cZW1wdHkKKyAgICBcZWxzZQorICAgICAgeyUKKyAgICAgICAgJSB0aGUgZmxvYXR0eXBlIG1pZ2h0IGhhdmUgYWNjZW50cyBvciBvdGhlciBzcGVjaWFsIGNoYXJhY3RlcnMsCisgICAgICAgICUgYnV0IHdlIG5lZWQgdG8gdXNlIGl0IGluIGEgY29udHJvbCBzZXF1ZW5jZSBuYW1lLgorICAgICAgICBcaW5kZXhub2ZvbnRzCisgICAgICAgIFx0dXJub2ZmYWN0aXZlCisgICAgICAgIFx4ZGVmXHNhZmVmbG9hdHR5cGV7XGZsb2F0dHlwZX0lCisgICAgICB9JQorICAgIFxmaQorICAgICUKKyAgICAlIElmIGxhYmVsIGlzIGdpdmVuIGJ1dCBubyB0eXBlLCB3ZSBoYW5kbGUgdGhhdCBhcyB0aGUgZW1wdHkgdHlwZS4KKyAgICBcaWZ4XGZsb2F0bGFiZWxcZW1wdHkgXGVsc2UKKyAgICAgICUgV2Ugd2FudCBlYWNoIEZMT0FUVFlQRSB0byBiZSBudW1iZXJlZCBzZXBhcmF0ZWx5IChGaWd1cmUgMSwKKyAgICAgICUgVGFibGUgMSwgRmlndXJlIDIsIC4uLikuICAoQW5kIGlmIG5vIGxhYmVsLCBubyBudW1iZXIuKQorICAgICAgJSAKKyAgICAgIFxleHBhbmRhZnRlclxnZXRmbG9hdG5vXGNzbmFtZVxzYWZlZmxvYXR0eXBlIGZsb2F0bm9cZW5kY3NuYW1lCisgICAgICBcZ2xvYmFsXGFkdmFuY2VcZmxvYXRubyBieSAxCisgICAgICAlCisgICAgICB7JQorICAgICAgICAlIFRoaXMgbWFnaWMgdmFsdWUgZm9yIFx0aGlzc2VjdGlvbiBpcyBvdXRwdXQgYnkgXHNldHJlZiBhcyB0aGUKKyAgICAgICAgJSBYUkVGTEFCRUwtdGl0bGUgdmFsdWUuICBceHJlZlggdXNlcyBpdCB0byBkaXN0aW5ndWlzaCBmbG9hdAorICAgICAgICAlIGxhYmVscyAod2hpY2ggaGF2ZSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dCBmb3JtYXQpIGZyb20KKyAgICAgICAgJSBub2RlIGFuZCBhbmNob3IgbGFiZWxzLiAgQW5kIFx4cmRlZiB1c2VzIGl0IHRvIGNvbnN0cnVjdCB0aGUKKyAgICAgICAgJSBsaXN0cyBvZiBmbG9hdHMuCisgICAgICAgICUgCisgICAgICAgIFxlZGVmXHRoaXNzZWN0aW9ue1xmbG9hdG1hZ2ljPVxzYWZlZmxvYXR0eXBlfSUKKyAgICAgICAgXHNldHJlZntcZmxvYXRsYWJlbH17WWZsb2F0fSUKKyAgICAgIH0lCisgICAgXGZpCisgICAgJQorICAgICUgc3RhcnQgd2l0aCBccGFyc2tpcCBnbHVlLCBJIGd1ZXNzLgorICAgIFx2c2tpcFxwYXJza2lwCisgICAgJQorICAgICUgRG9uJ3Qgc3VwcHJlc3MgaW5kZW50YXRpb24gaWYgYSBmbG9hdCBoYXBwZW5zIHRvIHN0YXJ0IGEgc2VjdGlvbi4KKyAgICBccmVzdG9yZWZpcnN0cGFyYWdyYXBoaW5kZW50Cit9CisKKyUgd2UgaGF2ZSB0aGVzZSBwb3NzaWJpbGl0aWVzOgorJSBAZmxvYXQgRm9vLGxibCAmIEBjYXB0aW9ue0NhcH06IEZvbyAxLjE6IENhcAorJSBAZmxvYXQgRm9vLGxibCAmIG5vIGNhcHRpb246ICAgIEZvbyAxLjEKKyUgQGZsb2F0IEZvbyAmIEBjYXB0aW9ue0NhcH06ICAgICBGb286IENhcAorJSBAZmxvYXQgRm9vICYgbm8gY2FwdGlvbjogICAgICAgIEZvbworJSBAZmxvYXQgLGxibCAmIENhcHRpb257Q2FwfTogICAgIDEuMTogQ2FwCislIEBmbG9hdCAsbGJsICYgbm8gY2FwdGlvbjogICAgICAgMS4xCislIEBmbG9hdCAmIEBjYXB0aW9ue0NhcH06ICAgICAgICAgQ2FwCislIEBmbG9hdCAmIG5vIGNhcHRpb246CislCitcZGVmXEVmbG9hdHslCisgICAgXGxldFxmbG9hdGlkZW50ID0gXGVtcHR5CisgICAgJQorICAgICUgSW4gYWxsIGNhc2VzLCBpZiB3ZSBoYXZlIGEgZmxvYXQgdHlwZSwgaXQgY29tZXMgZmlyc3QuCisgICAgXGlmeFxmbG9hdHR5cGVcZW1wdHkgXGVsc2UgXGRlZlxmbG9hdGlkZW50e1xmbG9hdHR5cGV9XGZpCisgICAgJQorICAgICUgSWYgd2UgaGF2ZSBhbiB4cmVmIGxhYmVsLCB0aGUgbnVtYmVyIGNvbWVzIG5leHQuCisgICAgXGlmeFxmbG9hdGxhYmVsXGVtcHR5IFxlbHNlCisgICAgICBcaWZ4XGZsb2F0dHlwZVxlbXB0eSBcZWxzZSAlIGlmIGFsc28gaGFkIGZsb2F0IHR5cGUsIG5lZWQgdGllIGZpcnN0LgorICAgICAgICBcYXBwZW5kdG9tYWNyb1xmbG9hdGlkZW50e1x0aWV9JQorICAgICAgXGZpCisgICAgICAlIHRoZSBudW1iZXIuCisgICAgICBcYXBwZW5kdG9tYWNyb1xmbG9hdGlkZW50e1xjaGFwbGV2ZWxwcmVmaXhcdGhlXGZsb2F0bm99JQorICAgIFxmaQorICAgICUKKyAgICAlIFN0YXJ0IHRoZSBwcmludGVkIGNhcHRpb24gd2l0aCB3aGF0IHdlJ3ZlIGNvbnN0cnVjdGVkIGluCisgICAgJSBcZmxvYXRpZGVudCwgYnV0IGtlZXAgaXQgc2VwYXJhdGU7IHdlIG5lZWQgXGZsb2F0aWRlbnQgYWdhaW4uCisgICAgXGxldFxjYXB0aW9ubGluZSA9IFxmbG9hdGlkZW50CisgICAgJQorICAgIFxpZnhcdGhpc2NhcHRpb25cZW1wdHkgXGVsc2UKKyAgICAgIFxpZnhcZmxvYXRpZGVudFxlbXB0eSBcZWxzZQorCVxhcHBlbmR0b21hY3JvXGNhcHRpb25saW5lezogfSUgaGFkIGlkZW50LCBzbyBuZWVkIGEgY29sb24gYmV0d2VlbgorICAgICAgXGZpCisgICAgICAlCisgICAgICAlIGNhcHRpb24gdGV4dC4KKyAgICAgIFxhcHBlbmR0b21hY3JvXGNhcHRpb25saW5lXHRoaXNjYXB0aW9uCisgICAgXGZpCisgICAgJQorICAgICUgSWYgd2UgaGF2ZSBhbnl0aGluZyB0byBwcmludCwgcHJpbnQgaXQsIHdpdGggc3BhY2UgYmVmb3JlLgorICAgICUgRXZlbnR1YWxseSB0aGlzIG5lZWRzIHRvIGJlY29tZSBhbiBcaW5zZXJ0LgorICAgIFxpZnhcY2FwdGlvbmxpbmVcZW1wdHkgXGVsc2UKKyAgICAgIFx2c2tpcC41XHBhcnNraXAKKyAgICAgIFxjYXB0aW9ubGluZQorICAgIFxmaQorICAgICUKKyAgICAlIElmIGhhdmUgYW4geHJlZiBsYWJlbCwgd3JpdGUgdGhlIGxpc3Qgb2YgZmxvYXRzIGluZm8uICBEbyB0aGlzCisgICAgJSBhZnRlciB0aGUgY2FwdGlvbiwgdG8gYXZvaWQgY2hhbmNlIG9mIGl0IGJlaW5nIGEgYnJlYWtwb2ludC4KKyAgICBcaWZ4XGZsb2F0bGFiZWxcZW1wdHkgXGVsc2UKKyAgICAgICUgV3JpdGUgdGhlIHRleHQgdGhhdCBnb2VzIGluIHRoZSBsb2YgdG8gdGhlIGF1eCBmaWxlIGFzCisgICAgICAlIFxmbG9hdGxhYmVsLWxvZi4gIEJlc2lkZXMgXGZsb2F0aWRlbnQsIHdlIGluY2x1ZGUgdGhlIHNob3J0CisgICAgICAlIGNhcHRpb24gaWYgc3BlY2lmaWVkLCBlbHNlIHRoZSBmdWxsIGNhcHRpb24gaWYgc3BlY2lmaWVkLCBlbHNlIG5vdGhpbmcuCisgICAgICB7JQorICAgICAgICBcYXRkdW1taWVzIFx0dXJub2ZmYWN0aXZlIFxvdGhlcmJhY2tzbGFzaAorICAgICAgICBcaW1tZWRpYXRlXHdyaXRlXGF1eGZpbGV7QHhyZGVme1xmbG9hdGxhYmVsLWxvZn17JQorICAgICAgICAgIFxmbG9hdGlkZW50CisgICAgICAgICAgXGlmeFx0aGlzc2hvcnRjYXB0aW9uXGVtcHR5CisgICAgICAgICAgICBcaWZ4XHRoaXNjYXB0aW9uXGVtcHR5IFxlbHNlIDogXHRoaXNjYXB0aW9uIFxmaQorICAgICAgICAgIFxlbHNlCisgICAgICAgICAgICA6IFx0aGlzc2hvcnRjYXB0aW9uCisgICAgICAgICAgXGZpCisgICAgICAgIH19JQorICAgICAgfSUKKyAgICBcZmkKKyAgICAlCisgICAgJSBTcGFjZSBiZWxvdyBjYXB0aW9uLCBpZiB3ZSBwcmludGVkIGFueXRoaW5nLgorICAgIFxpZnhccHJpbnRlZHNvbWV0aGluZ1xlbXB0eSBcZWxzZSBcdnNraXBccGFyc2tpcCBcZmkKKyAgXGVncm91cCAgJSBlbmQgb2YgXHZ0b3AKKyAgXGNoZWNraW5zZXJ0cworfQorCislIEFwcGVuZCB0aGUgdG9rZW5zICMyIHRvIHRoZSBkZWZpbml0aW9uIG9mIG1hY3JvICMxLCBub3QgZXhwYW5kaW5nIGVpdGhlci4KKyUgCitcbmV3dG9rc1xhcHBlbmR0b21hY3JvQXRva3MKK1xuZXd0b2tzXGFwcGVuZHRvbWFjcm9CdG9rcworXGRlZlxhcHBlbmR0b21hY3JvIzEjMnslCisgIFxhcHBlbmR0b21hY3JvQXRva3MgPSBcZXhwYW5kYWZ0ZXJ7IzF9JQorICBcYXBwZW5kdG9tYWNyb0J0b2tzID0geyMyfSUKKyAgXGVkZWYjMXtcdGhlXGFwcGVuZHRvbWFjcm9BdG9rcyBcdGhlXGFwcGVuZHRvbWFjcm9CdG9rc30lCit9CisKKyUgQGNhcHRpb24sIEBzaG9ydGNhcHRpb24gYXJlIGVhc3kuCislIAorXGxvbmdcZGVmXGNhcHRpb24jMXtcY2hlY2tlbnZcZmxvYXQgXGRlZlx0aGlzY2FwdGlvbnsjMX19CitcZGVmXHNob3J0Y2FwdGlvbiMxe1xjaGVja2VudlxmbG9hdCBcZGVmXHRoaXNzaG9ydGNhcHRpb257IzF9fQorCislIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIGNvbnRyb2wgc2VxdWVuY2UgaWRlbnRpZnlpbmcgdGhlIGNvdW50ZXIgd2UgYXJlCislIGdvaW5nIHRvIHVzZS4gIENyZWF0ZSBpdCBpZiBpdCBkb2Vzbid0IGV4aXN0IGFuZCBhc3NpZ24gaXQgdG8gXGZsb2F0bm8uCitcZGVmXGdldGZsb2F0bm8jMXslCisgIFxpZngjMVxyZWxheAorICAgICAgJSBIYXZlbid0IHNlZW4gdGhpcyBmaWd1cmUgdHlwZSBiZWZvcmUuCisgICAgICBcY3NuYW1lIG5ld2NvdW50XGVuZGNzbmFtZSAjMSUKKyAgICAgICUKKyAgICAgICUgUmVtZW1iZXIgdG8gcmVzZXQgdGhpcyBmbG9hdG5vIGF0IHRoZSBuZXh0IGNoYXAuCisgICAgICBcZXhwYW5kYWZ0ZXJcZ2RlZlxleHBhbmRhZnRlclxyZXNldGFsbGZsb2F0bm9zCisgICAgICAgIFxleHBhbmRhZnRlcntccmVzZXRhbGxmbG9hdG5vcyAjMT0wIH0lCisgIFxmaQorICBcbGV0XGZsb2F0bm8jMSUKK30KKworJSBcc2V0cmVmIGNhbGxzIHRoaXMgdG8gZ2V0IHRoZSBYUkVGTEFCRUwtc250IHZhbHVlLiAgV2Ugd2FudCBhbiBAeHJlZgorJSB0byB0aGUgRkxPQVRMQUJFTCB0byBleHBhbmQgdG8gIkZpZ3VyZSAzLjEiLiAgV2UgY2FsbCBcc2V0cmVmIHdoZW4gd2UKKyUgZmlyc3QgcmVhZCB0aGUgQGZsb2F0IGNvbW1hbmQuCislIAorXGRlZlxZZmxvYXR7XGZsb2F0dHlwZUB0aWUgXGNoYXBsZXZlbHByZWZpeFx0aGVcZmxvYXRub30lCisKKyUgTWFnaWMgc3RyaW5nIHVzZWQgZm9yIHRoZSBYUkVGTEFCRUwtdGl0bGUgdmFsdWUsIHNvIFx4cmVmWCBjYW4KKyUgZGlzdGluZ3Vpc2ggZmxvYXRzIGZyb20gb3RoZXIgeHJlZiB0eXBlcy4KK1xkZWZcZmxvYXRtYWdpY3shIWZsb2F0ISF9CisKKyUgIzEgaXMgdGhlIGNvbnRyb2wgc2VxdWVuY2Ugd2UgYXJlIHBhc3NlZDsgd2UgZXhwYW5kIGludG8gYSBjb25kaXRpb25hbAorJSB3aGljaCBpcyB0cnVlIGlmICMxIHJlcHJlc2VudHMgYSBmbG9hdCByZWYuICBUaGF0IGlzLCB0aGUgbWFnaWMKKyUgXHRoaXNzZWN0aW9uIHZhbHVlIHdoaWNoIHdlIFxzZXRyZWYgYWJvdmUuCislIAorXGRlZlxpZmZsb2F0IzF7XGV4cGFuZGFmdGVyXGRvaWZmbG9hdCMxPT1cZmluaXNofQorJQorJSAjMSBpcyAobWF5YmUpIHRoZSBcZmxvYXRtYWdpYyBzdHJpbmcuICBJZiBzbywgIzIgd2lsbCBiZSB0aGUKKyUgKHNhZmUpIGZsb2F0IHR5cGUgZm9yIHRoaXMgZmxvYXQuICBXZSBzZXQgXGlmZmxvYXR0eXBlIHRvICMyLgorJSAKK1xkZWZcZG9pZmZsb2F0IzE9IzI9IzNcZmluaXNoeyUKKyAgXGRlZlx0ZW1weyMxfSUKKyAgXGRlZlxpZmZsb2F0dHlwZXsjMn0lCisgIFxpZnhcdGVtcFxmbG9hdG1hZ2ljCit9CisKKyUgQGxpc3RvZmZsb2F0cyBGTE9BVFRZUEUgLSBwcmludCBhIGxpc3Qgb2YgZmxvYXRzIGxpa2UgYSB0YWJsZSBvZiBjb250ZW50cy4KKyUgCitccGFyc2VhcmdkZWZcbGlzdG9mZmxvYXRzeyUKKyAgXGRlZlxmbG9hdHR5cGV7IzF9JSBmbG9hdHR5cGUKKyAgeyUKKyAgICAlIHRoZSBmbG9hdHR5cGUgbWlnaHQgaGF2ZSBhY2NlbnRzIG9yIG90aGVyIHNwZWNpYWwgY2hhcmFjdGVycywKKyAgICAlIGJ1dCB3ZSBuZWVkIHRvIHVzZSBpdCBpbiBhIGNvbnRyb2wgc2VxdWVuY2UgbmFtZS4KKyAgICBcaW5kZXhub2ZvbnRzCisgICAgXHR1cm5vZmZhY3RpdmUKKyAgICBceGRlZlxzYWZlZmxvYXR0eXBle1xmbG9hdHR5cGV9JQorICB9JQorICAlCisgICUgXHhyZGVmIHNhdmVzIHRoZSBmbG9hdHMgYXMgYSBcZG8tbGlzdCBpbiBcZmxvYXRsaXN0U0FGRUZMT0FUVFlQRS4KKyAgXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgZmxvYXRsaXN0XHNhZmVmbG9hdHR5cGVcZW5kY3NuYW1lIFxyZWxheAorICAgIFxpZmhhdmV4cmVmcworICAgICAgJSBpZiB0aGUgdXNlciBzYWlkIEBsaXN0b2ZmbG9hdHMgZm9vIGJ1dCBuZXZlciBAZmxvYXQgZm9vLgorICAgICAgXG1lc3NhZ2V7XGxpbmVudW1iZXIgTm8gYFxzYWZlZmxvYXR0eXBlJyBmbG9hdHMgdG8gbGlzdC59JQorICAgIFxmaQorICBcZWxzZQorICAgIFxiZWdpbmdyb3VwCisgICAgICBcbGVmdHNraXA9XHRvY2luZGVudCAgJSBpbmRlbnQgdGhlc2UgZW50cmllcyBsaWtlIGEgdG9jCisgICAgICBcbGV0XGRvPVxsaXN0b2ZmbG9hdHNkbworICAgICAgXGNzbmFtZSBmbG9hdGxpc3Rcc2FmZWZsb2F0dHlwZVxlbmRjc25hbWUKKyAgICBcZW5kZ3JvdXAKKyAgXGZpCit9CisKKyUgVGhpcyBpcyBjYWxsZWQgb24gZWFjaCBlbnRyeSBpbiBhIGxpc3Qgb2YgZmxvYXRzLiAgV2UncmUgcGFzc2VkIHRoZQorJSB4cmVmIGxhYmVsLCBpbiB0aGUgZm9ybSBMQUJFTC10aXRsZSwgd2hpY2ggaXMgaG93IHdlIHNhdmUgaXQgaW4gdGhlCislIGF1eCBmaWxlLiAgV2Ugc3RyaXAgb2ZmIHRoZSAtdGl0bGUgYW5kIGxvb2sgdXAgXFhSTEFCRUwtbG9mLCB3aGljaAorJSBoYXMgdGhlIHRleHQgd2UncmUgc3VwcG9zZWQgdG8gdHlwZXNldCBoZXJlLgorJSAKKyUgRmlndXJlcyB3aXRob3V0IHhyZWYgbGFiZWxzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBsaXN0IChzaW5jZQorJSB0aGV5IHdvbid0IGFwcGVhciBpbiB0aGUgYXV4IGZpbGUpLgorJSAKK1xkZWZcbGlzdG9mZmxvYXRzZG8jMXtcbGlzdG9mZmxvYXRzZG9lbnRyeSMxXGZpbmlzaH0KK1xkZWZcbGlzdG9mZmxvYXRzZG9lbnRyeSMxLXRpdGxlXGZpbmlzaHt7JQorICAlIENhbid0IGZ1bGx5IGV4cGFuZCBYUiMxLWxvZiBiZWNhdXNlIGl0IGNhbiBjb250YWluIGFueXRoaW5nLiAgSnVzdAorICAlIHBhc3MgdGhlIGNvbnRyb2wgc2VxdWVuY2UuICBPbiB0aGUgb3RoZXIgaGFuZCwgWFIjMS1wZyBpcyBqdXN0IHRoZQorICAlIHBhZ2UgbnVtYmVyLCBhbmQgd2Ugd2FudCB0byBmdWxseSBleHBhbmQgdGhhdCBzbyB3ZSBjYW4gZ2V0IGEgbGluaworICAlIGluIHBkZiBvdXRwdXQuCisgIFx0b2tzQSA9IFxleHBhbmRhZnRlcntcY3NuYW1lIFhSIzEtbG9mXGVuZGNzbmFtZX0lCisgICUKKyAgJSB1c2UgdGhlIHNhbWUgXGVudHJ5IG1hY3JvIHdlIHVzZSB0byBnZW5lcmF0ZSB0aGUgVE9DIGFuZCBpbmRleC4KKyAgXGVkZWZcd3JpdGVlbnRyeXtcbm9leHBhbmRcZW50cnl7XHRoZVx0b2tzQX17XGNzbmFtZSBYUiMxLXBnXGVuZGNzbmFtZX19JQorICBcd3JpdGVlbnRyeQorfX0KKwogXG1lc3NhZ2V7bG9jYWxpemF0aW9uLH0KICUgYW5kIGkxOG4uCiAKQEAgLTYyOTUsMTkgKzY1NDQsMTcgQEAKICUgcHJvcGVybHkuICBTaW5nbGUgYXJndW1lbnQgaXMgdGhlIGxhbmd1YWdlIGFiYnJldmlhdGlvbi4KICUgSXQgd291bGQgYmUgbmljZSBpZiB3ZSBjb3VsZCBzZXQgdXAgYSBoeXBoZW5hdGlvbiBmaWxlIGhlcmUuCiAlCi1cZGVmXGRvY3VtZW50bGFuZ3VhZ2V7XHBhcnNlYXJnXGRvZG9jdW1lbnRsYW5ndWFnZX0KLVxkZWZcZG9kb2N1bWVudGxhbmd1YWdlIzF7JQorXHBhcnNlYXJnZGVmXGRvY3VtZW50bGFuZ3VhZ2V7JQogICBcdGV4ICUgcmVhZCB0eGktPz8udGV4IGZpbGUgaW4gcGxhaW4gVGVYLgotICAlIFJlYWQgdGhlIGZpbGUgaWYgaXQgZXhpc3RzLgotICBcb3BlbmluIDEgdHhpLSMxLnRleAotICBcaWZlb2YxCi0gICAgXGVycmhlbHAgPSBcbm9sYW5naGVscAotICAgIFxlcnJtZXNzYWdle0Nhbm5vdCByZWFkIGxhbmd1YWdlIGZpbGUgdHhpLSMxLnRleH0lCi0gICAgXGxldFx0ZW1wID0gXHJlbGF4Ci0gIFxlbHNlCi0gICAgXGRlZlx0ZW1we1xpbnB1dCB0eGktIzEudGV4IH0lCi0gIFxmaQotICBcdGVtcAorICAgICUgUmVhZCB0aGUgZmlsZSBpZiBpdCBleGlzdHMuCisgICAgXG9wZW5pbiAxIHR4aS0jMS50ZXgKKyAgICBcaWZlb2YgMQorICAgICAgXGVycmhlbHAgPSBcbm9sYW5naGVscAorICAgICAgXGVycm1lc3NhZ2V7Q2Fubm90IHJlYWQgbGFuZ3VhZ2UgZmlsZSB0eGktIzEudGV4fSUKKyAgICBcZWxzZQorICAgICAgXGlucHV0IHR4aS0jMS50ZXgKKyAgICBcZmkKKyAgICBcY2xvc2VpbiAxCiAgIFxlbmRncm91cAogfQogXG5ld2hlbHBcbm9sYW5naGVscHtUaGUgZ2l2ZW4gbGFuZ3VhZ2UgZGVmaW5pdGlvbiBmaWxlIGNhbm5vdCBiZSBmb3VuZCBvcgpAQCAtNjM1NSw3ICs2NjAyLDcgQEAKICUgUGFyYW1ldGVycyBpbiBvcmRlcjogMSkgdGV4dGhlaWdodDsgMikgdGV4dHdpZHRoOyAzKSB2b2Zmc2V0OwogJSA0KSBob2Zmc2V0OyA1KSBiaW5kaW5nIG9mZnNldDsgNikgdG9wc2tpcDsgNykgcGh5c2ljYWwgcGFnZSBoZWlnaHQ7IDgpCiAlIHBoeXNpY2FsIHBhZ2Ugd2lkdGguCi0lIAorJQogJSBXZSBhbHNvIGNhbGwgXHNldGxlYWRpbmd7XHRleHRsZWFkaW5nfSwgc28gdGhlIGNhbGxlciBzaG91bGQgZGVmaW5lCiAlIFx0ZXh0bGVhZGluZy4gIFRoZSBjYWxsZXIgc2hvdWxkIGFsc28gc2V0IFxwYXJza2lwLgogJQpAQCAtNjQyMyw3ICs2NjcwLDcgQEAKICAgXHBhcnNraXAgPSAzcHQgcGx1cyAycHQgbWludXMgMXB0CiAgIFx0ZXh0bGVhZGluZyA9IDEzLjJwdAogICAlCi0gICUgRG91YmxlLXNpZGUgcHJpbnRpbmcgdmlhIHBvc3RzY3JpcHQgb24gTGFzZXJqZXQgNDA1MCAKKyAgJSBEb3VibGUtc2lkZSBwcmludGluZyB2aWEgcG9zdHNjcmlwdCBvbiBMYXNlcmpldCA0MDUwCiAgICUgcHJpbnRzIGRvdWJsZS1zaWRlZCBuaWNlbHkgd2hlbiBcYmluZGluZ29mZnNldD0xMG1tIGFuZCBcaG9mZnNldD0tNm1tLgogICAlIFRvIGNoYW5nZSB0aGUgc2V0dGluZ3MgZm9yIGEgZGlmZmVyZW50IHByaW50ZXIgb3Igc2l0dWF0aW9uLCBhZGp1c3QKICAgJSBcbm9ybWFsb2Zmc2V0IHVudGlsIHRoZSBmcm9udC1zaWRlIGFuZCBiYWNrLXNpZGUgdGV4dHMgYWxpZ24uICBUaGVuCkBAIC02NDY0LDcgKzY3MTEsNyBAQAogICBcdGFibGVpbmRlbnQgPSAxMm1tCiB9fQogCi0lIEEgc3BlY2lmaWMgdGV4dCBsYXlvdXQsIDI0eDE1Y20gb3ZlcmFsbCwgaW50ZW5kZWQgZm9yIEE0IHBhcGVyLiAgCislIEEgc3BlY2lmaWMgdGV4dCBsYXlvdXQsIDI0eDE1Y20gb3ZlcmFsbCwgaW50ZW5kZWQgZm9yIEE0IHBhcGVyLgogXGRlZlxhZm91cmxhdGV4e3tcZ2xvYmFsZGVmcyA9IDEKICAgXGFmb3VycGFwZXIKICAgXGludGVybmFscGFnZXNpemVzezIzN21tfXsxNTBtbX0lCkBAIC02NDkwLDggKzY3MzcsNyBAQAogJSBQZXJoYXBzIHdlIHNob3VsZCBhbGxvdyBzZXR0aW5nIHRoZSBtYXJnaW5zLCBcdG9wc2tpcCwgXHBhcnNraXAsCiAlIGFuZC9vciBsZWFkaW5nLCBhbHNvLiBPciBwZXJoYXBzIHdlIHNob3VsZCBjb21wdXRlIHRoZW0gc29tZWhvdy4KICUKLVxkZWZccGFnZXNpemVze1xwYXJzZWFyZ1xwYWdlc2l6ZXN4eHh9Ci1cZGVmXHBhZ2VzaXplc3h4eCMxe1xwYWdlc2l6ZXN5eXkgIzEsLFxmaW5pc2h9CitccGFyc2VhcmdkZWZccGFnZXNpemVze1xwYWdlc2l6ZXN5eXkgIzEsLFxmaW5pc2h9CiBcZGVmXHBhZ2VzaXplc3l5eSMxLCMyLCMzXGZpbmlzaHt7JQogICBcc2V0Ym94MCA9IFxoYm94e1xpZ25vcmVzcGFjZXMgIzJ9XGlmZGltXHdkMCA+IDBwdCBcaHNpemU9IzJccmVsYXggXGZpCiAgIFxnbG9iYWxkZWZzID0gMQpAQCAtNjUzOCw4ICs2Nzg0LDggQEAKIFxkZWZcbm9ybWFscGx1c3srfQogXGRlZlxub3JtYWxkb2xsYXJ7JH0lJCBmb250LWxvY2sgZml4CiAKLSUgVGhpcyBtYWNybyBpcyB1c2VkIHRvIG1ha2UgYSBjaGFyYWN0ZXIgcHJpbnQgb25lIHdheSBpbiB0dGZvbnQKLSUgd2hlcmUgaXQgY2FuIHByb2JhYmx5IGp1c3QgYmUgb3V0cHV0LCBhbmQgYW5vdGhlciB3YXkgaW4gb3RoZXIgZm9udHMsCislIFRoaXMgbWFjcm8gaXMgdXNlZCB0byBtYWtlIGEgY2hhcmFjdGVyIHByaW50IG9uZSB3YXkgaW4gXHR0CislICh3aGVyZSBpdCBjYW4gcHJvYmFibHkgYmUgb3V0cHV0IGFzLWlzKSwgYW5kIGFub3RoZXIgd2F5IGluIG90aGVyIGZvbnRzLAogJSB3aGVyZSBzb21ldGhpbmcgaGFpcmllciBwcm9iYWJseSBuZWVkcyB0byBiZSBkb25lLgogJQogJSAjMSBpcyB3aGF0IHRvIHByaW50IGlmIHdlIGFyZSBpbmRlZWQgdXNpbmcgXHR0OyAjMiBpcyB3aGF0IHRvIHByaW50CkBAIC02NTg3LDEzICs2ODMzLDYgQEAKIFxjYXRjb2RlYFwkPVxhY3RpdmUKIFxkZWYke1xpZnVzaW5naXR7e1xzbFwkfX1cbm9ybWFsZG9sbGFyfSUkIGZvbnQtbG9jayBmaXgKIAotJSBTZXQgdXAgYW4gYWN0aXZlIGRlZmluaXRpb24gZm9yID0sIGJ1dCBkb24ndCBlbmFibGUgaXQgbW9zdCBvZiB0aGUgdGltZS4KLXtcY2F0Y29kZWBcPT1cYWN0aXZlCi1cZ2xvYmFsXGRlZj17e1x0dCBcY2hhciA2MX19fQotCi1cY2F0Y29kZWArPVxhY3RpdmUKLVxjYXRjb2RlYFxfPVxhY3RpdmUKLQogJSBJZiBhIC5mbXQgZmlsZSBpcyBiZWluZyB1c2VkLCBjaGFyYWN0ZXJzIHRoYXQgbWlnaHQgYXBwZWFyIGluIGEgZmlsZQogJSBuYW1lIGNhbm5vdCBiZSBhY3RpdmUgdW50aWwgd2UgaGF2ZSBwYXJzZWQgdGhlIGNvbW1hbmQgbGluZS4KICUgU28gdHVybiB0aGVtIG9mZiBhZ2FpbiwgYW5kIGhhdmUgXGV2ZXJ5am9iIChvciBAc2V0ZmlsZW5hbWUpIHR1cm4gdGhlbSBvbi4KQEAgLTY2MDIsMTUgKzY4NDEsMTYgQEAKIAogXGNhdGNvZGVgXEA9MAogCi0lIFxyYXdiYWNrc2xhc2h4eCBvdXRwdXRzIG9uZSBiYWNrc2xhc2ggY2hhcmFjdGVyIGluIGN1cnJlbnQgZm9udCwKKyUgXGJhY2tzbGFzaGN1cmZvbnQgb3V0cHV0cyBvbmUgYmFja3NsYXNoIGNoYXJhY3RlciBpbiBjdXJyZW50IGZvbnQsCiAlIGFzIGluIFxjaGFyYFxcLgotXGdsb2JhbFxjaGFyZGVmXHJhd2JhY2tzbGFzaHh4PWBcXAorXGdsb2JhbFxjaGFyZGVmXGJhY2tzbGFzaGN1cmZvbnQ9YFxcCitcZ2xvYmFsXGxldFxyYXdiYWNrc2xhc2h4eD1cYmFja3NsYXNoY3VyZm9udCAgJSBsZXQgZXhpc3RpbmcgLj8/cyBmaWxlcyB3b3JrCiAKLSUgXHJhd2JhY2tzbGFzaCBkZWZpbmVzIGFuIGFjdGl2ZSBcIHRvIGRvIFxyYXdiYWNrc2xhc2h4eC4KKyUgXHJhd2JhY2tzbGFzaCBkZWZpbmVzIGFuIGFjdGl2ZSBcIHRvIGRvIFxiYWNrc2xhc2hjdXJmb250LgogJSBcb3RoZXJiYWNrc2xhc2ggZGVmaW5lcyBhbiBhY3RpdmUgXCB0byBiZSBhIGxpdGVyYWwgYFwnIGNoYXJhY3RlciB3aXRoCiAlIGNhdGNvZGUgb3RoZXIuCiB7XGNhdGNvZGVgXFw9XGFjdGl2ZQotIEBnZGVmQHJhd2JhY2tzbGFzaHtAbGV0XD1AcmF3YmFja3NsYXNoeHh9CisgQGdkZWZAcmF3YmFja3NsYXNoe0BsZXRcPUBiYWNrc2xhc2hjdXJmb250fQogIEBnZGVmQG90aGVyYmFja3NsYXNoe0BsZXRcPUByZWFsYmFja3NsYXNofQogfQogCkBAIC02NjE4LDcgKzY4NTgsNyBAQAoge1xjYXRjb2RlYFxcPVxvdGhlciBAZ2RlZkByZWFsYmFja3NsYXNoe1x9fQogCiAlIFxub3JtYWxiYWNrc2xhc2ggb3V0cHV0cyBvbmUgYmFja3NsYXNoIGluIGZpeGVkIHdpZHRoIGZvbnQuCi1cZGVmXG5vcm1hbGJhY2tzbGFzaHt7XHR0XHJhd2JhY2tzbGFzaHh4fX0KK1xkZWZcbm9ybWFsYmFja3NsYXNoe3tcdHRcYmFja3NsYXNoY3VyZm9udH19CiAKIFxjYXRjb2RlYFxcPVxhY3RpdmUKIApAQCAtNjYzNSwxMiArNjg3NSwxMyBAQAogICBAbGV0Pj1Abm9ybWFsZ3JlYXRlcgogICBAbGV0Kz1Abm9ybWFscGx1cwogICBAbGV0JD1Abm9ybWFsZG9sbGFyICUkIGZvbnQtbG9jayBmaXgKKyAgQHVuc2Vwc3BhY2VzCiB9CiAKICUgU2FtZSBhcyBAdHVybm9mZmFjdGl2ZSBleGNlcHQgb3V0cHV0cyBcIGFzIHtcdHRcY2hhcmBcXH0gaW5zdGVhZCBvZgogJSB0aGUgbGl0ZXJhbCBjaGFyYWN0ZXIgYFwnLiAgKFRodXMsIFwgaXMgbm90IGV4cGFuZGFibGUgd2hlbiB0aGlzIGlzIGluCiAlIGVmZmVjdC4pCi0lIAorJQogQGRlZkBub3JtYWx0dXJub2ZmYWN0aXZle0B0dXJub2ZmYWN0aXZlIEBsZXRcPUBub3JtYWxiYWNrc2xhc2h9CiAKICUgTWFrZSBfIGFuZCArIFxvdGhlciBjaGFyYWN0ZXJzLCB0ZW1wb3JhcmlseS4KQEAgLTY2NjksMTUgKzY5MTAsMTEgQEAKICUgU2F5IEBmb28sIG5vdCBcZm9vLCBpbiBlcnJvciBtZXNzYWdlcy4KIEBlc2NhcGVjaGFyID0gYEBACiAKLSUgVGhlc2UgbG9vayBvayBpbiBhbGwgZm9udHMsIHNvIGp1c3QgbWFrZSB0aGVtIG5vdCBzcGVjaWFsLiAgCislIFRoZXNlIGxvb2sgb2sgaW4gYWxsIGZvbnRzLCBzbyBqdXN0IG1ha2UgdGhlbSBub3Qgc3BlY2lhbC4KIEBjYXRjb2RlYEAmID0gQG90aGVyCiBAY2F0Y29kZWBAIyA9IEBvdGhlcgogQGNhdGNvZGVgQCUgPSBAb3RoZXIKIAotQGMgU2V0IGluaXRpYWwgZm9udHMuCi1AdGV4dGZvbnRzCi1Acm0KLQogCiBAYyBMb2NhbCB2YXJpYWJsZXM6CiBAYyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCkBAIC02Njg2LDMgKzY5MjMsOSBAQAogQGMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCiBAYyB0aW1lLXN0YW1wLWVuZDogIn0iCiBAYyBFbmQ6CisKK0BjIHZpbTpzdz0yOgorCitAaWdub3JlCisgICBhcmNoLXRhZzogZTFiMzZlMzItYzk2ZS00MTM1LWE0MWEtMGIyZWZhMmVhMTE1CitAZW5kIGlnbm9yZQo=